diff --git a/benchmarks/c/miscellaneous/nondet_loop.c b/benchmarks/c/miscellaneous/nondet_loop.c new file mode 100644 index 0000000000..136b6d3d98 --- /dev/null +++ b/benchmarks/c/miscellaneous/nondet_loop.c @@ -0,0 +1,17 @@ +#include +#include + +int main() +{ + int x = 0; + while (x != 5) { + if (__VERIFIER_nondet_int() == 0) { + x += 2; + } else { + x += 3; + } + } + assert (0); + + return 0; +} diff --git a/benchmarks/c/miscellaneous/thread_chaining.c b/benchmarks/c/miscellaneous/thread_chaining.c new file mode 100644 index 0000000000..4025d7f2a3 --- /dev/null +++ b/benchmarks/c/miscellaneous/thread_chaining.c @@ -0,0 +1,32 @@ +#include +#include + +/* + The test shows chaining of thread creations + parameter passing, i.e, the spawned thread + spawns another thread and passes its argument to that one. + Expected result: PASS + Current result: PASS +*/ + +atomic_int data; + +void *thread2(void *arg) +{ + data = (int)arg; +} + +void *thread1(void *arg) +{ + pthread_t t2; + pthread_create(&t2, NULL, thread2, arg); + pthread_join(t2, NULL); +} + +int main() +{ + pthread_t t1; + pthread_create(&t1, NULL, thread1, (void*)42); + pthread_join(t1, NULL); + + assert(data == 42); +} diff --git a/benchmarks/c/miscellaneous/thread_inlining.c b/benchmarks/c/miscellaneous/thread_inlining.c new file mode 100644 index 0000000000..a611967979 --- /dev/null +++ b/benchmarks/c/miscellaneous/thread_inlining.c @@ -0,0 +1,37 @@ +#include +#include + +/* + The test checks if inlining of thread-creating functions works properly. + Expected result: PASS + Current result: + - development: FAIL + - rework: Parsing error (matching between pthread_join and pthread_create fails) +*/ + +atomic_int data; + +void *thread2(void *arg) +{ + data = 42; +} + +void threadCreator(pthread_t *t) { + pthread_create(t, NULL, thread2, NULL); +} + +void *thread1(void *arg) +{ + pthread_t t; + threadCreator(&t); + pthread_join(t, NULL); +} + +int main() +{ + pthread_t t1; + pthread_create(&t1, NULL, thread1, NULL); + pthread_join(t1, NULL); + + assert(data == 42); +} diff --git a/benchmarks/c/miscellaneous/thread_inlining_complex.c b/benchmarks/c/miscellaneous/thread_inlining_complex.c new file mode 100644 index 0000000000..f57e1985ac --- /dev/null +++ b/benchmarks/c/miscellaneous/thread_inlining_complex.c @@ -0,0 +1,38 @@ +#include +#include + +/* + The test checks if inlining of thread-creating functions + reassigning pthread_t variables works properly. + Expected result: PASS + Current result: + - development: PASS + - rework: Parsing error (matching between pthread_join and pthread_create fails) +*/ + +atomic_int data; + +void *thread2(void *arg) +{ + data = 42; +} + +pthread_t threadCreator() { + pthread_t t; + pthread_create(&t, NULL, thread2, NULL); + return t; +} + +void *thread1(void *arg) +{ + pthread_t t = threadCreator(); + pthread_join(t, NULL); +} + +int main() +{ + pthread_t t1; + pthread_create(&t1, NULL, thread1, NULL); + pthread_join(t1, NULL); + + assert(data == 42); +} diff --git a/benchmarks/c/miscellaneous/thread_inlining_complex_2.c b/benchmarks/c/miscellaneous/thread_inlining_complex_2.c new file mode 100644 index 0000000000..c8061d7b73 --- /dev/null +++ b/benchmarks/c/miscellaneous/thread_inlining_complex_2.c @@ -0,0 +1,41 @@ +#include +#include + +/* + The test checks if inlining of thread-creating/joining functions + reassigning pthread_t variables works properly. + Expected result: PASS + Current result: + - development: PASS + - rework: Parsing error (matching between pthread_join and pthread_create fails) +*/ + +atomic_int data; + +void *thread2(void *arg) +{ + data = 42; +} + +pthread_t threadCreator() { + pthread_t t; + pthread_create(&t, NULL, thread2, NULL); + return t; +} + +void threadJoiner(pthread_t t) { + pthread_join(t, NULL); +} + +void *thread1(void *arg) +{ + threadJoiner(threadCreator()); +} + +int main() +{ + pthread_t t1; + pthread_create(&t1, NULL, thread1, NULL); + pthread_join(t1, NULL); + + assert(data == 42); +} diff --git a/benchmarks/c/miscellaneous/thread_local.c b/benchmarks/c/miscellaneous/thread_local.c new file mode 100644 index 0000000000..8d5e355230 --- /dev/null +++ b/benchmarks/c/miscellaneous/thread_local.c @@ -0,0 +1,43 @@ +#include +#include + +/* + The test shows thread-local storage + initialization. + Expected result: PASS +*/ + +__thread atomic_int data; +__thread int val = 5; // All threads should see the same init value + +void check(int value) { + // Extra indirection, so that if thread locals are (wrongly) created + // per function rather than per thread, we get an error. + assert (data == value); + assert (val == 5); +} + +void *thread2(void *arg) +{ + data = (int)arg; + check(2); +} + +void *thread1(void *arg) +{ + data = (int)arg; + + pthread_t t2; + pthread_create(&t2, NULL, thread2, 2); + pthread_join(t2, NULL); + + check(1); +} + +int main() +{ + pthread_t t1; + pthread_create(&t1, NULL, thread1, (void*)1); + pthread_join(t1, NULL); + + check(0); +} diff --git a/benchmarks/llvm/mutex.ll b/benchmarks/llvm/mutex.ll new file mode 100644 index 0000000000..f2bc3ce939 --- /dev/null +++ b/benchmarks/llvm/mutex.ll @@ -0,0 +1,388 @@ +; ModuleID = 'benchmarks/mutex.ll' +source_filename = "/home/ponce/git/Dat3M/benchmarks/locks/mutex.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +%union.pthread_attr_t = type { i64, [48 x i8] } + +@sum = dso_local global i32 0, align 4, !dbg !0 +@mutex = dso_local global i32 0, align 4, !dbg !25 +@shared = dso_local global i32 0, align 4, !dbg !21 +@.str = private unnamed_addr constant [11 x i8] c"r == index\00", align 1 +@.str.1 = private unnamed_addr constant [47 x i8] c"/home/ponce/git/Dat3M/benchmarks/locks/mutex.c\00", align 1 +@__PRETTY_FUNCTION__.thread_n = private unnamed_addr constant [23 x i8] c"void *thread_n(void *)\00", align 1 +@.str.2 = private unnamed_addr constant [16 x i8] c"sum == NTHREADS\00", align 1 +@__PRETTY_FUNCTION__.main = private unnamed_addr constant [11 x i8] c"int main()\00", align 1 +@sig = internal global i32 0, align 4, !dbg !31 + +; Function Attrs: noinline nounwind uwtable +define dso_local i8* @thread_n(i8* noundef %0) #0 !dbg !42 { + call void @llvm.dbg.value(metadata i8* %0, metadata !46, metadata !DIExpression()), !dbg !47 + %2 = ptrtoint i8* %0 to i64, !dbg !48 + call void @llvm.dbg.value(metadata i64 %2, metadata !49, metadata !DIExpression()), !dbg !47 + call void @mutex_lock(i32* noundef @mutex), !dbg !50 + %3 = trunc i64 %2 to i32, !dbg !51 + store i32 %3, i32* @shared, align 4, !dbg !52 + call void @llvm.dbg.value(metadata i32 %3, metadata !53, metadata !DIExpression()), !dbg !47 + %4 = sext i32 %3 to i64, !dbg !54 + %5 = icmp eq i64 %4, %2, !dbg !54 + br i1 %5, label %7, label %6, !dbg !57 + +6: ; preds = %1 + call void @__assert_fail(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0), i8* noundef getelementptr inbounds ([47 x i8], [47 x i8]* @.str.1, i64 0, i64 0), i32 noundef 20, i8* noundef getelementptr inbounds ([23 x i8], [23 x i8]* @__PRETTY_FUNCTION__.thread_n, i64 0, i64 0)) #5, !dbg !54 + unreachable, !dbg !54 + +7: ; preds = %1 + %8 = load i32, i32* @sum, align 4, !dbg !58 + %9 = add nsw i32 %8, 1, !dbg !58 + store i32 %9, i32* @sum, align 4, !dbg !58 + call void @mutex_unlock(i32* noundef @mutex), !dbg !59 + ret i8* null, !dbg !60 +} + +; Function Attrs: nofree nosync nounwind readnone speculatable willreturn +declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 + +; Function Attrs: noinline nounwind uwtable +define internal void @mutex_lock(i32* noundef %0) #0 !dbg !61 { + call void @llvm.dbg.value(metadata i32* %0, metadata !65, metadata !DIExpression()), !dbg !66 + %2 = call i32 @mutex_lock_fastpath(i32* noundef %0), !dbg !67 + %3 = icmp ne i32 %2, 0, !dbg !67 + br i1 %3, label %10, label %4, !dbg !69 + +4: ; preds = %4, %1 + call void @llvm.dbg.value(metadata i32 1, metadata !70, metadata !DIExpression()), !dbg !72 + %5 = cmpxchg i32* %0, i32 1, i32 2 monotonic monotonic, align 4, !dbg !73 + %6 = extractvalue { i32, i1 } %5, 1, !dbg !73 + %7 = zext i1 %6 to i8, !dbg !73 + call void @__futex_wait(i32* noundef %0, i32 noundef 2), !dbg !74 + %8 = call i32 @mutex_lock_try_acquire(i32* noundef %0), !dbg !75 + %9 = icmp ne i32 %8, 0, !dbg !75 + br i1 %9, label %10, label %4, !dbg !77, !llvm.loop !78 + +10: ; preds = %4, %1 + ret void, !dbg !81 +} + +; Function Attrs: noreturn nounwind +declare void @__assert_fail(i8* noundef, i8* noundef, i32 noundef, i8* noundef) #2 + +; Function Attrs: noinline nounwind uwtable +define internal void @mutex_unlock(i32* noundef %0) #0 !dbg !82 { + call void @llvm.dbg.value(metadata i32* %0, metadata !83, metadata !DIExpression()), !dbg !84 + %2 = call i32 @mutex_unlock_fastpath(i32* noundef %0), !dbg !85 + %3 = icmp ne i32 %2, 0, !dbg !85 + br i1 %3, label %5, label %4, !dbg !87 + +4: ; preds = %1 + store atomic i32 0, i32* %0 release, align 4, !dbg !88 + call void @__futex_wake(i32* noundef %0, i32 noundef 1), !dbg !89 + br label %5, !dbg !90 + +5: ; preds = %1, %4 + ret void, !dbg !90 +} + +; Function Attrs: noinline nounwind uwtable +define dso_local i32 @main() #0 !dbg !91 { + %1 = alloca [3 x i64], align 16 + call void @llvm.dbg.declare(metadata [3 x i64]* %1, metadata !94, metadata !DIExpression()), !dbg !101 + call void @mutex_init(i32* noundef @mutex), !dbg !102 + call void @llvm.dbg.value(metadata i32 0, metadata !103, metadata !DIExpression()), !dbg !105 + call void @llvm.dbg.value(metadata i64 0, metadata !103, metadata !DIExpression()), !dbg !105 + %2 = getelementptr inbounds [3 x i64], [3 x i64]* %1, i64 0, i64 0, !dbg !106 + %3 = call i32 @pthread_create(i64* noundef %2, %union.pthread_attr_t* noundef null, i8* (i8*)* noundef @thread_n, i8* noundef null) #6, !dbg !108 + call void @llvm.dbg.value(metadata i64 1, metadata !103, metadata !DIExpression()), !dbg !105 + call void @llvm.dbg.value(metadata i64 1, metadata !103, metadata !DIExpression()), !dbg !105 + %4 = getelementptr inbounds [3 x i64], [3 x i64]* %1, i64 0, i64 1, !dbg !106 + %5 = call i32 @pthread_create(i64* noundef %4, %union.pthread_attr_t* noundef null, i8* (i8*)* noundef @thread_n, i8* noundef inttoptr (i64 1 to i8*)) #6, !dbg !108 + call void @llvm.dbg.value(metadata i64 2, metadata !103, metadata !DIExpression()), !dbg !105 + call void @llvm.dbg.value(metadata i64 2, metadata !103, metadata !DIExpression()), !dbg !105 + %6 = getelementptr inbounds [3 x i64], [3 x i64]* %1, i64 0, i64 2, !dbg !106 + %7 = call i32 @pthread_create(i64* noundef %6, %union.pthread_attr_t* noundef null, i8* (i8*)* noundef @thread_n, i8* noundef inttoptr (i64 2 to i8*)) #6, !dbg !108 + call void @llvm.dbg.value(metadata i64 3, metadata !103, metadata !DIExpression()), !dbg !105 + call void @llvm.dbg.value(metadata i64 3, metadata !103, metadata !DIExpression()), !dbg !105 + call void @llvm.dbg.value(metadata i32 0, metadata !109, metadata !DIExpression()), !dbg !111 + call void @llvm.dbg.value(metadata i64 0, metadata !109, metadata !DIExpression()), !dbg !111 + %8 = load i64, i64* %2, align 8, !dbg !112 + %9 = call i32 @pthread_join(i64 noundef %8, i8** noundef null), !dbg !114 + call void @llvm.dbg.value(metadata i64 1, metadata !109, metadata !DIExpression()), !dbg !111 + call void @llvm.dbg.value(metadata i64 1, metadata !109, metadata !DIExpression()), !dbg !111 + %10 = load i64, i64* %4, align 8, !dbg !112 + %11 = call i32 @pthread_join(i64 noundef %10, i8** noundef null), !dbg !114 + call void @llvm.dbg.value(metadata i64 2, metadata !109, metadata !DIExpression()), !dbg !111 + call void @llvm.dbg.value(metadata i64 2, metadata !109, metadata !DIExpression()), !dbg !111 + %12 = load i64, i64* %6, align 8, !dbg !112 + %13 = call i32 @pthread_join(i64 noundef %12, i8** noundef null), !dbg !114 + call void @llvm.dbg.value(metadata i64 3, metadata !109, metadata !DIExpression()), !dbg !111 + call void @llvm.dbg.value(metadata i64 3, metadata !109, metadata !DIExpression()), !dbg !111 + %14 = load i32, i32* @sum, align 4, !dbg !115 + %15 = icmp eq i32 %14, 3, !dbg !115 + br i1 %15, label %17, label %16, !dbg !118 + +16: ; preds = %0 + call void @__assert_fail(i8* noundef getelementptr inbounds ([16 x i8], [16 x i8]* @.str.2, i64 0, i64 0), i8* noundef getelementptr inbounds ([47 x i8], [47 x i8]* @.str.1, i64 0, i64 0), i32 noundef 38, i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @__PRETTY_FUNCTION__.main, i64 0, i64 0)) #5, !dbg !115 + unreachable, !dbg !115 + +17: ; preds = %0 + ret i32 0, !dbg !119 +} + +; Function Attrs: noinline nounwind uwtable +define internal void @mutex_init(i32* noundef %0) #0 !dbg !120 { + call void @llvm.dbg.value(metadata i32* %0, metadata !121, metadata !DIExpression()), !dbg !122 + store i32 0, i32* %0, align 4, !dbg !123 + ret void, !dbg !124 +} + +; Function Attrs: nounwind +declare i32 @pthread_create(i64* noundef, %union.pthread_attr_t* noundef, i8* (i8*)* noundef, i8* noundef) #3 + +declare i32 @pthread_join(i64 noundef, i8** noundef) #4 + +; Function Attrs: noinline nounwind uwtable +define internal i32 @mutex_lock_fastpath(i32* noundef %0) #0 !dbg !125 { + call void @llvm.dbg.value(metadata i32* %0, metadata !128, metadata !DIExpression()), !dbg !129 + call void @llvm.dbg.value(metadata i32 0, metadata !130, metadata !DIExpression()), !dbg !129 + %2 = cmpxchg i32* %0, i32 0, i32 1 acquire acquire, align 4, !dbg !131 + %3 = extractvalue { i32, i1 } %2, 1, !dbg !131 + %4 = zext i1 %3 to i8, !dbg !131 + %5 = zext i1 %3 to i32, !dbg !131 + ret i32 %5, !dbg !132 +} + +; Function Attrs: noinline nounwind uwtable +define internal void @__futex_wait(i32* noundef %0, i32 noundef %1) #0 !dbg !133 { + call void @llvm.dbg.value(metadata i32* %0, metadata !137, metadata !DIExpression()), !dbg !138 + call void @llvm.dbg.value(metadata i32 %1, metadata !139, metadata !DIExpression()), !dbg !138 + %3 = load atomic i32, i32* @sig acquire, align 4, !dbg !140 + call void @llvm.dbg.value(metadata i32 %3, metadata !141, metadata !DIExpression()), !dbg !138 + %4 = load atomic i32, i32* %0 acquire, align 4, !dbg !142 + %5 = icmp ne i32 %4, %1, !dbg !144 + br i1 %5, label %.loopexit, label %6, !dbg !145 + +6: ; preds = %6, %2 + %7 = load atomic i32, i32* @sig acquire, align 4, !dbg !146 + %8 = icmp eq i32 %7, %3, !dbg !147 + br i1 %8, label %6, label %.loopexit, !dbg !148, !llvm.loop !149 + +.loopexit: ; preds = %6, %2 + ret void, !dbg !152 +} + +; Function Attrs: noinline nounwind uwtable +define internal i32 @mutex_lock_try_acquire(i32* noundef %0) #0 !dbg !153 { + call void @llvm.dbg.value(metadata i32* %0, metadata !154, metadata !DIExpression()), !dbg !155 + call void @llvm.dbg.value(metadata i32 0, metadata !156, metadata !DIExpression()), !dbg !155 + %2 = cmpxchg i32* %0, i32 0, i32 2 acquire acquire, align 4, !dbg !157 + %3 = extractvalue { i32, i1 } %2, 1, !dbg !157 + %4 = zext i1 %3 to i8, !dbg !157 + %5 = zext i1 %3 to i32, !dbg !157 + ret i32 %5, !dbg !158 +} + +; Function Attrs: noinline nounwind uwtable +define internal i32 @mutex_unlock_fastpath(i32* noundef %0) #0 !dbg !159 { + call void @llvm.dbg.value(metadata i32* %0, metadata !160, metadata !DIExpression()), !dbg !161 + call void @llvm.dbg.value(metadata i32 1, metadata !162, metadata !DIExpression()), !dbg !161 + %2 = cmpxchg i32* %0, i32 1, i32 0 release monotonic, align 4, !dbg !163 + %3 = extractvalue { i32, i1 } %2, 1, !dbg !163 + %4 = zext i1 %3 to i8, !dbg !163 + %5 = zext i1 %3 to i32, !dbg !163 + ret i32 %5, !dbg !164 +} + +; Function Attrs: noinline nounwind uwtable +define internal void @__futex_wake(i32* noundef %0, i32 noundef %1) #0 !dbg !165 { + call void @llvm.dbg.value(metadata i32* %0, metadata !166, metadata !DIExpression()), !dbg !167 + call void @llvm.dbg.value(metadata i32 %1, metadata !168, metadata !DIExpression()), !dbg !167 + %3 = atomicrmw add i32* @sig, i32 1 release, align 4, !dbg !169 + ret void, !dbg !170 +} + +; Function Attrs: nofree nosync nounwind readnone speculatable willreturn +declare void @llvm.dbg.value(metadata, metadata, metadata) #1 + +attributes #0 = { noinline nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nofree nosync nounwind readnone speculatable willreturn } +attributes #2 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #3 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { noreturn nounwind } +attributes #6 = { nounwind } + +!llvm.dbg.cu = !{!2} +!llvm.module.flags = !{!34, !35, !36, !37, !38, !39, !40} +!llvm.ident = !{!41} + +!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) +!1 = distinct !DIGlobalVariable(name: "sum", scope: !2, file: !23, line: 11, type: !24, isLocal: false, isDefinition: true) +!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "Ubuntu clang version 14.0.6", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, retainedTypes: !15, globals: !20, splitDebugInlining: false, nameTableKind: None) +!3 = !DIFile(filename: "/home/ponce/git/Dat3M/benchmarks/locks/mutex.c", directory: "/home/ponce/git/Dat3M", checksumkind: CSK_MD5, checksum: "d4c457f7f08334cf1e71438ca1114136") +!4 = !{!5} +!5 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "memory_order", file: !6, line: 56, baseType: !7, size: 32, elements: !8) +!6 = !DIFile(filename: "/usr/lib/llvm-14/lib/clang/14.0.6/include/stdatomic.h", directory: "", checksumkind: CSK_MD5, checksum: "de5d66a1ef2f5448cc1919ff39db92bc") +!7 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) +!8 = !{!9, !10, !11, !12, !13, !14} +!9 = !DIEnumerator(name: "memory_order_relaxed", value: 0) +!10 = !DIEnumerator(name: "memory_order_consume", value: 1) +!11 = !DIEnumerator(name: "memory_order_acquire", value: 2) +!12 = !DIEnumerator(name: "memory_order_release", value: 3) +!13 = !DIEnumerator(name: "memory_order_acq_rel", value: 4) +!14 = !DIEnumerator(name: "memory_order_seq_cst", value: 5) +!15 = !{!16, !19} +!16 = !DIDerivedType(tag: DW_TAG_typedef, name: "intptr_t", file: !17, line: 87, baseType: !18) +!17 = !DIFile(filename: "/usr/include/stdint.h", directory: "", checksumkind: CSK_MD5, checksum: "24103e292ae21916e87130b926c8d2f8") +!18 = !DIBasicType(name: "long", size: 64, encoding: DW_ATE_signed) +!19 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) +!20 = !{!0, !21, !25, !31} +!21 = !DIGlobalVariableExpression(var: !22, expr: !DIExpression()) +!22 = distinct !DIGlobalVariable(name: "shared", scope: !2, file: !23, line: 9, type: !24, isLocal: false, isDefinition: true) +!23 = !DIFile(filename: "benchmarks/locks/mutex.c", directory: "/home/ponce/git/Dat3M", checksumkind: CSK_MD5, checksum: "d4c457f7f08334cf1e71438ca1114136") +!24 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) +!25 = !DIGlobalVariableExpression(var: !26, expr: !DIExpression()) +!26 = distinct !DIGlobalVariable(name: "mutex", scope: !2, file: !23, line: 10, type: !27, isLocal: false, isDefinition: true) +!27 = !DIDerivedType(tag: DW_TAG_typedef, name: "mutex_t", file: !28, line: 16, baseType: !29) +!28 = !DIFile(filename: "benchmarks/locks/mutex.h", directory: "/home/ponce/git/Dat3M", checksumkind: CSK_MD5, checksum: "38ec3b6ce739789a23bba4a8c8425857") +!29 = !DIDerivedType(tag: DW_TAG_typedef, name: "atomic_int", file: !6, line: 92, baseType: !30) +!30 = !DIDerivedType(tag: DW_TAG_atomic_type, baseType: !24) +!31 = !DIGlobalVariableExpression(var: !32, expr: !DIExpression()) +!32 = distinct !DIGlobalVariable(name: "sig", scope: !2, file: !33, line: 15, type: !29, isLocal: true, isDefinition: true) +!33 = !DIFile(filename: "benchmarks/locks/futex.h", directory: "/home/ponce/git/Dat3M", checksumkind: CSK_MD5, checksum: "cb5dc9517b2fd37660598e8a5b273f61") +!34 = !{i32 7, !"Dwarf Version", i32 5} +!35 = !{i32 2, !"Debug Info Version", i32 3} +!36 = !{i32 1, !"wchar_size", i32 4} +!37 = !{i32 7, !"PIC Level", i32 2} +!38 = !{i32 7, !"PIE Level", i32 2} +!39 = !{i32 7, !"uwtable", i32 1} +!40 = !{i32 7, !"frame-pointer", i32 2} +!41 = !{!"Ubuntu clang version 14.0.6"} +!42 = distinct !DISubprogram(name: "thread_n", scope: !23, file: !23, line: 13, type: !43, scopeLine: 14, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !45) +!43 = !DISubroutineType(types: !44) +!44 = !{!19, !19} +!45 = !{} +!46 = !DILocalVariable(name: "arg", arg: 1, scope: !42, file: !23, line: 13, type: !19) +!47 = !DILocation(line: 0, scope: !42) +!48 = !DILocation(line: 15, column: 23, scope: !42) +!49 = !DILocalVariable(name: "index", scope: !42, file: !23, line: 15, type: !16) +!50 = !DILocation(line: 17, column: 5, scope: !42) +!51 = !DILocation(line: 18, column: 14, scope: !42) +!52 = !DILocation(line: 18, column: 12, scope: !42) +!53 = !DILocalVariable(name: "r", scope: !42, file: !23, line: 19, type: !24) +!54 = !DILocation(line: 20, column: 5, scope: !55) +!55 = distinct !DILexicalBlock(scope: !56, file: !23, line: 20, column: 5) +!56 = distinct !DILexicalBlock(scope: !42, file: !23, line: 20, column: 5) +!57 = !DILocation(line: 20, column: 5, scope: !56) +!58 = !DILocation(line: 21, column: 8, scope: !42) +!59 = !DILocation(line: 22, column: 5, scope: !42) +!60 = !DILocation(line: 23, column: 5, scope: !42) +!61 = distinct !DISubprogram(name: "mutex_lock", scope: !28, file: !28, line: 39, type: !62, scopeLine: 40, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !2, retainedNodes: !45) +!62 = !DISubroutineType(types: !63) +!63 = !{null, !64} +!64 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !27, size: 64) +!65 = !DILocalVariable(name: "m", arg: 1, scope: !61, file: !28, line: 39, type: !64) +!66 = !DILocation(line: 0, scope: !61) +!67 = !DILocation(line: 41, column: 9, scope: !68) +!68 = distinct !DILexicalBlock(scope: !61, file: !28, line: 41, column: 9) +!69 = !DILocation(line: 41, column: 9, scope: !61) +!70 = !DILocalVariable(name: "r", scope: !71, file: !28, line: 45, type: !24) +!71 = distinct !DILexicalBlock(scope: !61, file: !28, line: 44, column: 15) +!72 = !DILocation(line: 0, scope: !71) +!73 = !DILocation(line: 46, column: 9, scope: !71) +!74 = !DILocation(line: 49, column: 9, scope: !71) +!75 = !DILocation(line: 50, column: 13, scope: !76) +!76 = distinct !DILexicalBlock(scope: !71, file: !28, line: 50, column: 13) +!77 = !DILocation(line: 50, column: 13, scope: !71) +!78 = distinct !{!78, !79, !80} +!79 = !DILocation(line: 44, column: 5, scope: !61) +!80 = !DILocation(line: 52, column: 5, scope: !61) +!81 = !DILocation(line: 53, column: 1, scope: !61) +!82 = distinct !DISubprogram(name: "mutex_unlock", scope: !28, file: !28, line: 63, type: !62, scopeLine: 64, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !2, retainedNodes: !45) +!83 = !DILocalVariable(name: "m", arg: 1, scope: !82, file: !28, line: 63, type: !64) +!84 = !DILocation(line: 0, scope: !82) +!85 = !DILocation(line: 65, column: 9, scope: !86) +!86 = distinct !DILexicalBlock(scope: !82, file: !28, line: 65, column: 9) +!87 = !DILocation(line: 65, column: 9, scope: !82) +!88 = !DILocation(line: 68, column: 5, scope: !82) +!89 = !DILocation(line: 69, column: 5, scope: !82) +!90 = !DILocation(line: 70, column: 1, scope: !82) +!91 = distinct !DISubprogram(name: "main", scope: !23, file: !23, line: 26, type: !92, scopeLine: 27, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !45) +!92 = !DISubroutineType(types: !93) +!93 = !{!24} +!94 = !DILocalVariable(name: "t", scope: !91, file: !23, line: 28, type: !95) +!95 = !DICompositeType(tag: DW_TAG_array_type, baseType: !96, size: 192, elements: !99) +!96 = !DIDerivedType(tag: DW_TAG_typedef, name: "pthread_t", file: !97, line: 27, baseType: !98) +!97 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h", directory: "", checksumkind: CSK_MD5, checksum: "2d764266ce95ab26d4a4767c2ec78176") +!98 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) +!99 = !{!100} +!100 = !DISubrange(count: 3) +!101 = !DILocation(line: 28, column: 15, scope: !91) +!102 = !DILocation(line: 30, column: 5, scope: !91) +!103 = !DILocalVariable(name: "i", scope: !104, file: !23, line: 32, type: !24) +!104 = distinct !DILexicalBlock(scope: !91, file: !23, line: 32, column: 5) +!105 = !DILocation(line: 0, scope: !104) +!106 = !DILocation(line: 33, column: 25, scope: !107) +!107 = distinct !DILexicalBlock(scope: !104, file: !23, line: 32, column: 5) +!108 = !DILocation(line: 33, column: 9, scope: !107) +!109 = !DILocalVariable(name: "i", scope: !110, file: !23, line: 35, type: !24) +!110 = distinct !DILexicalBlock(scope: !91, file: !23, line: 35, column: 5) +!111 = !DILocation(line: 0, scope: !110) +!112 = !DILocation(line: 36, column: 22, scope: !113) +!113 = distinct !DILexicalBlock(scope: !110, file: !23, line: 35, column: 5) +!114 = !DILocation(line: 36, column: 9, scope: !113) +!115 = !DILocation(line: 38, column: 5, scope: !116) +!116 = distinct !DILexicalBlock(scope: !117, file: !23, line: 38, column: 5) +!117 = distinct !DILexicalBlock(scope: !91, file: !23, line: 38, column: 5) +!118 = !DILocation(line: 38, column: 5, scope: !117) +!119 = !DILocation(line: 40, column: 5, scope: !91) +!120 = distinct !DISubprogram(name: "mutex_init", scope: !28, file: !28, line: 18, type: !62, scopeLine: 19, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !2, retainedNodes: !45) +!121 = !DILocalVariable(name: "m", arg: 1, scope: !120, file: !28, line: 18, type: !64) +!122 = !DILocation(line: 0, scope: !120) +!123 = !DILocation(line: 20, column: 5, scope: !120) +!124 = !DILocation(line: 21, column: 1, scope: !120) +!125 = distinct !DISubprogram(name: "mutex_lock_fastpath", scope: !28, file: !28, line: 23, type: !126, scopeLine: 24, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !2, retainedNodes: !45) +!126 = !DISubroutineType(types: !127) +!127 = !{!24, !64} +!128 = !DILocalVariable(name: "m", arg: 1, scope: !125, file: !28, line: 23, type: !64) +!129 = !DILocation(line: 0, scope: !125) +!130 = !DILocalVariable(name: "r", scope: !125, file: !28, line: 25, type: !24) +!131 = !DILocation(line: 26, column: 12, scope: !125) +!132 = !DILocation(line: 26, column: 5, scope: !125) +!133 = distinct !DISubprogram(name: "__futex_wait", scope: !33, file: !33, line: 17, type: !134, scopeLine: 18, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !2, retainedNodes: !45) +!134 = !DISubroutineType(types: !135) +!135 = !{null, !136, !24} +!136 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !29, size: 64) +!137 = !DILocalVariable(name: "m", arg: 1, scope: !133, file: !33, line: 17, type: !136) +!138 = !DILocation(line: 0, scope: !133) +!139 = !DILocalVariable(name: "v", arg: 2, scope: !133, file: !33, line: 17, type: !24) +!140 = !DILocation(line: 19, column: 13, scope: !133) +!141 = !DILocalVariable(name: "s", scope: !133, file: !33, line: 19, type: !24) +!142 = !DILocation(line: 20, column: 9, scope: !143) +!143 = distinct !DILexicalBlock(scope: !133, file: !33, line: 20, column: 9) +!144 = !DILocation(line: 20, column: 42, scope: !143) +!145 = !DILocation(line: 20, column: 9, scope: !133) +!146 = !DILocation(line: 23, column: 12, scope: !133) +!147 = !DILocation(line: 23, column: 48, scope: !133) +!148 = !DILocation(line: 23, column: 5, scope: !133) +!149 = distinct !{!149, !148, !150, !151} +!150 = !DILocation(line: 24, column: 9, scope: !133) +!151 = !{!"llvm.loop.mustprogress"} +!152 = !DILocation(line: 25, column: 1, scope: !133) +!153 = distinct !DISubprogram(name: "mutex_lock_try_acquire", scope: !28, file: !28, line: 31, type: !126, scopeLine: 32, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !2, retainedNodes: !45) +!154 = !DILocalVariable(name: "m", arg: 1, scope: !153, file: !28, line: 31, type: !64) +!155 = !DILocation(line: 0, scope: !153) +!156 = !DILocalVariable(name: "r", scope: !153, file: !28, line: 33, type: !24) +!157 = !DILocation(line: 34, column: 12, scope: !153) +!158 = !DILocation(line: 34, column: 5, scope: !153) +!159 = distinct !DISubprogram(name: "mutex_unlock_fastpath", scope: !28, file: !28, line: 55, type: !126, scopeLine: 56, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !2, retainedNodes: !45) +!160 = !DILocalVariable(name: "m", arg: 1, scope: !159, file: !28, line: 55, type: !64) +!161 = !DILocation(line: 0, scope: !159) +!162 = !DILocalVariable(name: "r", scope: !159, file: !28, line: 57, type: !24) +!163 = !DILocation(line: 58, column: 12, scope: !159) +!164 = !DILocation(line: 58, column: 5, scope: !159) +!165 = distinct !DISubprogram(name: "__futex_wake", scope: !33, file: !33, line: 27, type: !134, scopeLine: 28, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !2, retainedNodes: !45) +!166 = !DILocalVariable(name: "m", arg: 1, scope: !165, file: !33, line: 27, type: !136) +!167 = !DILocation(line: 0, scope: !165) +!168 = !DILocalVariable(name: "v", arg: 2, scope: !165, file: !33, line: 27, type: !24) +!169 = !DILocation(line: 29, column: 5, scope: !165) +!170 = !DILocation(line: 30, column: 1, scope: !165) diff --git a/benchmarks/llvm/safe_stack.ll b/benchmarks/llvm/safe_stack.ll new file mode 100644 index 0000000000..e82fa7d56d --- /dev/null +++ b/benchmarks/llvm/safe_stack.ll @@ -0,0 +1,388 @@ +; ModuleID = 'benchmarks/safe_stack.ll' +source_filename = "/home/ponce/git/Dat3M/benchmarks/lfds/safe_stack.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +%struct.SafeStackItem = type { i32, i32 } +%union.pthread_attr_t = type { i64, [48 x i8] } + +@count = dso_local global i32 0, align 4, !dbg !0 +@head = dso_local global i32 0, align 4, !dbg !21 +@array = dso_local global [3 x %struct.SafeStackItem] zeroinitializer, align 16, !dbg !27 +@.str = private unnamed_addr constant [25 x i8] c"array[elem].value == idx\00", align 1 +@.str.1 = private unnamed_addr constant [51 x i8] c"/home/ponce/git/Dat3M/benchmarks/lfds/safe_stack.c\00", align 1 +@__PRETTY_FUNCTION__.thread3 = private unnamed_addr constant [22 x i8] c"void *thread3(void *)\00", align 1 + +; Function Attrs: noinline nounwind uwtable +define dso_local void @init() #0 !dbg !46 { + store i32 3, i32* @count, align 4, !dbg !50 + store i32 0, i32* @head, align 4, !dbg !51 + call void @llvm.dbg.value(metadata i32 0, metadata !52, metadata !DIExpression()), !dbg !54 + call void @llvm.dbg.value(metadata i64 0, metadata !52, metadata !DIExpression()), !dbg !54 + store i32 1, i32* getelementptr inbounds ([3 x %struct.SafeStackItem], [3 x %struct.SafeStackItem]* @array, i64 0, i64 0, i32 1), align 4, !dbg !55 + call void @llvm.dbg.value(metadata i64 1, metadata !52, metadata !DIExpression()), !dbg !54 + call void @llvm.dbg.value(metadata i64 1, metadata !52, metadata !DIExpression()), !dbg !54 + store i32 2, i32* getelementptr inbounds ([3 x %struct.SafeStackItem], [3 x %struct.SafeStackItem]* @array, i64 0, i64 1, i32 1), align 4, !dbg !55 + call void @llvm.dbg.value(metadata i64 2, metadata !52, metadata !DIExpression()), !dbg !54 + call void @llvm.dbg.value(metadata i64 2, metadata !52, metadata !DIExpression()), !dbg !54 + store i32 -1, i32* getelementptr inbounds ([3 x %struct.SafeStackItem], [3 x %struct.SafeStackItem]* @array, i64 0, i64 2, i32 1), align 4, !dbg !57 + ret void, !dbg !58 +} + +; Function Attrs: nofree nosync nounwind readnone speculatable willreturn +declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 + +; Function Attrs: noinline nounwind uwtable +define dso_local i32 @pop() #0 !dbg !59 { + br label %1, !dbg !62 + +1: ; preds = %19, %0 + %2 = load atomic i32, i32* @count acquire, align 4, !dbg !63 + %3 = icmp sgt i32 %2, 1, !dbg !64 + br i1 %3, label %4, label %20, !dbg !62 + +4: ; preds = %1 + %5 = load atomic i32, i32* @head acquire, align 4, !dbg !65 + call void @llvm.dbg.value(metadata i32 %5, metadata !67, metadata !DIExpression()), !dbg !68 + %6 = sext i32 %5 to i64, !dbg !69 + %7 = getelementptr inbounds [3 x %struct.SafeStackItem], [3 x %struct.SafeStackItem]* @array, i64 0, i64 %6, !dbg !69 + %8 = getelementptr inbounds %struct.SafeStackItem, %struct.SafeStackItem* %7, i32 0, i32 1, !dbg !70 + %9 = atomicrmw xchg i32* %8, i32 -1 seq_cst, align 4, !dbg !71 + call void @llvm.dbg.value(metadata i32 %9, metadata !72, metadata !DIExpression()), !dbg !68 + %10 = icmp sge i32 %9, 0, !dbg !73 + br i1 %10, label %11, label %19, !dbg !75 + +11: ; preds = %4 + call void @llvm.dbg.value(metadata i32 %5, metadata !76, metadata !DIExpression()), !dbg !78 + %12 = cmpxchg i32* @head, i32 %5, i32 %9 seq_cst seq_cst, align 4, !dbg !79 + %13 = extractvalue { i32, i1 } %12, 1, !dbg !79 + %14 = zext i1 %13 to i8, !dbg !79 + br i1 %13, label %15, label %17, !dbg !81 + +15: ; preds = %11 + %16 = atomicrmw sub i32* @count, i32 1 seq_cst, align 4, !dbg !82 + br label %20, !dbg !84 + +17: ; preds = %11 + %18 = atomicrmw xchg i32* %8, i32 %9 seq_cst, align 4, !dbg !85 + br label %19, !dbg !87 + +19: ; preds = %17, %4 + br label %1, !dbg !62, !llvm.loop !88 + +20: ; preds = %1, %15 + %.0 = phi i32 [ %5, %15 ], [ -1, %1 ], !dbg !91 + ret i32 %.0, !dbg !92 +} + +; Function Attrs: noinline nounwind uwtable +define dso_local void @push(i32 noundef %0) #0 !dbg !93 { + call void @llvm.dbg.value(metadata i32 %0, metadata !96, metadata !DIExpression()), !dbg !97 + %2 = load atomic i32, i32* @head acquire, align 4, !dbg !98 + call void @llvm.dbg.value(metadata i32 %2, metadata !99, metadata !DIExpression()), !dbg !97 + br label %3, !dbg !100 + +3: ; preds = %3, %1 + %.0 = phi i32 [ %2, %1 ], [ %.1, %3 ], !dbg !101 + call void @llvm.dbg.value(metadata i32 %.0, metadata !99, metadata !DIExpression()), !dbg !97 + %4 = sext i32 %0 to i64, !dbg !102 + %5 = getelementptr inbounds [3 x %struct.SafeStackItem], [3 x %struct.SafeStackItem]* @array, i64 0, i64 %4, !dbg !102 + %6 = getelementptr inbounds %struct.SafeStackItem, %struct.SafeStackItem* %5, i32 0, i32 1, !dbg !104 + store atomic i32 %.0, i32* %6 release, align 4, !dbg !105 + %7 = cmpxchg i32* @head, i32 %.0, i32 %0 seq_cst seq_cst, align 4, !dbg !106 + %8 = extractvalue { i32, i1 } %7, 0, !dbg !106 + %9 = extractvalue { i32, i1 } %7, 1, !dbg !106 + %.1 = select i1 %9, i32 %.0, i32 %8, !dbg !106 + call void @llvm.dbg.value(metadata i32 %.1, metadata !99, metadata !DIExpression()), !dbg !97 + %10 = zext i1 %9 to i8, !dbg !106 + %11 = zext i1 %9 to i32, !dbg !106 + %12 = icmp eq i32 %11, 0, !dbg !107 + br i1 %12, label %3, label %13, !dbg !108, !llvm.loop !109 + +13: ; preds = %3 + %14 = atomicrmw add i32* @count, i32 1 seq_cst, align 4, !dbg !111 + ret void, !dbg !112 +} + +; Function Attrs: noinline nounwind uwtable +define dso_local i8* @thread3(i8* noundef %0) #0 !dbg !113 { + call void @llvm.dbg.value(metadata i8* %0, metadata !117, metadata !DIExpression()), !dbg !118 + call void @llvm.dbg.value(metadata i64 %6, metadata !119, metadata !DIExpression()), !dbg !118 + br label %2, !dbg !120 + +2: ; preds = %2, %1 + %3 = call i32 @pop(), !dbg !121 + call void @llvm.dbg.value(metadata i32 %3, metadata !122, metadata !DIExpression()), !dbg !118 + %4 = icmp slt i32 %3, 0, !dbg !123 + br i1 %4, label %2, label %5, !dbg !120, !llvm.loop !124 + +5: ; preds = %2 + %6 = ptrtoint i8* %0 to i64, !dbg !126 + %7 = trunc i64 %6 to i32, !dbg !127 + %8 = sext i32 %3 to i64, !dbg !128 + %9 = getelementptr inbounds [3 x %struct.SafeStackItem], [3 x %struct.SafeStackItem]* @array, i64 0, i64 %8, !dbg !128 + %10 = getelementptr inbounds %struct.SafeStackItem, %struct.SafeStackItem* %9, i32 0, i32 0, !dbg !129 + store volatile i32 %7, i32* %10, align 8, !dbg !130 + %11 = load volatile i32, i32* %10, align 8, !dbg !131 + %12 = sext i32 %11 to i64, !dbg !131 + %13 = icmp eq i64 %12, %6, !dbg !131 + br i1 %13, label %15, label %14, !dbg !134 + +14: ; preds = %5 + call void @__assert_fail(i8* noundef getelementptr inbounds ([25 x i8], [25 x i8]* @.str, i64 0, i64 0), i8* noundef getelementptr inbounds ([51 x i8], [51 x i8]* @.str.1, i64 0, i64 0), i32 noundef 12, i8* noundef getelementptr inbounds ([22 x i8], [22 x i8]* @__PRETTY_FUNCTION__.thread3, i64 0, i64 0)) #4, !dbg !131 + unreachable, !dbg !131 + +15: ; preds = %5 + call void @push(i32 noundef %3), !dbg !135 + br label %16, !dbg !136 + +16: ; preds = %16, %15 + %17 = call i32 @pop(), !dbg !137 + call void @llvm.dbg.value(metadata i32 %17, metadata !122, metadata !DIExpression()), !dbg !118 + %18 = icmp slt i32 %17, 0, !dbg !138 + br i1 %18, label %16, label %19, !dbg !136, !llvm.loop !139 + +19: ; preds = %16 + %20 = sext i32 %17 to i64, !dbg !141 + %21 = getelementptr inbounds [3 x %struct.SafeStackItem], [3 x %struct.SafeStackItem]* @array, i64 0, i64 %20, !dbg !141 + %22 = getelementptr inbounds %struct.SafeStackItem, %struct.SafeStackItem* %21, i32 0, i32 0, !dbg !142 + store volatile i32 %7, i32* %22, align 8, !dbg !143 + %23 = load volatile i32, i32* %22, align 8, !dbg !144 + %24 = sext i32 %23 to i64, !dbg !144 + %25 = icmp eq i64 %24, %6, !dbg !144 + br i1 %25, label %27, label %26, !dbg !147 + +26: ; preds = %19 + call void @__assert_fail(i8* noundef getelementptr inbounds ([25 x i8], [25 x i8]* @.str, i64 0, i64 0), i8* noundef getelementptr inbounds ([51 x i8], [51 x i8]* @.str.1, i64 0, i64 0), i32 noundef 17, i8* noundef getelementptr inbounds ([22 x i8], [22 x i8]* @__PRETTY_FUNCTION__.thread3, i64 0, i64 0)) #4, !dbg !144 + unreachable, !dbg !144 + +27: ; preds = %19 + call void @push(i32 noundef %17), !dbg !148 + ret i8* null, !dbg !149 +} + +; Function Attrs: noreturn nounwind +declare void @__assert_fail(i8* noundef, i8* noundef, i32 noundef, i8* noundef) #2 + +; Function Attrs: noinline nounwind uwtable +define dso_local i8* @thread1(i8* noundef %0) #0 !dbg !150 { + call void @llvm.dbg.value(metadata i8* %0, metadata !151, metadata !DIExpression()), !dbg !152 + call void @llvm.dbg.value(metadata i8* %0, metadata !153, metadata !DIExpression()), !dbg !152 + br label %2, !dbg !154 + +2: ; preds = %2, %1 + %3 = call i32 @pop(), !dbg !155 + %4 = icmp slt i32 %3, 0, !dbg !156 + br i1 %4, label %2, label %5, !dbg !154, !llvm.loop !157 + +5: ; preds = %2 + ret i8* null, !dbg !159 +} + +; Function Attrs: noinline nounwind uwtable +define dso_local i32 @main() #0 !dbg !160 { + %1 = alloca i64, align 8 + %2 = alloca i64, align 8 + %3 = alloca i64, align 8 + call void @llvm.dbg.declare(metadata i64* %1, metadata !161, metadata !DIExpression()), !dbg !165 + call void @llvm.dbg.declare(metadata i64* %2, metadata !166, metadata !DIExpression()), !dbg !167 + call void @llvm.dbg.declare(metadata i64* %3, metadata !168, metadata !DIExpression()), !dbg !169 + call void @init(), !dbg !170 + %4 = call i32 @pthread_create(i64* noundef %1, %union.pthread_attr_t* noundef null, i8* (i8*)* noundef @thread3, i8* noundef null) #5, !dbg !171 + %5 = call i32 @pthread_create(i64* noundef %2, %union.pthread_attr_t* noundef null, i8* (i8*)* noundef @thread3, i8* noundef inttoptr (i64 1 to i8*)) #5, !dbg !172 + %6 = call i32 @pthread_create(i64* noundef %3, %union.pthread_attr_t* noundef null, i8* (i8*)* noundef @thread1, i8* noundef inttoptr (i64 2 to i8*)) #5, !dbg !173 + ret i32 0, !dbg !174 +} + +; Function Attrs: nounwind +declare i32 @pthread_create(i64* noundef, %union.pthread_attr_t* noundef, i8* (i8*)* noundef, i8* noundef) #3 + +; Function Attrs: nofree nosync nounwind readnone speculatable willreturn +declare void @llvm.dbg.value(metadata, metadata, metadata) #1 + +attributes #0 = { noinline nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nofree nosync nounwind readnone speculatable willreturn } +attributes #2 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #3 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { noreturn nounwind } +attributes #5 = { nounwind } + +!llvm.dbg.cu = !{!2} +!llvm.module.flags = !{!38, !39, !40, !41, !42, !43, !44} +!llvm.ident = !{!45} + +!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) +!1 = distinct !DIGlobalVariable(name: "count", scope: !2, file: !23, line: 13, type: !24, isLocal: false, isDefinition: true) +!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "Ubuntu clang version 14.0.6", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, retainedTypes: !15, globals: !20, splitDebugInlining: false, nameTableKind: None) +!3 = !DIFile(filename: "/home/ponce/git/Dat3M/benchmarks/lfds/safe_stack.c", directory: "/home/ponce/git/Dat3M", checksumkind: CSK_MD5, checksum: "bbdba2c3ced5207ce4ac789835b223d3") +!4 = !{!5} +!5 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "memory_order", file: !6, line: 56, baseType: !7, size: 32, elements: !8) +!6 = !DIFile(filename: "/usr/lib/llvm-14/lib/clang/14.0.6/include/stdatomic.h", directory: "", checksumkind: CSK_MD5, checksum: "de5d66a1ef2f5448cc1919ff39db92bc") +!7 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) +!8 = !{!9, !10, !11, !12, !13, !14} +!9 = !DIEnumerator(name: "memory_order_relaxed", value: 0) +!10 = !DIEnumerator(name: "memory_order_consume", value: 1) +!11 = !DIEnumerator(name: "memory_order_acquire", value: 2) +!12 = !DIEnumerator(name: "memory_order_release", value: 3) +!13 = !DIEnumerator(name: "memory_order_acq_rel", value: 4) +!14 = !DIEnumerator(name: "memory_order_seq_cst", value: 5) +!15 = !{!16, !19} +!16 = !DIDerivedType(tag: DW_TAG_typedef, name: "intptr_t", file: !17, line: 87, baseType: !18) +!17 = !DIFile(filename: "/usr/include/stdint.h", directory: "", checksumkind: CSK_MD5, checksum: "24103e292ae21916e87130b926c8d2f8") +!18 = !DIBasicType(name: "long", size: 64, encoding: DW_ATE_signed) +!19 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) +!20 = !{!21, !0, !27} +!21 = !DIGlobalVariableExpression(var: !22, expr: !DIExpression()) +!22 = distinct !DIGlobalVariable(name: "head", scope: !2, file: !23, line: 12, type: !24, isLocal: false, isDefinition: true) +!23 = !DIFile(filename: "benchmarks/lfds/safe_stack.h", directory: "/home/ponce/git/Dat3M", checksumkind: CSK_MD5, checksum: "1d7fc4d3ef14d21e9427d12b74b52a7a") +!24 = !DIDerivedType(tag: DW_TAG_typedef, name: "atomic_int", file: !6, line: 92, baseType: !25) +!25 = !DIDerivedType(tag: DW_TAG_atomic_type, baseType: !26) +!26 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) +!27 = !DIGlobalVariableExpression(var: !28, expr: !DIExpression()) +!28 = distinct !DIGlobalVariable(name: "array", scope: !2, file: !23, line: 14, type: !29, isLocal: false, isDefinition: true) +!29 = !DICompositeType(tag: DW_TAG_array_type, baseType: !30, size: 192, elements: !36) +!30 = !DIDerivedType(tag: DW_TAG_typedef, name: "SafeStackItem", file: !23, line: 10, baseType: !31) +!31 = distinct !DICompositeType(tag: DW_TAG_structure_type, file: !23, line: 7, size: 64, elements: !32) +!32 = !{!33, !35} +!33 = !DIDerivedType(tag: DW_TAG_member, name: "value", scope: !31, file: !23, line: 8, baseType: !34, size: 32) +!34 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !26) +!35 = !DIDerivedType(tag: DW_TAG_member, name: "next", scope: !31, file: !23, line: 9, baseType: !24, size: 32, offset: 32) +!36 = !{!37} +!37 = !DISubrange(count: 3) +!38 = !{i32 7, !"Dwarf Version", i32 5} +!39 = !{i32 2, !"Debug Info Version", i32 3} +!40 = !{i32 1, !"wchar_size", i32 4} +!41 = !{i32 7, !"PIC Level", i32 2} +!42 = !{i32 7, !"PIE Level", i32 2} +!43 = !{i32 7, !"uwtable", i32 1} +!44 = !{i32 7, !"frame-pointer", i32 2} +!45 = !{!"Ubuntu clang version 14.0.6"} +!46 = distinct !DISubprogram(name: "init", scope: !23, file: !23, line: 16, type: !47, scopeLine: 16, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !49) +!47 = !DISubroutineType(types: !48) +!48 = !{null} +!49 = !{} +!50 = !DILocation(line: 19, column: 5, scope: !46) +!51 = !DILocation(line: 20, column: 5, scope: !46) +!52 = !DILocalVariable(name: "i", scope: !53, file: !23, line: 22, type: !26) +!53 = distinct !DILexicalBlock(scope: !46, file: !23, line: 22, column: 5) +!54 = !DILocation(line: 0, scope: !53) +!55 = !DILocation(line: 23, column: 9, scope: !56) +!56 = distinct !DILexicalBlock(scope: !53, file: !23, line: 22, column: 5) +!57 = !DILocation(line: 25, column: 5, scope: !46) +!58 = !DILocation(line: 26, column: 1, scope: !46) +!59 = distinct !DISubprogram(name: "pop", scope: !23, file: !23, line: 28, type: !60, scopeLine: 28, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !49) +!60 = !DISubroutineType(types: !61) +!61 = !{!26} +!62 = !DILocation(line: 29, column: 5, scope: !59) +!63 = !DILocation(line: 29, column: 12, scope: !59) +!64 = !DILocation(line: 29, column: 63, scope: !59) +!65 = !DILocation(line: 30, column: 21, scope: !66) +!66 = distinct !DILexicalBlock(scope: !59, file: !23, line: 29, column: 68) +!67 = !DILocalVariable(name: "head1", scope: !66, file: !23, line: 30, type: !26) +!68 = !DILocation(line: 0, scope: !66) +!69 = !DILocation(line: 31, column: 47, scope: !66) +!70 = !DILocation(line: 31, column: 60, scope: !66) +!71 = !DILocation(line: 31, column: 21, scope: !66) +!72 = !DILocalVariable(name: "next1", scope: !66, file: !23, line: 31, type: !26) +!73 = !DILocation(line: 33, column: 19, scope: !74) +!74 = distinct !DILexicalBlock(scope: !66, file: !23, line: 33, column: 13) +!75 = !DILocation(line: 33, column: 13, scope: !66) +!76 = !DILocalVariable(name: "head2", scope: !77, file: !23, line: 34, type: !26) +!77 = distinct !DILexicalBlock(scope: !74, file: !23, line: 33, column: 25) +!78 = !DILocation(line: 0, scope: !77) +!79 = !DILocation(line: 35, column: 17, scope: !80) +!80 = distinct !DILexicalBlock(scope: !77, file: !23, line: 35, column: 17) +!81 = !DILocation(line: 35, column: 17, scope: !77) +!82 = !DILocation(line: 36, column: 17, scope: !83) +!83 = distinct !DILexicalBlock(scope: !80, file: !23, line: 35, column: 124) +!84 = !DILocation(line: 37, column: 17, scope: !83) +!85 = !DILocation(line: 40, column: 17, scope: !86) +!86 = distinct !DILexicalBlock(scope: !80, file: !23, line: 38, column: 20) +!87 = !DILocation(line: 42, column: 9, scope: !77) +!88 = distinct !{!88, !62, !89, !90} +!89 = !DILocation(line: 43, column: 5, scope: !59) +!90 = !{!"llvm.loop.mustprogress"} +!91 = !DILocation(line: 0, scope: !59) +!92 = !DILocation(line: 45, column: 1, scope: !59) +!93 = distinct !DISubprogram(name: "push", scope: !23, file: !23, line: 47, type: !94, scopeLine: 47, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !49) +!94 = !DISubroutineType(types: !95) +!95 = !{null, !26} +!96 = !DILocalVariable(name: "index", arg: 1, scope: !93, file: !23, line: 47, type: !26) +!97 = !DILocation(line: 0, scope: !93) +!98 = !DILocation(line: 48, column: 17, scope: !93) +!99 = !DILocalVariable(name: "head1", scope: !93, file: !23, line: 48, type: !26) +!100 = !DILocation(line: 49, column: 5, scope: !93) +!101 = !DILocation(line: 48, column: 9, scope: !93) +!102 = !DILocation(line: 50, column: 32, scope: !103) +!103 = distinct !DILexicalBlock(scope: !93, file: !23, line: 49, column: 8) +!104 = !DILocation(line: 50, column: 45, scope: !103) +!105 = !DILocation(line: 50, column: 9, scope: !103) +!106 = !DILocation(line: 51, column: 14, scope: !93) +!107 = !DILocation(line: 51, column: 120, scope: !93) +!108 = !DILocation(line: 51, column: 5, scope: !103) +!109 = distinct !{!109, !100, !110, !90} +!110 = !DILocation(line: 51, column: 124, scope: !93) +!111 = !DILocation(line: 52, column: 5, scope: !93) +!112 = !DILocation(line: 53, column: 1, scope: !93) +!113 = distinct !DISubprogram(name: "thread3", scope: !114, file: !114, line: 5, type: !115, scopeLine: 6, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !49) +!114 = !DIFile(filename: "benchmarks/lfds/safe_stack.c", directory: "/home/ponce/git/Dat3M", checksumkind: CSK_MD5, checksum: "bbdba2c3ced5207ce4ac789835b223d3") +!115 = !DISubroutineType(types: !116) +!116 = !{!19, !19} +!117 = !DILocalVariable(name: "arg", arg: 1, scope: !113, file: !114, line: 5, type: !19) +!118 = !DILocation(line: 0, scope: !113) +!119 = !DILocalVariable(name: "idx", scope: !113, file: !114, line: 7, type: !16) +!120 = !DILocation(line: 10, column: 5, scope: !113) +!121 = !DILocation(line: 10, column: 20, scope: !113) +!122 = !DILocalVariable(name: "elem", scope: !113, file: !114, line: 9, type: !26) +!123 = !DILocation(line: 10, column: 27, scope: !113) +!124 = distinct !{!124, !120, !125, !90} +!125 = !DILocation(line: 10, column: 33, scope: !113) +!126 = !DILocation(line: 7, column: 21, scope: !113) +!127 = !DILocation(line: 11, column: 25, scope: !113) +!128 = !DILocation(line: 11, column: 5, scope: !113) +!129 = !DILocation(line: 11, column: 17, scope: !113) +!130 = !DILocation(line: 11, column: 23, scope: !113) +!131 = !DILocation(line: 12, column: 5, scope: !132) +!132 = distinct !DILexicalBlock(scope: !133, file: !114, line: 12, column: 5) +!133 = distinct !DILexicalBlock(scope: !113, file: !114, line: 12, column: 5) +!134 = !DILocation(line: 12, column: 5, scope: !133) +!135 = !DILocation(line: 13, column: 5, scope: !113) +!136 = !DILocation(line: 15, column: 5, scope: !113) +!137 = !DILocation(line: 15, column: 20, scope: !113) +!138 = !DILocation(line: 15, column: 27, scope: !113) +!139 = distinct !{!139, !136, !140, !90} +!140 = !DILocation(line: 15, column: 33, scope: !113) +!141 = !DILocation(line: 16, column: 5, scope: !113) +!142 = !DILocation(line: 16, column: 17, scope: !113) +!143 = !DILocation(line: 16, column: 23, scope: !113) +!144 = !DILocation(line: 17, column: 5, scope: !145) +!145 = distinct !DILexicalBlock(scope: !146, file: !114, line: 17, column: 5) +!146 = distinct !DILexicalBlock(scope: !113, file: !114, line: 17, column: 5) +!147 = !DILocation(line: 17, column: 5, scope: !146) +!148 = !DILocation(line: 18, column: 5, scope: !113) +!149 = !DILocation(line: 19, column: 5, scope: !113) +!150 = distinct !DISubprogram(name: "thread1", scope: !114, file: !114, line: 22, type: !115, scopeLine: 23, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !49) +!151 = !DILocalVariable(name: "arg", arg: 1, scope: !150, file: !114, line: 22, type: !19) +!152 = !DILocation(line: 0, scope: !150) +!153 = !DILocalVariable(name: "idx", scope: !150, file: !114, line: 24, type: !16) +!154 = !DILocation(line: 26, column: 5, scope: !150) +!155 = !DILocation(line: 26, column: 12, scope: !150) +!156 = !DILocation(line: 26, column: 18, scope: !150) +!157 = distinct !{!157, !154, !158, !90} +!158 = !DILocation(line: 26, column: 24, scope: !150) +!159 = !DILocation(line: 27, column: 5, scope: !150) +!160 = distinct !DISubprogram(name: "main", scope: !114, file: !114, line: 30, type: !60, scopeLine: 31, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !49) +!161 = !DILocalVariable(name: "t0", scope: !160, file: !114, line: 32, type: !162) +!162 = !DIDerivedType(tag: DW_TAG_typedef, name: "pthread_t", file: !163, line: 27, baseType: !164) +!163 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h", directory: "", checksumkind: CSK_MD5, checksum: "2d764266ce95ab26d4a4767c2ec78176") +!164 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) +!165 = !DILocation(line: 32, column: 15, scope: !160) +!166 = !DILocalVariable(name: "t1", scope: !160, file: !114, line: 32, type: !162) +!167 = !DILocation(line: 32, column: 19, scope: !160) +!168 = !DILocalVariable(name: "t2", scope: !160, file: !114, line: 32, type: !162) +!169 = !DILocation(line: 32, column: 23, scope: !160) +!170 = !DILocation(line: 34, column: 5, scope: !160) +!171 = !DILocation(line: 36, column: 5, scope: !160) +!172 = !DILocation(line: 37, column: 5, scope: !160) +!173 = !DILocation(line: 38, column: 5, scope: !160) +!174 = !DILocation(line: 40, column: 5, scope: !160) diff --git a/benchmarks/llvm/ticketlock.ll b/benchmarks/llvm/ticketlock.ll new file mode 100644 index 0000000000..3c2a445029 --- /dev/null +++ b/benchmarks/llvm/ticketlock.ll @@ -0,0 +1,307 @@ +; ModuleID = 'benchmarks/ticketlock.ll' +source_filename = "/home/ponce/git/Dat3M/benchmarks/locks/ticketlock.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +%struct.ticketlock_s = type { i32, i32 } +%union.pthread_attr_t = type { i64, [48 x i8] } + +@sum = dso_local global i32 0, align 4, !dbg !0 +@lock = dso_local global %struct.ticketlock_s zeroinitializer, align 4, !dbg !25 +@shared = dso_local global i32 0, align 4, !dbg !21 +@.str = private unnamed_addr constant [11 x i8] c"r == index\00", align 1 +@.str.1 = private unnamed_addr constant [52 x i8] c"/home/ponce/git/Dat3M/benchmarks/locks/ticketlock.c\00", align 1 +@__PRETTY_FUNCTION__.thread_n = private unnamed_addr constant [23 x i8] c"void *thread_n(void *)\00", align 1 +@.str.2 = private unnamed_addr constant [16 x i8] c"sum == NTHREADS\00", align 1 +@__PRETTY_FUNCTION__.main = private unnamed_addr constant [11 x i8] c"int main()\00", align 1 + +; Function Attrs: noinline nounwind uwtable +define dso_local i8* @thread_n(i8* noundef %0) #0 !dbg !43 { + call void @llvm.dbg.value(metadata i8* %0, metadata !47, metadata !DIExpression()), !dbg !48 + %2 = ptrtoint i8* %0 to i64, !dbg !49 + call void @llvm.dbg.value(metadata i64 %2, metadata !50, metadata !DIExpression()), !dbg !48 + call void @ticketlock_acquire(%struct.ticketlock_s* noundef @lock), !dbg !51 + %3 = trunc i64 %2 to i32, !dbg !52 + store i32 %3, i32* @shared, align 4, !dbg !53 + call void @llvm.dbg.value(metadata i32 %3, metadata !54, metadata !DIExpression()), !dbg !48 + %4 = sext i32 %3 to i64, !dbg !55 + %5 = icmp eq i64 %4, %2, !dbg !55 + br i1 %5, label %7, label %6, !dbg !58 + +6: ; preds = %1 + call void @__assert_fail(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0), i8* noundef getelementptr inbounds ([52 x i8], [52 x i8]* @.str.1, i64 0, i64 0), i32 noundef 20, i8* noundef getelementptr inbounds ([23 x i8], [23 x i8]* @__PRETTY_FUNCTION__.thread_n, i64 0, i64 0)) #5, !dbg !55 + unreachable, !dbg !55 + +7: ; preds = %1 + %8 = load i32, i32* @sum, align 4, !dbg !59 + %9 = add nsw i32 %8, 1, !dbg !59 + store i32 %9, i32* @sum, align 4, !dbg !59 + call void @ticketlock_release(%struct.ticketlock_s* noundef @lock), !dbg !60 + ret i8* null, !dbg !61 +} + +; Function Attrs: nofree nosync nounwind readnone speculatable willreturn +declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 + +; Function Attrs: noinline nounwind uwtable +define internal void @ticketlock_acquire(%struct.ticketlock_s* noundef %0) #0 !dbg !62 { + call void @llvm.dbg.value(metadata %struct.ticketlock_s* %0, metadata !66, metadata !DIExpression()), !dbg !67 + %2 = call i32 @get_next_ticket(%struct.ticketlock_s* noundef %0), !dbg !68 + call void @llvm.dbg.value(metadata i32 %2, metadata !69, metadata !DIExpression()), !dbg !67 + call void @await_for_ticket(%struct.ticketlock_s* noundef %0, i32 noundef %2), !dbg !70 + ret void, !dbg !71 +} + +; Function Attrs: noreturn nounwind +declare void @__assert_fail(i8* noundef, i8* noundef, i32 noundef, i8* noundef) #2 + +; Function Attrs: noinline nounwind uwtable +define internal void @ticketlock_release(%struct.ticketlock_s* noundef %0) #0 !dbg !72 { + call void @llvm.dbg.value(metadata %struct.ticketlock_s* %0, metadata !73, metadata !DIExpression()), !dbg !74 + %2 = getelementptr inbounds %struct.ticketlock_s, %struct.ticketlock_s* %0, i32 0, i32 1, !dbg !75 + %3 = load atomic i32, i32* %2 monotonic, align 4, !dbg !76 + call void @llvm.dbg.value(metadata i32 %3, metadata !77, metadata !DIExpression()), !dbg !74 + %4 = add nsw i32 %3, 1, !dbg !78 + store atomic i32 %4, i32* %2 release, align 4, !dbg !79 + ret void, !dbg !80 +} + +; Function Attrs: noinline nounwind uwtable +define dso_local i32 @main() #0 !dbg !81 { + %1 = alloca [3 x i64], align 16 + call void @llvm.dbg.declare(metadata [3 x i64]* %1, metadata !84, metadata !DIExpression()), !dbg !91 + call void @ticketlock_init(%struct.ticketlock_s* noundef @lock), !dbg !92 + call void @llvm.dbg.value(metadata i32 0, metadata !93, metadata !DIExpression()), !dbg !95 + call void @llvm.dbg.value(metadata i64 0, metadata !93, metadata !DIExpression()), !dbg !95 + %2 = getelementptr inbounds [3 x i64], [3 x i64]* %1, i64 0, i64 0, !dbg !96 + %3 = call i32 @pthread_create(i64* noundef %2, %union.pthread_attr_t* noundef null, i8* (i8*)* noundef @thread_n, i8* noundef null) #6, !dbg !98 + call void @llvm.dbg.value(metadata i64 1, metadata !93, metadata !DIExpression()), !dbg !95 + call void @llvm.dbg.value(metadata i64 1, metadata !93, metadata !DIExpression()), !dbg !95 + %4 = getelementptr inbounds [3 x i64], [3 x i64]* %1, i64 0, i64 1, !dbg !96 + %5 = call i32 @pthread_create(i64* noundef %4, %union.pthread_attr_t* noundef null, i8* (i8*)* noundef @thread_n, i8* noundef inttoptr (i64 1 to i8*)) #6, !dbg !98 + call void @llvm.dbg.value(metadata i64 2, metadata !93, metadata !DIExpression()), !dbg !95 + call void @llvm.dbg.value(metadata i64 2, metadata !93, metadata !DIExpression()), !dbg !95 + %6 = getelementptr inbounds [3 x i64], [3 x i64]* %1, i64 0, i64 2, !dbg !96 + %7 = call i32 @pthread_create(i64* noundef %6, %union.pthread_attr_t* noundef null, i8* (i8*)* noundef @thread_n, i8* noundef inttoptr (i64 2 to i8*)) #6, !dbg !98 + call void @llvm.dbg.value(metadata i64 3, metadata !93, metadata !DIExpression()), !dbg !95 + call void @llvm.dbg.value(metadata i64 3, metadata !93, metadata !DIExpression()), !dbg !95 + call void @llvm.dbg.value(metadata i32 0, metadata !99, metadata !DIExpression()), !dbg !101 + call void @llvm.dbg.value(metadata i64 0, metadata !99, metadata !DIExpression()), !dbg !101 + %8 = load i64, i64* %2, align 8, !dbg !102 + %9 = call i32 @pthread_join(i64 noundef %8, i8** noundef null), !dbg !104 + call void @llvm.dbg.value(metadata i64 1, metadata !99, metadata !DIExpression()), !dbg !101 + call void @llvm.dbg.value(metadata i64 1, metadata !99, metadata !DIExpression()), !dbg !101 + %10 = load i64, i64* %4, align 8, !dbg !102 + %11 = call i32 @pthread_join(i64 noundef %10, i8** noundef null), !dbg !104 + call void @llvm.dbg.value(metadata i64 2, metadata !99, metadata !DIExpression()), !dbg !101 + call void @llvm.dbg.value(metadata i64 2, metadata !99, metadata !DIExpression()), !dbg !101 + %12 = load i64, i64* %6, align 8, !dbg !102 + %13 = call i32 @pthread_join(i64 noundef %12, i8** noundef null), !dbg !104 + call void @llvm.dbg.value(metadata i64 3, metadata !99, metadata !DIExpression()), !dbg !101 + call void @llvm.dbg.value(metadata i64 3, metadata !99, metadata !DIExpression()), !dbg !101 + %14 = load i32, i32* @sum, align 4, !dbg !105 + %15 = icmp eq i32 %14, 3, !dbg !105 + br i1 %15, label %17, label %16, !dbg !108 + +16: ; preds = %0 + call void @__assert_fail(i8* noundef getelementptr inbounds ([16 x i8], [16 x i8]* @.str.2, i64 0, i64 0), i8* noundef getelementptr inbounds ([52 x i8], [52 x i8]* @.str.1, i64 0, i64 0), i32 noundef 38, i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @__PRETTY_FUNCTION__.main, i64 0, i64 0)) #5, !dbg !105 + unreachable, !dbg !105 + +17: ; preds = %0 + ret i32 0, !dbg !109 +} + +; Function Attrs: noinline nounwind uwtable +define internal void @ticketlock_init(%struct.ticketlock_s* noundef %0) #0 !dbg !110 { + call void @llvm.dbg.value(metadata %struct.ticketlock_s* %0, metadata !111, metadata !DIExpression()), !dbg !112 + %2 = getelementptr inbounds %struct.ticketlock_s, %struct.ticketlock_s* %0, i32 0, i32 0, !dbg !113 + store i32 0, i32* %2, align 4, !dbg !114 + %3 = getelementptr inbounds %struct.ticketlock_s, %struct.ticketlock_s* %0, i32 0, i32 1, !dbg !115 + store i32 0, i32* %3, align 4, !dbg !116 + ret void, !dbg !117 +} + +; Function Attrs: nounwind +declare i32 @pthread_create(i64* noundef, %union.pthread_attr_t* noundef, i8* (i8*)* noundef, i8* noundef) #3 + +declare i32 @pthread_join(i64 noundef, i8** noundef) #4 + +; Function Attrs: noinline nounwind uwtable +define internal i32 @get_next_ticket(%struct.ticketlock_s* noundef %0) #0 !dbg !118 { + call void @llvm.dbg.value(metadata %struct.ticketlock_s* %0, metadata !121, metadata !DIExpression()), !dbg !122 + %2 = getelementptr inbounds %struct.ticketlock_s, %struct.ticketlock_s* %0, i32 0, i32 0, !dbg !123 + %3 = atomicrmw add i32* %2, i32 1 monotonic, align 4, !dbg !124 + ret i32 %3, !dbg !125 +} + +; Function Attrs: noinline nounwind uwtable +define internal void @await_for_ticket(%struct.ticketlock_s* noundef %0, i32 noundef %1) #0 !dbg !126 { + call void @llvm.dbg.value(metadata %struct.ticketlock_s* %0, metadata !129, metadata !DIExpression()), !dbg !130 + call void @llvm.dbg.value(metadata i32 %1, metadata !131, metadata !DIExpression()), !dbg !130 + br label %3, !dbg !132 + +3: ; preds = %3, %2 + %4 = getelementptr inbounds %struct.ticketlock_s, %struct.ticketlock_s* %0, i32 0, i32 1, !dbg !133 + %5 = load atomic i32, i32* %4 acquire, align 4, !dbg !134 + %6 = icmp ne i32 %5, %1, !dbg !135 + br i1 %6, label %3, label %7, !dbg !132, !llvm.loop !136 + +7: ; preds = %3 + ret void, !dbg !139 +} + +; Function Attrs: nofree nosync nounwind readnone speculatable willreturn +declare void @llvm.dbg.value(metadata, metadata, metadata) #1 + +attributes #0 = { noinline nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nofree nosync nounwind readnone speculatable willreturn } +attributes #2 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #3 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { noreturn nounwind } +attributes #6 = { nounwind } + +!llvm.dbg.cu = !{!2} +!llvm.module.flags = !{!35, !36, !37, !38, !39, !40, !41} +!llvm.ident = !{!42} + +!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) +!1 = distinct !DIGlobalVariable(name: "sum", scope: !2, file: !23, line: 11, type: !24, isLocal: false, isDefinition: true) +!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "Ubuntu clang version 14.0.6", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, retainedTypes: !15, globals: !20, splitDebugInlining: false, nameTableKind: None) +!3 = !DIFile(filename: "/home/ponce/git/Dat3M/benchmarks/locks/ticketlock.c", directory: "/home/ponce/git/Dat3M", checksumkind: CSK_MD5, checksum: "7139ea8afbb4838f72cec4e085004e4c") +!4 = !{!5} +!5 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "memory_order", file: !6, line: 56, baseType: !7, size: 32, elements: !8) +!6 = !DIFile(filename: "/usr/lib/llvm-14/lib/clang/14.0.6/include/stdatomic.h", directory: "", checksumkind: CSK_MD5, checksum: "de5d66a1ef2f5448cc1919ff39db92bc") +!7 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) +!8 = !{!9, !10, !11, !12, !13, !14} +!9 = !DIEnumerator(name: "memory_order_relaxed", value: 0) +!10 = !DIEnumerator(name: "memory_order_consume", value: 1) +!11 = !DIEnumerator(name: "memory_order_acquire", value: 2) +!12 = !DIEnumerator(name: "memory_order_release", value: 3) +!13 = !DIEnumerator(name: "memory_order_acq_rel", value: 4) +!14 = !DIEnumerator(name: "memory_order_seq_cst", value: 5) +!15 = !{!16, !19} +!16 = !DIDerivedType(tag: DW_TAG_typedef, name: "intptr_t", file: !17, line: 87, baseType: !18) +!17 = !DIFile(filename: "/usr/include/stdint.h", directory: "", checksumkind: CSK_MD5, checksum: "24103e292ae21916e87130b926c8d2f8") +!18 = !DIBasicType(name: "long", size: 64, encoding: DW_ATE_signed) +!19 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) +!20 = !{!0, !21, !25} +!21 = !DIGlobalVariableExpression(var: !22, expr: !DIExpression()) +!22 = distinct !DIGlobalVariable(name: "shared", scope: !2, file: !23, line: 9, type: !24, isLocal: false, isDefinition: true) +!23 = !DIFile(filename: "benchmarks/locks/ticketlock.c", directory: "/home/ponce/git/Dat3M", checksumkind: CSK_MD5, checksum: "7139ea8afbb4838f72cec4e085004e4c") +!24 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) +!25 = !DIGlobalVariableExpression(var: !26, expr: !DIExpression()) +!26 = distinct !DIGlobalVariable(name: "lock", scope: !2, file: !23, line: 10, type: !27, isLocal: false, isDefinition: true) +!27 = !DIDerivedType(tag: DW_TAG_typedef, name: "ticketlock_t", file: !28, line: 18, baseType: !29) +!28 = !DIFile(filename: "benchmarks/locks/ticketlock.h", directory: "/home/ponce/git/Dat3M", checksumkind: CSK_MD5, checksum: "fb89b2dbfdfc5b0509f56143d6f0ba0e") +!29 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "ticketlock_s", file: !28, line: 14, size: 64, elements: !30) +!30 = !{!31, !34} +!31 = !DIDerivedType(tag: DW_TAG_member, name: "next", scope: !29, file: !28, line: 15, baseType: !32, size: 32) +!32 = !DIDerivedType(tag: DW_TAG_typedef, name: "atomic_int", file: !6, line: 92, baseType: !33) +!33 = !DIDerivedType(tag: DW_TAG_atomic_type, baseType: !24) +!34 = !DIDerivedType(tag: DW_TAG_member, name: "owner", scope: !29, file: !28, line: 16, baseType: !32, size: 32, offset: 32) +!35 = !{i32 7, !"Dwarf Version", i32 5} +!36 = !{i32 2, !"Debug Info Version", i32 3} +!37 = !{i32 1, !"wchar_size", i32 4} +!38 = !{i32 7, !"PIC Level", i32 2} +!39 = !{i32 7, !"PIE Level", i32 2} +!40 = !{i32 7, !"uwtable", i32 1} +!41 = !{i32 7, !"frame-pointer", i32 2} +!42 = !{!"Ubuntu clang version 14.0.6"} +!43 = distinct !DISubprogram(name: "thread_n", scope: !23, file: !23, line: 13, type: !44, scopeLine: 14, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !46) +!44 = !DISubroutineType(types: !45) +!45 = !{!19, !19} +!46 = !{} +!47 = !DILocalVariable(name: "arg", arg: 1, scope: !43, file: !23, line: 13, type: !19) +!48 = !DILocation(line: 0, scope: !43) +!49 = !DILocation(line: 15, column: 23, scope: !43) +!50 = !DILocalVariable(name: "index", scope: !43, file: !23, line: 15, type: !16) +!51 = !DILocation(line: 17, column: 5, scope: !43) +!52 = !DILocation(line: 18, column: 14, scope: !43) +!53 = !DILocation(line: 18, column: 12, scope: !43) +!54 = !DILocalVariable(name: "r", scope: !43, file: !23, line: 19, type: !24) +!55 = !DILocation(line: 20, column: 5, scope: !56) +!56 = distinct !DILexicalBlock(scope: !57, file: !23, line: 20, column: 5) +!57 = distinct !DILexicalBlock(scope: !43, file: !23, line: 20, column: 5) +!58 = !DILocation(line: 20, column: 5, scope: !57) +!59 = !DILocation(line: 21, column: 8, scope: !43) +!60 = !DILocation(line: 22, column: 5, scope: !43) +!61 = !DILocation(line: 23, column: 5, scope: !43) +!62 = distinct !DISubprogram(name: "ticketlock_acquire", scope: !28, file: !28, line: 37, type: !63, scopeLine: 38, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !2, retainedNodes: !46) +!63 = !DISubroutineType(types: !64) +!64 = !{null, !65} +!65 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !29, size: 64) +!66 = !DILocalVariable(name: "l", arg: 1, scope: !62, file: !28, line: 37, type: !65) +!67 = !DILocation(line: 0, scope: !62) +!68 = !DILocation(line: 39, column: 18, scope: !62) +!69 = !DILocalVariable(name: "ticket", scope: !62, file: !28, line: 39, type: !24) +!70 = !DILocation(line: 40, column: 5, scope: !62) +!71 = !DILocation(line: 41, column: 1, scope: !62) +!72 = distinct !DISubprogram(name: "ticketlock_release", scope: !28, file: !28, line: 53, type: !63, scopeLine: 54, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !2, retainedNodes: !46) +!73 = !DILocalVariable(name: "l", arg: 1, scope: !72, file: !28, line: 53, type: !65) +!74 = !DILocation(line: 0, scope: !72) +!75 = !DILocation(line: 55, column: 42, scope: !72) +!76 = !DILocation(line: 55, column: 17, scope: !72) +!77 = !DILocalVariable(name: "owner", scope: !72, file: !28, line: 55, type: !24) +!78 = !DILocation(line: 56, column: 44, scope: !72) +!79 = !DILocation(line: 56, column: 5, scope: !72) +!80 = !DILocation(line: 57, column: 1, scope: !72) +!81 = distinct !DISubprogram(name: "main", scope: !23, file: !23, line: 26, type: !82, scopeLine: 27, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !46) +!82 = !DISubroutineType(types: !83) +!83 = !{!24} +!84 = !DILocalVariable(name: "t", scope: !81, file: !23, line: 28, type: !85) +!85 = !DICompositeType(tag: DW_TAG_array_type, baseType: !86, size: 192, elements: !89) +!86 = !DIDerivedType(tag: DW_TAG_typedef, name: "pthread_t", file: !87, line: 27, baseType: !88) +!87 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h", directory: "", checksumkind: CSK_MD5, checksum: "2d764266ce95ab26d4a4767c2ec78176") +!88 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) +!89 = !{!90} +!90 = !DISubrange(count: 3) +!91 = !DILocation(line: 28, column: 15, scope: !81) +!92 = !DILocation(line: 30, column: 5, scope: !81) +!93 = !DILocalVariable(name: "i", scope: !94, file: !23, line: 32, type: !24) +!94 = distinct !DILexicalBlock(scope: !81, file: !23, line: 32, column: 5) +!95 = !DILocation(line: 0, scope: !94) +!96 = !DILocation(line: 33, column: 25, scope: !97) +!97 = distinct !DILexicalBlock(scope: !94, file: !23, line: 32, column: 5) +!98 = !DILocation(line: 33, column: 9, scope: !97) +!99 = !DILocalVariable(name: "i", scope: !100, file: !23, line: 35, type: !24) +!100 = distinct !DILexicalBlock(scope: !81, file: !23, line: 35, column: 5) +!101 = !DILocation(line: 0, scope: !100) +!102 = !DILocation(line: 36, column: 22, scope: !103) +!103 = distinct !DILexicalBlock(scope: !100, file: !23, line: 35, column: 5) +!104 = !DILocation(line: 36, column: 9, scope: !103) +!105 = !DILocation(line: 38, column: 5, scope: !106) +!106 = distinct !DILexicalBlock(scope: !107, file: !23, line: 38, column: 5) +!107 = distinct !DILexicalBlock(scope: !81, file: !23, line: 38, column: 5) +!108 = !DILocation(line: 38, column: 5, scope: !107) +!109 = !DILocation(line: 40, column: 5, scope: !81) +!110 = distinct !DISubprogram(name: "ticketlock_init", scope: !28, file: !28, line: 20, type: !63, scopeLine: 21, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !2, retainedNodes: !46) +!111 = !DILocalVariable(name: "l", arg: 1, scope: !110, file: !28, line: 20, type: !65) +!112 = !DILocation(line: 0, scope: !110) +!113 = !DILocation(line: 22, column: 21, scope: !110) +!114 = !DILocation(line: 22, column: 5, scope: !110) +!115 = !DILocation(line: 23, column: 21, scope: !110) +!116 = !DILocation(line: 23, column: 5, scope: !110) +!117 = !DILocation(line: 24, column: 1, scope: !110) +!118 = distinct !DISubprogram(name: "get_next_ticket", scope: !28, file: !28, line: 26, type: !119, scopeLine: 27, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !2, retainedNodes: !46) +!119 = !DISubroutineType(types: !120) +!120 = !{!24, !65} +!121 = !DILocalVariable(name: "l", arg: 1, scope: !118, file: !28, line: 26, type: !65) +!122 = !DILocation(line: 0, scope: !118) +!123 = !DILocation(line: 28, column: 42, scope: !118) +!124 = !DILocation(line: 28, column: 12, scope: !118) +!125 = !DILocation(line: 28, column: 5, scope: !118) +!126 = distinct !DISubprogram(name: "await_for_ticket", scope: !28, file: !28, line: 31, type: !127, scopeLine: 32, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !2, retainedNodes: !46) +!127 = !DISubroutineType(types: !128) +!128 = !{null, !65, !24} +!129 = !DILocalVariable(name: "l", arg: 1, scope: !126, file: !28, line: 31, type: !65) +!130 = !DILocation(line: 0, scope: !126) +!131 = !DILocalVariable(name: "ticket", arg: 2, scope: !126, file: !28, line: 31, type: !24) +!132 = !DILocation(line: 33, column: 5, scope: !126) +!133 = !DILocation(line: 33, column: 37, scope: !126) +!134 = !DILocation(line: 33, column: 12, scope: !126) +!135 = !DILocation(line: 33, column: 53, scope: !126) +!136 = distinct !{!136, !132, !137, !138} +!137 = !DILocation(line: 34, column: 9, scope: !126) +!138 = !{!"llvm.loop.mustprogress"} +!139 = !DILocation(line: 35, column: 1, scope: !126) diff --git a/benchmarks/llvm/treiber.ll b/benchmarks/llvm/treiber.ll new file mode 100644 index 0000000000..604f30ce69 --- /dev/null +++ b/benchmarks/llvm/treiber.ll @@ -0,0 +1,309 @@ +; ModuleID = 'benchmarks/treiber.ll' +source_filename = "/home/ponce/git/Dat3M/benchmarks/lfds/treiber.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +%struct.anon = type { %struct.Node* } +%struct.Node = type { i32, %struct.Node* } +%union.pthread_attr_t = type { i64, [48 x i8] } + +@TOP = dso_local global %struct.anon zeroinitializer, align 8, !dbg !0 +@.str = private unnamed_addr constant [11 x i8] c"r != EMPTY\00", align 1 +@.str.1 = private unnamed_addr constant [48 x i8] c"/home/ponce/git/Dat3M/benchmarks/lfds/treiber.c\00", align 1 +@__PRETTY_FUNCTION__.worker = private unnamed_addr constant [21 x i8] c"void *worker(void *)\00", align 1 +@.str.2 = private unnamed_addr constant [11 x i8] c"r == EMPTY\00", align 1 +@__PRETTY_FUNCTION__.main = private unnamed_addr constant [11 x i8] c"int main()\00", align 1 + +; Function Attrs: noinline nounwind uwtable +define dso_local void @init() #0 !dbg !32 { + store %struct.Node* null, %struct.Node** getelementptr inbounds (%struct.anon, %struct.anon* @TOP, i32 0, i32 0), align 8, !dbg !36 + ret void, !dbg !37 +} + +; Function Attrs: noinline nounwind uwtable +define dso_local void @push(i32 noundef %0) #0 !dbg !38 { + call void @llvm.dbg.value(metadata i32 %0, metadata !41, metadata !DIExpression()), !dbg !42 + %2 = call i8* @malloc(i64 noundef 16), !dbg !43 + %3 = bitcast i8* %2 to %struct.Node*, !dbg !43 + call void @llvm.dbg.value(metadata %struct.Node* %3, metadata !44, metadata !DIExpression()), !dbg !42 + %4 = getelementptr inbounds %struct.Node, %struct.Node* %3, i32 0, i32 0, !dbg !45 + store i32 %0, i32* %4, align 8, !dbg !46 + br label %5, !dbg !47 + +5: ; preds = %5, %1 + %6 = load atomic i64, i64* bitcast (%struct.anon* @TOP to i64*) acquire, align 8, !dbg !48 + %7 = inttoptr i64 %6 to %struct.Node*, !dbg !48 + call void @llvm.dbg.value(metadata %struct.Node* %7, metadata !50, metadata !DIExpression()), !dbg !42 + %8 = getelementptr inbounds %struct.Node, %struct.Node* %3, i32 0, i32 1, !dbg !51 + %9 = bitcast %struct.Node** %8 to i64*, !dbg !52 + store atomic i64 %6, i64* %9 monotonic, align 8, !dbg !52 + %10 = ptrtoint %struct.Node* %3 to i64, !dbg !53 + %11 = cmpxchg i64* bitcast (%struct.anon* @TOP to i64*), i64 %6, i64 %10 acq_rel monotonic, align 8, !dbg !53 + %12 = extractvalue { i64, i1 } %11, 0, !dbg !53 + %13 = extractvalue { i64, i1 } %11, 1, !dbg !53 + %14 = zext i1 %13 to i8, !dbg !53 + br i1 %13, label %15, label %5, !dbg !55, !llvm.loop !56 + +15: ; preds = %5 + ret void, !dbg !58 +} + +; Function Attrs: nofree nosync nounwind readnone speculatable willreturn +declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 + +declare i8* @malloc(i64 noundef) #2 + +; Function Attrs: noinline nounwind uwtable +define dso_local i32 @pop() #0 !dbg !59 { + br label %1, !dbg !62 + +1: ; preds = %5, %0 + %2 = load atomic i64, i64* bitcast (%struct.anon* @TOP to i64*) acquire, align 8, !dbg !63 + %3 = inttoptr i64 %2 to %struct.Node*, !dbg !63 + call void @llvm.dbg.value(metadata %struct.Node* %3, metadata !65, metadata !DIExpression()), !dbg !66 + %4 = icmp eq %struct.Node* %3, null, !dbg !67 + br i1 %4, label %18, label %5, !dbg !69 + +5: ; preds = %1 + %6 = getelementptr inbounds %struct.Node, %struct.Node* %3, i32 0, i32 1, !dbg !70 + %7 = bitcast %struct.Node** %6 to i64*, !dbg !72 + %8 = load atomic i64, i64* %7 acquire, align 8, !dbg !72 + %9 = inttoptr i64 %8 to %struct.Node*, !dbg !72 + call void @llvm.dbg.value(metadata %struct.Node* %9, metadata !73, metadata !DIExpression()), !dbg !66 + %10 = cmpxchg i64* bitcast (%struct.anon* @TOP to i64*), i64 %2, i64 %8 acq_rel monotonic, align 8, !dbg !74 + %11 = extractvalue { i64, i1 } %10, 0, !dbg !74 + %12 = extractvalue { i64, i1 } %10, 1, !dbg !74 + %13 = inttoptr i64 %11 to %struct.Node*, !dbg !74 + %.06 = select i1 %12, %struct.Node* %3, %struct.Node* %13, !dbg !74 + call void @llvm.dbg.value(metadata %struct.Node* %.06, metadata !65, metadata !DIExpression()), !dbg !66 + %14 = zext i1 %12 to i8, !dbg !74 + br i1 %12, label %15, label %1, !dbg !76, !llvm.loop !77 + +15: ; preds = %5 + %16 = getelementptr inbounds %struct.Node, %struct.Node* %.06, i32 0, i32 0, !dbg !79 + %17 = load i32, i32* %16, align 8, !dbg !79 + br label %18, !dbg !80 + +18: ; preds = %1, %15 + %.0 = phi i32 [ %17, %15 ], [ -1, %1 ], !dbg !66 + ret i32 %.0, !dbg !81 +} + +; Function Attrs: noinline nounwind uwtable +define dso_local i8* @worker(i8* noundef %0) #0 !dbg !82 { + call void @llvm.dbg.value(metadata i8* %0, metadata !86, metadata !DIExpression()), !dbg !87 + %2 = ptrtoint i8* %0 to i64, !dbg !88 + call void @llvm.dbg.value(metadata i64 %2, metadata !89, metadata !DIExpression()), !dbg !87 + %3 = trunc i64 %2 to i32, !dbg !90 + call void @push(i32 noundef %3), !dbg !91 + %4 = call i32 @pop(), !dbg !92 + call void @llvm.dbg.value(metadata i32 %4, metadata !93, metadata !DIExpression()), !dbg !87 + %5 = icmp ne i32 %4, -1, !dbg !94 + br i1 %5, label %7, label %6, !dbg !97 + +6: ; preds = %1 + call void @__assert_fail(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0), i8* noundef getelementptr inbounds ([48 x i8], [48 x i8]* @.str.1, i64 0, i64 0), i32 noundef 17, i8* noundef getelementptr inbounds ([21 x i8], [21 x i8]* @__PRETTY_FUNCTION__.worker, i64 0, i64 0)) #5, !dbg !94 + unreachable, !dbg !94 + +7: ; preds = %1 + ret i8* null, !dbg !98 +} + +; Function Attrs: noreturn nounwind +declare void @__assert_fail(i8* noundef, i8* noundef, i32 noundef, i8* noundef) #3 + +; Function Attrs: noinline nounwind uwtable +define dso_local i32 @main() #0 !dbg !99 { + %1 = alloca [3 x i64], align 16 + call void @llvm.dbg.declare(metadata [3 x i64]* %1, metadata !100, metadata !DIExpression()), !dbg !107 + call void @init(), !dbg !108 + call void @llvm.dbg.value(metadata i32 0, metadata !109, metadata !DIExpression()), !dbg !111 + call void @llvm.dbg.value(metadata i64 0, metadata !109, metadata !DIExpression()), !dbg !111 + %2 = getelementptr inbounds [3 x i64], [3 x i64]* %1, i64 0, i64 0, !dbg !112 + %3 = call i32 @pthread_create(i64* noundef %2, %union.pthread_attr_t* noundef null, i8* (i8*)* noundef @worker, i8* noundef null) #6, !dbg !114 + call void @llvm.dbg.value(metadata i64 1, metadata !109, metadata !DIExpression()), !dbg !111 + call void @llvm.dbg.value(metadata i64 1, metadata !109, metadata !DIExpression()), !dbg !111 + %4 = getelementptr inbounds [3 x i64], [3 x i64]* %1, i64 0, i64 1, !dbg !112 + %5 = call i32 @pthread_create(i64* noundef %4, %union.pthread_attr_t* noundef null, i8* (i8*)* noundef @worker, i8* noundef inttoptr (i64 1 to i8*)) #6, !dbg !114 + call void @llvm.dbg.value(metadata i64 2, metadata !109, metadata !DIExpression()), !dbg !111 + call void @llvm.dbg.value(metadata i64 2, metadata !109, metadata !DIExpression()), !dbg !111 + %6 = getelementptr inbounds [3 x i64], [3 x i64]* %1, i64 0, i64 2, !dbg !112 + %7 = call i32 @pthread_create(i64* noundef %6, %union.pthread_attr_t* noundef null, i8* (i8*)* noundef @worker, i8* noundef inttoptr (i64 2 to i8*)) #6, !dbg !114 + call void @llvm.dbg.value(metadata i64 3, metadata !109, metadata !DIExpression()), !dbg !111 + call void @llvm.dbg.value(metadata i64 3, metadata !109, metadata !DIExpression()), !dbg !111 + call void @llvm.dbg.value(metadata i32 0, metadata !115, metadata !DIExpression()), !dbg !117 + call void @llvm.dbg.value(metadata i64 0, metadata !115, metadata !DIExpression()), !dbg !117 + %8 = load i64, i64* %2, align 8, !dbg !118 + %9 = call i32 @pthread_join(i64 noundef %8, i8** noundef null), !dbg !120 + call void @llvm.dbg.value(metadata i64 1, metadata !115, metadata !DIExpression()), !dbg !117 + call void @llvm.dbg.value(metadata i64 1, metadata !115, metadata !DIExpression()), !dbg !117 + %10 = load i64, i64* %4, align 8, !dbg !118 + %11 = call i32 @pthread_join(i64 noundef %10, i8** noundef null), !dbg !120 + call void @llvm.dbg.value(metadata i64 2, metadata !115, metadata !DIExpression()), !dbg !117 + call void @llvm.dbg.value(metadata i64 2, metadata !115, metadata !DIExpression()), !dbg !117 + %12 = load i64, i64* %6, align 8, !dbg !118 + %13 = call i32 @pthread_join(i64 noundef %12, i8** noundef null), !dbg !120 + call void @llvm.dbg.value(metadata i64 3, metadata !115, metadata !DIExpression()), !dbg !117 + call void @llvm.dbg.value(metadata i64 3, metadata !115, metadata !DIExpression()), !dbg !117 + %14 = call i32 @pop(), !dbg !121 + call void @llvm.dbg.value(metadata i32 %14, metadata !122, metadata !DIExpression()), !dbg !123 + %15 = icmp eq i32 %14, -1, !dbg !124 + br i1 %15, label %17, label %16, !dbg !127 + +16: ; preds = %0 + call void @__assert_fail(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* noundef getelementptr inbounds ([48 x i8], [48 x i8]* @.str.1, i64 0, i64 0), i32 noundef 35, i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @__PRETTY_FUNCTION__.main, i64 0, i64 0)) #5, !dbg !124 + unreachable, !dbg !124 + +17: ; preds = %0 + ret i32 0, !dbg !128 +} + +; Function Attrs: nounwind +declare i32 @pthread_create(i64* noundef, %union.pthread_attr_t* noundef, i8* (i8*)* noundef, i8* noundef) #4 + +declare i32 @pthread_join(i64 noundef, i8** noundef) #2 + +; Function Attrs: nofree nosync nounwind readnone speculatable willreturn +declare void @llvm.dbg.value(metadata, metadata, metadata) #1 + +attributes #0 = { noinline nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nofree nosync nounwind readnone speculatable willreturn } +attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #3 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { noreturn nounwind } +attributes #6 = { nounwind } + +!llvm.dbg.cu = !{!2} +!llvm.module.flags = !{!24, !25, !26, !27, !28, !29, !30} +!llvm.ident = !{!31} + +!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) +!1 = distinct !DIGlobalVariable(name: "TOP", scope: !2, file: !10, line: 18, type: !11, isLocal: false, isDefinition: true) +!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "Ubuntu clang version 14.0.6", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !4, globals: !9, splitDebugInlining: false, nameTableKind: None) +!3 = !DIFile(filename: "/home/ponce/git/Dat3M/benchmarks/lfds/treiber.c", directory: "/home/ponce/git/Dat3M", checksumkind: CSK_MD5, checksum: "9afc53ec170e54014fad2d2b7902d1d1") +!4 = !{!5, !6} +!5 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) +!6 = !DIDerivedType(tag: DW_TAG_typedef, name: "intptr_t", file: !7, line: 87, baseType: !8) +!7 = !DIFile(filename: "/usr/include/stdint.h", directory: "", checksumkind: CSK_MD5, checksum: "24103e292ae21916e87130b926c8d2f8") +!8 = !DIBasicType(name: "long", size: 64, encoding: DW_ATE_signed) +!9 = !{!0} +!10 = !DIFile(filename: "benchmarks/lfds/treiber.h", directory: "/home/ponce/git/Dat3M", checksumkind: CSK_MD5, checksum: "88b078f8fcab2c4a9b6600d977ffba0d") +!11 = distinct !DICompositeType(tag: DW_TAG_structure_type, file: !10, line: 16, size: 64, elements: !12) +!12 = !{!13} +!13 = !DIDerivedType(tag: DW_TAG_member, name: "node", scope: !11, file: !10, line: 17, baseType: !14, size: 64) +!14 = !DIDerivedType(tag: DW_TAG_atomic_type, baseType: !15) +!15 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !16, size: 64) +!16 = !DIDerivedType(tag: DW_TAG_typedef, name: "Node", file: !10, line: 14, baseType: !17) +!17 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "Node", file: !10, line: 11, size: 128, elements: !18) +!18 = !{!19, !21} +!19 = !DIDerivedType(tag: DW_TAG_member, name: "val", scope: !17, file: !10, line: 12, baseType: !20, size: 32) +!20 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) +!21 = !DIDerivedType(tag: DW_TAG_member, name: "next", scope: !17, file: !10, line: 13, baseType: !22, size: 64, offset: 64) +!22 = !DIDerivedType(tag: DW_TAG_atomic_type, baseType: !23) +!23 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !17, size: 64) +!24 = !{i32 7, !"Dwarf Version", i32 5} +!25 = !{i32 2, !"Debug Info Version", i32 3} +!26 = !{i32 1, !"wchar_size", i32 4} +!27 = !{i32 7, !"PIC Level", i32 2} +!28 = !{i32 7, !"PIE Level", i32 2} +!29 = !{i32 7, !"uwtable", i32 1} +!30 = !{i32 7, !"frame-pointer", i32 2} +!31 = !{!"Ubuntu clang version 14.0.6"} +!32 = distinct !DISubprogram(name: "init", scope: !10, file: !10, line: 20, type: !33, scopeLine: 20, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !35) +!33 = !DISubroutineType(types: !34) +!34 = !{null} +!35 = !{} +!36 = !DILocation(line: 21, column: 5, scope: !32) +!37 = !DILocation(line: 22, column: 1, scope: !32) +!38 = distinct !DISubprogram(name: "push", scope: !10, file: !10, line: 24, type: !39, scopeLine: 24, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !35) +!39 = !DISubroutineType(types: !40) +!40 = !{null, !20} +!41 = !DILocalVariable(name: "e", arg: 1, scope: !38, file: !10, line: 24, type: !20) +!42 = !DILocation(line: 0, scope: !38) +!43 = !DILocation(line: 26, column: 9, scope: !38) +!44 = !DILocalVariable(name: "y", scope: !38, file: !10, line: 25, type: !15) +!45 = !DILocation(line: 27, column: 8, scope: !38) +!46 = !DILocation(line: 27, column: 12, scope: !38) +!47 = !DILocation(line: 29, column: 5, scope: !38) +!48 = !DILocation(line: 30, column: 13, scope: !49) +!49 = distinct !DILexicalBlock(scope: !38, file: !10, line: 29, column: 14) +!50 = !DILocalVariable(name: "n", scope: !38, file: !10, line: 25, type: !15) +!51 = !DILocation(line: 31, column: 35, scope: !49) +!52 = !DILocation(line: 31, column: 9, scope: !49) +!53 = !DILocation(line: 33, column: 13, scope: !54) +!54 = distinct !DILexicalBlock(scope: !49, file: !10, line: 33, column: 13) +!55 = !DILocation(line: 33, column: 13, scope: !49) +!56 = distinct !{!56, !47, !57} +!57 = !DILocation(line: 36, column: 5, scope: !38) +!58 = !DILocation(line: 37, column: 1, scope: !38) +!59 = distinct !DISubprogram(name: "pop", scope: !10, file: !10, line: 39, type: !60, scopeLine: 39, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !35) +!60 = !DISubroutineType(types: !61) +!61 = !{!20} +!62 = !DILocation(line: 42, column: 5, scope: !59) +!63 = !DILocation(line: 43, column: 13, scope: !64) +!64 = distinct !DILexicalBlock(scope: !59, file: !10, line: 42, column: 15) +!65 = !DILocalVariable(name: "y", scope: !59, file: !10, line: 40, type: !15) +!66 = !DILocation(line: 0, scope: !59) +!67 = !DILocation(line: 44, column: 15, scope: !68) +!68 = distinct !DILexicalBlock(scope: !64, file: !10, line: 44, column: 13) +!69 = !DILocation(line: 44, column: 13, scope: !64) +!70 = !DILocation(line: 47, column: 42, scope: !71) +!71 = distinct !DILexicalBlock(scope: !68, file: !10, line: 46, column: 16) +!72 = !DILocation(line: 47, column: 17, scope: !71) +!73 = !DILocalVariable(name: "z", scope: !59, file: !10, line: 40, type: !15) +!74 = !DILocation(line: 48, column: 17, scope: !75) +!75 = distinct !DILexicalBlock(scope: !71, file: !10, line: 48, column: 17) +!76 = !DILocation(line: 48, column: 17, scope: !71) +!77 = distinct !{!77, !62, !78} +!78 = !DILocation(line: 53, column: 5, scope: !59) +!79 = !DILocation(line: 54, column: 15, scope: !59) +!80 = !DILocation(line: 54, column: 5, scope: !59) +!81 = !DILocation(line: 55, column: 1, scope: !59) +!82 = distinct !DISubprogram(name: "worker", scope: !83, file: !83, line: 9, type: !84, scopeLine: 10, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !35) +!83 = !DIFile(filename: "benchmarks/lfds/treiber.c", directory: "/home/ponce/git/Dat3M", checksumkind: CSK_MD5, checksum: "9afc53ec170e54014fad2d2b7902d1d1") +!84 = !DISubroutineType(types: !85) +!85 = !{!5, !5} +!86 = !DILocalVariable(name: "arg", arg: 1, scope: !82, file: !83, line: 9, type: !5) +!87 = !DILocation(line: 0, scope: !82) +!88 = !DILocation(line: 12, column: 23, scope: !82) +!89 = !DILocalVariable(name: "index", scope: !82, file: !83, line: 12, type: !6) +!90 = !DILocation(line: 14, column: 7, scope: !82) +!91 = !DILocation(line: 14, column: 2, scope: !82) +!92 = !DILocation(line: 15, column: 13, scope: !82) +!93 = !DILocalVariable(name: "r", scope: !82, file: !83, line: 15, type: !20) +!94 = !DILocation(line: 17, column: 2, scope: !95) +!95 = distinct !DILexicalBlock(scope: !96, file: !83, line: 17, column: 2) +!96 = distinct !DILexicalBlock(scope: !82, file: !83, line: 17, column: 2) +!97 = !DILocation(line: 17, column: 2, scope: !96) +!98 = !DILocation(line: 19, column: 2, scope: !82) +!99 = distinct !DISubprogram(name: "main", scope: !83, file: !83, line: 22, type: !60, scopeLine: 23, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !35) +!100 = !DILocalVariable(name: "t", scope: !99, file: !83, line: 24, type: !101) +!101 = !DICompositeType(tag: DW_TAG_array_type, baseType: !102, size: 192, elements: !105) +!102 = !DIDerivedType(tag: DW_TAG_typedef, name: "pthread_t", file: !103, line: 27, baseType: !104) +!103 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h", directory: "", checksumkind: CSK_MD5, checksum: "2d764266ce95ab26d4a4767c2ec78176") +!104 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) +!105 = !{!106} +!106 = !DISubrange(count: 3) +!107 = !DILocation(line: 24, column: 15, scope: !99) +!108 = !DILocation(line: 26, column: 5, scope: !99) +!109 = !DILocalVariable(name: "i", scope: !110, file: !83, line: 28, type: !20) +!110 = distinct !DILexicalBlock(scope: !99, file: !83, line: 28, column: 5) +!111 = !DILocation(line: 0, scope: !110) +!112 = !DILocation(line: 29, column: 25, scope: !113) +!113 = distinct !DILexicalBlock(scope: !110, file: !83, line: 28, column: 5) +!114 = !DILocation(line: 29, column: 9, scope: !113) +!115 = !DILocalVariable(name: "i", scope: !116, file: !83, line: 31, type: !20) +!116 = distinct !DILexicalBlock(scope: !99, file: !83, line: 31, column: 5) +!117 = !DILocation(line: 0, scope: !116) +!118 = !DILocation(line: 32, column: 22, scope: !119) +!119 = distinct !DILexicalBlock(scope: !116, file: !83, line: 31, column: 5) +!120 = !DILocation(line: 32, column: 9, scope: !119) +!121 = !DILocation(line: 34, column: 13, scope: !99) +!122 = !DILocalVariable(name: "r", scope: !99, file: !83, line: 34, type: !20) +!123 = !DILocation(line: 0, scope: !99) +!124 = !DILocation(line: 35, column: 5, scope: !125) +!125 = distinct !DILexicalBlock(scope: !126, file: !83, line: 35, column: 5) +!126 = distinct !DILexicalBlock(scope: !99, file: !83, line: 35, column: 5) +!127 = !DILocation(line: 35, column: 5, scope: !126) +!128 = !DILocation(line: 37, column: 5, scope: !99) diff --git a/benchmarks/llvm/ttas.ll b/benchmarks/llvm/ttas.ll new file mode 100644 index 0000000000..6979e155bc --- /dev/null +++ b/benchmarks/llvm/ttas.ll @@ -0,0 +1,303 @@ +; ModuleID = 'benchmarks/ttas.ll' +source_filename = "/home/ponce/git/Dat3M/benchmarks/locks/ttas.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +%struct.ttaslock_s = type { i32 } +%union.pthread_attr_t = type { i64, [48 x i8] } + +@sum = dso_local global i32 0, align 4, !dbg !0 +@lock = dso_local global %struct.ttaslock_s zeroinitializer, align 4, !dbg !25 +@shared = dso_local global i32 0, align 4, !dbg !21 +@.str = private unnamed_addr constant [11 x i8] c"r == index\00", align 1 +@.str.1 = private unnamed_addr constant [46 x i8] c"/home/ponce/git/Dat3M/benchmarks/locks/ttas.c\00", align 1 +@__PRETTY_FUNCTION__.thread_n = private unnamed_addr constant [23 x i8] c"void *thread_n(void *)\00", align 1 +@.str.2 = private unnamed_addr constant [16 x i8] c"sum == NTHREADS\00", align 1 +@__PRETTY_FUNCTION__.main = private unnamed_addr constant [11 x i8] c"int main()\00", align 1 + +; Function Attrs: noinline nounwind uwtable +define dso_local i8* @thread_n(i8* noundef %0) #0 !dbg !42 { + call void @llvm.dbg.value(metadata i8* %0, metadata !46, metadata !DIExpression()), !dbg !47 + %2 = ptrtoint i8* %0 to i64, !dbg !48 + call void @llvm.dbg.value(metadata i64 %2, metadata !49, metadata !DIExpression()), !dbg !47 + call void @ttaslock_acquire(%struct.ttaslock_s* noundef @lock), !dbg !50 + %3 = trunc i64 %2 to i32, !dbg !51 + store i32 %3, i32* @shared, align 4, !dbg !52 + call void @llvm.dbg.value(metadata i32 %3, metadata !53, metadata !DIExpression()), !dbg !47 + %4 = sext i32 %3 to i64, !dbg !54 + %5 = icmp eq i64 %4, %2, !dbg !54 + br i1 %5, label %7, label %6, !dbg !57 + +6: ; preds = %1 + call void @__assert_fail(i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0), i8* noundef getelementptr inbounds ([46 x i8], [46 x i8]* @.str.1, i64 0, i64 0), i32 noundef 20, i8* noundef getelementptr inbounds ([23 x i8], [23 x i8]* @__PRETTY_FUNCTION__.thread_n, i64 0, i64 0)) #5, !dbg !54 + unreachable, !dbg !54 + +7: ; preds = %1 + %8 = load i32, i32* @sum, align 4, !dbg !58 + %9 = add nsw i32 %8, 1, !dbg !58 + store i32 %9, i32* @sum, align 4, !dbg !58 + call void @ttaslock_release(%struct.ttaslock_s* noundef @lock), !dbg !59 + ret i8* null, !dbg !60 +} + +; Function Attrs: nofree nosync nounwind readnone speculatable willreturn +declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 + +; Function Attrs: noinline nounwind uwtable +define internal void @ttaslock_acquire(%struct.ttaslock_s* noundef %0) #0 !dbg !61 { + call void @llvm.dbg.value(metadata %struct.ttaslock_s* %0, metadata !65, metadata !DIExpression()), !dbg !66 + br label %2, !dbg !67 + +2: ; preds = %2, %1 + call void @await_for_lock(%struct.ttaslock_s* noundef %0), !dbg !68 + %3 = call i32 @try_acquire(%struct.ttaslock_s* noundef %0), !dbg !70 + %4 = icmp ne i32 %3, 0, !dbg !70 + br i1 %4, label %2, label %5, !dbg !72, !llvm.loop !73 + +5: ; preds = %2 + ret void, !dbg !75 +} + +; Function Attrs: noreturn nounwind +declare void @__assert_fail(i8* noundef, i8* noundef, i32 noundef, i8* noundef) #2 + +; Function Attrs: noinline nounwind uwtable +define internal void @ttaslock_release(%struct.ttaslock_s* noundef %0) #0 !dbg !76 { + call void @llvm.dbg.value(metadata %struct.ttaslock_s* %0, metadata !77, metadata !DIExpression()), !dbg !78 + %2 = getelementptr inbounds %struct.ttaslock_s, %struct.ttaslock_s* %0, i32 0, i32 0, !dbg !79 + store atomic i32 0, i32* %2 release, align 4, !dbg !80 + ret void, !dbg !81 +} + +; Function Attrs: noinline nounwind uwtable +define dso_local i32 @main() #0 !dbg !82 { + %1 = alloca [3 x i64], align 16 + call void @llvm.dbg.declare(metadata [3 x i64]* %1, metadata !85, metadata !DIExpression()), !dbg !92 + call void @ttaslock_init(%struct.ttaslock_s* noundef @lock), !dbg !93 + call void @llvm.dbg.value(metadata i32 0, metadata !94, metadata !DIExpression()), !dbg !96 + call void @llvm.dbg.value(metadata i64 0, metadata !94, metadata !DIExpression()), !dbg !96 + %2 = getelementptr inbounds [3 x i64], [3 x i64]* %1, i64 0, i64 0, !dbg !97 + %3 = call i32 @pthread_create(i64* noundef %2, %union.pthread_attr_t* noundef null, i8* (i8*)* noundef @thread_n, i8* noundef null) #6, !dbg !99 + call void @llvm.dbg.value(metadata i64 1, metadata !94, metadata !DIExpression()), !dbg !96 + call void @llvm.dbg.value(metadata i64 1, metadata !94, metadata !DIExpression()), !dbg !96 + %4 = getelementptr inbounds [3 x i64], [3 x i64]* %1, i64 0, i64 1, !dbg !97 + %5 = call i32 @pthread_create(i64* noundef %4, %union.pthread_attr_t* noundef null, i8* (i8*)* noundef @thread_n, i8* noundef inttoptr (i64 1 to i8*)) #6, !dbg !99 + call void @llvm.dbg.value(metadata i64 2, metadata !94, metadata !DIExpression()), !dbg !96 + call void @llvm.dbg.value(metadata i64 2, metadata !94, metadata !DIExpression()), !dbg !96 + %6 = getelementptr inbounds [3 x i64], [3 x i64]* %1, i64 0, i64 2, !dbg !97 + %7 = call i32 @pthread_create(i64* noundef %6, %union.pthread_attr_t* noundef null, i8* (i8*)* noundef @thread_n, i8* noundef inttoptr (i64 2 to i8*)) #6, !dbg !99 + call void @llvm.dbg.value(metadata i64 3, metadata !94, metadata !DIExpression()), !dbg !96 + call void @llvm.dbg.value(metadata i64 3, metadata !94, metadata !DIExpression()), !dbg !96 + call void @llvm.dbg.value(metadata i32 0, metadata !100, metadata !DIExpression()), !dbg !102 + call void @llvm.dbg.value(metadata i64 0, metadata !100, metadata !DIExpression()), !dbg !102 + %8 = load i64, i64* %2, align 8, !dbg !103 + %9 = call i32 @pthread_join(i64 noundef %8, i8** noundef null), !dbg !105 + call void @llvm.dbg.value(metadata i64 1, metadata !100, metadata !DIExpression()), !dbg !102 + call void @llvm.dbg.value(metadata i64 1, metadata !100, metadata !DIExpression()), !dbg !102 + %10 = load i64, i64* %4, align 8, !dbg !103 + %11 = call i32 @pthread_join(i64 noundef %10, i8** noundef null), !dbg !105 + call void @llvm.dbg.value(metadata i64 2, metadata !100, metadata !DIExpression()), !dbg !102 + call void @llvm.dbg.value(metadata i64 2, metadata !100, metadata !DIExpression()), !dbg !102 + %12 = load i64, i64* %6, align 8, !dbg !103 + %13 = call i32 @pthread_join(i64 noundef %12, i8** noundef null), !dbg !105 + call void @llvm.dbg.value(metadata i64 3, metadata !100, metadata !DIExpression()), !dbg !102 + call void @llvm.dbg.value(metadata i64 3, metadata !100, metadata !DIExpression()), !dbg !102 + %14 = load i32, i32* @sum, align 4, !dbg !106 + %15 = icmp eq i32 %14, 3, !dbg !106 + br i1 %15, label %17, label %16, !dbg !109 + +16: ; preds = %0 + call void @__assert_fail(i8* noundef getelementptr inbounds ([16 x i8], [16 x i8]* @.str.2, i64 0, i64 0), i8* noundef getelementptr inbounds ([46 x i8], [46 x i8]* @.str.1, i64 0, i64 0), i32 noundef 38, i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @__PRETTY_FUNCTION__.main, i64 0, i64 0)) #5, !dbg !106 + unreachable, !dbg !106 + +17: ; preds = %0 + ret i32 0, !dbg !110 +} + +; Function Attrs: noinline nounwind uwtable +define internal void @ttaslock_init(%struct.ttaslock_s* noundef %0) #0 !dbg !111 { + call void @llvm.dbg.value(metadata %struct.ttaslock_s* %0, metadata !112, metadata !DIExpression()), !dbg !113 + %2 = getelementptr inbounds %struct.ttaslock_s, %struct.ttaslock_s* %0, i32 0, i32 0, !dbg !114 + store i32 0, i32* %2, align 4, !dbg !115 + ret void, !dbg !116 +} + +; Function Attrs: nounwind +declare i32 @pthread_create(i64* noundef, %union.pthread_attr_t* noundef, i8* (i8*)* noundef, i8* noundef) #3 + +declare i32 @pthread_join(i64 noundef, i8** noundef) #4 + +; Function Attrs: noinline nounwind uwtable +define internal void @await_for_lock(%struct.ttaslock_s* noundef %0) #0 !dbg !117 { + call void @llvm.dbg.value(metadata %struct.ttaslock_s* %0, metadata !118, metadata !DIExpression()), !dbg !119 + br label %2, !dbg !120 + +2: ; preds = %2, %1 + %3 = getelementptr inbounds %struct.ttaslock_s, %struct.ttaslock_s* %0, i32 0, i32 0, !dbg !121 + %4 = load atomic i32, i32* %3 monotonic, align 4, !dbg !122 + %5 = icmp ne i32 %4, 0, !dbg !123 + br i1 %5, label %2, label %6, !dbg !120, !llvm.loop !124 + +6: ; preds = %2 + ret void, !dbg !127 +} + +; Function Attrs: noinline nounwind uwtable +define internal i32 @try_acquire(%struct.ttaslock_s* noundef %0) #0 !dbg !128 { + call void @llvm.dbg.value(metadata %struct.ttaslock_s* %0, metadata !131, metadata !DIExpression()), !dbg !132 + %2 = getelementptr inbounds %struct.ttaslock_s, %struct.ttaslock_s* %0, i32 0, i32 0, !dbg !133 + %3 = atomicrmw xchg i32* %2, i32 1 acquire, align 4, !dbg !134 + ret i32 %3, !dbg !135 +} + +; Function Attrs: nofree nosync nounwind readnone speculatable willreturn +declare void @llvm.dbg.value(metadata, metadata, metadata) #1 + +attributes #0 = { noinline nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nofree nosync nounwind readnone speculatable willreturn } +attributes #2 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #3 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { noreturn nounwind } +attributes #6 = { nounwind } + +!llvm.dbg.cu = !{!2} +!llvm.module.flags = !{!34, !35, !36, !37, !38, !39, !40} +!llvm.ident = !{!41} + +!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) +!1 = distinct !DIGlobalVariable(name: "sum", scope: !2, file: !23, line: 11, type: !24, isLocal: false, isDefinition: true) +!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "Ubuntu clang version 14.0.6", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, retainedTypes: !15, globals: !20, splitDebugInlining: false, nameTableKind: None) +!3 = !DIFile(filename: "/home/ponce/git/Dat3M/benchmarks/locks/ttas.c", directory: "/home/ponce/git/Dat3M", checksumkind: CSK_MD5, checksum: "7587f4158040adbe16951d13277eb9d8") +!4 = !{!5} +!5 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "memory_order", file: !6, line: 56, baseType: !7, size: 32, elements: !8) +!6 = !DIFile(filename: "/usr/lib/llvm-14/lib/clang/14.0.6/include/stdatomic.h", directory: "", checksumkind: CSK_MD5, checksum: "de5d66a1ef2f5448cc1919ff39db92bc") +!7 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) +!8 = !{!9, !10, !11, !12, !13, !14} +!9 = !DIEnumerator(name: "memory_order_relaxed", value: 0) +!10 = !DIEnumerator(name: "memory_order_consume", value: 1) +!11 = !DIEnumerator(name: "memory_order_acquire", value: 2) +!12 = !DIEnumerator(name: "memory_order_release", value: 3) +!13 = !DIEnumerator(name: "memory_order_acq_rel", value: 4) +!14 = !DIEnumerator(name: "memory_order_seq_cst", value: 5) +!15 = !{!16, !19} +!16 = !DIDerivedType(tag: DW_TAG_typedef, name: "intptr_t", file: !17, line: 87, baseType: !18) +!17 = !DIFile(filename: "/usr/include/stdint.h", directory: "", checksumkind: CSK_MD5, checksum: "24103e292ae21916e87130b926c8d2f8") +!18 = !DIBasicType(name: "long", size: 64, encoding: DW_ATE_signed) +!19 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) +!20 = !{!0, !21, !25} +!21 = !DIGlobalVariableExpression(var: !22, expr: !DIExpression()) +!22 = distinct !DIGlobalVariable(name: "shared", scope: !2, file: !23, line: 9, type: !24, isLocal: false, isDefinition: true) +!23 = !DIFile(filename: "benchmarks/locks/ttas.c", directory: "/home/ponce/git/Dat3M", checksumkind: CSK_MD5, checksum: "7587f4158040adbe16951d13277eb9d8") +!24 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) +!25 = !DIGlobalVariableExpression(var: !26, expr: !DIExpression()) +!26 = distinct !DIGlobalVariable(name: "lock", scope: !2, file: !23, line: 10, type: !27, isLocal: false, isDefinition: true) +!27 = !DIDerivedType(tag: DW_TAG_typedef, name: "ttaslock_t", file: !28, line: 17, baseType: !29) +!28 = !DIFile(filename: "benchmarks/locks/ttas.h", directory: "/home/ponce/git/Dat3M", checksumkind: CSK_MD5, checksum: "7212eed5a37c0df69d9d1fd3a6cfde27") +!29 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "ttaslock_s", file: !28, line: 14, size: 32, elements: !30) +!30 = !{!31} +!31 = !DIDerivedType(tag: DW_TAG_member, name: "state", scope: !29, file: !28, line: 15, baseType: !32, size: 32) +!32 = !DIDerivedType(tag: DW_TAG_typedef, name: "atomic_int", file: !6, line: 92, baseType: !33) +!33 = !DIDerivedType(tag: DW_TAG_atomic_type, baseType: !24) +!34 = !{i32 7, !"Dwarf Version", i32 5} +!35 = !{i32 2, !"Debug Info Version", i32 3} +!36 = !{i32 1, !"wchar_size", i32 4} +!37 = !{i32 7, !"PIC Level", i32 2} +!38 = !{i32 7, !"PIE Level", i32 2} +!39 = !{i32 7, !"uwtable", i32 1} +!40 = !{i32 7, !"frame-pointer", i32 2} +!41 = !{!"Ubuntu clang version 14.0.6"} +!42 = distinct !DISubprogram(name: "thread_n", scope: !23, file: !23, line: 13, type: !43, scopeLine: 14, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !45) +!43 = !DISubroutineType(types: !44) +!44 = !{!19, !19} +!45 = !{} +!46 = !DILocalVariable(name: "arg", arg: 1, scope: !42, file: !23, line: 13, type: !19) +!47 = !DILocation(line: 0, scope: !42) +!48 = !DILocation(line: 15, column: 23, scope: !42) +!49 = !DILocalVariable(name: "index", scope: !42, file: !23, line: 15, type: !16) +!50 = !DILocation(line: 17, column: 5, scope: !42) +!51 = !DILocation(line: 18, column: 14, scope: !42) +!52 = !DILocation(line: 18, column: 12, scope: !42) +!53 = !DILocalVariable(name: "r", scope: !42, file: !23, line: 19, type: !24) +!54 = !DILocation(line: 20, column: 5, scope: !55) +!55 = distinct !DILexicalBlock(scope: !56, file: !23, line: 20, column: 5) +!56 = distinct !DILexicalBlock(scope: !42, file: !23, line: 20, column: 5) +!57 = !DILocation(line: 20, column: 5, scope: !56) +!58 = !DILocation(line: 21, column: 8, scope: !42) +!59 = !DILocation(line: 22, column: 5, scope: !42) +!60 = !DILocation(line: 23, column: 5, scope: !42) +!61 = distinct !DISubprogram(name: "ttaslock_acquire", scope: !28, file: !28, line: 36, type: !62, scopeLine: 37, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !2, retainedNodes: !45) +!62 = !DISubroutineType(types: !63) +!63 = !{null, !64} +!64 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !29, size: 64) +!65 = !DILocalVariable(name: "l", arg: 1, scope: !61, file: !28, line: 36, type: !64) +!66 = !DILocation(line: 0, scope: !61) +!67 = !DILocation(line: 38, column: 5, scope: !61) +!68 = !DILocation(line: 39, column: 9, scope: !69) +!69 = distinct !DILexicalBlock(scope: !61, file: !28, line: 38, column: 15) +!70 = !DILocation(line: 40, column: 14, scope: !71) +!71 = distinct !DILexicalBlock(scope: !69, file: !28, line: 40, column: 13) +!72 = !DILocation(line: 40, column: 13, scope: !69) +!73 = distinct !{!73, !67, !74} +!74 = !DILocation(line: 42, column: 5, scope: !61) +!75 = !DILocation(line: 41, column: 13, scope: !71) +!76 = distinct !DISubprogram(name: "ttaslock_release", scope: !28, file: !28, line: 45, type: !62, scopeLine: 46, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !2, retainedNodes: !45) +!77 = !DILocalVariable(name: "l", arg: 1, scope: !76, file: !28, line: 45, type: !64) +!78 = !DILocation(line: 0, scope: !76) +!79 = !DILocation(line: 47, column: 31, scope: !76) +!80 = !DILocation(line: 47, column: 5, scope: !76) +!81 = !DILocation(line: 48, column: 1, scope: !76) +!82 = distinct !DISubprogram(name: "main", scope: !23, file: !23, line: 26, type: !83, scopeLine: 27, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !45) +!83 = !DISubroutineType(types: !84) +!84 = !{!24} +!85 = !DILocalVariable(name: "t", scope: !82, file: !23, line: 28, type: !86) +!86 = !DICompositeType(tag: DW_TAG_array_type, baseType: !87, size: 192, elements: !90) +!87 = !DIDerivedType(tag: DW_TAG_typedef, name: "pthread_t", file: !88, line: 27, baseType: !89) +!88 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h", directory: "", checksumkind: CSK_MD5, checksum: "2d764266ce95ab26d4a4767c2ec78176") +!89 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) +!90 = !{!91} +!91 = !DISubrange(count: 3) +!92 = !DILocation(line: 28, column: 15, scope: !82) +!93 = !DILocation(line: 30, column: 5, scope: !82) +!94 = !DILocalVariable(name: "i", scope: !95, file: !23, line: 32, type: !24) +!95 = distinct !DILexicalBlock(scope: !82, file: !23, line: 32, column: 5) +!96 = !DILocation(line: 0, scope: !95) +!97 = !DILocation(line: 33, column: 25, scope: !98) +!98 = distinct !DILexicalBlock(scope: !95, file: !23, line: 32, column: 5) +!99 = !DILocation(line: 33, column: 9, scope: !98) +!100 = !DILocalVariable(name: "i", scope: !101, file: !23, line: 35, type: !24) +!101 = distinct !DILexicalBlock(scope: !82, file: !23, line: 35, column: 5) +!102 = !DILocation(line: 0, scope: !101) +!103 = !DILocation(line: 36, column: 22, scope: !104) +!104 = distinct !DILexicalBlock(scope: !101, file: !23, line: 35, column: 5) +!105 = !DILocation(line: 36, column: 9, scope: !104) +!106 = !DILocation(line: 38, column: 5, scope: !107) +!107 = distinct !DILexicalBlock(scope: !108, file: !23, line: 38, column: 5) +!108 = distinct !DILexicalBlock(scope: !82, file: !23, line: 38, column: 5) +!109 = !DILocation(line: 38, column: 5, scope: !108) +!110 = !DILocation(line: 40, column: 5, scope: !82) +!111 = distinct !DISubprogram(name: "ttaslock_init", scope: !28, file: !28, line: 19, type: !62, scopeLine: 20, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !2, retainedNodes: !45) +!112 = !DILocalVariable(name: "l", arg: 1, scope: !111, file: !28, line: 19, type: !64) +!113 = !DILocation(line: 0, scope: !111) +!114 = !DILocation(line: 21, column: 21, scope: !111) +!115 = !DILocation(line: 21, column: 5, scope: !111) +!116 = !DILocation(line: 22, column: 1, scope: !111) +!117 = distinct !DISubprogram(name: "await_for_lock", scope: !28, file: !28, line: 24, type: !62, scopeLine: 25, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !2, retainedNodes: !45) +!118 = !DILocalVariable(name: "l", arg: 1, scope: !117, file: !28, line: 24, type: !64) +!119 = !DILocation(line: 0, scope: !117) +!120 = !DILocation(line: 26, column: 5, scope: !117) +!121 = !DILocation(line: 26, column: 37, scope: !117) +!122 = !DILocation(line: 26, column: 12, scope: !117) +!123 = !DILocation(line: 26, column: 66, scope: !117) +!124 = distinct !{!124, !120, !125, !126} +!125 = !DILocation(line: 27, column: 9, scope: !117) +!126 = !{!"llvm.loop.mustprogress"} +!127 = !DILocation(line: 28, column: 5, scope: !117) +!128 = distinct !DISubprogram(name: "try_acquire", scope: !28, file: !28, line: 31, type: !129, scopeLine: 32, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !2, retainedNodes: !45) +!129 = !DISubroutineType(types: !130) +!130 = !{!24, !64} +!131 = !DILocalVariable(name: "l", arg: 1, scope: !128, file: !28, line: 31, type: !64) +!132 = !DILocation(line: 0, scope: !128) +!133 = !DILocation(line: 33, column: 41, scope: !128) +!134 = !DILocation(line: 33, column: 12, scope: !128) +!135 = !DILocation(line: 33, column: 5, scope: !128) diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/Dartagnan.java b/dartagnan/src/main/java/com/dat3m/dartagnan/Dartagnan.java index 2cc3f96e9f..9ec561b3a5 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/Dartagnan.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/Dartagnan.java @@ -355,7 +355,7 @@ private static void printWarningIfThreadStartFailed(Program p, EncodingContext e // This msg should be displayed even if the logging is off System.out.printf( "[WARNING] The call to pthread_create of thread %s failed. To force thread creation to succeed use --%s=true%n", - e.getThread().getId(), OptionNames.THREAD_CREATE_ALWAYS_SUCCEEDS); + e.getThread(), OptionNames.THREAD_CREATE_ALWAYS_SUCCEEDS); break; } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/configuration/OptionNames.java b/dartagnan/src/main/java/com/dat3m/dartagnan/configuration/OptionNames.java index 08d4dc0d47..2e061380ac 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/configuration/OptionNames.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/configuration/OptionNames.java @@ -15,6 +15,7 @@ public class OptionNames { // Modeling Options public static final String THREAD_CREATE_ALWAYS_SUCCEEDS = "modeling.threadCreateAlwaysSucceeds"; public static final String ARCH_PRECISION = "modeling.precision"; + public static final String RECURSION_BOUND = "modeling.recursionBound"; // Compilation Options public static final String USE_RC11_TO_ARCH_SCHEME = "compilation.rc11ToArch"; diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/encoding/EncodingContext.java b/dartagnan/src/main/java/com/dat3m/dartagnan/encoding/EncodingContext.java index 8b5637bc99..76c3113ae8 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/encoding/EncodingContext.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/encoding/EncodingContext.java @@ -2,6 +2,7 @@ import com.dat3m.dartagnan.expression.Expression; import com.dat3m.dartagnan.expression.op.COpBin; +import com.dat3m.dartagnan.expression.type.BooleanType; import com.dat3m.dartagnan.expression.type.IntegerType; import com.dat3m.dartagnan.expression.type.Type; import com.dat3m.dartagnan.program.Register; @@ -10,7 +11,6 @@ import com.dat3m.dartagnan.program.analysis.alias.AliasAnalysis; import com.dat3m.dartagnan.program.event.core.*; import com.dat3m.dartagnan.program.event.core.utils.RegWriter; -import com.dat3m.dartagnan.program.memory.VirtualMemoryObject; import com.dat3m.dartagnan.verification.Context; import com.dat3m.dartagnan.verification.VerificationTask; import com.dat3m.dartagnan.wmm.Relation; @@ -23,6 +23,7 @@ import org.sosy_lab.common.configuration.Option; import org.sosy_lab.common.configuration.Options; import org.sosy_lab.java_smt.api.*; +import org.sosy_lab.java_smt.api.NumeralFormula.IntegerFormula; import java.util.HashMap; import java.util.Map; @@ -111,20 +112,50 @@ public BooleanFormulaManager getBooleanFormulaManager() { return booleanFormulaManager; } - public Formula encodeFinalIntegerExpression(Expression expression) { - return new ExpressionEncoder(formulaManager, null).encodeAsInteger(expression); + public Formula encodeFinalExpression(Expression expression) { + return new ExpressionEncoder(this, null).encode(expression); } - public BooleanFormula encodeBooleanExpressionAt(Expression expression, Event event) { - return new ExpressionEncoder(formulaManager, event).encodeAsBoolean(expression); + public BooleanFormula encodeExpressionAsBooleanAt(Expression expression, Event event) { + return new ExpressionEncoder(this, event).encodeAsBoolean(expression); } - public Formula encodeIntegerExpressionAt(Expression expression, Event event) { - return new ExpressionEncoder(formulaManager, event).encodeAsInteger(expression); + public Formula encodeExpressionAt(Expression expression, Event event) { + return new ExpressionEncoder(this, event).encode(expression); } public BooleanFormula encodeComparison(COpBin op, Formula lhs, Formula rhs) { - return ExpressionEncoder.encodeComparison(op, lhs, rhs, formulaManager); + if (lhs instanceof BooleanFormula l && rhs instanceof BooleanFormula r) { + return switch (op) { + case EQ -> booleanFormulaManager.equivalence(l, r); + case NEQ -> booleanFormulaManager.not(booleanFormulaManager.equivalence(l, r)); + default -> throw new UnsupportedOperationException( + String.format("Encoding of COpBin operation %s not supported on boolean formulas.", op)); + }; + } + if (lhs instanceof IntegerFormula l && rhs instanceof IntegerFormula r) { + IntegerFormulaManager integerFormulaManager = formulaManager.getIntegerFormulaManager(); + return switch (op) { + case EQ -> integerFormulaManager.equal(l, r); + case NEQ -> booleanFormulaManager.not(integerFormulaManager.equal(l, r)); + case LT, ULT -> integerFormulaManager.lessThan(l, r); + case LTE, ULTE -> integerFormulaManager.lessOrEquals(l, r); + case GT, UGT -> integerFormulaManager.greaterThan(l, r); + case GTE, UGTE -> integerFormulaManager.greaterOrEquals(l, r); + }; + } + if (lhs instanceof BitvectorFormula l && rhs instanceof BitvectorFormula r) { + BitvectorFormulaManager bitvectorFormulaManager = formulaManager.getBitvectorFormulaManager(); + return switch (op) { + case EQ -> bitvectorFormulaManager.equal(l, r); + case NEQ -> booleanFormulaManager.not(bitvectorFormulaManager.equal(l, r)); + case LT, ULT -> bitvectorFormulaManager.lessThan(l, r, op.equals(COpBin.LT)); + case LTE, ULTE -> bitvectorFormulaManager.lessOrEquals(l, r, op.equals(COpBin.LTE)); + case GT, UGT -> bitvectorFormulaManager.greaterThan(l, r, op.equals(COpBin.GT)); + case GTE, UGTE -> bitvectorFormulaManager.greaterOrEquals(l, r, op.equals(COpBin.GTE)); + }; + } + throw new UnsupportedOperationException("Encoding not supported for COpBin: " + lhs + " " + op + " " + rhs); } public BooleanFormula controlFlow(Event event) { @@ -132,7 +163,7 @@ public BooleanFormula controlFlow(Event event) { } public BooleanFormula jumpCondition(CondJump event) { - return encodeBooleanExpressionAt(event.getGuard(), event); + return encodeExpressionAsBooleanAt(event.getGuard(), event); } public BooleanFormula execution(Event event) { @@ -167,28 +198,76 @@ public BooleanFormula dependency(Event first, Event second) { } public BooleanFormula equal(Formula left, Formula right) { - checkArgument(left instanceof NumeralFormula.IntegerFormula || left instanceof BitvectorFormula, - "generalEqual inputs must be IntegerFormula or BitvectorFormula"); - if (left instanceof NumeralFormula.IntegerFormula && right instanceof NumeralFormula.IntegerFormula) { - return formulaManager.getIntegerFormulaManager().equal((NumeralFormula.IntegerFormula) left, (NumeralFormula.IntegerFormula) right); + if (left instanceof IntegerFormula l) { + IntegerFormulaManager integerFormulaManager = formulaManager.getIntegerFormulaManager(); + return integerFormulaManager.equal(l, toInteger(right)); + } + if (right instanceof IntegerFormula r) { + IntegerFormulaManager integerFormulaManager = formulaManager.getIntegerFormulaManager(); + return integerFormulaManager.equal(toInteger(left), r); + } + if (left instanceof BitvectorFormula l) { + BitvectorFormulaManager bitvectorFormulaManager = formulaManager.getBitvectorFormulaManager(); + int length = bitvectorFormulaManager.getLength(l); + return bitvectorFormulaManager.equal(l, toBitvector(right, length)); + } + if (right instanceof BitvectorFormula r) { + BitvectorFormulaManager bitvectorFormulaManager = formulaManager.getBitvectorFormulaManager(); + int length = bitvectorFormulaManager.getLength(r); + return bitvectorFormulaManager.equal(toBitvector(left, length), r); + } + if (left instanceof BooleanFormula l && right instanceof BooleanFormula r) { + return booleanFormulaManager.equivalence(l, r); + } + throw new UnsupportedOperationException(String.format("Unknown types for equal(%s,%s)", left, right)); + } + + private IntegerFormula toInteger(Formula formula) { + if (formula instanceof IntegerFormula f) { + return f; } - if (left instanceof BitvectorFormula && right instanceof BitvectorFormula) { - return formulaManager.getBitvectorFormulaManager().equal((BitvectorFormula) left, (BitvectorFormula) right); + if (formula instanceof BooleanFormula f) { + IntegerFormulaManager integerFormulaManager = formulaManager.getIntegerFormulaManager(); + IntegerFormula zero = integerFormulaManager.makeNumber(0); + IntegerFormula one = integerFormulaManager.makeNumber(1); + return booleanFormulaManager.ifThenElse(f, one, zero); + } + if (formula instanceof BitvectorFormula f) { + BitvectorFormulaManager bitvectorFormulaManager = formulaManager.getBitvectorFormulaManager(); + return bitvectorFormulaManager.toIntegerFormula(f, false); } - // Fallback - return formulaManager.getIntegerFormulaManager().equal(convertToIntegerFormula(left), convertToIntegerFormula(right)); + throw new UnsupportedOperationException(String.format("Unkown type for toInteger(%s).", formula)); + } + + private BitvectorFormula toBitvector(Formula formula, int length) { + BitvectorFormulaManager bitvectorFormulaManager = formulaManager.getBitvectorFormulaManager(); + if (formula instanceof BitvectorFormula f) { + int formulaLength = bitvectorFormulaManager.getLength(f); + // Signedness may be wrong here: + return formulaLength >= length ? f : bitvectorFormulaManager.extend(f, length - formulaLength, false); + } + if (formula instanceof BooleanFormula f) { + BitvectorFormula zero = bitvectorFormulaManager.makeBitvector(length, 0); + BitvectorFormula one = bitvectorFormulaManager.makeBitvector(length, 1); + return booleanFormulaManager.ifThenElse(f, one, zero); + } + throw new UnsupportedOperationException(String.format("Unknown type for toBitvector(%s,%s).", formula, length)); } public BooleanFormula equalZero(Formula formula) { - checkArgument(formula instanceof NumeralFormula.IntegerFormula || formula instanceof BitvectorFormula, - "generalEqualZero input must be IntegerFormula or BitvectorFormula"); - if (formula instanceof NumeralFormula.IntegerFormula iForm) { - IntegerFormulaManager imgr = formulaManager.getIntegerFormulaManager(); - return imgr.equal(iForm, imgr.makeNumber(0)); - } else { - BitvectorFormulaManager bvmgr = formulaManager.getBitvectorFormulaManager(); - return bvmgr.equal((BitvectorFormula) formula, bvmgr.makeBitvector(bvmgr.getLength((BitvectorFormula) formula), 0)); + if (formula instanceof BooleanFormula f) { + return booleanFormulaManager.not(f); } + if (formula instanceof IntegerFormula f) { + IntegerFormulaManager integerFormulaManager = formulaManager.getIntegerFormulaManager(); + return integerFormulaManager.equal(f, integerFormulaManager.makeNumber(0)); + } + if (formula instanceof BitvectorFormula f) { + BitvectorFormulaManager bitvectorFormulaManager = formulaManager.getBitvectorFormulaManager(); + int length = bitvectorFormulaManager.getLength(f); + return bitvectorFormulaManager.equal(f, bitvectorFormulaManager.makeBitvector(length, 0)); + } + throw new UnsupportedOperationException(String.format("Unknown type for equalZero(%s).", formula)); } public BooleanFormula sameAddress(MemoryCoreEvent first, MemoryCoreEvent second) { @@ -207,11 +286,11 @@ public Formula result(RegWriter event) { return results.get(event); } - public NumeralFormula.IntegerFormula clockVariable(String name, Event event) { + public IntegerFormula clockVariable(String name, Event event) { return formulaManager.getIntegerFormulaManager().makeVariable(formulaManager.escape(name) + " " + event.getGlobalId()); } - public NumeralFormula.IntegerFormula memoryOrderClock(Event write) { + public IntegerFormula memoryOrderClock(Event write) { checkArgument(write.hasTag(WRITE), "Cannot get a clock-var for non-writes."); if (write.hasTag(INIT)) { return formulaManager.getIntegerFormulaManager().makeNumber(0); @@ -277,25 +356,16 @@ private void initialize() { Register register = rw.getResultRegister(); String name = register.getName() + "(" + e.getGlobalId() + "_result)"; Type type = register.getType(); - if (type instanceof IntegerType integerType) { - if (integerType.isMathematical()) { - r = formulaManager.getIntegerFormulaManager().makeVariable(name); - } else { - int bitWidth = integerType.getBitWidth(); - r = formulaManager.getBitvectorFormulaManager().makeVariable(bitWidth, name); - } - } else { - throw new UnsupportedOperationException(String.format("Encoding result of type %s.", type)); - } + r = makeVariable(name, type); } else { r = null; } if (e instanceof MemoryCoreEvent memEvent) { - addresses.put(e, encodeIntegerExpressionAt(memEvent.getAddress(), e)); + addresses.put(e, encodeExpressionAt(memEvent.getAddress(), e)); if (e instanceof Load) { values.put(e, r); } else if (e instanceof Store store) { - values.put(e, encodeIntegerExpressionAt(store.getMemValue(), e)); + values.put(e, encodeExpressionAt(store.getMemValue(), e)); } } if (r != null) { @@ -304,17 +374,17 @@ private void initialize() { } } - private NumeralFormula.IntegerFormula convertToIntegerFormula(Formula f) { - if (f instanceof BitvectorFormula bitvector) { - return formulaManager.getBitvectorFormulaManager().toIntegerFormula(bitvector, false); + Formula makeVariable(String name, Type type) { + if (type instanceof BooleanType) { + return booleanFormulaManager.makeVariable(name); } - if (f instanceof BooleanFormula guard) { - IntegerFormulaManager integerFormulaManager = formulaManager.getIntegerFormulaManager(); - NumeralFormula.IntegerFormula zero = integerFormulaManager.makeNumber(0); - NumeralFormula.IntegerFormula one = integerFormulaManager.makeNumber(1); - return booleanFormulaManager.ifThenElse(guard, one, zero); + if (type instanceof IntegerType integerType) { + if (integerType.isMathematical()) { + return formulaManager.getIntegerFormulaManager().makeVariable(name); + } + int bitWidth = integerType.getBitWidth(); + return formulaManager.getBitvectorFormulaManager().makeVariable(bitWidth, name); } - checkArgument(f instanceof NumeralFormula.IntegerFormula, "Unknown type of formula %s.", f); - return (NumeralFormula.IntegerFormula) f; + throw new UnsupportedOperationException(String.format("Encoding variable of type %s.", type)); } } \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/encoding/ExpressionEncoder.java b/dartagnan/src/main/java/com/dat3m/dartagnan/encoding/ExpressionEncoder.java index 6f2b8aa032..8ac17df136 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/encoding/ExpressionEncoder.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/encoding/ExpressionEncoder.java @@ -1,7 +1,6 @@ package com.dat3m.dartagnan.encoding; import com.dat3m.dartagnan.expression.*; -import com.dat3m.dartagnan.expression.op.COpBin; import com.dat3m.dartagnan.expression.op.IOpUn; import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; import com.dat3m.dartagnan.expression.type.IntegerType; @@ -22,12 +21,14 @@ class ExpressionEncoder implements ExpressionVisitor { + private final EncodingContext context; private final FormulaManager formulaManager; private final BooleanFormulaManager booleanFormulaManager; private final Event event; - public ExpressionEncoder(FormulaManager formulaManager, Event event) { - this.formulaManager = formulaManager; + ExpressionEncoder(EncodingContext context, Event event) { + this.context = context; + this.formulaManager = context.getFormulaManager(); this.booleanFormulaManager = formulaManager.getBooleanFormulaManager(); this.event = event; } @@ -57,67 +58,10 @@ BooleanFormula encodeAsBoolean(Expression expression) { return integerFormulaManager.greaterThan((IntegerFormula) formula, zero); } - Formula encodeAsInteger(Expression expression) { + Formula encode(Expression expression) { return expression.visit(this); } - static BooleanFormula encodeComparison(COpBin op, Formula lhs, Formula rhs, FormulaManager fmgr) { - BooleanFormulaManager bmgr = fmgr.getBooleanFormulaManager(); - if (lhs instanceof BooleanFormula b1 && rhs instanceof BooleanFormula b2) { - switch (op) { - case EQ: - return bmgr.equivalence(b1, b2); - case NEQ: - return bmgr.not(bmgr.equivalence(b1, b2)); - default: - throw new UnsupportedOperationException("Encoding of COpBin operation" + op + " not supported on boolean formulas."); - } - } - if (lhs instanceof IntegerFormula i1 && rhs instanceof IntegerFormula i2) { - IntegerFormulaManager imgr = fmgr.getIntegerFormulaManager(); - switch (op) { - case EQ: - return imgr.equal(i1, i2); - case NEQ: - return bmgr.not(imgr.equal(i1, i2)); - case LT: - case ULT: - return imgr.lessThan(i1, i2); - case LTE: - case ULTE: - return imgr.lessOrEquals(i1, i2); - case GT: - case UGT: - return imgr.greaterThan(i1, i2); - case GTE: - case UGTE: - return imgr.greaterOrEquals(i1, i2); - } - } - if (lhs instanceof BitvectorFormula bv1 && rhs instanceof BitvectorFormula bv2) { - BitvectorFormulaManager bvmgr = fmgr.getBitvectorFormulaManager(); - switch (op) { - case EQ: - return bvmgr.equal(bv1, bv2); - case NEQ: - return bmgr.not(bvmgr.equal(bv1, bv2)); - case LT: - case ULT: - return bvmgr.lessThan(bv1, bv2, op.equals(COpBin.LT)); - case LTE: - case ULTE: - return bvmgr.lessOrEquals(bv1, bv2, op.equals(COpBin.LTE)); - case GT: - case UGT: - return bvmgr.greaterThan(bv1, bv2, op.equals(COpBin.GT)); - case GTE: - case UGTE: - return bvmgr.greaterOrEquals(bv1, bv2, op.equals(COpBin.GTE)); - } - } - throw new UnsupportedOperationException("Encoding not supported for COpBin: " + lhs + " " + op + " " + rhs); - } - static Formula getLastMemValueExpr(MemoryObject object, int offset, FormulaManager formulaManager) { checkArgument(0 <= offset && offset < object.size(), "array index out of bounds"); String name = String.format("last_val_at_%s_%d", object, offset); @@ -130,9 +74,9 @@ static Formula getLastMemValueExpr(MemoryObject object, int offset, FormulaManag @Override public Formula visit(Atom atom) { - Formula lhs = encodeAsInteger(atom.getLHS()); - Formula rhs = encodeAsInteger(atom.getRHS()); - return encodeComparison(atom.getOp(), lhs, rhs, formulaManager); + Formula lhs = encode(atom.getLHS()); + Formula rhs = encode(atom.getRHS()); + return context.encodeComparison(atom.getOp(), lhs, rhs); } @Override @@ -173,8 +117,8 @@ public Formula visit(IValue iValue) { @Override public Formula visit(IExprBin iBin) { - Formula lhs = encodeAsInteger(iBin.getLHS()); - Formula rhs = encodeAsInteger(iBin.getRHS()); + Formula lhs = encode(iBin.getLHS()); + Formula rhs = encode(iBin.getRHS()); if (lhs instanceof IntegerFormula i1 && rhs instanceof IntegerFormula i2) { BitvectorFormulaManager bitvectorFormulaManager; IntegerFormulaManager integerFormulaManager = integerFormulaManager(); @@ -294,9 +238,7 @@ public Formula visit(IExprBin iBin) { @Override public Formula visit(IExprUn iUn) { - //TODO if inner is a boolean formula, we still want to encode it as boolean in case of conversions - Formula inner = encodeAsInteger(iUn.getInner()); - Type targetType = iUn.getType(); + Formula inner = encode(iUn.getInner()); switch (iUn.getOp()) { case MINUS -> { if (inner instanceof IntegerFormula number) { @@ -308,16 +250,18 @@ public Formula visit(IExprUn iUn) { } case CAST_SIGNED, CAST_UNSIGNED -> { boolean signed = iUn.getOp().equals(IOpUn.CAST_SIGNED); - if (targetType instanceof IntegerType integerTargetType) { - if (integerTargetType.isMathematical()) { - if (inner instanceof IntegerFormula) { - return inner; - } - if (inner instanceof BitvectorFormula number) { - return bitvectorFormulaManager().toIntegerFormula(number, signed); - } + if (inner instanceof BooleanFormula bool) { + return bool; + } + if (iUn.getType().isMathematical()) { + if (inner instanceof IntegerFormula) { + return inner; + } + if (inner instanceof BitvectorFormula number) { + return bitvectorFormulaManager().toIntegerFormula(number, signed); } - int bitWidth = integerTargetType.getBitWidth(); + } else { + int bitWidth = iUn.getType().getBitWidth(); if (inner instanceof IntegerFormula number) { return bitvectorFormulaManager().makeBitvector(bitWidth, number); } @@ -347,14 +291,14 @@ public Formula visit(IExprUn iUn) { } } throw new UnsupportedOperationException( - String.format("Encoding of (%s) %s %s not supported.", targetType, iUn.getOp(), inner)); + String.format("Encoding of (%s) %s %s not supported.", iUn.getType(), iUn.getOp(), inner)); } @Override public Formula visit(IfExpr ifExpr) { BooleanFormula guard = encodeAsBoolean(ifExpr.getGuard()); - Formula tBranch = encodeAsInteger(ifExpr.getTrueBranch()); - Formula fBranch = encodeAsInteger(ifExpr.getFalseBranch()); + Formula tBranch = encode(ifExpr.getTrueBranch()); + Formula fBranch = encode(ifExpr.getFalseBranch()); return booleanFormulaManager.ifThenElse(guard, tBranch, fBranch); } @@ -362,16 +306,16 @@ public Formula visit(IfExpr ifExpr) { public Formula visit(INonDet iNonDet) { String name = iNonDet.getName(); Type type = iNonDet.getType(); - return makeVariable(type, name); + return context.makeVariable(name, type); } @Override public Formula visit(Register reg) { String name = event == null ? - reg.getName() + "_" + reg.getThreadId() + "_final" : + reg.getName() + "_" + reg.getFunctionId() + "_final" : reg.getName() + "(" + event.getGlobalId() + ")"; Type type = reg.getType(); - return makeVariable(type, name); + return context.makeVariable(name, type); } @Override @@ -387,17 +331,6 @@ public Formula visit(Location location) { return getLastMemValueExpr(location.getMemoryObject(), location.getOffset(), formulaManager); } - private Formula makeVariable(Type type, String name) { - if (type instanceof IntegerType integerType) { - if (integerType.isMathematical()) { - return integerFormulaManager().makeVariable(name); - } - int bitWidth = integerType.getBitWidth(); - return bitvectorFormulaManager().makeVariable(bitWidth, name); - } - throw new UnsupportedOperationException(String.format("Encoding variable of type %s.", type)); - } - private Formula makeLiteral(Type type, BigInteger value) { if (type instanceof IntegerType integerType) { if (integerType.isMathematical()) { diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/encoding/ProgramEncoder.java b/dartagnan/src/main/java/com/dat3m/dartagnan/encoding/ProgramEncoder.java index ff0fc9a22a..5e51c21376 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/encoding/ProgramEncoder.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/encoding/ProgramEncoder.java @@ -75,7 +75,7 @@ public BooleanFormula encodeFullProgram() { public BooleanFormula encodeConstants() { List enc = new ArrayList<>(); for (INonDet constant : context.getTask().getProgram().getConstants()) { - Formula formula = context.encodeFinalIntegerExpression(constant); + Formula formula = context.encodeFinalExpression(constant); if (formula instanceof BitvectorFormula bitvector) { boolean signed = constant.isSigned(); var bitvectorFormulaManager = context.getFormulaManager().getBitvectorFormulaManager(); @@ -147,13 +147,13 @@ public BooleanFormula encodeMemory() { if(getArchPrecision() > -1) { final BitvectorFormulaManager bvmgr = fmgr.getBitvectorFormulaManager(); addrExprs = memory.getObjects().stream() - .map(addr -> bvmgr.equal((BitvectorFormula) context.encodeFinalIntegerExpression(addr), + .map(addr -> bvmgr.equal((BitvectorFormula) context.encodeFinalExpression(addr), bvmgr.makeBitvector(getArchPrecision(), addr.getValue().intValue()))) .toArray(BooleanFormula[]::new); } else { final IntegerFormulaManager imgr = fmgr.getIntegerFormulaManager(); addrExprs = memory.getObjects().stream() - .map(addr -> imgr.equal((IntegerFormula) context.encodeFinalIntegerExpression(addr), + .map(addr -> imgr.equal((IntegerFormula) context.encodeFinalExpression(addr), imgr.makeNumber(addr.getValue().intValue()))) .toArray(BooleanFormula[]::new); } @@ -174,7 +174,7 @@ public BooleanFormula encodeDependencies() { for(Map.Entry> e : dep.getAll()) { final Event reader = e.getKey(); for(Map.Entry r : e.getValue().entrySet()) { - final Formula value = context.encodeIntegerExpressionAt(r.getKey(), reader); + final Formula value = context.encodeExpressionAt(r.getKey(), reader); final Dependency.State state = r.getValue(); List overwrite = new ArrayList<>(); for(Event writer : reverse(state.may)) { @@ -225,7 +225,7 @@ public BooleanFormula encodeFinalRegisterValues() { logger.info("Encoding final register values"); List enc = new ArrayList<>(); for(Map.Entry e : dep.finalWriters().entrySet()) { - final Formula value = context.encodeFinalIntegerExpression(e.getKey()); + final Formula value = context.encodeFinalExpression(e.getKey()); final Dependency.State state = e.getValue(); final List writers = state.may; if(initializeRegisters && !state.initialized) { diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/encoding/WmmEncoder.java b/dartagnan/src/main/java/com/dat3m/dartagnan/encoding/WmmEncoder.java index 882664eff8..b3d3e32a16 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/encoding/WmmEncoder.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/encoding/WmmEncoder.java @@ -7,7 +7,7 @@ import com.dat3m.dartagnan.program.ScopedThread.ScopedThread; import com.dat3m.dartagnan.program.analysis.Dependency; import com.dat3m.dartagnan.program.event.Tag; -import com.dat3m.dartagnan.program.event.arch.ptx.FenceWithId; +import com.dat3m.dartagnan.program.event.arch.ptx.PTXFenceWithId; import com.dat3m.dartagnan.program.event.core.Event; import com.dat3m.dartagnan.program.event.core.Fence; import com.dat3m.dartagnan.program.event.core.MemoryCoreEvent; @@ -616,8 +616,8 @@ public Void visitSyncBarrier(Relation rel) { final RelationAnalysis.Knowledge k = ra.getKnowledge(rel); EncodingContext.EdgeEncoder encoder = context.edge(rel); for (Tuple tuple : encodeSets.get(rel)) { - FenceWithId e1 = (FenceWithId) tuple.getFirst(); - FenceWithId e2 = (FenceWithId) tuple.getSecond(); + PTXFenceWithId e1 = (PTXFenceWithId) tuple.getFirst(); + PTXFenceWithId e2 = (PTXFenceWithId) tuple.getSecond(); BooleanFormula sameId; // If they are in must, they are guaranteed to have the same id if (k.containsMust(tuple)) { @@ -625,8 +625,8 @@ public Void visitSyncBarrier(Relation rel) { } else { Expression id1 = e1.getFenceID(); Expression id2 = e2.getFenceID(); - sameId = context.equal(context.encodeIntegerExpressionAt(id1, e1), - context.encodeIntegerExpressionAt(id2, e2)); + sameId = context.equal(context.encodeExpressionAt(id1, e1), + context.encodeExpressionAt(id2, e2)); } enc.add(bmgr.equivalence( encoder.encode(tuple), diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/Atom.java b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/Atom.java index 806cfe9b21..abcf29553d 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/Atom.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/Atom.java @@ -2,6 +2,7 @@ import com.dat3m.dartagnan.expression.op.COpBin; import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; +import com.dat3m.dartagnan.expression.type.BooleanType; import com.dat3m.dartagnan.program.Register; import com.google.common.collect.ImmutableSet; @@ -11,7 +12,8 @@ public class Atom extends BExpr { private final Expression rhs; private final COpBin op; - public Atom (Expression lhs, COpBin op, Expression rhs) { + public Atom(BooleanType type, Expression lhs, COpBin op, Expression rhs) { + super(type); this.lhs = lhs; this.rhs = rhs; this.op = op; diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/BConst.java b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/BConst.java index 589649e329..3e83d01de0 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/BConst.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/BConst.java @@ -1,15 +1,14 @@ package com.dat3m.dartagnan.expression; import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; +import com.dat3m.dartagnan.expression.type.BooleanType; public class BConst extends BExpr { - public final static BConst TRUE = new BConst(true); - public final static BConst FALSE = new BConst(false); - private final boolean value; - public BConst(boolean value) { + public BConst(BooleanType type, boolean value) { + super(type); this.value = value; } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/BExpr.java b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/BExpr.java index 37d1428d43..7ca7458a21 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/BExpr.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/BExpr.java @@ -1,20 +1,19 @@ package com.dat3m.dartagnan.expression; import com.dat3m.dartagnan.expression.type.BooleanType; -import com.dat3m.dartagnan.expression.type.TypeFactory; + +import static com.google.common.base.Preconditions.checkNotNull; public abstract class BExpr implements Expression { - @Override - public BooleanType getType() { - return TypeFactory.getInstance().getBooleanType(); - } + private final BooleanType type; - public boolean isTrue() { - return this.equals(BConst.TRUE); - } + protected BExpr(BooleanType type) { + this.type = checkNotNull(type); + } - public boolean isFalse() { - return this.equals(BConst.FALSE); + @Override + public BooleanType getType() { + return type; } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/BExprBin.java b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/BExprBin.java index 74cc9c8f78..f5cd465560 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/BExprBin.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/BExprBin.java @@ -2,6 +2,7 @@ import com.dat3m.dartagnan.expression.op.BOpBin; import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; +import com.dat3m.dartagnan.expression.type.BooleanType; import com.dat3m.dartagnan.program.Register; import com.google.common.collect.ImmutableSet; @@ -11,7 +12,8 @@ public class BExprBin extends BExpr { private final Expression b2; private final BOpBin op; - public BExprBin(Expression b1, BOpBin op, Expression b2) { + public BExprBin(BooleanType type, Expression b1, BOpBin op, Expression b2) { + super(type); this.b1 = b1; this.b2 = b2; this.op = op; diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/BExprUn.java b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/BExprUn.java index ddca4b1965..d607a4bc04 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/BExprUn.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/BExprUn.java @@ -2,6 +2,7 @@ import com.dat3m.dartagnan.expression.op.BOpUn; import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; +import com.dat3m.dartagnan.expression.type.BooleanType; import com.dat3m.dartagnan.program.Register; import com.google.common.collect.ImmutableSet; @@ -10,7 +11,8 @@ public class BExprUn extends BExpr { private final Expression b; private final BOpUn op; - public BExprUn(BOpUn op, Expression b) { + public BExprUn(BooleanType type, BOpUn op, Expression b) { + super(type); this.b = b; this.op = op; } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/BNonDet.java b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/BNonDet.java index 13975ba72c..ce9db9f959 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/BNonDet.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/BNonDet.java @@ -1,9 +1,15 @@ package com.dat3m.dartagnan.expression; +import com.dat3m.dartagnan.expression.type.BooleanType; import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; +//TODO instances of this class should be managed by the program public class BNonDet extends BExpr { + public BNonDet(BooleanType type) { + super(type); + } + @Override public String toString() { return "nondet_bool()"; diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/Expression.java b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/Expression.java index 59bd070de9..bf76f57b0a 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/Expression.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/Expression.java @@ -13,10 +13,9 @@ default ImmutableSet getRegs() { return ImmutableSet.of(); } + // TODO: Rename to "accept" T visit(ExpressionVisitor visitor); - //default ExprInterface simplify() { return visit(ExprSimplifier.SIMPLIFIER); } - default IConst reduce() { throw new UnsupportedOperationException("Reduce not supported for " + this); } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/ExpressionFactory.java b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/ExpressionFactory.java index 0e1c15ce22..c438062f3d 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/ExpressionFactory.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/ExpressionFactory.java @@ -2,15 +2,19 @@ import com.dat3m.dartagnan.expression.op.*; import com.dat3m.dartagnan.expression.type.*; +import com.google.common.base.Preconditions; import java.math.BigInteger; -import static com.google.common.base.Preconditions.checkArgument; - public final class ExpressionFactory { private static final ExpressionFactory instance = new ExpressionFactory(); + private final TypeFactory types = TypeFactory.getInstance(); + private final BooleanType booleanType = types.getBooleanType(); + private final BConst falseConstant = new BConst(booleanType, false); + private final BConst trueConstant = new BConst(booleanType, true); + private ExpressionFactory() {} public static ExpressionFactory getInstance() { @@ -21,35 +25,35 @@ public static ExpressionFactory getInstance() { // Boolean public BConst makeTrue() { - return BConst.TRUE; + return trueConstant; } public BConst makeFalse() { - return BConst.FALSE; + return falseConstant; } public BConst makeValue(boolean value) { return value ? makeTrue() : makeFalse(); } - public BExpr makeNot(Expression operand) { + public Expression makeNot(Expression operand) { return makeUnary(BOpUn.NOT, operand); } - public BExpr makeUnary(BOpUn operator, Expression operand) { - return new BExprUn(operator, operand); + public Expression makeUnary(BOpUn operator, Expression operand) { + return new BExprUn(types.getBooleanType(), operator, operand); } - public BExpr makeAnd(Expression leftOperand, Expression rightOperand) { + public Expression makeAnd(Expression leftOperand, Expression rightOperand) { return makeBinary(leftOperand, BOpBin.AND, rightOperand); } - public BExpr makeOr(Expression leftOperand, Expression rightOperand) { + public Expression makeOr(Expression leftOperand, Expression rightOperand) { return makeBinary(leftOperand, BOpBin.OR, rightOperand); } - public BExpr makeBinary(Expression leftOperand, BOpBin operator, Expression rightOperand) { - return new BExprBin(leftOperand, operator, rightOperand); + public Expression makeBinary(Expression leftOperand, BOpBin operator, Expression rightOperand) { + return new BExprBin(booleanType, leftOperand, operator, rightOperand); } public IValue makeZero(IntegerType type) { @@ -68,116 +72,126 @@ public IValue makeValue(BigInteger value, IntegerType type) { return new IValue(value, type); } - public IExpr makeConditional(Expression condition, Expression ifTrue, Expression ifFalse) { + public Expression makeCast(Expression expression, Type type) { + if (type instanceof BooleanType) { + return makeBooleanCast(expression); + } + if (type instanceof IntegerType integerType) { + return makeIntegerCast(expression, integerType, false); + } + throw new UnsupportedOperationException(String.format("Cast %s into %s.", expression, type)); + } + + public Expression makeConditional(Expression condition, Expression ifTrue, Expression ifFalse) { return new IfExpr(condition, ifTrue, ifFalse); } - public BExpr makeBoolean(Expression operand) { - if (operand.getType() instanceof BooleanType) { - assert operand instanceof BExpr; - return (BExpr) operand; - } - if (operand.getType() instanceof IntegerType integerType) { - return makeNEQ(operand, makeZero(integerType)); + public Expression makeBooleanCast(Expression operand) { + Type operandType = operand.getType(); + if (operandType instanceof BooleanType) { + return operand; } - throw new UnsupportedOperationException(String.format("makeBoolean with unknown-typed operand %s.", operand)); + Preconditions.checkArgument(operandType instanceof IntegerType, + "makeBoolean with unknown-typed operand %s.", operand); + return makeNEQ(operand, makeZero((IntegerType) operandType)); } - public BExpr makeEQ(Expression leftOperand, Expression rightOperand) { + public Expression makeEQ(Expression leftOperand, Expression rightOperand) { return makeBinary(leftOperand, COpBin.EQ, rightOperand); } - public BExpr makeNEQ(Expression leftOperand, Expression rightOperand) { + public Expression makeNEQ(Expression leftOperand, Expression rightOperand) { return makeBinary(leftOperand, COpBin.NEQ, rightOperand); } - public BExpr makeLT(Expression leftOperand, Expression rightOperand, boolean signed) { + public Expression makeLT(Expression leftOperand, Expression rightOperand, boolean signed) { return makeBinary(leftOperand, signed ? COpBin.LT : COpBin.ULT, rightOperand); } - public BExpr makeGT(Expression leftOperand, Expression rightOperand, boolean signed) { + public Expression makeGT(Expression leftOperand, Expression rightOperand, boolean signed) { return makeBinary(leftOperand, signed ? COpBin.GT : COpBin.UGT, rightOperand); } - public BExpr makeLTE(Expression leftOperand, Expression rightOperand, boolean signed) { + public Expression makeLTE(Expression leftOperand, Expression rightOperand, boolean signed) { return makeBinary(leftOperand, signed ? COpBin.LTE : COpBin.ULTE, rightOperand); } - public BExpr makeGTE(Expression leftOperand, Expression rightOperand, boolean signed) { + public Expression makeGTE(Expression leftOperand, Expression rightOperand, boolean signed) { return makeBinary(leftOperand, signed ? COpBin.GTE : COpBin.UGTE, rightOperand); } - public BExpr makeBinary(Expression leftOperand, COpBin operator, Expression rightOperand) { - return new Atom(leftOperand, operator, rightOperand); + public Expression makeBinary(Expression leftOperand, COpBin operator, Expression rightOperand) { + return new Atom(types.getBooleanType(), leftOperand, operator, rightOperand); } - public IExpr makeNEG(Expression operand, IntegerType targetType) { + public Expression makeNEG(Expression operand, IntegerType targetType) { return makeUnary(IOpUn.MINUS, operand, targetType); } - public IExpr makeCTLZ(Expression operand, IntegerType targetType) { + public Expression makeCTLZ(Expression operand, IntegerType targetType) { return makeUnary(IOpUn.CTLZ, operand, targetType); } - public IExpr makeIntegerCast(Expression operand, IntegerType targetType, boolean signed) { + public Expression makeIntegerCast(Expression operand, IntegerType targetType, boolean signed) { if (operand.getType() instanceof BooleanType) { return makeConditional(operand, makeOne(targetType), makeZero(targetType)); } return makeUnary(signed ? IOpUn.CAST_SIGNED : IOpUn.CAST_UNSIGNED, operand, targetType); } - public IExpr makeUnary(IOpUn operator, Expression operand, IntegerType targetType) { - checkArgument(operand instanceof IExpr, String.format("Non-integer operand for %s %s.", operator, operand)); - return new IExprUn(operator, (IExpr) operand, targetType); + public Expression makeUnary(IOpUn operator, Expression operand, IntegerType targetType) { + Preconditions.checkArgument(operand.getType() instanceof IntegerType, + "Non-integer operand for %s %s.", operator, operand); + return new IExprUn(operator, operand, targetType); } - public IExpr makeADD(Expression leftOperand, Expression rightOperand) { + public Expression makeADD(Expression leftOperand, Expression rightOperand) { return makeBinary(leftOperand, IOpBin.PLUS, rightOperand); } - public IExpr makeSUB(Expression leftOperand, Expression rightOperand) { + public Expression makeSUB(Expression leftOperand, Expression rightOperand) { return makeBinary(leftOperand, IOpBin.MINUS, rightOperand); } - public IExpr makeMUL(Expression leftOperand, Expression rightOperand) { + public Expression makeMUL(Expression leftOperand, Expression rightOperand) { return makeBinary(leftOperand, IOpBin.MULT, rightOperand); } - public IExpr makeDIV(Expression leftOperand, Expression rightOperand, boolean signed) { + public Expression makeDIV(Expression leftOperand, Expression rightOperand, boolean signed) { return makeBinary(leftOperand, signed ? IOpBin.DIV : IOpBin.UDIV, rightOperand); } - public IExpr makeMOD(Expression leftOperand, Expression rightOperand) { + public Expression makeMOD(Expression leftOperand, Expression rightOperand) { return makeBinary(leftOperand, IOpBin.MOD, rightOperand); } - public IExpr makeREM(Expression leftOperand, Expression rightOperand, boolean signed) { + public Expression makeREM(Expression leftOperand, Expression rightOperand, boolean signed) { return makeBinary(leftOperand, signed ? IOpBin.SREM : IOpBin.UREM, rightOperand); } - public IExpr makeAND(Expression leftOperand, Expression rightOperand) { + public Expression makeAND(Expression leftOperand, Expression rightOperand) { return makeBinary(leftOperand, IOpBin.AND, rightOperand); } - public IExpr makeOR(Expression leftOperand, Expression rightOperand) { + public Expression makeOR(Expression leftOperand, Expression rightOperand) { return makeBinary(leftOperand, IOpBin.OR, rightOperand); } - public IExpr makeXOR(Expression leftOperand, Expression rightOperand) { + public Expression makeXOR(Expression leftOperand, Expression rightOperand) { return makeBinary(leftOperand, IOpBin.XOR, rightOperand); } - public IExpr makeLSH(Expression leftOperand, Expression rightOperand) { + public Expression makeLSH(Expression leftOperand, Expression rightOperand) { return makeBinary(leftOperand, IOpBin.L_SHIFT, rightOperand); } - public IExpr makeRSH(Expression leftOperand, Expression rightOperand, boolean signed) { + public Expression makeRSH(Expression leftOperand, Expression rightOperand, boolean signed) { return makeBinary(leftOperand, signed ? IOpBin.AR_SHIFT : IOpBin.R_SHIFT, rightOperand); } - public IExpr makeBinary(Expression leftOperand, IOpBin operator, Expression rightOperand) { - checkArgument(leftOperand instanceof IExpr && rightOperand instanceof IExpr, - String.format("Non-integer operands for %s %s %s.", leftOperand, operator, rightOperand)); - return new IExprBin((IExpr) leftOperand, operator, (IExpr) rightOperand); + public Expression makeBinary(Expression leftOperand, IOpBin operator, Expression rightOperand) { + Preconditions.checkState(leftOperand.getType() instanceof IntegerType, + "Non-integer left operand %s %s %s.", leftOperand, operator, rightOperand); + return new IExprBin((IntegerType) leftOperand.getType(), leftOperand, operator, rightOperand); } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/IConst.java b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/IConst.java index 90804db651..686d4d6cf4 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/IConst.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/IConst.java @@ -28,9 +28,4 @@ public int getValueAsInt() { public IConst reduce() { return this; } - - @Override - public IExpr getBase() { - return this; - } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/IExpr.java b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/IExpr.java index 24b00677f8..cf9e9f483c 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/IExpr.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/IExpr.java @@ -12,18 +12,6 @@ protected IExpr(IntegerType type) { this.type = checkNotNull(type); } - public IExpr getBase() { - throw new UnsupportedOperationException("getBase() not supported for " + this); - } - - public boolean isBV() { - return !getType().isMathematical(); - } - - public boolean isInteger() { - return getType().isMathematical(); - } - @Override public final IntegerType getType() { return type; diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/IExprBin.java b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/IExprBin.java index ae8d9f4ab1..40f8dc1eca 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/IExprBin.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/IExprBin.java @@ -2,6 +2,7 @@ import com.dat3m.dartagnan.expression.op.IOpBin; import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; +import com.dat3m.dartagnan.expression.type.IntegerType; import com.dat3m.dartagnan.program.Register; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableSet; @@ -10,12 +11,12 @@ public class IExprBin extends IExpr { - private final IExpr lhs; - private final IExpr rhs; + private final Expression lhs; + private final Expression rhs; private final IOpBin op; - public IExprBin(IExpr lhs, IOpBin op, IExpr rhs) { - super(lhs.getType()); + public IExprBin(IntegerType type, Expression lhs, IOpBin op, Expression rhs) { + super(type); Preconditions.checkArgument(lhs.getType().equals(rhs.getType()), "The types of %s and %s do not match.", lhs, rhs); this.lhs = lhs; @@ -37,23 +38,18 @@ public String toString() { public IConst reduce() { BigInteger v1 = lhs.reduce().getValue(); BigInteger v2 = rhs.reduce().getValue(); - return new IValue(op.combine(v1, v2), lhs.getType()); - } - - @Override - public IExpr getBase() { - return lhs.getBase(); + return new IValue(op.combine(v1, v2), getType()); } public IOpBin getOp() { return op; } - public IExpr getRHS() { + public Expression getRHS() { return rhs; } - public IExpr getLHS() { + public Expression getLHS() { return lhs; } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/IExprUn.java b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/IExprUn.java index adb307ca92..f777ab78f3 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/IExprUn.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/IExprUn.java @@ -12,10 +12,10 @@ public class IExprUn extends IExpr { - private final IExpr b; + private final Expression b; private final IOpUn op; - public IExprUn(IOpUn op, IExpr b, IntegerType t) { + public IExprUn(IOpUn op, Expression b, IntegerType t) { super(t); this.b = b; this.op = op; @@ -25,7 +25,7 @@ public IOpUn getOp() { return op; } - public IExpr getInner() { + public Expression getInner() { return b; } @@ -41,7 +41,9 @@ public String toString() { @Override public IConst reduce() { - IntegerType innerType = b.getType(); + if (!(b.getType() instanceof IntegerType innerType)) { + throw new IllegalStateException(String.format("Non-integer operand %s.", b)); + } IConst inner = b.reduce(); verify(inner.getType().equals(innerType), "Reduced to wrong type %s instead of %s.", inner.getType(), innerType); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/processing/ExprSimplifier.java b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/processing/ExprSimplifier.java index ed5f4080ff..572bf7c25c 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/processing/ExprSimplifier.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/processing/ExprSimplifier.java @@ -4,14 +4,13 @@ import com.dat3m.dartagnan.expression.op.BOpUn; import com.dat3m.dartagnan.expression.op.COpBin; import com.dat3m.dartagnan.expression.op.IOpBin; -import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.expression.type.BooleanType; import com.dat3m.dartagnan.program.memory.MemoryObject; import java.math.BigInteger; import static com.dat3m.dartagnan.expression.op.IOpBin.R_SHIFT; -//TODO: This is buggy for now, because Addresses are treated as IConst public class ExprSimplifier extends ExprTransformer { @Override @@ -25,13 +24,13 @@ public Expression visit(Atom atom) { case ULTE: case GTE: case UGTE: - return BConst.TRUE; + return expressions.makeTrue(); case NEQ: case LT: case ULT: case GT: case UGT: - return BConst.FALSE; + return expressions.makeFalse(); } } if (lhs instanceof IConst lc && rhs instanceof IConst rc) { @@ -45,7 +44,7 @@ public Expression visit(Atom atom) { if (lhs instanceof IConst lc && rhs instanceof BConst rc) { return expressions.makeValue(atom.getOp().combine(lc.getValue(), rc.getValue())); } - if (lhs instanceof BExpr && rhs instanceof IConst rc) { + if (lhs.getType() instanceof BooleanType && rhs instanceof IConst rc) { // Simplify "cond == 1" to just "cond" // TODO: If necessary, add versions for "cond == 0" and for "cond != 0/1" if (atom.getOp() == COpBin.EQ && rc.getValue().intValue() == 1) { @@ -56,55 +55,40 @@ public Expression visit(Atom atom) { } @Override - public BExpr visit(BConst bConst) { - return bConst; - } - - @Override - public BExpr visit(BExprBin bBin) { - // Due to constant propagation we are not guaranteed to get BExprs - if(!(bBin.getLHS().visit(this) instanceof BExpr lhs && bBin.getRHS().visit(this) instanceof BExpr rhs)) { - return bBin; - } - switch (bBin.getOp()) { - case OR: - if (lhs.isTrue() || rhs.isTrue()) { - return BConst.TRUE; - } else if (lhs.isFalse()) { - return rhs; - } else if (rhs.isFalse()) { - return lhs; - } - break; - case AND: - if (lhs.isFalse() || rhs.isFalse()) { - return BConst.FALSE; - } else if (lhs.isTrue()) { - return rhs; - } else if (rhs.isTrue()) { - return lhs; - } - break; + public Expression visit(BExprBin bBin) { + Expression l = bBin.getLHS().visit(this); + Expression r = bBin.getRHS().visit(this); + Expression left = l instanceof BConst || !(r instanceof BConst) ? l : r; + Expression right = left == l ? r : l; + if (left instanceof BConst constant) { + boolean value = constant.getValue(); + boolean neutralValue = switch (bBin.getOp()) { + case OR -> false; + case AND -> true; + }; + if (value == neutralValue) { + return right; + } + // otherwise value is the absorbing value + if (right.getRegs().isEmpty()) { + return left; + } } - return expressions.makeBinary(lhs, bBin.getOp(), rhs); + return expressions.makeBinary(left, bBin.getOp(), right); } @Override - public BExpr visit(BExprUn bUn) { - // Due to constant propagation we are not guaranteed to get BExprs - Expression innerExpr = bUn.getInner().visit(this); - if(!(innerExpr instanceof BExpr)) { - return bUn; + public Expression visit(BExprUn bUn) { + Expression inner = bUn.getInner().visit(this); + assert bUn.getOp() == BOpUn.NOT; + if (inner instanceof BConst constant) { + return expressions.makeValue(!constant.getValue()); } - BExpr inner = (BExpr) innerExpr; - if (inner instanceof BConst) { - return expressions.makeValue(!inner.isTrue()); - } - if (inner instanceof BExprUn in && bUn.getOp() == BOpUn.NOT) { - return (BExpr) in.getInner(); + if (inner instanceof BExprUn innerUnary && innerUnary.getOp() == BOpUn.NOT) { + return innerUnary.getInner(); } - if (inner instanceof Atom atom && bUn.getOp() == BOpUn.NOT) { + if (inner instanceof Atom atom) { // Move negations into the atoms COp return expressions.makeBinary(atom.getLHS(), atom.getOp().inverted(), atom.getRHS()); } @@ -112,19 +96,9 @@ public BExpr visit(BExprUn bUn) { } @Override - public BExpr visit(BNonDet bNonDet) { - return bNonDet; - } - - @Override - public IValue visit(IValue iValue) { - return iValue; - } - - @Override - public IExpr visit(IExprBin iBin) { - IExpr lhs = (IExpr)iBin.getLHS().visit(this); - IExpr rhs = (IExpr)iBin.getRHS().visit(this); + public Expression visit(IExprBin iBin) { + Expression lhs = iBin.getLHS().visit(this); + Expression rhs = iBin.getRHS().visit(this); IOpBin op = iBin.getOp(); if (lhs.equals(rhs)) { switch(op) { @@ -132,7 +106,7 @@ public IExpr visit(IExprBin iBin) { case OR: return lhs; case XOR: - return expressions.makeZero(lhs.getType()); + return expressions.makeZero(iBin.getType()); } } if (! (lhs instanceof IConst || rhs instanceof IConst)) { @@ -187,8 +161,8 @@ public IExpr visit(IExprBin iBin) { // Either op can be +/-, but this does not affect correctness // e.g. (&mem + x) - y -> &mem + reduced(x - y) if(lhs instanceof IExprBin lhsBin && lhsBin.getRHS() instanceof IConst && lhsBin.getOp() != R_SHIFT) { - IExpr newLHS = lhsBin.getLHS(); - IExpr newRHS = expressions.makeBinary(lhsBin.getRHS(), lhsBin.getOp(), rhs).reduce(); + Expression newLHS = lhsBin.getLHS(); + Expression newRHS = expressions.makeBinary(lhsBin.getRHS(), lhsBin.getOp(), rhs).reduce(); return expressions.makeBinary(newLHS, op, newRHS); } @@ -197,8 +171,9 @@ public IExpr visit(IExprBin iBin) { } @Override - public IExpr visit(IExprUn iUn) { - return expressions.makeUnary(iUn.getOp(), iUn.getInner(), iUn.getType()); + public Expression visit(IExprUn iUn) { + // TODO: Add simplifications + return super.visit(iUn); } @Override @@ -215,29 +190,16 @@ public Expression visit(IfExpr ifExpr) { // Simplifies "ITE(cond, 1, 0)" to "cond" and "ITE(cond, 0, 1) to "!cond" // TODO: It is not clear if this gives performance improvements or not - if (t instanceof IConst tConstant && tConstant.isInteger() && tConstant.getValueAsInt() == 1 - && f instanceof IConst fConstant && fConstant.isInteger() && fConstant.getValueAsInt() == 0) { + if (t instanceof IConst tConstant && tConstant.getType().isMathematical() && tConstant.getValueAsInt() == 1 + && f instanceof IConst fConstant && fConstant.getType().isMathematical() && fConstant.getValueAsInt() == 0) { return cond; - } else if (t instanceof IConst tConstant && tConstant.isInteger() && tConstant.getValueAsInt() == 0 - && f instanceof IConst fConstant && fConstant.isInteger() && fConstant.getValueAsInt() == 1) { + } else if (t instanceof IConst tConstant && tConstant.getType().isMathematical() && tConstant.getValueAsInt() == 0 + && f instanceof IConst fConstant && fConstant.getType().isMathematical() && fConstant.getValueAsInt() == 1) { return expressions.makeNot(cond); } return expressions.makeConditional(cond, t, f); } - @Override - public IExpr visit(INonDet iNonDet) { - return iNonDet; - } - @Override - public Expression visit(Register reg) { - return reg; - } - - @Override - public Expression visit(MemoryObject address) { - return address; - } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/processing/ExprTransformer.java b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/processing/ExprTransformer.java index 7da7be6f9f..08cee9e548 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/processing/ExprTransformer.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/processing/ExprTransformer.java @@ -2,6 +2,7 @@ import com.dat3m.dartagnan.expression.*; import com.dat3m.dartagnan.expression.type.TypeFactory; +import com.dat3m.dartagnan.program.Function; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.memory.Location; import com.dat3m.dartagnan.program.memory.MemoryObject; @@ -17,37 +18,37 @@ public Expression visit(Atom atom) { } @Override - public BExpr visit(BConst bConst) { + public Expression visit(BConst bConst) { return bConst; } @Override - public BExpr visit(BExprBin bBin) { + public Expression visit(BExprBin bBin) { return expressions.makeBinary(bBin.getLHS().visit(this), bBin.getOp(), bBin.getRHS().visit(this)); } @Override - public BExpr visit(BExprUn bUn) { + public Expression visit(BExprUn bUn) { return expressions.makeUnary(bUn.getOp(), bUn.getInner().visit(this)); } @Override - public BExpr visit(BNonDet bNonDet) { + public Expression visit(BNonDet bNonDet) { return bNonDet; } @Override - public IValue visit(IValue iValue) { + public Expression visit(IValue iValue) { return iValue; } @Override - public IExpr visit(IExprBin iBin) { + public Expression visit(IExprBin iBin) { return expressions.makeBinary(iBin.getLHS().visit(this), iBin.getOp(), iBin.getRHS().visit(this)); } @Override - public IExpr visit(IExprUn iUn) { + public Expression visit(IExprUn iUn) { return expressions.makeUnary(iUn.getOp(), iUn.getInner().visit(this), iUn.getType()); } @@ -60,7 +61,7 @@ public Expression visit(IfExpr ifExpr) { } @Override - public IExpr visit(INonDet iNonDet) { + public Expression visit(INonDet iNonDet) { return iNonDet; } @@ -78,4 +79,7 @@ public Expression visit(MemoryObject address) { public Expression visit(Location location) { return location; } + + @Override + public Expression visit(Function function) { return function; } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/processing/ExpressionVisitor.java b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/processing/ExpressionVisitor.java index aa26b5e2e9..40e9b10c37 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/processing/ExpressionVisitor.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/processing/ExpressionVisitor.java @@ -1,6 +1,7 @@ package com.dat3m.dartagnan.expression.processing; import com.dat3m.dartagnan.expression.*; +import com.dat3m.dartagnan.program.Function; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.memory.Location; import com.dat3m.dartagnan.program.memory.MemoryObject; @@ -19,4 +20,5 @@ public interface ExpressionVisitor { default T visit(Register reg) { return null; } default T visit(MemoryObject address) { return null; } default T visit(Location location) { return null; } + default T visit(Function function) { return null; } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/type/FunctionType.java b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/type/FunctionType.java new file mode 100644 index 0000000000..35f2d1585d --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/type/FunctionType.java @@ -0,0 +1,42 @@ +package com.dat3m.dartagnan.expression.type; + +import com.google.common.collect.Lists; + +import java.util.Arrays; +import java.util.List; + +public final class FunctionType implements Type { + + private final Type returnType; + private final Type[] parameterTypes; + + FunctionType(Type returnType, Type... parameterTypes) { + this.returnType = returnType; + this.parameterTypes = parameterTypes; + } + + public Type getReturnType() { return this.returnType; } + public List getParameterTypes() { return Arrays.asList(this.parameterTypes); } + + @Override + public boolean equals(Object obj) { + if (obj == this) { + return true; + } + return (obj instanceof FunctionType other) + && other.returnType == this.returnType + && Arrays.equals(other.parameterTypes, this.parameterTypes); + } + + @Override + public int hashCode() { + return 31 * returnType.hashCode() + Arrays.hashCode(parameterTypes); + } + + @Override + public String toString() { + return String.format("(%s) -> %s", + String.join(", ", Lists.transform(Arrays.asList(parameterTypes), Object::toString)), + returnType); + } +} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/type/IntegerType.java b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/type/IntegerType.java index 61e61f490c..d59d9210a8 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/type/IntegerType.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/type/IntegerType.java @@ -46,6 +46,19 @@ public BigInteger applySign(BigInteger value, boolean signed) { return value.signum() >= 0 ? value : BigInteger.TWO.pow(bitWidth).add(value); } + @Override + public boolean equals(Object obj) { + if (obj == this) { + return true; + } + return obj instanceof IntegerType other && other.bitWidth == this.bitWidth; + } + + @Override + public int hashCode() { + return 31 * bitWidth; + } + @Override public String toString() { return isMathematical() ? "int" : "bv" + bitWidth; diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/type/TypeFactory.java b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/type/TypeFactory.java index a987ed4e02..6b5ca9ea22 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/type/TypeFactory.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/type/TypeFactory.java @@ -1,19 +1,23 @@ package com.dat3m.dartagnan.expression.type; import com.dat3m.dartagnan.GlobalSettings; +import com.dat3m.dartagnan.utils.Normalizer; -import java.util.HashMap; -import java.util.Map; +import java.util.List; import static com.google.common.base.Preconditions.checkArgument; +import static com.google.common.base.Preconditions.checkNotNull; public final class TypeFactory { - private static TypeFactory instance = new TypeFactory(); + private static final TypeFactory instance = new TypeFactory(); + + private final VoidType voidType = new VoidType(); private final BooleanType booleanType = new BooleanType(); - private final Map integerTypeMap = new HashMap<>(); private final IntegerType mathematicalIntegerType = new IntegerType(IntegerType.MATHEMATICAL); + private final Normalizer typeNormalizer = new Normalizer(); + private TypeFactory() {} //TODO make this part of the program. @@ -25,17 +29,26 @@ public BooleanType getBooleanType() { return booleanType; } + public VoidType getVoidType() { return voidType; } + public IntegerType getIntegerType() { return mathematicalIntegerType; } public IntegerType getIntegerType(int bitWidth) { - checkArgument(bitWidth >= 0, "Negative bit width %s.", bitWidth); - return integerTypeMap.computeIfAbsent(bitWidth, IntegerType::new); + checkArgument(bitWidth > 0, "Non-positive bit width %s.", bitWidth); + return typeNormalizer.normalize(new IntegerType(bitWidth)); + } + + public FunctionType getFunctionType(Type returnType, List parameterTypes) { + checkNotNull(returnType); + checkNotNull(parameterTypes); + checkArgument(parameterTypes.stream().noneMatch(t -> t == voidType), "Void parameters are not allowed"); + return typeNormalizer.normalize(new FunctionType(returnType, parameterTypes.toArray(new Type[0]))); } public IntegerType getArchType() { - int archPrecision = GlobalSettings.getArchPrecision(); + final int archPrecision = GlobalSettings.getArchPrecision(); return archPrecision < 0 ? getIntegerType() : getIntegerType(archPrecision); } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/expression/type/VoidType.java b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/type/VoidType.java new file mode 100644 index 0000000000..42d35c4fb3 --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/expression/type/VoidType.java @@ -0,0 +1,11 @@ +package com.dat3m.dartagnan.expression.type; + +public final class VoidType implements Type { + + VoidType() {} + + @Override + public String toString() { + return "void"; + } +} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserBoogie.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserBoogie.java index 0729181579..8d3daab053 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserBoogie.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserBoogie.java @@ -1,14 +1,13 @@ package com.dat3m.dartagnan.parsers.program; +import com.dat3m.dartagnan.exception.ParserErrorListener; import com.dat3m.dartagnan.parsers.BoogieLexer; import com.dat3m.dartagnan.parsers.BoogieParser; -import com.dat3m.dartagnan.exception.ParserErrorListener; -import com.dat3m.dartagnan.parsers.program.utils.ProgramBuilder; import com.dat3m.dartagnan.parsers.program.visitors.boogie.VisitorBoogie; import com.dat3m.dartagnan.program.Program; -import com.dat3m.dartagnan.program.Program.SourceLanguage; - -import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.CommonTokenStream; +import org.antlr.v4.runtime.ParserRuleContext; class ParserBoogie implements ParserInterface{ @@ -19,9 +18,8 @@ public Program parse(CharStream charStream) { BoogieParser parser = new BoogieParser(tokenStream); parser.addErrorListener(new ParserErrorListener()); - ProgramBuilder pb = new ProgramBuilder(SourceLanguage.BOOGIE); ParserRuleContext parserEntryPoint = parser.main(); - VisitorBoogie visitor = new VisitorBoogie(pb); + VisitorBoogie visitor = new VisitorBoogie(); Program program = (Program) parserEntryPoint.accept(visitor); return program; diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusAArch64.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusAArch64.java index 1d45a10850..04241cb1c1 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusAArch64.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusAArch64.java @@ -1,15 +1,14 @@ package com.dat3m.dartagnan.parsers.program; +import com.dat3m.dartagnan.exception.ParserErrorListener; import com.dat3m.dartagnan.parsers.LitmusAArch64Lexer; import com.dat3m.dartagnan.parsers.LitmusAArch64Parser; -import com.dat3m.dartagnan.exception.ParserErrorListener; -import com.dat3m.dartagnan.parsers.program.utils.ProgramBuilder; import com.dat3m.dartagnan.parsers.program.visitors.VisitorLitmusAArch64; import com.dat3m.dartagnan.program.Program; -import com.dat3m.dartagnan.program.Program.SourceLanguage; -import com.dat3m.dartagnan.configuration.Arch; - -import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.CommonTokenStream; +import org.antlr.v4.runtime.DiagnosticErrorListener; +import org.antlr.v4.runtime.ParserRuleContext; class ParserLitmusAArch64 implements ParserInterface { @@ -21,12 +20,10 @@ public Program parse(CharStream charStream) { LitmusAArch64Parser parser = new LitmusAArch64Parser(tokenStream); parser.addErrorListener(new DiagnosticErrorListener(true)); parser.addErrorListener(new ParserErrorListener()); - ProgramBuilder pb = new ProgramBuilder(SourceLanguage.LITMUS); ParserRuleContext parserEntryPoint = parser.main(); - VisitorLitmusAArch64 visitor = new VisitorLitmusAArch64(pb); + VisitorLitmusAArch64 visitor = new VisitorLitmusAArch64(); Program program = (Program) parserEntryPoint.accept(visitor); - program.setArch(Arch.ARM8); return program; } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusC.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusC.java index 302dedb483..dc8d1aa245 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusC.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusC.java @@ -2,12 +2,12 @@ import com.dat3m.dartagnan.parsers.LitmusCLexer; import com.dat3m.dartagnan.parsers.LitmusCParser; -import com.dat3m.dartagnan.parsers.program.utils.ProgramBuilder; import com.dat3m.dartagnan.parsers.program.visitors.VisitorLitmusC; import com.dat3m.dartagnan.program.Program; -import com.dat3m.dartagnan.program.Program.SourceLanguage; - -import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.BailErrorStrategy; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.CommonTokenStream; +import org.antlr.v4.runtime.ParserRuleContext; class ParserLitmusC implements ParserInterface { @@ -18,9 +18,8 @@ public Program parse(CharStream charStream) { LitmusCParser parser = new LitmusCParser(tokenStream); parser.setErrorHandler(new BailErrorStrategy()); - ProgramBuilder pb = new ProgramBuilder(SourceLanguage.LITMUS); ParserRuleContext parserEntryPoint = parser.main(); - VisitorLitmusC visitor = new VisitorLitmusC(pb); + VisitorLitmusC visitor = new VisitorLitmusC(); Program program = (Program) parserEntryPoint.accept(visitor); // C programs can be compiled to different targets, diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusLISA.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusLISA.java index 0e53b03616..a972eed47c 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusLISA.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusLISA.java @@ -1,14 +1,14 @@ package com.dat3m.dartagnan.parsers.program; +import com.dat3m.dartagnan.exception.ParserErrorListener; import com.dat3m.dartagnan.parsers.LitmusLISALexer; import com.dat3m.dartagnan.parsers.LitmusLISAParser; -import com.dat3m.dartagnan.exception.ParserErrorListener; -import com.dat3m.dartagnan.parsers.program.utils.ProgramBuilder; import com.dat3m.dartagnan.parsers.program.visitors.VisitorLitmusLISA; import com.dat3m.dartagnan.program.Program; -import com.dat3m.dartagnan.program.Program.SourceLanguage; - -import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.CommonTokenStream; +import org.antlr.v4.runtime.DiagnosticErrorListener; +import org.antlr.v4.runtime.ParserRuleContext; class ParserLitmusLISA implements ParserInterface { @@ -20,9 +20,8 @@ public Program parse(CharStream charStream) { LitmusLISAParser parser = new LitmusLISAParser(tokenStream); parser.addErrorListener(new DiagnosticErrorListener(true)); parser.addErrorListener(new ParserErrorListener()); - ProgramBuilder pb = new ProgramBuilder(SourceLanguage.LITMUS); ParserRuleContext parserEntryPoint = parser.main(); - VisitorLitmusLISA visitor = new VisitorLitmusLISA(pb); + VisitorLitmusLISA visitor = new VisitorLitmusLISA(); Program program = (Program) parserEntryPoint.accept(visitor); return program; diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusPPC.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusPPC.java index 4415b95e2c..1f185cdca5 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusPPC.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusPPC.java @@ -1,15 +1,14 @@ package com.dat3m.dartagnan.parsers.program; +import com.dat3m.dartagnan.exception.ParserErrorListener; import com.dat3m.dartagnan.parsers.LitmusPPCLexer; import com.dat3m.dartagnan.parsers.LitmusPPCParser; -import com.dat3m.dartagnan.exception.ParserErrorListener; -import com.dat3m.dartagnan.parsers.program.utils.ProgramBuilder; import com.dat3m.dartagnan.parsers.program.visitors.VisitorLitmusPPC; import com.dat3m.dartagnan.program.Program; -import com.dat3m.dartagnan.program.Program.SourceLanguage; -import com.dat3m.dartagnan.configuration.Arch; - -import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.CommonTokenStream; +import org.antlr.v4.runtime.DiagnosticErrorListener; +import org.antlr.v4.runtime.ParserRuleContext; class ParserLitmusPPC implements ParserInterface { @@ -21,12 +20,10 @@ public Program parse(CharStream charStream) { LitmusPPCParser parser = new LitmusPPCParser(tokenStream); parser.addErrorListener(new DiagnosticErrorListener(true)); parser.addErrorListener(new ParserErrorListener()); - ProgramBuilder pb = new ProgramBuilder(SourceLanguage.LITMUS); ParserRuleContext parserEntryPoint = parser.main(); - VisitorLitmusPPC visitor = new VisitorLitmusPPC(pb); + VisitorLitmusPPC visitor = new VisitorLitmusPPC(); Program program = (Program) parserEntryPoint.accept(visitor); - program.setArch(Arch.POWER); return program; } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusPTX.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusPTX.java index 64755322e7..1cf49199f4 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusPTX.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusPTX.java @@ -1,13 +1,10 @@ package com.dat3m.dartagnan.parsers.program; -import com.dat3m.dartagnan.configuration.Arch; import com.dat3m.dartagnan.exception.ParserErrorListener; import com.dat3m.dartagnan.parsers.LitmusPTXLexer; import com.dat3m.dartagnan.parsers.LitmusPTXParser; -import com.dat3m.dartagnan.parsers.program.utils.ProgramBuilder; import com.dat3m.dartagnan.parsers.program.visitors.VisitorLitmusPTX; import com.dat3m.dartagnan.program.Program; -import com.dat3m.dartagnan.program.Program.SourceLanguage; import org.antlr.v4.runtime.CharStream; import org.antlr.v4.runtime.CommonTokenStream; import org.antlr.v4.runtime.DiagnosticErrorListener; @@ -23,12 +20,10 @@ public Program parse(CharStream charStream) { LitmusPTXParser parser = new LitmusPTXParser(tokenStream); parser.addErrorListener(new DiagnosticErrorListener(true)); parser.addErrorListener(new ParserErrorListener()); - ProgramBuilder pb = new ProgramBuilder(SourceLanguage.LITMUS); ParserRuleContext parserEntryPoint = parser.main(); - VisitorLitmusPTX visitor = new VisitorLitmusPTX(pb); + VisitorLitmusPTX visitor = new VisitorLitmusPTX(); Program program = (Program) parserEntryPoint.accept(visitor); - program.setArch(Arch.PTX); return program; } } \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusRISCV.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusRISCV.java index a7db78e6cc..fad2aff376 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusRISCV.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusRISCV.java @@ -1,15 +1,14 @@ package com.dat3m.dartagnan.parsers.program; +import com.dat3m.dartagnan.exception.ParserErrorListener; import com.dat3m.dartagnan.parsers.LitmusRISCVLexer; import com.dat3m.dartagnan.parsers.LitmusRISCVParser; -import com.dat3m.dartagnan.exception.ParserErrorListener; -import com.dat3m.dartagnan.parsers.program.utils.ProgramBuilder; import com.dat3m.dartagnan.parsers.program.visitors.VisitorLitmusRISCV; import com.dat3m.dartagnan.program.Program; -import com.dat3m.dartagnan.program.Program.SourceLanguage; -import com.dat3m.dartagnan.configuration.Arch; - -import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.CommonTokenStream; +import org.antlr.v4.runtime.DiagnosticErrorListener; +import org.antlr.v4.runtime.ParserRuleContext; class ParserLitmusRISCV implements ParserInterface { @@ -21,12 +20,10 @@ public Program parse(CharStream charStream) { LitmusRISCVParser parser = new LitmusRISCVParser(tokenStream); parser.addErrorListener(new DiagnosticErrorListener(true)); parser.addErrorListener(new ParserErrorListener()); - ProgramBuilder pb = new ProgramBuilder(SourceLanguage.LITMUS); ParserRuleContext parserEntryPoint = parser.main(); - VisitorLitmusRISCV visitor = new VisitorLitmusRISCV(pb); + VisitorLitmusRISCV visitor = new VisitorLitmusRISCV(); Program program = (Program) parserEntryPoint.accept(visitor); - program.setArch(Arch.RISCV); return program; } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusX86.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusX86.java index 0934955d96..2a5154b0bd 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusX86.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ParserLitmusX86.java @@ -1,15 +1,14 @@ package com.dat3m.dartagnan.parsers.program; +import com.dat3m.dartagnan.exception.ParserErrorListener; import com.dat3m.dartagnan.parsers.LitmusX86Lexer; import com.dat3m.dartagnan.parsers.LitmusX86Parser; -import com.dat3m.dartagnan.exception.ParserErrorListener; -import com.dat3m.dartagnan.parsers.program.utils.ProgramBuilder; import com.dat3m.dartagnan.parsers.program.visitors.VisitorLitmusX86; import com.dat3m.dartagnan.program.Program; -import com.dat3m.dartagnan.program.Program.SourceLanguage; -import com.dat3m.dartagnan.configuration.Arch; - -import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.CommonTokenStream; +import org.antlr.v4.runtime.DiagnosticErrorListener; +import org.antlr.v4.runtime.ParserRuleContext; class ParserLitmusX86 implements ParserInterface { @@ -21,12 +20,10 @@ public Program parse(CharStream charStream) { LitmusX86Parser parser = new LitmusX86Parser(tokenStream); parser.addErrorListener(new DiagnosticErrorListener(true)); parser.addErrorListener(new ParserErrorListener()); - ProgramBuilder pb = new ProgramBuilder(SourceLanguage.LITMUS); ParserRuleContext parserEntryPoint = parser.main(); - VisitorLitmusX86 visitor = new VisitorLitmusX86(pb); + VisitorLitmusX86 visitor = new VisitorLitmusX86(); Program program = (Program) parserEntryPoint.accept(visitor); - program.setArch(Arch.TSO); return program; } } \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ProgramParser.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ProgramParser.java index cfc6b5171d..8daf46d7d0 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ProgramParser.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ProgramParser.java @@ -2,15 +2,12 @@ import com.dat3m.dartagnan.exception.ParsingException; import com.dat3m.dartagnan.program.Program; - import org.antlr.v4.runtime.CharStream; import org.antlr.v4.runtime.CharStreams; import java.io.*; -import static com.dat3m.dartagnan.parsers.program.utils.Compilation.applyLlvmPasses; -import static com.dat3m.dartagnan.parsers.program.utils.Compilation.compileWithClang; -import static com.dat3m.dartagnan.parsers.program.utils.Compilation.compileWithSmack; +import static com.dat3m.dartagnan.parsers.program.utils.Compilation.*; public class ProgramParser { @@ -47,14 +44,13 @@ private boolean needsClang(File f) { } private boolean needsSmack(File f) { - return needsClang(f) || f.getPath().endsWith(".ll"); + return needsClang(f); } public Program parse(String raw, String path, String format, String cflags) throws Exception { switch (format) { case "c": case "i": - case "ll": File parsedFile = path.isEmpty() ? // This is for the case where the user fully typed the program instead of loading it File.createTempFile("dat3m", ".c") : diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/Function.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/Function.java deleted file mode 100644 index caa3ca977a..0000000000 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/Function.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.dat3m.dartagnan.parsers.program.boogie; - -import java.util.List; -import com.dat3m.dartagnan.parsers.BoogieParser.ExprContext; -import com.dat3m.dartagnan.parsers.BoogieParser.Var_or_typeContext; - -public class Function { - - private final String name; - private final List signature; - private final ExprContext body; - - public Function(String name, List signature, ExprContext body) { - this.name = name; - this.signature = signature; - this.body = body; - } - - public List getSignature() { - return signature; - } - - public ExprContext getBody() { - return body; - } - - public String getName() { - return name; - } -} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/FunctionCall.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/FunctionCall.java deleted file mode 100644 index c0ee565c47..0000000000 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/FunctionCall.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.dat3m.dartagnan.parsers.program.boogie; - -import java.util.List; -import java.util.stream.IntStream; - -import com.dat3m.dartagnan.parsers.BoogieParser.Var_exprContext; -import com.dat3m.dartagnan.parsers.BoogieParser.Var_or_typeContext; -import com.dat3m.dartagnan.exception.ParsingException; - -public class FunctionCall { - - private final Function function; - private final FunctionCall parent; - private final List call; - - public FunctionCall(Function function, List call, FunctionCall caller) { - if(!(function.getSignature().size() == call.size())) { - throw new ParsingException("The number of parameters in the function call does not match " + function.getName() + "'s signature"); - } - this.function = function; - this.call = call; - this.parent = caller; - } - - public FunctionCall getParent() { - return parent; - } - - public Function getFunction() { - return function; - } - - public List getCallParam() { - return call; - } - - public Object replaceVarsByExprs(Var_exprContext ctx) { - List signature = function.getSignature(); - FunctionCall caller = getParent(); - int pos = 0; - boolean found = false; - for(int index : IntStream.range(0, signature.size()).toArray()) { - if(signature.get(index).Ident().getText().equals(ctx.getText())) { - pos = index; - found = true; - break; - } - } - if(!found) { - throw new ParsingException("Input " + ctx.getText() + " is not part of " + function.getName() + " signature"); - } - Object exp = call.get(pos); - while(caller != null) { - exp = caller.getCallParam().get(pos); - caller = caller.getParent(); - } - return exp; - } -} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/LlvmFunctions.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/LlvmFunctions.java index 75b1d71fd3..94a4af14da 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/LlvmFunctions.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/LlvmFunctions.java @@ -1,8 +1,10 @@ package com.dat3m.dartagnan.parsers.program.boogie; -import com.dat3m.dartagnan.expression.*; -import com.dat3m.dartagnan.expression.op.IOpBin; import com.dat3m.dartagnan.exception.ParsingException; +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.ExpressionFactory; +import com.dat3m.dartagnan.expression.IConst; +import com.dat3m.dartagnan.expression.op.IOpBin; import java.util.Arrays; import java.util.List; @@ -28,7 +30,7 @@ public class LlvmFunctions { "$and.", "$nand."); - public static Object llvmFunction(String name, List callParams, ExpressionFactory factory) { + public static Object llvmFunction(String name, List callParams, ExpressionFactory factory) { IOpBin op = null; if(name.startsWith("$add.")) { op = PLUS; @@ -59,7 +61,7 @@ public static Object llvmFunction(String name, List callParams, Expressi if (c.getValueAsInt() == 0) { return callParams.get(0); } else if (c.getValueAsInt() == 1) { - return factory.makeNot((Expression) callParams.get(0)); + return factory.makeNot(callParams.get(0)); } } op = XOR; @@ -71,6 +73,6 @@ public static Object llvmFunction(String name, List callParams, Expressi if(op == null) { throw new ParsingException("Function " + name + " has no implementation"); } - return factory.makeBinary((IExpr)callParams.get(0), op, (IExpr)callParams.get(1)); + return factory.makeBinary(callParams.get(0), op, callParams.get(1)); } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/LlvmPredicates.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/LlvmPredicates.java index 4ce6f6f3d1..38d1fdea20 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/LlvmPredicates.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/LlvmPredicates.java @@ -1,9 +1,9 @@ package com.dat3m.dartagnan.parsers.program.boogie; +import com.dat3m.dartagnan.exception.ParsingException; import com.dat3m.dartagnan.expression.Expression; import com.dat3m.dartagnan.expression.ExpressionFactory; import com.dat3m.dartagnan.expression.op.COpBin; -import com.dat3m.dartagnan.exception.ParsingException; import java.util.Arrays; import java.util.List; @@ -58,7 +58,7 @@ public class LlvmPredicates { "$ne.bv8.bool", "$ne.bv16.bool", "$ne.bv32.bool", "$ne.bv64.bool" ); - public static Object llvmPredicate(String name, List callParams, ExpressionFactory factory) { + public static Object llvmPredicate(String name, List callParams, ExpressionFactory factory) { COpBin op = null; if(name.startsWith("$sle.")) { op = LTE; @@ -84,6 +84,6 @@ public static Object llvmPredicate(String name, List callParams, Express if(op == null) { throw new ParsingException("Function " + name + " has no implementation"); } - return factory.makeBinary((Expression)callParams.get(0), op, (Expression)callParams.get(1)); + return factory.makeBinary(callParams.get(0), op, callParams.get(1)); } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/LlvmUnary.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/LlvmUnary.java index 26b6a9a205..9e014e16ee 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/LlvmUnary.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/LlvmUnary.java @@ -33,7 +33,7 @@ public class LlvmUnary { UNSIGNED_EXTEND ); - public static Object llvmUnary(String name, List callParams, ExpressionFactory expressions) { + public static Object llvmUnary(String name, List callParams, ExpressionFactory expressions) { try { for (String prefix : LLVMUNARY) { if (name.startsWith(prefix)) { @@ -47,9 +47,9 @@ public static Object llvmUnary(String name, List callParams, ExpressionF throw new ParsingException(String.format("Function %s is not implemented.", name)); } - private static Object llvmUnary(String prefix, String suffix, List callParams, ExpressionFactory expressions) { + private static Object llvmUnary(String prefix, String suffix, List callParams, ExpressionFactory expressions) { TypeFactory types = TypeFactory.getInstance(); - Expression inner = (Expression) callParams.get(0); + Expression inner = callParams.get(0); if (!(inner.getType() instanceof IntegerType integerType)) { throw new ParsingException(String.format("%s is not an integer expression.", inner)); } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/PthreadPool.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/PthreadPool.java deleted file mode 100644 index d72e60eb72..0000000000 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/PthreadPool.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.dat3m.dartagnan.parsers.program.boogie; - -import com.dat3m.dartagnan.expression.IExpr; -import com.dat3m.dartagnan.program.event.core.Event; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class PthreadPool { - - private final List threads = new ArrayList<>(); - private final Map> mapPtrName = new HashMap<>(); - private final Map> mapPtrCreator = new HashMap<>(); - private final Map mapIntPtr = new HashMap<>(); - // This is needed during the compilation pass to match a Start - // with its corresponding Create. Both events access the same address, - // i.e. the communication channel (cc), which we only use for modeling - // purposes. During the compilation of Start the Create was already - // compiled and thus we use an annotation event which remains after the compilation." - private final Map mapCcMatcher = new HashMap<>(); - - public void add(IExpr ptr, String name, int creator) { - threads.add(ptr); - mapPtrName.computeIfAbsent(ptr, key -> new ArrayList<>()).add(name); - mapPtrCreator.computeIfAbsent(ptr, key -> new ArrayList<>()).add(creator); - } - - public String getNameFromPtr(IExpr ptr) { - return mapPtrName.get(ptr).remove(0); - } - - public Integer getCreatorFromPtr(IExpr ptr) { - return mapPtrCreator.get(ptr).get(0); - } - - public void addIntPtr(Integer i, IExpr ptr) { - mapIntPtr.put(i, ptr); - } - - public IExpr getPtrFromInt(Integer i) { - return mapIntPtr.get(i); - } - - public boolean canCreate() { - return !threads.isEmpty(); - } - - public IExpr next() { - return threads.remove(0); - } - - public void addMatcher(IExpr cc, Event e) { - mapCcMatcher.put(cc, e); - } - - public Event getMatcher(IExpr cc) { - return mapCcMatcher.get(cc); - } - -} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/Scope.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/Scope.java deleted file mode 100644 index 94d12ef20e..0000000000 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/Scope.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.dat3m.dartagnan.parsers.program.boogie; - -public class Scope { - - private final int id; - private final Scope parent; - - public Scope(int id, Scope parent) { - this.id = id; - this.parent = parent; - } - - public int getID() { - return id; - } - - public Scope getParent() { - return parent; - } -} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/SmackPredicates.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/SmackPredicates.java index ba96ec2972..9bf361f7ff 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/SmackPredicates.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/boogie/SmackPredicates.java @@ -1,116 +1,46 @@ package com.dat3m.dartagnan.parsers.program.boogie; +import com.dat3m.dartagnan.expression.Expression; import com.dat3m.dartagnan.expression.ExpressionFactory; -import com.dat3m.dartagnan.expression.IExpr; -import com.dat3m.dartagnan.expression.IValue; import com.dat3m.dartagnan.exception.ParsingException; +import com.dat3m.dartagnan.expression.type.IntegerType; +import com.dat3m.dartagnan.expression.type.TypeFactory; import java.util.Arrays; import java.util.List; public class SmackPredicates { - public static List SMACKPREDICATES = Arrays.asList( - "$tou.i1", "$tou.i5", "$tou.i6", "$tou.i8", "$tou.i16", "$tou.i24", "$tou.i32", "$tou.i33", "$tou.i40", "$tou.i48", - "$tou.i56", "$tou.i64", "$tou.i80", "$tou.i88", "$tou.i96", "$tou.i128", "$tou.i160", "$tou.i256", - "$tos.i1", "$tos.i5", "$tos.i6", "$tos.i8", "$tos.i16", "$tos.i24", "$tos.i32", "$tos.i33", "$tos.i40", "$tos.i48", - "$tos.i56", "$tos.i64", "$tos.i80", "$tos.i88", "$tos.i96", "$tos.i128", "$tos.i160", "$tos.i256" - ); - - public static Object smackPredicate(String name, List callParams, ExpressionFactory expressions) { - String min = "0"; - String max = "1"; - IExpr var = (IExpr)callParams.get(0); - if(name.startsWith("$tou.")) { - switch(name.substring(name.lastIndexOf(".")+1)) { - case "i1": - max = "1"; break; - case "i5": - max = "32"; break; - case "i6": - max = "64"; break; - case "i8": - max = "256"; break; - case "i16": - max = "65536"; break; - case "i24": - max = "16777216"; break; - case "i32": - max = "4294967296"; break; - case "i33": - max = "8589934592"; break; - case "i40": - max = "1099511627776"; break; - case "i48": - max = "281474976710656"; break; - case "i56": - max = "72057594037927936"; break; - case "i64": - max = "18446744073709551616"; break; - case "i80": - max = "1208925819614629174706176"; break; - case "i88": - max = "309485009821345068724781056"; break; - case "i96": - max = "79228162514264337593543950336"; break; - case "i128": - max = "340282366920938463463374607431768211456"; break; - case "i160": - max = "1461501637330902918203684832716283019655932542976"; break; - case "i256": - max = "115792089237316195423570985008687907853269984665640564039457584007913129639936"; break; - default: - throw new ParsingException("Function " + name + " has no implementation"); - } - } - if(name.startsWith("$tos.")) { - switch(name.substring(name.lastIndexOf(".")+1)) { - case "i1": - min = "-1"; max = "1"; break; - case "i5": - min = "-16"; max = "16"; break; - case "i6": - min = "-32"; max = "32"; break; - case "i8": - min = "-128"; max = "128"; break; - case "i16": - min = "-32768"; max = "32768"; break; - case "i24": - min = "-8388608"; max = "8388608"; break; - case "i32": - min = "-2147483648"; max = "2147483648"; break; - case "i33": - min = "-4294967296"; max = "4294967296"; break; - case "i40": - min = "-549755813888"; max = "549755813888"; break; - case "i48": - min = "-140737488355328"; max = "140737488355328"; break; - case "i56": - min = "-36028797018963968"; max = "36028797018963968"; break; - case "i64": - min = "-9223372036854775808"; max = "9223372036854775808"; break; - case "i80": - min = "-604462909807314587353088"; max = "604462909807314587353088"; break; - case "i88": - min = "-154742504910672534362390528"; max = "154742504910672534362390528"; break; - case "i96": - min = "-39614081257132168796771975168"; max = "39614081257132168796771975168"; break; - case "i128": - min = "-170141183460469231731687303715884105728"; max = "170141183460469231731687303715884105728"; break; - case "i160": - min = "-730750818665451459101842416358141509827966271488"; max = "730750818665451459101842416358141509827966271488"; break; - case "i256": - min = "-57896044618658097711785492504343953926634992332820282019728792003956564819968"; max = "57896044618658097711785492504343953926634992332820282019728792003956564819968"; break; - default: - throw new ParsingException("Function " + name + " has no implementation"); - } - } - IValue maxValue = expressions.parseValue(max, var.getType()); - return expressions.makeConditional( - expressions.makeAnd( - expressions.makeGTE(var, expressions.parseValue(min, var.getType()), true), - expressions.makeLTE(var, maxValue, true)), - var, - expressions.makeMOD(var, maxValue)); - } + private static final String TOS = "$tos.i"; + private static final String TOU = "$tou.i"; + + public static List SMACKPREDICATES = Arrays.asList(TOS, TOU); + + public static Expression smackPredicate(String name, List callParams, ExpressionFactory expressions) { + try { + for (String prefix : SMACKPREDICATES) { + if (name.startsWith(prefix)) { + String suffix = name.substring(prefix.length()); + return smackPredicates(prefix, suffix, callParams, expressions); + } + } + } catch (IllegalArgumentException x) { + throw new ParsingException(String.format("Function %s is not implemented: %s.", name, x.getMessage())); + } + throw new ParsingException(String.format("Function %s is not implemented.", name)); + } + + private static Expression smackPredicates(String prefix, String suffix, List callParams, ExpressionFactory expressions) { + boolean signed = prefix.equals(TOS); + TypeFactory types = TypeFactory.getInstance(); + IntegerType resultType = types.getIntegerType(); + int bitWidth = Integer.parseUnsignedInt(suffix); + IntegerType targetType = types.getIntegerType(bitWidth); + if (targetType.isMathematical()) { + throw new ParsingException(String.format("Function %s%s is not implemented.", prefix, suffix)); + } + Expression operand = callParams.get(0); + Expression truncated = expressions.makeIntegerCast(operand, targetType, signed); + return expressions.makeIntegerCast(truncated, resultType, signed); + } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/utils/ProgramBuilder.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/utils/ProgramBuilder.java index 86c1e29d3a..3031572476 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/utils/ProgramBuilder.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/utils/ProgramBuilder.java @@ -1,16 +1,19 @@ package com.dat3m.dartagnan.parsers.program.utils; -import com.dat3m.dartagnan.program.ScopedThread.PTXThread; -import com.dat3m.dartagnan.program.memory.VirtualMemoryObject; -import com.dat3m.dartagnan.program.specification.AbstractAssert; +import com.dat3m.dartagnan.configuration.Arch; import com.dat3m.dartagnan.exception.MalformedProgramException; +import com.dat3m.dartagnan.expression.ExpressionFactory; import com.dat3m.dartagnan.expression.IConst; import com.dat3m.dartagnan.expression.INonDet; +import com.dat3m.dartagnan.expression.type.FunctionType; import com.dat3m.dartagnan.expression.type.IntegerType; +import com.dat3m.dartagnan.expression.type.Type; import com.dat3m.dartagnan.expression.type.TypeFactory; +import com.dat3m.dartagnan.program.Function; import com.dat3m.dartagnan.program.Program; import com.dat3m.dartagnan.program.Program.SourceLanguage; import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.ScopedThread.PTXThread; import com.dat3m.dartagnan.program.Thread; import com.dat3m.dartagnan.program.event.EventFactory; import com.dat3m.dartagnan.program.event.Tag; @@ -21,91 +24,169 @@ import com.dat3m.dartagnan.program.event.metadata.OriginalId; import com.dat3m.dartagnan.program.memory.Memory; import com.dat3m.dartagnan.program.memory.MemoryObject; +import com.dat3m.dartagnan.program.memory.VirtualMemoryObject; import com.dat3m.dartagnan.program.processing.EventIdReassignment; +import com.dat3m.dartagnan.program.specification.AbstractAssert; +import com.google.common.base.Verify; import java.util.*; import static com.dat3m.dartagnan.program.Program.SourceLanguage.LITMUS; -import static com.google.common.base.Preconditions.checkArgument; +import static com.google.common.base.Preconditions.checkState; public class ProgramBuilder { private static final TypeFactory types = TypeFactory.getInstance(); - private final Map threads = new HashMap<>(); - private final List constants = new ArrayList<>(); - private final Map locations = new HashMap<>(); + private static final ExpressionFactory expressions = ExpressionFactory.getInstance(); + private static final FunctionType DEFAULT_THREAD_TYPE = + types.getFunctionType(types.getVoidType(), List.of()); - private final Memory memory = new Memory(); + private final Map id2FunctionsMap = new HashMap<>(); + private final Map> fid2LabelsMap = new HashMap<>(); + private final Map locations = new HashMap<>(); - private final Map labels = new HashMap<>(); + private final Program program; - private AbstractAssert ass; - private AbstractAssert assFilter; + // ---------------------------------------------------------------------------------------------------------------- + // Construction + private ProgramBuilder(SourceLanguage format) { + this.program = new Program(new Memory(), format); + } - private final SourceLanguage format; + public static ProgramBuilder forArch(SourceLanguage format, Arch arch) { + final ProgramBuilder programBuilder = forLanguage(format); + programBuilder.program.setArch(arch); + return programBuilder; + } - public ProgramBuilder(SourceLanguage format) { - this.format = format; + public static ProgramBuilder forLanguage(SourceLanguage format) { + return new ProgramBuilder(format); } - - public Program build(){ - Program program = new Program(memory, format); - for(Thread thread : threads.values()){ - addChild(thread.getId(), getOrCreateLabel("END_OF_T" + thread.getId())); - validateLabels(thread); - program.add(thread); - thread.setProgram(program); + + public Program build() { + for (Thread thread : program.getThreads()) { + final Label endOfThread = getEndOfThreadLabel(thread.getId()); + // The terminator should not get inserted somewhere beforehand. + Verify.verify(endOfThread.getFunction() == null); + addChild(thread.getId(), endOfThread); } - constants.forEach(program::addConstant); - program.setSpecification(ass); - program.setFilterSpecification(assFilter); + id2FunctionsMap.values().forEach(this::validateFunction); + EventIdReassignment.newInstance().run(program); program.getEvents().forEach(e -> e.setMetadata(new OriginalId(e.getGlobalId()))); return program; } - public void initThread(String name, int id){ - if(!threads.containsKey(id)){ - Skip threadEntry = EventFactory.newSkip(); - threads.putIfAbsent(id, new Thread(name, id, threadEntry)); + // ---------------------------------------------------------------------------------------------------------------- + // Misc + + public TypeFactory getTypeFactory() { + return types; + } + + public ExpressionFactory getExpressionFactory() { + return expressions; + } + + public void setAssert(AbstractAssert ass) { + program.setSpecification(ass); + } + + public void setAssertFilter(AbstractAssert ass) { + program.setFilterSpecification(ass); + } + + // ---------------------------------------------------------------------------------------------------------------- + // Threads and Functions + + public Thread newThread(String name, int tid) { + if(id2FunctionsMap.containsKey(tid)) { + throw new MalformedProgramException("Function or thread with id " + tid + " already exists."); + } + // TODO: We use a default thread type with no parameters and no return type for now + // because the function type is still ignored for threads. In the future, we will assign + // proper types. + final Thread thread = new Thread(name, DEFAULT_THREAD_TYPE, List.of(), tid, EventFactory.newSkip()); + id2FunctionsMap.put(tid, thread); + program.addThread(thread); + return thread; + } + + public Function newFunction(String name, int fid, FunctionType type, List parameterNames) { + if(id2FunctionsMap.containsKey(fid)) { + throw new MalformedProgramException("Function or thread with id " + fid + " already exists."); } + final Function func = new Function(name, type, parameterNames, fid, null); + id2FunctionsMap.put(fid, func); + program.addFunction(func); + return func; } - public void initThread(int id){ - initThread(String.valueOf(id), id); + public Thread newThread(int tid) { + final String threadName = (program.getFormat() == LITMUS ? "P" : "__thread_") + tid; + return newThread(threadName, tid); } - public Event addChild(int thread, Event child) { - if(!threads.containsKey(thread)){ - throw new MalformedProgramException("Thread " + thread + " is not initialised"); + public Thread getOrNewThread(int tid) { + if (!id2FunctionsMap.containsKey(tid)) { + return newThread(tid); } - if (child.getThread() != null) { - //FIXME: This is a bad error message, but our tests require this for now. - final String error = String.format( - "Trying to reinsert event %s from thread %s into thread %s", - child, child.getThread().getId(), thread); - throw new MalformedProgramException(error); + return (Thread) id2FunctionsMap.get(tid); + } + + public boolean functionExists(int fid) { + return id2FunctionsMap.containsKey(fid); + } + + public Function getFunctionOrError(int fid) { + final Function function = id2FunctionsMap.get(fid); + if (function != null) { + return function; } - threads.get(thread).append(child); - // Every event in litmus tests is non-optimisable - if(format.equals(LITMUS)) { + throw new MalformedProgramException("Function or Thread with id " + fid + " does not exist"); + } + + public Event addChild(int fid, Event child) { + if(program.getFormat().equals(LITMUS)) { + // Every event in litmus tests is non-optimisable child.addTags(Tag.NOOPT); } + getFunctionOrError(fid).append(child); return child; } - public void setAssert(AbstractAssert ass){ - this.ass = ass; + // ---------------------------------------------------------------------------------------------------------------- + // Memory & Constants + + public MemoryObject getMemoryObject(String name) { + return locations.get(name); + } + + public MemoryObject getOrNewMemoryObject(String name) { + final MemoryObject mem = locations.computeIfAbsent(name, k -> program.getMemory().allocate(1, true)); + mem.setCVar(name); + return mem; } - public void setAssertFilter(AbstractAssert ass){ - this.assFilter = ass; + public MemoryObject newMemoryObject(String name, int size) { + checkState(!locations.containsKey(name), + "Illegal allocation. Memory object %s is already defined", name); + final MemoryObject mem = program.getMemory().allocate(size, true); + mem.setCVar(name); + locations.put(name, mem); + return mem; + } + + public INonDet newConstant(IntegerType type, boolean signed) { + var constant = new INonDet(program.getConstants().size(), type, signed); + program.addConstant(constant); + return constant; } // ---------------------------------------------------------------------------------------------------------------- // Declarators - public void initLocEqLocPtr(String leftName, String rightName){ - initLocEqConst(leftName, getOrNewObject(rightName)); + public void initLocEqLocPtr(String leftName, String rightName) { + initLocEqConst(leftName, getOrNewMemoryObject(rightName)); } public void initLocEqLocVal(String leftName, String rightName){ @@ -113,18 +194,18 @@ public void initLocEqLocVal(String leftName, String rightName){ } public void initLocEqConst(String locName, IConst iValue){ - getOrNewObject(locName).setInitialValue(0,iValue); + getOrNewMemoryObject(locName).setInitialValue(0,iValue); } - public void initRegEqLocPtr(int regThread, String regName, String locName, IntegerType type) { - MemoryObject object = getOrNewObject(locName); + public void initRegEqLocPtr(int regThread, String regName, String locName, Type type) { + MemoryObject object = getOrNewMemoryObject(locName); Register reg = getOrNewRegister(regThread, regName, type); addChild(regThread, EventFactory.newLocal(reg, object)); } - public void initRegEqLocVal(int regThread, String regName, String locName, IntegerType type) { + public void initRegEqLocVal(int regThread, String regName, String locName, Type type) { Register reg = getOrNewRegister(regThread, regName, type); - addChild(regThread,EventFactory.newLocal(reg,getInitialValue(locName))); + addChild(regThread, EventFactory.newLocal(reg,getInitialValue(locName))); } public void initRegEqConst(int regThread, String regName, IConst iValue){ @@ -132,101 +213,68 @@ public void initRegEqConst(int regThread, String regName, IConst iValue){ } private IConst getInitialValue(String name) { - return getOrNewObject(name).getInitialValue(0); + return getOrNewMemoryObject(name).getInitialValue(0); } // ---------------------------------------------------------------------------------------------------------------- // Utility - public INonDet newConstant(IntegerType type, boolean signed) { - var constant = new INonDet(constants.size(), type, signed); - constants.add(constant); - return constant; - } - - public MemoryObject getObject(String name) { - return locations.get(name); + public Register getRegister(int fid, String name){ + return getFunctionOrError(fid).getRegister(name); } - public MemoryObject getOrNewObject(String name) { - MemoryObject object = locations.computeIfAbsent(name, k -> memory.allocate(1, true)); - object.setCVar(name); - return object; + public Register getOrNewRegister(int fid, String name) { + return getOrNewRegister(fid, name, types.getArchType()); } - public MemoryObject newObject(String name, int size) { - checkArgument(!locations.containsKey(name), "Illegal malloc. Array " + name + " is already defined"); - MemoryObject result = memory.allocate(size, true); - locations.put(name,result); - return result; + public Register getOrNewRegister(int fid, String name, Type type) { + Function func = getFunctionOrError(fid); + Register register = name == null ? func.newRegister(type) : func.getRegister(name); + return register != null ? register : func.newRegister(name, type); } - public Register getRegister(int thread, String name){ - if(threads.containsKey(thread)){ - return threads.get(thread).getRegister(name); + public Register getOrErrorRegister(int fid, String name) { + final Register register = getFunctionOrError(fid).getRegister(name); + if (register != null) { + return register; } - return null; - } - - public Register getOrNewRegister(int threadId, String name) { - return getOrNewRegister(threadId, name, types.getArchType()); + throw new IllegalStateException("Register " + fid + ":" + name + " is not initialised"); } - public Register getOrNewRegister(int threadId, String name, IntegerType type) { - initThread(threadId); - Thread thread = threads.get(threadId); - if(name == null) { - return thread.newRegister(type); - } - Register register = thread.getRegister(name); - if(register == null){ - return thread.newRegister(name, type); - } - return register; + public Label getOrCreateLabel(int funcId, String name){ + return fid2LabelsMap + .computeIfAbsent(funcId, k -> new HashMap<>()) + .computeIfAbsent(name, EventFactory::newLabel); } - public Register getOrErrorRegister(int thread, String name){ - if(threads.containsKey(thread)){ - Register register = threads.get(thread).getRegister(name); - if(register != null){ - return register; - } - } - throw new IllegalStateException("Register " + thread + ":" + name + " is not initialised"); - } - - public boolean hasLabel(String name) { - return labels.containsKey(name); - } - - public Label getOrCreateLabel(String name){ - labels.putIfAbsent(name, EventFactory.newLabel(name)); - return labels.get(name); + public Label getEndOfThreadLabel(int tid) { + return getOrCreateLabel(tid, "END_OF_T" + tid); } // ---------------------------------------------------------------------------------------------------------------- // Private utility - private void validateLabels(Thread thread) throws MalformedProgramException { - Map threadLabels = new HashMap<>(); - Set referencedLabels = new HashSet<>(); - Event e = thread.getEntry(); - while(e != null){ - if(e instanceof CondJump jump){ - referencedLabels.add(jump.getLabel().getName()); - } else if(e instanceof Label lb){ - Label label = labels.remove(lb.getName()); - if(label == null){ - throw new MalformedProgramException("Duplicated label " + lb.getName()); + private void validateFunction(Function function) throws MalformedProgramException { + Set labelNames = new HashSet<>(); + for (Event ev : function.getEvents()) { + if (ev.getFunction() != function) { + final String error = String.format("Event %s belongs to function %s but was found in function %s", + ev, ev.getFunction(), function); + throw new MalformedProgramException(error); + } + if (ev instanceof CondJump jump) { + if (jump.getFunction() != jump.getLabel().getFunction()) { + final String error = String.format("Jump %s targets label %s of a different function", + jump, jump.getLabel()); + throw new MalformedProgramException(error); } - threadLabels.put(label.getName(), label); } - e = e.getSuccessor(); - } - - for(String labelName : referencedLabels){ - if(!threadLabels.containsKey(labelName)){ - throw new MalformedProgramException("Illegal jump to label " + labelName); + if (ev instanceof Label label) { + if (!labelNames.add(label.getName())) { + final String error = String.format("Multiple labels with name %s in function %s", + label.getName(), function); + throw new MalformedProgramException(error); + } } } } @@ -234,53 +282,56 @@ private void validateLabels(Thread thread) throws MalformedProgramException { // ---------------------------------------------------------------------------------------------------------------- // PTX - public void initScopedThread(String name, int id, int ctaID, int gpuID) { - if(!threads.containsKey(id)){ - Skip threadEntry = EventFactory.newSkip(); - threads.putIfAbsent(id, new PTXThread(name, id, threadEntry, gpuID, ctaID)); + public void newScopedThread(String name, int id, int ctaID, int gpuID) { + if(id2FunctionsMap.containsKey(id)) { + throw new MalformedProgramException("Function or thread with id " + id + " already exists."); } + Skip threadEntry = EventFactory.newSkip(); + PTXThread ptxThread = new PTXThread(name, DEFAULT_THREAD_TYPE, List.of(), id, threadEntry, gpuID, ctaID); + id2FunctionsMap.put(id, ptxThread); + program.addThread(ptxThread); } - public void initScopedThread(int id, int ctaID, int gpuID) { - initScopedThread(String.valueOf(id), id, ctaID, gpuID); + public void newScopedThread(int id, int ctaID, int gpuID) { + newScopedThread(String.valueOf(id), id, ctaID, gpuID); } public void initVirLocEqCon(String leftName, IConst iValue){ MemoryObject object = locations.computeIfAbsent( - leftName, k->memory.allocateVirtual(1, true, true, null)); + leftName, k->program.getMemory().allocateVirtual(1, true, true, null)); object.setCVar(leftName); object.setInitialValue(0, iValue); } public void initVirLocEqLoc(String leftName, String rightName){ - VirtualMemoryObject rightLocation = (VirtualMemoryObject) getObject(rightName); + VirtualMemoryObject rightLocation = (VirtualMemoryObject) getMemoryObject(rightName); if (rightLocation == null) { throw new MalformedProgramException("Alias to non-exist location: " + rightName); } MemoryObject object = locations.computeIfAbsent(leftName, - k->memory.allocateVirtual(1, true, true, null)); + k->program.getMemory().allocateVirtual(1, true, true, null)); object.setCVar(leftName); object.setInitialValue(0,rightLocation.getInitialValue(0)); } public void initVirLocEqLocAliasGen(String leftName, String rightName){ - VirtualMemoryObject rightLocation = (VirtualMemoryObject) getObject(rightName); + VirtualMemoryObject rightLocation = (VirtualMemoryObject) getMemoryObject(rightName); if (rightLocation == null) { throw new MalformedProgramException("Alias to non-exist location: " + rightName); } MemoryObject object = locations.computeIfAbsent(leftName, - k->memory.allocateVirtual(1, true, true, rightLocation)); + k->program.getMemory().allocateVirtual(1, true, true, rightLocation)); object.setCVar(leftName); object.setInitialValue(0,rightLocation.getInitialValue(0)); } public void initVirLocEqLocAliasProxy(String leftName, String rightName){ - VirtualMemoryObject rightLocation = (VirtualMemoryObject) getObject(rightName); + VirtualMemoryObject rightLocation = (VirtualMemoryObject) getMemoryObject(rightName); if (rightLocation == null) { throw new MalformedProgramException("Alias to non-exist location: " + rightName); } MemoryObject object = locations.computeIfAbsent( - leftName, k->memory.allocateVirtual(1, true, false, rightLocation)); + leftName, k->program.getMemory().allocateVirtual(1, true, false, rightLocation)); object.setCVar(leftName); object.setInitialValue(0,rightLocation.getInitialValue(0)); } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusAArch64.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusAArch64.java index 1923cc0809..9395147ecf 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusAArch64.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusAArch64.java @@ -1,13 +1,17 @@ package com.dat3m.dartagnan.parsers.program.visitors; +import com.dat3m.dartagnan.configuration.Arch; import com.dat3m.dartagnan.exception.ParsingException; -import com.dat3m.dartagnan.expression.*; +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.ExpressionFactory; +import com.dat3m.dartagnan.expression.IValue; import com.dat3m.dartagnan.expression.type.IntegerType; import com.dat3m.dartagnan.expression.type.TypeFactory; import com.dat3m.dartagnan.parsers.LitmusAArch64BaseVisitor; import com.dat3m.dartagnan.parsers.LitmusAArch64Parser; import com.dat3m.dartagnan.parsers.program.utils.AssertionHelper; import com.dat3m.dartagnan.parsers.program.utils.ProgramBuilder; +import com.dat3m.dartagnan.program.Program; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.EventFactory; import com.dat3m.dartagnan.program.event.arch.StoreExclusive; @@ -21,25 +25,24 @@ public class VisitorLitmusAArch64 extends LitmusAArch64BaseVisitor { private static class CmpInstruction { - private final IExpr left; - private final IExpr right; + private final Expression left; + private final Expression right; - public CmpInstruction(IExpr left, IExpr right) { + public CmpInstruction(Expression left, Expression right) { this.left = left; this.right = right; } } - private final TypeFactory types = TypeFactory.getInstance(); + private final ProgramBuilder programBuilder = ProgramBuilder.forArch(Program.SourceLanguage.LITMUS, Arch.ARM8); + private final TypeFactory types = programBuilder.getTypeFactory(); private final IntegerType archType = types.getArchType(); - private final ExpressionFactory expressions = ExpressionFactory.getInstance(); - private final ProgramBuilder programBuilder; + private final ExpressionFactory expressions = programBuilder.getExpressionFactory(); private int mainThread; private int threadCount = 0; private final Map lastCmpInstructionPerThread = new HashMap<>(); - public VisitorLitmusAArch64(ProgramBuilder pb){ - this.programBuilder = pb; + public VisitorLitmusAArch64() { } @@ -101,7 +104,7 @@ public Object visitVariableDeclaratorLocationLocation(LitmusAArch64Parser.Variab @Override public Object visitThreadDeclaratorList(LitmusAArch64Parser.ThreadDeclaratorListContext ctx) { for(LitmusAArch64Parser.ThreadIdContext threadCtx : ctx.threadId()){ - programBuilder.initThread(threadCtx.id); + programBuilder.newThread(threadCtx.id); threadCount++; } return null; @@ -122,14 +125,14 @@ public Object visitInstructionRow(LitmusAArch64Parser.InstructionRowContext ctx) @Override public Object visitMov(LitmusAArch64Parser.MovContext ctx) { Register register = programBuilder.getOrNewRegister(mainThread, ctx.rD, archType); - IExpr expr = ctx.expr32() != null ? (IExpr)ctx.expr32().accept(this) : (IExpr)ctx.expr64().accept(this); + Expression expr = ctx.expr32() != null ? (Expression)ctx.expr32().accept(this) : (Expression)ctx.expr64().accept(this); return programBuilder.addChild(mainThread, EventFactory.newLocal(register, expr)); } @Override public Object visitCmp(LitmusAArch64Parser.CmpContext ctx) { Register register = programBuilder.getOrNewRegister(mainThread, ctx.rD, archType); - IExpr expr = ctx.expr32() != null ? (IExpr)ctx.expr32().accept(this) : (IExpr)ctx.expr64().accept(this); + Expression expr = ctx.expr32() != null ? (Expression)ctx.expr32().accept(this) : (Expression)ctx.expr64().accept(this); lastCmpInstructionPerThread.put(mainThread, new CmpInstruction(register, expr)); return null; } @@ -138,7 +141,7 @@ public Object visitCmp(LitmusAArch64Parser.CmpContext ctx) { public Object visitArithmetic(LitmusAArch64Parser.ArithmeticContext ctx) { Register rD = programBuilder.getOrNewRegister(mainThread, ctx.rD, archType); Register r1 = programBuilder.getOrErrorRegister(mainThread, ctx.rV); - IExpr expr = ctx.expr32() != null ? (IExpr)ctx.expr32().accept(this) : (IExpr)ctx.expr64().accept(this); + Expression expr = ctx.expr32() != null ? (Expression)ctx.expr32().accept(this) : (Expression)ctx.expr64().accept(this); return programBuilder.addChild(mainThread, EventFactory.newLocal(rD, expressions.makeBinary(r1, ctx.arithmeticInstruction().op, expr))); } @@ -187,7 +190,7 @@ public Object visitStoreExclusive(LitmusAArch64Parser.StoreExclusiveContext ctx) @Override public Object visitBranch(LitmusAArch64Parser.BranchContext ctx) { - Label label = programBuilder.getOrCreateLabel(ctx.label().getText()); + Label label = programBuilder.getOrCreateLabel(mainThread, ctx.label().getText()); if(ctx.branchCondition() == null){ return programBuilder.addChild(mainThread, EventFactory.newGoto(label)); } @@ -202,15 +205,18 @@ public Object visitBranch(LitmusAArch64Parser.BranchContext ctx) { @Override public Object visitBranchRegister(LitmusAArch64Parser.BranchRegisterContext ctx) { Register register = programBuilder.getOrErrorRegister(mainThread, ctx.rV); - IValue zero = expressions.makeZero(register.getType()); - BExpr expr = expressions.makeBinary(register, ctx.branchRegInstruction().op, zero); - Label label = programBuilder.getOrCreateLabel(ctx.label().getText()); + if (!(register.getType() instanceof IntegerType integerType)) { + throw new ParsingException("Comparing non-integer register."); + } + IValue zero = expressions.makeZero(integerType); + Expression expr = expressions.makeBinary(register, ctx.branchRegInstruction().op, zero); + Label label = programBuilder.getOrCreateLabel(mainThread, ctx.label().getText()); return programBuilder.addChild(mainThread, EventFactory.newJump(expr, label)); } @Override public Object visitBranchLabel(LitmusAArch64Parser.BranchLabelContext ctx) { - return programBuilder.addChild(mainThread, programBuilder.getOrCreateLabel(ctx.label().getText())); + return programBuilder.addChild(mainThread, programBuilder.getOrCreateLabel(mainThread, ctx.label().getText())); } @Override @@ -219,8 +225,8 @@ public Object visitFence(LitmusAArch64Parser.FenceContext ctx) { } @Override - public IExpr visitExpressionRegister64(LitmusAArch64Parser.ExpressionRegister64Context ctx) { - IExpr expr = programBuilder.getOrNewRegister(mainThread, ctx.register64().id, archType); + public Expression visitExpressionRegister64(LitmusAArch64Parser.ExpressionRegister64Context ctx) { + Expression expr = programBuilder.getOrNewRegister(mainThread, ctx.register64().id, archType); if(ctx.shift() != null){ IValue val = expressions.parseValue(ctx.shift().immediate().constant().getText(), archType); expr = expressions.makeBinary(expr, ctx.shift().shiftOperator().op, val); @@ -229,8 +235,8 @@ public IExpr visitExpressionRegister64(LitmusAArch64Parser.ExpressionRegister64C } @Override - public IExpr visitExpressionRegister32(LitmusAArch64Parser.ExpressionRegister32Context ctx) { - IExpr expr = programBuilder.getOrNewRegister(mainThread, ctx.register32().id, archType); + public Expression visitExpressionRegister32(LitmusAArch64Parser.ExpressionRegister32Context ctx) { + Expression expr = programBuilder.getOrNewRegister(mainThread, ctx.register32().id, archType); if(ctx.shift() != null){ IValue val = expressions.parseValue(ctx.shift().immediate().constant().getText(), archType); expr = expressions.makeBinary(expr, ctx.shift().shiftOperator().op, val); @@ -239,8 +245,8 @@ public IExpr visitExpressionRegister32(LitmusAArch64Parser.ExpressionRegister32C } @Override - public IExpr visitExpressionImmediate(LitmusAArch64Parser.ExpressionImmediateContext ctx) { - IExpr expr = expressions.parseValue(ctx.immediate().constant().getText(), archType); + public Expression visitExpressionImmediate(LitmusAArch64Parser.ExpressionImmediateContext ctx) { + Expression expr = expressions.parseValue(ctx.immediate().constant().getText(), archType); if(ctx.shift() != null){ IValue val = expressions.parseValue(ctx.shift().immediate().constant().getText(), archType); expr = expressions.makeBinary(expr, ctx.shift().shiftOperator().op, val); @@ -249,14 +255,14 @@ public IExpr visitExpressionImmediate(LitmusAArch64Parser.ExpressionImmediateCon } @Override - public IExpr visitExpressionConversion(LitmusAArch64Parser.ExpressionConversionContext ctx) { + public Expression visitExpressionConversion(LitmusAArch64Parser.ExpressionConversionContext ctx) { // TODO: Implement when adding support for mixed-size accesses return programBuilder.getOrNewRegister(mainThread, ctx.register32().id, archType); } private Register visitOffset(LitmusAArch64Parser.OffsetContext ctx, Register register){ Register result = programBuilder.getOrNewRegister(mainThread, null, archType); - IExpr expr = ctx.immediate() == null + Expression expr = ctx.immediate() == null ? programBuilder.getOrErrorRegister(mainThread, ctx.expressionConversion().register32().id) : expressions.parseValue(ctx.immediate().constant().getText(), archType); programBuilder.addChild(mainThread, EventFactory.newLocal(result, expressions.makeADD(register, expr))); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusAssertions.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusAssertions.java index db007789ee..bc36e9225f 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusAssertions.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusAssertions.java @@ -1,16 +1,15 @@ package com.dat3m.dartagnan.parsers.program.visitors; +import com.dat3m.dartagnan.exception.ParsingException; import com.dat3m.dartagnan.expression.Expression; import com.dat3m.dartagnan.expression.ExpressionFactory; import com.dat3m.dartagnan.expression.type.IntegerType; -import com.dat3m.dartagnan.expression.type.TypeFactory; import com.dat3m.dartagnan.parsers.LitmusAssertionsBaseVisitor; import com.dat3m.dartagnan.parsers.LitmusAssertionsParser; -import com.dat3m.dartagnan.exception.ParsingException; import com.dat3m.dartagnan.parsers.program.utils.ProgramBuilder; -import com.dat3m.dartagnan.program.specification.*; -import com.dat3m.dartagnan.program.memory.MemoryObject; import com.dat3m.dartagnan.program.memory.Location; +import com.dat3m.dartagnan.program.memory.MemoryObject; +import com.dat3m.dartagnan.program.specification.*; import org.antlr.v4.runtime.tree.TerminalNode; import static com.google.common.base.Preconditions.checkState; @@ -18,11 +17,13 @@ public class VisitorLitmusAssertions extends LitmusAssertionsBaseVisitor { private final ProgramBuilder programBuilder; - private final ExpressionFactory expressions = ExpressionFactory.getInstance(); - private final IntegerType archType = TypeFactory.getInstance().getArchType(); + private final ExpressionFactory expressions; + private final IntegerType archType; - public VisitorLitmusAssertions(ProgramBuilder programBuilder){ + public VisitorLitmusAssertions(ProgramBuilder programBuilder) { this.programBuilder = programBuilder; + this.expressions = programBuilder.getExpressionFactory(); + this.archType = programBuilder.getTypeFactory().getArchType(); } @Override @@ -80,7 +81,7 @@ private Expression acceptAssertionValue(LitmusAssertionsParser.AssertionValueCon if(ctx.threadId() != null) { return programBuilder.getOrErrorRegister(ctx.threadId().id,name); } - MemoryObject base = programBuilder.getObject(name); + MemoryObject base = programBuilder.getMemoryObject(name); checkState(base != null, "uninitialized location %s", name); TerminalNode offset = ctx.DigitSequence(); int o = offset == null ? 0 : Integer.parseInt(offset.getText()); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusC.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusC.java index cfa17da850..69bf50a062 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusC.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusC.java @@ -4,10 +4,8 @@ import com.dat3m.dartagnan.expression.Expression; import com.dat3m.dartagnan.expression.ExpressionFactory; import com.dat3m.dartagnan.expression.IConst; -import com.dat3m.dartagnan.expression.IExpr; import com.dat3m.dartagnan.expression.IValue; import com.dat3m.dartagnan.expression.type.IntegerType; -import com.dat3m.dartagnan.expression.type.TypeFactory; import com.dat3m.dartagnan.parsers.LitmusCBaseVisitor; import com.dat3m.dartagnan.parsers.LitmusCParser; import com.dat3m.dartagnan.parsers.LitmusCParser.BasicTypeSpecifierContext; @@ -32,16 +30,15 @@ public class VisitorLitmusC extends LitmusCBaseVisitor { - private final ExpressionFactory expressions = ExpressionFactory.getInstance(); - private final ProgramBuilder programBuilder; - private final IntegerType archType = TypeFactory.getInstance().getArchType(); + private final ProgramBuilder programBuilder = ProgramBuilder.forLanguage(Program.SourceLanguage.LITMUS); + private final ExpressionFactory expressions = programBuilder.getExpressionFactory(); + private final IntegerType archType = programBuilder.getTypeFactory().getArchType(); private int currentThread; private int scope; private int ifId = 0; private Register returnRegister; - public VisitorLitmusC(ProgramBuilder pb){ - this.programBuilder = pb; + public VisitorLitmusC(){ } // ---------------------------------------------------------------------------------------------------------------- @@ -49,6 +46,8 @@ public VisitorLitmusC(ProgramBuilder pb){ @Override public Program visitMain(LitmusCParser.MainContext ctx) { + //FIXME: We should visit thread declarations before variable declarations + // because variable declaration refer to threads. visitVariableDeclaratorList(ctx.variableDeclaratorList()); visitProgram(ctx.program()); if(ctx.assertionList() != null){ @@ -82,6 +81,8 @@ public Object visitGlobalDeclaratorLocation(LitmusCParser.GlobalDeclaratorLocati @Override public Object visitGlobalDeclaratorRegister(LitmusCParser.GlobalDeclaratorRegisterContext ctx) { if (ctx.initConstantValue() != null) { + // FIXME: We visit declarators before threads, so we need to create threads early + programBuilder.getOrNewThread(ctx.threadId().id); IValue value = expressions.parseValue(ctx.initConstantValue().constant().getText(), archType); programBuilder.initRegEqConst(ctx.threadId().id,ctx.varName().getText(), value); } @@ -94,7 +95,7 @@ public Object visitGlobalDeclaratorLocationLocation(LitmusCParser.GlobalDeclarat programBuilder.initLocEqLocPtr(ctx.varName(0).getText(), ctx.varName(1).getText()); } else { String rightName = ctx.varName(1).getText(); - MemoryObject object = programBuilder.getObject(rightName); + MemoryObject object = programBuilder.getMemoryObject(rightName); if(object != null){ programBuilder.initLocEqConst(ctx.varName(0).getText(), object); } else { @@ -106,11 +107,13 @@ public Object visitGlobalDeclaratorLocationLocation(LitmusCParser.GlobalDeclarat @Override public Object visitGlobalDeclaratorRegisterLocation(LitmusCParser.GlobalDeclaratorRegisterLocationContext ctx) { + // FIXME: We visit declarators before threads, so we need to create threads early + programBuilder.getOrNewThread(ctx.threadId().id); if(ctx.Ast() == null){ programBuilder.initRegEqLocPtr(ctx.threadId().id, ctx.varName(0).getText(), ctx.varName(1).getText(), archType); } else { String rightName = ctx.varName(1).getText(); - MemoryObject object = programBuilder.getObject(rightName); + MemoryObject object = programBuilder.getMemoryObject(rightName); if(object != null){ programBuilder.initRegEqConst(ctx.threadId().id, ctx.varName(0).getText(), object); } else { @@ -126,7 +129,7 @@ public Object visitGlobalDeclaratorArray(LitmusCParser.GlobalDeclaratorArrayCont Integer size = ctx.DigitSequence() != null ? Integer.parseInt(ctx.DigitSequence().getText()) : null; if(ctx.initArray() == null && size != null && size > 0){ - programBuilder.newObject(name,size); + programBuilder.newMemoryObject(name,size); return null; } if(ctx.initArray() != null){ @@ -138,16 +141,16 @@ public Object visitGlobalDeclaratorArray(LitmusCParser.GlobalDeclaratorArrayCont } else { String varName = elCtx.varName().getText(); //see test/resources/arrays/ok/C-array-ok-17.litmus - MemoryObject object = programBuilder.getObject(varName); + MemoryObject object = programBuilder.getMemoryObject(varName); if(object != null){ values.add(object); } else { - object = programBuilder.getOrNewObject(varName); + object = programBuilder.getOrNewMemoryObject(varName); values.add(elCtx.Ast() == null ? object : object.getInitialValue(0)); } } } - MemoryObject object = programBuilder.newObject(name,values.size()); + MemoryObject object = programBuilder.newMemoryObject(name,values.size()); for(int i = 0; i < values.size(); i++) { object.setInitialValue(i,values.get(i)); } @@ -164,7 +167,8 @@ public Object visitGlobalDeclaratorArray(LitmusCParser.GlobalDeclaratorArrayCont @Override public Object visitThread(LitmusCParser.ThreadContext ctx) { scope = currentThread = ctx.threadId().id; - programBuilder.initThread(currentThread); + // Declarations in the preamble may have created the thread already + programBuilder.getOrNewThread(currentThread); visitThreadArguments(ctx.threadArguments()); for(LitmusCParser.ExpressionContext expressionContext : ctx.expression()) @@ -177,10 +181,10 @@ public Object visitThread(LitmusCParser.ThreadContext ctx) { @Override public Object visitThreadArguments(LitmusCParser.ThreadArgumentsContext ctx){ if(ctx != null){ - int id = 0; + int id = 0; for(LitmusCParser.VarNameContext varName : ctx.varName()){ String name = varName.getText(); - MemoryObject object = programBuilder.getOrNewObject(name); + MemoryObject object = programBuilder.getOrNewMemoryObject(name); PointerTypeSpecifierContext pType = ctx.pointerTypeSpecifier(id); if(pType != null) { BasicTypeSpecifierContext bType = pType.basicTypeSpecifier(); @@ -200,11 +204,11 @@ public Object visitThreadArguments(LitmusCParser.ThreadArgumentsContext ctx){ @Override public Object visitIfExpression(LitmusCParser.IfExpressionContext ctx) { - Expression expr = (Expression) ctx.re().accept(this); + Expression expr = (Expression) ctx.re().accept(this); - ifId++; - Label elseL = programBuilder.getOrCreateLabel("else_" + ifId); - Label endL = programBuilder.getOrCreateLabel("end_" + ifId); + ifId++; + Label elseL = programBuilder.getOrCreateLabel(currentThread,"else_" + ifId); + Label endL = programBuilder.getOrCreateLabel(currentThread,"end_" + ifId); IfAsJump ifEvent = EventFactory.newIfJumpUnless(expr, elseL, endL); programBuilder.addChild(currentThread, ifEvent); @@ -212,7 +216,7 @@ public Object visitIfExpression(LitmusCParser.IfExpressionContext ctx) { for(LitmusCParser.ExpressionContext expressionContext : ctx.expression()) expressionContext.accept(this); CondJump jumpToEnd = EventFactory.newGoto(endL); - programBuilder.addChild(currentThread, jumpToEnd); + programBuilder.addChild(currentThread, jumpToEnd); programBuilder.addChild(currentThread, elseL); if(ctx.elseExpression() != null){ @@ -228,7 +232,7 @@ public Object visitIfExpression(LitmusCParser.IfExpressionContext ctx) { // Returns new value (the value after computation) @Override - public IExpr visitReAtomicOpReturn(LitmusCParser.ReAtomicOpReturnContext ctx){ + public Expression visitReAtomicOpReturn(LitmusCParser.ReAtomicOpReturnContext ctx){ Register register = getReturnRegister(true); Expression value = returnExpressionOrOne(ctx.value); Event event = EventFactory.Linux.newRMWOpReturn(getAddress(ctx.address), register, value, ctx.op, ctx.mo); @@ -238,28 +242,28 @@ public IExpr visitReAtomicOpReturn(LitmusCParser.ReAtomicOpReturnContext ctx){ // Returns old value (the value before computation) @Override - public IExpr visitReAtomicFetchOp(LitmusCParser.ReAtomicFetchOpContext ctx){ + public Expression visitReAtomicFetchOp(LitmusCParser.ReAtomicFetchOpContext ctx){ Register register = getReturnRegister(true); - IExpr value = returnExpressionOrOne(ctx.value); + Expression value = returnExpressionOrOne(ctx.value); Event event = EventFactory.Linux.newRMWFetchOp(getAddress(ctx.address), register, value, ctx.op, ctx.mo); programBuilder.addChild(currentThread, event); return register; } - @Override - public IExpr visitC11AtomicOp(LitmusCParser.C11AtomicOpContext ctx) { + @Override + public Expression visitC11AtomicOp(LitmusCParser.C11AtomicOpContext ctx) { Register register = getReturnRegister(true); - IExpr value = returnExpressionOrOne(ctx.value); + Expression value = returnExpressionOrOne(ctx.value); Event event = EventFactory.Atomic.newFetchOp(register, getAddress(ctx.address), value, ctx.op, ctx.c11Mo().mo); programBuilder.addChild(currentThread, event); return register; - } + } @Override - public IExpr visitReAtomicOpAndTest(LitmusCParser.ReAtomicOpAndTestContext ctx){ + public Expression visitReAtomicOpAndTest(LitmusCParser.ReAtomicOpAndTestContext ctx){ Register register = getReturnRegister(true); - IExpr value = returnExpressionOrOne(ctx.value); + Expression value = returnExpressionOrOne(ctx.value); Event event = EventFactory.Linux.newRMWOpAndTest(getAddress(ctx.address), register, value, ctx.op); programBuilder.addChild(currentThread, event); return register; @@ -267,60 +271,60 @@ public IExpr visitReAtomicOpAndTest(LitmusCParser.ReAtomicOpAndTestContext ctx){ // Returns non-zero if the addition was executed, zero otherwise @Override - public IExpr visitReAtomicAddUnless(LitmusCParser.ReAtomicAddUnlessContext ctx){ + public Expression visitReAtomicAddUnless(LitmusCParser.ReAtomicAddUnlessContext ctx){ Register register = getReturnRegister(true); - IExpr value = (IExpr)ctx.value.accept(this); - Expression cmp = (Expression)ctx.cmp.accept(this); + Expression value = (Expression) ctx.value.accept(this); + Expression cmp = (Expression) ctx.cmp.accept(this); programBuilder.addChild(currentThread, EventFactory.Linux.newRMWAddUnless(getAddress(ctx.address), register, cmp, value)); return register; } @Override - public IExpr visitReXchg(LitmusCParser.ReXchgContext ctx){ + public Expression visitReXchg(LitmusCParser.ReXchgContext ctx){ Register register = getReturnRegister(true); - IExpr value = (IExpr)ctx.value.accept(this); + Expression value = (Expression) ctx.value.accept(this); Event event = EventFactory.Linux.newRMWExchange(getAddress(ctx.address), register, value, ctx.mo); programBuilder.addChild(currentThread, event); return register; } - @Override - public IExpr visitReC11SCmpXchg(LitmusCParser.ReC11SCmpXchgContext ctx) { + @Override + public Expression visitReC11SCmpXchg(LitmusCParser.ReC11SCmpXchgContext ctx) { Register register = getReturnRegister(true); - IExpr value = (IExpr)ctx.value.accept(this); + Expression value = (Expression)ctx.value.accept(this); Event event = EventFactory.Atomic.newCompareExchange(register, getAddress(ctx.address), getAddress(ctx.expectedAdd), value, ctx.c11Mo(0).mo, true); programBuilder.addChild(currentThread, event); return register; - } + } - @Override - public IExpr visitReC11WCmpXchg(LitmusCParser.ReC11WCmpXchgContext ctx) { + @Override + public Expression visitReC11WCmpXchg(LitmusCParser.ReC11WCmpXchgContext ctx) { Register register = getReturnRegister(true); - IExpr value = (IExpr)ctx.value.accept(this); + Expression value = (Expression)ctx.value.accept(this); Event event = EventFactory.Atomic.newCompareExchange(register, getAddress(ctx.address), getAddress(ctx.expectedAdd), value, ctx.c11Mo(0).mo, false); programBuilder.addChild(currentThread, event); return register; - } + } @Override - public IExpr visitReCmpXchg(LitmusCParser.ReCmpXchgContext ctx){ + public Expression visitReCmpXchg(LitmusCParser.ReCmpXchgContext ctx){ Register register = getReturnRegister(true); Expression cmp = (Expression)ctx.cmp.accept(this); - IExpr value = (IExpr)ctx.value.accept(this); + Expression value = (Expression)ctx.value.accept(this); Event event = EventFactory.Linux.newRMWCompareExchange(getAddress(ctx.address), register, cmp, value, ctx.mo); programBuilder.addChild(currentThread, event); return register; } - @Override public IExpr visitReC11Load(LitmusCParser.ReC11LoadContext ctx) { + @Override public Expression visitReC11Load(LitmusCParser.ReC11LoadContext ctx) { Register register = getReturnRegister(true); Event event = EventFactory.Atomic.newLoad(register, getAddress(ctx.address), ctx.c11Mo().mo); programBuilder.addChild(currentThread, event); return register; - } + } @Override - public IExpr visitReLoad(LitmusCParser.ReLoadContext ctx){ + public Expression visitReLoad(LitmusCParser.ReLoadContext ctx){ Register register = getReturnRegister(true); Event event = EventFactory.Linux.newLKMMLoad(register, getAddress(ctx.address), ctx.mo); programBuilder.addChild(currentThread, event); @@ -328,7 +332,7 @@ public IExpr visitReLoad(LitmusCParser.ReLoadContext ctx){ } @Override - public IExpr visitReReadOnce(LitmusCParser.ReReadOnceContext ctx){ + public Expression visitReReadOnce(LitmusCParser.ReReadOnceContext ctx){ Register register = getReturnRegister(true); Event event = EventFactory.Linux.newLKMMLoad(register, getAddress(ctx.address), ctx.mo); programBuilder.addChild(currentThread, event); @@ -336,7 +340,7 @@ public IExpr visitReReadOnce(LitmusCParser.ReReadOnceContext ctx){ } @Override - public IExpr visitReReadNa(LitmusCParser.ReReadNaContext ctx){ + public Expression visitReReadNa(LitmusCParser.ReReadNaContext ctx){ Register register = getReturnRegister(true); Event event = EventFactory.newLoadWithMo(register, getAddress(ctx.address), C11.NONATOMIC); programBuilder.addChild(currentThread, event); @@ -348,7 +352,6 @@ public IExpr visitReReadNa(LitmusCParser.ReReadNaContext ctx){ @Override public Expression visitReOpCompare(LitmusCParser.ReOpCompareContext ctx){ - //TODO boolean register Register register = getReturnRegister(false); Expression v1 = (Expression)ctx.re(0).accept(this); Expression v2 = (Expression)ctx.re(1).accept(this); @@ -359,9 +362,9 @@ public Expression visitReOpCompare(LitmusCParser.ReOpCompareContext ctx){ @Override public Expression visitReOpArith(LitmusCParser.ReOpArithContext ctx){ Register register = getReturnRegister(false); - IExpr v1 = (IExpr)ctx.re(0).accept(this); - IExpr v2 = (IExpr)ctx.re(1).accept(this); - IExpr result = expressions.makeBinary(v1, ctx.opArith().op, v2); + Expression v1 = (Expression)ctx.re(0).accept(this); + Expression v2 = (Expression)ctx.re(1).accept(this); + Expression result = expressions.makeBinary(v1, ctx.opArith().op, v2); return assignToReturnRegister(register, result); } @@ -402,7 +405,7 @@ public Expression visitReCast(LitmusCParser.ReCastContext ctx){ @Override public Expression visitReVarName(LitmusCParser.ReVarNameContext ctx){ Register register = getReturnRegister(false); - IExpr variable = visitVarName(ctx.varName()); + Expression variable = visitVarName(ctx.varName()); if (variable instanceof Register result) { return assignToReturnRegister(register, result); } @@ -422,9 +425,8 @@ public Expression visitReConst(LitmusCParser.ReConstContext ctx){ @Override public Object visitNreAtomicOp(LitmusCParser.NreAtomicOpContext ctx){ - IExpr value = returnExpressionOrOne(ctx.value); - Register register = programBuilder.getOrNewRegister(scope, null, archType); - Event event = EventFactory.Linux.newRMWOp(getAddress(ctx.address), register, value, ctx.op); + Expression value = returnExpressionOrOne(ctx.value); + Event event = EventFactory.Linux.newRMWOp(getAddress(ctx.address), value, ctx.op); return programBuilder.addChild(currentThread, event); } @@ -447,12 +449,12 @@ public Object visitNreWriteOnce(LitmusCParser.NreWriteOnceContext ctx){ return programBuilder.addChild(currentThread, event); } - @Override - public Object visitNreC11Store(LitmusCParser.NreC11StoreContext ctx) { + @Override + public Object visitNreC11Store(LitmusCParser.NreC11StoreContext ctx) { Expression value = (Expression)ctx.value.accept(this); Event event = EventFactory.Atomic.newStore(getAddress(ctx.address), value, ctx.c11Mo().mo); return programBuilder.addChild(currentThread, event); - } + } @Override public Object visitNreAssignment(LitmusCParser.NreAssignmentContext ctx){ @@ -488,10 +490,10 @@ public Object visitNreRegDeclaration(LitmusCParser.NreRegDeclarationContext ctx) throw new ParsingException("Register " + ctx.varName().getText() + " is already initialised"); } - @Override - public Object visitNreC11Fence(LitmusCParser.NreC11FenceContext ctx) { - return programBuilder.addChild(currentThread, EventFactory.Atomic.newFence(ctx.c11Mo().mo)); - } + @Override + public Object visitNreC11Fence(LitmusCParser.NreC11FenceContext ctx) { + return programBuilder.addChild(currentThread, EventFactory.Atomic.newFence(ctx.c11Mo().mo)); + } @Override public Object visitNreFence(LitmusCParser.NreFenceContext ctx){ @@ -500,15 +502,15 @@ public Object visitNreFence(LitmusCParser.NreFenceContext ctx){ @Override public Object visitNreSpinLock(LitmusCParser.NreSpinLockContext ctx) { - return programBuilder.addChild(currentThread, EventFactory.Linux.newLock(getAddress(ctx.address))); + return programBuilder.addChild(currentThread, EventFactory.Linux.newLock(getAddress(ctx.address))); } @Override public Object visitNreSpinUnlock(LitmusCParser.NreSpinUnlockContext ctx) { - return programBuilder.addChild(currentThread, EventFactory.Linux.newUnlock(getAddress(ctx.address))); + return programBuilder.addChild(currentThread, EventFactory.Linux.newUnlock(getAddress(ctx.address))); } - @Override + @Override public Object visitNreSrcuSync(LitmusCParser.NreSrcuSyncContext ctx) { return programBuilder.addChild(currentThread, EventFactory.Linux.newSrcuSync(getAddress(ctx.address))); } @@ -517,13 +519,13 @@ public Object visitNreSrcuSync(LitmusCParser.NreSrcuSyncContext ctx) { // Utils @Override - public IExpr visitVarName(LitmusCParser.VarNameContext ctx){ + public Expression visitVarName(LitmusCParser.VarNameContext ctx){ if(scope > -1){ Register register = programBuilder.getRegister(scope, ctx.getText()); if(register != null){ return register; } - MemoryObject object = programBuilder.getObject(ctx.getText()); + MemoryObject object = programBuilder.getMemoryObject(ctx.getText()); if(object != null){ register = programBuilder.getOrNewRegister(scope, null, archType); programBuilder.addChild(currentThread, EventFactory.newLoadWithMo(register, object, C11.NONATOMIC)); @@ -531,22 +533,22 @@ public IExpr visitVarName(LitmusCParser.VarNameContext ctx){ } return programBuilder.getOrNewRegister(scope, ctx.getText(), archType); } - MemoryObject object = programBuilder.getOrNewObject(ctx.getText()); + MemoryObject object = programBuilder.newMemoryObject(ctx.getText(), 1); Register register = programBuilder.getOrNewRegister(scope, null, archType); programBuilder.addChild(currentThread, EventFactory.newLoadWithMo(register, object, C11.NONATOMIC)); return register; } - private IExpr getAddress(LitmusCParser.ReContext ctx){ + private Expression getAddress(LitmusCParser.ReContext ctx){ Expression address = (Expression)ctx.accept(this); - if(address instanceof IExpr addr){ - return addr; + if(address.getType() instanceof IntegerType){ + return address; } throw new ParsingException("Invalid syntax near " + ctx.getText()); } - private IExpr returnExpressionOrOne(LitmusCParser.ReContext ctx) { - return ctx != null ? (IExpr) ctx.accept(this) : expressions.makeOne(archType); + private Expression returnExpressionOrOne(LitmusCParser.ReContext ctx) { + return ctx != null ? (Expression) ctx.accept(this) : expressions.makeOne(archType); } private Register getReturnRegister(boolean createOnNull){ @@ -558,9 +560,10 @@ private Register getReturnRegister(boolean createOnNull){ return register; } - private Expression assignToReturnRegister(Register register, Expression value){ - if(register != null){ - programBuilder.addChild(currentThread, EventFactory.newLocal(register, value)); + private Expression assignToReturnRegister(Register register, Expression value) { + if (register != null) { + Expression cast = expressions.makeCast(value, register.getType()); + programBuilder.addChild(currentThread, EventFactory.newLocal(register, cast)); } return value; } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusLISA.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusLISA.java index 4fb3326ddb..e959b53b42 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusLISA.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusLISA.java @@ -2,14 +2,13 @@ import com.dat3m.dartagnan.expression.Expression; import com.dat3m.dartagnan.expression.ExpressionFactory; -import com.dat3m.dartagnan.expression.IExpr; import com.dat3m.dartagnan.expression.IValue; import com.dat3m.dartagnan.expression.type.IntegerType; -import com.dat3m.dartagnan.expression.type.TypeFactory; import com.dat3m.dartagnan.parsers.LitmusLISABaseVisitor; import com.dat3m.dartagnan.parsers.LitmusLISAParser; import com.dat3m.dartagnan.parsers.program.utils.AssertionHelper; import com.dat3m.dartagnan.parsers.program.utils.ProgramBuilder; +import com.dat3m.dartagnan.program.Program; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.EventFactory; import com.dat3m.dartagnan.program.event.core.Label; @@ -18,14 +17,13 @@ public class VisitorLitmusLISA extends LitmusLISABaseVisitor { - private final ExpressionFactory expressions = ExpressionFactory.getInstance(); - private final ProgramBuilder programBuilder; - private final IntegerType archType = TypeFactory.getInstance().getArchType(); + private final ProgramBuilder programBuilder = ProgramBuilder.forLanguage(Program.SourceLanguage.LITMUS); + private final ExpressionFactory expressions = programBuilder.getExpressionFactory(); + private final IntegerType archType = programBuilder.getTypeFactory().getArchType(); private int mainThread; private int threadCount = 0; - public VisitorLitmusLISA(ProgramBuilder pb){ - this.programBuilder = pb; + public VisitorLitmusLISA() { } // ---------------------------------------------------------------------------------------------------------------- @@ -36,13 +34,13 @@ public Object visitMain(LitmusLISAParser.MainContext ctx) { visitThreadDeclaratorList(ctx.program().threadDeclaratorList()); visitVariableDeclaratorList(ctx.variableDeclaratorList()); visitInstructionList(ctx.program().instructionList()); - if(ctx.assertionList() != null){ + if (ctx.assertionList() != null) { int a = ctx.assertionList().getStart().getStartIndex(); int b = ctx.assertionList().getStop().getStopIndex(); String raw = ctx.assertionList().getStart().getInputStream().getText(new Interval(a, b)); programBuilder.setAssert(AssertionHelper.parseAssertionList(programBuilder, raw)); } - if(ctx.assertionFilter() != null){ + if (ctx.assertionFilter() != null) { int a = ctx.assertionFilter().getStart().getStartIndex(); int b = ctx.assertionFilter().getStop().getStopIndex(); String raw = ctx.assertionFilter().getStart().getInputStream().getText(new Interval(a, b)); @@ -54,19 +52,19 @@ public Object visitMain(LitmusLISAParser.MainContext ctx) { // ---------------------------------------------------------------------------------------------------------------- - @Override - public Object visitVariableDeclaratorLocation(LitmusLISAParser.VariableDeclaratorLocationContext ctx) { - IValue value = expressions.parseValue(ctx.constant().getText(), archType); - programBuilder.initLocEqConst(ctx.location().getText(), value); - return null; - } + @Override + public Object visitVariableDeclaratorLocation(LitmusLISAParser.VariableDeclaratorLocationContext ctx) { + IValue value = expressions.parseValue(ctx.constant().getText(), archType); + programBuilder.initLocEqConst(ctx.location().getText(), value); + return null; + } - @Override - public Object visitVariableDeclaratorRegister(LitmusLISAParser.VariableDeclaratorRegisterContext ctx) { - IValue value = expressions.parseValue(ctx.constant().getText(), archType); - programBuilder.initRegEqConst(ctx.threadId().id, ctx.register().getText(), value); - return null; - } + @Override + public Object visitVariableDeclaratorRegister(LitmusLISAParser.VariableDeclaratorRegisterContext ctx) { + IValue value = expressions.parseValue(ctx.constant().getText(), archType); + programBuilder.initRegEqConst(ctx.threadId().id, ctx.register().getText(), value); + return null; + } @Override public Object visitVariableDeclaratorRegisterLocation(LitmusLISAParser.VariableDeclaratorRegisterLocationContext ctx) { @@ -86,8 +84,8 @@ public Object visitVariableDeclaratorLocationLocation(LitmusLISAParser.VariableD @Override public Object visitThreadDeclaratorList(LitmusLISAParser.ThreadDeclaratorListContext ctx) { - for(LitmusLISAParser.ThreadIdContext threadCtx : ctx.threadId()){ - programBuilder.initThread(threadCtx.id); + for (LitmusLISAParser.ThreadIdContext threadCtx : ctx.threadId()) { + programBuilder.newThread(threadCtx.id); threadCount++; } return null; @@ -99,151 +97,150 @@ public Object visitThreadDeclaratorList(LitmusLISAParser.ThreadDeclaratorListCon @Override public Object visitInstructionRow(LitmusLISAParser.InstructionRowContext ctx) { - for(int i = 0; i < threadCount; i++){ + for (int i = 0; i < threadCount; i++) { mainThread = i; visitInstruction(ctx.instruction(i)); } return null; } - @Override - public Object visitLoad(LitmusLISAParser.LoadContext ctx) { + @Override + public Object visitLoad(LitmusLISAParser.LoadContext ctx) { Register reg = programBuilder.getOrNewRegister(mainThread, ctx.register().getText(), archType); - IExpr address = (IExpr) ctx.expression().accept(this); + Expression address = (Expression) ctx.expression().accept(this); String mo = ctx.mo() != null ? ctx.mo().getText() : ""; - programBuilder.addChild(mainThread, EventFactory.newLoadWithMo(reg, address, mo)); - return null; - } + programBuilder.addChild(mainThread, EventFactory.newLoadWithMo(reg, address, mo)); + return null; + } - @Override - public Object visitLocal(LitmusLISAParser.LocalContext ctx) { + @Override + public Object visitLocal(LitmusLISAParser.LocalContext ctx) { Register reg = programBuilder.getOrNewRegister(mainThread, ctx.register().getText(), archType); - Expression e = (Expression) ctx.expression().accept(this); + Expression e = (Expression) ctx.expression().accept(this); programBuilder.addChild(mainThread, EventFactory.newLocal(reg, e)); - return null; - } + return null; + } - @Override - public Object visitStore(LitmusLISAParser.StoreContext ctx) { - IExpr value = (IExpr) ctx.value().accept(this); - IExpr address = (IExpr) ctx.expression().accept(this); + @Override + public Object visitStore(LitmusLISAParser.StoreContext ctx) { + Expression value = (Expression) ctx.value().accept(this); + Expression address = (Expression) ctx.expression().accept(this); String mo = ctx.mo() != null ? ctx.mo().getText() : ""; programBuilder.addChild(mainThread, EventFactory.newStoreWithMo(address, value, mo)); - return null; + return null; - } + } - @Override - public Object visitRmw(LitmusLISAParser.RmwContext ctx) { + @Override + public Object visitRmw(LitmusLISAParser.RmwContext ctx) { Register reg = programBuilder.getOrNewRegister(mainThread, ctx.register().getText(), archType); - IExpr value = (IExpr) ctx.value().accept(this); - IExpr address = (IExpr) ctx.expression().accept(this); + Expression value = (Expression) ctx.value().accept(this); + Expression address = (Expression) ctx.expression().accept(this); String mo = ctx.mo() != null ? ctx.mo().getText() : ""; programBuilder.addChild(mainThread, EventFactory.LISA.newRMW(address, reg, value, mo)); - return null; - } + return null; + } - @Override - public Object visitFence(LitmusLISAParser.FenceContext ctx) { + @Override + public Object visitFence(LitmusLISAParser.FenceContext ctx) { String mo = ctx.mo() != null ? ctx.mo().getText() : ""; programBuilder.addChild(mainThread, EventFactory.newFence(mo)); - return null; - } + return null; + } - @Override - public Object visitLabel(LitmusLISAParser.LabelContext ctx) { - String name = ctx.getText(); - Label label = programBuilder.getOrCreateLabel(name.substring(0, name.length()-1)); - programBuilder.addChild(mainThread, label); - return null; - } + @Override + public Object visitLabel(LitmusLISAParser.LabelContext ctx) { + String name = ctx.getText(); + Label label = programBuilder.getOrCreateLabel(mainThread, name.substring(0, name.length() - 1)); + programBuilder.addChild(mainThread, label); + return null; + } - @Override - public Object visitJump(LitmusLISAParser.JumpContext ctx) { - Label label = programBuilder.getOrCreateLabel(ctx.labelName().getText()); + @Override + public Object visitJump(LitmusLISAParser.JumpContext ctx) { + Label label = programBuilder.getOrCreateLabel(mainThread, ctx.labelName().getText()); Register reg = (Register) ctx.register().accept(this); - Expression one = expressions.makeOne(reg.getType()); - Expression cond = expressions.makeEQ(reg, one); + Expression cond = expressions.makeBooleanCast(reg); programBuilder.addChild(mainThread, EventFactory.newJump(cond, label)); return null; } - // Other + // Other - @Override - public Object visitLocation(LitmusLISAParser.LocationContext ctx) { - return programBuilder.getOrNewObject(ctx.getText()); - } + @Override + public Object visitLocation(LitmusLISAParser.LocationContext ctx) { + return programBuilder.getOrNewMemoryObject(ctx.getText()); + } - @Override - public Object visitRegister(LitmusLISAParser.RegisterContext ctx) { - return programBuilder.getOrNewRegister(mainThread, ctx.getText(), archType); - } + @Override + public Object visitRegister(LitmusLISAParser.RegisterContext ctx) { + return programBuilder.getOrNewRegister(mainThread, ctx.getText(), archType); + } - @Override - public Object visitConstant(LitmusLISAParser.ConstantContext ctx) { - return expressions.parseValue(ctx.getText(), archType); - } + @Override + public Object visitConstant(LitmusLISAParser.ConstantContext ctx) { + return expressions.parseValue(ctx.getText(), archType); + } - @Override - public Object visitAdd(LitmusLISAParser.AddContext ctx) { - IExpr e1 = (IExpr) ctx.expression(0).accept(this); - IExpr e2 = (IExpr) ctx.expression(1).accept(this); - return expressions.makeADD(e1, e2); - } + @Override + public Object visitAdd(LitmusLISAParser.AddContext ctx) { + Expression e1 = (Expression) ctx.expression(0).accept(this); + Expression e2 = (Expression) ctx.expression(1).accept(this); + return expressions.makeADD(e1, e2); + } - @Override - public Object visitSub(LitmusLISAParser.SubContext ctx) { - IExpr e1 = (IExpr) ctx.expression(0).accept(this); - IExpr e2 = (IExpr) ctx.expression(1).accept(this); - return expressions.makeSUB(e1, e2); - } + @Override + public Object visitSub(LitmusLISAParser.SubContext ctx) { + Expression e1 = (Expression) ctx.expression(0).accept(this); + Expression e2 = (Expression) ctx.expression(1).accept(this); + return expressions.makeSUB(e1, e2); + } - @Override - public Object visitXor(LitmusLISAParser.XorContext ctx) { - IExpr e1 = (IExpr) ctx.expression(0).accept(this); - IExpr e2 = (IExpr) ctx.expression(1).accept(this); - return expressions.makeXOR(e1, e2); - } + @Override + public Object visitXor(LitmusLISAParser.XorContext ctx) { + Expression e1 = (Expression) ctx.expression(0).accept(this); + Expression e2 = (Expression) ctx.expression(1).accept(this); + return expressions.makeXOR(e1, e2); + } - @Override - public Object visitOr(LitmusLISAParser.OrContext ctx) { - IExpr e1 = (IExpr) ctx.expression(0).accept(this); - IExpr e2 = (IExpr) ctx.expression(1).accept(this); - return expressions.makeOR(e1, e2); - } + @Override + public Object visitOr(LitmusLISAParser.OrContext ctx) { + Expression e1 = (Expression) ctx.expression(0).accept(this); + Expression e2 = (Expression) ctx.expression(1).accept(this); + return expressions.makeOR(e1, e2); + } - @Override - public Object visitAnd(LitmusLISAParser.AndContext ctx) { - IExpr e1 = (IExpr) ctx.expression(0).accept(this); - IExpr e2 = (IExpr) ctx.expression(1).accept(this); - return expressions.makeAND(e1, e2); - } + @Override + public Object visitAnd(LitmusLISAParser.AndContext ctx) { + Expression e1 = (Expression) ctx.expression(0).accept(this); + Expression e2 = (Expression) ctx.expression(1).accept(this); + return expressions.makeAND(e1, e2); + } @Override public Object visitEq(LitmusLISAParser.EqContext ctx) { Expression e1 = (Expression) ctx.expression(0).accept(this); Expression e2 = (Expression) ctx.expression(1).accept(this); - return expressions.makeEQ(e1, e2); + return expressions.makeCast(expressions.makeEQ(e1, e2), archType); } @Override public Object visitNeq(LitmusLISAParser.NeqContext ctx) { Expression e1 = (Expression) ctx.expression(0).accept(this); Expression e2 = (Expression) ctx.expression(1).accept(this); - return expressions.makeNEQ(e1, e2); + return expressions.makeCast(expressions.makeNEQ(e1, e2), archType); } - @Override - public Object visitParaExpr(LitmusLISAParser.ParaExprContext ctx) { - return ctx.expression().accept(this); - } + @Override + public Object visitParaExpr(LitmusLISAParser.ParaExprContext ctx) { + return ctx.expression().accept(this); + } - @Override - public Object visitArrayAccess(LitmusLISAParser.ArrayAccessContext ctx) { - MemoryObject base = (MemoryObject) ctx.location().accept(this); - IExpr offset = (IExpr) ctx.value().accept(this); - return expressions.makeADD(base, offset); - } + @Override + public Object visitArrayAccess(LitmusLISAParser.ArrayAccessContext ctx) { + MemoryObject base = (MemoryObject) ctx.location().accept(this); + Expression offset = (Expression) ctx.value().accept(this); + return expressions.makeADD(base, offset); + } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusPPC.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusPPC.java index cb3c064904..2898291ff7 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusPPC.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusPPC.java @@ -1,5 +1,6 @@ package com.dat3m.dartagnan.parsers.program.visitors; +import com.dat3m.dartagnan.configuration.Arch; import com.dat3m.dartagnan.exception.ParsingException; import com.dat3m.dartagnan.expression.Expression; import com.dat3m.dartagnan.expression.ExpressionFactory; @@ -10,6 +11,7 @@ import com.dat3m.dartagnan.parsers.LitmusPPCParser; import com.dat3m.dartagnan.parsers.program.utils.AssertionHelper; import com.dat3m.dartagnan.parsers.program.utils.ProgramBuilder; +import com.dat3m.dartagnan.program.Program; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.EventFactory; import com.dat3m.dartagnan.program.event.core.Label; @@ -35,16 +37,15 @@ public CmpInstruction(Register left, Expression comparand) { private final static ImmutableSet fences = ImmutableSet.of(SYNC, LWSYNC, ISYNC); - private final TypeFactory types = TypeFactory.getInstance(); - private final ExpressionFactory expressions = ExpressionFactory.getInstance(); - private final ProgramBuilder programBuilder; + private final ProgramBuilder programBuilder = ProgramBuilder.forArch(Program.SourceLanguage.LITMUS, Arch.POWER); + private final TypeFactory types = programBuilder.getTypeFactory(); + private final ExpressionFactory expressions = programBuilder.getExpressionFactory(); private final IntegerType archType = types.getArchType(); private final Map lastCmpInstructionPerThread = new HashMap<>(); private int mainThread; private int threadCount = 0; - public VisitorLitmusPPC(ProgramBuilder pb){ - this.programBuilder = pb; + public VisitorLitmusPPC() { } // ---------------------------------------------------------------------------------------------------------------- @@ -107,7 +108,7 @@ public Object visitVariableDeclaratorLocationLocation(LitmusPPCParser.VariableDe @Override public Object visitThreadDeclaratorList(LitmusPPCParser.ThreadDeclaratorListContext ctx) { for(LitmusPPCParser.ThreadIdContext threadCtx : ctx.threadId()){ - programBuilder.initThread(threadCtx.id); + programBuilder.newThread(threadCtx.id); threadCount++; } return null; @@ -192,7 +193,7 @@ public Object visitCmpw(LitmusPPCParser.CmpwContext ctx) { @Override public Object visitBranchCond(LitmusPPCParser.BranchCondContext ctx) { - Label label = programBuilder.getOrCreateLabel(ctx.Label().getText()); + Label label = programBuilder.getOrCreateLabel(mainThread, ctx.Label().getText()); CmpInstruction cmp = lastCmpInstructionPerThread.put(mainThread, null); if(cmp == null){ throw new ParsingException("Invalid syntax near " + ctx.getText()); @@ -203,7 +204,7 @@ public Object visitBranchCond(LitmusPPCParser.BranchCondContext ctx) { @Override public Object visitLabel(LitmusPPCParser.LabelContext ctx) { - return programBuilder.addChild(mainThread, programBuilder.getOrCreateLabel(ctx.Label().getText())); + return programBuilder.addChild(mainThread, programBuilder.getOrCreateLabel(mainThread, ctx.Label().getText())); } @Override diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusPTX.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusPTX.java index 0161d99bf0..2451048c46 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusPTX.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusPTX.java @@ -1,20 +1,22 @@ package com.dat3m.dartagnan.parsers.program.visitors; +import com.dat3m.dartagnan.configuration.Arch; import com.dat3m.dartagnan.exception.ParsingException; +import com.dat3m.dartagnan.expression.Expression; import com.dat3m.dartagnan.expression.ExpressionFactory; import com.dat3m.dartagnan.expression.IConst; -import com.dat3m.dartagnan.expression.IExpr; import com.dat3m.dartagnan.expression.op.IOpBin; import com.dat3m.dartagnan.expression.type.TypeFactory; import com.dat3m.dartagnan.parsers.LitmusPTXBaseVisitor; import com.dat3m.dartagnan.parsers.LitmusPTXParser; import com.dat3m.dartagnan.parsers.program.utils.AssertionHelper; import com.dat3m.dartagnan.parsers.program.utils.ProgramBuilder; +import com.dat3m.dartagnan.program.Program; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.EventFactory; import com.dat3m.dartagnan.program.event.Tag; -import com.dat3m.dartagnan.program.event.arch.ptx.AtomOp; -import com.dat3m.dartagnan.program.event.arch.ptx.RedOp; +import com.dat3m.dartagnan.program.event.arch.ptx.PTXAtomOp; +import com.dat3m.dartagnan.program.event.arch.ptx.PTXRedOp; import com.dat3m.dartagnan.program.event.core.Fence; import com.dat3m.dartagnan.program.event.core.Load; import com.dat3m.dartagnan.program.event.core.Store; @@ -22,12 +24,11 @@ import org.antlr.v4.runtime.misc.Interval; public class VisitorLitmusPTX extends LitmusPTXBaseVisitor { - private final ProgramBuilder programBuilder; + private final ProgramBuilder programBuilder = ProgramBuilder.forArch(Program.SourceLanguage.LITMUS, Arch.PTX); private int mainThread; private int threadCount = 0; - public VisitorLitmusPTX(ProgramBuilder pb) { - this.programBuilder = pb; + public VisitorLitmusPTX() { } // ---------------------------------------------------------------------------------------------------------------- @@ -104,7 +105,7 @@ public Object visitThreadDeclaratorList(LitmusPTXParser.ThreadDeclaratorListCont for (LitmusPTXParser.ThreadScopeContext threadScopeContext : ctx.threadScope()) { int ctaID = threadScopeContext.scopeID().ctaID().id; int gpuID = threadScopeContext.scopeID().gpuID().id; - programBuilder.initScopedThread(threadScopeContext.threadId().id, ctaID, gpuID); + programBuilder.newScopedThread(threadScopeContext.threadId().id, ctaID, gpuID); threadCount++; } return null; @@ -133,23 +134,19 @@ public Object visitInstructionRow(LitmusPTXParser.InstructionRowContext ctx) { @Override public Object visitStoreConstant(LitmusPTXParser.StoreConstantContext ctx) { - MemoryObject object = programBuilder.getOrNewObject(ctx.location().getText()); + MemoryObject object = programBuilder.getOrNewMemoryObject(ctx.location().getText()); IConst constant = (IConst) ctx.constant().accept(this); String mo = ctx.mo().content; String scope; switch (mo) { - case Tag.PTX.WEAK: + case Tag.PTX.WEAK -> { if (ctx.scope() != null) { throw new ParsingException("Weak store instruction doesn't need scope: " + ctx.scope().content); } scope = Tag.PTX.SYS; - break; - case Tag.PTX.REL: - case Tag.PTX.RLX: - scope = ctx.scope().content; - break; - default: - throw new ParsingException("Store instruction doesn't support mo: " + mo); + } + case Tag.PTX.REL, Tag.PTX.RLX -> scope = ctx.scope().content; + default -> throw new ParsingException("Store instruction doesn't support mo: " + mo); } Store store = EventFactory.newStoreWithMo(object, constant, mo); store.addTags(scope, ctx.store().storeProxy, Tag.PTX.CON); @@ -158,23 +155,19 @@ public Object visitStoreConstant(LitmusPTXParser.StoreConstantContext ctx) { @Override public Object visitStoreRegister(LitmusPTXParser.StoreRegisterContext ctx) { - MemoryObject object = programBuilder.getOrNewObject(ctx.location().getText()); + MemoryObject object = programBuilder.getOrNewMemoryObject(ctx.location().getText()); Register register = (Register) ctx.register().accept(this); String mo = ctx.mo().content; String scope; switch (mo) { - case Tag.PTX.WEAK: + case Tag.PTX.WEAK -> { if (ctx.scope() != null) { throw new ParsingException("Weak store instruction doesn't need scope: " + ctx.scope().content); } scope = Tag.PTX.SYS; - break; - case Tag.PTX.REL: - case Tag.PTX.RLX: - scope = ctx.scope().content; - break; - default: - throw new ParsingException("Store instruction doesn't support mo: " + mo); + } + case Tag.PTX.REL, Tag.PTX.RLX -> scope = ctx.scope().content; + default -> throw new ParsingException("Store instruction doesn't support mo: " + mo); } Store store = EventFactory.newStoreWithMo(object, register, mo); store.addTags(scope, ctx.store().storeProxy); @@ -191,22 +184,18 @@ public Object visitLocalConstant(LitmusPTXParser.LocalConstantContext ctx) { @Override public Object visitLoadLocation(LitmusPTXParser.LoadLocationContext ctx) { Register register = (Register) ctx.register().accept(this); - MemoryObject location = programBuilder.getOrNewObject(ctx.location().getText()); + MemoryObject location = programBuilder.getOrNewMemoryObject(ctx.location().getText()); String mo = ctx.mo().content; String scope; switch (mo) { - case Tag.PTX.WEAK: + case Tag.PTX.WEAK -> { if (ctx.scope() != null) { throw new ParsingException("Weak load instruction doesn't need scope: " + ctx.scope().content); } scope = Tag.PTX.SYS; - break; - case Tag.PTX.ACQ: - case Tag.PTX.RLX: - scope = ctx.scope().content; - break; - default: - throw new ParsingException("Load instruction doesn't support mo: " + mo); + } + case Tag.PTX.ACQ, Tag.PTX.RLX -> scope = ctx.scope().content; + default -> throw new ParsingException("Load instruction doesn't support mo: " + mo); } Load load = EventFactory.newLoadWithMo(register, location, mo); load.addTags(scope, ctx.load().loadProxy); @@ -216,7 +205,7 @@ public Object visitLoadLocation(LitmusPTXParser.LoadLocationContext ctx) { @Override public Object visitAtomConstant(LitmusPTXParser.AtomConstantContext ctx) { Register register_destination = (Register) ctx.register().accept(this); - MemoryObject object = programBuilder.getOrNewObject(ctx.location().getText()); + MemoryObject object = programBuilder.getOrNewMemoryObject(ctx.location().getText()); IConst constant = (IConst) ctx.constant().accept(this); IOpBin op = ctx.operation().op; String mo = ctx.mo().content; @@ -226,7 +215,7 @@ public Object visitAtomConstant(LitmusPTXParser.AtomConstantContext ctx) { } else { throw new ParsingException("Atom instruction doesn't support mo: " + mo); } - AtomOp atom = EventFactory.PTX.newAtomOp(object, register_destination, constant, op, mo, scope); + PTXAtomOp atom = EventFactory.PTX.newAtomOp(object, register_destination, constant, op, mo, scope); atom.addTags(ctx.atom().atomProxy); return programBuilder.addChild(mainThread, atom); } @@ -234,7 +223,7 @@ public Object visitAtomConstant(LitmusPTXParser.AtomConstantContext ctx) { @Override public Object visitAtomRegister(LitmusPTXParser.AtomRegisterContext ctx) { Register register_destination = programBuilder.getOrNewRegister(mainThread, ctx.register().get(0).getText(), TypeFactory.getInstance().getArchType()); - MemoryObject object = programBuilder.getOrNewObject(ctx.location().getText()); + MemoryObject object = programBuilder.getOrNewMemoryObject(ctx.location().getText()); Register register_operand = programBuilder.getOrNewRegister(mainThread, ctx.register().get(1).getText(), TypeFactory.getInstance().getArchType()); IOpBin op = ctx.operation().op; String mo = ctx.mo().content; @@ -244,17 +233,16 @@ public Object visitAtomRegister(LitmusPTXParser.AtomRegisterContext ctx) { } else { throw new ParsingException("Atom instruction doesn't support mo: " + mo); } - AtomOp atom = EventFactory.PTX.newAtomOp(object, register_destination, register_operand, op, mo, scope); + PTXAtomOp atom = EventFactory.PTX.newAtomOp(object, register_destination, register_operand, op, mo, scope); atom.addTags(ctx.atom().atomProxy); return programBuilder.addChild(mainThread, atom); } @Override public Object visitRedConstant(LitmusPTXParser.RedConstantContext ctx) { - MemoryObject object = programBuilder.getOrNewObject(ctx.location().getText()); + MemoryObject object = programBuilder.getOrNewMemoryObject(ctx.location().getText()); IConst constant = (IConst) ctx.constant().accept(this); IOpBin op = ctx.operation().op; - Register register_destination = programBuilder.getOrNewRegister(mainThread, null, TypeFactory.getInstance().getArchType()); String mo = ctx.mo().content; String scope; if (mo.equals(Tag.PTX.ACQ_REL) || mo.equals(Tag.PTX.RLX)) { @@ -262,17 +250,16 @@ public Object visitRedConstant(LitmusPTXParser.RedConstantContext ctx) { } else { throw new ParsingException("Red instruction doesn't support mo: " + mo); } - RedOp red = EventFactory.PTX.newRedOp(object, register_destination, constant, op, mo, scope); + PTXRedOp red = EventFactory.PTX.newRedOp(object, constant, op, mo, scope); red.addTags(ctx.red().redProxy); return programBuilder.addChild(mainThread, red); } @Override public Object visitRedRegister(LitmusPTXParser.RedRegisterContext ctx) { - MemoryObject object = programBuilder.getOrNewObject(ctx.location().getText()); + MemoryObject object = programBuilder.getOrNewMemoryObject(ctx.location().getText()); Register register_operand = (Register) ctx.register().accept(this); IOpBin op = ctx.operation().op; - Register register_destination = programBuilder.getOrNewRegister(mainThread, null, TypeFactory.getInstance().getArchType()); String mo = ctx.mo().content; String scope; if (mo.equals(Tag.PTX.ACQ_REL) || mo.equals(Tag.PTX.RLX)) { @@ -280,7 +267,7 @@ public Object visitRedRegister(LitmusPTXParser.RedRegisterContext ctx) { } else { throw new ParsingException("Red instruction doesn't support mo: " + mo); } - RedOp red = EventFactory.PTX.newRedOp(object, register_destination, register_operand, op, mo, scope); + PTXRedOp red = EventFactory.PTX.newRedOp(object, register_operand, op, mo, scope); red.addTags(ctx.red().redProxy); return programBuilder.addChild(mainThread, red); } @@ -315,7 +302,7 @@ public Object visitFenceAlias(LitmusPTXParser.FenceAliasContext ctx) { @Override public Object visitBarrier(LitmusPTXParser.BarrierContext ctx) { - IExpr fenceId = (IExpr) ctx.barID().accept(this); + Expression fenceId = (Expression) ctx.barID().accept(this); Fence fence = EventFactory.PTX.newFenceWithId(ctx.getText().toLowerCase(), fenceId); return programBuilder.addChild(mainThread, fence); } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusRISCV.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusRISCV.java index b377491c5a..8d43ff7dcc 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusRISCV.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusRISCV.java @@ -1,5 +1,6 @@ package com.dat3m.dartagnan.parsers.program.visitors; +import com.dat3m.dartagnan.configuration.Arch; import com.dat3m.dartagnan.exception.ParsingException; import com.dat3m.dartagnan.expression.Expression; import com.dat3m.dartagnan.expression.ExpressionFactory; @@ -10,6 +11,7 @@ import com.dat3m.dartagnan.parsers.LitmusRISCVParser; import com.dat3m.dartagnan.parsers.program.utils.AssertionHelper; import com.dat3m.dartagnan.parsers.program.utils.ProgramBuilder; +import com.dat3m.dartagnan.program.Program; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.EventFactory; import com.dat3m.dartagnan.program.event.Tag; @@ -18,15 +20,14 @@ public class VisitorLitmusRISCV extends LitmusRISCVBaseVisitor { - private final TypeFactory types = TypeFactory.getInstance(); - private final ExpressionFactory expressions = ExpressionFactory.getInstance(); - private final ProgramBuilder programBuilder; + private final ProgramBuilder programBuilder = ProgramBuilder.forArch(Program.SourceLanguage.LITMUS, Arch.RISCV); + private final TypeFactory types = programBuilder.getTypeFactory(); + private final ExpressionFactory expressions = programBuilder.getExpressionFactory(); private final IntegerType archType = types.getArchType(); private int mainThread; private int threadCount = 0; - public VisitorLitmusRISCV(ProgramBuilder pb){ - this.programBuilder = pb; + public VisitorLitmusRISCV(){ } // ---------------------------------------------------------------------------------------------------------------- @@ -89,7 +90,7 @@ public Object visitVariableDeclaratorLocationLocation(LitmusRISCVParser.Variable @Override public Object visitThreadDeclaratorList(LitmusRISCVParser.ThreadDeclaratorListContext ctx) { for(LitmusRISCVParser.ThreadIdContext threadCtx : ctx.threadId()){ - programBuilder.initThread(threadCtx.id); + programBuilder.newThread(threadCtx.id); threadCount++; } return null; @@ -214,12 +215,12 @@ public Object visitSc(LitmusRISCVParser.ScContext ctx) { @Override public Object visitLabel(LitmusRISCVParser.LabelContext ctx) { - return programBuilder.addChild(mainThread, programBuilder.getOrCreateLabel(ctx.Label().getText())); + return programBuilder.addChild(mainThread, programBuilder.getOrCreateLabel(mainThread, ctx.Label().getText())); } @Override public Object visitBranchCond(LitmusRISCVParser.BranchCondContext ctx) { - Label label = programBuilder.getOrCreateLabel(ctx.Label().getText()); + Label label = programBuilder.getOrCreateLabel(mainThread, ctx.Label().getText()); Register r1 = programBuilder.getOrNewRegister(mainThread, ctx.register(0).getText(), archType); Register r2 = programBuilder.getOrNewRegister(mainThread, ctx.register(1).getText(), archType); Expression expr = expressions.makeBinary(r1, ctx.cond().op, r2); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusX86.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusX86.java index 675026d11d..731fc64a80 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusX86.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/VisitorLitmusX86.java @@ -1,5 +1,6 @@ package com.dat3m.dartagnan.parsers.program.visitors; +import com.dat3m.dartagnan.configuration.Arch; import com.dat3m.dartagnan.exception.ParsingException; import com.dat3m.dartagnan.expression.ExpressionFactory; import com.dat3m.dartagnan.expression.IValue; @@ -9,6 +10,7 @@ import com.dat3m.dartagnan.parsers.LitmusX86Parser; import com.dat3m.dartagnan.parsers.program.utils.AssertionHelper; import com.dat3m.dartagnan.parsers.program.utils.ProgramBuilder; +import com.dat3m.dartagnan.program.Program; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.EventFactory; import com.dat3m.dartagnan.program.memory.MemoryObject; @@ -21,15 +23,14 @@ public class VisitorLitmusX86 extends LitmusX86BaseVisitor { private final static ImmutableSet fences = ImmutableSet.of(MFENCE); - private final TypeFactory types = TypeFactory.getInstance(); - private final ExpressionFactory expressions = ExpressionFactory.getInstance(); - private final ProgramBuilder programBuilder; + private final ProgramBuilder programBuilder = ProgramBuilder.forArch(Program.SourceLanguage.LITMUS, Arch.TSO); + private final TypeFactory types = programBuilder.getTypeFactory(); + private final ExpressionFactory expressions = programBuilder.getExpressionFactory(); private final IntegerType archType = types.getArchType(); private int mainThread; private int threadCount = 0; - public VisitorLitmusX86(ProgramBuilder pb){ - this.programBuilder = pb; + public VisitorLitmusX86(){ } // ---------------------------------------------------------------------------------------------------------------- @@ -92,7 +93,7 @@ public Object visitVariableDeclaratorLocationLocation(LitmusX86Parser.VariableDe @Override public Object visitThreadDeclaratorList(LitmusX86Parser.ThreadDeclaratorListContext ctx) { for(LitmusX86Parser.ThreadIdContext threadCtx : ctx.threadId()){ - programBuilder.initThread(threadCtx.id); + programBuilder.newThread(threadCtx.id); threadCount++; } return null; @@ -121,13 +122,13 @@ public Object visitLoadValueToRegister(LitmusX86Parser.LoadValueToRegisterContex @Override public Object visitLoadLocationToRegister(LitmusX86Parser.LoadLocationToRegisterContext ctx) { Register register = programBuilder.getOrNewRegister(mainThread, ctx.register().getText(), archType); - MemoryObject object = programBuilder.getOrNewObject(ctx.location().getText()); + MemoryObject object = programBuilder.getOrNewMemoryObject(ctx.location().getText()); return programBuilder.addChild(mainThread, EventFactory.newLoad(register, object)); } @Override public Object visitStoreValueToLocation(LitmusX86Parser.StoreValueToLocationContext ctx) { - MemoryObject object = programBuilder.getOrNewObject(ctx.location().getText()); + MemoryObject object = programBuilder.getOrNewMemoryObject(ctx.location().getText()); IValue constant = expressions.parseValue(ctx.constant().getText(), archType); return programBuilder.addChild(mainThread, EventFactory.newStore(object, constant)); } @@ -135,14 +136,14 @@ public Object visitStoreValueToLocation(LitmusX86Parser.StoreValueToLocationCont @Override public Object visitStoreRegisterToLocation(LitmusX86Parser.StoreRegisterToLocationContext ctx) { Register register = programBuilder.getOrErrorRegister(mainThread, ctx.register().getText()); - MemoryObject object = programBuilder.getOrNewObject(ctx.location().getText()); + MemoryObject object = programBuilder.getOrNewMemoryObject(ctx.location().getText()); return programBuilder.addChild(mainThread, EventFactory.newStore(object, register)); } @Override public Object visitExchangeRegisterLocation(LitmusX86Parser.ExchangeRegisterLocationContext ctx) { Register register = programBuilder.getOrErrorRegister(mainThread, ctx.register().getText()); - MemoryObject object = programBuilder.getOrNewObject(ctx.location().getText()); + MemoryObject object = programBuilder.getOrNewMemoryObject(ctx.location().getText()); return programBuilder.addChild(mainThread, EventFactory.X86.newExchange(object, register)); } @@ -179,7 +180,7 @@ public Object visitAddRegisterValue(LitmusX86Parser.AddRegisterValueContext ctx) @Override public Object visitFence(LitmusX86Parser.FenceContext ctx) { String name = ctx.getText().toLowerCase(); - if(fences.contains(name)){ + if(fences.contains(name)) { return programBuilder.addChild(mainThread, EventFactory.newFence(name)); } throw new ParsingException("Unrecognised fence " + name); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/DummyProcedures.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/DummyProcedures.java index e73701c7ae..ef6004aae2 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/DummyProcedures.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/DummyProcedures.java @@ -1,12 +1,19 @@ package com.dat3m.dartagnan.parsers.program.visitors.boogie; +import com.dat3m.dartagnan.parsers.BoogieParser; + import java.util.Arrays; import java.util.List; public class DummyProcedures { - public static List DUMMYPROCEDURES = Arrays.asList( - "boogie_si_record", - "printf", - "printk."); -} \ No newline at end of file + public static List DUMMYPROCEDURES = Arrays.asList( + "boogie_si_record", + "printf", + "printk."); + + public static boolean handleDummyProcedures(VisitorBoogie visitor, BoogieParser.Call_cmdContext ctx) { + final String funcName = visitor.getFunctionNameFromCallContext(ctx); + return DUMMYPROCEDURES.stream().anyMatch(funcName::startsWith); + } +} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/LkmmProcedures.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/LkmmProcedures.java index 85f0965675..2361c9bcea 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/LkmmProcedures.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/LkmmProcedures.java @@ -1,102 +1,96 @@ package com.dat3m.dartagnan.parsers.program.visitors.boogie; +import com.dat3m.dartagnan.expression.Expression; import com.dat3m.dartagnan.expression.IConst; -import com.dat3m.dartagnan.expression.IExpr; import com.dat3m.dartagnan.expression.op.IOpBin; import com.dat3m.dartagnan.parsers.BoogieParser; import com.dat3m.dartagnan.parsers.BoogieParser.Call_cmdContext; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.EventFactory; -import com.dat3m.dartagnan.program.event.Tag; import com.dat3m.dartagnan.program.event.Tag.Linux; + import java.util.Arrays; import java.util.List; public class LkmmProcedures { - public static List LKMMPROCEDURES = Arrays.asList( - "__LKMM_LOAD", - "__LKMM_STORE", - "__LKMM_XCHG", - "__LKMM_CMPXCHG", - "__LKMM_ATOMIC_FETCH_OP", - "__LKMM_ATOMIC_OP", - "__LKMM_ATOMIC_OP_RETURN", - "__LKMM_FENCE", - "__LKMM_SPIN_LOCK", - "__LKMM_SPIN_UNLOCK"); + public static List LKMMPROCEDURES = Arrays.asList( + "__LKMM_LOAD", + "__LKMM_STORE", + "__LKMM_XCHG", + "__LKMM_CMPXCHG", + "__LKMM_ATOMIC_FETCH_OP", + "__LKMM_ATOMIC_OP", + "__LKMM_ATOMIC_OP_RETURN", + "__LKMM_FENCE", + "__LKMM_SPIN_LOCK", + "__LKMM_SPIN_UNLOCK"); + + public static boolean handleLkmmFunction(VisitorBoogie visitor, Call_cmdContext ctx) { + final String funcName = visitor.getFunctionNameFromCallContext(ctx); + if (LKMMPROCEDURES.stream().noneMatch(funcName::equals)) { + return false; + } + + final String registerName = ctx.call_params().Ident(0).getText(); + final Register reg = visitor.getRegister(registerName); // May be NULL - public static void handleLkmmFunction(VisitorBoogie visitor, Call_cmdContext ctx) { - String name = ctx.call_params().Define() == null ? ctx.call_params().Ident(0).getText() : ctx.call_params().Ident(1).getText(); - List params = ctx.call_params().exprs().expr(); + final List params = ctx.call_params().exprs().expr(); + final Expression p0 = (Expression) params.get(0).accept(visitor); + final Expression p1 = params.size() > 1 ? (Expression)params.get(1).accept(visitor) : null; + final Expression p2 = params.size() > 2 ? (Expression)params.get(2).accept(visitor) : null; + final Expression p3 = params.size() > 3 ? (Expression)params.get(3).accept(visitor) : null; - Register reg = visitor.programBuilder.getOrNewRegister(visitor.threadCount, visitor.currentScope.getID() + ":" + ctx.call_params().Ident(0).getText()); - - Object p0 = params.get(0).accept(visitor); - Object p1 = params.size() > 1 ? params.get(1).accept(visitor) : null; - Object p2 = params.size() > 2 ? params.get(2).accept(visitor) : null; - Object p3 = params.size() > 3 ? params.get(3).accept(visitor) : null; - - String mo; - IOpBin op; - - switch (name) { - case "__LKMM_LOAD": - mo = Linux.intToMo(((IConst) p1).getValueAsInt()); - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.Linux.newLKMMLoad(reg, (IExpr) p0, mo)) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - return; - case "__LKMM_STORE": - mo = Linux.intToMo(((IConst) p2).getValueAsInt()); - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.Linux.newLKMMStore((IExpr) p0, (IExpr) p1, mo.equals(Linux.MO_MB) ? Tag.Linux.MO_ONCE : mo)) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - if(mo.equals(Tag.Linux.MO_MB)){ - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.Linux.newMemoryBarrier()) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - } - return; - case "__LKMM_XCHG": - mo = Linux.intToMo(((IConst) p2).getValueAsInt()); - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.Linux.newRMWExchange((IExpr) p0, reg, (IExpr) p1, mo)) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - return; - case "__LKMM_CMPXCHG": - mo = Linux.intToMo(((IConst) p3).getValueAsInt()); - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.Linux.newRMWCompareExchange((IExpr) p0, reg, (IExpr) p1, (IExpr) p2, mo)) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - return; - case "__LKMM_ATOMIC_FETCH_OP": - mo = Linux.intToMo(((IConst) p2).getValueAsInt()); - op = IOpBin.intToOp(((IConst) p3).getValueAsInt()); - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.Linux.newRMWFetchOp((IExpr) p0, reg, (IExpr) p1, op, mo)) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - return; - case "__LKMM_ATOMIC_OP_RETURN": - mo = Linux.intToMo(((IConst) p2).getValueAsInt()); - op = IOpBin.intToOp(((IConst) p3).getValueAsInt()); - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.Linux.newRMWOpReturn((IExpr) p0, reg, (IExpr) p1, op, mo)) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - return; - case "__LKMM_ATOMIC_OP": - op = IOpBin.intToOp(((IConst) p2).getValueAsInt()); - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.Linux.newRMWOp((IExpr) p0, reg, (IExpr) p1, op)) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - return; - case "__LKMM_FENCE": - String fence = Linux.intToMo(((IConst) p0).getValueAsInt()); - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.Linux.newLKMMFence(fence)) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - return; - case "__LKMM_SPIN_LOCK": - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.Linux.newLock((IExpr) p0)) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - return; - case "__LKMM_SPIN_UNLOCK": - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.Linux.newUnlock((IExpr) p0)) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - return; - default: - throw new UnsupportedOperationException(name + " procedure is not part of LKMMPROCEDURES"); - } - } + String mo; + IOpBin op; + switch (funcName) { + case "__LKMM_LOAD" -> { + mo = Linux.intToMo(((IConst) p1).getValueAsInt()); + visitor.addEvent(EventFactory.Linux.newLKMMLoad(reg, p0, mo)); + } + case "__LKMM_STORE" -> { + mo = Linux.intToMo(((IConst) p2).getValueAsInt()); + visitor.addEvent(EventFactory.Linux.newLKMMStore(p0, p1, mo.equals(Linux.MO_MB) ? Linux.MO_ONCE : mo)); + if (mo.equals(Linux.MO_MB)) { + visitor.addEvent(EventFactory.Linux.newMemoryBarrier()); + } + } + case "__LKMM_XCHG" -> { + mo = Linux.intToMo(((IConst) p2).getValueAsInt()); + visitor.addEvent(EventFactory.Linux.newRMWExchange(p0, reg, p1, mo)); + } + case "__LKMM_CMPXCHG" -> { + mo = Linux.intToMo(((IConst) p3).getValueAsInt()); + visitor.addEvent(EventFactory.Linux.newRMWCompareExchange(p0, reg, p1, p2, mo)); + } + case "__LKMM_ATOMIC_FETCH_OP" -> { + mo = Linux.intToMo(((IConst) p2).getValueAsInt()); + op = IOpBin.intToOp(((IConst) p3).getValueAsInt()); + visitor.addEvent(EventFactory.Linux.newRMWFetchOp(p0, reg, p1, op, mo)); + } + case "__LKMM_ATOMIC_OP_RETURN" -> { + mo = Linux.intToMo(((IConst) p2).getValueAsInt()); + op = IOpBin.intToOp(((IConst) p3).getValueAsInt()); + visitor.addEvent(EventFactory.Linux.newRMWOpReturn(p0, reg, p1, op, mo)); + } + case "__LKMM_ATOMIC_OP" -> { + op = IOpBin.intToOp(((IConst) p2).getValueAsInt()); + visitor.addEvent(EventFactory.Linux.newRMWOp( p0, p1, op)); + } + case "__LKMM_FENCE" -> { + String fence = Linux.intToMo(((IConst) p0).getValueAsInt()); + visitor.addEvent(EventFactory.Linux.newLKMMFence(fence)); + } + case "__LKMM_SPIN_LOCK" -> { + visitor.addEvent(EventFactory.Linux.newLock(p0)); + } + case "__LKMM_SPIN_UNLOCK" -> { + visitor.addEvent(EventFactory.Linux.newUnlock(p0)); + } + default -> { + return false; + } + } + return true; + } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/LlvmProcedures.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/LlvmProcedures.java index 1abd775995..dd27329f51 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/LlvmProcedures.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/LlvmProcedures.java @@ -45,125 +45,87 @@ public class LlvmProcedures { "llvm.umin.i32", "llvm.umin.i64", "llvm.ctlz.i32", - "llvm.ctlz.i64"); + "llvm.ctlz.i64" + ); - public static void handleLlvmFunction(VisitorBoogie visitor, Call_cmdContext ctx) { - String name = ctx.call_params().Define() == null ? ctx.call_params().Ident(0).getText() : ctx.call_params().Ident(1).getText(); - List params = ctx.call_params().exprs().expr(); + public static boolean handleLlvmFunction(VisitorBoogie visitor, Call_cmdContext ctx) { + final String funcName = visitor.getFunctionNameFromCallContext(ctx); + if (LLVMPROCEDURES.stream().noneMatch(funcName::equals)) { + return false; + } - String regName = visitor.currentScope.getID() + ":" + ctx.call_params().Ident(0).getText(); - Register reg = visitor.programBuilder.getOrNewRegister(visitor.threadCount, regName); + final String regName = ctx.call_params().Ident(0).getText(); + final Register reg = visitor.getRegister(regName); // May be NULL - Expression p0 = (Expression) params.get(0).accept(visitor); - Expression p1 = params.size() > 1 ? (Expression) params.get(1).accept(visitor) : null; - Expression p2 = params.size() > 2 ? (Expression) params.get(2).accept(visitor) : null; - Expression p3 = params.size() > 3 ? (Expression) params.get(3).accept(visitor) : null; + final List params = ctx.call_params().exprs().expr(); + final Expression p0 = (Expression) params.get(0).accept(visitor); + final Expression p1 = params.size() > 1 ? (Expression) params.get(1).accept(visitor) : null; + final Expression p2 = params.size() > 2 ? (Expression) params.get(2).accept(visitor) : null; + final Expression p3 = params.size() > 3 ? (Expression) params.get(3).accept(visitor) : null; String mo; - - // For intrinsics - Expression cond; - - switch (name) { - case "__llvm_atomic8_load": - case "__llvm_atomic16_load": - case "__llvm_atomic32_load": - case "__llvm_atomic64_load": + Expression cond; // For intrinsics + switch (funcName) { + case"__llvm_atomic8_load", "__llvm_atomic16_load", "__llvm_atomic32_load", "__llvm_atomic64_load" -> { mo = C11.intToMo(((IConst) p1).getValueAsInt()); - visitor.programBuilder.addChild(visitor.threadCount, Llvm.newLoad(reg, p0, mo)) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - return; - case "__llvm_atomic8_store": - case "__llvm_atomic16_store": - case "__llvm_atomic32_store": - case "__llvm_atomic64_store": + visitor.addEvent(Llvm.newLoad(reg, p0, mo)); + } + case "__llvm_atomic8_store", "__llvm_atomic16_store", "__llvm_atomic32_store", "__llvm_atomic64_store" -> { mo = C11.intToMo(((IConst) p2).getValueAsInt()); - visitor.programBuilder.addChild(visitor.threadCount, Llvm.newStore(p0, p1, mo)) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - return; - case "__llvm_atomic_fence": + visitor.addEvent(Llvm.newStore(p0, p1, mo)); + } + case "__llvm_atomic_fence" -> { mo = C11.intToMo(((IConst) p0).getValueAsInt()); - visitor.programBuilder.addChild(visitor.threadCount, Llvm.newFence(mo)) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - return; - case "__llvm_atomic8_cmpxchg": - case "__llvm_atomic16_cmpxchg": - case "__llvm_atomic32_cmpxchg": - case "__llvm_atomic64_cmpxchg": + visitor.addEvent(Llvm.newFence(mo)); + } + case "__llvm_atomic8_cmpxchg", "__llvm_atomic16_cmpxchg", "__llvm_atomic32_cmpxchg", "__llvm_atomic64_cmpxchg" -> { // Since we don't support struct types, we instead model each member as a // register. - // It is the responsibility of each LLVM istruction creating a structure to + // It is the responsibility of each LLVM instruction creating a structure to // create such registers, // then when calling "extractvalue" we can check if the member was properly // initialized - Register oldValueRegister = visitor.programBuilder.getOrNewRegister(visitor.threadCount, regName + "(0)"); - Register cmpRegister = visitor.programBuilder.getOrNewRegister(visitor.threadCount, regName + "(1)"); + final Register oldValueRegister = visitor.getOrNewRegister(regName + "(0)"); + final Register cmpRegister = visitor.getOrNewRegister(regName + "(1)", + visitor.types.getBooleanType()); // The compilation of Llvm.newCompareExchange will // assign the correct values to the registers above mo = C11.intToMo(((IConst) p3).getValueAsInt()); - visitor.programBuilder - .addChild(visitor.threadCount, Llvm.newCompareExchange(oldValueRegister, cmpRegister, p0, p1, p2, mo, true)) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - return; - case "__llvm_atomic8_rmw": - case "__llvm_atomic16_rmw": - case "__llvm_atomic32_rmw": - case "__llvm_atomic64_rmw": + visitor.addEvent(Llvm.newCompareExchange(oldValueRegister, cmpRegister, p0, p1, p2, mo, true)); + } + case "__llvm_atomic8_rmw", "__llvm_atomic16_rmw", "__llvm_atomic32_rmw", "__llvm_atomic64_rmw" -> { mo = C11.intToMo(((IConst) p2).getValueAsInt()); IOpBin op; switch (((IConst) p3).getValueAsInt()) { - case 0: - visitor.programBuilder - .addChild(visitor.threadCount, Llvm.newExchange(reg, p0, p1, mo)) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - return; - case 1: - op = IOpBin.PLUS; - break; - case 2: - op = IOpBin.MINUS; - break; - case 3: - op = IOpBin.AND; - break; - case 4: - op = IOpBin.OR; - break; - case 5: - op = IOpBin.XOR; - break; - default: - throw new UnsupportedOperationException("Operation " + params.get(3).getText() + " is not recognized."); + case 0 -> { + visitor.addEvent(Llvm.newExchange(reg, p0, p1, mo)); + return true; + } + case 1 -> op = IOpBin.PLUS; + case 2 -> op = IOpBin.MINUS; + case 3 -> op = IOpBin.AND; + case 4 -> op = IOpBin.OR; + case 5 -> op = IOpBin.XOR; + default -> + throw new UnsupportedOperationException("Operation " + params.get(3).getText() + " is not recognized."); } - visitor.programBuilder.addChild(visitor.threadCount, Llvm.newRMW(reg, p0, p1, op, mo)) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - return; - case "llvm.smax.i32": - case "llvm.smax.i64": - case "llvm.umax.i32": - case "llvm.umax.i64": - cond = visitor.expressions.makeGT(p0, p1, name.contains("smax")); - visitor.programBuilder - .addChild(visitor.threadCount, EventFactory.newLocal(reg, visitor.expressions.makeConditional(cond, p0, p1))) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - return; - case "llvm.smin.i32": - case "llvm.smin.i64": - case "llvm.umin.i32": - case "llvm.umin.i64": - cond = visitor.expressions.makeLT(p0, p1, name.contains("smin")); - visitor.programBuilder - .addChild(visitor.threadCount, EventFactory.newLocal(reg, visitor.expressions.makeConditional(cond, p0, p1))) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - return; - case "llvm.ctlz.i32": - case "llvm.ctlz.i64": - visitor.programBuilder - .addChild(visitor.threadCount, EventFactory.newLocal(reg, visitor.expressions.makeCTLZ(p0, (IntegerType) p0.getType()))) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - return; - default: - throw new UnsupportedOperationException(name + " procedure is not part of LLVMPROCEDURES"); + visitor.addEvent(Llvm.newRMW(reg, p0, p1, op, mo)); + } + case "llvm.smax.i32", "llvm.smax.i64", "llvm.umax.i32", "llvm.umax.i64" -> { + cond = visitor.expressions.makeGT(p0, p1, funcName.contains("smax")); + visitor.addEvent(EventFactory.newLocal(reg, visitor.expressions.makeConditional(cond, p0, p1))); + } + case "llvm.smin.i32", "llvm.smin.i64", "llvm.umin.i32", "llvm.umin.i64" -> { + cond = visitor.expressions.makeLT(p0, p1, funcName.contains("smin")); + visitor.addEvent(EventFactory.newLocal(reg, visitor.expressions.makeConditional(cond, p0, p1))); + } + case "llvm.ctlz.i32", "llvm.ctlz.i64" -> { + visitor.addEvent(EventFactory.newLocal(reg, visitor.expressions.makeCTLZ(p0, (IntegerType) p0.getType()))); + } + default -> { + return false; + } } + return true; } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/PthreadsProcedures.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/PthreadsProcedures.java index cc1258443f..148df0ebc5 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/PthreadsProcedures.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/PthreadsProcedures.java @@ -1,120 +1,66 @@ package com.dat3m.dartagnan.parsers.program.visitors.boogie; -import com.dat3m.dartagnan.exception.ParsingException; import com.dat3m.dartagnan.expression.Expression; -import com.dat3m.dartagnan.expression.IExpr; import com.dat3m.dartagnan.parsers.BoogieParser.Call_cmdContext; import com.dat3m.dartagnan.parsers.BoogieParser.ExprContext; import com.dat3m.dartagnan.parsers.BoogieParser.ExprsContext; -import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.EventFactory; -import com.dat3m.dartagnan.program.event.core.Event; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; public class PthreadsProcedures { - - public static List PTHREADPROCEDURES = Arrays.asList( - "pthread_create", - "pthread_cond_init", - "pthread_cond_wait", - "pthread_cond_signal", - "pthread_cond_broadcast", - "pthread_exit", - "pthread_getspecific", - "pthread_join", - "__pthread_join", // generated by Clang on MacOS - "pthread_key_create", - "pthread_mutex_init", - "pthread_mutex_destroy", - "pthread_mutex_lock", - "pthread_mutex_unlock", - "pthread_setspecific"); - public static void handlePthreadsFunctions(VisitorBoogie visitor, Call_cmdContext ctx) { - String name = ctx.call_params().Define() == null ? ctx.call_params().Ident(0).getText() : ctx.call_params().Ident(1).getText(); - switch(name) { - case "pthread_create": - pthread_create(visitor, ctx); - break; - case "__pthread_join": - case "pthread_join": - // VisitorBoogie already took care of creating the join event - // when it parsed the previous load. - break; - case "pthread_cond_init": - case "pthread_cond_wait": - case "pthread_cond_signal": - case "pthread_cond_broadcast": - case "pthread_exit": - case "pthread_mutex_destroy": - break; - case "pthread_mutex_init": - mutexInit(visitor, ctx); - break; - case "pthread_mutex_lock": - mutexLock(visitor, ctx); - break; - case "pthread_mutex_unlock": - mutexUnlock(visitor, ctx); - break; - default: - throw new ParsingException(name + " cannot be handled"); - } - } - - private static void pthread_create(VisitorBoogie visitor, Call_cmdContext ctx) { - visitor.currentThread++; + public static boolean handlePthreadsFunctions(VisitorBoogie visitor, Call_cmdContext ctx) { + final String funcName = visitor.getFunctionNameFromCallContext(ctx); + switch (funcName) { + case "pthread_cond_init": + case "pthread_cond_wait": + case "pthread_cond_signal": + case "pthread_cond_broadcast": + case "pthread_mutex_destroy": + // TODO: These are skipped for now + VisitorBoogie.logger.warn( + "Skipped call to {} because the function is not supported right now.", funcName); + return true; + case "pthread_exit": + final Expression retVal = (Expression) ctx.call_params().exprs().expr(0).accept(visitor); + visitor.addEvent(EventFactory.newFunctionReturn(retVal)); + return true; + case "pthread_mutex_init": + mutexInit(visitor, ctx); + return true; + case "pthread_mutex_lock": + mutexLock(visitor, ctx); + return true; + case "pthread_mutex_unlock": + mutexUnlock(visitor, ctx); + return true; + default: + // pthread_create and pthread_join are handled by a dedicated pass, so we skip them here. + return false; + } + } + + private static void mutexInit(VisitorBoogie visitor, Call_cmdContext ctx) { + final ExprContext lock = ctx.call_params().exprs().expr(0); + final Expression lockAddress = (Expression) lock.accept(visitor); + final Expression value = (Expression) ctx.call_params().exprs().expr(1).accept(visitor); + if (lockAddress != null) { + visitor.addEvent(EventFactory.Pthread.newInitLock(lock.getText(), lockAddress, value)); + } + } - visitor.threadCallingValues.put(visitor.currentThread, new ArrayList<>()); - Expression callingValue = (Expression)ctx.call_params().exprs().expr().get(3).accept(visitor); - visitor.threadCallingValues.get(visitor.currentThread).add(callingValue); + private static void mutexLock(VisitorBoogie visitor, Call_cmdContext ctx) { + final ExprsContext lock = ctx.call_params().exprs(); + final Expression lockAddress = (Expression) lock.accept(visitor); + if (lockAddress != null) { + visitor.addEvent(EventFactory.Pthread.newLock(lock.getText(), lockAddress)); + } + } - IExpr pointer = (IExpr)ctx.call_params().exprs().expr(0).accept(visitor); - String threadName = ctx.call_params().exprs().expr().get(2).getText(); - visitor.pool.add(pointer, threadName, visitor.threadCount); - - Event matcher = EventFactory.newStringAnnotation("// Spawning thread associated to " + pointer); - visitor.programBuilder.addChild(visitor.threadCount, matcher); - visitor.pool.addMatcher(pointer, matcher); - - visitor.allocations.add(pointer); - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.Pthread.newCreate(pointer, threadName)) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - Register reg = visitor.programBuilder.getOrNewRegister(visitor.threadCount, visitor.currentScope.getID() + ":" + ctx.call_params().Ident(0).getText()); - Expression zero = visitor.expressions.makeZero(reg.getType()); - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.newLocal(reg, zero)); - } - - private static void mutexInit(VisitorBoogie visitor, Call_cmdContext ctx) { - ExprContext lock = ctx.call_params().exprs().expr(0); - IExpr lockAddress = (IExpr)lock.accept(visitor); - IExpr value = (IExpr)ctx.call_params().exprs().expr(1).accept(visitor); - if(lockAddress != null) { - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.Pthread.newInitLock(lock.getText(), lockAddress, value)) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - } - } - - private static void mutexLock(VisitorBoogie visitor, Call_cmdContext ctx) { - ExprsContext lock = ctx.call_params().exprs(); - Register register = visitor.programBuilder.getOrNewRegister(visitor.threadCount, null); - IExpr lockAddress = (IExpr)lock.accept(visitor); - if(lockAddress != null) { - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.Pthread.newLock(lock.getText(), lockAddress, register)) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - } - } - - private static void mutexUnlock(VisitorBoogie visitor, Call_cmdContext ctx) { - ExprsContext lock = ctx.call_params().exprs(); - Register register = visitor.programBuilder.getOrNewRegister(visitor.threadCount, null); - IExpr lockAddress = (IExpr)lock.accept(visitor); - if(lockAddress != null) { - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.Pthread.newUnlock(lock.getText(), lockAddress, register)) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - } - } + private static void mutexUnlock(VisitorBoogie visitor, Call_cmdContext ctx) { + final ExprsContext lock = ctx.call_params().exprs(); + final Expression lockAddress = (Expression) lock.accept(visitor); + if (lockAddress != null) { + visitor.addEvent(EventFactory.Pthread.newUnlock(lock.getText(), lockAddress)); + } + } } \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/StdProcedures.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/StdProcedures.java index 9a5761fb17..8df53e2cb6 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/StdProcedures.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/StdProcedures.java @@ -1,128 +1,95 @@ package com.dat3m.dartagnan.parsers.program.visitors.boogie; import com.dat3m.dartagnan.exception.ParsingException; -import com.dat3m.dartagnan.expression.IExpr; -import com.dat3m.dartagnan.expression.IValue; +import com.dat3m.dartagnan.expression.Expression; import com.dat3m.dartagnan.parsers.BoogieParser.Call_cmdContext; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.EventFactory; -import java.math.BigInteger; -import java.util.Arrays; -import java.util.List; - public class StdProcedures { - public static List STDPROCEDURES = Arrays.asList( - "get_my_tid", - "devirtbounce", - "external_alloc", - "$alloc", - "__assert_rtn", // generated on MacOS - "assert_.i32", - "__assert_fail", - "$malloc", - "calloc", - "malloc", - "fopen", - "free", - "memcpy", - "$memcpy", - "memset", - "$memset", - "nvram_read_byte", - "strcpy", - "strcmp", - "strncpy", - "llvm.stackrestore", - "llvm.stacksave", - "llvm.lifetime.start", - "llvm.lifetime.end"); - - public static void handleStdFunction(VisitorBoogie visitor, Call_cmdContext ctx) { - String name = ctx.call_params().Define() == null ? ctx.call_params().Ident(0).getText() : ctx.call_params().Ident(1).getText(); - if (name.equals("$alloc") || name.equals("$malloc") || name.equals("calloc") || name.equals("malloc") || name.equals("external_alloc")) { + public static boolean handleStdFunction(VisitorBoogie visitor, Call_cmdContext ctx) { + final String funcName = visitor.getFunctionNameFromCallContext(ctx); + if (funcName.equals("$alloc") || funcName.equals("$malloc") || funcName.equals("calloc") + || funcName.equals("malloc") || funcName.equals("external_alloc")) { alloc(visitor, ctx); - return; + return true; } - if (name.equals("get_my_tid")) { - String registerName = ctx.call_params().Ident(0).getText(); - Register register = visitor.programBuilder.getRegister(visitor.threadCount, visitor.currentScope.getID() + ":" + registerName); - IValue tid = visitor.expressions.makeValue(BigInteger.valueOf(visitor.threadCount), register.getType()); - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.newLocal(register, tid)); - return; + if (funcName.equals("abort")) { + visitor.addEvent(EventFactory.newAbortIf(visitor.expressions.makeTrue())); + return true; } - if (name.equals("__assert_fail") || name.equals("__assert_rtn")) { + if (funcName.equals("__assert_fail") || funcName.equals("__assert_rtn")) { __assert_fail(visitor); - return; + return true; } - if (name.equals("assert_.i32")) { + if (funcName.equals("assert_.i32")) { __assert(visitor, ctx); - return; + return true; } - if (name.startsWith("fopen")) { + if (funcName.startsWith("fopen")) { // TODO: Implement this - return; + return true; } - if (name.startsWith("free")) { + if (funcName.startsWith("free")) { // TODO: Implement this - return; + return true; } - if (name.startsWith("memcpy") | name.startsWith("$memcpy")) { + if (funcName.startsWith("memcpy") | funcName.startsWith("$memcpy")) { // TODO: Implement this - return; + return true; } - if (name.startsWith("memset") || name.startsWith("$memset")) { - throw new ParsingException(name + " cannot be handled"); + if (funcName.startsWith("memset") || funcName.startsWith("$memset")) { + throw new ParsingException(funcName + " cannot be handled"); } - if (name.startsWith("nvram_read_byte")) { - throw new ParsingException(name + " cannot be handled"); + if (funcName.startsWith("nvram_read_byte")) { + throw new ParsingException(funcName + " cannot be handled"); } - if (name.startsWith("strcpy")) { - throw new ParsingException(name + " cannot be handled"); + if (funcName.startsWith("strcpy")) { + throw new ParsingException(funcName + " cannot be handled"); } - if (name.startsWith("strcmp")) { + if (funcName.startsWith("strcmp")) { // TODO: Implement this - return; + return true; } - if (name.startsWith("strncpy")) { - throw new ParsingException(name + " cannot be handled"); + if (funcName.startsWith("strncpy")) { + throw new ParsingException(funcName + " cannot be handled"); } - if (name.startsWith("llvm.stackrestore")) { + if (funcName.startsWith("llvm.stackrestore")) { // TODO: Implement this - return; + return true; } - if (name.startsWith("llvm.stacksave")) { + if (funcName.startsWith("llvm.stacksave")) { // TODO: Implement this - return; + return true; } - if (name.startsWith("llvm.lifetime.start")) { + if (funcName.startsWith("llvm.lifetime.start")) { // TODO: Implement this - return; + return true; } - if (name.startsWith("llvm.lifetime.end")) { + if (funcName.startsWith("llvm.lifetime.end")) { // TODO: Implement this - return; + return true; } - throw new UnsupportedOperationException(name + " procedure is not part of STDPROCEDURES"); + return false; } private static void alloc(VisitorBoogie visitor, Call_cmdContext ctx) { //Uniquely identify the allocated storage in the entire program - final IExpr sizeExpr = ((IExpr) ctx.call_params().exprs().expr(0).accept(visitor)); - final String ptrName = visitor.currentScope.getID() + ":" + ctx.call_params().Ident(0).getText(); - final Register reg = visitor.programBuilder.getRegister(visitor.threadCount, ptrName); + final Expression sizeExpr = (Expression) ctx.call_params().exprs().expr(0).accept(visitor); + final String ptrName = ctx.call_params().Ident(0).getText(); + final Register reg = visitor.getRegister(ptrName); - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.Std.newMalloc(reg, sizeExpr)); + visitor.addEvent(EventFactory.Std.newMalloc(reg, sizeExpr)); } private static void __assert(VisitorBoogie visitor, Call_cmdContext ctx) { - IExpr expr = (IExpr) ctx.call_params().exprs().accept(visitor); + final Expression expr = (Expression) ctx.call_params().exprs().accept(visitor); visitor.addAssertion(expr); } private static void __assert_fail(VisitorBoogie visitor) { - visitor.addAssertion(visitor.expressions.makeZero(visitor.types.getArchType())); + visitor.addAssertion(visitor.expressions.makeFalse()); } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/SvcompProcedures.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/SvcompProcedures.java index b0b769dd57..9e90e74c88 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/SvcompProcedures.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/SvcompProcedures.java @@ -1,156 +1,54 @@ package com.dat3m.dartagnan.parsers.program.visitors.boogie; import com.dat3m.dartagnan.exception.MalformedProgramException; -import com.dat3m.dartagnan.exception.ParsingException; -import com.dat3m.dartagnan.expression.*; +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.IExpr; import com.dat3m.dartagnan.parsers.BoogieParser.Call_cmdContext; -import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.EventFactory; -import com.google.common.primitives.UnsignedInteger; -import com.google.common.primitives.UnsignedLong; +import com.dat3m.dartagnan.program.event.lang.svcomp.BeginAtomic; import java.math.BigInteger; -import java.util.Arrays; -import java.util.List; public class SvcompProcedures { - public static List SVCOMPPROCEDURES = Arrays.asList( - "__VERIFIER_assert", - // "__VERIFIER_assume", - "__VERIFIER_loop_bound", - "__VERIFIER_loop_begin", - "__VERIFIER_spin_start", - "__VERIFIER_spin_end", - "__VERIFIER_atomic_begin", - "__VERIFIER_atomic_end", - "__VERIFIER_nondet_bool", - "__VERIFIER_nondet_int", - "__VERIFIER_nondet_uint", - "__VERIFIER_nondet_unsigned_int", - "__VERIFIER_nondet_short", - "__VERIFIER_nondet_ushort", - "__VERIFIER_nondet_unsigned_short", - "__VERIFIER_nondet_long", - "__VERIFIER_nondet_ulong", - "__VERIFIER_nondet_char", - "__VERIFIER_nondet_uchar"); - - public static void handleSvcompFunction(VisitorBoogie visitor, Call_cmdContext ctx) { - String name = ctx.call_params().Define() == null ? ctx.call_params().Ident(0).getText() : ctx.call_params().Ident(1).getText(); - switch(name) { - case "__VERIFIER_loop_bound": - __VERIFIER_loop_bound(visitor, ctx); - break; - case "__VERIFIER_loop_begin": - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.Svcomp.newLoopBegin()); - break; - case "__VERIFIER_spin_start": - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.Svcomp.newSpinStart()); - break; - case "__VERIFIER_spin_end": - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.Svcomp.newSpinEnd()); - break; - case "__VERIFIER_assert": - visitor.addAssertion((IExpr)ctx.call_params().exprs().accept(visitor)); - break; - case "__VERIFIER_assume": - __VERIFIER_assume(visitor, ctx); - break; - case "__VERIFIER_atomic_begin": - __VERIFIER_atomic_begin(visitor); - break; - case "__VERIFIER_atomic_end": - __VERIFIER_atomic_end(visitor); - break; - case "__VERIFIER_nondet_bool": - __VERIFIER_nondet_bool(visitor, ctx); - break; - case "__VERIFIER_nondet_int": - case "__VERIFIER_nondet_uint": - case "__VERIFIER_nondet_unsigned_int": - case "__VERIFIER_nondet_short": - case "__VERIFIER_nondet_ushort": - case "__VERIFIER_nondet_unsigned_short": - case "__VERIFIER_nondet_long": - case "__VERIFIER_nondet_ulong": - case "__VERIFIER_nondet_char": - case "__VERIFIER_nondet_uchar": - __VERIFIER_nondet(visitor, ctx, name); - break; - default: - throw new UnsupportedOperationException(name + " procedure is not part of SVCOMPPROCEDURES"); - } - } - - private static void __VERIFIER_assume(VisitorBoogie visitor, Call_cmdContext ctx) { - Expression expr = (Expression)ctx.call_params().exprs().accept(visitor); - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.newAssume(expr)); - } - - public static void __VERIFIER_atomic_begin(VisitorBoogie visitor) { - visitor.currentBeginAtomic = EventFactory.Svcomp.newBeginAtomic(); - visitor.programBuilder.addChild(visitor.threadCount, visitor.currentBeginAtomic); - } - - public static void __VERIFIER_atomic_end(VisitorBoogie visitor) { - if(visitor.currentBeginAtomic == null) { + public static boolean handleSvcompFunction(VisitorBoogie visitor, Call_cmdContext ctx) { + final String funcName = visitor.getFunctionNameFromCallContext(ctx); + switch (funcName) { + case "reach_error" -> visitor.addAssertion(visitor.expressions.makeZero(visitor.types.getArchType())); + case "__VERIFIER_loop_bound" -> __VERIFIER_loop_bound(visitor, ctx); + case "__VERIFIER_loop_begin" -> visitor.addEvent(EventFactory.Svcomp.newLoopBegin()); + case "__VERIFIER_spin_start" -> visitor.addEvent(EventFactory.Svcomp.newSpinStart()); + case "__VERIFIER_spin_end" -> visitor.addEvent(EventFactory.Svcomp.newSpinEnd()); + case "__VERIFIER_assert" -> visitor.addAssertion((Expression) ctx.call_params().exprs().accept(visitor)); + case "__VERIFIER_assume" -> __VERIFIER_assume(visitor, ctx); + case "__VERIFIER_atomic_begin" -> __VERIFIER_atomic_begin(visitor); + case "__VERIFIER_atomic_end" -> __VERIFIER_atomic_end(visitor); + default -> { + return false; + } + } + return true; + } + + private static void __VERIFIER_assume(VisitorBoogie visitor, Call_cmdContext ctx) { + Expression expr = (Expression) ctx.call_params().exprs().accept(visitor); + visitor.addEvent(EventFactory.newAssume(expr)); + } + + public static void __VERIFIER_atomic_begin(VisitorBoogie visitor) { + visitor.currentBeginAtomic = (BeginAtomic) visitor.addEvent(EventFactory.Svcomp.newBeginAtomic()); + } + + public static void __VERIFIER_atomic_end(VisitorBoogie visitor) { + if (visitor.currentBeginAtomic == null) { throw new MalformedProgramException("__VERIFIER_atomic_end() does not have a matching __VERIFIER_atomic_begin()"); - } - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.Svcomp.newEndAtomic(visitor.currentBeginAtomic)); - visitor.currentBeginAtomic = null; - } - - //TODO this should restart for each program. - private static int nondetCount; - - private static void __VERIFIER_nondet(VisitorBoogie visitor, Call_cmdContext ctx, String name) { - String suffix = name.substring("__VERIFIER_nondet_".length()); - boolean signed = switch (suffix) { - case "int", "short", "long", "char" -> true; - default -> false; - }; - BigInteger min = switch (suffix) { - case "long" -> BigInteger.valueOf(Long.MIN_VALUE); - case "int" -> BigInteger.valueOf(Integer.MIN_VALUE); - case "short" -> BigInteger.valueOf(Short.MIN_VALUE); - case "char" -> BigInteger.valueOf(Byte.MIN_VALUE); - default -> BigInteger.ZERO; - }; - BigInteger max = switch (suffix) { - case "int" -> BigInteger.valueOf(Integer.MAX_VALUE); - case "uint", "unsigned_int" -> UnsignedInteger.MAX_VALUE.bigIntegerValue(); - case "short" -> BigInteger.valueOf(Short.MAX_VALUE); - case "ushort", "unsigned_short" -> BigInteger.valueOf(65535); - case "long" -> BigInteger.valueOf(Long.MAX_VALUE); - case "ulong" -> UnsignedLong.MAX_VALUE.bigIntegerValue(); - case "char" -> BigInteger.valueOf(Byte.MAX_VALUE); - case "uchar" -> BigInteger.valueOf(255); - default -> throw new ParsingException(name + " is not supported"); - }; - String registerName = ctx.call_params().Ident(0).getText(); - Register register = visitor.programBuilder.getRegister(visitor.threadCount, visitor.currentScope.getID() + ":" + registerName); - if (register != null) { - INonDet expression = visitor.programBuilder.newConstant(register.getType(), signed); - expression.setMin(min); - expression.setMax(max); - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.newLocal(register, expression)) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - } - } - - private static void __VERIFIER_nondet_bool(VisitorBoogie visitor, Call_cmdContext ctx) { - String registerName = ctx.call_params().Ident(0).getText(); - Register register = visitor.programBuilder.getRegister(visitor.threadCount, visitor.currentScope.getID() + ":" + registerName); - if(register != null){ - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.newLocal(register, new BNonDet())) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - } - } - - private static void __VERIFIER_loop_bound(VisitorBoogie visitor, Call_cmdContext ctx) { - int bound = ((IExpr)ctx.call_params().exprs().expr(0).accept(visitor)).reduce().getValueAsInt(); - visitor.programBuilder.addChild(visitor.threadCount, EventFactory.Svcomp.newLoopBound(bound)) - .setCFileInformation(visitor.currentLine, visitor.sourceCodeFile); - } + } + visitor.addEvent(EventFactory.Svcomp.newEndAtomic(visitor.currentBeginAtomic)); + visitor.currentBeginAtomic = null; + } + + private static void __VERIFIER_loop_bound(VisitorBoogie visitor, Call_cmdContext ctx) { + final int bound = ((IExpr) ctx.call_params().exprs().expr(0).accept(visitor)).reduce().getValueAsInt(); + visitor.addEvent(EventFactory.Svcomp.newLoopBound(bound)); + } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/VisitorBoogie.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/VisitorBoogie.java index 281f9e77fa..ddba204e27 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/VisitorBoogie.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/boogie/VisitorBoogie.java @@ -1,23 +1,31 @@ package com.dat3m.dartagnan.parsers.program.visitors.boogie; import com.dat3m.dartagnan.exception.ParsingException; -import com.dat3m.dartagnan.expression.*; +import com.dat3m.dartagnan.expression.Atom; +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.ExpressionFactory; import com.dat3m.dartagnan.expression.processing.ExprSimplifier; +import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; +import com.dat3m.dartagnan.expression.type.FunctionType; import com.dat3m.dartagnan.expression.type.IntegerType; +import com.dat3m.dartagnan.expression.type.Type; import com.dat3m.dartagnan.expression.type.TypeFactory; import com.dat3m.dartagnan.parsers.BoogieBaseVisitor; +import com.dat3m.dartagnan.parsers.BoogieParser; import com.dat3m.dartagnan.parsers.BoogieParser.*; -import com.dat3m.dartagnan.parsers.program.boogie.*; +import com.dat3m.dartagnan.parsers.program.boogie.Types; import com.dat3m.dartagnan.parsers.program.utils.ProgramBuilder; +import com.dat3m.dartagnan.program.Function; +import com.dat3m.dartagnan.program.Program; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.EventFactory; import com.dat3m.dartagnan.program.event.Tag; -import com.dat3m.dartagnan.program.event.core.CondJump; import com.dat3m.dartagnan.program.event.core.Event; import com.dat3m.dartagnan.program.event.core.Label; -import com.dat3m.dartagnan.program.event.core.annotations.FunCall; import com.dat3m.dartagnan.program.event.lang.svcomp.BeginAtomic; +import com.dat3m.dartagnan.program.event.metadata.SourceLocation; import com.dat3m.dartagnan.program.memory.MemoryObject; +import com.google.common.collect.Lists; import org.antlr.v4.runtime.tree.ParseTree; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -34,770 +42,753 @@ import static com.dat3m.dartagnan.parsers.program.boogie.LlvmUnary.llvmUnary; import static com.dat3m.dartagnan.parsers.program.boogie.SmackPredicates.SMACKPREDICATES; import static com.dat3m.dartagnan.parsers.program.boogie.SmackPredicates.smackPredicate; -import static com.dat3m.dartagnan.parsers.program.visitors.boogie.DummyProcedures.DUMMYPROCEDURES; -import static com.dat3m.dartagnan.parsers.program.visitors.boogie.LkmmProcedures.LKMMPROCEDURES; +import static com.dat3m.dartagnan.parsers.program.visitors.boogie.DummyProcedures.handleDummyProcedures; import static com.dat3m.dartagnan.parsers.program.visitors.boogie.LkmmProcedures.handleLkmmFunction; -import static com.dat3m.dartagnan.parsers.program.visitors.boogie.LlvmProcedures.LLVMPROCEDURES; import static com.dat3m.dartagnan.parsers.program.visitors.boogie.LlvmProcedures.handleLlvmFunction; -import static com.dat3m.dartagnan.parsers.program.visitors.boogie.PthreadsProcedures.PTHREADPROCEDURES; import static com.dat3m.dartagnan.parsers.program.visitors.boogie.PthreadsProcedures.handlePthreadsFunctions; -import static com.dat3m.dartagnan.parsers.program.visitors.boogie.StdProcedures.STDPROCEDURES; import static com.dat3m.dartagnan.parsers.program.visitors.boogie.StdProcedures.handleStdFunction; -import static com.dat3m.dartagnan.parsers.program.visitors.boogie.SvcompProcedures.SVCOMPPROCEDURES; import static com.dat3m.dartagnan.parsers.program.visitors.boogie.SvcompProcedures.handleSvcompFunction; public class VisitorBoogie extends BoogieBaseVisitor { - private static final Logger logger = LogManager.getLogger(VisitorBoogie.class); - protected final TypeFactory types = TypeFactory.getInstance(); - protected ProgramBuilder programBuilder; - protected final ExpressionFactory expressions = ExpressionFactory.getInstance(); - protected int threadCount = 0; - protected int currentThread = 0; - private Set threadLocalVariables = new HashSet(); + protected static final Logger logger = LogManager.getLogger(VisitorBoogie.class); - protected int currentLine = -1; - protected String sourceCodeFile = ""; + protected final ProgramBuilder programBuilder = ProgramBuilder.forLanguage(Program.SourceLanguage.BOOGIE); + protected final TypeFactory types = programBuilder.getTypeFactory(); + protected final ExpressionFactory expressions = programBuilder.getExpressionFactory(); + protected final ExprSimplifier exprSimplifier = new ExprSimplifier(); + private final Map procDeclarations = new HashMap<>(); + private final Map boogieFunctions = new HashMap<>(); + private final Map constantsValueMap = new HashMap<>(); + private final Map constantSymbolMap = new HashMap<>(); + private final List functions = new ArrayList<>(); + + private int currentFunction = 0; + private BoogieFunctionCall currentCall = null; + protected BeginAtomic currentBeginAtomic = null; + private String currentReturnRegName = null; + + // We use to connect labels of a "goto l1, l2" statement. private Label currentLabel = null; private final Map pairLabels = new HashMap<>(); - private final Map functions = new HashMap<>(); - private FunctionCall currentCall = null; + protected Call_cmdContext atomicMode = null; - // Improves performance by initializing Locations rather than creating new write events - private boolean initMode = false; + private int assertionCounter = 0; - private final Map procedures = new HashMap<>(); - protected PthreadPool pool = new PthreadPool(); + private int currentLine = -1; + private String sourceCodeFile = ""; - private int nextScopeID = 0; - protected Scope currentScope = new Scope(nextScopeID, null); + public VisitorBoogie() { + } - private final List returnRegister = new ArrayList<>(); - private String currentReturnName = null; + private final List smackDummyVariables = + Arrays.asList("$M.0", "$exn", "$exnv", "$CurrAddr", "$GLOBALS_BOTTOM", + "$EXTERNS_BOTTOM", "$MALLOC_TOP", "__SMACK_code", "__SMACK_decls", "__SMACK_top_decl", + "$1024.ref", "$0.ref", "$1.ref", "env_value_str", "errno_global", "$CurrAddr"); - private final Map constantsMap = new HashMap<>(); - private final Map constantsTypeMap = new HashMap<>(); + private boolean doIgnoreVariable(String varName) { + // We ignore some smack-generated dummy variables + if (smackDummyVariables.contains(varName)) { + return true; + } + // We also ignore all kinds of strings for now. + if (varName.startsWith(".str")) { + return true; + } + // These are special strings containing function names. + if (varName.startsWith("__PRETTY_FUNCTION")) { + return true; + } + return false; + } - protected final Set allocations = new HashSet<>(); + // ==================== Utility functions ==================== - protected Map> threadCallingValues = new HashMap<>(); + protected VarDeclaration parseVarDeclaration(String varDeclString) { + final String[] decl = varDeclString.split(":"); + return new VarDeclaration(decl[0], Types.parseIntegerType(decl[1], types)); + } - protected int assertionIndex = 0; + protected Event addEvent(Event e) { + if (currentLine != -1) { + //TODO: We should probably make sure to reset currentLine to avoid attaching outdated information + e.setMetadata(new SourceLocation(sourceCodeFile, currentLine)); + } + return programBuilder.addChild(currentFunction, e); + } - protected BeginAtomic currentBeginAtomic = null; - protected Call_cmdContext atomicMode = null; + protected Label getOrNewLabel(String name) { + return programBuilder.getOrCreateLabel(currentFunction, name); + } - private final ExprSimplifier exprSimplifier = new ExprSimplifier(); + protected Register getRegister(String name) { + return programBuilder.getRegister(currentFunction, name); + } + protected Register getOrNewRegister(String name) { + return getOrNewRegister(name, types.getArchType()); + } - public VisitorBoogie(ProgramBuilder pb) { - this.programBuilder = pb; + protected Register getOrNewRegister(String name, Type type) { + return programBuilder.getOrNewRegister(currentFunction, name, type); } - private final List smackDummyVariables = - Arrays.asList("$M.0", "$exn", "$exnv", "$CurrAddr", "$GLOBALS_BOTTOM", - "$EXTERNS_BOTTOM", "$MALLOC_TOP", "__SMACK_code", "__SMACK_decls", "__SMACK_top_decl", - "$1024.ref", "$0.ref", "$1.ref", "env_value_str", "errno_global", "$CurrAddr"); + protected String getFunctionNameFromCallContext(Call_cmdContext callCtx) { + return callCtx.call_params().Define() == null ? + callCtx.call_params().Ident(0).getText() : + callCtx.call_params().Ident(1).getText(); + } - private boolean doIgnoreVariable(String varName) { - // We ignore some smack-generated dummy variables - if (smackDummyVariables.contains(varName)) { - return true; - } - // We also ignore all kinds of strings for now. - if (varName.startsWith(".str")) { - return true; - } - // These are special strings containing function names. - if (varName.startsWith("__PRETTY_FUNCTION")) { - return true; - } - return false; - } + // ============================================================ @Override public Object visitMain(MainContext ctx) { visitLine_comment(ctx.line_comment(0)); + visitDeclarations(ctx); + + if (!procDeclarations.containsKey("main") || procDeclarations.get("main").impl_body() == null) { + throw new ParsingException("Program shall have a non-empty main procedure"); + } + + for (Function func : functions) { + currentFunction = func.getId(); + // Skip intrinsics, regardless of being user-defined + if (func.getName().startsWith("__VERIFIER_nondet_")) { + continue; + } + BoogieParser.Proc_declContext funcCtx = procDeclarations.get(func.getName()); + if (funcCtx.impl_body() != null) { + visitProc_decl(funcCtx); + } + } + + return programBuilder.build(); + } + + // =========================== Declarations ================================= + + private void visitDeclarations(MainContext ctx) { for (Func_declContext funDecContext : ctx.func_decl()) { - visitFunc_decl(funDecContext); + registerBoogieFunction(funDecContext); } for (Proc_declContext procDecContext : ctx.proc_decl()) { - preProc_decl(procDecContext); + registerProcedure(procDecContext); } for (Const_declContext constDecContext : ctx.const_decl()) { - visitConst_decl(constDecContext); + registerConstants(constDecContext); } for (Axiom_declContext axiomDecContext : ctx.axiom_decl()) { - visitAxiom_decl(axiomDecContext); + assignConstants(axiomDecContext); } for (Var_declContext varDecContext : ctx.var_decl()) { visitVar_decl(varDecContext); } - if (!procedures.containsKey("main")) { - throw new ParsingException("Program shall have a main procedure"); - } - IExpr next = programBuilder.getOrNewRegister(threadCount, currentScope.getID() + ":" + "ptrMain"); - pool.add(next, "main", -1); - while (pool.canCreate()) { - next = pool.next(); - String nextName = pool.getNameFromPtr(next); - pool.addIntPtr(threadCount + 1, next); - visitProc_decl(procedures.get(nextName), true, threadCallingValues.get(threadCount)); + //FIXME: Some Svcomp loop benchmarks reference declared but unassigned constants!? + // Those should probably be non-deterministic, but we set them to zero here to match our previous semantics. + final Expression zero = expressions.makeZero(types.getArchType()); + for (String constName : constantSymbolMap.keySet()) { + constantsValueMap.putIfAbsent(constName, zero); } + } - logger.info("Number of threads (including main): " + threadCount); + public void registerBoogieFunction(Func_declContext ctx) { + final String funcName = ctx.Ident().getText(); + boogieFunctions.put(funcName, new BoogieFunction(funcName, ctx.var_or_type(), ctx.expr())); + } - return programBuilder.build(); + private boolean doIgnoreProcedure(String procName) { + if (procName.equals("__SMACK_static_init")) { + // This is a special function that contains static initialization code. + // A pass will detect this function and initialize the static memory. + return false; + } + // These procedures do not get declared in the program, and the body of these procedures is never parsed. + // Calls to any of these procedures must get resolved somehow by the parser (e.g., by removing or replacing the call) + if (procName.startsWith("SMACK") || procName.startsWith("__SMACK") || procName.startsWith("$") || procName.startsWith("llvm") + || (procName.startsWith("__VERIFIER") && !procName.contains("__VERIFIER_atomic") && !procName.startsWith("__VERIFIER_nondet_")) + || procName.startsWith("boogie") || procName.startsWith("corral") + || procName.startsWith("assert") || procName.startsWith("malloc") || procName.startsWith("abort") + || procName.startsWith("reach_error") || procName.startsWith("printf") || procName.startsWith("fopen")) { + return true; + } + return false; } - private void preProc_decl(Proc_declContext ctx) { - String name = ctx.proc_sign().Ident().getText(); - if (procedures.containsKey(name)) { - throw new ParsingException("Procedure " + name + " is already defined"); + private void registerProcedure(Proc_declContext ctx) { + final String procName = ctx.proc_sign().Ident().getText(); + if (procDeclarations.put(procName, ctx) != null) { + throw new ParsingException("Procedure " + procName + " is already defined"); } - if (name.equals("main") && ctx.proc_sign().proc_sign_in() != null) { - threadCallingValues.put(threadCount, new ArrayList<>()); - for (Attr_typed_idents_whereContext atiwC : ctx.proc_sign().proc_sign_in().attr_typed_idents_wheres().attr_typed_idents_where()) { - for (ParseTree ident : atiwC.typed_idents_where().typed_idents().idents().Ident()) { - String typeString = atiwC.typed_idents_where().typed_idents().type().getText(); - IntegerType type = Types.parseIntegerType(typeString, types); - threadCallingValues.get(threadCount).add(programBuilder.getOrNewRegister(threadCount, currentScope.getID() + ":" + ident.getText(), type)); - } + + // ====== Create function declaration ======== + // TODO: We skip some functions for now. Ideally, we skip smack/boogie functions + // but still create intrinsic functions for, e.g., pthread, malloc, and __VERIFIER__XYZ etc. + if (doIgnoreProcedure(procName)) { + return; + } + + final List parameterNames = new ArrayList<>(); + final List parameterTypes = new ArrayList<>(); + + if (ctx.proc_sign().proc_sign_in() != null) { + final List params = + ctx.proc_sign().proc_sign_in().attr_typed_idents_wheres().attr_typed_idents_where(); + for (Attr_typed_idents_whereContext param : params) { + // Parse input parameters + final VarDeclaration decl = parseVarDeclaration(param.getText()); + parameterNames.add(decl.varName); + parameterTypes.add(decl.type); } } - procedures.put(name, ctx); - } - - @Override - public Object visitAxiom_decl(Axiom_declContext ctx) { - Expression exp = (Expression)ctx.proposition().accept(this); - if(exp instanceof Atom atom && atom.getLHS() instanceof Register reg && atom.getOp().equals(EQ)) { - String name = reg.getName(); - Expression def = atom.getRHS(); - constantsMap.put(name, def); - } - return null; - } - - @Override - public Object visitConst_decl(Const_declContext ctx) { - for(ParseTree ident : ctx.typed_idents().idents().Ident()) { - String name = ident.getText(); - String typeString = ctx.typed_idents().type().getText(); - IntegerType type = Types.parseIntegerType(typeString, types); - if(ctx.getText().contains(":treadLocal")) { - threadLocalVariables.add(name); - } - if(ctx.getText().contains("ref;") && !procedures.containsKey(name) && !doIgnoreVariable(name)) { - int size = ctx.getText().contains(":allocSize") - ? Integer.parseInt(ctx.getText().split(":allocSize")[1].split("}")[0]) - : 1; - programBuilder.newObject(name,size); - } else { - constantsTypeMap.put(name, type); - } - } - return null; - } - - @Override - public Object visitFunc_decl(Func_declContext ctx) { - String name = ctx.Ident().getText(); - functions.put(name, new Function(name, ctx.var_or_type(), ctx.expr())); - return null; - } + final Type returnType; + if (ctx.proc_sign().proc_sign_out() != null) { + // Parse output type + final String typeString = ctx.proc_sign().proc_sign_out().attr_typed_idents_wheres() + .attr_typed_idents_where(0).typed_idents_where().typed_idents().type().getText(); + returnType = Types.parseIntegerType(typeString, types); + } else { + returnType = types.getVoidType(); + } + final FunctionType functionType = types.getFunctionType(returnType, parameterTypes); + final Function func = programBuilder.newFunction(procName, currentFunction++, functionType, parameterNames); + functions.add(func); + constantsValueMap.put(func.getName(), func); + } + + public void registerConstants(Const_declContext ctx) { + for (ParseTree ident : ctx.typed_idents().idents().Ident()) { + final String name = ident.getText(); + final boolean isThreadLocal = ctx.getText().contains(":treadLocal"); + final String declText = ctx.getText(); + if (declText.contains("ref;") && !procDeclarations.containsKey(name) && !doIgnoreVariable(name)) { + int size = declText.contains(":allocSize") + ? Integer.parseInt(declText.split(":allocSize")[1].split("}")[0]) + : 1; + programBuilder.newMemoryObject(name, size).setIsThreadLocal(isThreadLocal); + } else { + final String typeString = ctx.typed_idents().type().getText(); + final IntegerType type = Types.parseIntegerType(typeString, types); + constantSymbolMap.put(name, new ConstantSymbol(type, name)); + } + } + } + + public void assignConstants(Axiom_declContext ctx) { + final Expression exp = (Expression) ctx.proposition().accept(this); + if (exp instanceof Atom atom && atom.getLHS() instanceof ConstantSymbol c && atom.getOp().equals(EQ)) { + constantsValueMap.put(c.name, atom.getRHS()); + } + } @Override public Object visitVar_decl(Var_declContext ctx) { - for(Attr_typed_idents_whereContext atiwC : ctx.typed_idents_wheres().attr_typed_idents_where()) { - for(ParseTree ident : atiwC.typed_idents_where().typed_idents().idents().Ident()) { - String name = ident.getText(); - if(!doIgnoreVariable(name)) { - programBuilder.newObject(name,1); + for (Attr_typed_idents_whereContext atiwC : ctx.typed_idents_wheres().attr_typed_idents_where()) { + for (ParseTree ident : atiwC.typed_idents_where().typed_idents().idents().Ident()) { + final String name = ident.getText(); + if (!doIgnoreVariable(name)) { + //TODO: This code never gets reached: it seems all global var declarations are + // Smack-specific and get skipped + programBuilder.newMemoryObject(name, 1); } } } return null; } - public Object visitLocal_vars(Local_varsContext ctx, int scope) { - for(Attr_typed_idents_whereContext atiwC : ctx.typed_idents_wheres().attr_typed_idents_where()) { - for(ParseTree ident : atiwC.typed_idents_where().typed_idents().idents().Ident()) { - String name = ident.getText(); - String typeString = atiwC.typed_idents_where().typed_idents().type().getText(); - IntegerType type = Types.parseIntegerType(typeString, types); - if(constantsTypeMap.containsKey(name)) { - throw new ParsingException("Variable " + name + " is already defined as a constant"); - } - if(programBuilder.getObject(name) != null) { - throw new ParsingException("Variable " + name + " is already defined globally"); - } - programBuilder.getOrNewRegister(scope, currentScope.getID() + ":" + name, type); - } - } - return null; - } - - private void visitProc_decl(Proc_declContext ctx, boolean create, List callingValues) { - currentLine = -1; - if (ctx.proc_sign().proc_sign_out() != null) { - for (Attr_typed_idents_whereContext atiwC : ctx.proc_sign().proc_sign_out().attr_typed_idents_wheres().attr_typed_idents_where()) { - for (ParseTree ident : atiwC.typed_idents_where().typed_idents().idents().Ident()) { - currentReturnName = ident.getText(); - } - } + @Override + public Object visitLocal_vars(Local_varsContext ctx) { + final String declString = ctx.typed_idents_wheres().attr_typed_idents_where(0).getText(); // regName:regType + final VarDeclaration decl = parseVarDeclaration(declString); + final String regName = decl.varName; + final Type regType = decl.type; + + if (constantSymbolMap.containsKey(regName)) { + throw new ParsingException("Register name" + regName + " conflicts with a global constant."); } - - if (create) { - threadCount++; - String name = ctx.proc_sign().Ident().getText(); - programBuilder.initThread(name, threadCount); - if(threadCount != 1) { - // Used to allow execution of threads after they have been created (pthread_create) - IExpr pointer = pool.getPtrFromInt(threadCount); - Register reg = programBuilder.getOrNewRegister(threadCount, null); - programBuilder.addChild(threadCount, EventFactory.Pthread.newStart(reg, pointer, pool.getMatcher(pool.getPtrFromInt(threadCount)))); - } + if (programBuilder.getMemoryObject(regName) != null) { + throw new ParsingException("Register name " + regName + " conflicts with a global variable."); } + // Declare new register + getOrNewRegister(regName, regType); - currentScope = new Scope(nextScopeID, currentScope); - nextScopeID++; + return null; + } - Impl_bodyContext body = ctx.impl_body(); + @Override + public Object visitProc_decl(Proc_declContext ctx) { + final Impl_bodyContext body = ctx.impl_body(); if (body == null) { throw new ParsingException(ctx.proc_sign().Ident().getText() + " cannot be handled"); } - if (ctx.proc_sign().proc_sign_in() != null) { - int index = 0; - for (Attr_typed_idents_whereContext atiwC : ctx.proc_sign().proc_sign_in().attr_typed_idents_wheres().attr_typed_idents_where()) { - for (ParseTree ident : atiwC.typed_idents_where().typed_idents().idents().Ident()) { - // To deal with references passed to created threads - if (index < callingValues.size()) { - String typeString = atiwC.typed_idents_where().typed_idents().type().getText(); - IntegerType type = Types.parseIntegerType(typeString, types); - Register register = programBuilder.getOrNewRegister(threadCount, currentScope.getID() + ":" + ident.getText(), type); - Expression value = callingValues.get(index); - programBuilder.addChild(threadCount, EventFactory.newLocal(register, value)) - .setCFileInformation(currentLine, sourceCodeFile); - index++; - } - } - } + pairLabels.clear(); + // Handle output parameters + if (ctx.proc_sign().proc_sign_out() != null) { + final VarDeclaration decl = parseVarDeclaration( + ctx.proc_sign().proc_sign_out().attr_typed_idents_wheres().attr_typed_idents_where(0).getText()); + currentReturnRegName = decl.varName; + getOrNewRegister(currentReturnRegName, decl.type); } - for(Local_varsContext localVarContext : body.local_vars()) { - visitLocal_vars(localVarContext, threadCount); + // Handle procedure-local register declarations + for (Local_varsContext localVarContext : body.local_vars()) { + visitLocal_vars(localVarContext); } - + // Handle procedure body visitChildren(body.stmt_list()); - Label label = programBuilder.getOrCreateLabel("END_OF_" + currentScope.getID()); - programBuilder.addChild(threadCount, label); - - currentScope = currentScope.getParent(); - - if (create) { - if (threadCount != 1) { - // Used to mark the end of the execution of a thread (used by pthread_join) - IExpr pointer = pool.getPtrFromInt(threadCount); - programBuilder.addChild(threadCount, EventFactory.Pthread.newEnd(pointer)); - } - } + return null; } @Override public Object visitAssert_cmd(Assert_cmdContext ctx) { - addAssertion((IExpr) ctx.proposition().expr().accept(this)); + addAssertion((Expression) ctx.proposition().expr().accept(this)); return null; } - @Override - public Object visitCall_cmd(Call_cmdContext ctx) { - if(ctx.getText().contains("boogie_si_record") && !ctx.getText().contains("smack")) { - Object local = ctx.call_params().exprs().expr(0).accept(this); - if(local instanceof Register) { - String txt = ctx.attr(0).getText(); - String cVar; - if(ctx.getText().contains("arg:")) { - cVar = txt.substring(txt.lastIndexOf(":")+1, txt.lastIndexOf("\"")); - } else { - cVar = txt.substring(txt.indexOf("\"")+1, txt.lastIndexOf("\"")); - } - ((Register)local).setCVar(cVar); - } - - } - String name = ctx.call_params().Define() == null ? ctx.call_params().Ident(0).getText() : ctx.call_params().Ident(1).getText(); - if(name.equals("$initialize")) { - initMode = true; - } - if(name.equals("abort")) { - Label label = programBuilder.getOrCreateLabel("END_OF_T" + threadCount); - programBuilder.addChild(threadCount, EventFactory.newGoto(label)); - return null; - } - if(name.equals("reach_error")) { - addAssertion(expressions.makeZero(types.getArchType())); - return null; - } - - if(DUMMYPROCEDURES.stream().anyMatch(name::startsWith)) { - return null; - } - if(PTHREADPROCEDURES.stream().anyMatch(name::contains)) { - handlePthreadsFunctions(this, ctx); - return null; - } - if(SVCOMPPROCEDURES.stream().anyMatch(name::contains)) { - handleSvcompFunction(this, ctx); - return null; - } - if(STDPROCEDURES.stream().anyMatch(name::startsWith)) { - handleStdFunction(this, ctx); - return null; - } - if(LKMMPROCEDURES.stream().anyMatch(name::equals)) { - handleLkmmFunction(this, ctx); - return null; - } - if(LLVMPROCEDURES.stream().anyMatch(name::equals)) { - handleLlvmFunction(this, ctx); - return null; - } - if(name.contains("__VERIFIER_atomic_")) { - atomicMode = ctx; - SvcompProcedures.__VERIFIER_atomic_begin(this); - } - // TODO: double check this - // Some procedures might have an empty implementation. - // There will be no return for them. - if(ctx.call_params().Define() != null && procedures.get(name).impl_body() != null) { - Register register = programBuilder.getRegister(threadCount, currentScope.getID() + ":" + ctx.call_params().Ident(0).getText()); - if(register != null){ - returnRegister.add(register); + @Override + public Object visitCall_cmd(Call_cmdContext ctx) { + if (ctx.getText().contains("boogie_si_record") && !ctx.getText().contains("smack")) { + Object local = ctx.call_params().exprs().expr(0).accept(this); + if (local instanceof Register reg) { + final String txt = ctx.attr(0).getText();// Shape: 'prefix{"cVar"}' or 'prefix{"...arg:cVar"}' + final String cVarSep = txt.contains("arg:") ? "arg:" : "\""; + final String cVar = txt.substring(txt.indexOf(cVarSep) + cVarSep.length(), txt.lastIndexOf("\"")); + reg.setCVar(cVar); + } + } + + // Check if the function is a special one. + if (handleDummyProcedures(this, ctx) || handlePthreadsFunctions(this, ctx) || + handleSvcompFunction(this, ctx) || handleStdFunction(this, ctx) + || handleLkmmFunction(this, ctx) || handleLlvmFunction(this, ctx)) { + return null; + } + + final String funcName = getFunctionNameFromCallContext(ctx); + if (!procDeclarations.containsKey(funcName)) { + throw new ParsingException("Procedure " + funcName + " is not defined"); + } + + if (funcName.equals("$initialize")) { + return null; + } + + if (funcName.contains("__VERIFIER_atomic_")) { + atomicMode = ctx; + SvcompProcedures.__VERIFIER_atomic_begin(this); + } + + // TODO: double check this + // Some procedures might have an empty implementation. + // There will be no return for them. + final List callArguments = new ArrayList<>(); + if (ctx.call_params().exprs() != null) { + ctx.call_params().exprs().expr().stream() + .map(c -> (Expression) c.accept(this)).forEach(callArguments::add); + } + + final Function func = functions.stream().filter(f -> f.getName().equals(funcName)) + .findFirst().orElse(null); + if (func != null) { + final Event funcCall; + if (func.hasReturnValue()) { + final Register resultReg = getRegister(ctx.call_params().Ident(0).getText());; + funcCall = EventFactory.newValueFunctionCall(resultReg, func, callArguments); + } else { + funcCall = EventFactory.newVoidFunctionCall(func, callArguments); } + addEvent(funcCall); + } + + if (ctx.equals(atomicMode)) { + atomicMode = null; + SvcompProcedures.__VERIFIER_atomic_end(this); } - List callingValues = new ArrayList<>(); - if(ctx.call_params().exprs() != null) { - callingValues = ctx.call_params().exprs().expr().stream().map(c -> (Expression)c.accept(this)).collect(Collectors.toList()); - } - if(!procedures.containsKey(name)) { - throw new ParsingException("Procedure " + name + " is not defined"); - } - FunCall call = EventFactory.newFunctionCall(name); - programBuilder.addChild(threadCount, call) - .setCFileInformation(currentLine, sourceCodeFile); - visitProc_decl(procedures.get(name), false, callingValues); - if(ctx.equals(atomicMode)) { - atomicMode = null; - SvcompProcedures.__VERIFIER_atomic_end(this); - } - programBuilder.addChild(threadCount, EventFactory.newFunctionReturn(name)) - .setCFileInformation(currentLine, sourceCodeFile); - if(name.equals("$initialize")) { - initMode = false; - } - return null; - } - - @Override - public Object visitAssign_cmd(Assign_cmdContext ctx) { - ExprsContext exprs = ctx.def_body().exprs(); + return null; + } + + @Override + public Object visitAssign_cmd(Assign_cmdContext ctx) { + final ExprsContext exprs = ctx.def_body().exprs(); if (ctx.Ident().size() != 1 && exprs.expr().size() != ctx.Ident().size()) { throw new ParsingException("There should be one expression per variable\nor only one expression for all in " + ctx.getText()); } - for(int i = 0; i < ctx.Ident().size(); i++) { - Expression value = (Expression)exprs.expr(i).accept(this); - if(value == null) { + + for (int i = 0; i < ctx.Ident().size(); i++) { + final String name = ctx.Ident(i).getText(); + final Expression value = (Expression) exprs.expr(i).accept(this); + if (value == null || doIgnoreVariable(name)) { continue; } - String name = ctx.Ident(i).getText(); - if(doIgnoreVariable(name)) { - continue; + if (constantSymbolMap.containsKey(name)) { + throw new ParsingException("Constants cannot be assigned: " + ctx.getText()); } - if(constantsTypeMap.containsKey(name)) { - throw new ParsingException("Constants cannot be assigned: " + ctx.getText()); - } - if(initMode) { - programBuilder.initLocEqConst(name, value.reduce()); - continue; - } - Register register = programBuilder.getRegister(threadCount, currentScope.getID() + ":" + name); + + final Register register = getRegister(name); if (register != null) { - if (ctx.getText().contains("$load.")) { - Event child; - if(allocations.contains(value)) { - // These loads corresponding to pthread_joins - child = EventFactory.Pthread.newJoin(register, value); - } else { - child = EventFactory.newLoad(register, value); - } - programBuilder.addChild(threadCount, child) - .setCFileInformation(currentLine, sourceCodeFile); - continue; + final Event child; + if (!ctx.getText().contains("$load.")) { + final Expression simplified = value.visit(exprSimplifier); + final Expression cast = expressions.makeCast(simplified, register.getType()); + child = EventFactory.newLocal(register, cast); + } else { + child = EventFactory.newLoad(register, value); } - value = value.visit(exprSimplifier); - programBuilder.addChild(threadCount, EventFactory.newLocal(register, value)) - .setCFileInformation(currentLine, sourceCodeFile); + addEvent(child); continue; } - MemoryObject object = programBuilder.getObject(name); - if(object != null){ - // These events are eventually compiled and we need to compare its mo, thus it cannot be null - programBuilder.addChild(threadCount, EventFactory.newStore(object, value)) - .setCFileInformation(currentLine, sourceCodeFile); + + final MemoryObject object = programBuilder.getMemoryObject(name); + if (object != null) { + addEvent(EventFactory.newStore(object, value)); continue; } - if (currentReturnName.equals(name)) { - if (!returnRegister.isEmpty()) { - Register ret = returnRegister.remove(returnRegister.size() - 1); - programBuilder.addChild(threadCount, EventFactory.newLocal(ret, value)) - .setCFileInformation(currentLine, sourceCodeFile); - } - continue; - } - throw new ParsingException("Variable " + name + " is not defined"); - } - return null; - } - - @Override - public Object visitReturn_cmd(Return_cmdContext ctx) { - Label label = programBuilder.getOrCreateLabel("END_OF_" + currentScope.getID()); - programBuilder.addChild(threadCount, EventFactory.newGoto(label)); - return null; - } - - @Override - public Object visitAssume_cmd(Assume_cmdContext ctx) { - if(ctx.getText().contains("sourceloc")) { - String line = ctx.getText(); - sourceCodeFile = line.substring(line.indexOf('\"') + 1, line.indexOf(',') - 1); - currentLine = Integer.parseInt(line.substring(line.indexOf(',') + 1, line.lastIndexOf(','))); - } - // We can get rid of all the "assume true" statements - if(!ctx.proposition().expr().getText().equals("true")) { - Label pairingLabel; - if(!pairLabels.containsKey(currentLabel)) { - // If the current label doesn't have a pairing label, we jump to the end of the program - pairingLabel = programBuilder.getOrCreateLabel("END_OF_T" + threadCount); - } else { - pairingLabel = pairLabels.get(currentLabel); - } - // Smack converts any unreachable instruction into an "assume(false)". - // https://github.com/smackers/smack/blob/main/lib/smack/SmackInstGenerator.cpp#L329-L333 - // There a mismatch between this and our Assume event semantics, thus we cannot use Assume. - // pairingLabel is guaranteed to be "END_OF_T" - if(ctx.proposition().expr().getText().equals("false")) { - programBuilder.addChild(threadCount, EventFactory.newGoto(pairingLabel)); - } - Expression c = (Expression) ctx.proposition().expr().accept(this); - if (c != null) { - programBuilder.addChild(threadCount, EventFactory.newJumpUnless(c, pairingLabel)); - } - } + + throw new ParsingException("Variable " + name + " is not defined"); + } + return null; + } + + @Override + public Object visitReturn_cmd(Return_cmdContext ctx) { + addEvent(EventFactory.newFunctionReturn(getRegister(currentReturnRegName))); + return null; + } + + @Override + public Object visitAssume_cmd(Assume_cmdContext ctx) { + if (ctx.getText().contains("sourceloc")) { + // Smack attaches source information to "assume true" statements + final String line = ctx.getText(); + sourceCodeFile = line.substring(line.indexOf('\"') + 1, line.indexOf(',') - 1); + currentLine = Integer.parseInt(line.substring(line.indexOf(',') + 1, line.lastIndexOf(','))); + } + + if (ctx.proposition().expr().getText().equals("true")) { + // We can get rid of all the "assume true" statements + return null; + } + + final Expression cond = (Expression) ctx.proposition().expr().accept(this); + final Expression terminationCond = expressions.makeNot(cond).visit(exprSimplifier); + final Label pairingLabel = pairLabels.get(currentLabel); + if (pairingLabel != null) { + // if there is a pairing label, we jump to that (this assume belongs to a conditional jump) + addEvent(EventFactory.newJump(terminationCond, pairingLabel)); + } else { + // ... else, we terminate the function + addEvent(EventFactory.newAbortIf(terminationCond)); + } return null; - } - - @Override - public Object visitLabel(LabelContext ctx) { - // Since we "inline" procedures, label names might clash - // thus we use currentScope.getID() + ":" - String labelName = currentScope.getID() + ":" + ctx.children.get(0).getText(); - Label label = (Label)programBuilder.getOrCreateLabel(labelName) - .setCFileInformation(currentLine, sourceCodeFile); - programBuilder.addChild(threadCount, label); - currentLabel = label; + } + + @Override + public Object visitLabel(LabelContext ctx) { + currentLabel = getOrNewLabel(ctx.children.get(0).getText()); + addEvent(currentLabel); return null; - } - - @Override - public Object visitGoto_cmd(Goto_cmdContext ctx) { - String labelName = currentScope.getID() + ":" + ctx.idents().children.get(0).getText(); - boolean loop = programBuilder.hasLabel(labelName); - Label l1 = programBuilder.getOrCreateLabel(labelName); - programBuilder.addChild(threadCount, EventFactory.newGoto(l1)); - // If there is a loop, we return if the loop is not completely unrolled. - // SMACK will take care of another escape if the loop is completely unrolled. - if(loop) { - Label label = programBuilder.getOrCreateLabel("END_OF_" + currentScope.getID()); - programBuilder.addChild(threadCount, EventFactory.newGoto(label)); - } - if(ctx.idents().children.size() > 1) { - for(int index = 2; index < ctx.idents().children.size(); index = index + 2) { - labelName = currentScope.getID() + ":" + ctx.idents().children.get(index - 2).getText(); - l1 = programBuilder.getOrCreateLabel(labelName); - // We know there are 2 labels and a comma in the middle - labelName = currentScope.getID() + ":" + ctx.idents().children.get(index).getText(); - Label l2 = programBuilder.getOrCreateLabel(labelName); - pairLabels.put(l1, l2); - } - } + } + + @Override + public Object visitGoto_cmd(Goto_cmdContext ctx) { + final List children = ctx.idents().children; + final Label l1 = getOrNewLabel(children.get(0).getText()); + addEvent(EventFactory.newGoto(l1)); + + if (children.size() > 3) { + throw new ParsingException("Cannot handle goto with 3 or more targets."); + } else if (children.size() > 1) { + // We know there are 2 labels and a comma in the middle + final Label l2 = getOrNewLabel(children.get(2).getText()); + pairLabels.put(l1, l2); + } + return null; - } - - @Override - public Object visitLogical_expr(Logical_exprContext ctx) { - if(ctx.getText().contains("forall") || ctx.getText().contains("exists") || ctx.getText().contains("lambda")) { - return null; - } - Expression v1 = (Expression)ctx.rel_expr().accept(this); - if(ctx.and_expr() != null) { - Expression v2 = (Expression)ctx.and_expr().accept(this); - v1 = expressions.makeAnd(v1, v2); - } - if(ctx.or_expr() != null) { - Expression v2 = (Expression)ctx.or_expr().accept(this); - v1 = expressions.makeOr(v1, v2); - } - return v1; - } - - @Override - public Object visitMinus_expr(Minus_exprContext ctx) { - IExpr v = (IExpr)ctx.unary_expr().accept(this); - return expressions.makeNEG(v, v.getType()); - } - - @Override - public Object visitNeg_expr(Neg_exprContext ctx) { - Expression v = (Expression)ctx.unary_expr().accept(this); - return expressions.makeNot(v); - } - - @Override - public Object visitAnd_expr(And_exprContext ctx) { - Expression v1 = (Expression)ctx.rel_expr(0).accept(this); - Expression v2; - for(int i = 0; i < ctx.rel_expr().size()-1; i++) { - v2 = (Expression)ctx.rel_expr(i+1).accept(this); - v1 = expressions.makeAnd(v1, v2); - } - return v1; - } - - @Override - public Object visitOr_expr(Or_exprContext ctx) { - Expression v1 = (Expression)ctx.rel_expr(0).accept(this); - Expression v2; - for(int i = 0; i < ctx.rel_expr().size()-1; i++) { - v2 = (Expression)ctx.rel_expr(i+1).accept(this); - v1 = expressions.makeOr(v1, v2); - } - return v1; - } - - @Override - public Object visitRel_expr(Rel_exprContext ctx) { - Expression v1 = (Expression)ctx.bv_term(0).accept(this); - Expression v2; - for(int i = 0; i < ctx.bv_term().size()-1; i++) { - v2 = (Expression)ctx.bv_term(i+1).accept(this); - v1 = switch (ctx.rel_op(i).op) { - case EQ -> expressions.makeEQ(v1, v2); - case NEQ -> expressions.makeNEQ(v1, v2); - case GTE -> expressions.makeGTE(v1, v2, true); - case LTE -> expressions.makeLTE(v1, v2, true); - case GT -> expressions.makeGT(v1, v2, true); - case LT -> expressions.makeLT(v1, v2, true); - case UGTE -> expressions.makeGTE(v1, v2, false); - case ULTE -> expressions.makeLTE(v1, v2, false); - case UGT -> expressions.makeGT(v1, v2, false); - case ULT -> expressions.makeLT(v1, v2, false); - }; - } - return v1; - } - - @Override - public Object visitTerm(TermContext ctx) { - Expression v1 = (Expression)ctx.factor(0).accept(this); - Expression v2; - for(int i = 0; i < ctx.factor().size()-1; i++) { - v2 = (Expression)ctx.factor(i+1).accept(this); - v1 = expressions.makeADD(v1, v2); - } - return v1; - } - - @Override - public Object visitFactor(FactorContext ctx) { - Expression v1 = (Expression)ctx.power(0).accept(this); - Expression v2 ; - for(int i = 0; i < ctx.power().size()-1; i++) { - v2 = (Expression)ctx.power(i+1).accept(this); - v1 = expressions.makeMUL(v1, v2); - } - return v1; - } - - @Override - public Object visitVar_expr(Var_exprContext ctx) { - String name = ctx.getText(); - if(currentCall != null && currentCall.getFunction().getBody() != null) { - return currentCall.replaceVarsByExprs(ctx); - } - if(constantsMap.containsKey(name)) { - return constantsMap.get(name); - } - if(constantsTypeMap.containsKey(name)) { - // Dummy register needed to parse axioms - IntegerType type = constantsTypeMap.get(name); - return new Register(name, Register.NO_THREAD, type); - } - Register register = programBuilder.getRegister(threadCount, currentScope.getID() + ":" + name); - if(register != null){ - return register; + } + + @Override + public Object visitLogical_expr(Logical_exprContext ctx) { + if (ctx.getText().contains("forall") || ctx.getText().contains("exists") || ctx.getText().contains("lambda")) { + return null; + } + Expression v1 = (Expression) ctx.rel_expr().accept(this); + if (ctx.and_expr() != null) { + Expression v2 = (Expression) ctx.and_expr().accept(this); + v1 = expressions.makeAnd(v1, v2); + } + if (ctx.or_expr() != null) { + Expression v2 = (Expression) ctx.or_expr().accept(this); + v1 = expressions.makeOr(v1, v2); + } + return v1; + } + + @Override + public Object visitMinus_expr(Minus_exprContext ctx) { + Expression operand = (Expression) ctx.unary_expr().accept(this); + if (!(operand.getType() instanceof IntegerType type)) { + throw new ParsingException(String.format("Non-integer expression -%s", operand)); } - if(threadLocalVariables.contains(name)) { - return programBuilder.getOrNewObject(String.format("%s(%s)", name, threadCount)); + return expressions.makeNEG(operand, type); + } + + @Override + public Object visitNeg_expr(Neg_exprContext ctx) { + Expression v = (Expression) ctx.unary_expr().accept(this); + return expressions.makeNot(v); + } + + @Override + public Object visitAnd_expr(And_exprContext ctx) { + Expression v1 = (Expression) ctx.rel_expr(0).accept(this); + Expression v2; + for (int i = 1; i < ctx.rel_expr().size(); i++) { + v2 = (Expression) ctx.rel_expr(i).accept(this); + v1 = expressions.makeAnd(v1, v2); } - MemoryObject object = programBuilder.getObject(name); - if(object != null) { + return v1; + } + + @Override + public Object visitOr_expr(Or_exprContext ctx) { + Expression v1 = (Expression) ctx.rel_expr(0).accept(this); + Expression v2; + for (int i = 1; i < ctx.rel_expr().size(); i++) { + v2 = (Expression) ctx.rel_expr(i).accept(this); + v1 = expressions.makeOr(v1, v2); + } + return v1; + } + + @Override + public Object visitRel_expr(Rel_exprContext ctx) { + Expression v1 = (Expression) ctx.bv_term(0).accept(this); + Expression v2; + for (int i = 1 ; i < ctx.bv_term().size(); i++) { + v2 = (Expression) ctx.bv_term(i).accept(this); + v1 = switch (ctx.rel_op(i - 1).op) { + case EQ -> expressions.makeEQ(v1, v2); + case NEQ -> expressions.makeNEQ(v1, v2); + case GTE -> expressions.makeGTE(v1, v2, true); + case LTE -> expressions.makeLTE(v1, v2, true); + case GT -> expressions.makeGT(v1, v2, true); + case LT -> expressions.makeLT(v1, v2, true); + case UGTE -> expressions.makeGTE(v1, v2, false); + case ULTE -> expressions.makeLTE(v1, v2, false); + case UGT -> expressions.makeGT(v1, v2, false); + case ULT -> expressions.makeLT(v1, v2, false); + }; + } + return v1; + } + + @Override + public Object visitTerm(TermContext ctx) { + Expression v1 = (Expression) ctx.factor(0).accept(this); + Expression v2; + for (int i = 1; i < ctx.factor().size(); i++) { + v2 = (Expression) ctx.factor(i).accept(this); + v1 = expressions.makeADD(v1, v2); + } + return v1; + } + + @Override + public Object visitFactor(FactorContext ctx) { + Expression v1 = (Expression) ctx.power(0).accept(this); + Expression v2; + for (int i = 1; i < ctx.power().size(); i++) { + v2 = (Expression) ctx.power(i).accept(this); + v1 = expressions.makeMUL(v1, v2); + } + return v1; + } + + @Override + public Object visitVar_expr(Var_exprContext ctx) { + final String varName = ctx.getText(); + if (currentCall != null && currentCall.function().body() != null) { + // we encountered a function parameter and replace it by the call argument + // NOTE: This notion of "function" refers to Boogie functions + return currentCall.getArgumentForParameter(ctx); + } + if (constantsValueMap.containsKey(varName)) { + return constantsValueMap.get(varName); + } + if (constantSymbolMap.containsKey(varName)) { + return constantSymbolMap.get(varName); + } + + final Register register = programBuilder.functionExists(currentFunction) ? getRegister(varName) : null; + if (register != null) { + return register; + } + + final MemoryObject object = programBuilder.getMemoryObject(varName); + if (object != null) { return object; } - throw new ParsingException("Variable " + name + " is not defined"); - } - - @Override - public Object visitFun_expr(Fun_exprContext ctx) { - String name = ctx.Ident().getText(); - Function function = functions.get(name); - if(function == null) { - throw new ParsingException("Function " + name + " is not defined"); - } - if(name.startsWith("$extractvalue")) { - String structName = ctx.expr(0).getText(); - String idx = ctx.expr(1).getText(); - Register reg = programBuilder.getRegister(threadCount, String.format("%s:%s(%s)", currentScope.getID(), structName, idx)); - // It is the responsibility of each LLVM istruction creating a structure to create such registers, - // thus we use getRegister and fail if the register is not there. - if(reg == null) { - throw new ParsingException(String.format("Structure %s at index %s has not been initialized", structName, idx)); - } - return reg; - } - if(name.contains("$load.")) { - return ctx.expr(1).accept(this); - } - if(name.contains("$store.")) { - if(doIgnoreVariable(ctx.expr(1).getText())) { - return null; - } - IExpr address = (IExpr)ctx.expr(1).accept(this); - IExpr value = (IExpr)ctx.expr(2).accept(this); - // This improves the blow-up - if(initMode && !(value instanceof MemoryObject)) { - Expression lhs = address; - int rhs = 0; - while(lhs instanceof IExprBin left) { - rhs += left.getRHS().reduce().getValueAsInt(); - lhs = left.getLHS(); - } - String text = ctx.expr(1).getText(); - String[] split = text.split("add.ref"); - if(split.length > 1) { - text = split[split.length - 1]; - text = text.substring(text.indexOf("(")+1, text.indexOf(",")); - } - programBuilder.getOrNewObject(text).appendInitialValue(rhs,value.reduce()); - return null; - } - programBuilder.addChild(threadCount, EventFactory.newStore(address, value)) - .setCFileInformation(currentLine, sourceCodeFile); - return null; - } - // push currentCall to the call stack - List callParams = ctx.expr().stream().map(e -> e.accept(this)).collect(Collectors.toList()); - currentCall = new FunctionCall(function, callParams, currentCall); - if(LLVMFUNCTIONS.stream().anyMatch(name::startsWith)) { - currentCall = currentCall.getParent(); - return llvmFunction(name, callParams, expressions); - } - if(LLVMPREDICATES.stream().anyMatch(name::equals)) { - currentCall = currentCall.getParent(); - return llvmPredicate(name, callParams, expressions); - } - if(LLVMUNARY.stream().anyMatch(name::startsWith)) { - currentCall = currentCall.getParent(); - return llvmUnary(name, callParams, expressions); - } - if(SMACKPREDICATES.stream().anyMatch(name::equals)) { - currentCall = currentCall.getParent(); - return smackPredicate(name, callParams, expressions); - } - // Some functions do not have a body - if(function.getBody() == null) { - throw new ParsingException("Function " + name + " has no implementation"); - } - Object ret = function.getBody().accept(this); - // pop currentCall from the call stack - currentCall = currentCall.getParent(); - return ret; - } - - @Override - public Object visitIf_then_else_expr(If_then_else_exprContext ctx) { - Expression guard = (Expression) ctx.expr(0).accept(this); - Expression tbranch = (Expression) ctx.expr(1).accept(this); - Expression fbranch = (Expression) ctx.expr(2).accept(this); - return expressions.makeConditional(guard, tbranch, fbranch); - } - - @Override - public Object visitParen_expr(Paren_exprContext ctx) { - return ctx.expr().accept(this); - } - - @Override - public Object visitBv_expr(Bv_exprContext ctx) { - String value = ctx.getText().split("bv")[0]; - int bitWidth = Integer.parseInt(ctx.getText().split("bv")[1]); - return expressions.parseValue(value, types.getIntegerType(bitWidth)); - } - - @Override - public Object visitInt_expr(Int_exprContext ctx) { - return expressions.parseValue(ctx.getText(), types.getArchType()); - } - - @Override - public Object visitBool_lit(Bool_litContext ctx) { - return expressions.makeValue(Boolean.parseBoolean(ctx.getText())); - } - - @Override - public Object visitDec(DecContext ctx) { + throw new ParsingException("Variable " + varName + " is not defined"); + } + + @Override + public Object visitFun_expr(Fun_exprContext ctx) { + //NOTE: This notion of "function" refers to Boogie functions like "add.ref" which are used + // without the "call" keyword. + // C-level (user-defined) functions are "procedure" in Boogie and not handled by this function. + final String funcName = ctx.Ident().getText(); + final BoogieFunction function = boogieFunctions.get(funcName); + + if (function == null) { + throw new ParsingException("Function " + funcName + " is not defined"); + } + + if (funcName.startsWith("$extractvalue")) { + final String structName = ctx.expr(0).getText(); + final String idx = ctx.expr(1).getText(); + final Register reg = getRegister(String.format("%s(%s)", structName, idx)); + // It is the responsibility of each LLVM instruction creating a structure to create such registers, + // thus we use getRegister and fail if the register is not there. + if (reg == null) { + throw new ParsingException(String.format("Structure %s at index %s has not been initialized", structName, idx)); + } + return reg; + } + if (funcName.contains("$load.")) { + return ctx.expr(1).accept(this); + } + if (funcName.contains("$store.")) { + if (doIgnoreVariable(ctx.expr(1).getText())) { + // Stores to "ignored" variables are skipped + return null; + } + final Expression address = (Expression) ctx.expr(1).accept(this); + final Expression value = (Expression) ctx.expr(2).accept(this); + addEvent(EventFactory.newStore(address, value)); + return null; + } + final List callParams = ctx.expr().stream().map(e -> (Expression)e.accept(this)).collect(Collectors.toList()); + if (LLVMFUNCTIONS.stream().anyMatch(funcName::startsWith)) { + return llvmFunction(funcName, callParams, expressions); + } + if (LLVMPREDICATES.stream().anyMatch(funcName::equals)) { + return llvmPredicate(funcName, callParams, expressions); + } + if (LLVMUNARY.stream().anyMatch(funcName::startsWith)) { + return llvmUnary(funcName, callParams, expressions); + } + if (SMACKPREDICATES.stream().anyMatch(funcName::equals)) { + return smackPredicate(funcName, callParams, expressions); + } + // Some functions do not have a body + if (function.body() == null) { + throw new ParsingException("Function " + funcName + " has no implementation"); + } + currentCall = new BoogieFunctionCall(function, callParams, currentCall); // push currentCall to the call stack + Object ret = function.body().accept(this); + currentCall = currentCall.parent(); // pop currentCall from the call stack + return ret; + } + + @Override + public Object visitIf_then_else_expr(If_then_else_exprContext ctx) { + final Expression guard = (Expression) ctx.expr(0).accept(this); + final Expression tbranch = (Expression) ctx.expr(1).accept(this); + final Expression fbranch = (Expression) ctx.expr(2).accept(this); + return expressions.makeConditional(guard, tbranch, fbranch); + } + + @Override + public Object visitParen_expr(Paren_exprContext ctx) { + return ctx.expr().accept(this); + } + + @Override + public Object visitBv_expr(Bv_exprContext ctx) { + final String value = ctx.getText().split("bv")[0]; + final int bitWidth = Integer.parseInt(ctx.getText().split("bv")[1]); + return expressions.parseValue(value, types.getIntegerType(bitWidth)); + } + + @Override + public Object visitInt_expr(Int_exprContext ctx) { + return expressions.parseValue(ctx.getText(), types.getArchType()); + } + + @Override + public Object visitBool_lit(Bool_litContext ctx) { + return expressions.makeValue(Boolean.parseBoolean(ctx.getText())); + } + + @Override + public Object visitDec(DecContext ctx) { throw new ParsingException("Floats are not yet supported"); - } - - @Override - public Object visitLine_comment(Line_commentContext ctx) { - String line = ctx.getText(); - line = line.substring(line.indexOf("version") + 8, line.indexOf("for")); - logger.info("SMACK version: " + line); - return null; - } - - protected Register getOrNewRegister(String name) { - return programBuilder.getOrNewRegister(threadCount, name); - } - - protected void addAssertion(IExpr expr) { - Register ass = programBuilder.getOrNewRegister(threadCount, "assert_" + assertionIndex, expr.getType()); - IValue one = expressions.makeOne(expr.getType()); - assertionIndex++; - programBuilder.addChild(threadCount, EventFactory.newLocal(ass, expr)) - .setCFileInformation(currentLine, sourceCodeFile) - .addTags(Tag.ASSERTION); - Label end = programBuilder.getOrCreateLabel("END_OF_T" + threadCount); - CondJump jump = EventFactory.newJump(expressions.makeNEQ(ass, one), end); - jump.addTags(Tag.EARLYTERMINATION); - programBuilder.addChild(threadCount, jump); - - } + } + + @Override + public Object visitLine_comment(Line_commentContext ctx) { + String line = ctx.getText(); + line = line.substring(line.indexOf("version") + 8, line.indexOf("for")); + logger.info("SMACK version: " + line); + return null; + } + + protected void addAssertion(Expression expr) { + final Expression condition = expressions.makeBooleanCast(expr); + final Register ass = programBuilder.getOrNewRegister(currentFunction, "assert_" + assertionCounter, condition.getType()); + assertionCounter++; + final Event terminator = EventFactory.newAbortIf(expressions.makeNot(ass).visit(exprSimplifier)); + addEvent(EventFactory.newLocal(ass, condition)).addTags(Tag.ASSERTION); + addEvent(terminator).addTags(Tag.EARLYTERMINATION); + + } + + // ======================================================================================== + // ------------------------------- Internal data structures ------------------------------- + // ======================================================================================== + private record VarDeclaration(String varName, Type type) { } + + public record BoogieFunction(String name, List signature, ExprContext body) { } + + private record BoogieFunctionCall(BoogieFunction function, List callArguments, BoogieFunctionCall parent) { + + public BoogieFunctionCall { + if (!(function.signature().size() == callArguments.size())) { + throw new ParsingException("The number of arguments in the function call does not match " + function.name() + "'s signature"); + } + } + + public Expression getArgumentForParameter(Var_exprContext paramCtx) { + final List signature = Lists.transform(function.signature(), s -> s.Ident().getText()); + final String paramName = paramCtx.getText(); + final int index = signature.indexOf(paramName); + if (index == -1) { + throw new ParsingException("Input " + paramName + " is not part of " + function.name() + " signature"); + } + + //TODO: I don't understand why we can go the topmost caller like this without updating the index in any way + // I guess it is wrong and only works because functions are either not nested or just pass their arguments + // forward? + BoogieFunctionCall caller = this; + while (caller.parent != null) { + caller = caller.parent; + } + return caller.callArguments.get(index); + } + } + + private record ConstantSymbol(Type type, String name) implements Expression { + @Override + public Type getType() { return type; } + + @Override + public T visit(ExpressionVisitor visitor) { + throw new ParsingException("Visiting ConstantSymbols should not happen."); + } + } + } \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/Function.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/Function.java new file mode 100644 index 0000000000..ae843a130f --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/Function.java @@ -0,0 +1,152 @@ +package com.dat3m.dartagnan.program; + +import com.dat3m.dartagnan.exception.MalformedProgramException; +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.IConst; +import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; +import com.dat3m.dartagnan.expression.type.FunctionType; +import com.dat3m.dartagnan.expression.type.Type; +import com.dat3m.dartagnan.expression.type.TypeFactory; +import com.dat3m.dartagnan.expression.type.VoidType; +import com.dat3m.dartagnan.program.event.core.Event; +import com.google.common.base.Preconditions; + +import java.util.*; +import java.util.stream.Collectors; + +public class Function implements Expression { + + protected String name; + protected Event entry; // Can be null for intrinsics + protected int id; + protected Event exit; + + protected FunctionType functionType; + protected List parameterRegs; + + protected Program program; + protected Map registers = new HashMap<>(); + protected int dummyCount = 0; + + public Function(String name, FunctionType type, List parameterNames, int id, Event entry) { + Preconditions.checkArgument(type.getParameterTypes().size() == parameterNames.size()); + Preconditions.checkArgument(entry == null || entry.getPredecessor() == null, + "The entry event of a function is not allowed to have predecessors."); + this.name = name; + this.functionType = type; + this.id = id; + this.entry = entry; + + parameterRegs = new ArrayList<>(parameterNames.size()); + int paramIndex = 0; + for (Type paramType : functionType.getParameterTypes()) { + final Register paramReg = newRegister(parameterNames.get(paramIndex++), paramType); + parameterRegs.add(paramReg); + } + + Event cur = entry; + while (cur != null) { + cur.setFunction(this); + exit = cur; + cur = cur.getSuccessor(); + } + } + + @Override + public Type getType() { + return TypeFactory.getInstance().getArchType(); + } + + public String getName() { return this.name; } + public void setName(String name) { this.name = name; } + public FunctionType getFunctionType() { return this.functionType; } + public List getParameterRegisters() { + return Collections.unmodifiableList(parameterRegs); + } + public int getId() { return id; } + public Program getProgram() { return this.program; } + public void setProgram(Program program) { this.program = program; } + + public boolean hasBody() { return entry != null; } + public boolean hasReturnValue() { return !(functionType.getReturnType() instanceof VoidType); } + + public Event getEntry() { return entry; } + public Event getExit() { return exit; } + + public List getEvents() { + return entry == null ? List.of() : entry.getSuccessors(); + } + + public List getEvents(Class cls) { + return getEvents().stream().filter(cls::isInstance).map(cls::cast).collect(Collectors.toList()); + } + + public Collection getRegisters() { + return registers.values(); + } + + public Register getRegister(String name){ + return registers.get(name); + } + + public Register newRegister(Type type) { + return newRegister("DUMMY_REG_" + dummyCount++, type); + } + + public Register newRegister(String name, Type type) { + if (registers.containsKey(name)) { + final String error = String.format("Register %s already exists in function %s", name, this); + throw new MalformedProgramException(error); + } + Register register = new Register(name, id, type); + registers.put(name, register); + return register; + } + + public Register getOrNewRegister(String name, Type type) { + final Register found = registers.get(name); + if (found == null) { + return newRegister(name, type); + } + Preconditions.checkState(found.getType().equals(type), + "Register type mismatch: Got %s, expected %s.", found.getType(), type); + return found; + } + + public void append(Event event){ + if (entry == null) { + entry = exit = event; + event.setFunction(this); + event.setSuccessor(null); + event.setPredecessor(null); + } else { + exit.insertAfter(event); + } + } + + public void updateExit(Event event){ + exit = event; + Event next; + while((next = exit.getSuccessor()) != null){ + exit = next; + } + } + + @Override + public String toString() { + final String prefix = getFunctionType().getReturnType() + " " + getName() + "("; + final String suffix = ")"; + return parameterRegs.stream().map(r -> r.getType() + " " + r.getName()) + .collect(Collectors.joining(", ", prefix, suffix)); + } + + @Override + public T visit(ExpressionVisitor visitor) { + return visitor.visit(this); + } + + @Override + public IConst reduce() { + throw new UnsupportedOperationException("Cannot reduce functions"); + } +} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/Program.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/Program.java index 06ca5048f4..527d5a5054 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/Program.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/Program.java @@ -1,8 +1,8 @@ package com.dat3m.dartagnan.program; -import com.dat3m.dartagnan.expression.INonDet; import com.dat3m.dartagnan.configuration.Arch; +import com.dat3m.dartagnan.expression.INonDet; import com.dat3m.dartagnan.program.event.core.Event; import com.dat3m.dartagnan.program.memory.Memory; import com.dat3m.dartagnan.program.specification.AbstractAssert; @@ -16,65 +16,72 @@ public class Program { - public enum SourceLanguage { LITMUS, BOOGIE; } + public enum SourceLanguage {LITMUS, BOOGIE;} private String name; - private AbstractAssert spec; + private AbstractAssert spec; private AbstractAssert filterSpec; // Acts like "assume" statements, filtering out executions - private final List threads; + private final List threads; + private final List functions; private final List constants = new ArrayList<>(); - private final Memory memory; - private Arch arch; + private final Memory memory; + private Arch arch; private int unrollingBound = 0; private boolean isCompiled; - private SourceLanguage format; + private final SourceLanguage format; - public Program(Memory memory, SourceLanguage format){ + public Program(Memory memory, SourceLanguage format) { this("", memory, format); } - public Program (String name, Memory memory, SourceLanguage format) { - this.name = name; - this.memory = memory; - this.threads = new ArrayList<>(); - this.format = format; - } + public Program(String name, Memory memory, SourceLanguage format) { + this.name = name; + this.memory = memory; + this.threads = new ArrayList<>(); + this.functions = new ArrayList<>(); + this.format = format; + } - public SourceLanguage getFormat(){ + public SourceLanguage getFormat() { return format; } - public boolean isCompiled(){ + public boolean isCompiled() { return isCompiled; } - public boolean isUnrolled(){ + + public boolean isUnrolled() { return unrollingBound > 0; } - public int getUnrollingBound(){ + + public int getUnrollingBound() { return unrollingBound; } - public String getName(){ + public String getName() { return name; } - public void setName(String name){ - this.name = name; + + public void setName(String name) { + this.name = name; } - public void setArch(Arch arch){ - this.arch = arch; + public void setArch(Arch arch) { + this.arch = arch; } - public Arch getArch(){ - return arch; + + public Arch getArch() { + return arch; } - public Memory getMemory(){ + public Memory getMemory() { return this.memory; } public AbstractAssert getSpecification() { return spec; } + public void setSpecification(AbstractAssert spec) { this.spec = spec; } @@ -82,19 +89,29 @@ public void setSpecification(AbstractAssert spec) { public AbstractAssert getFilterSpecification() { return filterSpec; } + public void setFilterSpecification(AbstractAssert spec) { Preconditions.checkArgument(spec == null || AbstractAssert.ASSERT_TYPE_FORALL.equals(spec.getType())); this.filterSpec = spec; } - public void add(Thread t) { - threads.add(t); - } + public void addThread(Thread t) { + threads.add(t); + t.setProgram(this); + } + + public void addFunction(Function func) { + Preconditions.checkArgument(!(func instanceof Thread), "Use addThread to add threads to the program"); + functions.add(func); + func.setProgram(this); + } public List getThreads() { return threads; } + public List getFunctions() { return functions; } + public void addConstant(INonDet constant) { constants.add(constant); } @@ -108,20 +125,20 @@ public Collection getConstants() { * * @return {@code cId}-ordered complete sequence of all events in this program. */ - public List getEvents() { + public List getEvents() { List events = new ArrayList<>(); - for (Thread t : threads) { - events.addAll(t.getEvents()); - } - return events; - } + for (Thread t : threads) { + events.addAll(t.getEvents()); + } + return events; + } /** * Iterates a subset of events in this program. * * @param cls Class of events to be selected. - * @return {@code cId}-ordered complete sequence of all events of class {@code cls} in this program. * @param Desired subclass of {@link Event}. + * @return {@code cId}-ordered complete sequence of all events of class {@code cls} in this program. */ public List getEvents(Class cls) { return getEvents().stream().filter(cls::isInstance).map(cls::cast).collect(Collectors.toList()); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/Register.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/Register.java index e76971385c..2f74d06c46 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/Register.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/Register.java @@ -1,27 +1,27 @@ package com.dat3m.dartagnan.program; import com.dat3m.dartagnan.expression.Expression; -import com.dat3m.dartagnan.expression.IExpr; import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; -import com.dat3m.dartagnan.expression.type.IntegerType; +import com.dat3m.dartagnan.expression.type.Type; import com.google.common.collect.ImmutableSet; import java.util.Set; import static com.google.common.base.Preconditions.checkNotNull; -public class Register extends IExpr { +public class Register implements Expression { - public static final int NO_THREAD = -1; + public static final int NO_FUNCTION = -1; private final String name; private String cVar; - private final int threadId; + private final int funcId; + private final Type type; - public Register(String name, int threadId, IntegerType type) { - super(type); + public Register(String name, int funcId, Type type) { this.name = checkNotNull(name); - this.threadId = threadId; + this.funcId = funcId; + this.type = checkNotNull(type); } public String getName() { @@ -36,8 +36,13 @@ public void setCVar(String name) { this.cVar = name; } - public int getThreadId() { - return threadId; + public int getFunctionId() { + return funcId; + } + + @Override + public Type getType() { + return type; } @Override @@ -47,7 +52,7 @@ public String toString() { @Override public int hashCode() { - return name.hashCode() + threadId; + return name.hashCode() + funcId; } @Override @@ -59,7 +64,7 @@ public boolean equals(Object obj) { } Register rObj = (Register) obj; - return name.equals(rObj.name) && threadId == rObj.threadId; + return name.equals(rObj.name) && funcId == rObj.funcId; } @Override @@ -72,11 +77,6 @@ public T visit(ExpressionVisitor visitor) { return visitor.visit(this); } - @Override - public IExpr getBase() { - return this; - } - // ============================== Static utility ============================= public static Set collectRegisterReads(Expression expr, Register.UsageType usageType, Set collector) { diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/ScopedThread/PTXThread.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/ScopedThread/PTXThread.java index 957b75fc05..084e957938 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/ScopedThread/PTXThread.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/ScopedThread/PTXThread.java @@ -1,23 +1,21 @@ package com.dat3m.dartagnan.program.ScopedThread; +import com.dat3m.dartagnan.expression.type.FunctionType; import com.dat3m.dartagnan.program.event.Tag; import com.dat3m.dartagnan.program.event.core.Event; +import java.util.List; + public class PTXThread extends ScopedThread { // There is a unique system level - public PTXThread(String name, int id, Event entry, int GpuId, int CtaId) { - super(name, id, entry); + public PTXThread(String name, FunctionType funcType, List parameterNames, int id, Event entry, + int GpuId, int CtaId) { + super(name, funcType, parameterNames, id, entry); this.scopeIds.put(Tag.PTX.SYS, 0); this.scopeIds.put(Tag.PTX.GPU, GpuId); this.scopeIds.put(Tag.PTX.CTA, CtaId); } - public PTXThread(int id, Event entry, int GpuId, int CtaId) { - super(id, entry); - this.scopeIds.put(Tag.PTX.SYS, 0); - this.scopeIds.put(Tag.PTX.GPU, GpuId); - this.scopeIds.put(Tag.PTX.CTA, CtaId); - } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/ScopedThread/ScopedThread.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/ScopedThread/ScopedThread.java index 6fb6ef5fda..628372bf92 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/ScopedThread/ScopedThread.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/ScopedThread/ScopedThread.java @@ -1,24 +1,24 @@ package com.dat3m.dartagnan.program.ScopedThread; +import com.dat3m.dartagnan.expression.type.FunctionType; import com.dat3m.dartagnan.program.Thread; import com.dat3m.dartagnan.program.event.core.Event; import java.util.ArrayList; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; +//TODO: One could create a ScopeHierarchy class and let Thread have a (optional) member of that class. +// Then I think neither PTXThread nor ScopedThread would be needed anymore. public class ScopedThread extends Thread { // There is a hierarchy of scopes, the order of keys // is important, thus we use a LinkedHashMap protected final Map scopeIds = new LinkedHashMap<>(); - public ScopedThread(String name, int id, Event entry) { - super(name, id, entry); - } - - public ScopedThread(int id, Event entry) { - super(id, entry); + public ScopedThread(String name, FunctionType funcType, List parameterNames, int id, Event entry) { + super(name, funcType, parameterNames, id, entry); } public ArrayList getScopes() { @@ -34,6 +34,7 @@ public boolean sameAtHigherScope(ScopedThread thread, String flag) { if (!this.getClass().equals(thread.getClass()) || !this.getScopes().contains(flag)) { return false; } + ArrayList scopes = this.getScopes(); int validIndex = scopes.indexOf(flag); // scopes(0) is highest in hierarchy diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/Thread.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/Thread.java index a70880d0b9..9ec568d39d 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/Thread.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/Thread.java @@ -1,132 +1,17 @@ package com.dat3m.dartagnan.program; -import com.dat3m.dartagnan.exception.MalformedProgramException; -import com.dat3m.dartagnan.expression.type.IntegerType; +import com.dat3m.dartagnan.expression.type.FunctionType; import com.dat3m.dartagnan.program.event.core.Event; import com.google.common.base.Preconditions; -import java.util.Collection; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; -public class Thread { +public class Thread extends Function { - private String name; - private final int id; - private final Event entry; - private Event exit; - - protected Program program; // The program this thread belongs to - - private final Map registers; - private int dummyCount = 0; - - public Thread(String name, int id, Event entry){ - Preconditions.checkArgument(id >= 0, "Invalid thread ID"); - Preconditions.checkNotNull(entry, "Thread entry event must be not null"); - entry.setThread(this); - this.name = name; - this.id = id; - this.entry = entry; - this.exit = this.entry; - this.registers = new HashMap<>(); - } - - public Thread(int id, Event entry){ - this(String.valueOf(id), id, entry); - } - - public String getName(){ - return name; - } - - public void setName(String name){ - this.name = name; - } - - public int getId(){ - return id; - } - - public List getEvents() { - return entry.getSuccessors(); - } - - public List getEvents(Class cls) { - return getEvents().stream().filter(cls::isInstance).map(cls::cast).collect(Collectors.toList()); - } - - public Program getProgram() { - return program; - } - - public void setProgram(Program program) { - Preconditions.checkNotNull(program); - this.program = program; - } - - /** - * Lists all registers of this thread. - * @return - * Read-only container of all currently defined registers of this thread. - */ - public Collection getRegisters() { - return registers.values(); - } - - public Register getRegister(String name){ - return registers.get(name); - } - - public Register newRegister(IntegerType type) { - return newRegister("DUMMY_REG_" + dummyCount++, type); - } - - public Register newRegister(String name, IntegerType type) { - if (registers.containsKey(name)) { - throw new MalformedProgramException("Register " + id + ":" + name + " already exists"); - } - Register register = new Register(name, id, type); - registers.put(name, register); - return register; - } - - public Event getEntry(){ - return entry; - } - - public Event getExit(){ - return exit; - } - - public void append(Event event){ - exit.insertAfter(event); - } - - public void updateExit(Event event){ - exit = event; - Event next; - while((next = exit.getSuccessor()) != null){ - exit = next; - } - } - - @Override - public int hashCode() { - return id; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } else if (obj == null || getClass() != obj.getClass()) { - return false; - } - - return id == ((Thread) obj).id; + public Thread(String name, FunctionType funcType, List parameterNames, int id, Event entry) { + super(name, funcType, parameterNames, id, entry); + Preconditions.checkArgument(id >= 0, "Invalid thread ID"); + Preconditions.checkNotNull(entry, "Thread entry event must be not null"); } @Override diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/BranchEquivalence.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/BranchEquivalence.java index ca082cd926..09399c1363 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/BranchEquivalence.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/BranchEquivalence.java @@ -97,7 +97,9 @@ public boolean isImplied(Event start, Event implied) { } public boolean isReachableFrom(Event start, Event target) { - return start.getThread() == target.getThread() && start.getGlobalId() <= target.getGlobalId() && getEquivalenceClass(start).getReachableClasses().contains(getEquivalenceClass(target)); + return start.getFunction() == target.getFunction() + && start.getGlobalId() <= target.getGlobalId() + && getEquivalenceClass(start).getReachableClasses().contains(getEquivalenceClass(target)); } public Set getExclusiveEvents(Event e) { @@ -314,7 +316,7 @@ private void computeExclusiveClasses(Map> threadBranc Event e1 = c1.getRepresentative(); Event e2 = c2.getRepresentative(); - if ( e1.getThread() == e2.getThread() && e1.getGlobalId() < e2.getGlobalId()) { + if ( e1.getFunction() == e2.getFunction() && e1.getGlobalId() < e2.getGlobalId()) { if (!c1.reachableClasses.contains(c2)) { excl.add(c2); c2.exclusiveClasses.add(c1); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/Dependency.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/Dependency.java index cfa5e657dd..0422a8b1a6 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/Dependency.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/Dependency.java @@ -109,16 +109,16 @@ private void process(Thread thread, ExecutionAnalysis exec) { if (!registers.isEmpty()) { Map result = new HashMap<>(); for (Register register : registers) { - if (register.getThreadId() == Register.NO_THREAD) { + if (register.getFunctionId() == Register.NO_FUNCTION) { continue; } State writers; - if (register.getThreadId() != event.getThread().getId()) { + if (register.getFunctionId() != event.getThread().getId()) { writers = finalWriters.get(register); checkArgument(writers != null, "Helper thread %s should be listed after their creator thread %s.", thread.getId(), - register.getThreadId()); + register.getFunctionId()); if (writers.may.size() != 1) { logger.warn("Writers {} for inter-thread register {} read by event {} of thread {}", writers.may, @@ -201,7 +201,7 @@ public boolean equals(Object o) { return this == o || o instanceof Writer writer && (event == null ? writer.event == null && register.equals(writer.register) - : event.equals(((Writer) o).event)); + : event.equals(writer.event)); } @Override diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/SyntacticContextAnalysis.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/SyntacticContextAnalysis.java index 37ff47d9e9..4fbbe508a9 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/SyntacticContextAnalysis.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/SyntacticContextAnalysis.java @@ -3,8 +3,8 @@ import com.dat3m.dartagnan.program.Program; import com.dat3m.dartagnan.program.Thread; import com.dat3m.dartagnan.program.event.core.Event; -import com.dat3m.dartagnan.program.event.core.annotations.FunCall; -import com.dat3m.dartagnan.program.event.core.annotations.FunRet; +import com.dat3m.dartagnan.program.event.core.annotations.FunCallMarker; +import com.dat3m.dartagnan.program.event.core.annotations.FunReturnMarker; import com.dat3m.dartagnan.program.event.metadata.SourceLocation; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; @@ -66,15 +66,15 @@ public String toString() { } public static class CallContext implements Context { - private final FunCall funCall; + private final FunCallMarker funCallMarker; - private CallContext(FunCall funCall) { this.funCall = funCall; } + private CallContext(FunCallMarker funCallMarker) { this.funCallMarker = funCallMarker; } - public FunCall getFunctionCall() { return this.funCall; } + public FunCallMarker getFunctionCall() { return this.funCallMarker; } @Override public String toString() { - return String.format("%s %s", funCall.getFunctionName(), getSourceLocationString(funCall)); + return String.format("%s %s", funCallMarker.getFunctionName(), getSourceLocationString(funCallMarker)); } } @@ -161,9 +161,9 @@ private void run(Thread thread, LoopAnalysis loops) { infoMap.put(ev, new Info(ev, copyOfCurContextStack)); // TODO: The above could be made more efficient by sharing unchanged context - if (ev instanceof FunCall fc) { + if (ev instanceof FunCallMarker fc) { curContextStack.push(new CallContext(fc)); - } else if (ev instanceof FunRet) { + } else if (ev instanceof FunReturnMarker) { assert curContextStack.peek() instanceof CallContext; curContextStack.pop(); } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/alias/AndersenAliasAnalysis.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/alias/AndersenAliasAnalysis.java index 55b19b1f7b..26b217708a 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/alias/AndersenAliasAnalysis.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/alias/AndersenAliasAnalysis.java @@ -2,7 +2,6 @@ import com.dat3m.dartagnan.expression.Expression; import com.dat3m.dartagnan.expression.IConst; -import com.dat3m.dartagnan.expression.IExpr; import com.dat3m.dartagnan.expression.IExprBin; import com.dat3m.dartagnan.program.Program; import com.dat3m.dartagnan.program.Register; @@ -90,6 +89,7 @@ private void run(Program program) { for (MemoryCoreEvent e : memEvents) { processLocs(e); } + //FIXME: Add handling for thread parameters (or get rid of this class) for (Local e : locals) { processRegs(e); } @@ -154,7 +154,7 @@ private void processRegs(Local e) { if (expr instanceof Register) { // r1 = r2 -> add edge r2 --> r1 addEdge(expr, register); - } else if (expr instanceof IExprBin iBin && iBin.getBase() instanceof Register) { + } else if (expr instanceof IExprBin iBin && iBin.getLHS() instanceof Register) { addAllAddresses(register, maxAddressSet); variables.add(register); } else if (expr instanceof MemoryObject mem) { @@ -209,9 +209,9 @@ private void processResults(Local e) { if (!(exp instanceof IExprBin iBin)) { return; } - IExpr base = iBin.getBase(); + Expression base = iBin.getLHS(); if (base instanceof MemoryObject mem) { - IExpr rhs = iBin.getRHS(); + Expression rhs = iBin.getRHS(); //FIXME Address extends IConst if (rhs instanceof IConst ic) { addTarget(reg, new Location(mem, ic.getValueAsInt())); @@ -225,7 +225,7 @@ private void processResults(Local e) { } //accept register2 = register1 + constant for (Location target : targets.getOrDefault(base, Set.of())) { - IExpr rhs = ((IExprBin) exp).getRHS(); + Expression rhs = ((IExprBin) exp).getRHS(); //FIXME Address extends IConst if (rhs instanceof IConst ic) { int o = target.offset + ic.getValueAsInt(); @@ -275,8 +275,8 @@ private static final class Constant { return; } if (x instanceof IExprBin iBin && iBin.getOp() == PLUS) { - IExpr lhs = iBin.getLHS(); - IExpr rhs = iBin.getRHS(); + Expression lhs = iBin.getLHS(); + Expression rhs = iBin.getRHS(); if (lhs instanceof MemoryObject mem && rhs instanceof IConst ic && !(rhs instanceof MemoryObject)) { location = new Location(mem, ic.getValueAsInt()); failed = false; diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/alias/EqualityAliasAnalysis.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/alias/EqualityAliasAnalysis.java index aa5f20512c..910e4f3de0 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/alias/EqualityAliasAnalysis.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/alias/EqualityAliasAnalysis.java @@ -31,7 +31,7 @@ public static EqualityAliasAnalysis fromConfig(Program program, Configuration co @Override public boolean mustAlias(MemoryCoreEvent a, MemoryCoreEvent b) { - if (a.getThread() != b.getThread() + if (a.getFunction() != b.getFunction() || !a.getAddress().equals(b.getAddress())) { return false; } else if (a == b) { diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/alias/FieldSensitiveAndersen.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/alias/FieldSensitiveAndersen.java index bb9b228e8e..de3ebfbab9 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/alias/FieldSensitiveAndersen.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/alias/FieldSensitiveAndersen.java @@ -5,6 +5,8 @@ import com.dat3m.dartagnan.program.Program; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.core.*; +import com.dat3m.dartagnan.program.event.core.threading.ThreadArgument; +import com.dat3m.dartagnan.program.event.core.utils.RegWriter; import com.dat3m.dartagnan.program.memory.MemoryObject; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableSet; @@ -62,11 +64,7 @@ private FieldSensitiveAndersen(Program program) { for (MemoryCoreEvent e : memEvents) { processLocs(e); } - for (Event e : program.getEvents()) { - if(e instanceof Local local) { - processRegs(local); - } - } + program.getEvents().forEach(this::processRegs); while(!variables.isEmpty()) { algorithm(variables.poll()); } @@ -120,9 +118,21 @@ protected void processLocs(MemoryCoreEvent e) { } } - protected void processRegs(Local e) { - Register register = e.getResultRegister(); - Collector collector = new Collector(e.getExpr()); + + protected void processRegs(Event e) { + if (!(e instanceof Local || e instanceof ThreadArgument)) { + return; + } + assert e instanceof RegWriter; + final Register register = ((RegWriter)e).getResultRegister(); + final Expression expr; + if (e instanceof Local local) { + expr = local.getExpr(); + } else { + final ThreadArgument arg = (ThreadArgument) e; + expr = arg.getCreator().getArguments().get(arg.getIndex()); + } + final Collector collector = new Collector(expr); addAllAddresses(register,collector.address()); for(Offset r : collector.register()) { addEdge(r.base,register,r.offset,r.alignment); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/EventFactory.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/EventFactory.java index 99dad92f2b..fcac320c18 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/EventFactory.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/EventFactory.java @@ -4,23 +4,33 @@ import com.dat3m.dartagnan.expression.Expression; import com.dat3m.dartagnan.expression.ExpressionFactory; import com.dat3m.dartagnan.expression.op.IOpBin; +import com.dat3m.dartagnan.expression.type.IntegerType; +import com.dat3m.dartagnan.program.Function; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.arch.StoreExclusive; -import com.dat3m.dartagnan.program.event.arch.lisa.RMW; -import com.dat3m.dartagnan.program.event.arch.ptx.AtomOp; -import com.dat3m.dartagnan.program.event.arch.ptx.FenceWithId; -import com.dat3m.dartagnan.program.event.arch.ptx.RedOp; -import com.dat3m.dartagnan.program.event.arch.tso.Xchg; +import com.dat3m.dartagnan.program.event.arch.lisa.LISARMW; +import com.dat3m.dartagnan.program.event.arch.ptx.PTXAtomOp; +import com.dat3m.dartagnan.program.event.arch.ptx.PTXFenceWithId; +import com.dat3m.dartagnan.program.event.arch.ptx.PTXRedOp; +import com.dat3m.dartagnan.program.event.arch.tso.TSOXchg; import com.dat3m.dartagnan.program.event.core.*; -import com.dat3m.dartagnan.program.event.core.annotations.FunCall; -import com.dat3m.dartagnan.program.event.core.annotations.FunRet; +import com.dat3m.dartagnan.program.event.core.annotations.FunCallMarker; +import com.dat3m.dartagnan.program.event.core.annotations.FunReturnMarker; import com.dat3m.dartagnan.program.event.core.annotations.StringAnnotation; import com.dat3m.dartagnan.program.event.core.rmw.RMWStore; import com.dat3m.dartagnan.program.event.core.rmw.RMWStoreExclusive; +import com.dat3m.dartagnan.program.event.core.threading.ThreadArgument; +import com.dat3m.dartagnan.program.event.core.threading.ThreadCreate; +import com.dat3m.dartagnan.program.event.functions.AbortIf; +import com.dat3m.dartagnan.program.event.functions.DirectValueFunctionCall; +import com.dat3m.dartagnan.program.event.functions.DirectVoidFunctionCall; +import com.dat3m.dartagnan.program.event.functions.Return; import com.dat3m.dartagnan.program.event.lang.catomic.*; import com.dat3m.dartagnan.program.event.lang.linux.*; import com.dat3m.dartagnan.program.event.lang.llvm.*; -import com.dat3m.dartagnan.program.event.lang.pthread.*; +import com.dat3m.dartagnan.program.event.lang.pthread.InitLock; +import com.dat3m.dartagnan.program.event.lang.pthread.Lock; +import com.dat3m.dartagnan.program.event.lang.pthread.Unlock; import com.dat3m.dartagnan.program.event.lang.std.Malloc; import com.dat3m.dartagnan.program.event.lang.svcomp.*; import com.dat3m.dartagnan.program.memory.MemoryObject; @@ -57,8 +67,8 @@ public static List eventSequence(Object... events) { if (obj == null) { continue; } - if (obj instanceof Event ev) { - retVal.add(ev); + if (obj instanceof Event) { + retVal.add((Event) obj); } else if (obj instanceof Collection) { retVal.addAll((Collection) obj); } else { @@ -113,18 +123,34 @@ public static Init newInit(MemoryObject base, int offset) { return new Init(base, offset, address); } + public static DirectValueFunctionCall newValueFunctionCall(Register resultRegister, Function function, List arguments) { + return new DirectValueFunctionCall(resultRegister, function, arguments); + } + + public static DirectVoidFunctionCall newVoidFunctionCall(Function function, List arguments) { + return new DirectVoidFunctionCall(function, arguments); + } + + public static Return newFunctionReturn(Expression returnExpression) { + return new Return(returnExpression); + } + + public static AbortIf newAbortIf(Expression condition) { + return new AbortIf(condition); + } + // ------------------------------------------ Local events ------------------------------------------ public static Skip newSkip() { return new Skip(); } - public static FunCall newFunctionCall(String funName) { - return new FunCall(funName); + public static FunCallMarker newFunctionCallMarker(String funName) { + return new FunCallMarker(funName); } - public static FunRet newFunctionReturn(String funName) { - return new FunRet(funName); + public static FunReturnMarker newFunctionReturnMarker(String funName) { + return new FunReturnMarker(funName); } public static StringAnnotation newStringAnnotation(String annotation) { @@ -144,7 +170,7 @@ public static CondJump newJump(Expression cond, Label target) { } public static CondJump newJumpUnless(Expression cond, Label target) { - if (cond instanceof BConst constant && constant.isFalse()) { + if (cond instanceof BConst constant && !constant.getValue()) { return newGoto(target); } return new CondJump(expressions.makeNot(cond), target); @@ -226,6 +252,16 @@ public static ExecutionStatus newExecutionStatusWithDependencyTracking(Register return new ExecutionStatus(register, event, true); } + // ------------------------------------------ Threading events ------------------------------------------ + + public static ThreadCreate newThreadCreate(List arguments) { + return new ThreadCreate(arguments); + } + + public static ThreadArgument newThreadArgument(Register resultReg, ThreadCreate creator, int argIndex) { + return new ThreadArgument(resultReg, creator, argIndex); + } + // ============================================================================================= // ========================================== Common =========================================== // ============================================================================================= @@ -250,32 +286,16 @@ public static class Pthread { private Pthread() { } - public static Create newCreate(Expression address, String routine) { - return new Create(address, routine); - } - - public static End newEnd(Expression address) { - return new End(address); - } - public static InitLock newInitLock(String name, Expression address, Expression value) { return new InitLock(name, address, value); } - public static Join newJoin(Register reg, Expression expr) { - return new Join(reg, expr); + public static Lock newLock(String name, Expression address) { + return new Lock(name, address); } - public static Lock newLock(String name, Expression address, Register reg) { - return new Lock(name, address, reg); - } - - public static Start newStart(Register reg, Expression address, Event creationEvent) { - return new Start(reg, address, creationEvent); - } - - public static Unlock newUnlock(String name, Expression address, Register reg) { - return new Unlock(name, address, reg); + public static Unlock newUnlock(String name, Expression address) { + return new Unlock(name, address); } } @@ -296,7 +316,7 @@ public static AtomicCmpXchg newCompareExchange(Register register, Expression add } public static AtomicFetchOp newFetchOp(Register register, Expression address, Expression value, IOpBin op, String mo) { - return new AtomicFetchOp(register, address, value, op, mo); + return new AtomicFetchOp(register, address, op, value, mo); } public static AtomicFetchOp newFADD(Register register, Expression address, Expression value, String mo) { @@ -304,7 +324,11 @@ public static AtomicFetchOp newFADD(Register register, Expression address, Expre } public static AtomicFetchOp newIncrement(Register register, Expression address, String mo) { - return newFetchOp(register, address, expressions.makeOne(register.getType()), IOpBin.PLUS, mo); + if (!(register.getType() instanceof IntegerType integerType)) { + throw new IllegalArgumentException( + String.format("Non-integer type %s for increment operation.", register.getType())); + } + return newFetchOp(register, address, expressions.makeOne(integerType), IOpBin.PLUS, mo); } public static AtomicLoad newLoad(Register register, Expression address, String mo) { @@ -352,7 +376,7 @@ public static LlvmCmpXchg newCompareExchange(Register oldValueRegister, Register } public static LlvmRMW newRMW(Register register, Expression address, Expression value, IOpBin op, String mo) { - return new LlvmRMW(register, address, value, op, mo); + return new LlvmRMW(register, address, op, value, mo); } public static LlvmFence newFence(String mo) { @@ -474,32 +498,32 @@ public static LKMMStore newLKMMStore(Expression address, Expression value, Strin return new LKMMStore(address, value, mo); } - public static RMWAddUnless newRMWAddUnless(Expression address, Register register, Expression cmp, Expression value) { - return new RMWAddUnless(address, register, cmp, value); + public static LKMMAddUnless newRMWAddUnless(Expression address, Register register, Expression cmp, Expression value) { + return new LKMMAddUnless(register, address, value, cmp); } - public static RMWCmpXchg newRMWCompareExchange(Expression address, Register register, Expression cmp, Expression value, String mo) { - return new RMWCmpXchg(address, register, cmp, value, mo); + public static LKMMCmpXchg newRMWCompareExchange(Expression address, Register register, Expression cmp, Expression value, String mo) { + return new LKMMCmpXchg(register, address, cmp, value, mo); } - public static RMWFetchOp newRMWFetchOp(Expression address, Register register, Expression value, IOpBin op, String mo) { - return new RMWFetchOp(address, register, value, op, mo); + public static LKMMFetchOp newRMWFetchOp(Expression address, Register register, Expression value, IOpBin op, String mo) { + return new LKMMFetchOp(register, address, op, value, mo); } - public static RMWOp newRMWOp(Expression address, Register register, Expression value, IOpBin op) { - return new RMWOp(address, register, value, op); + public static LKMMOpNoReturn newRMWOp(Expression address, Expression value, IOpBin op) { + return new LKMMOpNoReturn(address, op, value); } - public static RMWOpAndTest newRMWOpAndTest(Expression address, Register register, Expression value, IOpBin op) { - return new RMWOpAndTest(address, register, value, op); + public static LKMMOpAndTest newRMWOpAndTest(Expression address, Register register, Expression value, IOpBin op) { + return new LKMMOpAndTest(register, address, op, value); } - public static RMWOpReturn newRMWOpReturn(Expression address, Register register, Expression value, IOpBin op, String mo) { - return new RMWOpReturn(address, register, value, op, mo); + public static LKMMOpReturn newRMWOpReturn(Expression address, Register register, Expression value, IOpBin op, String mo) { + return new LKMMOpReturn(register, address, op, value, mo); } - public static RMWXchg newRMWExchange(Expression address, Register register, Expression value, String mo) { - return new RMWXchg(address, register, value, mo); + public static LKMMXchg newRMWExchange(Expression address, Register register, Expression value, String mo) { + return new LKMMXchg(register, address, value, mo); } public static LKMMFence newMemoryBarrier() { @@ -534,8 +558,8 @@ public static class X86 { private X86() { } - public static Xchg newExchange(MemoryObject address, Register register) { - return new Xchg(address, register); + public static TSOXchg newExchange(MemoryObject address, Register register) { + return new TSOXchg(address, register); } public static Fence newMemoryFence() { @@ -611,8 +635,8 @@ public static class LISA { private LISA() { } - public static RMW newRMW(Expression address, Register register, Expression value, String mo) { - return new RMW(address, register, value, mo); + public static LISARMW newRMW(Expression address, Register register, Expression value, String mo) { + return new LISARMW(register, address, value, mo); } } @@ -647,24 +671,24 @@ public static Fence newLwSyncBarrier() { public static class PTX { private PTX() {} - public static AtomOp newAtomOp(Expression address, Register register, Expression value, - IOpBin op, String mo, String scope) { + public static PTXAtomOp newAtomOp(Expression address, Register register, Expression value, + IOpBin op, String mo, String scope) { // PTX (currently) only generates memory orders ACQ_REL and RLX for atom. - AtomOp atom = new AtomOp(address, register, value, op, mo); + PTXAtomOp atom = new PTXAtomOp(register, address, op, value, mo); atom.addTags(scope); return atom; } - public static RedOp newRedOp(Expression address, Register register, Expression value, - IOpBin op, String mo, String scope) { + public static PTXRedOp newRedOp(Expression address, Expression value, + IOpBin op, String mo, String scope) { // PTX (currently) only generates memory orders ACQ_REL and RLX for red. - RedOp red = new RedOp(address, register, value, op, mo); + PTXRedOp red = new PTXRedOp(address, value, op, mo); red.addTags(scope); return red; } - public static FenceWithId newFenceWithId(String name, Expression fenceId) { - return new FenceWithId(name, fenceId); + public static PTXFenceWithId newFenceWithId(String name, Expression fenceId) { + return new PTXFenceWithId(name, fenceId); } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/StoreExclusive.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/StoreExclusive.java index 9efc432f46..7b092c8280 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/StoreExclusive.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/StoreExclusive.java @@ -13,7 +13,7 @@ */ public class StoreExclusive extends StoreBase implements RegWriter { - private final Register register; + private Register register; public StoreExclusive(Register register, Expression address, Expression value, String mo) { super(address, value, mo); @@ -31,22 +31,19 @@ public Register getResultRegister() { return register; } + @Override + public void setResultRegister(Register reg) { this.register = reg; } + @Override public String defaultString() { return register + " <- store(*" + address + ", " + value + (!mo.isEmpty() ? ", " + mo : "") + ")"; } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public StoreExclusive getCopy() { return new StoreExclusive(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitStoreExclusive(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/lisa/LISARMW.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/lisa/LISARMW.java new file mode 100644 index 0000000000..d6fac2bead --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/lisa/LISARMW.java @@ -0,0 +1,32 @@ +package com.dat3m.dartagnan.program.event.arch.lisa; + +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.event.common.RMWXchgBase; +import com.dat3m.dartagnan.program.event.visitors.EventVisitor; + +public class LISARMW extends RMWXchgBase { + + public LISARMW(Register register, Expression address, Expression value, String mo) { + super(register, address, value, mo); + } + + private LISARMW(LISARMW other) { + super(other); + } + + @Override + public String defaultString() { + return String.format("%s := rmw[%s](%s, %s)", resultRegister, mo, storeValue, address); + } + + @Override + public LISARMW getCopy() { + return new LISARMW(this); + } + + @Override + public T accept(EventVisitor visitor) { + return visitor.visitLISARMW(this); + } +} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/lisa/RMW.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/lisa/RMW.java deleted file mode 100644 index 354df21d62..0000000000 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/lisa/RMW.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.dat3m.dartagnan.program.event.arch.lisa; - -import com.dat3m.dartagnan.expression.Expression; -import com.dat3m.dartagnan.program.Register; -import com.dat3m.dartagnan.program.event.MemoryAccess; -import com.dat3m.dartagnan.program.event.common.SingleAccessMemoryEvent; -import com.dat3m.dartagnan.program.event.core.utils.RegWriter; -import com.dat3m.dartagnan.program.event.visitors.EventVisitor; - -import java.util.Set; - -import static com.dat3m.dartagnan.program.event.Tag.RMW; -import static com.dat3m.dartagnan.program.event.Tag.*; - -public class RMW extends SingleAccessMemoryEvent implements RegWriter { - - private final Register resultRegister; - private final Expression value; - - - public RMW(Expression address, Register register, Expression value, String mo) { - super(address, mo); - this.resultRegister = register; - this.value = value; - addTags(READ, WRITE, RMW); - } - - private RMW(RMW other) { - super(other); - this.resultRegister = other.resultRegister; - this.value = other.value; - } - - @Override - public String defaultString() { - return resultRegister + " := rmw[" + mo + "](" + value + ", " + address + ")"; - } - - public Expression getMemValue(){ - return value; - } - - @Override - public Set getRegisterReads() { - return Register.collectRegisterReads(value, Register.UsageType.DATA, super.getRegisterReads()); - } - - @Override - public Register getResultRegister() { - return resultRegister; - } - - @Override - public MemoryAccess getMemoryAccess() { - return new MemoryAccess(address, accessType, MemoryAccess.Mode.RMW); - } - - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public RMW getCopy() { - return new RMW(this); - } - - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public T accept(EventVisitor visitor) { - return visitor.visitRMW(this); - } -} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/ptx/AtomOp.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/ptx/AtomOp.java deleted file mode 100644 index 9aecc2ad6a..0000000000 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/ptx/AtomOp.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.dat3m.dartagnan.program.event.arch.ptx; - -import com.dat3m.dartagnan.expression.Expression; -import com.dat3m.dartagnan.expression.op.IOpBin; -import com.dat3m.dartagnan.program.Register; -import com.dat3m.dartagnan.program.event.lang.RMWAbstract; -import com.dat3m.dartagnan.program.event.visitors.EventVisitor; - -public class AtomOp extends RMWAbstract { - private final IOpBin op; - public AtomOp(Expression address, Register register, Expression value, IOpBin op, String mo) { - super(address, register, value, mo); - this.op = op; - } - - protected AtomOp(AtomOp other) { - super(other); - this.op = other.op; - } - - @Override - public String defaultString() { - return resultRegister + " := atom_" + op.toString() + mo + "(" + value + ", " + address + ")"; - } - - public IOpBin getOp() { - return op; - } - - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public AtomOp getCopy(){ - return new AtomOp(this); - } - - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public T accept(EventVisitor visitor) { - return visitor.visitPtxAtomOp(this); - } - -} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/ptx/PTXAtomOp.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/ptx/PTXAtomOp.java new file mode 100644 index 0000000000..88139c6aff --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/ptx/PTXAtomOp.java @@ -0,0 +1,34 @@ +package com.dat3m.dartagnan.program.event.arch.ptx; + +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.op.IOpBin; +import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.event.common.RMWOpResultBase; +import com.dat3m.dartagnan.program.event.visitors.EventVisitor; + +public class PTXAtomOp extends RMWOpResultBase { + + public PTXAtomOp(Register register, Expression address, IOpBin op, Expression operand, String mo) { + super(register, address, op, operand, mo); + } + + protected PTXAtomOp(PTXAtomOp other) { + super(other); + } + + @Override + public String defaultString() { + return String.format("%s := atom_%s%s(%s, %s)", resultRegister, operator, mo, operand, address); + } + + @Override + public PTXAtomOp getCopy(){ + return new PTXAtomOp(this); + } + + @Override + public T accept(EventVisitor visitor) { + return visitor.visitPtxAtomOp(this); + } + +} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/ptx/FenceWithId.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/ptx/PTXFenceWithId.java similarity index 60% rename from dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/ptx/FenceWithId.java rename to dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/ptx/PTXFenceWithId.java index c11492f6a4..c995a16a15 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/ptx/FenceWithId.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/ptx/PTXFenceWithId.java @@ -1,6 +1,7 @@ package com.dat3m.dartagnan.program.event.arch.ptx; import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.core.Fence; import com.dat3m.dartagnan.program.event.core.utils.RegReader; @@ -8,10 +9,10 @@ import java.util.HashSet; import java.util.Set; -public class FenceWithId extends Fence implements RegReader { - private final Expression fenceID; +public class PTXFenceWithId extends Fence implements RegReader { + private Expression fenceID; - public FenceWithId(String name, Expression fenceID) { + public PTXFenceWithId(String name, Expression fenceID) { super(name); this.fenceID = fenceID; } @@ -20,6 +21,11 @@ public Expression getFenceID() { return fenceID; } + @Override + public void transformExpressions(ExpressionVisitor exprTransformer) { + this.fenceID = fenceID.visit(exprTransformer); + } + @Override public Set getRegisterReads() { return Register.collectRegisterReads(fenceID, Register.UsageType.OTHER, new HashSet<>()); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/ptx/PTXRedOp.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/ptx/PTXRedOp.java new file mode 100644 index 0000000000..7c1558a323 --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/ptx/PTXRedOp.java @@ -0,0 +1,32 @@ +package com.dat3m.dartagnan.program.event.arch.ptx; + +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.op.IOpBin; +import com.dat3m.dartagnan.program.event.common.RMWOpBase; +import com.dat3m.dartagnan.program.event.visitors.EventVisitor; + +public class PTXRedOp extends RMWOpBase { + + public PTXRedOp(Expression address, Expression value, IOpBin op, String mo) { + super(address, op, value, mo); + } + + protected PTXRedOp(PTXRedOp other) { + super(other); + } + + @Override + public String defaultString() { + return String.format("red_%s(%s, %s)", operator, operator, address); + } + + @Override + public PTXRedOp getCopy(){ + return new PTXRedOp(this); + } + + @Override + public T accept(EventVisitor visitor) { + return visitor.visitPtxRedOp(this); + } +} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/ptx/RedOp.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/ptx/RedOp.java deleted file mode 100644 index 2b18c80e69..0000000000 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/ptx/RedOp.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.dat3m.dartagnan.program.event.arch.ptx; - -import com.dat3m.dartagnan.expression.Expression; -import com.dat3m.dartagnan.expression.op.IOpBin; -import com.dat3m.dartagnan.program.Register; -import com.dat3m.dartagnan.program.event.lang.RMWAbstract; -import com.dat3m.dartagnan.program.event.visitors.EventVisitor; - -public class RedOp extends RMWAbstract { - - private final IOpBin op; - public RedOp(Expression address, Register register, Expression value, IOpBin op, String mo) { - super(address, register, value, mo); - this.op = op; - } - - protected RedOp(RedOp other) { - super(other); - this.op = other.op; - } - - - - @Override - public String defaultString() { - return "red_" + op.toString() + "(" + value + ", " + address + ")"; - } - - public IOpBin getOp() { - return op; - } - - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public RedOp getCopy(){ - return new RedOp(this); - } - - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public T accept(EventVisitor visitor) { - return visitor.visitPtxRedOp(this); - } -} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/tso/TSOXchg.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/tso/TSOXchg.java new file mode 100644 index 0000000000..2bedb2da3f --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/tso/TSOXchg.java @@ -0,0 +1,48 @@ +package com.dat3m.dartagnan.program.event.arch.tso; + +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; +import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.event.common.RMWXchgBase; +import com.dat3m.dartagnan.program.event.visitors.EventVisitor; + +import static com.dat3m.dartagnan.program.event.Tag.TSO; + +public class TSOXchg extends RMWXchgBase { + + public TSOXchg(Expression address, Register register) { + super(register, address, register, ""); + addTags(TSO.ATOM); + } + + private TSOXchg(TSOXchg other){ + super(other); + } + + @Override + public String defaultString() { + return String.format("xchg(*%s, %s)", address, resultRegister); + } + + @Override + public void transformExpressions(ExpressionVisitor exprTransformer) { + this.address = address.visit(exprTransformer); + // We deliberately do not update the "storeValue" because it must match with the target register. + } + + @Override + public void setResultRegister(Register reg) { + super.setResultRegister(reg); + this.storeValue = reg; // Store value always matches register + } + + @Override + public TSOXchg getCopy(){ + return new TSOXchg(this); + } + + @Override + public T accept(EventVisitor visitor) { + return visitor.visitTSOXchg(this); + } +} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/tso/Xchg.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/tso/Xchg.java deleted file mode 100644 index 5695320f7a..0000000000 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/arch/tso/Xchg.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.dat3m.dartagnan.program.event.arch.tso; - -import com.dat3m.dartagnan.expression.Expression; -import com.dat3m.dartagnan.program.Register; -import com.dat3m.dartagnan.program.event.MemoryAccess; -import com.dat3m.dartagnan.program.event.common.SingleAccessMemoryEvent; -import com.dat3m.dartagnan.program.event.core.utils.RegWriter; -import com.dat3m.dartagnan.program.event.visitors.EventVisitor; -import com.dat3m.dartagnan.program.memory.MemoryObject; - -import java.util.Set; - -import static com.dat3m.dartagnan.program.event.Tag.*; - -public class Xchg extends SingleAccessMemoryEvent implements RegWriter { - - private final Register resultRegister; - - public Xchg(MemoryObject address, Register register) { - super(address, ""); - this.resultRegister = register; - addTags(READ, WRITE, TSO.ATOM); - } - - private Xchg(Xchg other){ - super(other); - this.resultRegister = other.resultRegister; - } - - @Override - public Register getResultRegister(){ - return resultRegister; - } - - @Override - public Set getRegisterReads(){ - return Register.collectRegisterReads(resultRegister, Register.UsageType.DATA, super.getRegisterReads()); - } - - @Override - public String defaultString() { - return "xchg(*" + address + ", " + resultRegister + ")"; - } - - public Expression getMemValue(){ - return resultRegister; - } - - @Override - public MemoryAccess getMemoryAccess() { - return new MemoryAccess(address, accessType, MemoryAccess.Mode.RMW); - } - - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public Xchg getCopy(){ - return new Xchg(this); - } - - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public T accept(EventVisitor visitor) { - return visitor.visitXchg(this); - } -} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/FenceBase.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/FenceBase.java index 27646b5edd..7c8b89d0b9 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/FenceBase.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/FenceBase.java @@ -4,7 +4,7 @@ import com.dat3m.dartagnan.program.event.core.AbstractEvent; @NoInterface -public class FenceBase extends AbstractEvent { +public abstract class FenceBase extends AbstractEvent { protected final String name; protected final String mo; // May be NULL or empty for fences that do not support a mo. @@ -14,7 +14,7 @@ public FenceBase(String name, String mo) { this.mo = mo; this.addTags(Tag.VISIBLE, Tag.FENCE); if (mo != null && !mo.isEmpty()) { - this.tags.add(mo); + addTags(mo); } } @@ -39,12 +39,4 @@ public String defaultString() { } } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public FenceBase getCopy() { - return new FenceBase(this); - } - } \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/LoadBase.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/LoadBase.java index bdbd0891a1..58d5b4a5be 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/LoadBase.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/LoadBase.java @@ -10,7 +10,7 @@ @NoInterface public abstract class LoadBase extends SingleAccessMemoryEvent implements RegWriter { - protected final Register resultRegister; + protected Register resultRegister; public LoadBase(Register register, Expression address, String mo) { super(address, mo); @@ -28,6 +28,11 @@ public Register getResultRegister() { return resultRegister; } + @Override + public void setResultRegister(Register reg) { + this.resultRegister = reg; + } + @Override public String defaultString() { final MemoryOrder mo = getMetadata(MemoryOrder.class); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/RMWCmpXchgBase.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/RMWCmpXchgBase.java new file mode 100644 index 0000000000..c7ff184c28 --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/RMWCmpXchgBase.java @@ -0,0 +1,87 @@ +package com.dat3m.dartagnan.program.event.common; + +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; +import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.event.MemoryAccess; +import com.dat3m.dartagnan.program.event.core.utils.RegWriter; + +import java.util.Set; + +import static com.dat3m.dartagnan.program.Register.UsageType.DATA; +import static com.dat3m.dartagnan.program.event.Tag.*; + +@NoInterface +public abstract class RMWCmpXchgBase extends SingleAccessMemoryEvent implements RegWriter { + + protected Register resultRegister; + protected Expression expectedValue; + protected Expression storeValue; + protected boolean isStrong; + + protected RMWCmpXchgBase(Register register, Expression address, Expression expectedValue, Expression storeValue, + boolean isStrong, String mo) { + super(address, mo); + this.resultRegister = register; + this.expectedValue = expectedValue; + this.storeValue = storeValue; + this.isStrong = isStrong; + addTags(READ, WRITE, RMW); + } + + protected RMWCmpXchgBase(RMWCmpXchgBase other) { + super(other); + this.resultRegister = other.resultRegister; + this.expectedValue = other.expectedValue; + this.storeValue = other.storeValue; + this.isStrong = other.isStrong; + } + + public Expression getExpectedValue() { return expectedValue; } + public void setExpectedValue(Expression expected) { this.expectedValue = expected; } + + public Expression getStoreValue() { return storeValue; } + public void setStoreValue(Expression storeValue) { this.storeValue = storeValue; } + + public boolean isStrong() { return this.isStrong; } + public boolean isWeak() { return !isStrong(); } + public void setIsStrong(boolean isStrong) { this.isStrong = isStrong; } + + @Override + public Register getResultRegister() { + return resultRegister; + } + + @Override + public void setResultRegister(Register reg) { + this.resultRegister = reg; + } + + @Override + public void transformExpressions(ExpressionVisitor exprTransformer) { + super.transformExpressions(exprTransformer); + this.expectedValue = expectedValue.visit(exprTransformer); + this.storeValue = storeValue.visit(exprTransformer); + } + + @Override + protected String defaultString() { + final String strongSuffix = isStrong ? "strong" : "weak"; + return String.format("%s := rmw compare_exchange_%s(%s, %s, %s)", + resultRegister, strongSuffix, address, expectedValue, storeValue); + } + + @Override + public Set getRegisterReads() { + return Register.collectRegisterReads(storeValue, DATA, + Register.collectRegisterReads(expectedValue, DATA, + super.getRegisterReads())); + } + + @Override + public MemoryAccess getMemoryAccess() { + return new MemoryAccess(address, accessType, MemoryAccess.Mode.RMW); + } + + +} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/RMWOpBase.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/RMWOpBase.java new file mode 100644 index 0000000000..09cf659e12 --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/RMWOpBase.java @@ -0,0 +1,62 @@ +package com.dat3m.dartagnan.program.event.common; + +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.op.IOpBin; +import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; +import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.event.MemoryAccess; + +import java.util.Set; + +import static com.dat3m.dartagnan.program.event.Tag.*; + +/* + This is a non-value-returning RMW (e.g. like the one's in LKMM). + */ +@NoInterface +public abstract class RMWOpBase extends SingleAccessMemoryEvent { + + protected IOpBin operator; + protected Expression operand; + + protected RMWOpBase(Expression address, IOpBin operator, Expression operand, String mo) { + super(address, mo); + this.operator = operator; + this.operand = operand; + addTags(READ, WRITE, RMW); + } + + protected RMWOpBase(RMWOpBase other) { + super(other); + this.operator = other.operator; + this.operand = other.operand; + } + + public Expression getOperand() { return operand; } + public void setOperand(Expression operand) { this.operand = operand; } + + public IOpBin getOperator() { return this.operator; } + public void setOperator(IOpBin operator) { this.operator = operator; } + + @Override + public void transformExpressions(ExpressionVisitor exprTransformer) { + super.transformExpressions(exprTransformer); + this.operand = operand.visit(exprTransformer); + } + + @Override + protected String defaultString() { + return String.format("rmw %s(%s, %s)", operator.toLinuxName(), address, operand); + } + + @Override + public Set getRegisterReads() { + return Register.collectRegisterReads(operand, Register.UsageType.DATA, super.getRegisterReads()); + } + + @Override + public MemoryAccess getMemoryAccess() { + return new MemoryAccess(address, accessType, MemoryAccess.Mode.RMW); + } + +} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/RMWOpResultBase.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/RMWOpResultBase.java new file mode 100644 index 0000000000..7d15587dd7 --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/RMWOpResultBase.java @@ -0,0 +1,42 @@ +package com.dat3m.dartagnan.program.event.common; + +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.op.IOpBin; +import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.event.core.utils.RegWriter; + +/* + This class can be used as base for many value-returning operator-based RMWs, such as + fetch_op, op_return, and op_and_test. + */ +@NoInterface +public abstract class RMWOpResultBase extends RMWOpBase implements RegWriter { + + protected Register resultRegister; + + protected RMWOpResultBase(Register register, Expression address, IOpBin operator, Expression operand, String mo) { + super(address, operator, operand, mo); + this.resultRegister = register; + } + + protected RMWOpResultBase(RMWOpResultBase other) { + super(other); + this.resultRegister = other.resultRegister; + } + + @Override + public Register getResultRegister() { + return resultRegister; + } + + @Override + public void setResultRegister(Register reg) { + this.resultRegister = reg; + } + + @Override + protected String defaultString() { + return String.format("%s := rmw %s_result(%s, %s)", resultRegister, operator.toLinuxName(), address, operand); + } + +} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/RMWXchgBase.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/RMWXchgBase.java new file mode 100644 index 0000000000..8042e22944 --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/RMWXchgBase.java @@ -0,0 +1,67 @@ +package com.dat3m.dartagnan.program.event.common; + +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; +import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.event.MemoryAccess; +import com.dat3m.dartagnan.program.event.core.utils.RegWriter; + +import java.util.Set; + +import static com.dat3m.dartagnan.program.event.Tag.*; + +@NoInterface +public abstract class RMWXchgBase extends SingleAccessMemoryEvent implements RegWriter { + + protected Register resultRegister; + protected Expression storeValue; + + protected RMWXchgBase(Register register, Expression address, Expression value, String mo) { + super(address, mo); + this.resultRegister = register; + this.storeValue = value; + addTags(READ, WRITE, RMW); + } + + protected RMWXchgBase(RMWXchgBase other) { + super(other); + this.resultRegister = other.resultRegister; + this.storeValue = other.storeValue; + } + + public Expression getValue() { return storeValue; } + public void setValue(Expression value) { this.storeValue = value; } + + @Override + public Register getResultRegister() { + return resultRegister; + } + + @Override + public void setResultRegister(Register reg) { + this.resultRegister = reg; + } + + @Override + public void transformExpressions(ExpressionVisitor exprTransformer) { + super.transformExpressions(exprTransformer); + this.storeValue = storeValue.visit(exprTransformer); + } + + @Override + protected String defaultString() { + return String.format("%s := rmw exchange(%s, %s)", resultRegister, address, storeValue); + } + + @Override + public Set getRegisterReads() { + return Register.collectRegisterReads(storeValue, Register.UsageType.DATA, super.getRegisterReads()); + } + + @Override + public MemoryAccess getMemoryAccess() { + return new MemoryAccess(address, accessType, MemoryAccess.Mode.RMW); + } + + +} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/SingleAccessMemoryEvent.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/SingleAccessMemoryEvent.java index f4c5d9695b..1f1a438e46 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/SingleAccessMemoryEvent.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/SingleAccessMemoryEvent.java @@ -1,6 +1,7 @@ package com.dat3m.dartagnan.program.event.common; import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; import com.dat3m.dartagnan.expression.type.Type; import com.dat3m.dartagnan.expression.type.TypeFactory; import com.dat3m.dartagnan.program.event.MemoryAccess; @@ -65,5 +66,10 @@ public String getMo() { public List getMemoryAccesses() { return List.of(getMemoryAccess()); } + + @Override + public void transformExpressions(ExpressionVisitor exprTransformer) { + this.address = address.visit(exprTransformer); + } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/StoreBase.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/StoreBase.java index a1db5d0852..b12396ae4d 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/StoreBase.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/common/StoreBase.java @@ -1,6 +1,7 @@ package com.dat3m.dartagnan.program.event.common; import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.MemoryAccess; import com.dat3m.dartagnan.program.event.Tag; @@ -45,4 +46,9 @@ public String defaultString() { return String.format("store(*%s, %s%s)", address, value, !mo.isEmpty() ? ", " + mo : ""); } + @Override + public void transformExpressions(ExpressionVisitor exprTransformer) { + super.transformExpressions(exprTransformer); + this.value = value.visit(exprTransformer); + } } \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/AbstractEvent.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/AbstractEvent.java index 2985cd26d4..1b6857aacd 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/AbstractEvent.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/AbstractEvent.java @@ -1,13 +1,13 @@ package com.dat3m.dartagnan.program.event.core; import com.dat3m.dartagnan.encoding.EncodingContext; +import com.dat3m.dartagnan.program.Function; import com.dat3m.dartagnan.program.Program; import com.dat3m.dartagnan.program.Thread; import com.dat3m.dartagnan.program.event.EventUser; import com.dat3m.dartagnan.program.event.metadata.CustomPrinting; import com.dat3m.dartagnan.program.event.metadata.Metadata; import com.dat3m.dartagnan.program.event.metadata.MetadataMap; -import com.dat3m.dartagnan.program.event.metadata.SourceLocation; import com.dat3m.dartagnan.program.event.visitors.EventVisitor; import com.dat3m.dartagnan.verification.Context; import com.google.common.base.Preconditions; @@ -17,14 +17,15 @@ public abstract class AbstractEvent implements Event { - protected final MetadataMap metadataMap = new MetadataMap(); - protected final Set tags; - protected Thread thread; // The thread this event belongs to + private final MetadataMap metadataMap = new MetadataMap(); + private final Set tags; + private final Set currentUsers = new HashSet<>(); // This id is dynamically changing during processing. - protected transient int globalId = -1; // (Global) ID within a program + private transient int globalId = -1; // (Global) ID within a program + + private transient Function function; // The function this event belongs to private transient AbstractEvent successor; private transient AbstractEvent predecessor; - private final Set currentUsers = new HashSet<>(); protected AbstractEvent() { tags = new HashSet<>(); @@ -33,7 +34,6 @@ protected AbstractEvent() { protected AbstractEvent(AbstractEvent other) { copyAllMetadataFrom(other); this.tags = other.tags; // TODO: Dangerous code! A Copy-on-Write Set should be used (e.g. PersistentSet/Map) - this.thread = other.thread; } @Override @@ -42,10 +42,16 @@ protected AbstractEvent(AbstractEvent other) { public void setGlobalId(int id) { this.globalId = id; } @Override - public Thread getThread() { return thread; } + public Function getFunction() { return function; } + @Override - public void setThread(Thread thread) { - this.thread = Preconditions.checkNotNull(thread); + public void setFunction(Function function) { + this.function = Preconditions.checkNotNull(function); + } + + @Override + public Thread getThread() { + return getFunction() instanceof Thread ? (Thread) getFunction() : null; } // ============================================ Users ============================================ @@ -59,6 +65,12 @@ public void setThread(Thread thread) { @Override public boolean removeUser(EventUser user) { return this.currentUsers.remove(user); } + @Override + public void replaceAllUsages(Event replacement) { + final Map replacementMap = Map.of(this, replacement); + List.copyOf(getUsers()).forEach(e -> e.updateReferences(replacementMap)); + } + // ============================================ Metadata ============================================ @Override @@ -83,13 +95,6 @@ public boolean hasEqualMetadata(Event other, Class metadataC return Objects.equals(getMetadata(metadataClass), other.getMetadata(metadataClass)); } - // TODO: Remove this - @Override - public Event setCFileInformation(int line, String sourceCodeFilePath) { - setMetadata(new SourceLocation(sourceCodeFilePath, line)); - return this; - } - // =============================================================================================== // ============================================ Tags ============================================= @@ -147,19 +152,19 @@ public final List getPredecessors() { /* Detaches this event from the control-flow graph. This does not properly delete the event, and it may be reinserted elsewhere. - TODO: We need to special-case handle detaching the entry/exit event of a thread. + TODO: We need to special-case handle detaching the entry/exit event of a function. */ @Override public void detach() { - Preconditions.checkState(thread == null || (this != thread.getEntry() && this != thread.getExit()), - "Cannot detach the entry or exit event %s of thread %s", this, getThread()); + Preconditions.checkState(function == null || (this != function.getEntry() && this != function.getExit()), + "Cannot detach the entry or exit event %s of function %s", this, getFunction()); if (this.predecessor != null) { this.predecessor.successor = successor; } if (this.successor != null) { this.successor.predecessor = predecessor; } - this.thread = null; + this.function = null; this.predecessor = null; this.successor = null; } @@ -189,9 +194,9 @@ public boolean tryDelete() { @Override public void insertAfter(Event toBeInserted) { Preconditions.checkNotNull(toBeInserted); - insertBetween((AbstractEvent) toBeInserted, thread, this, successor); - if (thread.getExit() == this) { - thread.updateExit(toBeInserted); + insertBetween((AbstractEvent) toBeInserted, function, this, successor); + if (function.getExit() == this) { + function.updateExit(toBeInserted); } } @@ -214,11 +219,18 @@ public void replaceBy(Event replacement) { this.forceDelete(); } - private static void insertBetween(AbstractEvent toBeInserted, Thread thread, AbstractEvent pred, AbstractEvent succ) { + @Override + public void replaceBy(List replacement) { + Preconditions.checkState(currentUsers.isEmpty(), "Cannot replace event that is still in use."); + this.insertAfter(replacement); + this.forceDelete(); + } + + private static void insertBetween(AbstractEvent toBeInserted, Function func, AbstractEvent pred, AbstractEvent succ) { assert (pred == null || pred.successor == succ) && (succ == null || succ.predecessor == pred); assert (toBeInserted != pred && toBeInserted != succ); toBeInserted.detach(); - toBeInserted.thread = thread; + toBeInserted.function = func; toBeInserted.predecessor = pred; toBeInserted.successor = succ; @@ -257,11 +269,6 @@ public int compareTo(Event e) { return result; } - @Override - public Event getCopy() { - throw new UnsupportedOperationException("Copying is not allowed for " + getClass().getSimpleName()); - } - @Override public T accept(EventVisitor visitor) { return visitor.visitEvent(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/AbstractMemoryCoreEvent.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/AbstractMemoryCoreEvent.java index ff73dfa5b2..2b8ea57df4 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/AbstractMemoryCoreEvent.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/AbstractMemoryCoreEvent.java @@ -1,9 +1,11 @@ package com.dat3m.dartagnan.program.event.core; import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; import com.dat3m.dartagnan.expression.type.Type; import com.dat3m.dartagnan.expression.type.TypeFactory; import com.dat3m.dartagnan.program.event.common.NoInterface; +import com.google.common.base.Preconditions; import static com.dat3m.dartagnan.program.event.Tag.MEMORY; import static com.dat3m.dartagnan.program.event.Tag.VISIBLE; @@ -18,7 +20,7 @@ public abstract class AbstractMemoryCoreEvent extends AbstractEvent implements M protected Type accessType; public AbstractMemoryCoreEvent(Expression address) { - this.address = address; + this.address = Preconditions.checkNotNull(address); this.accessType = TypeFactory.getInstance().getArchType(); // TODO: Add proper typing addTags(VISIBLE, MEMORY); } @@ -34,5 +36,10 @@ protected AbstractMemoryCoreEvent(AbstractMemoryCoreEvent other) { public Type getAccessType() { return accessType; } public void setAccessType(Type type) { this.accessType = type; } + + @Override + public void transformExpressions(ExpressionVisitor exprTransformer) { + this.address = address.visit(exprTransformer); + } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Assume.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Assume.java index 2cecb5a9fc..efe7944e43 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Assume.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Assume.java @@ -2,6 +2,7 @@ import com.dat3m.dartagnan.encoding.EncodingContext; import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.core.utils.RegReader; import com.dat3m.dartagnan.program.event.visitors.EventVisitor; @@ -13,7 +14,7 @@ public class Assume extends AbstractEvent implements RegReader { - protected final Expression expr; + protected Expression expr; public Assume(Expression expr) { super(); @@ -46,20 +47,19 @@ public BooleanFormula encodeExec(EncodingContext ctx) { BooleanFormulaManager bmgr = ctx.getBooleanFormulaManager(); return bmgr.and( super.encodeExec(ctx), - bmgr.implication(ctx.execution(this), ctx.encodeBooleanExpressionAt(expr, this))); + bmgr.implication(ctx.execution(this), ctx.encodeExpressionAsBooleanAt(expr, this))); } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- + @Override + public void transformExpressions(ExpressionVisitor exprTransformer) { + this.expr = expr.visit(exprTransformer); + } @Override public Assume getCopy() { return new Assume(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitAssume(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/CondJump.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/CondJump.java index 56809c90f3..b95573d887 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/CondJump.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/CondJump.java @@ -2,6 +2,7 @@ import com.dat3m.dartagnan.expression.BConst; import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; import com.dat3m.dartagnan.expression.type.BooleanType; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.EventUser; @@ -85,17 +86,16 @@ public Set getReferencedEvents() { return Set.of(label); } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- + @Override + public void transformExpressions(ExpressionVisitor exprTransformer) { + this.guard = guard.visit(exprTransformer); + } @Override public CondJump getCopy() { return new CondJump(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitCondJump(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Event.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Event.java index 73a3fbec27..6026ee55ff 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Event.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Event.java @@ -2,6 +2,7 @@ import com.dat3m.dartagnan.encoding.Encoder; import com.dat3m.dartagnan.encoding.EncodingContext; +import com.dat3m.dartagnan.program.Function; import com.dat3m.dartagnan.program.Program; import com.dat3m.dartagnan.program.Thread; import com.dat3m.dartagnan.program.event.EventUser; @@ -29,9 +30,6 @@ public interface Event extends Encoder, Comparable { T setMetadata(T metadata); boolean hasEqualMetadata(Event other, Class metadataClass); - // TODO: Remove this - Event setCFileInformation(int line, String sourceCodeFilePath); - // ============================== Tags ============================== // The set of tags should not be modified directly. @@ -44,8 +42,10 @@ public interface Event extends Encoder, Comparable { // ============================== Control-flow ============================== + Function getFunction(); + void setFunction(Function function); + Thread getThread(); - void setThread(Thread thread); Event getSuccessor(); Event getPredecessor(); @@ -73,12 +73,14 @@ public interface Event extends Encoder, Comparable { void insertAfter(Event toBeInserted); void insertAfter(List toBeInserted); void replaceBy(Event replacement); + void replaceBy(List replacement); // ============================== Misc ============================== Set getUsers(); boolean registerUser(EventUser user); boolean removeUser(EventUser user); + void replaceAllUsages(Event replacement); @Override int compareTo(Event e); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/ExecutionStatus.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/ExecutionStatus.java index 816ea4d2c5..198245e552 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/ExecutionStatus.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/ExecutionStatus.java @@ -1,6 +1,7 @@ package com.dat3m.dartagnan.program.event.core; import com.dat3m.dartagnan.encoding.EncodingContext; +import com.dat3m.dartagnan.expression.type.BooleanType; import com.dat3m.dartagnan.expression.type.IntegerType; import com.dat3m.dartagnan.expression.type.Type; import com.dat3m.dartagnan.program.Register; @@ -14,7 +15,7 @@ public class ExecutionStatus extends AbstractEvent implements RegWriter, EventUser { - private final Register register; + private Register register; private Event event; private final boolean trackDep; @@ -40,6 +41,11 @@ public Register getResultRegister() { return register; } + @Override + public void setResultRegister(Register reg) { + this.register = reg; + } + public Event getStatusEvent() { return event; } @@ -50,38 +56,40 @@ public boolean doesTrackDep() { @Override public String defaultString() { - return register + " <- status(" + event.toString() + ")"; + return register + " <- not_exec(" + event + ")"; } @Override public BooleanFormula encodeExec(EncodingContext context) { - FormulaManager formulaManager = context.getFormulaManager(); - BooleanFormulaManager booleanFormulaManager = context.getBooleanFormulaManager(); - Type type = register.getType(); - BooleanFormula eventExecuted = context.execution(event); - Formula result = context.result(this); + final FormulaManager fmgr = context.getFormulaManager(); + final BooleanFormulaManager bmgr = context.getBooleanFormulaManager(); + final Type type = register.getType(); + final BooleanFormula eventExecuted = context.execution(event); + final Formula result = context.result(this); + if (type instanceof IntegerType integerType) { - Formula one; + final Formula one; if (integerType.isMathematical()) { - IntegerFormulaManager integerFormulaManager = formulaManager.getIntegerFormulaManager(); + IntegerFormulaManager integerFormulaManager = fmgr.getIntegerFormulaManager(); one = integerFormulaManager.makeNumber(1); } else { - BitvectorFormulaManager bitvectorFormulaManager = formulaManager.getBitvectorFormulaManager(); + BitvectorFormulaManager bitvectorFormulaManager = fmgr.getBitvectorFormulaManager(); int bitWidth = integerType.getBitWidth(); one = bitvectorFormulaManager.makeBitvector(bitWidth, 1); } - return booleanFormulaManager.and(super.encodeExec(context), - booleanFormulaManager.implication(eventExecuted, - context.equalZero(result)), - booleanFormulaManager.or(eventExecuted, - context.equal(result, one))); + return bmgr.and(super.encodeExec(context), + bmgr.ifThenElse(eventExecuted, context.equalZero(result), context.equal(result, one)) + ); + } else if (type instanceof BooleanType) { + //TODO: We have "result == not exec(event)", because we use 0/false for executed events. + // The reason is that ExecutionStatus follows the behavior of Store-Conditionals on hardware. + // However, this is very counterintuitive and I think we should return 1/true on success and instead + // change the compilation of Store-Conditional to invert the value. + return bmgr.and(super.encodeExec(context), context.equal(result, bmgr.not(eventExecuted))); } throw new UnsupportedOperationException(String.format("Encoding ExecutionStatus on type %s.", type)); } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public Event getCopy() { return new ExecutionStatus(this); @@ -97,9 +105,6 @@ public Set getReferencedEvents() { return Set.of(event); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitExecutionStatus(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Fence.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Fence.java index 05ebf5f3ca..43753db9eb 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Fence.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Fence.java @@ -26,17 +26,11 @@ public String defaultString() { return getName(); } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public Fence getCopy() { return new Fence(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitFence(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/GenericMemoryEvent.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/GenericMemoryEvent.java index f2dba6facd..92b7ee452e 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/GenericMemoryEvent.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/GenericMemoryEvent.java @@ -34,5 +34,10 @@ protected String defaultString() { public List getMemoryAccesses() { return List.of(new MemoryAccess(address, accessType, MemoryAccess.Mode.OTHER)); } + + @Override + public GenericMemoryEvent getCopy() { + return new GenericMemoryEvent(this); + } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/IfAsJump.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/IfAsJump.java index 33b7e3238e..17143815d1 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/IfAsJump.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/IfAsJump.java @@ -9,49 +9,48 @@ public class IfAsJump extends CondJump { - private final Label end; - - public IfAsJump(Expression expr, Label label, Label end) { - super(expr, label); - this.end = end; - } - + private final Label end; + + public IfAsJump(Expression expr, Label label, Label end) { + super(expr, label); + this.end = end; + } + protected IfAsJump(IfAsJump other) { - super(other); - this.end = other.end; - } - - public Label getEndIf() { return end; } - - public List getBranchesEvents(){ - // Because it is used for RelCtrlDirect - Preconditions.checkState(getThread().getProgram().isCompiled(), - "getBranchesEvents() must be called after compilation"); - List events = new ArrayList<>(); - Event next = getSuccessor(); - // For IfAsJump events, getLabel() returns the label representing the else branch - while(next != null && next.getSuccessor() != getLabel()) { - events.add(next); - next = next.getSuccessor(); - } - next = getLabel().getSuccessor(); - while(next != end && next != null) { - events.add(next); - next = next.getSuccessor(); - } - return events; + super(other); + this.end = other.end; + } + + public Label getEndIf() { + return end; } - @Override - public IfAsJump getCopy() { - return new IfAsJump(this); - } + public List getBranchesEvents() { + // Because it is used for RelCtrlDirect + Preconditions.checkState(getFunction().getProgram().isCompiled(), + "getBranchesEvents() must be called after compilation"); + List events = new ArrayList<>(); + Event next = getSuccessor(); + // For IfAsJump events, getLabel() returns the label representing the else branch + while (next != null && next.getSuccessor() != getLabel()) { + events.add(next); + next = next.getSuccessor(); + } + next = getLabel().getSuccessor(); + while (next != end && next != null) { + events.add(next); + next = next.getSuccessor(); + } + return events; + } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- + @Override + public IfAsJump getCopy() { + return new IfAsJump(this); + } - @Override - public T accept(EventVisitor visitor) { - return visitor.visitIfAsJump(this); - } + @Override + public T accept(EventVisitor visitor) { + return visitor.visitIfAsJump(this); + } } \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Init.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Init.java index 270580ae6b..fc28f2273b 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Init.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Init.java @@ -58,10 +58,6 @@ public String defaultString() { @Override public IConst getMemValue() { return getValue(); } - - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitInit(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Label.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Label.java index d4c41759f2..cb215b364a 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Label.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Label.java @@ -33,17 +33,11 @@ public String defaultString() { return name + ":" + (hasTag(Tag.SPINLOOP) ? "\t### SPINLOOP" : ""); } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public Label getCopy(){ return new Label(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitLabel(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Load.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Load.java index 1abc41cce7..d3f42121f6 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Load.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Load.java @@ -12,7 +12,7 @@ public class Load extends AbstractMemoryCoreEvent implements RegWriter { - protected final Register resultRegister; + protected Register resultRegister; public Load(Register register, Expression address) { super(address); @@ -30,6 +30,11 @@ public Register getResultRegister() { return resultRegister; } + @Override + public void setResultRegister(Register reg) { + this.resultRegister = reg; + } + @Override public String defaultString() { final MemoryOrder mo = getMetadata(MemoryOrder.class); @@ -41,17 +46,11 @@ public List getMemoryAccesses() { return List.of(new MemoryAccess(address, accessType, MemoryAccess.Mode.LOAD)); } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public Load getCopy() { return new Load(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitLoad(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Local.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Local.java index f94312e788..746e535c5e 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Local.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Local.java @@ -2,11 +2,13 @@ import com.dat3m.dartagnan.encoding.EncodingContext; import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.Tag; import com.dat3m.dartagnan.program.event.core.utils.RegReader; import com.dat3m.dartagnan.program.event.core.utils.RegWriter; import com.dat3m.dartagnan.program.event.visitors.EventVisitor; +import com.google.common.base.Preconditions; import org.sosy_lab.java_smt.api.BooleanFormula; import java.util.HashSet; @@ -14,10 +16,11 @@ public class Local extends AbstractEvent implements RegWriter, RegReader { - protected final Register register; + protected Register register; protected Expression expr; public Local(Register register, Expression expr) { + Preconditions.checkArgument(register.getType().equals(expr.getType())); this.register = register; this.expr = expr; } @@ -41,6 +44,11 @@ public Register getResultRegister() { return register; } + @Override + public void setResultRegister(Register reg) { + this.register = reg; + } + @Override public Set getRegisterReads() { return Register.collectRegisterReads(expr, Register.UsageType.DATA, new HashSet<>()); @@ -59,20 +67,19 @@ public String defaultString() { public BooleanFormula encodeExec(EncodingContext context) { return context.getBooleanFormulaManager().and( super.encodeExec(context), - context.equal(context.result(this), context.encodeIntegerExpressionAt(expr, this))); + context.equal(context.result(this), context.encodeExpressionAt(expr, this))); } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- + @Override + public void transformExpressions(ExpressionVisitor exprTransformer) { + this.expr = expr.visit(exprTransformer); + } @Override public Local getCopy() { return new Local(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitLocal(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Skip.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Skip.java index 7b655cb9a9..29345fa713 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Skip.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Skip.java @@ -16,17 +16,11 @@ public String defaultString() { return "skip"; } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public Skip getCopy() { return new Skip(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitSkip(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Store.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Store.java index 9ed973d239..0296cf6a9e 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Store.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/Store.java @@ -1,6 +1,7 @@ package com.dat3m.dartagnan.program.event.core; import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.MemoryAccess; import com.dat3m.dartagnan.program.event.Tag; @@ -48,17 +49,17 @@ public String defaultString() { return String.format("store(*%s, %s%s)", address, value, mo != null ? ", " + mo.value() : ""); } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- + @Override + public void transformExpressions(ExpressionVisitor exprTransformer) { + super.transformExpressions(exprTransformer); + this.value = value.visit(exprTransformer); + } @Override public Store getCopy() { return new Store(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitStore(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/annotations/CodeAnnotation.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/annotations/CodeAnnotation.java index d035a51d18..1f59ed632e 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/annotations/CodeAnnotation.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/annotations/CodeAnnotation.java @@ -17,11 +17,8 @@ protected CodeAnnotation(CodeAnnotation other) { super(other); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public T accept(EventVisitor visitor) { - return visitor.visitCodeAnnotation(this); - } + @Override + public T accept(EventVisitor visitor) { + return visitor.visitCodeAnnotation(this); + } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/annotations/FunCall.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/annotations/FunCall.java deleted file mode 100644 index ffb7995584..0000000000 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/annotations/FunCall.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.dat3m.dartagnan.program.event.core.annotations; - -public class FunCall extends StringAnnotation { - - private final String funName; - - public FunCall(String funName) { - super("=== Calling " + funName + " ==="); - this.funName = funName; - } - - protected FunCall(FunCall other){ - super(other); - this.funName = other.funName; - } - - public String getFunctionName() { - return funName; - } - - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public FunCall getCopy(){ - return new FunCall(this); - } -} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/annotations/FunCallMarker.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/annotations/FunCallMarker.java new file mode 100644 index 0000000000..44960b5efb --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/annotations/FunCallMarker.java @@ -0,0 +1,25 @@ +package com.dat3m.dartagnan.program.event.core.annotations; + +public class FunCallMarker extends StringAnnotation { + + private final String funName; + + public FunCallMarker(String funName) { + super("=== Calling " + funName + " ==="); + this.funName = funName; + } + + protected FunCallMarker(FunCallMarker other) { + super(other); + this.funName = other.funName; + } + + public String getFunctionName() { + return funName; + } + + @Override + public FunCallMarker getCopy() { + return new FunCallMarker(this); + } +} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/annotations/FunRet.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/annotations/FunRet.java deleted file mode 100644 index 6349c98e60..0000000000 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/annotations/FunRet.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.dat3m.dartagnan.program.event.core.annotations; - -public class FunRet extends StringAnnotation { - - private final String funName; - - public FunRet(String funName) { - super("=== Returning from " + funName + " ==="); - this.funName = funName; - } - - protected FunRet(FunRet other){ - super(other); - this.funName = other.funName; - } - - public String getFunctionName() { - return funName; - } - - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public FunRet getCopy(){ - return new FunRet(this); - } -} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/annotations/FunReturnMarker.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/annotations/FunReturnMarker.java new file mode 100644 index 0000000000..a7fa55c700 --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/annotations/FunReturnMarker.java @@ -0,0 +1,25 @@ +package com.dat3m.dartagnan.program.event.core.annotations; + +public class FunReturnMarker extends StringAnnotation { + + private final String funName; + + public FunReturnMarker(String funName) { + super("=== Returning from " + funName + " ==="); + this.funName = funName; + } + + protected FunReturnMarker(FunReturnMarker other) { + super(other); + this.funName = other.funName; + } + + public String getFunctionName() { + return funName; + } + + @Override + public FunReturnMarker getCopy() { + return new FunReturnMarker(this); + } +} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/annotations/StringAnnotation.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/annotations/StringAnnotation.java index 2214870776..318b02f02b 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/annotations/StringAnnotation.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/annotations/StringAnnotation.java @@ -18,9 +18,6 @@ public String defaultString() { return annotation; } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public StringAnnotation getCopy() { return new StringAnnotation(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/rmw/RMWStore.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/rmw/RMWStore.java index d9b3e56434..02dbe65a77 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/rmw/RMWStore.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/rmw/RMWStore.java @@ -37,9 +37,6 @@ public String defaultString() { return "rmw " + super.defaultString(); } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public RMWStore getCopy() { return new RMWStore(this); @@ -55,9 +52,6 @@ public Set getReferencedEvents() { return Set.of(loadEvent); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitRMWStore(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/rmw/RMWStoreExclusive.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/rmw/RMWStoreExclusive.java index e11e97959d..f3fb47582a 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/rmw/RMWStoreExclusive.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/rmw/RMWStoreExclusive.java @@ -50,17 +50,11 @@ public BooleanFormula encodeExec(EncodingContext ctx) { return ctx.getBooleanFormulaManager().implication(ctx.execution(this), ctx.controlFlow(this)); } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public RMWStoreExclusive getCopy(){ return new RMWStoreExclusive(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitRMWStoreExclusive(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/threading/ThreadArgument.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/threading/ThreadArgument.java new file mode 100644 index 0000000000..f0dbfc49d0 --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/threading/ThreadArgument.java @@ -0,0 +1,87 @@ +package com.dat3m.dartagnan.program.event.core.threading; + +import com.dat3m.dartagnan.encoding.EncodingContext; +import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.event.EventUser; +import com.dat3m.dartagnan.program.event.core.AbstractEvent; +import com.dat3m.dartagnan.program.event.core.Event; +import com.dat3m.dartagnan.program.event.core.utils.RegWriter; +import com.dat3m.dartagnan.program.event.visitors.EventVisitor; +import com.google.common.base.Preconditions; +import org.sosy_lab.java_smt.api.BooleanFormula; + +import java.util.Map; +import java.util.Set; + +public class ThreadArgument extends AbstractEvent implements RegWriter, EventUser { + + protected Register register; + protected ThreadCreate creator; + protected int argIndex; + + public ThreadArgument(Register register, ThreadCreate creator, int argIndex) { + Preconditions.checkArgument(register.getType().equals(creator.getArguments().get(argIndex).getType())); + this.register = register; + this.creator = creator; + this.argIndex = argIndex; + + creator.registerUser(this); + } + + protected ThreadArgument(ThreadArgument other) { + super(other); + this.register = other.register; + this.creator = other.creator; + this.argIndex = other.argIndex; + + creator.registerUser(this); + } + + public ThreadCreate getCreator() { return creator; } + public int getIndex() { return argIndex; } + + @Override + public Register getResultRegister() { + return register; + } + + @Override + public void setResultRegister(Register reg) { + this.register = reg; + } + + @Override + public String defaultString() { + return String.format("%s := Argument(%s) from %s", register, argIndex, creator); + } + + @Override + public BooleanFormula encodeExec(EncodingContext context) { + return context.getBooleanFormulaManager().and( + super.encodeExec(context), + context.equal(context.result(this), + context.encodeExpressionAt(creator.getArguments().get(argIndex), creator))); + } + + + @Override + public ThreadArgument getCopy() { + return new ThreadArgument(this); + } + + @Override + public T accept(EventVisitor visitor) { + // TODO + return visitor.visitEvent(this); + } + + @Override + public Set getReferencedEvents() { + return Set.of(creator); + } + + @Override + public void updateReferences(Map updateMapping) { + creator = (ThreadCreate) EventUser.moveUserReference(this, creator, updateMapping); + } +} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/threading/ThreadCreate.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/threading/ThreadCreate.java new file mode 100644 index 0000000000..0195f9c93f --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/threading/ThreadCreate.java @@ -0,0 +1,64 @@ +package com.dat3m.dartagnan.program.event.core.threading; + +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; +import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.Thread; +import com.dat3m.dartagnan.program.event.core.AbstractEvent; +import com.dat3m.dartagnan.program.event.core.utils.RegReader; +import com.dat3m.dartagnan.program.event.visitors.EventVisitor; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +public class ThreadCreate extends AbstractEvent implements RegReader { + + protected List arguments; + protected Thread spawnedThread; + + public ThreadCreate(List arguments) { + this.arguments = new ArrayList<>(arguments); + } + + protected ThreadCreate(ThreadCreate other) { + super(other); + this.arguments = new ArrayList<>(other.arguments); + this.spawnedThread = null; + } + + public List getArguments() { return arguments; } + public Thread getSpawnedThread() { return spawnedThread; } + public void setSpawnedThread(Thread spawnedThread) { this.spawnedThread = spawnedThread; } + + @Override + protected String defaultString() { + return String.format("ThreadCreate(%s, %s)", spawnedThread, + arguments.stream().map(Expression::toString).collect(Collectors.joining(", "))); + } + + @Override + public ThreadCreate getCopy() { + return new ThreadCreate(this); + } + + @Override + public T accept(EventVisitor visitor) { + // TODO + return visitor.visitEvent(this); + } + + @Override + public Set getRegisterReads() { + final Set regReads = new HashSet<>(); + arguments.forEach(arg -> Register.collectRegisterReads(arg, Register.UsageType.DATA, regReads)); + return regReads; + } + + @Override + public void transformExpressions(ExpressionVisitor exprTransformer) { + arguments.replaceAll(expression -> expression.visit(exprTransformer)); + } +} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/utils/RegReader.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/utils/RegReader.java index 4b578da750..bdc6b77039 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/utils/RegReader.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/utils/RegReader.java @@ -1,5 +1,7 @@ package com.dat3m.dartagnan.program.event.core.utils; +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.core.Event; @@ -7,4 +9,6 @@ public interface RegReader extends Event { Set getRegisterReads(); + + void transformExpressions(ExpressionVisitor exprTransformer); } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/utils/RegWriter.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/utils/RegWriter.java index ea62b0a9f9..9cb73045ff 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/utils/RegWriter.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/core/utils/RegWriter.java @@ -6,4 +6,5 @@ public interface RegWriter extends Event { Register getResultRegister(); + void setResultRegister(Register reg); } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/functions/AbortIf.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/functions/AbortIf.java new file mode 100644 index 0000000000..653dc59bf3 --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/functions/AbortIf.java @@ -0,0 +1,51 @@ +package com.dat3m.dartagnan.program.event.functions; + + +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; +import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.event.core.AbstractEvent; +import com.dat3m.dartagnan.program.event.core.utils.RegReader; +import com.google.common.base.Preconditions; + +import java.util.HashSet; +import java.util.Set; + +/* + Similar to Assume, but with explicit control-flow semantics. + */ +public class AbortIf extends AbstractEvent implements RegReader { + + private Expression condition; + + public AbortIf(Expression condition) { + this.condition = Preconditions.checkNotNull(condition); + } + + protected AbortIf(AbortIf other) { + super(other); + this.condition = other.condition; + } + + public Expression getCondition() { return condition; } + + @Override + protected String defaultString() { + return String.format("abort if (%s)", condition); + } + + @Override + public AbortIf getCopy() { + return new AbortIf(this); + } + + @Override + public Set getRegisterReads() { + return Register.collectRegisterReads(condition, Register.UsageType.CTRL, new HashSet<>()); + } + + @Override + public void transformExpressions(ExpressionVisitor exprTransformer) { + this.condition = condition.visit(exprTransformer); + } +} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/functions/DirectFunctionCall.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/functions/DirectFunctionCall.java new file mode 100644 index 0000000000..237de9a306 --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/functions/DirectFunctionCall.java @@ -0,0 +1,59 @@ +package com.dat3m.dartagnan.program.event.functions; + +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; +import com.dat3m.dartagnan.expression.type.Type; +import com.dat3m.dartagnan.program.Function; +import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.Register.UsageType; +import com.dat3m.dartagnan.program.event.core.AbstractEvent; +import com.dat3m.dartagnan.program.event.core.utils.RegReader; +import com.google.common.base.Preconditions; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +public abstract class DirectFunctionCall extends AbstractEvent implements RegReader { + + protected Function callTarget; // TODO: Generalize to function pointer expressions + protected List arguments; + + protected DirectFunctionCall(Function func, List arguments) { + final List paramTypes = func.getFunctionType().getParameterTypes(); + Preconditions.checkArgument(arguments.size() == paramTypes.size()); + for (int i = 0; i < paramTypes.size(); i++) { + Preconditions.checkArgument(arguments.get(i).getType().equals(paramTypes.get(i))); + } + this.callTarget = func; + this.arguments = arguments; + } + + protected DirectFunctionCall(DirectFunctionCall other) { + super(other); + this.callTarget = other.callTarget; + this.arguments = new ArrayList<>(other.arguments); + } + + public Function getCallTarget() { return callTarget; } + public List getArguments() { return arguments; } + + @Override + public Set getRegisterReads() { + final Set regReads = new HashSet<>(); + arguments.forEach(arg -> Register.collectRegisterReads(arg, UsageType.DATA, regReads)); + return regReads; + } + + protected String argumentsToString() { + return arguments.stream().map(Expression::toString).collect(Collectors.joining(", ")); + } + + @Override + public void transformExpressions(ExpressionVisitor exprTransformer) { + arguments.replaceAll(expression -> expression.visit(exprTransformer)); + } + +} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/functions/DirectValueFunctionCall.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/functions/DirectValueFunctionCall.java new file mode 100644 index 0000000000..46b7d721fe --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/functions/DirectValueFunctionCall.java @@ -0,0 +1,45 @@ +package com.dat3m.dartagnan.program.event.functions; + +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.program.Function; +import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.event.core.utils.RegWriter; +import com.google.common.base.Preconditions; + +import java.util.List; + +public class DirectValueFunctionCall extends DirectFunctionCall implements RegWriter { + + protected Register resultRegister; + + public DirectValueFunctionCall(Register resultRegister, Function func, List arguments) { + super(func, arguments); + Preconditions.checkArgument(resultRegister.getType().equals(func.getFunctionType().getReturnType())); + this.resultRegister = resultRegister; + } + + protected DirectValueFunctionCall(DirectValueFunctionCall other) { + super(other); + this.resultRegister = other.getResultRegister(); + } + + @Override + public Register getResultRegister() { + return resultRegister; + } + + @Override + public void setResultRegister(Register reg) { + this.resultRegister = reg; + } + + @Override + protected String defaultString() { + return String.format("%s <- call %s(%s)", resultRegister, callTarget.getName(), super.argumentsToString()); + } + + @Override + public DirectValueFunctionCall getCopy() { + return new DirectValueFunctionCall(this); + } +} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/functions/DirectVoidFunctionCall.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/functions/DirectVoidFunctionCall.java new file mode 100644 index 0000000000..68db4fb63d --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/functions/DirectVoidFunctionCall.java @@ -0,0 +1,31 @@ +package com.dat3m.dartagnan.program.event.functions; + +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.type.TypeFactory; +import com.dat3m.dartagnan.program.Function; +import com.google.common.base.Preconditions; + +import java.util.List; + +public class DirectVoidFunctionCall extends DirectFunctionCall { + + public DirectVoidFunctionCall(Function func, List arguments) { + super(func, arguments); + Preconditions.checkArgument(func.getFunctionType().getReturnType() + .equals(TypeFactory.getInstance().getVoidType())); + } + + protected DirectVoidFunctionCall(DirectVoidFunctionCall other) { + super(other); + } + + @Override + protected String defaultString() { + return String.format("call %s(%s)", callTarget.getName(), super.argumentsToString()); + } + + @Override + public DirectVoidFunctionCall getCopy() { + return new DirectVoidFunctionCall(this); + } +} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/functions/Return.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/functions/Return.java new file mode 100644 index 0000000000..2f705e8c25 --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/functions/Return.java @@ -0,0 +1,56 @@ +package com.dat3m.dartagnan.program.event.functions; + +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; +import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.event.core.AbstractEvent; +import com.dat3m.dartagnan.program.event.core.utils.RegReader; + +import java.util.HashSet; +import java.util.Optional; +import java.util.Set; + +public class Return extends AbstractEvent implements RegReader { + + protected Expression expression; // May be NULL + + public Return(Expression expression) { + this.expression = expression; + } + + protected Return(Return other) { + super(other); + this.expression = other.expression; + } + + public boolean hasValue() { + return expression != null; + } + + public Optional getValue() { + return Optional.ofNullable(expression); + } + + @Override + protected String defaultString() { + return hasValue() ? String.format("return %s", expression) : "return"; + } + + @Override + public Return getCopy() { + return new Return(this); + } + + @Override + public Set getRegisterReads() { + if (!hasValue()) { + return new HashSet<>(); + } + return Register.collectRegisterReads(expression, Register.UsageType.DATA, new HashSet<>()); + } + + @Override + public void transformExpressions(ExpressionVisitor exprTransformer) { + this.expression = expression.visit(exprTransformer); + } +} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/RMWAbstract.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/RMWAbstract.java deleted file mode 100644 index f72e63d532..0000000000 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/RMWAbstract.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.dat3m.dartagnan.program.event.lang; - -import com.dat3m.dartagnan.expression.Expression; -import com.dat3m.dartagnan.program.Register; -import com.dat3m.dartagnan.program.event.MemoryAccess; -import com.dat3m.dartagnan.program.event.common.SingleAccessMemoryEvent; -import com.dat3m.dartagnan.program.event.core.utils.RegWriter; -import com.dat3m.dartagnan.program.event.visitors.EventVisitor; - -import java.util.Set; - -import static com.dat3m.dartagnan.program.event.Tag.*; - -public abstract class RMWAbstract extends SingleAccessMemoryEvent implements RegWriter { - - protected final Register resultRegister; - protected Expression value; - - protected RMWAbstract(Expression address, Register register, Expression value, String mo) { - super(address, mo); - this.resultRegister = register; - this.value = value; - addTags(READ, WRITE, RMW); - } - - protected RMWAbstract(RMWAbstract other) { - super(other); - this.resultRegister = other.resultRegister; - this.value = other.value; - } - - @Override - public Register getResultRegister() { - return resultRegister; - } - - @Override - public Set getRegisterReads() { - return Register.collectRegisterReads(value, Register.UsageType.DATA, super.getRegisterReads()); - } - - public Expression getMemValue(){ - return value; - } - - public void setMemValue(Expression value){ - this.value = value; - } - - @Override - public MemoryAccess getMemoryAccess() { - return new MemoryAccess(address, accessType, MemoryAccess.Mode.RMW); - } - - - - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public T accept(EventVisitor visitor) { - return visitor.visitRMWAbstract(this); - } -} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicAbstract.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicAbstract.java deleted file mode 100644 index 82844e8f34..0000000000 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicAbstract.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.dat3m.dartagnan.program.event.lang.catomic; - -import com.dat3m.dartagnan.expression.Expression; -import com.dat3m.dartagnan.program.Register; -import com.dat3m.dartagnan.program.event.common.SingleAccessMemoryEvent; -import com.dat3m.dartagnan.program.event.core.utils.RegWriter; -import com.dat3m.dartagnan.program.event.visitors.EventVisitor; -import com.google.common.base.Preconditions; - -import java.util.Set; - -import static com.dat3m.dartagnan.program.event.Tag.*; - -public abstract class AtomicAbstract extends SingleAccessMemoryEvent implements RegWriter { - - protected final Register resultRegister; - protected Expression value; - - AtomicAbstract(Expression address, Register register, Expression value, String mo) { - super(address, mo); - Preconditions.checkArgument(!mo.isEmpty(), "Atomic events cannot have empty memory order"); - this.resultRegister = register; - this.value = value; - addTags(READ, WRITE, RMW); - } - - AtomicAbstract(AtomicAbstract other) { - super(other); - this.resultRegister = other.resultRegister; - this.value = other.value; - } - - @Override - public Register getResultRegister() { - return resultRegister; - } - - @Override - public Set getRegisterReads() { - return Register.collectRegisterReads(value, Register.UsageType.DATA, super.getRegisterReads()); - } - - public Expression getMemValue() { - return value; - } - - public void setMemValue(Expression value){ - this.value = value; - } - - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public T accept(EventVisitor visitor) { - return visitor.visitAtomicAbstract(this); - } -} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicCmpXchg.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicCmpXchg.java index c2d1a7915c..54371da55c 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicCmpXchg.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicCmpXchg.java @@ -1,29 +1,51 @@ package com.dat3m.dartagnan.program.event.lang.catomic; import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.MemoryAccess; +import com.dat3m.dartagnan.program.event.Tag; +import com.dat3m.dartagnan.program.event.common.SingleAccessMemoryEvent; +import com.dat3m.dartagnan.program.event.core.utils.RegWriter; import com.dat3m.dartagnan.program.event.visitors.EventVisitor; +import com.google.common.base.Preconditions; +import java.util.Set; +import static com.dat3m.dartagnan.program.Register.UsageType.ADDR; +import static com.dat3m.dartagnan.program.Register.UsageType.DATA; -public class AtomicCmpXchg extends AtomicAbstract { +// TODO: Add mo-on-failure +// NOTE: We do not inherit from RMWCmpXchgBase because it defines a "expected value" but a C11 CAS +// defines a "expected address". +public class AtomicCmpXchg extends SingleAccessMemoryEvent implements RegWriter { + + private Register resultRegister; private Expression expectedAddr; + private Expression storeValue; private boolean isStrong; public AtomicCmpXchg(Register register, Expression address, Expression expectedAddr, Expression value, String mo, boolean isStrong) { - super(address, register, value, mo); + super(address, mo); + Preconditions.checkArgument(!mo.isEmpty(), "Atomic events cannot have empty memory order"); + this.resultRegister = register; this.expectedAddr = expectedAddr; + this.storeValue = value; this.isStrong = isStrong; + addTags(Tag.WRITE, Tag.READ, Tag.RMW); } private AtomicCmpXchg(AtomicCmpXchg other) { super(other); + this.resultRegister = other.resultRegister; this.expectedAddr = other.expectedAddr; + this.storeValue = other.storeValue; this.isStrong = other.isStrong; } + public Expression getStoreValue() { return storeValue; } + public boolean isStrong() { return this.isStrong; } @@ -32,12 +54,25 @@ public boolean isWeak() { return !this.isStrong; } - public Expression getExpectedAddr() { - return expectedAddr; + public Expression getAddressOfExpected() { + return expectedAddr; } - - public void setExpectedAddr(Expression expectedAddr) { - this.expectedAddr = expectedAddr; + + @Override + public Register getResultRegister() { + return resultRegister; + } + + @Override + public void setResultRegister(Register reg) { + this.resultRegister = reg; + } + + @Override + public Set getRegisterReads() { + return Register.collectRegisterReads(storeValue, DATA, + Register.collectRegisterReads(expectedAddr, ADDR, // note the address dependency here + super.getRegisterReads())); } @Override @@ -47,23 +82,26 @@ public MemoryAccess getMemoryAccess() { @Override public String defaultString() { - return resultRegister + " = atomic_compare_exchange" + (isStrong ? "_strong" : "_weak") + - "(*" + address + ", " + expectedAddr + ", " + value + ", " + mo + ")\t### C11"; + final String strongSuffix = isStrong ? "strong" : "weak"; + return String.format("%s := atomic_compare_exchange_%s(*%s, %s, %s, %s)\t### C11", + resultRegister, strongSuffix, address, expectedAddr, storeValue, mo); } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- + @Override + public void transformExpressions(ExpressionVisitor exprTransformer) { + super.transformExpressions(exprTransformer); + this.storeValue = storeValue.visit(exprTransformer); + this.expectedAddr = expectedAddr.visit(exprTransformer); + } @Override public AtomicCmpXchg getCopy() { return new AtomicCmpXchg(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitAtomicCmpXchg(this); } + } \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicFetchOp.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicFetchOp.java index 22dd69595b..e76494fb5d 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicFetchOp.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicFetchOp.java @@ -3,49 +3,32 @@ import com.dat3m.dartagnan.expression.Expression; import com.dat3m.dartagnan.expression.op.IOpBin; import com.dat3m.dartagnan.program.Register; -import com.dat3m.dartagnan.program.event.MemoryAccess; +import com.dat3m.dartagnan.program.event.common.RMWOpResultBase; import com.dat3m.dartagnan.program.event.visitors.EventVisitor; +import com.google.common.base.Preconditions; -public class AtomicFetchOp extends AtomicAbstract { +public class AtomicFetchOp extends RMWOpResultBase { - private final IOpBin op; - - public AtomicFetchOp(Register register, Expression address, Expression value, IOpBin op, String mo) { - super(address, register, value, mo); - this.op = op; + public AtomicFetchOp(Register register, Expression address, IOpBin operator, Expression operand, String mo) { + super(register, address, operator, operand, mo); + Preconditions.checkArgument(!mo.isEmpty(), "Atomic events cannot have empty memory order"); } private AtomicFetchOp(AtomicFetchOp other) { super(other); - this.op = other.op; } @Override public String defaultString() { - return resultRegister + " = atomic_fetch_" + op.toLinuxName() + - "(*" + address + ", " + value + ", " + mo + ")\t### C11"; - } - - public IOpBin getOp() { - return op; - } - - @Override - public MemoryAccess getMemoryAccess() { - return new MemoryAccess(address, accessType, MemoryAccess.Mode.RMW); + return String.format("%s := atomic_fetch_%s(*%s, %s, %s)\t### C11", + resultRegister, operator.toLinuxName(), address, operand, mo); } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public AtomicFetchOp getCopy() { return new AtomicFetchOp(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitAtomicFetchOp(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicLoad.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicLoad.java index 63394c6021..40a6a03ff8 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicLoad.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicLoad.java @@ -23,23 +23,16 @@ private AtomicLoad(AtomicLoad other) { super(other); } - @Override public String defaultString() { - return resultRegister + " = atomic_load(*" + address + ", " + mo + ")\t### C11"; + return String.format("%s := atomic_load(*%s, %s)\t### C11", resultRegister, address, mo); } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public AtomicLoad getCopy() { return new AtomicLoad(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitAtomicLoad(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicStore.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicStore.java index 52807eb3a0..a3829c0f54 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicStore.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicStore.java @@ -21,23 +21,16 @@ private AtomicStore(AtomicStore other) { super(other); } - @Override public String defaultString() { - return "atomic_store(*" + address + ", " + value + ", " + mo + ")\t### C11"; + return String.format("atomic_store(*%s, %s, %s)\t### C11", address, value, mo); } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public AtomicStore getCopy() { return new AtomicStore(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitAtomicStore(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicThreadFence.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicThreadFence.java index 130519c7fe..b516b99290 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicThreadFence.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicThreadFence.java @@ -17,21 +17,14 @@ private AtomicThreadFence(AtomicThreadFence other){ @Override public String defaultString() { - return name + "(" + mo + ")\t### C11"; + return String.format("%s(%s)\t### C11", name, mo); } - - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public AtomicThreadFence getCopy(){ return new AtomicThreadFence(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitAtomicThreadFence(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicXchg.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicXchg.java index 24bf202040..95229ca062 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicXchg.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/catomic/AtomicXchg.java @@ -2,13 +2,15 @@ import com.dat3m.dartagnan.expression.Expression; import com.dat3m.dartagnan.program.Register; -import com.dat3m.dartagnan.program.event.MemoryAccess; +import com.dat3m.dartagnan.program.event.common.RMWXchgBase; import com.dat3m.dartagnan.program.event.visitors.EventVisitor; +import com.google.common.base.Preconditions; -public class AtomicXchg extends AtomicAbstract { +public class AtomicXchg extends RMWXchgBase { public AtomicXchg(Register register, Expression address, Expression value, String mo) { - super(address, register, value, mo); + super(register, address, value, mo); + Preconditions.checkArgument(!mo.isEmpty(), "Atomic events cannot have empty memory order"); } private AtomicXchg(AtomicXchg other) { @@ -17,25 +19,14 @@ private AtomicXchg(AtomicXchg other) { @Override public String defaultString() { - return resultRegister + " = atomic_exchange(*" + address + ", " + value + ", " + mo + ")\t### C11"; + return String.format("%s := atomic_exchange(*%s, %s, %s)\t###C11", resultRegister, address, storeValue, mo); } - @Override - public MemoryAccess getMemoryAccess() { - return new MemoryAccess(address, accessType, MemoryAccess.Mode.RMW); - } - - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public AtomicXchg getCopy() { return new AtomicXchg(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitAtomicXchg(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMAddUnless.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMAddUnless.java new file mode 100644 index 0000000000..5e6ea19ca4 --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMAddUnless.java @@ -0,0 +1,89 @@ +package com.dat3m.dartagnan.program.event.lang.linux; + +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; +import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.event.MemoryAccess; +import com.dat3m.dartagnan.program.event.Tag; +import com.dat3m.dartagnan.program.event.common.SingleAccessMemoryEvent; +import com.dat3m.dartagnan.program.event.core.utils.RegWriter; +import com.dat3m.dartagnan.program.event.visitors.EventVisitor; + +import java.util.Set; + +import static com.dat3m.dartagnan.program.Register.UsageType.DATA; + +public class LKMMAddUnless extends SingleAccessMemoryEvent implements RegWriter { + + private Register resultRegister; + private Expression operand; + private Expression cmp; + + public LKMMAddUnless(Register register, Expression address, Expression operand, Expression cmp) { + super(address, Tag.Linux.MO_MB); + this.resultRegister = register; + this.operand = operand; + this.cmp = cmp; + addTags(Tag.WRITE, Tag.READ, Tag.RMW); + } + + private LKMMAddUnless(LKMMAddUnless other){ + super(other); + this.resultRegister = other.resultRegister; + this.operand = other.operand; + this.cmp = other.cmp; + } + + @Override + public String defaultString() { + return String.format("%s := atomic_add_unless(%s, %s, %s)\t### LKMM", + resultRegister, address, operand, cmp); + } + + @Override + public Register getResultRegister() { + return resultRegister; + } + + @Override + public void setResultRegister(Register reg) { + this.resultRegister = reg; + } + + public Expression getOperand() { + return operand; + } + + public Expression getCmp() { + return cmp; + } + + @Override + public Set getRegisterReads(){ + return Register.collectRegisterReads(cmp, DATA, + Register.collectRegisterReads(operand, DATA, + super.getRegisterReads())); + } + + @Override + public void transformExpressions(ExpressionVisitor exprTransformer) { + super.transformExpressions(exprTransformer); + this.operand = operand.visit(exprTransformer); + this.cmp = operand.visit(exprTransformer); + } + + @Override + public LKMMAddUnless getCopy(){ + return new LKMMAddUnless(this); + } + + @Override + public T accept(EventVisitor visitor) { + return visitor.visitLKMMAddUnless(this); + } + + @Override + public MemoryAccess getMemoryAccess() { + return new MemoryAccess(address, accessType, MemoryAccess.Mode.RMW); + } +} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMCmpXchg.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMCmpXchg.java new file mode 100644 index 0000000000..073d461ad5 --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMCmpXchg.java @@ -0,0 +1,34 @@ +package com.dat3m.dartagnan.program.event.lang.linux; + +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.event.Tag; +import com.dat3m.dartagnan.program.event.common.RMWCmpXchgBase; +import com.dat3m.dartagnan.program.event.visitors.EventVisitor; + +public class LKMMCmpXchg extends RMWCmpXchgBase { + + public LKMMCmpXchg(Register register, Expression address, Expression cmp, Expression value, String mo) { + super(register, address, cmp, value, true, mo); + } + + private LKMMCmpXchg(LKMMCmpXchg other){ + super(other); + } + + @Override + public String defaultString() { + return String.format("%s := atomic_cmpxchg%s(%s, %s, %s)\t### LKMM", + resultRegister, Tag.Linux.toText(mo), address, expectedValue, storeValue); + } + + @Override + public LKMMCmpXchg getCopy(){ + return new LKMMCmpXchg(this); + } + + @Override + public T accept(EventVisitor visitor) { + return visitor.visitLKMMCmpXchg(this); + } +} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMFence.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMFence.java index 5c8f084892..25173e59ae 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMFence.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMFence.java @@ -13,18 +13,15 @@ protected LKMMFence(LKMMFence other) { super(other); } - @Override - public LKMMFence getCopy() { - return new LKMMFence(this); - } - @Override public String defaultString() { return name; } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- + @Override + public LKMMFence getCopy() { + return new LKMMFence(this); + } @Override public T accept(EventVisitor visitor) { diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMFetchOp.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMFetchOp.java new file mode 100644 index 0000000000..ec7721c949 --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMFetchOp.java @@ -0,0 +1,35 @@ +package com.dat3m.dartagnan.program.event.lang.linux; + +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.op.IOpBin; +import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.event.Tag; +import com.dat3m.dartagnan.program.event.common.RMWOpResultBase; +import com.dat3m.dartagnan.program.event.visitors.EventVisitor; + +public class LKMMFetchOp extends RMWOpResultBase { + + public LKMMFetchOp(Register register, Expression address, IOpBin op, Expression operand, String mo) { + super(register, address, op, operand, mo); + } + + private LKMMFetchOp(LKMMFetchOp other){ + super(other); + } + + @Override + public String defaultString() { + return String.format("%s := atomic_fetch_%s%s(%s, %s)\t### LKMM", + resultRegister, operator.toLinuxName(), Tag.Linux.toText(mo), operand, address); + } + + @Override + public LKMMFetchOp getCopy(){ + return new LKMMFetchOp(this); + } + + @Override + public T accept(EventVisitor visitor) { + return visitor.visitLKMMFetchOp(this); + } +} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMLoad.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMLoad.java index 1dbe223570..606e0fbfa8 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMLoad.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMLoad.java @@ -28,6 +28,10 @@ public LKMMLoad(Register register, Expression address, String mo) { super(register, address, mo); } + private LKMMLoad(LKMMLoad other) { + super(other); + } + @Override public String defaultString() { if (mo.equals(Tag.Linux.MO_ONCE)) { @@ -36,8 +40,10 @@ public String defaultString() { return super.defaultString(); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- + @Override + public LKMMLoad getCopy() { + return new LKMMLoad(this); + } @Override public T accept(EventVisitor visitor) { diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMLock.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMLock.java index bb25d78085..2b4b704f43 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMLock.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMLock.java @@ -31,17 +31,11 @@ public MemoryAccess getMemoryAccess() { return new MemoryAccess(address, accessType, MemoryAccess.Mode.RMW); } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public LKMMLock getCopy() { return new LKMMLock(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitLKMMLock(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMOpAndTest.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMOpAndTest.java new file mode 100644 index 0000000000..05dd88199e --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMOpAndTest.java @@ -0,0 +1,35 @@ +package com.dat3m.dartagnan.program.event.lang.linux; + +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.op.IOpBin; +import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.event.Tag; +import com.dat3m.dartagnan.program.event.common.RMWOpResultBase; +import com.dat3m.dartagnan.program.event.visitors.EventVisitor; + +public class LKMMOpAndTest extends RMWOpResultBase { + + public LKMMOpAndTest(Register register, Expression address, IOpBin op, Expression operand) { + super(register, address, op, operand, Tag.Linux.MO_MB); + } + + private LKMMOpAndTest(LKMMOpAndTest other){ + super(other); + } + + @Override + public String defaultString() { + return String.format("%s := atomic_%s_and_test(%s, %s)\t### LKMM", + resultRegister, operator.toLinuxName(), operand, address); + } + + @Override + public LKMMOpAndTest getCopy(){ + return new LKMMOpAndTest(this); + } + + @Override + public T accept(EventVisitor visitor) { + return visitor.visitLKMMOpAndTest(this); + } +} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMOpNoReturn.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMOpNoReturn.java new file mode 100644 index 0000000000..2ea9f1f81f --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMOpNoReturn.java @@ -0,0 +1,34 @@ +package com.dat3m.dartagnan.program.event.lang.linux; + +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.op.IOpBin; +import com.dat3m.dartagnan.program.event.Tag; +import com.dat3m.dartagnan.program.event.common.RMWOpBase; +import com.dat3m.dartagnan.program.event.visitors.EventVisitor; + +public class LKMMOpNoReturn extends RMWOpBase { + + public LKMMOpNoReturn(Expression address, IOpBin operator, Expression operand) { + super(address, operator, operand, Tag.Linux.MO_ONCE); + addTags(Tag.Linux.NORETURN); + } + + private LKMMOpNoReturn(LKMMOpNoReturn other){ + super(other); + } + + @Override + public String defaultString() { + return String.format("atomic_%s(%s, %s)\t### LKMM", operator.toLinuxName(), operand, address); + } + + @Override + public LKMMOpNoReturn getCopy(){ + return new LKMMOpNoReturn(this); + } + + @Override + public T accept(EventVisitor visitor) { + return visitor.visitLKMMOpNoReturn(this); + } +} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMOpReturn.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMOpReturn.java new file mode 100644 index 0000000000..ff25a326e4 --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMOpReturn.java @@ -0,0 +1,35 @@ +package com.dat3m.dartagnan.program.event.lang.linux; + +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.op.IOpBin; +import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.event.Tag; +import com.dat3m.dartagnan.program.event.common.RMWOpResultBase; +import com.dat3m.dartagnan.program.event.visitors.EventVisitor; + +public class LKMMOpReturn extends RMWOpResultBase { + + public LKMMOpReturn(Register register, Expression address, IOpBin op, Expression operand, String mo) { + super(register, address, op, operand, mo); + } + + private LKMMOpReturn(LKMMOpReturn other){ + super(other); + } + + @Override + public String defaultString() { + return String.format("%s := atomic_%s_return%s(%s, %s)\t### LKMM", + resultRegister, operator.toLinuxName(), Tag.Linux.toText(mo), operand, address); + } + + @Override + public LKMMOpReturn getCopy(){ + return new LKMMOpReturn(this); + } + + @Override + public T accept(EventVisitor visitor) { + return visitor.visitLKMMOpReturn(this); + } +} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMStore.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMStore.java index 678a42a0d8..94e0d45387 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMStore.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMStore.java @@ -27,6 +27,10 @@ public LKMMStore(Expression address, Expression value, String mo) { super(address, value, mo); } + private LKMMStore(LKMMStore other) { + super(other); + } + @Override public String defaultString() { if (mo.equals(Tag.Linux.MO_ONCE)) { @@ -35,11 +39,14 @@ public String defaultString() { return super.defaultString(); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- + @Override + public LKMMStore getCopy() { + return new LKMMStore(this); + } @Override public T accept(EventVisitor visitor) { return visitor.visitLKMMStore(this); } + } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMUnlock.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMUnlock.java index bb7d5f8b83..0248727991 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMUnlock.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMUnlock.java @@ -36,17 +36,11 @@ public String defaultString() { return String.format("spin_unlock(*%s)", address); } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public LKMMUnlock getCopy() { return new LKMMUnlock(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitLKMMUnlock(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMXchg.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMXchg.java new file mode 100644 index 0000000000..54e6d4e7ee --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/LKMMXchg.java @@ -0,0 +1,34 @@ +package com.dat3m.dartagnan.program.event.lang.linux; + +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.event.Tag; +import com.dat3m.dartagnan.program.event.common.RMWXchgBase; +import com.dat3m.dartagnan.program.event.visitors.EventVisitor; + +public class LKMMXchg extends RMWXchgBase { + + public LKMMXchg(Register register, Expression address, Expression value, String mo) { + super(register, address, value, mo); + } + + private LKMMXchg(LKMMXchg other) { + super(other); + } + + @Override + public String defaultString() { + return String.format("%s := atomic_xchg%s(%s, %s)\t### LKMM", + resultRegister, Tag.Linux.toText(mo), address, storeValue); + } + + @Override + public LKMMXchg getCopy() { + return new LKMMXchg(this); + } + + @Override + public T accept(EventVisitor visitor) { + return visitor.visitLKMMXchg(this); + } +} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/RMWAddUnless.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/RMWAddUnless.java deleted file mode 100644 index 1470711613..0000000000 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/RMWAddUnless.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.dat3m.dartagnan.program.event.lang.linux; - -import com.dat3m.dartagnan.expression.Expression; -import com.dat3m.dartagnan.program.Register; -import com.dat3m.dartagnan.program.event.Tag; -import com.dat3m.dartagnan.program.event.lang.RMWAbstract; -import com.dat3m.dartagnan.program.event.visitors.EventVisitor; - -import java.util.Set; - -public class RMWAddUnless extends RMWAbstract { - - private final Expression cmp; - - public RMWAddUnless(Expression address, Register register, Expression cmp, Expression value) { - super(address, register, value, Tag.Linux.MO_MB); - this.cmp = cmp; - } - - private RMWAddUnless(RMWAddUnless other){ - super(other); - this.cmp = other.cmp; - } - - @Override - public String defaultString() { - return resultRegister + " := atomic_add_unless" + "(" + address + ", " + value + ", " + cmp + ")\t### LKMM"; - } - - public Expression getCmp() { - return cmp; - } - - @Override - public Set getRegisterReads(){ - return Register.collectRegisterReads(cmp, Register.UsageType.DATA, super.getRegisterReads()); - } - - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public RMWAddUnless getCopy(){ - return new RMWAddUnless(this); - } - - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public T accept(EventVisitor visitor) { - return visitor.visitRMWAddUnless(this); - } -} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/RMWCmpXchg.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/RMWCmpXchg.java deleted file mode 100644 index 56bbbf1ff1..0000000000 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/RMWCmpXchg.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.dat3m.dartagnan.program.event.lang.linux; - -import com.dat3m.dartagnan.expression.Expression; -import com.dat3m.dartagnan.program.Register; -import com.dat3m.dartagnan.program.event.Tag; -import com.dat3m.dartagnan.program.event.lang.RMWAbstract; -import com.dat3m.dartagnan.program.event.visitors.EventVisitor; - -import java.util.Set; - -public class RMWCmpXchg extends RMWAbstract { - - private final Expression cmp; - - public RMWCmpXchg(Expression address, Register register, Expression cmp, Expression value, String mo) { - super(address, register, value, mo); - this.cmp = cmp; - } - - private RMWCmpXchg(RMWCmpXchg other){ - super(other); - this.cmp = other.cmp; - } - - @Override - public String defaultString() { - return resultRegister + " := atomic_cmpxchg" + Tag.Linux.toText(mo) + "(" + address + ", " + cmp + ", " + value + ")\t### LKMM"; - } - - public Expression getCmp() { - return cmp; - } - - @Override - public Set getRegisterReads(){ - return Register.collectRegisterReads(cmp, Register.UsageType.DATA, super.getRegisterReads()); - } - - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public RMWCmpXchg getCopy(){ - return new RMWCmpXchg(this); - } - - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public T accept(EventVisitor visitor) { - return visitor.visitRMWCmpXchg(this); - } -} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/RMWFetchOp.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/RMWFetchOp.java deleted file mode 100644 index 8ed9ae6926..0000000000 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/RMWFetchOp.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.dat3m.dartagnan.program.event.lang.linux; - -import com.dat3m.dartagnan.expression.Expression; -import com.dat3m.dartagnan.expression.op.IOpBin; -import com.dat3m.dartagnan.program.Register; -import com.dat3m.dartagnan.program.event.Tag; -import com.dat3m.dartagnan.program.event.lang.RMWAbstract; -import com.dat3m.dartagnan.program.event.visitors.EventVisitor; - -public class RMWFetchOp extends RMWAbstract { - - private final IOpBin op; - - public RMWFetchOp(Expression address, Register register, Expression value, IOpBin op, String mo) { - super(address, register, value, mo); - this.op = op; - } - - private RMWFetchOp(RMWFetchOp other){ - super(other); - this.op = other.op; - } - - @Override - public String defaultString() { - return resultRegister + " := atomic_fetch_" + op.toLinuxName() + Tag.Linux.toText(mo) + "(" + value + ", " + address + ")\t### LKMM"; - } - - public IOpBin getOp() { - return op; - } - - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public RMWFetchOp getCopy(){ - return new RMWFetchOp(this); - } - - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public T accept(EventVisitor visitor) { - return visitor.visitRMWFetchOp(this); - } -} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/RMWOp.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/RMWOp.java deleted file mode 100644 index 42759a7fc4..0000000000 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/RMWOp.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.dat3m.dartagnan.program.event.lang.linux; - -import com.dat3m.dartagnan.expression.Expression; -import com.dat3m.dartagnan.expression.op.IOpBin; -import com.dat3m.dartagnan.program.Register; -import com.dat3m.dartagnan.program.event.Tag; -import com.dat3m.dartagnan.program.event.lang.RMWAbstract; -import com.dat3m.dartagnan.program.event.visitors.EventVisitor; - -public class RMWOp extends RMWAbstract { - - private final IOpBin op; - - public RMWOp(Expression address, Register register, Expression value, IOpBin op) { - super(address, register, value, Tag.Linux.MO_ONCE); - this.op = op; - addTags(Tag.Linux.NORETURN); - } - - private RMWOp(RMWOp other){ - super(other); - this.op = other.op; - } - - @Override - public String defaultString() { - return "atomic_" + op.toLinuxName() + "(" + value + ", " + address + ")\t### LKMM"; - } - - public IOpBin getOp() { - return op; - } - - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public RMWOp getCopy(){ - return new RMWOp(this); - } - - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public T accept(EventVisitor visitor) { - return visitor.visitRMWOp(this); - } -} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/RMWOpAndTest.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/RMWOpAndTest.java deleted file mode 100644 index ff2b35bf47..0000000000 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/RMWOpAndTest.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.dat3m.dartagnan.program.event.lang.linux; - -import com.dat3m.dartagnan.expression.Expression; -import com.dat3m.dartagnan.expression.op.IOpBin; -import com.dat3m.dartagnan.program.Register; -import com.dat3m.dartagnan.program.event.Tag; -import com.dat3m.dartagnan.program.event.lang.RMWAbstract; -import com.dat3m.dartagnan.program.event.visitors.EventVisitor; - -public class RMWOpAndTest extends RMWAbstract { - - private final IOpBin op; - - public RMWOpAndTest(Expression address, Register register, Expression value, IOpBin op) { - super(address, register, value, Tag.Linux.MO_MB); - this.op = op; - } - - private RMWOpAndTest(RMWOpAndTest other){ - super(other); - this.op = other.op; - } - - @Override - public String defaultString() { - return resultRegister + " := atomic_" + op.toLinuxName() + "_and_test(" + value + ", " + address + ")\t### LKMM"; - } - - public IOpBin getOp() { - return op; - } - - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public RMWOpAndTest getCopy(){ - return new RMWOpAndTest(this); - } - - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public T accept(EventVisitor visitor) { - return visitor.visitRMWOpAndTest(this); - } -} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/RMWOpReturn.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/RMWOpReturn.java deleted file mode 100644 index d49db1f707..0000000000 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/RMWOpReturn.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.dat3m.dartagnan.program.event.lang.linux; - -import com.dat3m.dartagnan.expression.Expression; -import com.dat3m.dartagnan.expression.op.IOpBin; -import com.dat3m.dartagnan.program.Register; -import com.dat3m.dartagnan.program.event.Tag; -import com.dat3m.dartagnan.program.event.lang.RMWAbstract; -import com.dat3m.dartagnan.program.event.visitors.EventVisitor; - -public class RMWOpReturn extends RMWAbstract { - - private final IOpBin op; - - public RMWOpReturn(Expression address, Register register, Expression value, IOpBin op, String mo) { - super(address, register, value, mo); - this.op = op; - } - - private RMWOpReturn(RMWOpReturn other){ - super(other); - this.op = other.op; - } - - @Override - public String defaultString() { - return resultRegister + " := atomic_" + op.toLinuxName() + "_return" + Tag.Linux.toText(mo) + "(" + value + ", " + address + ")\t### LKMM"; - } - - public IOpBin getOp() { - return op; - } - - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public RMWOpReturn getCopy(){ - return new RMWOpReturn(this); - } - - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public T accept(EventVisitor visitor) { - return visitor.visitRMWOpReturn(this); - } -} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/RMWXchg.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/RMWXchg.java deleted file mode 100644 index 2421b01c9e..0000000000 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/linux/RMWXchg.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.dat3m.dartagnan.program.event.lang.linux; - -import com.dat3m.dartagnan.expression.Expression; -import com.dat3m.dartagnan.program.Register; -import com.dat3m.dartagnan.program.event.Tag; -import com.dat3m.dartagnan.program.event.lang.RMWAbstract; -import com.dat3m.dartagnan.program.event.visitors.EventVisitor; - -public class RMWXchg extends RMWAbstract { - - public RMWXchg(Expression address, Register register, Expression value, String mo) { - super(address, register, value, mo); - } - - private RMWXchg(RMWXchg other) { - super(other); - } - - @Override - public String defaultString() { - return resultRegister + " := atomic_xchg" + Tag.Linux.toText(mo) + "(" + address + ", " + value + ")\t### LKMM"; - } - - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public RMWXchg getCopy() { - return new RMWXchg(this); - } - - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public T accept(EventVisitor visitor) { - return visitor.visitRMWXchg(this); - } -} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmAbstractRMW.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmAbstractRMW.java deleted file mode 100644 index 81e28f69f9..0000000000 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmAbstractRMW.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.dat3m.dartagnan.program.event.lang.llvm; - -import com.dat3m.dartagnan.expression.Expression; -import com.dat3m.dartagnan.program.Register; -import com.dat3m.dartagnan.program.event.MemoryAccess; -import com.dat3m.dartagnan.program.event.common.SingleAccessMemoryEvent; -import com.dat3m.dartagnan.program.event.core.utils.RegWriter; -import com.dat3m.dartagnan.program.event.visitors.EventVisitor; -import com.google.common.base.Preconditions; - -import java.util.Set; - -import static com.dat3m.dartagnan.program.event.Tag.*; - -public abstract class LlvmAbstractRMW extends SingleAccessMemoryEvent implements RegWriter { - - protected final Register resultRegister; - protected Expression value; - - LlvmAbstractRMW(Expression address, Register register, Expression value, String mo) { - super(address, mo); - Preconditions.checkArgument(!mo.isEmpty(), "LLVM events cannot have empty memory order"); - this.resultRegister = register; - this.value = value; - addTags(READ, WRITE, RMW); - } - - LlvmAbstractRMW(LlvmAbstractRMW other) { - super(other); - this.resultRegister = other.resultRegister; - this.value = other.value; - } - - @Override - public Register getResultRegister() { - return resultRegister; - } - - @Override - public Set getRegisterReads() { - return Register.collectRegisterReads(value, Register.UsageType.DATA, super.getRegisterReads()); - } - - public Expression getMemValue() { - return value; - } - - public void setMemValue(Expression value){ - this.value = value; - } - - @Override - public MemoryAccess getMemoryAccess() { - return new MemoryAccess(address, accessType, MemoryAccess.Mode.RMW); - } - - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public T accept(EventVisitor visitor) { - return visitor.visitLlvmAbstract(this); - } -} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmCmpXchg.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmCmpXchg.java index 7fa435246a..ea4701ee55 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmCmpXchg.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmCmpXchg.java @@ -1,88 +1,71 @@ package com.dat3m.dartagnan.program.event.lang.llvm; import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.type.BooleanType; import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.event.common.RMWCmpXchgBase; import com.dat3m.dartagnan.program.event.visitors.EventVisitor; +import com.google.common.base.Preconditions; -import java.util.Set; +// FIXME: This instruction writes to two registers, which we cannot express right now. +public class LlvmCmpXchg extends RMWCmpXchgBase { -public class LlvmCmpXchg extends LlvmAbstractRMW { - - private Expression expectedValue; - private Register oldValueRegister; private Register cmpRegister; - private boolean isStrong; public LlvmCmpXchg(Register oldValueRegister, Register cmpRegister, Expression address, Expression expectedValue, Expression value, String mo, boolean isStrong) { - super(address, null, value, mo); - this.expectedValue = expectedValue; - this.oldValueRegister = oldValueRegister; + super(oldValueRegister, address, expectedValue, value, isStrong, mo); + Preconditions.checkArgument(!mo.isEmpty(), "LLVM events cannot have empty memory order"); + Preconditions.checkArgument(cmpRegister.getType() instanceof BooleanType, + "Non-boolean result register of LlvmCmpXchg."); this.cmpRegister = cmpRegister; - this.isStrong = isStrong; } private LlvmCmpXchg(LlvmCmpXchg other) { super(other); - this.expectedValue = other.expectedValue; - this.oldValueRegister = other.oldValueRegister; this.cmpRegister = other.cmpRegister; - this.isStrong = other.isStrong; - } - - public boolean isStrong() { - return this.isStrong; } // The llvm instructions actually returns a structure. // In most cases the structure is not used as a whole, - // but rather by accessing its members. Thus there is + // but rather by accessing its members. Thus, there is // no need to support this method. + // NOTE: we use the inherited "resultRegister" to store the old value @Override public Register getResultRegister() { throw new UnsupportedOperationException("getResultRegister() not supported for " + this); } public Register getStructRegister(int idx) { - switch (idx) { - case 0: - return oldValueRegister; - case 1: - return cmpRegister; - default: - throw new UnsupportedOperationException("Cannot access structure with id " + idx + " in " + getClass().getName()); - } - } - - public Expression getExpectedValue() { - return expectedValue; + return switch (idx) { + case 0 -> resultRegister; + case 1 -> cmpRegister; + default -> + throw new UnsupportedOperationException("Cannot access structure with id " + idx + " in " + getClass().getName()); + }; } - @Override - public Set getRegisterReads() { - final Set regReads = super.getRegisterReads(); - Register.collectRegisterReads(value, Register.UsageType.DATA, regReads); - Register.collectRegisterReads(expectedValue, Register.UsageType.DATA, regReads); - return regReads; + public void setStructRegister(int idx, Register newRegister) { + switch (idx) { + case 0 -> resultRegister = newRegister; + case 1 -> cmpRegister = newRegister; + default -> + throw new UnsupportedOperationException("Cannot access structure with id " + idx + " in " + getClass().getName()); + } } @Override public String defaultString() { - return "(" + oldValueRegister + ", " + cmpRegister + ") = llvm_cmpxchg" + (isStrong ? "_strong" : "_weak") + - "(*" + address + ", " + expectedValue + ", " + value + ", " + mo + ")\t### LLVM"; + final String strongSuffix = isStrong ? "strong" : "weak"; + return String.format("(%s, %s) := llvm_cmpxchg_%s(*%s, %s, %s, %s)\t### LLVM", + resultRegister, cmpRegister, strongSuffix, address, expectedValue, storeValue, mo); } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public LlvmCmpXchg getCopy() { return new LlvmCmpXchg(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitLlvmCmpXchg(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmFence.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmFence.java index 772f4c530f..753b07884d 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmFence.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmFence.java @@ -20,17 +20,11 @@ public String defaultString() { return name + "(" + mo + ")\t### LLVM"; } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public LlvmFence getCopy() { return new LlvmFence(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitLlvmFence(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmLoad.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmLoad.java index 2e8e51f99d..b375fe33ad 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmLoad.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmLoad.java @@ -28,17 +28,11 @@ public String defaultString() { return resultRegister + " = llvm_load(*" + address + ", " + mo + ")\t### LLVM"; } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public LlvmLoad getCopy() { return new LlvmLoad(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitLlvmLoad(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmRMW.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmRMW.java index 6f032f88ba..502380738d 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmRMW.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmRMW.java @@ -3,44 +3,32 @@ import com.dat3m.dartagnan.expression.Expression; import com.dat3m.dartagnan.expression.op.IOpBin; import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.event.common.RMWOpResultBase; import com.dat3m.dartagnan.program.event.visitors.EventVisitor; +import com.google.common.base.Preconditions; -public class LlvmRMW extends LlvmAbstractRMW { +public class LlvmRMW extends RMWOpResultBase { - private final IOpBin op; - - public LlvmRMW(Register register, Expression address, Expression value, IOpBin op, String mo) { - super(address, register, value, mo); - this.op = op; + public LlvmRMW(Register register, Expression address, IOpBin op, Expression operand, String mo) { + super(register, address, op, operand, mo); + Preconditions.checkArgument(!mo.isEmpty(), "LLVM events cannot have empty memory order"); } private LlvmRMW(LlvmRMW other) { super(other); - this.op = other.op; } @Override public String defaultString() { - return resultRegister + " = llvm_rmw_" + op.toLinuxName() + - "(*" + address + ", " + value + ", " + mo + ")\t### LLVM"; - } - - public IOpBin getOp() { - return op; + return String.format("%s := llvm_rmw_%s(*%s, %s, %s)\t### LLVM", + resultRegister, operator.toLinuxName(), address, operand, mo); } - - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public LlvmRMW getCopy() { return new LlvmRMW(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitLlvmRMW(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmStore.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmStore.java index 73bc90db01..5ef9fffb66 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmStore.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmStore.java @@ -26,17 +26,11 @@ public String defaultString() { return "llvm_store(*" + address + ", " + value + ", " + mo + ")\t### LLVM"; } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public LlvmStore getCopy() { return new LlvmStore(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitLlvmStore(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmXchg.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmXchg.java index 5f933f7c30..4eff3ccd81 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmXchg.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/llvm/LlvmXchg.java @@ -2,12 +2,15 @@ import com.dat3m.dartagnan.expression.Expression; import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.event.common.RMWXchgBase; import com.dat3m.dartagnan.program.event.visitors.EventVisitor; +import com.google.common.base.Preconditions; -public class LlvmXchg extends LlvmAbstractRMW { +public class LlvmXchg extends RMWXchgBase { public LlvmXchg(Register register, Expression address, Expression value, String mo) { - super(address, register, value, mo); + super(register, address, value, mo); + Preconditions.checkArgument(!mo.isEmpty(), "LLVM events cannot have empty memory order"); } private LlvmXchg(LlvmXchg other) { @@ -16,20 +19,15 @@ private LlvmXchg(LlvmXchg other) { @Override public String defaultString() { - return resultRegister + " = llvm_xchg(*" + address + ", " + value + ", " + mo + ")\t### LLVM"; + return String.format("%s := llvm_xchg(*%s, %s, %s)\t### LLVM", + resultRegister, address, storeValue, mo); } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public LlvmXchg getCopy() { return new LlvmXchg(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitLlvmXchg(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/pthread/Create.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/pthread/Create.java deleted file mode 100644 index 8aabc7280c..0000000000 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/pthread/Create.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.dat3m.dartagnan.program.event.lang.pthread; - -import com.dat3m.dartagnan.expression.Expression; -import com.dat3m.dartagnan.expression.ExpressionFactory; -import com.dat3m.dartagnan.expression.type.TypeFactory; -import com.dat3m.dartagnan.program.event.Tag; -import com.dat3m.dartagnan.program.event.common.StoreBase; -import com.dat3m.dartagnan.program.event.visitors.EventVisitor; - -import static com.dat3m.dartagnan.program.event.Tag.C11.MO_SC; - -public class Create extends StoreBase { - - private final String routine; - - public Create(Expression address, String routine) { - super(address, ExpressionFactory.getInstance().makeOne(TypeFactory.getInstance().getArchType()), MO_SC); - this.routine = routine; - addTags(Tag.C11.PTHREAD); - } - - private Create(Create other) { - super(other); - this.routine = other.routine; - } - - @Override - public String defaultString() { - return "pthread_create(" + address + ", " + routine + ")"; - } - - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public Create getCopy() { - return new Create(this); - } - - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public T accept(EventVisitor visitor) { - return visitor.visitCreate(this); - } -} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/pthread/End.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/pthread/End.java deleted file mode 100644 index 0cc2fe2a31..0000000000 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/pthread/End.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.dat3m.dartagnan.program.event.lang.pthread; - -import com.dat3m.dartagnan.expression.Expression; -import com.dat3m.dartagnan.expression.ExpressionFactory; -import com.dat3m.dartagnan.expression.type.TypeFactory; -import com.dat3m.dartagnan.program.event.Tag; -import com.dat3m.dartagnan.program.event.common.StoreBase; -import com.dat3m.dartagnan.program.event.visitors.EventVisitor; - -import static com.dat3m.dartagnan.program.event.Tag.C11.MO_SC; - -public class End extends StoreBase { - - public End(Expression address) { - super(address, ExpressionFactory.getInstance().makeZero(TypeFactory.getInstance().getArchType()), MO_SC); - addTags(Tag.C11.PTHREAD); - } - - private End(End other) { - super(other); - } - - @Override - public String defaultString() { - return "end_thread()"; - } - - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public End getCopy() { - return new End(this); - } - - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public T accept(EventVisitor visitor) { - return visitor.visitEnd(this); - } -} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/pthread/InitLock.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/pthread/InitLock.java index f2a4ee3892..b37ff88061 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/pthread/InitLock.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/pthread/InitLock.java @@ -25,17 +25,11 @@ public String defaultString() { return "pthread_mutex_init(&" + name + ", " + value + ")"; } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public InitLock getCopy() { return new InitLock(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitInitLock(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/pthread/Join.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/pthread/Join.java deleted file mode 100644 index 3a5954c8e7..0000000000 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/pthread/Join.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.dat3m.dartagnan.program.event.lang.pthread; - -import com.dat3m.dartagnan.expression.Expression; -import com.dat3m.dartagnan.program.Register; -import com.dat3m.dartagnan.program.event.Tag; -import com.dat3m.dartagnan.program.event.common.LoadBase; -import com.dat3m.dartagnan.program.event.visitors.EventVisitor; - -public class Join extends LoadBase { - - public Join(Register reg, Expression expr) { - // We will set the correct (C11 or LKMM) acquire tag (or barriers) when the event is compiled - super(reg, expr, ""); - addTags(Tag.C11.PTHREAD); - } - - public Join(Join other) { - super(other); - } - - @Override - public String defaultString() { - return resultRegister + " <- pthread_join(" + getAddress() + ")"; - } - - - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public Join getCopy() { - return new Join(this); - } - - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public T accept(EventVisitor visitor) { - return visitor.visitJoin(this); - } -} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/pthread/Lock.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/pthread/Lock.java index 3e70ddf982..0a1fc2fdc1 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/pthread/Lock.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/pthread/Lock.java @@ -3,7 +3,6 @@ import com.dat3m.dartagnan.expression.Expression; import com.dat3m.dartagnan.expression.ExpressionFactory; import com.dat3m.dartagnan.expression.type.TypeFactory; -import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.common.StoreBase; import com.dat3m.dartagnan.program.event.visitors.EventVisitor; @@ -12,18 +11,15 @@ public class Lock extends StoreBase { private final String name; - private final Register reg; - public Lock(String name, Expression address, Register reg) { + public Lock(String name, Expression address) { super(address, ExpressionFactory.getInstance().makeOne(TypeFactory.getInstance().getArchType()), MO_SC); this.name = name; - this.reg = reg; } private Lock(Lock other) { super(other); this.name = other.name; - this.reg = other.reg; } @Override @@ -31,21 +27,11 @@ public String defaultString() { return "pthread_mutex_lock(&" + name + ")"; } - public Register getResultRegister() { - return reg; - } - - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public Lock getCopy() { return new Lock(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitLock(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/pthread/Start.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/pthread/Start.java deleted file mode 100644 index 5c55542ffc..0000000000 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/pthread/Start.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.dat3m.dartagnan.program.event.lang.pthread; - -import com.dat3m.dartagnan.expression.Expression; -import com.dat3m.dartagnan.program.Register; -import com.dat3m.dartagnan.program.event.Tag; -import com.dat3m.dartagnan.program.event.common.LoadBase; -import com.dat3m.dartagnan.program.event.core.Event; -import com.dat3m.dartagnan.program.event.visitors.EventVisitor; - -import static com.dat3m.dartagnan.program.event.Tag.C11.MO_SC; - -public class Start extends LoadBase { - - private final Event creationEvent; - - public Start(Register reg, Expression address, Event creationEvent) { - super(reg, address, MO_SC); - this.creationEvent = creationEvent; - addTags(Tag.C11.PTHREAD); - } - - private Start(Start other) { - super(other); - this.creationEvent = other.creationEvent; - } - - @Override - public String defaultString() { - return "start_thread()"; - } - - public Event getCreationEvent() { - return creationEvent; - } - - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public Start getCopy() { - return new Start(this); - } - - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - - @Override - public T accept(EventVisitor visitor) { - return visitor.visitStart(this); - } -} \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/pthread/Unlock.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/pthread/Unlock.java index 4e4bef0ed6..c29e9c1ddf 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/pthread/Unlock.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/pthread/Unlock.java @@ -3,7 +3,6 @@ import com.dat3m.dartagnan.expression.Expression; import com.dat3m.dartagnan.expression.ExpressionFactory; import com.dat3m.dartagnan.expression.type.TypeFactory; -import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.common.StoreBase; import com.dat3m.dartagnan.program.event.visitors.EventVisitor; @@ -12,18 +11,15 @@ public class Unlock extends StoreBase { private final String name; - private final Register reg; - public Unlock(String name, Expression address, Register reg) { + public Unlock(String name, Expression address) { super(address, ExpressionFactory.getInstance().makeZero(TypeFactory.getInstance().getArchType()), MO_SC); this.name = name; - this.reg = reg; } private Unlock(Unlock other) { super(other); this.name = other.name; - this.reg = other.reg; } @Override @@ -31,21 +27,11 @@ public String defaultString() { return "pthread_mutex_unlock(&" + name + ")"; } - public Register getResultRegister() { - return reg; - } - - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public Unlock getCopy() { return new Unlock(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitUnlock(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/std/Malloc.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/std/Malloc.java index ced0d65c35..eafb3cfcec 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/std/Malloc.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/std/Malloc.java @@ -2,6 +2,7 @@ import com.dat3m.dartagnan.encoding.EncodingContext; import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; import com.dat3m.dartagnan.expression.type.IntegerType; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.Tag; @@ -24,7 +25,7 @@ */ public class Malloc extends AbstractEvent implements RegWriter, RegReader { - protected final Register register; + protected Register register; protected Expression sizeExpr; public Malloc(Register register, Expression sizeExpr) { @@ -53,6 +54,11 @@ public Register getResultRegister() { return register; } + @Override + public void setResultRegister(Register reg) { + this.register = reg; + } + @Override public Set getRegisterReads() { // TODO: Should this technically be an addr-dependency? Maybe an "other" dependency? @@ -64,22 +70,21 @@ public String defaultString() { return String.format("%s <- malloc(%s)", register, sizeExpr); } + @Override + public void transformExpressions(ExpressionVisitor exprTransformer) { + this.sizeExpr = sizeExpr.visit(exprTransformer); + } + @Override public BooleanFormula encodeExec(EncodingContext context) { throw new UnsupportedOperationException("Cannot encode Malloc events."); } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public Malloc getCopy() { return new Malloc(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitMalloc(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/svcomp/BeginAtomic.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/svcomp/BeginAtomic.java index bb5ec647aa..143626a23a 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/svcomp/BeginAtomic.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/svcomp/BeginAtomic.java @@ -19,17 +19,11 @@ public String defaultString() { return "begin_atomic()"; } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public BeginAtomic getCopy() { return new BeginAtomic(this); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitBeginAtomic(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/svcomp/EndAtomic.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/svcomp/EndAtomic.java index 7483372c1d..559ebb3565 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/svcomp/EndAtomic.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/lang/svcomp/EndAtomic.java @@ -13,7 +13,6 @@ import org.apache.logging.log4j.Logger; import java.util.*; -import java.util.stream.Collectors; import static com.dat3m.dartagnan.program.event.Tag.RMW; import static com.dat3m.dartagnan.program.event.Tag.SVCOMP.SVCOMPATOMIC; @@ -42,7 +41,7 @@ public BeginAtomic getBegin() { } public List getBlock() { - Preconditions.checkState(getThread().getProgram().isCompiled(), "The program needs to get compiled first"); + Preconditions.checkState(getFunction().getProgram().isCompiled(), "The program needs to get compiled first"); return enclosedEvents; } @@ -50,9 +49,9 @@ public List getBlock() { public void runLocalAnalysis(Program program, Context context) { //===== Temporary fix to rematch atomic blocks correctly ===== BranchEquivalence eq = context.requires(BranchEquivalence.class); - List begins = this.thread.getEvents() + List begins = this.getFunction().getEvents() .stream().filter(x -> x instanceof BeginAtomic && eq.isReachableFrom(x, this)) - .collect(Collectors.toList()); + .toList(); this.begin = (BeginAtomic) begins.get(begins.size() - 1); // ======================================================= @@ -87,9 +86,6 @@ public String defaultString() { return "end_atomic()"; } - // Unrolling - // ----------------------------------------------------------------------------------------------------------------- - @Override public EndAtomic getCopy() { return new EndAtomic(this); @@ -105,9 +101,6 @@ public Set getReferencedEvents() { return Set.of(begin); } - // Visitor - // ----------------------------------------------------------------------------------------------------------------- - @Override public T accept(EventVisitor visitor) { return visitor.visitEndAtomic(this); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/visitors/EventVisitor.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/visitors/EventVisitor.java index 2e18c8362c..41b60275ec 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/visitors/EventVisitor.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/event/visitors/EventVisitor.java @@ -1,19 +1,20 @@ package com.dat3m.dartagnan.program.event.visitors; import com.dat3m.dartagnan.program.event.arch.StoreExclusive; -import com.dat3m.dartagnan.program.event.arch.lisa.RMW; -import com.dat3m.dartagnan.program.event.arch.ptx.RedOp; -import com.dat3m.dartagnan.program.event.arch.ptx.AtomOp; -import com.dat3m.dartagnan.program.event.arch.tso.Xchg; +import com.dat3m.dartagnan.program.event.arch.lisa.LISARMW; +import com.dat3m.dartagnan.program.event.arch.ptx.PTXAtomOp; +import com.dat3m.dartagnan.program.event.arch.ptx.PTXRedOp; +import com.dat3m.dartagnan.program.event.arch.tso.TSOXchg; import com.dat3m.dartagnan.program.event.core.*; import com.dat3m.dartagnan.program.event.core.annotations.CodeAnnotation; import com.dat3m.dartagnan.program.event.core.rmw.RMWStore; import com.dat3m.dartagnan.program.event.core.rmw.RMWStoreExclusive; -import com.dat3m.dartagnan.program.event.lang.RMWAbstract; import com.dat3m.dartagnan.program.event.lang.catomic.*; import com.dat3m.dartagnan.program.event.lang.linux.*; import com.dat3m.dartagnan.program.event.lang.llvm.*; -import com.dat3m.dartagnan.program.event.lang.pthread.*; +import com.dat3m.dartagnan.program.event.lang.pthread.InitLock; +import com.dat3m.dartagnan.program.event.lang.pthread.Lock; +import com.dat3m.dartagnan.program.event.lang.pthread.Unlock; import com.dat3m.dartagnan.program.event.lang.std.Malloc; import com.dat3m.dartagnan.program.event.lang.svcomp.BeginAtomic; import com.dat3m.dartagnan.program.event.lang.svcomp.EndAtomic; @@ -47,26 +48,21 @@ public interface EventVisitor { // ============================== Language-level events ============================== // ------------------ Pthread Events ------------------ - default T visitCreate(Create e) { return visitMemEvent(e); } - default T visitEnd(End e) { return visitMemEvent(e); } default T visitInitLock(InitLock e) { return visitMemEvent(e); } - default T visitJoin(Join e) { return visitMemEvent(e); } default T visitLock(Lock e) { return visitMemEvent(e); } - default T visitStart(Start e) { return visitMemEvent(e); } default T visitUnlock(Unlock e) { return visitMemEvent(e); } // ------------------ AARCH64 Events ------------------ default T visitStoreExclusive(StoreExclusive e) { return visitMemEvent(e); } // ------------------ Linux Events ------------------ - default T visitRMWAbstract(RMWAbstract e) { return visitMemEvent(e); } - default T visitRMWAddUnless(RMWAddUnless e) { return visitRMWAbstract(e); } - default T visitRMWCmpXchg(RMWCmpXchg e) { return visitRMWAbstract(e); } - default T visitRMWFetchOp(RMWFetchOp e) { return visitRMWAbstract(e); } - default T visitRMWOp(RMWOp e) { return visitRMWAbstract(e); } - default T visitRMWOpAndTest(RMWOpAndTest e) { return visitRMWAbstract(e); } - default T visitRMWOpReturn(RMWOpReturn e) { return visitRMWAbstract(e); } - default T visitRMWXchg(RMWXchg e) { return visitRMWAbstract(e); } + default T visitLKMMAddUnless(LKMMAddUnless e) { return visitMemEvent(e); } + default T visitLKMMCmpXchg(LKMMCmpXchg e) { return visitMemEvent(e); } + default T visitLKMMFetchOp(LKMMFetchOp e) { return visitMemEvent(e); } + default T visitLKMMOpNoReturn(LKMMOpNoReturn e) { return visitMemEvent(e); } + default T visitLKMMOpAndTest(LKMMOpAndTest e) { return visitMemEvent(e); } + default T visitLKMMOpReturn(LKMMOpReturn e) { return visitMemEvent(e); } + default T visitLKMMXchg(LKMMXchg e) { return visitMemEvent(e); } default T visitLKMMFence(LKMMFence e) { return visitEvent(e); } default T visitLKMMLoad(LKMMLoad e) { return visitMemEvent(e); } default T visitLKMMStore(LKMMStore e) { return visitMemEvent(e); } @@ -76,27 +72,25 @@ public interface EventVisitor { default T visitLKMMUnlock(LKMMUnlock e) { return visitMemEvent(e); } // ------------------ TSO Events ------------------ - default T visitXchg(Xchg e) { return visitMemEvent(e); } + default T visitTSOXchg(TSOXchg e) { return visitMemEvent(e); } // ------------------ LISA Events ------------------ - default T visitRMW(RMW e) { return visitMemEvent(e); } + default T visitLISARMW(LISARMW e) { return visitMemEvent(e); } // ------------------ C-Atomic Events ------------------ - default T visitAtomicAbstract(AtomicAbstract e) { return visitMemEvent(e); } - default T visitAtomicCmpXchg(AtomicCmpXchg e) { return visitAtomicAbstract(e); } - default T visitAtomicFetchOp(AtomicFetchOp e) { return visitAtomicAbstract(e); } + default T visitAtomicCmpXchg(AtomicCmpXchg e) { return visitMemEvent(e); } + default T visitAtomicFetchOp(AtomicFetchOp e) { return visitMemEvent(e); } default T visitAtomicLoad(AtomicLoad e) { return visitMemEvent(e); } default T visitAtomicStore(AtomicStore e) { return visitMemEvent(e); } default T visitAtomicThreadFence(AtomicThreadFence e) { return visitEvent(e); } - default T visitAtomicXchg(AtomicXchg e) { return visitAtomicAbstract(e); } + default T visitAtomicXchg(AtomicXchg e) { return visitMemEvent(e); } // ------------------ LLVM Events ------------------ - default T visitLlvmAbstract(LlvmAbstractRMW e) { return visitMemEvent(e); } - default T visitLlvmCmpXchg(LlvmCmpXchg e) { return visitLlvmAbstract(e); } - default T visitLlvmRMW(LlvmRMW e) { return visitLlvmAbstract(e); } + default T visitLlvmCmpXchg(LlvmCmpXchg e) { return visitMemEvent(e); } + default T visitLlvmRMW(LlvmRMW e) { return visitMemEvent(e); } default T visitLlvmLoad(LlvmLoad e) { return visitMemEvent(e); } default T visitLlvmStore(LlvmStore e) { return visitMemEvent(e); } - default T visitLlvmXchg(LlvmXchg e) { return visitLlvmAbstract(e); } + default T visitLlvmXchg(LlvmXchg e) { return visitMemEvent(e); } default T visitLlvmFence(LlvmFence e) { return visitEvent(e); } // ------------------ SVCOMP Events ------------------ @@ -107,6 +101,6 @@ public interface EventVisitor { default T visitMalloc(Malloc e) { return visitEvent(e); } // ------------------ PTX Events ------------------ - default T visitPtxRedOp(RedOp e) { return visitRMWAbstract(e); } - default T visitPtxAtomOp(AtomOp e) { return visitRMWAbstract(e); } + default T visitPtxRedOp(PTXRedOp e) { return visitMemEvent(e); } + default T visitPtxAtomOp(PTXAtomOp e) { return visitMemEvent(e); } } \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/memory/MemoryObject.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/memory/MemoryObject.java index 22023daf51..de2b4ae967 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/memory/MemoryObject.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/memory/MemoryObject.java @@ -21,6 +21,7 @@ public class MemoryObject extends IConst { private int size; BigInteger address; private String cVar; + private boolean isThreadLocal; // TODO // Right now we assume that either the whole object is atomic or it is not. @@ -37,6 +38,7 @@ public class MemoryObject extends IConst { this.index = index; this.size = size; this.isStatic = isStaticallyAllocated; + this.isThreadLocal = false; if (isStaticallyAllocated) { // Static allocations are default-initialized @@ -59,6 +61,9 @@ public Set getStaticallyInitializedFields() { public BigInteger getAddress() { return this.address; } public void setAddress(BigInteger addr) { this.address = addr; } + public boolean isThreadLocal() { return this.isThreadLocal; } + public void setIsThreadLocal(boolean value) { this.isThreadLocal = value;} + /** * @return Number of fields in this array. */ diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/CoreCodeVerification.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/CoreCodeVerification.java index 0aaa7dca88..879136c631 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/CoreCodeVerification.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/CoreCodeVerification.java @@ -2,11 +2,13 @@ import com.dat3m.dartagnan.exception.MalformedProgramException; import com.dat3m.dartagnan.program.Program; -import com.dat3m.dartagnan.program.event.arch.ptx.FenceWithId; +import com.dat3m.dartagnan.program.event.arch.ptx.PTXFenceWithId; import com.dat3m.dartagnan.program.event.core.*; import com.dat3m.dartagnan.program.event.core.annotations.CodeAnnotation; import com.dat3m.dartagnan.program.event.core.rmw.RMWStore; import com.dat3m.dartagnan.program.event.core.rmw.RMWStoreExclusive; +import com.dat3m.dartagnan.program.event.core.threading.ThreadArgument; +import com.dat3m.dartagnan.program.event.core.threading.ThreadCreate; import com.dat3m.dartagnan.program.event.lang.svcomp.BeginAtomic; import com.dat3m.dartagnan.program.event.lang.svcomp.EndAtomic; import org.sosy_lab.common.configuration.Configuration; @@ -34,7 +36,8 @@ public static CoreCodeVerification fromConfig(Configuration config) { Load.class, Store.class, Init.class, GenericMemoryEvent.class, Fence.class, CondJump.class, IfAsJump.class, ExecutionStatus.class, Label.class, Local.class, Skip.class, Assume.class, RMWStore.class, RMWStoreExclusive.class, - FenceWithId.class, // For PTX + ThreadCreate.class, ThreadArgument.class, + PTXFenceWithId.class, // For PTX BeginAtomic.class, EndAtomic.class // We add SVCOMP atomic blocks here as well, despite them not being part of the core package. // TODO: We might want to find a more systematic way to extend the core with these custom events. diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/DeadAssignmentElimination.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/DeadAssignmentElimination.java index 8e9cfd2a5c..eb6c4e81d1 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/DeadAssignmentElimination.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/DeadAssignmentElimination.java @@ -1,5 +1,6 @@ package com.dat3m.dartagnan.program.processing; +import com.dat3m.dartagnan.program.Function; import com.dat3m.dartagnan.program.Program; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.Thread; @@ -43,7 +44,7 @@ public void run(Program program) { logger.info("#Events after DSE: " + program.getEvents().size()); } - private void eliminateDeadAssignments(Program program, Thread thread) { + private void eliminateDeadAssignments(Program program, Function function) { Set usedRegs = new HashSet<>(); if(program.getSpecification() != null) { // for litmus tests @@ -52,7 +53,7 @@ private void eliminateDeadAssignments(Program program, Thread thread) { } usedRegs.addAll(program.getSpecification().getRegs()); } - // Registers that are used by assertions or other threads cannot be removed + // Registers that are used by assertions or other functions/threads cannot be removed final List programEvents = program.getEvents(); programEvents.stream() .filter(e -> e.hasTag(ASSERTION)) @@ -60,15 +61,15 @@ private void eliminateDeadAssignments(Program program, Thread thread) { .map(RegWriter::getResultRegister) .forEach(usedRegs::add); programEvents.stream() - .filter(e -> !e.getThread().equals(thread)) + .filter(e -> !e.getFunction().equals(function)) .filter(RegReader.class::isInstance).map(RegReader.class::cast) .forEach(e -> e.getRegisterReads().stream().map(Register.Read::register).forEach(usedRegs::add)); // Compute events to be removed (removal is delayed) - final List threadEvents = thread.getEvents(); + final List funcEvents = function.getEvents(); final Set toBeRemoved = new HashSet<>(); - for(Event e : Lists.reverse(threadEvents)) { + for(Event e : Lists.reverse(funcEvents)) { if (!e.hasTag(NOOPT) && !e.hasTag(VISIBLE) && e instanceof RegWriter regWriter && !usedRegs.contains(regWriter.getResultRegister())) { // TODO (TH): Can we also remove loads to unused registers here? @@ -81,7 +82,7 @@ private void eliminateDeadAssignments(Program program, Thread thread) { } // Here is the actual removal - threadEvents.stream() + funcEvents.stream() .filter(toBeRemoved::contains) .forEach(Event::tryDelete); } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/DynamicPureLoopCutting.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/DynamicPureLoopCutting.java index 31a20c0fa9..351db6e925 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/DynamicPureLoopCutting.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/DynamicPureLoopCutting.java @@ -2,7 +2,7 @@ import com.dat3m.dartagnan.expression.Expression; import com.dat3m.dartagnan.expression.ExpressionFactory; -import com.dat3m.dartagnan.expression.type.IntegerType; +import com.dat3m.dartagnan.expression.type.Type; import com.dat3m.dartagnan.expression.type.TypeFactory; import com.dat3m.dartagnan.program.Program; import com.dat3m.dartagnan.program.Register; @@ -122,13 +122,11 @@ private void insertSideEffectChecks(IterationData iter) { final List sideEffects = iter.sideEffects; final List trackingRegs = new ArrayList<>(); + final Type type = TypeFactory.getInstance().getBooleanType(); Event insertionPoint = iterInfo.getIterationEnd(); - IntegerType type = TypeFactory.getInstance().getArchType(); for (int i = 0; i < sideEffects.size(); i++) { final Event sideEffect = sideEffects.get(i); - final Register trackingReg = thread.newRegister( - String.format("Loop%s_%s_%s", loopNumber, iterNumber, i), - type); + final Register trackingReg = thread.newRegister(String.format("Loop%s_%s_%s", loopNumber, iterNumber, i), type); trackingRegs.add(trackingReg); final Event execCheck = EventFactory.newExecutionStatus(trackingReg, sideEffect); @@ -136,9 +134,9 @@ private void insertSideEffectChecks(IterationData iter) { insertionPoint = execCheck; } - ExpressionFactory expressionFactory = ExpressionFactory.getInstance(); + final ExpressionFactory expressionFactory = ExpressionFactory.getInstance(); final Expression atLeastOneSideEffect = trackingRegs.stream() - .map(reg -> expressionFactory.makeEQ(reg, expressionFactory.makeZero(reg.getType()))) + .map(expressionFactory::makeNot) .reduce(expressionFactory.makeFalse(), expressionFactory::makeOr); final CondJump assumeSideEffect = EventFactory.newJumpUnless(atLeastOneSideEffect, (Label) thread.getExit()); assumeSideEffect.addTags(Tag.SPINLOOP, Tag.EARLYTERMINATION, Tag.NOOPT); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/Inlining.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/Inlining.java new file mode 100644 index 0000000000..b536489a40 --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/Inlining.java @@ -0,0 +1,191 @@ +package com.dat3m.dartagnan.program.processing; + +import com.dat3m.dartagnan.exception.MalformedProgramException; +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.ExpressionFactory; +import com.dat3m.dartagnan.expression.processing.ExprTransformer; +import com.dat3m.dartagnan.program.Function; +import com.dat3m.dartagnan.program.Program; +import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.Thread; +import com.dat3m.dartagnan.program.event.EventFactory; +import com.dat3m.dartagnan.program.event.EventUser; +import com.dat3m.dartagnan.program.event.Tag; +import com.dat3m.dartagnan.program.event.core.Event; +import com.dat3m.dartagnan.program.event.core.Label; +import com.dat3m.dartagnan.program.event.core.utils.RegReader; +import com.dat3m.dartagnan.program.event.core.utils.RegWriter; +import com.dat3m.dartagnan.program.event.functions.AbortIf; +import com.dat3m.dartagnan.program.event.functions.DirectFunctionCall; +import com.dat3m.dartagnan.program.event.functions.DirectValueFunctionCall; +import com.dat3m.dartagnan.program.event.functions.Return; +import com.dat3m.dartagnan.program.event.lang.llvm.LlvmCmpXchg; +import org.sosy_lab.common.configuration.Configuration; +import org.sosy_lab.common.configuration.InvalidConfigurationException; +import org.sosy_lab.common.configuration.Option; +import org.sosy_lab.common.configuration.Options; + +import java.util.*; + +import static com.dat3m.dartagnan.configuration.OptionNames.RECURSION_BOUND; +import static com.dat3m.dartagnan.program.event.EventFactory.*; +import static com.google.common.base.Preconditions.checkNotNull; + +@Options +public class Inlining implements ProgramProcessor { + + @Option(name = RECURSION_BOUND, + description = "Inlines each function call up to this many times.", + secure = true) + private int bound = 1; + + private Inlining() {} + + public static Inlining fromConfig(Configuration config) throws InvalidConfigurationException { + Inlining process = new Inlining(); + config.inject(process); + return process; + } + + @Override + public void run(Program program) { + for (Function function : program.getFunctions()) { + inlineAllCalls(function); + } + } + + private void inlineAllCalls(Function function) { + int scopeCounter = 0; + Map> exitToCallMap = new HashMap<>(); + // Iteratively replace the first call. + Event event = function.getEntry(); + while (event != null) { + exitToCallMap.remove(event); + // Work with successor because when calls get removed, the loop variable would be invalidated. + if (!(event.getSuccessor() instanceof DirectFunctionCall call) || !call.getCallTarget().hasBody()) { + event = event.getSuccessor(); + continue; + } + // Check whether recursion bound was reached. + // FIXME: The recursion check does not work + exitToCallMap.computeIfAbsent(call.getSuccessor(), k -> new ArrayList<>()).add(call); + long depth = exitToCallMap.values().stream().filter(c -> c.contains(call)).count(); + if (depth > bound) { + AbortIf boundEvent = newAbortIf(ExpressionFactory.getInstance().makeTrue()); + boundEvent.copyAllMetadataFrom(call); + boundEvent.addTags(Tag.BOUND, Tag.EARLYTERMINATION, Tag.NOOPT); + call.replaceBy(boundEvent); + } else { + Function callTarget = call.getCallTarget(); + if (callTarget instanceof Thread) { + throw new MalformedProgramException( + String.format("Cannot call thread %s directly.", + call.getCallTarget())); + } + final Event callMarker = EventFactory.newFunctionCallMarker(callTarget.getName()); + final Event returnMarker = EventFactory.newFunctionReturnMarker(callTarget.getName()); + callMarker.copyAllMetadataFrom(call); + returnMarker.copyAllMetadataFrom(call); + call.getPredecessor().insertAfter(callMarker); + call.insertAfter(returnMarker); + // Calls with result will write the return value to this register. + Register result = call instanceof DirectValueFunctionCall c ? c.getResultRegister() : null; + inlineBodyAfterCall(call, result, call.getArguments(), callTarget, ++scopeCounter); + event = call.getSuccessor(); + call.forceDelete(); + } + } + } + + static void inlineBodyAfterCall(Event entry, Register result, List arguments, Function callTarget, int scope) { + // All occurrences of return events will jump here instead. + Label exitLabel = newLabel("EXIT_OF_CALL_" + callTarget.getName() + "_" + scope); + var inlinedBody = new ArrayList(); + var replacementMap = new HashMap(); + var registerMap = new HashMap(); + assert arguments.size() == callTarget.getFunctionType().getParameterTypes().size(); + // All registers have to be replaced + for (Register register : List.copyOf(callTarget.getRegisters())) { + String newName = scope + ":" + register.getName(); + registerMap.put(register, entry.getFunction().newRegister(newName, register.getType())); + } + var parameterAssignments = new ArrayList(); + for (int j = 0; j < arguments.size(); j++) { + Register register = registerMap.get(callTarget.getParameterRegisters().get(j)); + parameterAssignments.add(newLocal(register, arguments.get(j))); + } + for (Event functionEvent : callTarget.getEvents()) { + if (functionEvent instanceof Return returnEvent) { + Optional expression = returnEvent.getValue(); + checkReturnType(result, expression.orElse(null)); + expression.ifPresent(iExpr -> inlinedBody.add(newLocal(result, iExpr))); + inlinedBody.add(newGoto(exitLabel)); + } else { + Event copy = functionEvent.getCopy(); + inlinedBody.add(copy); + replacementMap.put(functionEvent, copy); + } + } + + for (Event event : inlinedBody) { + if (event instanceof EventUser user) { + user.updateReferences(replacementMap); + } + if (event instanceof Label label) { + label.setName(scope + ":" + label.getName()); + } + } + + // Substitute registers in the copied body + var substitution = new ExprTransformer() { + @Override + public Expression visit(Register register) { + return checkNotNull(registerMap.get(register)); + } + }; + for (Event event : inlinedBody) { + if (event instanceof RegReader reader) { + reader.transformExpressions(substitution); + } + if (event instanceof RegWriter writer && !(writer instanceof LlvmCmpXchg)) { + Register oldRegister = writer.getResultRegister(); + Register newRegister = registerMap.get(oldRegister); + assert newRegister != null || writer.getResultRegister() == oldRegister; + if (newRegister != null) { + writer.setResultRegister(newRegister); + } + } + if (event instanceof LlvmCmpXchg cmpXchg) { + Register oldResultRegister = cmpXchg.getStructRegister(0); + Register newResultRegister = registerMap.get(oldResultRegister); + assert newResultRegister != null; + cmpXchg.setStructRegister(0, newResultRegister); + Register oldExpectationRegister = cmpXchg.getStructRegister(1); + Register newExpectationRegister = registerMap.get(oldExpectationRegister); + assert newExpectationRegister != null; + cmpXchg.setStructRegister(1, newExpectationRegister); + } + } + + // Replace call with replacement + // this places parameterAssignments before inlinedBody + entry.insertAfter(exitLabel); + entry.insertAfter(inlinedBody); + entry.insertAfter(parameterAssignments); + } + + private static void checkReturnType(Register result, Expression expression) { + if (result == null && expression != null) { + throw new MalformedProgramException( + String.format("Return %s in function returning void.", expression)); + } + if (result != null && expression == null) { + throw new MalformedProgramException( + String.format("Missing return expression in function returning %s", result.getType())); + } + if (result != null && !result.getType().equals(expression.getType())) { + throw new MalformedProgramException( + String.format("Return expression %s of type %s in function returning %s", expression, expression.getType(), result.getType())); + } + } +} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/IntrinsicsInlining.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/IntrinsicsInlining.java new file mode 100644 index 0000000000..a4fe531fa7 --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/IntrinsicsInlining.java @@ -0,0 +1,115 @@ +package com.dat3m.dartagnan.program.processing; + +import com.dat3m.dartagnan.exception.ParsingException; +import com.dat3m.dartagnan.expression.BNonDet; +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.ExpressionFactory; +import com.dat3m.dartagnan.expression.INonDet; +import com.dat3m.dartagnan.expression.type.BooleanType; +import com.dat3m.dartagnan.expression.type.IntegerType; +import com.dat3m.dartagnan.expression.type.TypeFactory; +import com.dat3m.dartagnan.program.Program; +import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.Thread; +import com.dat3m.dartagnan.program.event.EventFactory; +import com.dat3m.dartagnan.program.event.core.Event; +import com.dat3m.dartagnan.program.event.functions.DirectFunctionCall; +import com.dat3m.dartagnan.program.event.functions.DirectValueFunctionCall; +import com.google.common.primitives.UnsignedInteger; +import com.google.common.primitives.UnsignedLong; +import org.sosy_lab.common.configuration.Configuration; +import org.sosy_lab.common.configuration.InvalidConfigurationException; + +import java.math.BigInteger; +import java.util.List; + +public class IntrinsicsInlining implements ProgramProcessor { + + private int constantId; + + private IntrinsicsInlining() { + } + + public static IntrinsicsInlining fromConfig(Configuration ignored) throws InvalidConfigurationException { + return new IntrinsicsInlining(); + } + + @Override + public void run(Program program) { + constantId = 0; + for (Thread thread : program.getThreads()) { + run(thread); + } + } + + private void run(Thread thread) { + for (DirectFunctionCall call : thread.getEvents(DirectFunctionCall.class)) { + assert !call.getCallTarget().hasBody(); + + List replacement = switch (call.getCallTarget().getName()) { + case "__VERIFIER_nondet_bool", + "__VERIFIER_nondet_int", "__VERIFIER_nondet_uint", "__VERIFIER_nondet_unsigned_int", + "__VERIFIER_nondet_short", "__VERIFIER_nondet_ushort", "__VERIFIER_nondet_unsigned_short", + "__VERIFIER_nondet_long", "__VERIFIER_nondet_ulong", + "__VERIFIER_nondet_char", "__VERIFIER_nondet_uchar" -> inlineNonDet(call); + default -> throw new UnsupportedOperationException( + String.format("Undefined function %s", call.getCallTarget().getName())); + }; + + replacement.forEach(e -> e.copyAllMetadataFrom(call)); + call.replaceBy(replacement); + } + } + + private List inlineNonDet(DirectFunctionCall call) { + TypeFactory types = TypeFactory.getInstance(); + ExpressionFactory expressions = ExpressionFactory.getInstance(); + assert call instanceof DirectValueFunctionCall; + Register register = ((DirectValueFunctionCall) call).getResultRegister(); + String name = call.getCallTarget().getName(); + final String separator = "nondet_"; + int index = name.indexOf(separator); + assert index > -1; + String suffix = name.substring(index + separator.length()); + + // Nondeterministic booleans + if (suffix.equals("bool")) { + BooleanType booleanType = types.getBooleanType(); + var nondeterministicExpression = new BNonDet(booleanType); + Expression cast = expressions.makeCast(nondeterministicExpression, register.getType()); + return List.of(EventFactory.newLocal(register, cast)); + } + + // Nondeterministic integers + boolean signed = switch (suffix) { + case "int", "short", "long", "char" -> true; + default -> false; + }; + final BigInteger min = switch (suffix) { + case "long" -> BigInteger.valueOf(Long.MIN_VALUE); + case "int" -> BigInteger.valueOf(Integer.MIN_VALUE); + case "short" -> BigInteger.valueOf(Short.MIN_VALUE); + case "char" -> BigInteger.valueOf(Byte.MIN_VALUE); + default -> BigInteger.ZERO; + }; + final BigInteger max = switch (suffix) { + case "int" -> BigInteger.valueOf(Integer.MAX_VALUE); + case "uint", "unsigned_int" -> UnsignedInteger.MAX_VALUE.bigIntegerValue(); + case "short" -> BigInteger.valueOf(Short.MAX_VALUE); + case "ushort", "unsigned_short" -> BigInteger.valueOf(65535); + case "long" -> BigInteger.valueOf(Long.MAX_VALUE); + case "ulong" -> UnsignedLong.MAX_VALUE.bigIntegerValue(); + case "char" -> BigInteger.valueOf(Byte.MAX_VALUE); + case "uchar" -> BigInteger.valueOf(255); + default -> throw new UnsupportedOperationException(String.format("%s is not supported", call)); + }; + if (!(register.getType() instanceof IntegerType type)) { + throw new ParsingException(String.format("Non-integer result register %s.", register)); + } + var expression = new INonDet(constantId++, type, signed); + expression.setMin(min); + expression.setMax(max); + call.getFunction().getProgram().addConstant(expression); + return List.of(EventFactory.newLocal(register, expression)); + } +} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/LogProgramStatistics.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/LogProgramStatistics.java index c8df419a29..25e71b8217 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/LogProgramStatistics.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/LogProgramStatistics.java @@ -39,11 +39,6 @@ public void run(Program program) { } int numNonInitThreads = (int)program.getThreads().stream().filter(t -> !(t.getEntry() instanceof Init)).count(); - if (program.getFormat() == Program.SourceLanguage.BOOGIE) { - numNonInitThreads--; // We subtract 1, because for Boogie code we always create an extra empty thread - // TODO: Why do we do this? - } - int staticAddressSpaceSize = program.getMemory().getObjects().stream() .filter(MemoryObject::isStaticallyAllocated).mapToInt(MemoryObject::size).sum(); int dynamicAddressSpaceSize = program.getMemory().getObjects().stream() diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/LoopUnrolling.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/LoopUnrolling.java index e54cd738da..1da6a6a956 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/LoopUnrolling.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/LoopUnrolling.java @@ -1,7 +1,7 @@ package com.dat3m.dartagnan.program.processing; +import com.dat3m.dartagnan.program.Function; import com.dat3m.dartagnan.program.Program; -import com.dat3m.dartagnan.program.Thread; import com.dat3m.dartagnan.program.event.EventFactory; import com.dat3m.dartagnan.program.event.EventUser; import com.dat3m.dartagnan.program.event.Tag; @@ -69,32 +69,32 @@ public void run(Program program) { } final int defaultBound = this.bound; program.getEvents().forEach(e -> e.setMetadata(new UnrollingId(e.getGlobalId()))); // Track ids before unrolling - program.getThreads().forEach(thread -> unrollLoopsInThread(thread, defaultBound)); + program.getThreads().forEach(thread -> unrollLoopsInFunction(thread, defaultBound)); program.markAsUnrolled(defaultBound); EventIdReassignment.newInstance().run(program); // Reassign ids because of newly created events logger.info("Program unrolled {} times", defaultBound); } - private void unrollLoopsInThread(Thread thread, int defaultBound){ - final Map loopBoundsMap = computeLoopBoundsMap(thread, defaultBound); - thread.getEvents().stream() + private void unrollLoopsInFunction(Function func, int defaultBound){ + final Map loopBoundsMap = computeLoopBoundsMap(func, defaultBound); + func.getEvents().stream() .filter(CondJump.class::isInstance).map(CondJump.class::cast) .filter(loopBoundsMap::containsKey) .forEach(j -> unrollLoop(j, loopBoundsMap.get(j))); } - private Map computeLoopBoundsMap(Thread thread, int defaultBound) { + private Map computeLoopBoundsMap(Function func, int defaultBound) { LoopBound curBoundAnnotation = null; final Map loopBoundsMap = new HashMap<>(); - for (Event event : thread.getEvents()) { - if (event instanceof LoopBound) { + for (Event event : func.getEvents()) { + if (event instanceof LoopBound boundAnnotation) { // Track LoopBound annotation if (curBoundAnnotation != null) { logger.warn("Found loop bound annotation that overwrites a previous, unused annotation."); } - curBoundAnnotation = (LoopBound) event; + curBoundAnnotation = boundAnnotation; } else if (event instanceof Label label) { final Optional backjump = label.getJumpSet().stream() .filter(j -> j.getGlobalId() > label.getGlobalId()).findFirst(); @@ -117,6 +117,9 @@ private void unrollLoop(CondJump loopBackJump, int bound) { Preconditions.checkArgument(bound >= 1, "Positive unrolling bound expected."); Preconditions.checkArgument(loopBegin.getGlobalId() < loopBackJump.getGlobalId(), "The jump does not belong to a loop."); + // TODO: Get rid of this precondition + Preconditions.checkArgument(loopBackJump.getThread() != null, + "Cannot unroll loop of non-thread function. This limitation will get lifted in the future."); int iterCounter = 0; while (++iterCounter <= bound) { @@ -127,6 +130,9 @@ private void unrollLoop(CondJump loopBackJump, int bound) { loopBegin.addTags(Tag.NOOPT); // This is the last iteration, so we replace the back jump by a bound event. + //TODO: In order to generalize this pass to arbitrary functions, we cannot + // insert terminating jumps (only after inlining!). We should create a terminator + // event that is replaced by terminating jumps after inlining and thread creation. final Label threadExit = (Label) loopBackJump.getThread().getExit(); final CondJump boundEvent = EventFactory.newGoto(threadExit); boundEvent.addTags(Tag.BOUND, Tag.EARLYTERMINATION, Tag.NOOPT); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/MemoryAllocation.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/MemoryAllocation.java index e0d4d47b45..8556bc2c81 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/MemoryAllocation.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/MemoryAllocation.java @@ -1,6 +1,8 @@ package com.dat3m.dartagnan.program.processing; import com.dat3m.dartagnan.exception.MalformedProgramException; +import com.dat3m.dartagnan.expression.type.FunctionType; +import com.dat3m.dartagnan.expression.type.TypeFactory; import com.dat3m.dartagnan.program.Program; import com.dat3m.dartagnan.program.Thread; import com.dat3m.dartagnan.program.event.EventFactory; @@ -78,22 +80,26 @@ public void moveAndAlignMemoryObjects(Memory memory) { private void createInitEvents(Program program) { final List threads = program.getThreads(); final boolean isLitmus = program.getFormat() == Program.SourceLanguage.LITMUS; + final TypeFactory types = TypeFactory.getInstance(); + final FunctionType initThreadType = types.getFunctionType(types.getVoidType(), List.of()); int nextThreadId = threads.get(threads.size() - 1).getId() + 1; for(MemoryObject memObj : program.getMemory().getObjects()) { // The last case "heuristically checks" if Smack generated initialization or not: - // we expect at least every 8 bytes to be initialized. + // if any field is statically initialized, then likely everything is initialized. final boolean isStaticallyInitialized = !isLitmus && memObj.isStaticallyAllocated() - && (memObj.getStaticallyInitializedFields().size() >= memObj.size() / 8); + && memObj.getStaticallyInitializedFields().size() > 1; final Iterable fieldsToInit = isStaticallyInitialized ? memObj.getStaticallyInitializedFields() : IntStream.range(0, memObj.size()).boxed()::iterator; for(int i : fieldsToInit) { final Event init = EventFactory.newInit(memObj, i); - final Thread thread = new Thread(nextThreadId++, init); + // NOTE: We use different names to avoid symmetry detection treating all inits as symmetric. + final Thread thread = new Thread("Init_" + nextThreadId, initThreadType, List.of(), nextThreadId, init); + nextThreadId++; - program.add(thread); + program.addThread(thread); thread.setProgram(program); thread.getEntry().insertAfter(EventFactory.newLabel("END_OF_T" + thread.getId())); } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/ProcessingManager.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/ProcessingManager.java index fb659da15d..fe83d99c2f 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/ProcessingManager.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/ProcessingManager.java @@ -76,6 +76,9 @@ private ProcessingManager(Configuration config) throws InvalidConfigurationExcep programProcessors.addAll(Arrays.asList( printBeforeProcessing ? DebugPrint.withHeader("Before processing") : null, + StaticMemoryInitializer.newInstance(), + Inlining.fromConfig(config), + ThreadCreation.fromConfig(config), UnreachableCodeElimination.fromConfig(config), ComplexBlockSplitting.newInstance(), BranchReordering.fromConfig(config), @@ -87,6 +90,7 @@ private ProcessingManager(Configuration config) throws InvalidConfigurationExcep SimpleSpinLoopDetection.fromConfig(config), LoopUnrolling.fromConfig(config), printAfterUnrolling ? DebugPrint.withHeader("After loop unrolling") : null, + IntrinsicsInlining.fromConfig(config), dynamicPureLoopCutting ? DynamicPureLoopCutting.fromConfig(config) : null, constantPropagation ? SparseConditionalConstantPropagation.fromConfig(config) : null, dce ? DeadAssignmentElimination.fromConfig(config) : null, diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/SimpleSpinLoopDetection.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/SimpleSpinLoopDetection.java index 5320c6ac50..02adeb764f 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/SimpleSpinLoopDetection.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/SimpleSpinLoopDetection.java @@ -21,7 +21,7 @@ import java.util.stream.Collectors; /* - This pass finds and marks simple loops that are totally side effect free (simple spin loops). + This pass finds and marks simple loops that are totally side-effect-free (simple spin loops). It will also mark side-effect-full loops if they are annotated by a SpinStart event (we assume the user guarantees the correctness of the annotation) @@ -30,6 +30,9 @@ The pass is unable to detect complex types of loops that may spin endlessly (i.e TODO: Instead of tagging labels as spinning and checking for that tag during loop unrolling we could let this pass produce LoopBound-Annotations to guide the unrolling implicitly. + + TODO 2: Intrinsic calls need to get special treatment as they might be side-effect-full + (for now, all our intrinsics are side-effect-free, so it works fine). */ public class SimpleSpinLoopDetection implements ProgramProcessor { diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/Simplifier.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/Simplifier.java index b9a16c5f36..244ae73c10 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/Simplifier.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/Simplifier.java @@ -2,14 +2,15 @@ import com.dat3m.dartagnan.expression.BConst; import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.program.Function; import com.dat3m.dartagnan.program.Program; import com.dat3m.dartagnan.program.Thread; import com.dat3m.dartagnan.program.event.Tag; import com.dat3m.dartagnan.program.event.core.CondJump; import com.dat3m.dartagnan.program.event.core.Event; import com.dat3m.dartagnan.program.event.core.Label; -import com.dat3m.dartagnan.program.event.core.annotations.FunCall; -import com.dat3m.dartagnan.program.event.core.annotations.FunRet; +import com.dat3m.dartagnan.program.event.core.annotations.FunCallMarker; +import com.dat3m.dartagnan.program.event.core.annotations.FunReturnMarker; import com.google.common.base.Preconditions; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -18,7 +19,7 @@ public class Simplifier implements ProgramProcessor { - private static final Logger logger = LogManager.getLogger(Simplifier.class); + private static final Logger logger = LogManager.getLogger(Simplifier.class); private Simplifier() { } @@ -41,8 +42,8 @@ public void run(Program program) { logger.info("post-simplification: " + program.getEvents().size() + " events"); } - private void simplify(Thread t) { - Event cur = t.getEntry(); + private void simplify(Function func) { + Event cur = func.getEntry(); Event next; while ((next = cur.getSuccessor()) != null) { // Some simplifications are only applicable after others. @@ -63,7 +64,7 @@ private boolean simplifyEvent(Event next) { changed = simplifyJump(jump); } else if (next instanceof Label label) { changed = simplifyLabel(label); - } else if (next instanceof FunCall fc) { + } else if (next instanceof FunCallMarker fc) { changed = simplifyFunCall(fc); } return changed; @@ -80,19 +81,19 @@ private boolean simplifyJump(CondJump jump) { } private boolean simplifyLabel(Label label) { - if (label.getJumpSet().isEmpty() && label != label.getThread().getExit()) { + if (label.getJumpSet().isEmpty() && label != label.getFunction().getExit()) { return label.tryDelete(); } return false; } - private boolean simplifyFunCall(FunCall call) { + private boolean simplifyFunCall(FunCallMarker call) { // If simplifyEvent returns false, the function is either non-empty or we reached the return statement while (simplifyEvent(call.getSuccessor())) { } // Check if we reached the return statement final Event successor = call.getSuccessor(); - if(successor instanceof FunRet fr && fr.getFunctionName().equals(call.getFunctionName())) { + if(successor instanceof FunReturnMarker funRet && funRet.getFunctionName().equals(call.getFunctionName())) { call.tryDelete(); successor.tryDelete(); return true; diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/SparseConditionalConstantPropagation.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/SparseConditionalConstantPropagation.java index e2fb018f07..29eede3400 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/SparseConditionalConstantPropagation.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/SparseConditionalConstantPropagation.java @@ -2,17 +2,19 @@ import com.dat3m.dartagnan.expression.*; import com.dat3m.dartagnan.expression.processing.ExprTransformer; -import com.dat3m.dartagnan.expression.type.IntegerType; import com.dat3m.dartagnan.program.Program; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.Thread; import com.dat3m.dartagnan.program.event.Tag; -import com.dat3m.dartagnan.program.event.core.*; +import com.dat3m.dartagnan.program.event.core.CondJump; +import com.dat3m.dartagnan.program.event.core.Event; +import com.dat3m.dartagnan.program.event.core.Label; +import com.dat3m.dartagnan.program.event.core.Local; +import com.dat3m.dartagnan.program.event.core.utils.RegReader; import com.dat3m.dartagnan.program.event.core.utils.RegWriter; -import com.dat3m.dartagnan.program.event.lang.std.Malloc; -import com.dat3m.dartagnan.program.event.visitors.EventVisitor; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; +import com.google.common.base.Verify; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.sosy_lab.common.configuration.Configuration; @@ -20,7 +22,6 @@ import org.sosy_lab.common.configuration.Option; import org.sosy_lab.common.configuration.Options; -import java.math.BigInteger; import java.util.HashMap; import java.util.HashSet; import java.util.Map; @@ -69,7 +70,6 @@ public void run(Program program) { } private void run(Thread thread) { - final EventSimplifier simplifier = new EventSimplifier(); final Predicate checkDoPropagate = propagateCopyAssignments ? (expr -> expr instanceof IConst || expr instanceof BConst || expr instanceof Register) : (expr -> expr instanceof IConst || expr instanceof BConst); @@ -83,8 +83,8 @@ private void run(Thread thread) { Map propagationMap = new HashMap<>(); boolean isTraversingDeadBranch = false; + final ConstantPropagator propagator = new ConstantPropagator(); for (Event cur : thread.getEvents()) { - if (cur instanceof Label && inflowMap.containsKey(cur)) { // Merge inflow and mark the branch as alive (since it has inflow) propagationMap = isTraversingDeadBranch ? inflowMap.get(cur) : join(propagationMap, inflowMap.get(cur)); @@ -92,9 +92,10 @@ private void run(Thread thread) { } if (!isTraversingDeadBranch) { - simplifier.setPropagationMap(propagationMap); - // We only simplify non-dead code - cur.accept(simplifier); + propagator.propagationMap = propagationMap; + if (cur instanceof RegReader regReader) { + regReader.transformExpressions(propagator); + } reachableEvents.add(cur); if (cur instanceof Local local) { @@ -156,52 +157,6 @@ private Map join(Map x, Map { - - private final ConstantPropagator propagator = new ConstantPropagator(); - - public void setPropagationMap(Map propagationMap) { - this.propagator.propagationMap = propagationMap; - } - - @Override - public Void visitEvent(Event e) { - return null; - } - - @Override - public Void visitCondJump(CondJump e) { - e.setGuard(e.getGuard().visit(propagator)); - return null; - } - - @Override - public Void visitLocal(Local e) { - e.setExpr(e.getExpr().visit(propagator)); - return null; - } - - @Override - public Void visitMemCoreEvent(MemoryCoreEvent e) { - e.setAddress(e.getAddress().visit(propagator)); - return null; - } - - @Override - public Void visitStore(Store e) { - e.setMemValue(e.getMemValue().visit(propagator)); - return visitMemCoreEvent(e); - } - - @Override - public Void visitMalloc(Malloc e) { - e.setSizeExpr(e.getSizeExpr().visit(propagator)); - return null; - } - } /* * A simple expression transformer that @@ -214,33 +169,17 @@ public Void visitMalloc(Malloc e) { */ private static class ConstantPropagator extends ExprTransformer { - private Map propagationMap = new HashMap<>(); + private Map propagationMap; @Override public Expression visit(Register reg) { - final Expression retVal = propagationMap.getOrDefault(reg, reg); - if (retVal instanceof BConst) { - // We only have integral registers, so we need to implicitly convert booleans to - // integers. - BigInteger value = retVal.equals(BConst.TRUE) ? BigInteger.ONE : BigInteger.ZERO; - return expressions.makeValue(value, reg.getType()); - } else { - return retVal; - } + return propagationMap.getOrDefault(reg, reg); } @Override public Expression visit(Atom atom) { - Expression lhs = atom.getLHS().visit(this); - Expression rhs = atom.getRHS().visit(this); - if (lhs instanceof BConst constant) { - IntegerType type = rhs instanceof IExpr ? ((IExpr) rhs).getType() : types.getIntegerType(1); - lhs = constant.isTrue() ? expressions.makeOne(type) : expressions.makeZero(type); - } - if (rhs instanceof BConst constant) { - IntegerType type = lhs instanceof IExpr ? ((IExpr) lhs).getType() : types.getIntegerType(1); - rhs = constant.isTrue() ? expressions.makeOne(type) : expressions.makeZero(type); - } + Expression lhs = transform(atom.getLHS()); + Expression rhs = transform(atom.getRHS()); if (lhs instanceof IValue left && rhs instanceof IValue right) { return expressions.makeValue(atom.getOp().combine(left.getValue(), right.getValue())); } else { @@ -249,9 +188,9 @@ public Expression visit(Atom atom) { } @Override - public BExpr visit(BExprBin bBin) { - Expression lhs = bBin.getLHS().visit(this); - Expression rhs = bBin.getRHS().visit(this); + public Expression visit(BExprBin bBin) { + Expression lhs = transform(bBin.getLHS()); + Expression rhs = transform(bBin.getRHS()); if (lhs instanceof BConst left && rhs instanceof BConst right) { return expressions.makeValue(bBin.getOp().combine(left.getValue(), right.getValue())); } else { @@ -260,8 +199,8 @@ public BExpr visit(BExprBin bBin) { } @Override - public BExpr visit(BExprUn bUn) { - Expression inner = bUn.getInner().visit(this); + public Expression visit(BExprUn bUn) { + Expression inner = transform(bUn.getInner()); if (inner instanceof BConst bc) { return expressions.makeValue(bUn.getOp().combine(bc.getValue())); } else { @@ -270,9 +209,9 @@ public BExpr visit(BExprUn bUn) { } @Override - public IExpr visit(IExprBin iBin) { - IExpr lhs = (IExpr) iBin.getLHS().visit(this); - IExpr rhs = (IExpr) iBin.getRHS().visit(this); + public Expression visit(IExprBin iBin) { + Expression lhs = transform(iBin.getLHS()); + Expression rhs = transform(iBin.getRHS()); if (lhs instanceof IValue left && rhs instanceof IValue right) { return expressions.makeValue(iBin.getOp().combine(left.getValue(), right.getValue()), left.getType()); } else { @@ -281,27 +220,35 @@ public IExpr visit(IExprBin iBin) { } @Override - public IExpr visit(IExprUn iUn) { - IExpr inner = (IExpr) iUn.getInner().visit(this); + public Expression visit(IExprUn iUn) { + Expression inner = transform(iUn.getInner()); + Expression result = expressions.makeUnary(iUn.getOp(), inner, iUn.getType()); if (inner instanceof IValue) { - return expressions.makeUnary(iUn.getOp(), inner, iUn.getType()).reduce(); + return result.reduce(); } - return expressions.makeUnary(iUn.getOp(), inner, iUn.getType()); + return result; } @Override public Expression visit(IfExpr ifExpr) { - Expression guard = ifExpr.getGuard().visit(this); - Expression trueBranch = ifExpr.getTrueBranch().visit(this); - Expression falseBranch = ifExpr.getFalseBranch().visit(this); - if (guard instanceof BConst constant && trueBranch instanceof IValue && falseBranch instanceof IValue) { - // We optimize ITEs only if all subexpressions are constant to avoid messing up - // data dependencies - return constant.getValue() ? trueBranch : falseBranch; + Expression guard = transform(ifExpr.getGuard()); + Expression trueBranch = transform(ifExpr.getTrueBranch()); + Expression falseBranch = transform(ifExpr.getFalseBranch()); + // We optimize ITEs only if all subexpressions are constant to avoid messing up data dependencies + if (guard instanceof BConst constant && constant.getValue() && falseBranch.getRegs().isEmpty()) { + return trueBranch; + } + if (guard instanceof BConst constant && !constant.getValue() && trueBranch.getRegs().isEmpty()) { + return falseBranch; } return expressions.makeConditional(guard, trueBranch, falseBranch); } + private Expression transform(Expression expression) { + Expression result = expression.visit(this); + Verify.verify(result.getType().equals(expression.getType()), "Type mismatch in constant propagation."); + return result; + } } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/StaticMemoryInitializer.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/StaticMemoryInitializer.java new file mode 100644 index 0000000000..d999e5c032 --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/StaticMemoryInitializer.java @@ -0,0 +1,50 @@ +package com.dat3m.dartagnan.program.processing; + +import com.dat3m.dartagnan.exception.MalformedProgramException; +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.IExprBin; +import com.dat3m.dartagnan.program.Function; +import com.dat3m.dartagnan.program.Program; +import com.dat3m.dartagnan.program.event.core.Store; +import com.dat3m.dartagnan.program.memory.MemoryObject; + +public class StaticMemoryInitializer implements ProgramProcessor { + + private StaticMemoryInitializer() { + } + + public static StaticMemoryInitializer newInstance() { return new StaticMemoryInitializer(); } + + @Override + public void run(Program program) { + if (program.getFormat() == Program.SourceLanguage.BOOGIE) { + program.getFunctions().stream() + .filter(f -> f.getName().equals("__SMACK_static_init")) + .findFirst().ifPresent(this::initMemory); + } + } + + + private void initMemory(Function initFunc) { + for (Store store : initFunc.getEvents(Store.class)) { + final Expression address = store.getAddress(); + final Expression value = store.getMemValue(); + + Expression rootAddress = address; + int offset = 0; + while (rootAddress instanceof IExprBin expr) { + offset += expr.getRHS().reduce().getValueAsInt(); + rootAddress = expr.getLHS(); + } + if (rootAddress instanceof MemoryObject memObj) { + memObj.appendInitialValue(offset, value.reduce()); + } else { + final String error = "Initialization error: cannot handle " + store; + throw new MalformedProgramException(error); + } + } + + + + } +} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/ThreadCreation.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/ThreadCreation.java new file mode 100644 index 0000000000..c203ce5efc --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/ThreadCreation.java @@ -0,0 +1,375 @@ +package com.dat3m.dartagnan.program.processing; + +import com.dat3m.dartagnan.configuration.Arch; +import com.dat3m.dartagnan.exception.MalformedProgramException; +import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.ExpressionFactory; +import com.dat3m.dartagnan.expression.IExprUn; +import com.dat3m.dartagnan.expression.op.IOpUn; +import com.dat3m.dartagnan.expression.processing.ExprTransformer; +import com.dat3m.dartagnan.expression.processing.ExpressionVisitor; +import com.dat3m.dartagnan.expression.type.IntegerType; +import com.dat3m.dartagnan.expression.type.TypeFactory; +import com.dat3m.dartagnan.program.Function; +import com.dat3m.dartagnan.program.Program; +import com.dat3m.dartagnan.program.Register; +import com.dat3m.dartagnan.program.Thread; +import com.dat3m.dartagnan.program.event.EventFactory; +import com.dat3m.dartagnan.program.event.EventUser; +import com.dat3m.dartagnan.program.event.Tag; +import com.dat3m.dartagnan.program.event.core.Event; +import com.dat3m.dartagnan.program.event.core.Label; +import com.dat3m.dartagnan.program.event.core.Load; +import com.dat3m.dartagnan.program.event.core.Local; +import com.dat3m.dartagnan.program.event.core.threading.ThreadCreate; +import com.dat3m.dartagnan.program.event.core.utils.RegReader; +import com.dat3m.dartagnan.program.event.core.utils.RegWriter; +import com.dat3m.dartagnan.program.event.functions.AbortIf; +import com.dat3m.dartagnan.program.event.functions.DirectFunctionCall; +import com.dat3m.dartagnan.program.event.functions.DirectValueFunctionCall; +import com.dat3m.dartagnan.program.event.functions.Return; +import com.dat3m.dartagnan.program.event.lang.llvm.LlvmCmpXchg; +import com.dat3m.dartagnan.program.event.metadata.OriginalId; +import com.dat3m.dartagnan.program.memory.Memory; +import com.dat3m.dartagnan.program.memory.MemoryObject; +import com.google.common.base.Preconditions; +import com.google.common.collect.Lists; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.sosy_lab.common.configuration.Configuration; +import org.sosy_lab.common.configuration.InvalidConfigurationException; +import org.sosy_lab.common.configuration.Option; +import org.sosy_lab.common.configuration.Options; + +import java.math.BigInteger; +import java.util.*; +import java.util.stream.Stream; + +import static com.dat3m.dartagnan.configuration.OptionNames.TARGET; +import static com.dat3m.dartagnan.configuration.OptionNames.THREAD_CREATE_ALWAYS_SUCCEEDS; +import static com.dat3m.dartagnan.program.event.EventFactory.*; + +/* + * This pass handles (reachable) pthread-related function calls. + * - each pthread_create call spawns a new Thread object. + * - pthread_join calls are lowered to appropriate synchronization primitives. + * - get_my_tid calls are replaced by constant tid values. + * Initially, a single thread from the "main" function is spawned. + * Then the pass works iteratively by picking a (newly created) thread and handling all its pthread calls. + * + * TODO: + * (1) Make sure that non-deterministic expressions are recreated properly (avoid wrong sharing) + * (2) Make this pass able to run after compilation. + * (3) Make sure that metadata is copied correctly. + */ +@Options +public class ThreadCreation implements ProgramProcessor { + + private static final Logger logger = LogManager.getLogger(ThreadCreation.class); + + @Option(name = TARGET, + description = "The target architecture to which the program shall be compiled to.", + secure = true, + toUppercase = true) + private Arch compilationTarget = Arch.C11; + + @Option(name = THREAD_CREATE_ALWAYS_SUCCEEDS, + description = "Calling pthread_create is guaranteed to succeed.", + secure = true, + toUppercase = true) + private boolean forceStart = false; + + private ThreadCreation() {} + + public static ThreadCreation fromConfig(Configuration config) throws InvalidConfigurationException { + ThreadCreation creation = new ThreadCreation(); + config.inject(creation); + return creation; + } + + @Override + public void run(Program program) { + if (program.getFormat().equals(Program.SourceLanguage.LITMUS)) { + return; + } + + final TypeFactory types = TypeFactory.getInstance(); + final ExpressionFactory expressions = ExpressionFactory.getInstance(); + final IntegerType archType = types.getArchType(); + + final Optional main = program.getFunctions().stream().filter(f -> f.getName().equals("main")).findFirst(); + if (main.isEmpty()) { + throw new MalformedProgramException("Program contains no main function"); + } + + final int maxId = Stream.concat(program.getThreads().stream(), program.getFunctions().stream()) + .mapToInt(Function::getId) + .max().orElse(0); + int nextTid = maxId + 1; + + final Queue workingQueue = new ArrayDeque<>(); + workingQueue.add(createThreadFromFunction(main.get(), nextTid++, null, null)); + + while (!workingQueue.isEmpty()) { + final Thread thread = workingQueue.remove(); + program.addThread(thread); + + final Map tid2ComAddrMap = new HashMap<>(); + for (DirectFunctionCall call : thread.getEvents(DirectFunctionCall.class)) { + final List arguments = call.getArguments(); + switch (call.getCallTarget().getName()) { + case "pthread_create" -> { + assert arguments.size() == 4; + final Expression pidResultAddress = arguments.get(0); + //final Expression attributes = arguments.get(1); + final Function targetFunction = (Function)arguments.get(2); + final Expression argument = arguments.get(3); + + final Register resultRegister = getResultRegister(call); + assert resultRegister.getType() instanceof IntegerType; + + final MemoryObject comAddress = program.getMemory().allocate(1, true); + final ThreadCreate createEvent = newThreadCreate(List.of(argument)); + comAddress.setCVar("__com" + nextTid + "__" + targetFunction.getName()); + + final List replacement = List.of( + createEvent, + newReleaseStore(comAddress, expressions.makeTrue()), + // TODO: Allow to return failure value (!= 0) + newLocal(resultRegister, expressions.makeZero((IntegerType) resultRegister.getType())) + ); + replacement.forEach(e -> e.copyAllMetadataFrom(call)); + call.replaceBy(replacement); + + final Thread spawnedThread = createThreadFromFunction(targetFunction, nextTid, createEvent, comAddress); + createEvent.setSpawnedThread(spawnedThread); + workingQueue.add(spawnedThread); + + final Expression tidExpr = expressions.makeValue(BigInteger.valueOf(nextTid), archType); + tid2ComAddrMap.put(tidExpr, comAddress); + propagateThreadIds(tidExpr, pidResultAddress, createEvent); + + nextTid++; + } + case "pthread_join", "__pthread_join" -> { + assert arguments.size() == 2; + final Expression tidExpr = arguments.get(0); + // final Expression returnAddr = arguments.get(1); + + final Register resultRegister = getResultRegister(call); + assert resultRegister.getType() instanceof IntegerType; + final Expression comAddrOfThreadToJoinWith = tid2ComAddrMap.get(tidExpr); + if (comAddrOfThreadToJoinWith == null) { + throw new UnsupportedOperationException( + "Cannot handle pthread_join with dynamic thread parameter."); + } + final int tid = tidExpr.reduce().getValueAsInt(); + final Register joinDummyReg = thread.getOrNewRegister("__joinT" + tid, types.getBooleanType()); + final List replacement = List.of( + newAcquireLoad(joinDummyReg, comAddrOfThreadToJoinWith), + newJump(joinDummyReg, (Label)thread.getExit()), + // Note: In our modelling, pthread_join always succeeds if it returns + newLocal(resultRegister, expressions.makeZero((IntegerType) resultRegister.getType())) + ); + replacement.forEach(e -> e.copyAllMetadataFrom(call)); + call.replaceBy(replacement); + } + case "get_my_tid" -> { + final Register resultRegister = getResultRegister(call); + assert resultRegister.getType() instanceof IntegerType; + assert arguments.size() == 0; + final Expression tidExpr = expressions.makeValue(BigInteger.valueOf(thread.getId()), + (IntegerType) resultRegister.getType()); + final Local tidAssignment = newLocal(resultRegister, tidExpr); + tidAssignment.copyAllMetadataFrom(call); + call.replaceBy(tidAssignment); + } + } + } + } + + EventIdReassignment.newInstance().run(program); + program.getEvents().forEach(e -> e.setMetadata(new OriginalId(e.getGlobalId()))); + logger.info("Number of threads (including main): " + program.getThreads().size()); + } + + + // Helper code to do constant propagation of generated tid's to pthread_join calls + //TODO: Ideally, this kind of propagation shouldn't be done here. + // Also, it is currently unsound if the code is not in SSA, for example, after unrolling. + private static void propagateThreadIds(Expression tidExpr, Expression tidResultAddress, ThreadCreate createEvent) { + Set tidValues = new HashSet<>(); + Set tidPtrs = new HashSet<>(); + tidPtrs.add(tidResultAddress); + + // Backpropagation of pointers: + // "p1 <- pExpr; pthread_create(pExpr, ...)" => p1 also points to an address holding a tid + for (Event pred : createEvent.getPredecessors()) { + if (pred instanceof Local local && tidPtrs.contains(local.getResultRegister())) { + tidPtrs.add(local.getExpr()); + } + } + // Forward propagation + // (1) p1 <- pExpr => p1 points to tid if pExpr does + // (2) r1 <- expr => r1 holds tid if expr does + // (3) r <- load(pExpr) => r holds tid if pExpr points to tid + for (Event succ : createEvent.getSuccessors()) { + if (succ instanceof Load load && tidPtrs.contains(load.getAddress())) { + // Do tid propagation over loads + tidValues.add(load.getResultRegister()); + } + if (succ instanceof Local local) { + Expression rhs = local.getExpr(); + while (rhs instanceof IExprUn unExpr && unExpr.getOp() == IOpUn.CAST_UNSIGNED) { + // Try to skip cast expressions + rhs = unExpr.getInner(); + } + if (tidPtrs.contains(rhs)) { + tidPtrs.add(local.getResultRegister()); + } else if (tidValues.contains(rhs)) { + tidValues.add(local.getResultRegister()); + } + } + + // Here we actually change pthread_join's first argument to directly hold the target tid + if (succ instanceof DirectFunctionCall call && call.getCallTarget().getName().contains("pthread_join")) { + if (tidValues.contains(call.getArguments().get(0))) { + // TODO: Direct access to call's argument list is fishy. + // Calls should have a setArgument function instead. + call.getArguments().set(0, tidExpr); + } + } + } + } + + private Thread createThreadFromFunction(Function function, int tid, ThreadCreate creator, Expression comAddr) { + final ExpressionFactory expressions = ExpressionFactory.getInstance(); + final TypeFactory types = TypeFactory.getInstance(); + + // ------------------- Create new thread ------------------- + final Thread thread = new Thread(function.getName(), function.getFunctionType(), + Lists.transform(function.getParameterRegisters(), Register::getName), tid, EventFactory.newSkip()); + + // ------------------- Copy registers from target function into new thread ------------------- + final Map registerReplacement = new HashMap<>(); + for (Register reg : function.getRegisters()) { + registerReplacement.put(reg, thread.getOrNewRegister(reg.getName(), reg.getType())); + } + final ExpressionVisitor regSubstituter = new ExprTransformer() { + @Override + public Expression visit(Register reg) { + return Preconditions.checkNotNull(registerReplacement.get(reg)); + } + }; + + // ------------------- Copy, update, and append the function body to the thread ------------------- + final List body = new ArrayList<>(); + final Map copyMap = new HashMap<>(); + function.getEvents().forEach(e -> body.add(copyMap.computeIfAbsent(e, Event::getCopy))); + for (Event copy : body) { + if (copy instanceof EventUser user) { + user.updateReferences(copyMap); + } + if (copy instanceof RegReader reader) { + reader.transformExpressions(regSubstituter); + } + if (copy instanceof LlvmCmpXchg xchg) { + xchg.setStructRegister(0, registerReplacement.get(xchg.getStructRegister(0))); + xchg.setStructRegister(1, registerReplacement.get(xchg.getStructRegister(1))); + } else if (copy instanceof RegWriter regWriter) { + regWriter.setResultRegister(registerReplacement.get(regWriter.getResultRegister())); + } + } + thread.getEntry().insertAfter(body); + + // ------------------- Add end & return label ------------------- + final Label threadReturnLabel = EventFactory.newLabel("RETURN_OF_T" + tid); + final Label threadEnd = EventFactory.newLabel("END_OF_T" + tid); + thread.append(threadReturnLabel); + thread.append(threadEnd); + + // ------------------- Replace AbortIf and Return ------------------- + final Register returnRegister = function.hasReturnValue() ? + thread.newRegister("__retval", function.getFunctionType().getReturnType()) : null; + for (Event e : thread.getEvents()) { + if (e instanceof AbortIf abort) { + final Event jumpToEnd = EventFactory.newJump(abort.getCondition(), threadEnd); + jumpToEnd.addTags(abort.getTags()); + abort.replaceBy(jumpToEnd); + } else if (e instanceof Return ret) { + ret.insertAfter(EventFactory.newGoto(threadReturnLabel)); + if (returnRegister != null) { + ret.insertAfter(EventFactory.newLocal(returnRegister, ret.getValue().get())); + } + if (!ret.tryDelete()) { + throw new MalformedProgramException("Unable to delete " + ret); + } + } + } + + // ------------------- Add Start, End, and Argument events if this thread was spawned ------------------- + if (creator != null) { + // Arguments + final List params = thread.getParameterRegisters(); + for (int i = 0; i < params.size(); i++) { + thread.getEntry().insertAfter(newThreadArgument(params.get(i), creator, i)); + } + + // Start + final Register startSignal = thread.newRegister("__startT" + tid, types.getBooleanType()); + final Register creatorExecStatus = thread.newRegister(types.getBooleanType()); + thread.getEntry().insertAfter(eventSequence( + newAcquireLoad(startSignal, comAddr), + forceStart ? newExecutionStatus(creatorExecStatus, creator) : null, + forceStart ? newAssume(expressions.makeOr(startSignal, creatorExecStatus)) : null, + newJumpUnless(startSignal, threadEnd) + )); + + // End + threadReturnLabel.insertAfter(newReleaseStore(comAddr, expressions.makeFalse())); + } + + // ------------------- Create thread-local variables ------------------- + final Memory memory = function.getProgram().getMemory(); + final Map global2ThreadLocal = new HashMap<>(); + final ExprTransformer transformer = new ExprTransformer() { + @Override + public Expression visit(MemoryObject memObj) { + if (memObj.isThreadLocal() && !global2ThreadLocal.containsKey(memObj)) { + final MemoryObject threadLocalCopy = memory.allocate(memObj.size(), true); + final String varName = String.format("%s@T%s", memObj.getCVar(), thread.getId()); + threadLocalCopy.setCVar(varName); + for (int i = 0; i < memObj.size(); i++) { + threadLocalCopy.setInitialValue(i, memObj.getInitialValue(i)); + } + global2ThreadLocal.put(memObj, threadLocalCopy); + } + return global2ThreadLocal.getOrDefault(memObj, memObj); + } + }; + + thread.getEvents(RegReader.class).forEach(reader -> reader.transformExpressions(transformer)); + // TODO: After creating all thread-local copies, we might want to delete the original variable? + + return thread; + } + + private Register getResultRegister(DirectFunctionCall call) { + assert call instanceof DirectValueFunctionCall; + return ((DirectValueFunctionCall) call).getResultRegister(); + } + + private Event newReleaseStore(Expression address, Expression storeValue) { + return compilationTarget == Arch.LKMM ? + EventFactory.Linux.newLKMMStore(address, storeValue, Tag.Linux.MO_RELEASE) : + EventFactory.Atomic.newStore(address, storeValue, Tag.C11.MO_RELEASE); + } + + private Event newAcquireLoad(Register resultRegister, Expression address) { + return compilationTarget == Arch.LKMM ? + EventFactory.Linux.newLKMMLoad(resultRegister, address, Tag.Linux.MO_ACQUIRE) : + EventFactory.Atomic.newLoad(resultRegister, address, Tag.C11.MO_ACQUIRE); + } + + +} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorArm8.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorArm8.java index 9df38c656f..e3a63af36c 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorArm8.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorArm8.java @@ -1,8 +1,9 @@ package com.dat3m.dartagnan.program.processing.compilation; import com.dat3m.dartagnan.expression.Expression; -import com.dat3m.dartagnan.expression.op.IOpBin; +import com.dat3m.dartagnan.expression.type.BooleanType; import com.dat3m.dartagnan.expression.type.IntegerType; +import com.dat3m.dartagnan.expression.type.Type; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.Tag; import com.dat3m.dartagnan.program.event.Tag.ARMv8; @@ -13,11 +14,14 @@ import com.dat3m.dartagnan.program.event.lang.catomic.*; import com.dat3m.dartagnan.program.event.lang.linux.*; import com.dat3m.dartagnan.program.event.lang.llvm.*; -import com.dat3m.dartagnan.program.event.lang.pthread.*; +import com.dat3m.dartagnan.program.event.lang.pthread.InitLock; +import com.dat3m.dartagnan.program.event.lang.pthread.Lock; +import com.dat3m.dartagnan.program.event.lang.pthread.Unlock; import java.util.List; import static com.dat3m.dartagnan.program.event.EventFactory.*; +import static com.google.common.base.Verify.verify; class VisitorArm8 extends VisitorBase { @@ -45,51 +49,6 @@ public List visitStoreExclusive(StoreExclusive e) { // ========================================= PTHREAD =========================================== // ============================================================================================= - @Override - public List visitCreate(Create e) { - Store store = newStoreWithMo(e.getAddress(), e.getMemValue(), Tag.ARMv8.MO_REL); - store.addTags(C11.PTHREAD); - - return eventSequence( - store - ); - } - - @Override - public List visitEnd(End e) { - Expression zero = expressions.makeZero(types.getArchType()); - return eventSequence( - newStoreWithMo(e.getAddress(), zero, Tag.ARMv8.MO_REL) - ); - } - - @Override - public List visitJoin(Join e) { - Register resultRegister = e.getResultRegister(); - Expression zero = expressions.makeZero(resultRegister.getType()); - Load load = newLoadWithMo(resultRegister, e.getAddress(), Tag.ARMv8.MO_ACQ); - load.addTags(C11.PTHREAD); - - return eventSequence( - load, - newJump(expressions.makeNEQ(resultRegister, zero), (Label) e.getThread().getExit()) - ); - } - - @Override - public List visitStart(Start e) { - Register resultRegister = e.getResultRegister(); - Expression one = expressions.makeOne(resultRegister.getType()); - Load load = newLoadWithMo(resultRegister, e.getAddress(), Tag.ARMv8.MO_ACQ); - load.addTags(Tag.STARTLOAD); - - return eventSequence( - load, - super.visitStart(e), - newJump(expressions.makeNEQ(resultRegister, one), (Label) e.getThread().getExit()) - ); - } - @Override public List visitInitLock(InitLock e) { return eventSequence( @@ -102,7 +61,7 @@ public List visitLock(Lock e) { IntegerType type = types.getArchType(); Expression zero = expressions.makeZero(type); Expression one = expressions.makeOne(type); - Register dummy = e.getThread().newRegister(type); + Register dummy = e.getFunction().newRegister(type); // We implement locks as spinlocks which are guaranteed to succeed, i.e. we can use // assumes. With this we miss a ctrl dependency, but this does not matter // because the load is an acquire one. @@ -145,12 +104,11 @@ public List visitLlvmStore(LlvmStore e) { @Override public List visitLlvmXchg(LlvmXchg e) { Register resultRegister = e.getResultRegister(); - Expression value = e.getMemValue(); Expression address = e.getAddress(); String mo = e.getMo(); Load load = newRMWLoadExclusiveWithMo(resultRegister, address, ARMv8.extractLoadMoFromCMo(mo)); - Store store = newRMWStoreExclusiveWithMo(address, value, true, ARMv8.extractStoreMoFromCMo(mo)); + Store store = newRMWStoreExclusiveWithMo(address, e.getValue(), true, ARMv8.extractStoreMoFromCMo(mo)); Label label = newLabel("FakeDep"); Event fakeCtrlDep = newFakeCtrlDep(resultRegister, label); @@ -165,13 +123,11 @@ public List visitLlvmXchg(LlvmXchg e) { @Override public List visitLlvmRMW(LlvmRMW e) { Register resultRegister = e.getResultRegister(); - IOpBin op = e.getOp(); - Expression value = e.getMemValue(); Expression address = e.getAddress(); String mo = e.getMo(); - Register dummyReg = e.getThread().newRegister(resultRegister.getType()); - Local localOp = newLocal(dummyReg, expressions.makeBinary(resultRegister, op, value)); + Register dummyReg = e.getFunction().newRegister(resultRegister.getType()); + Local localOp = newLocal(dummyReg, expressions.makeBinary(resultRegister, e.getOperator(), e.getOperand())); Load load = newRMWLoadExclusiveWithMo(resultRegister, address, ARMv8.extractLoadMoFromCMo(mo)); Store store = newRMWStoreExclusiveWithMo(address, dummyReg, true, ARMv8.extractStoreMoFromCMo(mo)); @@ -191,19 +147,18 @@ public List visitLlvmRMW(LlvmRMW e) { public List visitLlvmCmpXchg(LlvmCmpXchg e) { Register oldValueRegister = e.getStructRegister(0); Register resultRegister = e.getStructRegister(1); - Expression one = expressions.makeOne(resultRegister.getType()); + verify(resultRegister.getType() instanceof BooleanType); - Expression value = e.getMemValue(); Expression address = e.getAddress(); String mo = e.getMo(); Expression expectedValue = e.getExpectedValue(); Local casCmpResult = newLocal(resultRegister, expressions.makeEQ(oldValueRegister, expectedValue)); Label casEnd = newLabel("CAS_end"); - CondJump branchOnCasCmpResult = newJump(expressions.makeNEQ(resultRegister, one), casEnd); + CondJump branchOnCasCmpResult = newJumpUnless(resultRegister, casEnd); Load load = newRMWLoadExclusiveWithMo(oldValueRegister, address, ARMv8.extractLoadMoFromCMo(mo)); - Store store = newRMWStoreExclusiveWithMo(address, value, true, ARMv8.extractStoreMoFromCMo(mo)); + Store store = newRMWStoreExclusiveWithMo(address, e.getStoreValue(), true, ARMv8.extractStoreMoFromCMo(mo)); return eventSequence( load, @@ -236,31 +191,32 @@ public List visitLlvmFence(LlvmFence e) { public List visitAtomicCmpXchg(AtomicCmpXchg e) { Register resultRegister = e.getResultRegister(); Expression address = e.getAddress(); - Expression value = e.getMemValue(); + Expression value = e.getStoreValue(); String mo = e.getMo(); - Expression expectedAddr = e.getExpectedAddr(); - IntegerType type = resultRegister.getType(); - Expression one = expressions.makeOne(type); - Register regExpected = e.getThread().newRegister(type); - Register regValue = e.getThread().newRegister(type); + Expression expectedAddr = e.getAddressOfExpected(); + Type type = resultRegister.getType(); + Register booleanResultRegister = type instanceof BooleanType ? resultRegister : + e.getThread().newRegister(types.getBooleanType()); + Local castResult = type instanceof BooleanType ? null : + newLocal(resultRegister, expressions.makeCast(booleanResultRegister, type)); + Register regExpected = e.getFunction().newRegister(type); + Register regValue = e.getFunction().newRegister(type); Load loadExpected = newLoad(regExpected, expectedAddr); Store storeExpected = newStore(expectedAddr, regValue); Label casFail = newLabel("CAS_fail"); Label casEnd = newLabel("CAS_end"); - Local casCmpResult = newLocal(resultRegister, expressions.makeEQ(regValue, regExpected)); - CondJump branchOnCasCmpResult = newJump(expressions.makeNEQ(resultRegister, one), casFail); + Local casCmpResult = newLocal(booleanResultRegister, expressions.makeEQ(regValue, regExpected)); + CondJump branchOnCasCmpResult = newJumpUnless(booleanResultRegister, casFail); CondJump gotoCasEnd = newGoto(casEnd); - Load loadValue = newRMWLoadExclusiveWithMo(regValue, address, ARMv8.extractLoadMoFromCMo(mo)); Store storeValue = newRMWStoreExclusiveWithMo(address, value, e.isStrong(), ARMv8.extractStoreMoFromCMo(mo)); ExecutionStatus optionalExecStatus = null; Local optionalUpdateCasCmpResult = null; if (e.isWeak()) { - Register statusReg = e.getThread().newRegister("status(" + e.getGlobalId() + ")", type); + Register statusReg = e.getFunction().newRegister("status(" + e.getGlobalId() + ")", types.getBooleanType()); optionalExecStatus = newExecutionStatus(statusReg, storeValue); - optionalUpdateCasCmpResult = newLocal(resultRegister, expressions.makeNot(statusReg)); + optionalUpdateCasCmpResult = newLocal(booleanResultRegister, expressions.makeNot(statusReg)); } - return eventSequence( loadExpected, loadValue, @@ -272,22 +228,21 @@ public List visitAtomicCmpXchg(AtomicCmpXchg e) { gotoCasEnd, casFail, storeExpected, - casEnd + casEnd, + castResult ); } @Override public List visitAtomicFetchOp(AtomicFetchOp e) { Register resultRegister = e.getResultRegister(); - IOpBin op = e.getOp(); - Expression value = e.getMemValue(); Expression address = e.getAddress(); String mo = e.getMo(); - Register dummyReg = e.getThread().newRegister(resultRegister.getType()); - Local localOp = newLocal(dummyReg, expressions.makeBinary(resultRegister, op, value)); + Register dummyReg = e.getFunction().newRegister(resultRegister.getType()); Load load = newRMWLoadExclusiveWithMo(resultRegister, address, ARMv8.extractLoadMoFromCMo(mo)); + Local localOp = newLocal(dummyReg, expressions.makeBinary(resultRegister, e.getOperator(), e.getOperand())); Store store = newRMWStoreExclusiveWithMo(address, dummyReg, true, ARMv8.extractStoreMoFromCMo(mo)); Label label = newLabel("FakeDep"); Event fakeCtrlDep = newFakeCtrlDep(resultRegister, label); @@ -329,12 +284,11 @@ public List visitAtomicThreadFence(AtomicThreadFence e) { @Override public List visitAtomicXchg(AtomicXchg e) { Register resultRegister = e.getResultRegister(); - Expression value = e.getMemValue(); Expression address = e.getAddress(); String mo = e.getMo(); Load load = newRMWLoadExclusiveWithMo(resultRegister, address, ARMv8.extractLoadMoFromCMo(mo)); - Store store = newRMWStoreExclusiveWithMo(address, value, true, ARMv8.extractStoreMoFromCMo(mo)); + Store store = newRMWStoreExclusiveWithMo(address, e.getValue(), true, ARMv8.extractStoreMoFromCMo(mo)); Label label = newLabel("FakeDep"); Event fakeCtrlDep = newFakeCtrlDep(resultRegister, label); @@ -440,20 +394,19 @@ public List visitLKMMFence(LKMMFence e) { // Following // https://elixir.bootlin.com/linux/v5.18/source/arch/arm64/include/asm/atomic_ll_sc.h#L259 @Override - public List visitRMWCmpXchg(RMWCmpXchg e) { + public List visitLKMMCmpXchg(LKMMCmpXchg e) { Register resultRegister = e.getResultRegister(); Expression address = e.getAddress(); - Expression value = e.getMemValue(); String mo = e.getMo(); - Register dummy = e.getThread().newRegister(e.getResultRegister().getType()); + Register dummy = e.getFunction().newRegister(e.getResultRegister().getType()); Label casEnd = newLabel("CAS_end"); // The real scheme uses XOR instead of comparison, but both are semantically // equivalent and XOR harms performance substantially. - CondJump branchOnCasCmpResult = newJump(expressions.makeNEQ(dummy, e.getCmp()), casEnd); + CondJump branchOnCasCmpResult = newJump(expressions.makeNEQ(dummy, e.getExpectedValue()), casEnd); Load load = newRMWLoadExclusiveWithMo(dummy, address, ARMv8.extractLoadMoFromLKMo(mo)); - Store store = newRMWStoreExclusiveWithMo(address, value, true, ARMv8.extractStoreMoFromLKMo(mo)); + Store store = newRMWStoreExclusiveWithMo(address, e.getStoreValue(), true, ARMv8.extractStoreMoFromLKMo(mo)); Label label = newLabel("FakeDep"); Event fakeCtrlDep = newFakeCtrlDep(dummy, label); Fence optionalMemoryBarrierAfter = mo.equals(Tag.Linux.MO_MB) ? AArch64.DMB.newISHBarrier() : null; @@ -473,15 +426,14 @@ public List visitRMWCmpXchg(RMWCmpXchg e) { // Following // https://elixir.bootlin.com/linux/v5.18/source/arch/arm64/include/asm/cmpxchg.h#L21 @Override - public List visitRMWXchg(RMWXchg e) { + public List visitLKMMXchg(LKMMXchg e) { Register resultRegister = e.getResultRegister(); - Expression value = e.getMemValue(); Expression address = e.getAddress(); String mo = e.getMo(); - Register dummy = e.getThread().newRegister(resultRegister.getType()); + Register dummy = e.getFunction().newRegister(resultRegister.getType()); Load load = newRMWLoadExclusiveWithMo(dummy, address, ARMv8.extractLoadMoFromLKMo(mo)); - Store store = newRMWStoreExclusiveWithMo(address, value, true, ARMv8.extractStoreMoFromLKMo(mo)); + Store store = newRMWStoreExclusiveWithMo(address, e.getValue(), true, ARMv8.extractStoreMoFromLKMo(mo)); Label label = newLabel("FakeDep"); Event fakeCtrlDep = newFakeCtrlDep(dummy, label); Fence optionalMemoryBarrierAfter = mo.equals(Tag.Linux.MO_MB) ? AArch64.DMB.newISHBarrier() : null; @@ -499,15 +451,13 @@ public List visitRMWXchg(RMWXchg e) { // Following // https://elixir.bootlin.com/linux/v5.18/source/arch/arm64/include/asm/atomic_ll_sc.h#L38 @Override - public List visitRMWOp(RMWOp e) { - Register resultRegister = e.getResultRegister(); - IOpBin op = e.getOp(); - Expression value = e.getMemValue(); + public List visitLKMMOpNoReturn(LKMMOpNoReturn e) { Expression address = e.getAddress(); - Register dummy = e.getThread().newRegister(resultRegister.getType()); + Register dummy = e.getFunction().newRegister(types.getArchType()); + Expression storeValue = expressions.makeBinary(dummy, e.getOperator(), e.getOperand()); Load load = newRMWLoadExclusive(dummy, address); - Store store = newRMWStoreExclusive(address, expressions.makeBinary(dummy, op, value), true); + Store store = newRMWStoreExclusive(address, storeValue, true); Label label = newLabel("FakeDep"); Event fakeCtrlDep = newFakeCtrlDep(dummy, label); @@ -524,14 +474,12 @@ public List visitRMWOp(RMWOp e) { // Following // https://elixir.bootlin.com/linux/v5.18/source/arch/arm64/include/asm/atomic_ll_sc.h#L56 @Override - public List visitRMWOpReturn(RMWOpReturn e) { + public List visitLKMMOpReturn(LKMMOpReturn e) { Register resultRegister = e.getResultRegister(); - IOpBin op = e.getOp(); - Expression value = e.getMemValue(); Expression address = e.getAddress(); String mo = e.getMo(); - Register dummy = e.getThread().newRegister(resultRegister.getType()); + Register dummy = e.getFunction().newRegister(resultRegister.getType()); Load load = newRMWLoadExclusiveWithMo(dummy, address, ARMv8.extractLoadMoFromLKMo(mo)); Store store = newRMWStoreExclusiveWithMo(address, dummy, true, ARMv8.extractStoreMoFromLKMo(mo)); Label label = newLabel("FakeDep"); @@ -540,7 +488,7 @@ public List visitRMWOpReturn(RMWOpReturn e) { return eventSequence( load, - newLocal(dummy, expressions.makeBinary(dummy, op, value)), + newLocal(dummy, expressions.makeBinary(dummy, e.getOperator(), e.getOperand())), store, newLocal(resultRegister, dummy), fakeCtrlDep, @@ -554,15 +502,15 @@ public List visitRMWOpReturn(RMWOpReturn e) { // Following // https://elixir.bootlin.com/linux/v5.18/source/arch/arm64/include/asm/atomic_ll_sc.h#L78 @Override - public List visitRMWFetchOp(RMWFetchOp e) { + public List visitLKMMFetchOp(LKMMFetchOp e) { Register resultRegister = e.getResultRegister(); - Expression value = e.getMemValue(); Expression address = e.getAddress(); String mo = e.getMo(); - Register dummy = e.getThread().newRegister(resultRegister.getType()); + Register dummy = e.getFunction().newRegister(resultRegister.getType()); Load load = newRMWLoadExclusiveWithMo(dummy, address, ARMv8.extractLoadMoFromLKMo(mo)); - Store store = newRMWStoreExclusiveWithMo(address, expressions.makeBinary(dummy, e.getOp(), value), true, ARMv8.extractStoreMoFromLKMo(mo)); + Store store = newRMWStoreExclusiveWithMo(address, expressions.makeBinary(dummy, e.getOperator(), e.getOperand()), + true, ARMv8.extractStoreMoFromLKMo(mo)); Label label = newLabel("FakeDep"); Event fakeCtrlDep = newFakeCtrlDep(dummy, label); Fence optionalMemoryBarrierAfter = mo.equals(Tag.Linux.MO_MB) ? AArch64.DMB.newISHBarrier() : null; @@ -583,30 +531,28 @@ public List visitRMWFetchOp(RMWFetchOp e) { // and not on inlined assembly, we don't really need to test that the compilation is correct // (the other methods implementing the macros are been tested already). @Override - public List visitRMWAddUnless(RMWAddUnless e) { + public List visitLKMMAddUnless(LKMMAddUnless e) { Register resultRegister = e.getResultRegister(); Expression address = e.getAddress(); - Expression value = e.getMemValue(); String mo = e.getMo(); - IntegerType type = resultRegister.getType(); - Expression zero = expressions.makeZero(type); + Type type = resultRegister.getType(); - Register regValue = e.getThread().newRegister(type); + Register regValue = e.getFunction().newRegister(type); Load load = newRMWLoadExclusiveWithMo(regValue, address, ARMv8.extractLoadMoFromLKMo(mo)); - Store store = newRMWStoreExclusiveWithMo(address, expressions.makeADD(regValue, value), true, ARMv8.extractStoreMoFromLKMo(mo)); + Store store = newRMWStoreExclusiveWithMo(address, expressions.makeADD(regValue, e.getOperand()), true, ARMv8.extractStoreMoFromLKMo(mo)); Label label = newLabel("FakeDep"); Event fakeCtrlDep = newFakeCtrlDep(regValue, label); - Register dummy = e.getThread().newRegister(type); + Register dummy = e.getFunction().newRegister(type); Expression unless = e.getCmp(); Label cauEnd = newLabel("CAddU_end"); - CondJump branchOnCauCmpResult = newJump(expressions.makeEQ(dummy, zero), cauEnd); + CondJump branchOnCauCmpResult = newJumpUnless(expressions.makeBooleanCast(dummy), cauEnd); Fence optionalMemoryBarrierAfter = mo.equals(Tag.Linux.MO_MB) ? AArch64.DMB.newISHBarrier() : null; return eventSequence( load, - newLocal(dummy, expressions.makeNEQ(regValue, unless)), + newLocal(dummy, expressions.makeCast(expressions.makeNEQ(regValue, unless), dummy.getType())), branchOnCauCmpResult, store, fakeCtrlDep, @@ -624,27 +570,21 @@ public List visitRMWAddUnless(RMWAddUnless e) { // https://elixir.bootlin.com/linux/v5.18/source/scripts/atomic/fallbacks/inc_and_test // https://elixir.bootlin.com/linux/v5.18/source/scripts/atomic/fallbacks/dec_and_test @Override - public List visitRMWOpAndTest(RMWOpAndTest e) { + public List visitLKMMOpAndTest(LKMMOpAndTest e) { Register resultRegister = e.getResultRegister(); - IntegerType type = resultRegister.getType(); - Expression zero = expressions.makeZero(type); - IOpBin op = e.getOp(); - Expression value = e.getMemValue(); Expression address = e.getAddress(); String mo = e.getMo(); - - Register dummy = e.getThread().newRegister(type); - Register retReg = e.getThread().newRegister(type); - Local localOp = newLocal(retReg, expressions.makeBinary(dummy, op, value)); - Local testOp = newLocal(resultRegister, expressions.makeEQ(retReg, zero)); + Register dummy = e.getFunction().newRegister(types.getArchType()); + Expression testResult = expressions.makeNot(expressions.makeBooleanCast(dummy)); Load load = newRMWLoadExclusiveWithMo(dummy, address, ARMv8.extractLoadMoFromLKMo(mo)); - Store store = newRMWStoreExclusiveWithMo(address, retReg, true, ARMv8.extractStoreMoFromLKMo(mo)); + Local localOp = newLocal(dummy, expressions.makeBinary(dummy, e.getOperator(), e.getOperand())); + Store store = newRMWStoreExclusiveWithMo(address, dummy, true, ARMv8.extractStoreMoFromLKMo(mo)); + Local testOp = newLocal(resultRegister, expressions.makeCast(testResult, resultRegister.getType())); Label label = newLabel("FakeDep"); Event fakeCtrlDep = newFakeCtrlDep(dummy, label); Fence optionalMemoryBarrierAfter = mo.equals(Tag.Linux.MO_MB) ? AArch64.DMB.newISHBarrier() : null; - return eventSequence( load, localOp, @@ -663,7 +603,7 @@ public List visitLKMMLock(LKMMLock e) { IntegerType type = types.getArchType(); Expression zero = expressions.makeZero(type); Expression one = expressions.makeOne(type); - Register dummy = e.getThread().newRegister(type); + Register dummy = e.getFunction().newRegister(type); // Spinlock events are guaranteed to succeed, i.e. we can use assumes // With this we miss a ctrl dependency, but this does not matter // because the load is an acquire one. diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorBase.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorBase.java index c673bb4050..99cf51482e 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorBase.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorBase.java @@ -6,19 +6,18 @@ import com.dat3m.dartagnan.expression.type.TypeFactory; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.arch.StoreExclusive; -import com.dat3m.dartagnan.program.event.arch.lisa.RMW; -import com.dat3m.dartagnan.program.event.arch.tso.Xchg; -import com.dat3m.dartagnan.program.event.core.*; +import com.dat3m.dartagnan.program.event.arch.lisa.LISARMW; +import com.dat3m.dartagnan.program.event.arch.tso.TSOXchg; +import com.dat3m.dartagnan.program.event.core.CondJump; +import com.dat3m.dartagnan.program.event.core.Event; +import com.dat3m.dartagnan.program.event.core.Label; +import com.dat3m.dartagnan.program.event.core.Load; import com.dat3m.dartagnan.program.event.core.rmw.RMWStore; -import com.dat3m.dartagnan.program.event.lang.RMWAbstract; -import com.dat3m.dartagnan.program.event.lang.catomic.AtomicAbstract; import com.dat3m.dartagnan.program.event.lang.linux.*; -import com.dat3m.dartagnan.program.event.lang.llvm.LlvmAbstractRMW; import com.dat3m.dartagnan.program.event.lang.llvm.LlvmLoad; import com.dat3m.dartagnan.program.event.lang.llvm.LlvmStore; import com.dat3m.dartagnan.program.event.lang.pthread.InitLock; import com.dat3m.dartagnan.program.event.lang.pthread.Lock; -import com.dat3m.dartagnan.program.event.lang.pthread.Start; import com.dat3m.dartagnan.program.event.lang.pthread.Unlock; import com.dat3m.dartagnan.program.event.visitors.EventVisitor; import com.google.common.base.Preconditions; @@ -49,17 +48,6 @@ public List visitCondJump(CondJump e) { return visitEvent(e); } - @Override - public List visitStart(Start e) { - Register resultRegister = e.getResultRegister(); - Register statusRegister = e.getThread().newRegister(resultRegister.getType()); - - return eventSequence( - forceStart ? newExecutionStatus(statusRegister, e.getCreationEvent()) : null, - forceStart ? newAssume(expressions.makeOr(resultRegister, statusRegister)) : null - ); - } - @Override public List visitInitLock(InitLock e) { return eventSequence( @@ -69,33 +57,33 @@ public List visitInitLock(InitLock e) { @Override public List visitLock(Lock e) { - Register resultRegister = e.getResultRegister(); - IntegerType type = resultRegister.getType(); + IntegerType type = types.getArchType(); // TODO: Boolean should be sufficient + Register dummy = e.getThread().newRegister(type); Expression zero = expressions.makeZero(type); Expression one = expressions.makeOne(type); String mo = e.getMo(); - Load rmwLoad = newRMWLoadWithMo(resultRegister, e.getAddress(), mo); + Load rmwLoad = newRMWLoadWithMo(dummy, e.getAddress(), mo); return eventSequence( rmwLoad, - newJump(expressions.makeNEQ(resultRegister, zero), (Label) e.getThread().getExit()), + newJump(expressions.makeNEQ(dummy, zero), (Label) e.getThread().getExit()), newRMWStoreWithMo(rmwLoad, e.getAddress(), one, mo) ); } @Override public List visitUnlock(Unlock e) { - Register resultRegister = e.getResultRegister(); - IntegerType type = resultRegister.getType(); + IntegerType type = types.getArchType(); // TODO: Boolean should be sufficient + Register dummy = e.getThread().newRegister(type); Expression zero = expressions.makeZero(type); Expression one = expressions.makeOne(type); Expression address = e.getAddress(); String mo = e.getMo(); - Load rmwLoad = newRMWLoadWithMo(resultRegister, address, mo); + Load rmwLoad = newRMWLoadWithMo(dummy, address, mo); return eventSequence( rmwLoad, - newJump(expressions.makeNEQ(resultRegister, one), (Label) e.getThread().getExit()), + newJump(expressions.makeNEQ(dummy, one), (Label) e.getThread().getExit()), newRMWStoreWithMo(rmwLoad, address, zero, mo) ); } @@ -106,58 +94,53 @@ public List visitStoreExclusive(StoreExclusive e) { } @Override - public List visitRMWAbstract(RMWAbstract e) { + public List visitLKMMAddUnless(LKMMAddUnless e) { throw error(e); } @Override - public List visitRMWAddUnless(RMWAddUnless e) { + public List visitLKMMCmpXchg(LKMMCmpXchg e) { throw error(e); } @Override - public List visitRMWCmpXchg(RMWCmpXchg e) { + public List visitLKMMFetchOp(LKMMFetchOp e) { throw error(e); } @Override - public List visitRMWFetchOp(RMWFetchOp e) { + public List visitLKMMOpNoReturn(LKMMOpNoReturn e) { throw error(e); } @Override - public List visitRMWOp(RMWOp e) { + public List visitLKMMOpAndTest(LKMMOpAndTest e) { throw error(e); } @Override - public List visitRMWOpAndTest(RMWOpAndTest e) { + public List visitLKMMOpReturn(LKMMOpReturn e) { throw error(e); } @Override - public List visitRMWOpReturn(RMWOpReturn e) { + public List visitLKMMXchg(LKMMXchg e) { throw error(e); } @Override - public List visitRMWXchg(RMWXchg e) { + public List visitTSOXchg(TSOXchg e) { throw error(e); } @Override - public List visitXchg(Xchg e) { - throw error(e); - } - - @Override - public List visitRMW(RMW e) { + public List visitLISARMW(LISARMW e) { Register resultRegister = e.getResultRegister(); Expression address = e.getAddress(); String mo = e.getMo(); - Register dummyReg = e.getThread().newRegister(resultRegister.getType()); + Register dummyReg = e.getFunction().newRegister(resultRegister.getType()); Load load = newRMWLoadWithMo(dummyReg, address, mo); - RMWStore store = newRMWStoreWithMo(load, address, e.getMemValue(), mo); + RMWStore store = newRMWStoreWithMo(load, address, e.getValue(), mo); return eventSequence( load, store, @@ -165,17 +148,6 @@ public List visitRMW(RMW e) { ); } - @Override - public List visitAtomicAbstract(AtomicAbstract e) { - throw error(e); - } - - // LLVM Events - @Override - public List visitLlvmAbstract(LlvmAbstractRMW e) { - throw error(e); - } - @Override public List visitLlvmLoad(LlvmLoad e) { throw error(e); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorC11.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorC11.java index 1324f0ddbc..715c228f97 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorC11.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorC11.java @@ -1,24 +1,20 @@ package com.dat3m.dartagnan.program.processing.compilation; import com.dat3m.dartagnan.expression.Expression; -import com.dat3m.dartagnan.expression.op.IOpBin; -import com.dat3m.dartagnan.expression.type.IntegerType; +import com.dat3m.dartagnan.expression.type.BooleanType; +import com.dat3m.dartagnan.expression.type.Type; import com.dat3m.dartagnan.program.Register; -import com.dat3m.dartagnan.program.event.Tag; import com.dat3m.dartagnan.program.event.Tag.C11; import com.dat3m.dartagnan.program.event.core.*; import com.dat3m.dartagnan.program.event.core.rmw.RMWStore; import com.dat3m.dartagnan.program.event.lang.catomic.*; import com.dat3m.dartagnan.program.event.lang.llvm.*; -import com.dat3m.dartagnan.program.event.lang.pthread.Create; -import com.dat3m.dartagnan.program.event.lang.pthread.End; -import com.dat3m.dartagnan.program.event.lang.pthread.Join; -import com.dat3m.dartagnan.program.event.lang.pthread.Start; import com.dat3m.dartagnan.program.event.metadata.MemoryOrder; import java.util.List; import static com.dat3m.dartagnan.program.event.EventFactory.*; +import static com.google.common.base.Verify.verify; public class VisitorC11 extends VisitorBase { @@ -26,61 +22,14 @@ protected VisitorC11(boolean forceStart) { super(forceStart); } - @Override - public List visitCreate(Create e) { - Store store = newStoreWithMo(e.getAddress(), e.getMemValue(), Tag.C11.MO_RELEASE); - store.addTags(C11.PTHREAD); - - return tagList(eventSequence( - store - )); - } - - @Override - public List visitEnd(End e) { - //TODO boolean - return tagList(eventSequence( - newStoreWithMo(e.getAddress(), expressions.makeZero(types.getArchType()), Tag.C11.MO_RELEASE) - )); - } - - @Override - public List visitJoin(Join e) { - Register resultRegister = e.getResultRegister(); - Expression zero = expressions.makeZero(resultRegister.getType()); - Load load = newLoadWithMo(resultRegister, e.getAddress(), Tag.C11.MO_ACQUIRE); - load.addTags(C11.PTHREAD); - - return tagList(eventSequence( - load, - newJumpUnless(expressions.makeEQ(resultRegister, zero), (Label) e.getThread().getExit()) - )); - } - - @Override - public List visitStart(Start e) { - Register resultRegister = e.getResultRegister(); - Expression one = expressions.makeOne(resultRegister.getType()); - Load load = newLoadWithMo(resultRegister, e.getAddress(), Tag.C11.MO_ACQUIRE); - load.addTags(Tag.STARTLOAD); - - return tagList(eventSequence( - load, - super.visitStart(e), - newJumpUnless(expressions.makeEQ(resultRegister, one), (Label) e.getThread().getExit()) - )); - } - - //TODO: Is it really mandatory to copy the load here? @Override public List visitLoad(Load e) { - return tagList(eventSequence(e.getCopy())); + return tagList(eventSequence(e)); } - //TODO: Is it really mandatory to copy the store here? @Override public List visitStore(Store e) { - return tagList(eventSequence(e.getCopy())); + return tagList(eventSequence(e)); } // ============================================================================================= @@ -92,20 +41,23 @@ public List visitAtomicCmpXchg(AtomicCmpXchg e) { Register resultRegister = e.getResultRegister(); Expression address = e.getAddress(); String mo = e.getMo(); - Expression expectedAddr = e.getExpectedAddr(); - IntegerType type = resultRegister.getType(); - - Register regExpected = e.getThread().newRegister(type); - Register regValue = e.getThread().newRegister(type); + Expression expectedAddr = e.getAddressOfExpected(); + Type type = resultRegister.getType(); + Register booleanResultRegister = type instanceof BooleanType ? resultRegister : + e.getThread().newRegister(types.getBooleanType()); + Local castResult = type instanceof BooleanType ? null : + newLocal(resultRegister, expressions.makeCast(booleanResultRegister, type)); + Register regExpected = e.getFunction().newRegister(type); + Register regValue = e.getFunction().newRegister(type); Load loadExpected = newLoad(regExpected, expectedAddr); Store storeExpected = newStore(expectedAddr, regValue); Label casFail = newLabel("CAS_fail"); Label casEnd = newLabel("CAS_end"); - Local casCmpResult = newLocal(resultRegister, expressions.makeEQ(regValue, regExpected)); - CondJump branchOnCasCmpResult = newJump(expressions.makeNEQ(resultRegister, expressions.makeOne(type)), casFail); + Local casCmpResult = newLocal(booleanResultRegister, expressions.makeEQ(regValue, regExpected)); + CondJump branchOnCasCmpResult = newJumpUnless(booleanResultRegister, casFail); CondJump gotoCasEnd = newGoto(casEnd); Load loadValue = newRMWLoadWithMo(regValue, address, mo); - Store storeValue = newRMWStoreWithMo(loadValue, address, e.getMemValue(), mo); + Store storeValue = newRMWStoreWithMo(loadValue, address, e.getStoreValue(), mo); return tagList(eventSequence( loadExpected, @@ -116,23 +68,25 @@ public List visitAtomicCmpXchg(AtomicCmpXchg e) { gotoCasEnd, casFail, storeExpected, - casEnd + casEnd, + castResult )); } @Override public List visitAtomicFetchOp(AtomicFetchOp e) { Register resultRegister = e.getResultRegister(); - IOpBin op = e.getOp(); Expression address = e.getAddress(); String mo = e.getMo(); - Register dummyReg = e.getThread().newRegister(resultRegister.getType()); + + Register dummyReg = e.getFunction().newRegister(resultRegister.getType()); Load load = newRMWLoadWithMo(resultRegister, address, mo); + Local localOp = newLocal(dummyReg, expressions.makeBinary(resultRegister, e.getOperator(), e.getOperand())); RMWStore store = newRMWStoreWithMo(load, address, dummyReg, mo); return tagList(eventSequence( load, - newLocal(dummyReg, expressions.makeBinary(resultRegister, op, e.getMemValue())), + localOp, store )); } @@ -164,7 +118,7 @@ public List visitAtomicXchg(AtomicXchg e) { String mo = e.getMo(); Load load = newRMWLoadWithMo(e.getResultRegister(), address, mo); - RMWStore store = newRMWStoreWithMo(load, address, e.getMemValue(), mo); + RMWStore store = newRMWStoreWithMo(load, address, e.getValue(), mo); return tagList(eventSequence( load, @@ -193,12 +147,11 @@ public List visitLlvmStore(LlvmStore e) { @Override public List visitLlvmXchg(LlvmXchg e) { Register resultRegister = e.getResultRegister(); - Expression value = e.getMemValue(); Expression address = e.getAddress(); String mo = e.getMo(); Load load = newRMWLoadExclusiveWithMo(resultRegister, address, mo); - Store store = newRMWStoreExclusiveWithMo(address, value, true, mo); + Store store = newRMWStoreExclusiveWithMo(address, e.getValue(), true, mo); return tagList(eventSequence( load, @@ -209,13 +162,11 @@ public List visitLlvmXchg(LlvmXchg e) { @Override public List visitLlvmRMW(LlvmRMW e) { Register resultRegister = e.getResultRegister(); - IOpBin op = e.getOp(); - Expression value = e.getMemValue(); Expression address = e.getAddress(); String mo = e.getMo(); - Register dummyReg = e.getThread().newRegister(resultRegister.getType()); - Local localOp = newLocal(dummyReg, expressions.makeBinary(resultRegister, op, value)); + Register dummyReg = e.getFunction().newRegister(resultRegister.getType()); + Local localOp = newLocal(dummyReg, expressions.makeBinary(resultRegister, e.getOperator(), e.getOperand())); Load load = newRMWLoadExclusiveWithMo(resultRegister, address, mo); Store store = newRMWStoreExclusiveWithMo(address, dummyReg, true, mo); @@ -231,19 +182,18 @@ public List visitLlvmRMW(LlvmRMW e) { public List visitLlvmCmpXchg(LlvmCmpXchg e) { Register oldValueRegister = e.getStructRegister(0); Register resultRegister = e.getStructRegister(1); + verify(resultRegister.getType() instanceof BooleanType); - Expression value = e.getMemValue(); Expression address = e.getAddress(); String mo = e.getMo(); Expression expectedValue = e.getExpectedValue(); Local casCmpResult = newLocal(resultRegister, expressions.makeEQ(oldValueRegister, expectedValue)); Label casEnd = newLabel("CAS_end"); - Expression one = expressions.makeOne(resultRegister.getType()); - CondJump branchOnCasCmpResult = newJump(expressions.makeNEQ(resultRegister, one), casEnd); + CondJump branchOnCasCmpResult = newJumpUnless(resultRegister, casEnd); Load load = newRMWLoadExclusiveWithMo(oldValueRegister, address, mo); - Store store = newRMWStoreExclusiveWithMo(address, value, true, mo); + Store store = newRMWStoreExclusiveWithMo(address, e.getStoreValue(), true, mo); return tagList(eventSequence( load, diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorIMM.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorIMM.java index 48a1ac6c8a..4d39f2fffd 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorIMM.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorIMM.java @@ -1,8 +1,8 @@ package com.dat3m.dartagnan.program.processing.compilation; import com.dat3m.dartagnan.expression.Expression; -import com.dat3m.dartagnan.expression.op.IOpBin; -import com.dat3m.dartagnan.expression.type.IntegerType; +import com.dat3m.dartagnan.expression.type.BooleanType; +import com.dat3m.dartagnan.expression.type.Type; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.Tag; import com.dat3m.dartagnan.program.event.Tag.C11; @@ -10,10 +10,6 @@ import com.dat3m.dartagnan.program.event.core.*; import com.dat3m.dartagnan.program.event.lang.catomic.*; import com.dat3m.dartagnan.program.event.lang.llvm.*; -import com.dat3m.dartagnan.program.event.lang.pthread.Create; -import com.dat3m.dartagnan.program.event.lang.pthread.End; -import com.dat3m.dartagnan.program.event.lang.pthread.Join; -import com.dat3m.dartagnan.program.event.lang.pthread.Start; import com.dat3m.dartagnan.program.event.metadata.MemoryOrder; import java.util.Collections; @@ -22,6 +18,7 @@ import static com.dat3m.dartagnan.program.event.EventFactory.*; import static com.dat3m.dartagnan.program.event.Tag.IMM.extractLoadMo; import static com.dat3m.dartagnan.program.event.Tag.IMM.extractStoreMo; +import static com.google.common.base.Verify.verify; class VisitorIMM extends VisitorBase { @@ -49,51 +46,6 @@ public List visitStore(Store e) { ); } - @Override - public List visitCreate(Create e) { - Store store = newStoreWithMo(e.getAddress(), e.getMemValue(), C11.MO_RELEASE); - store.addTags(C11.PTHREAD); - - return eventSequence( - store - ); - } - - @Override - public List visitEnd(End e) { - //TODO boolean - return eventSequence( - newStoreWithMo(e.getAddress(), expressions.makeZero(types.getArchType()), C11.MO_RELEASE) - ); - } - - @Override - public List visitJoin(Join e) { - Register resultRegister = e.getResultRegister(); - Expression zero = expressions.makeZero(resultRegister.getType()); - Load load = newLoadWithMo(resultRegister, e.getAddress(), C11.MO_ACQUIRE); - load.addTags(C11.PTHREAD); - - return eventSequence( - load, - newJump(expressions.makeNEQ(resultRegister, zero), (Label) e.getThread().getExit()) - ); - } - - @Override - public List visitStart(Start e) { - Register resultRegister = e.getResultRegister(); - Expression one = expressions.makeOne(resultRegister.getType()); - Load load = newLoadWithMo(resultRegister, e.getAddress(), C11.MO_ACQUIRE); - load.addTags(Tag.STARTLOAD); - - return eventSequence( - load, - super.visitStart(e), - newJump(expressions.makeNEQ(resultRegister, one), (Label) e.getThread().getExit()) - ); - } - // ============================================================================================= // =========================================== C11 ============================================= // ============================================================================================= @@ -105,22 +57,24 @@ public List visitAtomicCmpXchg(AtomicCmpXchg e) { String mo = e.getMo(); Fence optionalFenceLoad = mo.equals(Tag.C11.MO_SC) ? newFence(Tag.C11.MO_SC) : null; Fence optionalFenceStore = mo.equals(Tag.C11.MO_SC) ? newFence(Tag.C11.MO_SC) : null; - Expression expectedAddr = e.getExpectedAddr(); - IntegerType type = resultRegister.getType(); - Expression one = expressions.makeOne(type); - - Register regExpected = e.getThread().newRegister(type); - Register regValue = e.getThread().newRegister(type); + Expression expectedAddr = e.getAddressOfExpected(); + Type type = resultRegister.getType(); + Register booleanResultRegister = type instanceof BooleanType ? resultRegister : + e.getThread().newRegister(types.getBooleanType()); + Local castResult = type instanceof BooleanType ? null : + newLocal(resultRegister, expressions.makeCast(booleanResultRegister, type)); + Register regExpected = e.getFunction().newRegister(type); + Register regValue = e.getFunction().newRegister(type); Load loadExpected = newLoad(regExpected, expectedAddr); loadExpected.addTags(Tag.IMM.CASDEPORIGIN); Store storeExpected = newStore(expectedAddr, regValue); Label casFail = newLabel("CAS_fail"); Label casEnd = newLabel("CAS_end"); - Local casCmpResult = newLocal(resultRegister, expressions.makeEQ(regValue, regExpected)); - CondJump branchOnCasCmpResult = newJump(expressions.makeNEQ(resultRegister, one), casFail); + Local casCmpResult = newLocal(booleanResultRegister, expressions.makeEQ(regValue, regExpected)); + CondJump branchOnCasCmpResult = newJumpUnless(booleanResultRegister, casFail); CondJump gotoCasEnd = newGoto(casEnd); Load loadValue = newRMWLoadWithMo(regValue, address, extractLoadMo(mo)); - Store storeValue = newRMWStoreWithMo(loadValue, address, e.getMemValue(), extractStoreMo(mo)); + Store storeValue = newRMWStoreWithMo(loadValue, address, e.getStoreValue(), extractStoreMo(mo)); return eventSequence( loadExpected, @@ -133,26 +87,26 @@ public List visitAtomicCmpXchg(AtomicCmpXchg e) { gotoCasEnd, casFail, storeExpected, - casEnd + casEnd, + castResult ); } @Override public List visitAtomicFetchOp(AtomicFetchOp e) { Register resultRegister = e.getResultRegister(); - IOpBin op = e.getOp(); Expression address = e.getAddress(); String mo = e.getMo(); Fence optionalFenceBefore = mo.equals(Tag.C11.MO_SC) ? newFence(Tag.C11.MO_SC) : null; Fence optionalFenceAfter = mo.equals(Tag.C11.MO_SC) ? newFence(Tag.C11.MO_SC) : null; - Register dummyReg = e.getThread().newRegister(resultRegister.getType()); + Register dummyReg = e.getFunction().newRegister(resultRegister.getType()); Load load = newRMWLoadWithMo(resultRegister, address, extractLoadMo(mo)); return eventSequence( optionalFenceBefore, load, - newLocal(dummyReg, expressions.makeBinary(resultRegister, op, e.getMemValue())), + newLocal(dummyReg, expressions.makeBinary(resultRegister, e.getOperator(), e.getOperand())), optionalFenceAfter, newRMWStoreWithMo(load, address, dummyReg, extractStoreMo(mo)) ); @@ -196,7 +150,7 @@ public List visitAtomicXchg(AtomicXchg e) { optionalFenceLoad, load, optionalFenceStore, - newRMWStoreWithMo(load, address, e.getMemValue(), extractStoreMo(mo)) + newRMWStoreWithMo(load, address, e.getValue(), extractStoreMo(mo)) ); } @@ -221,12 +175,11 @@ public List visitLlvmStore(LlvmStore e) { @Override public List visitLlvmXchg(LlvmXchg e) { Register resultRegister = e.getResultRegister(); - Expression value = e.getMemValue(); Expression address = e.getAddress(); String mo = e.getMo(); Load load = newRMWLoadExclusiveWithMo(resultRegister, address, IMM.extractLoadMo(mo)); - Store store = newRMWStoreExclusiveWithMo(address, value, true, IMM.extractStoreMo(mo)); + Store store = newRMWStoreExclusiveWithMo(address, e.getValue(), true, IMM.extractStoreMo(mo)); Label label = newLabel("FakeDep"); Event fakeCtrlDep = newFakeCtrlDep(resultRegister, label); @@ -241,13 +194,11 @@ public List visitLlvmXchg(LlvmXchg e) { @Override public List visitLlvmRMW(LlvmRMW e) { Register resultRegister = e.getResultRegister(); - IOpBin op = e.getOp(); - Expression value = e.getMemValue(); Expression address = e.getAddress(); String mo = e.getMo(); - Register dummyReg = e.getThread().newRegister(resultRegister.getType()); - Local localOp = newLocal(dummyReg, expressions.makeBinary(resultRegister, op, value)); + Register dummyReg = e.getFunction().newRegister(resultRegister.getType()); + Local localOp = newLocal(dummyReg, expressions.makeBinary(resultRegister, e.getOperator(), e.getOperand())); Load load = newRMWLoadExclusiveWithMo(resultRegister, address, IMM.extractLoadMo(mo)); Store store = newRMWStoreExclusiveWithMo(address, dummyReg, true, IMM.extractStoreMo(mo)); @@ -267,19 +218,18 @@ public List visitLlvmRMW(LlvmRMW e) { public List visitLlvmCmpXchg(LlvmCmpXchg e) { Register oldValueRegister = e.getStructRegister(0); Register resultRegister = e.getStructRegister(1); - Expression one = expressions.makeOne(resultRegister.getType()); + verify(resultRegister.getType() instanceof BooleanType); - Expression value = e.getMemValue(); Expression address = e.getAddress(); String mo = e.getMo(); Expression expectedValue = e.getExpectedValue(); Local casCmpResult = newLocal(resultRegister, expressions.makeEQ(oldValueRegister, expectedValue)); Label casEnd = newLabel("CAS_end"); - CondJump branchOnCasCmpResult = newJump(expressions.makeNEQ(resultRegister, one), casEnd); + CondJump branchOnCasCmpResult = newJumpUnless(resultRegister, casEnd); Load load = newRMWLoadExclusiveWithMo(oldValueRegister, address, IMM.extractLoadMo(mo)); - Store store = newRMWStoreExclusiveWithMo(address, value, true, IMM.extractStoreMo(mo)); + Store store = newRMWStoreExclusiveWithMo(address, e.getStoreValue(), true, IMM.extractStoreMo(mo)); return eventSequence( load, diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorLKMM.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorLKMM.java index 8ce9690e68..4f229e321f 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorLKMM.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorLKMM.java @@ -3,20 +3,13 @@ import com.dat3m.dartagnan.expression.BNonDet; import com.dat3m.dartagnan.expression.Expression; import com.dat3m.dartagnan.expression.ExpressionFactory; -import com.dat3m.dartagnan.expression.IValue; -import com.dat3m.dartagnan.expression.type.IntegerType; import com.dat3m.dartagnan.expression.type.TypeFactory; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.EventFactory; import com.dat3m.dartagnan.program.event.Tag; -import com.dat3m.dartagnan.program.event.Tag.C11; import com.dat3m.dartagnan.program.event.core.*; import com.dat3m.dartagnan.program.event.core.rmw.RMWStore; import com.dat3m.dartagnan.program.event.lang.linux.*; -import com.dat3m.dartagnan.program.event.lang.pthread.Create; -import com.dat3m.dartagnan.program.event.lang.pthread.End; -import com.dat3m.dartagnan.program.event.lang.pthread.Join; -import com.dat3m.dartagnan.program.event.lang.pthread.Start; import java.util.List; @@ -30,99 +23,56 @@ protected VisitorLKMM(boolean forceStart) { } @Override - public List visitCreate(Create e) { - Store store = newCoreStore(e.getAddress(), e.getMemValue(), Tag.Linux.MO_RELEASE); - store.addTags(C11.PTHREAD); - - return eventSequence( - store - ); - } - - @Override - public List visitEnd(End e) { - //TODO boolean - return eventSequence( - newCoreStore(e.getAddress(), expressions.makeZero(types.getArchType()), Tag.Linux.MO_RELEASE) - ); - } - - @Override - public List visitJoin(Join e) { + public List visitLKMMAddUnless(LKMMAddUnless e) { Register resultRegister = e.getResultRegister(); - IValue zero = expressions.makeZero(resultRegister.getType()); - Load load = newCoreLoad(resultRegister, e.getAddress(), Tag.Linux.MO_ACQUIRE); - load.addTags(C11.PTHREAD); - - return eventSequence( - load, - newJump(expressions.makeNEQ(resultRegister, zero), (Label) e.getThread().getExit()) - ); - } - - @Override - public List visitStart(Start e) { - Register resultRegister = e.getResultRegister(); - IValue one = expressions.makeOne(resultRegister.getType()); - Load load = newCoreLoad(resultRegister, e.getAddress(), Tag.Linux.MO_ACQUIRE); - load.addTags(Tag.STARTLOAD); - - return eventSequence( - load, - super.visitStart(e), - newJump(expressions.makeNEQ(resultRegister, one), (Label) e.getThread().getExit()) - ); - } - - @Override - public List visitRMWAddUnless(RMWAddUnless e) { - Register resultRegister = e.getResultRegister(); - Register dummy = e.getThread().newRegister(resultRegister.getType()); + Expression operand = e.getOperand(); + Register dummy = e.getFunction().newRegister(operand.getType()); Expression cmp = e.getCmp(); - Expression value = e.getMemValue(); Expression address = e.getAddress(); + Expression unexpected = expressions.makeNEQ(dummy, cmp); Label success = newLabel("RMW_success"); Label end = newLabel("RMW_end"); Load rmwLoad; return eventSequence( - newJump(new BNonDet(), success), + newJump(new BNonDet(types.getBooleanType()), success), newCoreLoad(dummy, address, Tag.Linux.MO_ONCE), newAssume(expressions.makeEQ(dummy, cmp)), newGoto(end), success, // RMW success branch newCoreMemoryBarrier(), rmwLoad = newRMWLoadWithMo(dummy, address, Tag.Linux.MO_ONCE), - newAssume(expressions.makeNEQ(dummy, cmp)), - newRMWStoreWithMo(rmwLoad, address, expressions.makeADD(dummy, value), Tag.Linux.MO_ONCE), + newAssume(unexpected), + newRMWStoreWithMo(rmwLoad, address, expressions.makeADD(dummy, operand), Tag.Linux.MO_ONCE), newCoreMemoryBarrier(), end, - newLocal(resultRegister, expressions.makeNEQ(dummy, cmp)) + newLocal(resultRegister, expressions.makeCast(unexpected, resultRegister.getType())) ); } @Override - public List visitRMWCmpXchg(RMWCmpXchg e) { + public List visitLKMMCmpXchg(LKMMCmpXchg e) { Register resultRegister = e.getResultRegister(); - Expression cmp = e.getCmp(); - Expression value = e.getMemValue(); + Expression cmp = e.getExpectedValue(); Expression address = e.getAddress(); String mo = e.getMo(); Label success = newLabel("CAS_success"); Label end = newLabel("CAS_end"); - Register dummy = e.getThread().newRegister(resultRegister.getType()); + Register dummy = e.getFunction().newRegister(resultRegister.getType()); Load casLoad; return eventSequence( - newJump(new BNonDet(), success), + newJump(new BNonDet(types.getBooleanType()), success), + // Cas failure branch newCoreLoad(dummy, address, Tag.Linux.MO_ONCE), newAssume(expressions.makeNEQ(dummy, cmp)), newGoto(end), - success, // CAS success branch + success, + // CAS success branch mo.equals(Tag.Linux.MO_MB) ? newCoreMemoryBarrier() : null, casLoad = newRMWLoadWithMo(dummy, address, Tag.Linux.loadMO(mo)), newAssume(expressions.makeEQ(dummy, cmp)), - newRMWStoreWithMo(casLoad, address, value, Tag.Linux.storeMO(mo)), + newRMWStoreWithMo(casLoad, address, e.getStoreValue(), Tag.Linux.storeMO(mo)), mo.equals(Tag.Linux.MO_MB) ? newCoreMemoryBarrier() : null, end, newLocal(resultRegister, dummy) @@ -130,67 +80,67 @@ public List visitRMWCmpXchg(RMWCmpXchg e) { } @Override - public List visitRMWFetchOp(RMWFetchOp e) { + public List visitLKMMFetchOp(LKMMFetchOp e) { Register resultRegister = e.getResultRegister(); String mo = e.getMo(); Expression address = e.getAddress(); - Expression value = e.getMemValue(); - Register dummy = e.getThread().newRegister(resultRegister.getType()); + Register dummy = e.getFunction().newRegister(resultRegister.getType()); Fence optionalMbBefore = mo.equals(Tag.Linux.MO_MB) ? newCoreMemoryBarrier() : null; Load load = newRMWLoadWithMo(dummy, address, Tag.Linux.loadMO(mo)); Fence optionalMbAfter = mo.equals(Tag.Linux.MO_MB) ? newCoreMemoryBarrier() : null; + Expression storeValue = expressions.makeBinary(dummy, e.getOperator(), e.getOperand()); return eventSequence( optionalMbBefore, load, - newRMWStoreWithMo(load, address, expressions.makeBinary(dummy, e.getOp(), value), Tag.Linux.storeMO(mo)), + newRMWStoreWithMo(load, address, storeValue, Tag.Linux.storeMO(mo)), newLocal(resultRegister, dummy), optionalMbAfter ); } @Override - public List visitRMWOp(RMWOp e) { + public List visitLKMMOpNoReturn(LKMMOpNoReturn e) { Expression address = e.getAddress(); - Register resultRegister = e.getResultRegister(); - Register dummy = e.getThread().newRegister(resultRegister.getType()); + Register dummy = e.getFunction().newRegister(types.getArchType()); + Expression storeValue = expressions.makeBinary(dummy, e.getOperator(), e.getOperand()); Load load = newRMWLoadWithMo(dummy, address, Tag.Linux.MO_ONCE); load.addTags(Tag.Linux.NORETURN); return eventSequence( load, - newRMWStoreWithMo(load, address, expressions.makeBinary(dummy, e.getOp(), e.getMemValue()), Tag.Linux.MO_ONCE) + newRMWStoreWithMo(load, address, storeValue, Tag.Linux.MO_ONCE) ); } @Override - public List visitRMWOpAndTest(RMWOpAndTest e) { + public List visitLKMMOpAndTest(LKMMOpAndTest e) { Register resultRegister = e.getResultRegister(); Expression address = e.getAddress(); - IntegerType type = resultRegister.getType(); - - Register dummy = e.getThread().newRegister(type); + Expression operand = e.getOperand(); + Register dummy = e.getFunction().newRegister(operand.getType()); Load load = newRMWLoadWithMo(dummy, address, Tag.Linux.MO_ONCE); + Expression testResult = expressions.makeNot(expressions.makeBooleanCast(dummy)); return eventSequence( newCoreMemoryBarrier(), load, - newLocal(dummy, expressions.makeBinary(dummy, e.getOp(), e.getMemValue())), + newLocal(dummy, expressions.makeBinary(dummy, e.getOperator(), operand)), newRMWStoreWithMo(load, address, dummy, Tag.Linux.MO_ONCE), - newLocal(resultRegister, expressions.makeEQ(dummy, expressions.makeZero(type))), + newLocal(resultRegister, expressions.makeCast(testResult, resultRegister.getType())), newCoreMemoryBarrier() ); } @Override - public List visitRMWOpReturn(RMWOpReturn e) { + public List visitLKMMOpReturn(LKMMOpReturn e) { Register resultRegister = e.getResultRegister(); Expression address = e.getAddress(); String mo = e.getMo(); - Register dummy = e.getThread().newRegister(resultRegister.getType()); + Register dummy = e.getFunction().newRegister(resultRegister.getType()); Load load = newRMWLoadWithMo(dummy, address, Tag.Linux.loadMO(mo)); Fence optionalMbBefore = mo.equals(Tag.Linux.MO_MB) ? newCoreMemoryBarrier() : null; Fence optionalMbAfter = mo.equals(Tag.Linux.MO_MB) ? newCoreMemoryBarrier() : null; @@ -198,7 +148,7 @@ public List visitRMWOpReturn(RMWOpReturn e) { return eventSequence( optionalMbBefore, load, - newLocal(dummy, expressions.makeBinary(dummy, e.getOp(), e.getMemValue())), + newLocal(dummy, expressions.makeBinary(dummy, e.getOperator(), e.getOperand())), newRMWStoreWithMo(load, address, dummy, Tag.Linux.storeMO(mo)), newLocal(resultRegister, dummy), optionalMbAfter @@ -227,12 +177,12 @@ public List visitLKMMStore(LKMMStore e) { } @Override - public List visitRMWXchg(RMWXchg e) { + public List visitLKMMXchg(LKMMXchg e) { Register resultRegister = e.getResultRegister(); String mo = e.getMo(); Expression address = e.getAddress(); - Register dummy = e.getThread().newRegister(resultRegister.getType()); + Register dummy = e.getFunction().newRegister(resultRegister.getType()); Load load = newRMWLoadWithMo(dummy, address, Tag.Linux.loadMO(mo)); Fence optionalMbBefore = mo.equals(Tag.Linux.MO_MB) ? newCoreMemoryBarrier() : null; Fence optionalMbAfter = mo.equals(Tag.Linux.MO_MB) ? newCoreMemoryBarrier() : null; @@ -240,7 +190,7 @@ public List visitRMWXchg(RMWXchg e) { return eventSequence( optionalMbBefore, load, - newRMWStoreWithMo(load, address, e.getMemValue(), Tag.Linux.storeMO(mo)), + newRMWStoreWithMo(load, address, e.getValue(), Tag.Linux.storeMO(mo)), newLocal(resultRegister, dummy), optionalMbAfter ); @@ -248,14 +198,14 @@ public List visitRMWXchg(RMWXchg e) { @Override public List visitLKMMLock(LKMMLock e) { - Register dummy = e.getThread().newRegister(types.getArchType()); - Expression zero = expressions.makeZero(dummy.getType()); + Register dummy = e.getFunction().newRegister(types.getArchType()); + Expression nonzeroDummy = expressions.makeBooleanCast(dummy); Load lockRead = newLockRead(dummy, e.getLock()); // In litmus tests, spin locks are guaranteed to succeed, i.e. its read part gets value 0 - Event checkLockValue = e.getThread().getProgram().getFormat().equals(LITMUS) ? - newAssume(expressions.makeEQ(dummy, zero)) : - newJump(expressions.makeNEQ(dummy, zero), (Label) e.getThread().getExit()); + Event checkLockValue = e.getFunction().getProgram().getFormat().equals(LITMUS) ? + newAssume(expressions.makeNot(nonzeroDummy)) : + newJump(nonzeroDummy, (Label) e.getThread().getExit()); return eventSequence( lockRead, checkLockValue, diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorPTX.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorPTX.java index 97c892f2bb..ca5f45e9da 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorPTX.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorPTX.java @@ -3,8 +3,8 @@ import com.dat3m.dartagnan.expression.Expression; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.Tag; -import com.dat3m.dartagnan.program.event.arch.ptx.AtomOp; -import com.dat3m.dartagnan.program.event.arch.ptx.RedOp; +import com.dat3m.dartagnan.program.event.arch.ptx.PTXAtomOp; +import com.dat3m.dartagnan.program.event.arch.ptx.PTXRedOp; import com.dat3m.dartagnan.program.event.core.Event; import com.dat3m.dartagnan.program.event.core.Load; import com.dat3m.dartagnan.program.event.core.rmw.RMWStore; @@ -20,15 +20,14 @@ protected VisitorPTX(boolean forceStart) { } @Override - public List visitPtxAtomOp(AtomOp e) { + public List visitPtxAtomOp(PTXAtomOp e) { Register resultRegister = e.getResultRegister(); String mo = e.getMo(); Expression address = e.getAddress(); - Expression value = e.getMemValue(); - Register dummy = e.getThread().newRegister(resultRegister.getType()); + Register dummy = e.getFunction().newRegister(resultRegister.getType()); Load load = newRMWLoadWithMo(dummy, address, Tag.PTX.loadMO(mo)); RMWStore store = newRMWStoreWithMo(load, address, - expressions.makeBinary(dummy, e.getOp(), value), Tag.PTX.storeMO(mo)); + expressions.makeBinary(dummy, e.getOperator(), e.getOperand()), Tag.PTX.storeMO(mo)); load.addTags(Tag.PTX.getScopeTag(e), Tag.PTX.getProxyTag(e)); store.addTags(Tag.PTX.getScopeTag(e), Tag.PTX.getProxyTag(e)); return eventSequence( @@ -39,13 +38,12 @@ public List visitPtxAtomOp(AtomOp e) { } @Override - public List visitPtxRedOp(RedOp e) { + public List visitPtxRedOp(PTXRedOp e) { Expression address = e.getAddress(); - Register resultRegister = e.getResultRegister(); - Register dummy = e.getThread().newRegister(resultRegister.getType()); + Register dummy = e.getFunction().newRegister(types.getArchType()); Load load = newRMWLoadWithMo(dummy, address, Tag.PTX.loadMO(e.getMo())); RMWStore store = newRMWStoreWithMo(load, address, - expressions.makeBinary(dummy, e.getOp(), e.getMemValue()), Tag.PTX.storeMO(e.getMo())); + expressions.makeBinary(dummy, e.getOperator(), e.getOperand()), Tag.PTX.storeMO(e.getMo())); load.addTags(Tag.PTX.getScopeTag(e), Tag.PTX.getProxyTag(e)); store.addTags(Tag.PTX.getScopeTag(e), Tag.PTX.getProxyTag(e)); return eventSequence( diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorPower.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorPower.java index 535c2aa21d..f737e0a9cb 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorPower.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorPower.java @@ -1,8 +1,9 @@ package com.dat3m.dartagnan.program.processing.compilation; import com.dat3m.dartagnan.expression.Expression; -import com.dat3m.dartagnan.expression.op.IOpBin; +import com.dat3m.dartagnan.expression.type.BooleanType; import com.dat3m.dartagnan.expression.type.IntegerType; +import com.dat3m.dartagnan.expression.type.Type; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.Tag; import com.dat3m.dartagnan.program.event.Tag.C11; @@ -10,12 +11,15 @@ import com.dat3m.dartagnan.program.event.lang.catomic.*; import com.dat3m.dartagnan.program.event.lang.linux.*; import com.dat3m.dartagnan.program.event.lang.llvm.*; -import com.dat3m.dartagnan.program.event.lang.pthread.*; +import com.dat3m.dartagnan.program.event.lang.pthread.InitLock; +import com.dat3m.dartagnan.program.event.lang.pthread.Lock; +import com.dat3m.dartagnan.program.event.lang.pthread.Unlock; import java.util.List; import static com.dat3m.dartagnan.program.event.EventFactory.*; import static com.dat3m.dartagnan.program.processing.compilation.VisitorPower.PowerScheme.LEADING_SYNC; +import static com.google.common.base.Verify.verify; public class VisitorPower extends VisitorBase { @@ -40,62 +44,6 @@ protected VisitorPower(boolean forceStart, boolean useRC11Scheme, PowerScheme cT // ========================================= PTHREAD =========================================== // ============================================================================================= - @Override - public List visitCreate(Create e) { - Store store = newStore(e.getAddress(), e.getMemValue()); - store.addTags(C11.PTHREAD); - - return eventSequence( - Power.newSyncBarrier(), - store - ); - } - - @Override - public List visitEnd(End e) { - return eventSequence( - Power.newSyncBarrier(), - newStore(e.getAddress(), expressions.makeZero(types.getArchType())) - ); - } - - @Override - public List visitJoin(Join e) { - Register resultRegister = e.getResultRegister(); - Expression zero = expressions.makeZero(resultRegister.getType()); - Load load = newLoad(resultRegister, e.getAddress()); - load.addTags(C11.PTHREAD); - Label label = newLabel("Jump_" + e.getGlobalId()); - CondJump fakeCtrlDep = newFakeCtrlDep(resultRegister, label); - - return eventSequence( - load, - fakeCtrlDep, - label, - Power.newISyncBarrier(), - newJump(expressions.makeNEQ(resultRegister, zero), (Label) e.getThread().getExit()) - ); - } - - @Override - public List visitStart(Start e) { - Register resultRegister = e.getResultRegister(); - Expression one = expressions.makeOne(resultRegister.getType()); - Load load = newLoad(resultRegister, e.getAddress()); - load.addTags(Tag.STARTLOAD); - Label label = newLabel("Jump_" + e.getGlobalId()); - CondJump fakeCtrlDep = newFakeCtrlDep(resultRegister, label); - - return eventSequence( - load, - fakeCtrlDep, - label, - Power.newISyncBarrier(), - super.visitStart(e), - newJump(expressions.makeNEQ(resultRegister, one), (Label) e.getThread().getExit()) - ); - } - @Override public List visitInitLock(InitLock e) { return eventSequence( @@ -105,14 +53,13 @@ public List visitInitLock(InitLock e) { @Override public List visitLock(Lock e) { - Register dummy = e.getThread().newRegister(types.getArchType()); - Expression zero = expressions.makeZero(dummy.getType()); + Register dummy = e.getFunction().newRegister(types.getArchType()); Label label = newLabel("FakeDep"); // We implement locks as spinlocks which are guaranteed to succeed, i.e. we can // use assumes. The fake control dependency + isync guarantee acquire semantics. return eventSequence( newRMWLoadExclusive(dummy, e.getAddress()), - newAssume(expressions.makeEQ(dummy, zero)), + newAssume(expressions.makeNot(expressions.makeBooleanCast(dummy))), Power.newRMWStoreConditional(e.getAddress(), expressions.makeOne(types.getArchType()), true), // Fake dependency to guarantee acquire semantics newFakeCtrlDep(dummy, label), @@ -207,7 +154,7 @@ public List visitLlvmXchg(LlvmXchg e) { // Power does not have mo tags, thus we use null Load load = newRMWLoadExclusive(resultRegister, address); - Store store = Power.newRMWStoreConditional(address, e.getMemValue(), true); + Store store = Power.newRMWStoreConditional(address, e.getValue(), true); Label label = newLabel("FakeDep"); Event fakeCtrlDep = newFakeCtrlDep(resultRegister, label); @@ -251,8 +198,8 @@ public List visitLlvmRMW(LlvmRMW e) { Expression address = e.getAddress(); String mo = e.getMo(); - Register dummyReg = e.getThread().newRegister(resultRegister.getType()); - Local localOp = newLocal(dummyReg, expressions.makeBinary(resultRegister, e.getOp(), e.getMemValue())); + Register dummyReg = e.getFunction().newRegister(resultRegister.getType()); + Local localOp = newLocal(dummyReg, expressions.makeBinary(resultRegister, e.getOperator(), e.getOperand())); // Power does not have mo tags, thus we use null Load load = newRMWLoadExclusive(resultRegister, address); @@ -304,17 +251,17 @@ public List visitLlvmRMW(LlvmRMW e) { public List visitLlvmCmpXchg(LlvmCmpXchg e) { Register oldValueRegister = e.getStructRegister(0); Register resultRegister = e.getStructRegister(1); + verify(resultRegister.getType() instanceof BooleanType); - Expression one = expressions.makeOne(resultRegister.getType()); Expression address = e.getAddress(); String mo = e.getMo(); Local casCmpResult = newLocal(resultRegister, expressions.makeEQ(oldValueRegister, e.getExpectedValue())); Label casEnd = newLabel("CAS_end"); - CondJump branchOnCasCmpResult = newJump(expressions.makeNEQ(resultRegister, one), casEnd); + CondJump branchOnCasCmpResult = newJumpUnless(resultRegister, casEnd); Load load = newRMWLoadExclusive(oldValueRegister, address); - Store store = Power.newRMWStoreConditional(address, e.getMemValue(), true); + Store store = Power.newRMWStoreConditional(address, e.getStoreValue(), true); Fence optionalBarrierBefore = null; Fence optionalBarrierAfter = null; @@ -366,37 +313,36 @@ public List visitLlvmFence(LlvmFence e) { @Override public List visitAtomicCmpXchg(AtomicCmpXchg e) { Register resultRegister = e.getResultRegister(); - Expression one = expressions.makeOne(resultRegister.getType()); Expression address = e.getAddress(); - Expression value = e.getMemValue(); + Expression value = e.getStoreValue(); String mo = e.getMo(); - Expression expectedAddr = e.getExpectedAddr(); - IntegerType type = resultRegister.getType(); - - Register regExpected = e.getThread().newRegister(type); - Register regValue = e.getThread().newRegister(type); + Expression expectedAddr = e.getAddressOfExpected(); + Type type = resultRegister.getType(); + Register booleanResultRegister = type instanceof BooleanType ? resultRegister : + e.getThread().newRegister(types.getBooleanType()); + Local castResult = type instanceof BooleanType ? null : + newLocal(resultRegister, expressions.makeCast(booleanResultRegister, type)); + Register regExpected = e.getFunction().newRegister(type); + Register regValue = e.getFunction().newRegister(type); Load loadExpected = newLoad(regExpected, expectedAddr); Store storeExpected = newStore(expectedAddr, regValue); Label casFail = newLabel("CAS_fail"); Label casEnd = newLabel("CAS_end"); - Local casCmpResult = newLocal(resultRegister, expressions.makeEQ(regValue, regExpected)); - CondJump branchOnCasCmpResult = newJump(expressions.makeNEQ(resultRegister, one), casFail); + Local casCmpResult = newLocal(booleanResultRegister, expressions.makeEQ(regValue, regExpected)); + CondJump branchOnCasCmpResult = newJumpUnless(booleanResultRegister, casFail); CondJump gotoCasEnd = newGoto(casEnd); - - // Power does not have mo tags, thus we use the emptz string + // Power does not have mo tags, thus we use the empty string Load loadValue = newRMWLoadExclusive(regValue, address); Store storeValue = Power.newRMWStoreConditional(address, value, e.isStrong()); ExecutionStatus optionalExecStatus = null; Local optionalUpdateCasCmpResult = null; if (e.isWeak()) { - Register statusReg = e.getThread().newRegister(type); + Register statusReg = e.getFunction().newRegister(types.getBooleanType()); optionalExecStatus = newExecutionStatus(statusReg, storeValue); - optionalUpdateCasCmpResult = newLocal(resultRegister, expressions.makeNot(statusReg)); + optionalUpdateCasCmpResult = newLocal(booleanResultRegister, expressions.makeNot(statusReg)); } - Fence optionalBarrierBefore = null; Fence optionalBarrierAfter = null; - switch (mo) { case C11.MO_SC: if (cToPowerScheme.equals(LEADING_SYNC)) { @@ -418,7 +364,6 @@ public List visitAtomicCmpXchg(AtomicCmpXchg e) { optionalBarrierAfter = Power.newISyncBarrier(); break; } - return eventSequence( optionalBarrierBefore, loadExpected, @@ -432,20 +377,19 @@ public List visitAtomicCmpXchg(AtomicCmpXchg e) { casFail, storeExpected, casEnd, - optionalBarrierAfter + optionalBarrierAfter, + castResult ); } @Override public List visitAtomicFetchOp(AtomicFetchOp e) { Register resultRegister = e.getResultRegister(); - IOpBin op = e.getOp(); - Expression value = e.getMemValue(); Expression address = e.getAddress(); String mo = e.getMo(); - Register dummyReg = e.getThread().newRegister(resultRegister.getType()); - Local localOp = newLocal(dummyReg, expressions.makeBinary(resultRegister, op, value)); + Register dummyReg = e.getFunction().newRegister(resultRegister.getType()); + Local localOp = newLocal(dummyReg, expressions.makeBinary(resultRegister, e.getOperator(), e.getOperand())); Load load = newRMWLoadExclusive(resultRegister, address); Store store = Power.newRMWStoreConditional(address, dummyReg, true); @@ -580,12 +524,11 @@ public List visitAtomicThreadFence(AtomicThreadFence e) { @Override public List visitAtomicXchg(AtomicXchg e) { Register resultRegister = e.getResultRegister(); - Expression value = e.getMemValue(); Expression address = e.getAddress(); String mo = e.getMo(); Load load = newRMWLoadExclusive(resultRegister, address); - Store store = Power.newRMWStoreConditional(address, value, true); + Store store = Power.newRMWStoreConditional(address, e.getValue(), true); Label label = newLabel("FakeDep"); Event fakeCtrlDep = newFakeCtrlDep(resultRegister, label); @@ -692,10 +635,10 @@ public List visitLKMMFence(LKMMFence e) { case Tag.Linux.BARRIER: optionalMemoryBarrier = null; break; - default: - throw new UnsupportedOperationException("Compilation of fence " + e.getName() + " is not supported"); - } - + default: + throw new UnsupportedOperationException("Compilation of fence " + e.getName() + " is not supported"); + } + return eventSequence( optionalMemoryBarrier ); @@ -730,18 +673,17 @@ public List visitLKMMFence(LKMMFence e) { // ============================================================================================= @Override - public List visitRMWCmpXchg(RMWCmpXchg e) { + public List visitLKMMCmpXchg(LKMMCmpXchg e) { Register resultRegister = e.getResultRegister(); Expression address = e.getAddress(); - Expression value = e.getMemValue(); String mo = e.getMo(); - Register dummy = e.getThread().newRegister(e.getResultRegister().getType()); + Register dummy = e.getFunction().newRegister(e.getResultRegister().getType()); Label casEnd = newLabel("CAS_end"); - CondJump branchOnCasCmpResult = newJump(expressions.makeNEQ(dummy, e.getCmp()), casEnd); + CondJump branchOnCasCmpResult = newJump(expressions.makeNEQ(dummy, e.getExpectedValue()), casEnd); Load load = newRMWLoadExclusive(dummy, address); - Store store = Power.newRMWStoreConditional(address, value, true); + Store store = Power.newRMWStoreConditional(address, e.getStoreValue(), true); Label label = newLabel("FakeDep"); Event fakeCtrlDep = newFakeCtrlDep(dummy, label); @@ -764,15 +706,14 @@ public List visitRMWCmpXchg(RMWCmpXchg e) { } @Override - public List visitRMWXchg(RMWXchg e) { + public List visitLKMMXchg(LKMMXchg e) { Register resultRegister = e.getResultRegister(); - Expression value = e.getMemValue(); Expression address = e.getAddress(); String mo = e.getMo(); - Register dummy = e.getThread().newRegister(resultRegister.getType()); + Register dummy = e.getFunction().newRegister(resultRegister.getType()); Load load = newRMWLoadExclusive(dummy, address); - Store store = Power.newRMWStoreConditional(address, value, true); + Store store = Power.newRMWStoreConditional(address, e.getValue(), true); Label label = newLabel("FakeDep"); Event fakeCtrlDep = newFakeCtrlDep(dummy, label); @@ -793,17 +734,15 @@ public List visitRMWXchg(RMWXchg e) { } @Override - public List visitRMWOp(RMWOp e) { - Register resultRegister = e.getResultRegister(); - IOpBin op = e.getOp(); - Expression value = e.getMemValue(); + public List visitLKMMOpNoReturn(LKMMOpNoReturn e) { Expression address = e.getAddress(); String mo = e.getMo(); - Register dummy = e.getThread().newRegister(resultRegister.getType()); + Register dummy = e.getFunction().newRegister(types.getArchType()); + Expression storeValue = expressions.makeBinary(dummy, e.getOperator(), e.getOperand()); // Power does not have mo tags, thus we use the empty string Load load = newRMWLoadExclusive(dummy, address); - Store store = Power.newRMWStoreConditional(address, expressions.makeBinary(dummy, op, value), true); + Store store = Power.newRMWStoreConditional(address, storeValue, true); Label label = newLabel("FakeDep"); Event fakeCtrlDep = newFakeCtrlDep(dummy, label); @@ -826,14 +765,12 @@ public List visitRMWOp(RMWOp e) { ; @Override - public List visitRMWOpReturn(RMWOpReturn e) { + public List visitLKMMOpReturn(LKMMOpReturn e) { Register resultRegister = e.getResultRegister(); - IOpBin op = e.getOp(); - Expression value = e.getMemValue(); Expression address = e.getAddress(); String mo = e.getMo(); - Register dummy = e.getThread().newRegister(resultRegister.getType()); + Register dummy = e.getFunction().newRegister(resultRegister.getType()); Load load = newRMWLoadExclusive(dummy, address); Store store = Power.newRMWStoreConditional(address, dummy, true); Label label = newLabel("FakeDep"); @@ -848,7 +785,7 @@ public List visitRMWOpReturn(RMWOpReturn e) { return eventSequence( optionalMemoryBarrierBefore, load, - newLocal(dummy, expressions.makeBinary(dummy, op, value)), + newLocal(dummy, expressions.makeBinary(dummy, e.getOperator(), e.getOperand())), store, newLocal(resultRegister, dummy), fakeCtrlDep, @@ -860,15 +797,14 @@ public List visitRMWOpReturn(RMWOpReturn e) { ; @Override - public List visitRMWFetchOp(RMWFetchOp e) { + public List visitLKMMFetchOp(LKMMFetchOp e) { Register resultRegister = e.getResultRegister(); - Expression value = e.getMemValue(); Expression address = e.getAddress(); String mo = e.getMo(); - Register dummy = e.getThread().newRegister(resultRegister.getType()); + Register dummy = e.getFunction().newRegister(resultRegister.getType()); Load load = newRMWLoadExclusive(dummy, address); - Store store = Power.newRMWStoreConditional(address, expressions.makeBinary(dummy, e.getOp(), value), true); + Store store = Power.newRMWStoreConditional(address, expressions.makeBinary(dummy, e.getOperator(), e.getOperand()), true); Label label = newLabel("FakeDep"); Event fakeCtrlDep = newFakeCtrlDep(dummy, label); @@ -894,25 +830,23 @@ public List visitRMWFetchOp(RMWFetchOp e) { // https://elixir.bootlin.com/linux/v5.18/source/arch/powerpc/include/asm/atomic.h // Since RMWAddUnless does not care about any returned value, we don't need the final sub @Override - public List visitRMWAddUnless(RMWAddUnless e) { + public List visitLKMMAddUnless(LKMMAddUnless e) { Register resultRegister = e.getResultRegister(); Expression address = e.getAddress(); - Expression value = e.getMemValue(); String mo = e.getMo(); - IntegerType type = resultRegister.getType(); - Expression zero = expressions.makeZero(type); + Type type = resultRegister.getType(); - Register regValue = e.getThread().newRegister(type); + Register regValue = e.getFunction().newRegister(type); // Power does not have mo tags, thus we use the empty string Load load = newRMWLoadExclusive(regValue, address); - Store store = Power.newRMWStoreConditional(address, expressions.makeADD(regValue, value), true); + Store store = Power.newRMWStoreConditional(address, expressions.makeADD(regValue, e.getOperand()), true); Label label = newLabel("FakeDep"); Event fakeCtrlDep = newFakeCtrlDep(regValue, label); - Register dummy = e.getThread().newRegister(type); + Register dummy = e.getFunction().newRegister(types.getBooleanType()); Expression unless = e.getCmp(); Label cauEnd = newLabel("CAddU_end"); - CondJump branchOnCauCmpResult = newJump(expressions.makeEQ(dummy, zero), cauEnd); + CondJump branchOnCauCmpResult = newJumpUnless(dummy, cauEnd); Fence optionalMemoryBarrierBefore = mo.equals(Tag.Linux.MO_MB) ? Power.newSyncBarrier() : mo.equals(Tag.Linux.MO_RELEASE) ? Power.newLwSyncBarrier() : null; @@ -929,7 +863,7 @@ public List visitRMWAddUnless(RMWAddUnless e) { label, optionalMemoryBarrierAfter, cauEnd, - newLocal(resultRegister, dummy) + newLocal(resultRegister, expressions.makeCast(dummy, resultRegister.getType())) ); } @@ -940,22 +874,17 @@ public List visitRMWAddUnless(RMWAddUnless e) { // https://elixir.bootlin.com/linux/v5.18/source/scripts/atomic/fallbacks/inc_and_test // https://elixir.bootlin.com/linux/v5.18/source/scripts/atomic/fallbacks/dec_and_test @Override - public List visitRMWOpAndTest(RMWOpAndTest e) { + public List visitLKMMOpAndTest(LKMMOpAndTest e) { Register resultRegister = e.getResultRegister(); - IntegerType type = resultRegister.getType(); - Expression zero = expressions.makeZero(type); - IOpBin op = e.getOp(); - Expression value = e.getMemValue(); Expression address = e.getAddress(); String mo = e.getMo(); - - Register dummy = e.getThread().newRegister(type); - Register retReg = e.getThread().newRegister(type); - Local localOp = newLocal(retReg, expressions.makeBinary(dummy, op, value)); - Local testOp = newLocal(resultRegister, expressions.makeEQ(retReg, zero)); + Register dummy = e.getFunction().newRegister(types.getArchType()); + Expression testResult = expressions.makeNot(expressions.makeBooleanCast(dummy)); Load load = newRMWLoadExclusive(dummy, address); - Store store = Power.newRMWStoreConditional(address, retReg, true); + Local localOp = newLocal(dummy, expressions.makeBinary(dummy, e.getOperator(), e.getOperand())); + Store store = Power.newRMWStoreConditional(address, dummy, true); + Local testOp = newLocal(resultRegister, expressions.makeCast(testResult, resultRegister.getType())); Label label = newLabel("FakeDep"); Event fakeCtrlDep = newFakeCtrlDep(dummy, label); @@ -984,7 +913,7 @@ public List visitLKMMLock(LKMMLock e) { IntegerType type = types.getArchType(); Expression zero = expressions.makeZero(type); Expression one = expressions.makeOne(type); - Register dummy = e.getThread().newRegister(type); + Register dummy = e.getFunction().newRegister(type); Label label = newLabel("FakeDep"); // Spinlock events are guaranteed to succeed, i.e. we can use assumes return eventSequence( diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorRISCV.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorRISCV.java index 3fc96069a6..40de0ed0ed 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorRISCV.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorRISCV.java @@ -1,23 +1,26 @@ package com.dat3m.dartagnan.program.processing.compilation; import com.dat3m.dartagnan.expression.Expression; -import com.dat3m.dartagnan.expression.op.IOpBin; +import com.dat3m.dartagnan.expression.type.BooleanType; import com.dat3m.dartagnan.expression.type.IntegerType; +import com.dat3m.dartagnan.expression.type.Type; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.Tag; -import com.dat3m.dartagnan.program.event.Tag.C11; import com.dat3m.dartagnan.program.event.arch.StoreExclusive; import com.dat3m.dartagnan.program.event.core.*; import com.dat3m.dartagnan.program.event.core.rmw.RMWStoreExclusive; import com.dat3m.dartagnan.program.event.lang.catomic.*; import com.dat3m.dartagnan.program.event.lang.linux.*; import com.dat3m.dartagnan.program.event.lang.llvm.*; -import com.dat3m.dartagnan.program.event.lang.pthread.*; +import com.dat3m.dartagnan.program.event.lang.pthread.InitLock; +import com.dat3m.dartagnan.program.event.lang.pthread.Lock; +import com.dat3m.dartagnan.program.event.lang.pthread.Unlock; import java.util.List; import static com.dat3m.dartagnan.program.event.EventFactory.*; import static com.dat3m.dartagnan.program.event.Tag.Linux.MO_ACQUIRE; +import static com.google.common.base.Verify.verify; //FIXME: Some compilations generate simple load/store operations with memory orderings, however, // it seems that RISCV does not support mo's on arbitrary memory operations (only on LL/SC and AMOs). @@ -49,50 +52,6 @@ public List visitStoreExclusive(StoreExclusive e) { // ========================================= PTHREAD =========================================== // ============================================================================================= - @Override - public List visitCreate(Create e) { - Store store = newStoreWithMo(e.getAddress(), e.getMemValue(), Tag.RISCV.MO_REL); - store.addTags(C11.PTHREAD); - - return eventSequence( - store - ); - } - - @Override - public List visitEnd(End e) { - return eventSequence( - newStoreWithMo(e.getAddress(), expressions.makeZero(types.getArchType()), Tag.RISCV.MO_REL) - ); - } - - @Override - public List visitJoin(Join e) { - Register resultRegister = e.getResultRegister(); - Expression zero = expressions.makeZero(resultRegister.getType()); - Load load = newLoadWithMo(resultRegister, e.getAddress(), Tag.RISCV.MO_ACQ); - load.addTags(C11.PTHREAD); - - return eventSequence( - load, - newJump(expressions.makeNEQ(resultRegister, zero), (Label) e.getThread().getExit()) - ); - } - - @Override - public List visitStart(Start e) { - Register resultRegister = e.getResultRegister(); - Expression one = expressions.makeOne(resultRegister.getType()); - Load load = newLoadWithMo(resultRegister, e.getAddress(), Tag.RISCV.MO_ACQ); - load.addTags(Tag.STARTLOAD); - - return eventSequence( - load, - super.visitStart(e), - newJump(expressions.makeNEQ(resultRegister, one), (Label) e.getThread().getExit()) - ); - } - @Override public List visitInitLock(InitLock e) { return eventSequence( @@ -104,7 +63,7 @@ public List visitInitLock(InitLock e) { @Override public List visitLock(Lock e) { IntegerType type = types.getArchType(); - Register dummy = e.getThread().newRegister(type); + Register dummy = e.getFunction().newRegister(type); Expression zero = expressions.makeZero(type); Expression one = expressions.makeOne(type); // We implement locks as spinlocks which are guaranteed to succeed, i.e. we can use @@ -160,16 +119,11 @@ public List visitLlvmStore(LlvmStore e) { @Override public List visitLlvmXchg(LlvmXchg e) { Register resultRegister = e.getResultRegister(); - Expression value = e.getMemValue(); Expression address = e.getAddress(); String mo = e.getMo(); Load load = newRMWLoadExclusiveWithMo(resultRegister, address, Tag.RISCV.extractLoadMoFromCMo(mo)); - Store store = RISCV.newRMWStoreConditional(address, value, Tag.RISCV.extractStoreMoFromCMo(mo), true); - Register statusReg = e.getThread().newRegister("status(" + e.getGlobalId() + ")", resultRegister.getType()); - // We normally make the following optional. - // Here we make it mandatory to guarantee correct dependencies. - ExecutionStatus execStatus = newExecutionStatusWithDependencyTracking(statusReg, store); + Store store = RISCV.newRMWStoreConditional(address, e.getValue(), Tag.RISCV.extractStoreMoFromCMo(mo), true); Label label = newLabel("FakeDep"); Event fakeCtrlDep = newFakeCtrlDep(resultRegister, label); @@ -177,30 +131,22 @@ public List visitLlvmXchg(LlvmXchg e) { load, fakeCtrlDep, label, - store, - execStatus + store ); } @Override public List visitLlvmRMW(LlvmRMW e) { Register resultRegister = e.getResultRegister(); - IntegerType type = resultRegister.getType(); - IOpBin op = e.getOp(); - Expression value = e.getMemValue(); + Type type = resultRegister.getType(); Expression address = e.getAddress(); String mo = e.getMo(); - Register dummyReg = e.getThread().newRegister(type); - Local localOp = newLocal(dummyReg, expressions.makeBinary(resultRegister, op, value)); + Register dummyReg = e.getFunction().newRegister(type); + Local localOp = newLocal(dummyReg, expressions.makeBinary(resultRegister, e.getOperator(), e.getOperand())); Load load = newRMWLoadExclusiveWithMo(resultRegister, address, Tag.RISCV.extractLoadMoFromCMo(mo)); Store store = RISCV.newRMWStoreConditional(address, dummyReg, Tag.RISCV.extractStoreMoFromCMo(mo), true); - Register statusReg = e.getThread().newRegister("status(" + e.getGlobalId() + ")", type); - // We normally make the following optional. - // Here we make it mandatory to guarantee correct dependencies. - ExecutionStatus execStatus = newExecutionStatusWithDependencyTracking(statusReg, store); - Label label = newLabel("FakeDep"); Event fakeCtrlDep = newFakeCtrlDep(resultRegister, label); @@ -209,8 +155,7 @@ public List visitLlvmRMW(LlvmRMW e) { fakeCtrlDep, label, localOp, - store, - execStatus + store ); } @@ -218,20 +163,20 @@ public List visitLlvmRMW(LlvmRMW e) { public List visitLlvmCmpXchg(LlvmCmpXchg e) { Register oldValueRegister = e.getStructRegister(0); Register resultRegister = e.getStructRegister(1); - Expression one = expressions.makeOne(resultRegister.getType()); + verify(resultRegister.getType() instanceof BooleanType); - Expression value = e.getMemValue(); Expression address = e.getAddress(); String mo = e.getMo(); Expression expectedValue = e.getExpectedValue(); Local casCmpResult = newLocal(resultRegister, expressions.makeEQ(oldValueRegister, expectedValue)); Label casEnd = newLabel("CAS_end"); - CondJump branchOnCasCmpResult = newJump(expressions.makeNEQ(resultRegister, one), casEnd); + CondJump branchOnCasCmpResult = newJumpUnless(resultRegister, casEnd); Load load = newRMWLoadExclusiveWithMo(oldValueRegister, address, Tag.RISCV.extractLoadMoFromCMo(mo)); - Store store = newRMWStoreExclusiveWithMo(address, value, true, Tag.RISCV.extractStoreMoFromCMo(mo)); + Store store = newRMWStoreExclusiveWithMo(address, e.getStoreValue(), true, Tag.RISCV.extractStoreMoFromCMo(mo)); + //TODO: We only do strong CAS here? return eventSequence( load, casCmpResult, @@ -271,31 +216,31 @@ public List visitLlvmFence(LlvmFence e) { @Override public List visitAtomicCmpXchg(AtomicCmpXchg e) { Register resultRegister = e.getResultRegister(); - IntegerType type = resultRegister.getType(); - Expression one = expressions.makeOne(type); + Type type = resultRegister.getType(); Expression address = e.getAddress(); - Expression value = e.getMemValue(); + Expression value = e.getStoreValue(); String mo = e.getMo(); - Expression expectedAddr = e.getExpectedAddr(); - - Register regExpected = e.getThread().newRegister(type); - Register regValue = e.getThread().newRegister(type); + Expression expectedAddr = e.getAddressOfExpected(); + Register booleanResultRegister = type instanceof BooleanType ? resultRegister : + e.getThread().newRegister(types.getBooleanType()); + Local castResult = type instanceof BooleanType ? null : + newLocal(resultRegister, expressions.makeCast(booleanResultRegister, type)); + Register regExpected = e.getFunction().newRegister(type); + Register regValue = e.getFunction().newRegister(type); Load loadExpected = newLoad(regExpected, expectedAddr); Store storeExpected = newStore(expectedAddr, regValue); Label casFail = newLabel("CAS_fail"); Label casEnd = newLabel("CAS_end"); - Local casCmpResult = newLocal(resultRegister, expressions.makeEQ(regValue, regExpected)); - CondJump branchOnCasCmpResult = newJump(expressions.makeNEQ(resultRegister, one), casFail); + Local casCmpResult = newLocal(booleanResultRegister, expressions.makeEQ(regValue, regExpected)); + CondJump branchOnCasCmpResult = newJumpUnless(booleanResultRegister, casFail); CondJump gotoCasEnd = newGoto(casEnd); - Load loadValue = newRMWLoadExclusiveWithMo(regValue, address, Tag.RISCV.extractLoadMoFromCMo(mo)); Store storeValue = RISCV.newRMWStoreConditional(address, value, Tag.RISCV.extractStoreMoFromCMo(mo), e.isStrong()); - Register statusReg = e.getThread().newRegister("status(" + e.getGlobalId() + ")", type); + Register statusReg = e.getFunction().newRegister("status(" + e.getGlobalId() + ")", type); // We normally make the following two events optional. // Here we make them mandatory to guarantee correct dependencies. ExecutionStatus execStatus = newExecutionStatusWithDependencyTracking(statusReg, storeValue); - Local updateCasCmpResult = newLocal(resultRegister, expressions.makeNot(statusReg)); - + Local updateCasCmpResult = newLocal(booleanResultRegister, expressions.makeNot(statusReg)); return eventSequence( loadExpected, loadValue, @@ -307,29 +252,23 @@ public List visitAtomicCmpXchg(AtomicCmpXchg e) { gotoCasEnd, casFail, storeExpected, - casEnd + casEnd, + castResult ); } @Override public List visitAtomicFetchOp(AtomicFetchOp e) { Register resultRegister = e.getResultRegister(); - IntegerType type = resultRegister.getType(); - IOpBin op = e.getOp(); - Expression value = e.getMemValue(); + Type type = resultRegister.getType(); Expression address = e.getAddress(); String mo = e.getMo(); - Register dummyReg = e.getThread().newRegister(type); - Local localOp = newLocal(dummyReg, expressions.makeBinary(resultRegister, op, value)); + Register dummyReg = e.getFunction().newRegister(type); + Local localOp = newLocal(dummyReg, expressions.makeBinary(resultRegister, e.getOperator(), e.getOperand())); Load load = newRMWLoadExclusiveWithMo(resultRegister, address, Tag.RISCV.extractLoadMoFromCMo(mo)); Store store = RISCV.newRMWStoreConditional(address, dummyReg, Tag.RISCV.extractStoreMoFromCMo(mo), true); - Register statusReg = e.getThread().newRegister("status(" + e.getGlobalId() + ")", type); - // We normally make the following optional. - // Here we make it mandatory to guarantee correct dependencies. - ExecutionStatus execStatus = newExecutionStatusWithDependencyTracking(statusReg, store); - Label label = newLabel("FakeDep"); Event fakeCtrlDep = newFakeCtrlDep(resultRegister, label); @@ -338,8 +277,7 @@ public List visitAtomicFetchOp(AtomicFetchOp e) { fakeCtrlDep, label, localOp, - store, - execStatus + store ); } @@ -393,16 +331,11 @@ public List visitAtomicThreadFence(AtomicThreadFence e) { @Override public List visitAtomicXchg(AtomicXchg e) { Register resultRegister = e.getResultRegister(); - Expression value = e.getMemValue(); Expression address = e.getAddress(); String mo = e.getMo(); Load load = newRMWLoadExclusiveWithMo(resultRegister, address, Tag.RISCV.extractLoadMoFromCMo(mo)); - Store store = RISCV.newRMWStoreConditional(address, value, Tag.RISCV.extractStoreMoFromCMo(mo), true); - Register statusReg = e.getThread().newRegister("status(" + e.getGlobalId() + ")", resultRegister.getType()); - // We normally make the following optional. - // Here we make it mandatory to guarantee correct dependencies. - ExecutionStatus execStatus = newExecutionStatusWithDependencyTracking(statusReg, store); + Store store = RISCV.newRMWStoreConditional(address, e.getValue(), Tag.RISCV.extractStoreMoFromCMo(mo), true); Label label = newLabel("FakeDep"); Event fakeCtrlDep = newFakeCtrlDep(resultRegister, label); @@ -410,8 +343,7 @@ public List visitAtomicXchg(AtomicXchg e) { load, fakeCtrlDep, label, - store, - execStatus + store ); } @@ -480,37 +412,36 @@ public List visitLKMMFence(LKMMFence e) { // It seem to be only used for RCU related stuff in the kernel so it makes sense // it is defined in that header file case Tag.Linux.AFTER_UNLOCK_LOCK: - optionalMemoryBarrier = RISCV.newRWRWFence(); - break; + optionalMemoryBarrier = RISCV.newRWRWFence(); + break; // https://elixir.bootlin.com/linux/v6.1/source/include/linux/compiler.h#L86 case Tag.Linux.BARRIER: optionalMemoryBarrier = null; break; - default: - throw new UnsupportedOperationException("Compilation of fence " + e.getName() + " is not supported"); - } + default: + throw new UnsupportedOperationException("Compilation of fence " + e.getName() + " is not supported"); + } return eventSequence( optionalMemoryBarrier ); } - public List visitRMWCmpXchg(RMWCmpXchg e) { + public List visitLKMMCmpXchg(LKMMCmpXchg e) { Register resultRegister = e.getResultRegister(); Expression address = e.getAddress(); - Expression value = e.getMemValue(); String mo = e.getMo(); - Register dummy = e.getThread().newRegister(e.getResultRegister().getType()); - Register statusReg = e.getThread().newRegister(e.getResultRegister().getType()); + Register dummy = e.getFunction().newRegister(e.getResultRegister().getType()); + Register statusReg = e.getFunction().newRegister(types.getBooleanType()); Label casEnd = newLabel("CAS_end"); - CondJump branchOnCasCmpResult = newJump(expressions.makeNEQ(dummy, e.getCmp()), casEnd); + CondJump branchOnCasCmpResult = newJump(expressions.makeNEQ(dummy, e.getExpectedValue()), casEnd); Load load = newRMWLoadExclusive(dummy, address); // TODO: No mo on the load? - Store store = RISCV.newRMWStoreConditional(address, value, mo.equals(Tag.Linux.MO_MB) ? Tag.RISCV.MO_REL : "", true); + Store store = RISCV.newRMWStoreConditional(address, e.getStoreValue(), mo.equals(Tag.Linux.MO_MB) ? Tag.RISCV.MO_REL : "", true); ExecutionStatus status = newExecutionStatusWithDependencyTracking(statusReg, store); Label label = newLabel("FakeDep"); - Event fakeCtrlDep = newJump(expressions.makeEQ(statusReg, expressions.makeZero(types.getArchType())), label); + Event fakeCtrlDep = newJump(statusReg, label); // TODO: Do we really need a fakedep from the store? Fence optionalMemoryBarrierBefore = mo.equals(Tag.Linux.MO_RELEASE) ? RISCV.newRWWFence() : null; Fence optionalMemoryBarrierAfter = mo.equals(Tag.Linux.MO_MB) ? RISCV.newRWRWFence() : mo.equals(Tag.Linux.MO_ACQUIRE) ? RISCV.newRRWFence() : null; @@ -532,22 +463,21 @@ public List visitRMWCmpXchg(RMWCmpXchg e) { // https://five-embeddev.com/riscv-isa-manual/latest/memory.html#sec:memory:porting // The linux kernel uses AMO instructions which we don't yet support @Override - public List visitRMWXchg(RMWXchg e) { + public List visitLKMMXchg(LKMMXchg e) { Register resultRegister = e.getResultRegister(); - IntegerType type = resultRegister.getType(); - Expression value = e.getMemValue(); + Type type = resultRegister.getType(); Expression address = e.getAddress(); String mo = e.getMo(); - Register dummy = e.getThread().newRegister(type); - Register statusReg = e.getThread().newRegister(type); + Register dummy = e.getFunction().newRegister(type); + Register statusReg = e.getFunction().newRegister(types.getBooleanType()); String moLoad = mo.equals(Tag.Linux.MO_MB) || mo.equals(Tag.Linux.MO_ACQUIRE) ? Tag.RISCV.MO_ACQ : ""; Load load = newRMWLoadExclusiveWithMo(dummy, address, moLoad); String moStore = mo.equals(Tag.Linux.MO_MB) || mo.equals(Tag.Linux.MO_RELEASE) ? Tag.RISCV.MO_ACQ_REL : ""; - Store store = RISCV.newRMWStoreConditional(address, value, moStore, true); + Store store = RISCV.newRMWStoreConditional(address, e.getValue(), moStore, true); ExecutionStatus status = newExecutionStatusWithDependencyTracking(statusReg, store); Label label = newLabel("FakeDep"); - Event fakeCtrlDep = newJump(expressions.makeEQ(statusReg, expressions.makeZero(type)), label); + Event fakeCtrlDep = newJump(statusReg, label); // TODO: Do we really need a fakedep from the store? Fence optionalMemoryBarrierAfter = mo.equals(Tag.Linux.MO_MB) ? RISCV.newRWRWFence() : mo.equals(Tag.Linux.MO_ACQUIRE) ? RISCV.newRRWFence() : null; return eventSequence( @@ -565,23 +495,21 @@ public List visitRMWXchg(RMWXchg e) { // https://five-embeddev.com/riscv-isa-manual/latest/memory.html#sec:memory:porting // The linux kernel uses AMO instructions which we don't yet support @Override - public List visitRMWOp(RMWOp e) { - Register resultRegister = e.getResultRegister(); - IntegerType type = resultRegister.getType(); - IOpBin op = e.getOp(); - Expression value = e.getMemValue(); + public List visitLKMMOpNoReturn(LKMMOpNoReturn e) { Expression address = e.getAddress(); String mo = e.getMo(); + IntegerType type = types.getArchType(); - Register dummy = e.getThread().newRegister(type); - Register statusReg = e.getThread().newRegister(type); + Register dummy = e.getFunction().newRegister(type); + Register statusReg = e.getFunction().newRegister(types.getBooleanType()); + Expression storeValue = expressions.makeBinary(dummy, e.getOperator(), e.getOperand()); String moLoad = mo.equals(Tag.Linux.MO_MB) || mo.equals(Tag.Linux.MO_ACQUIRE) ? Tag.RISCV.MO_ACQ : ""; Load load = newRMWLoadExclusiveWithMo(dummy, address, moLoad); String moStore = mo.equals(Tag.Linux.MO_MB) || mo.equals(Tag.Linux.MO_RELEASE) ? Tag.RISCV.MO_ACQ_REL : ""; - Store store = RISCV.newRMWStoreConditional(address, expressions.makeBinary(dummy, op, value), moStore, true); + Store store = RISCV.newRMWStoreConditional(address, storeValue, moStore, true); ExecutionStatus status = newExecutionStatusWithDependencyTracking(statusReg, store); Label label = newLabel("FakeDep"); - Event fakeCtrlDep = newJump(expressions.makeEQ(statusReg, expressions.makeZero(type)), label); + Event fakeCtrlDep = newJump(statusReg, label); // TODO: Do we really need a fakedep from the store? return eventSequence( load, @@ -600,21 +528,21 @@ public List visitRMWOp(RMWOp e) { // Since in VisitorArm8 this one is similar to visitRMWCmpXchg // we also make it scheme similar to the one of visitRMWCmpXchg in this class @Override - public List visitRMWFetchOp(RMWFetchOp e) { + public List visitLKMMFetchOp(LKMMFetchOp e) { Register resultRegister = e.getResultRegister(); - IntegerType type = resultRegister.getType(); - Expression value = e.getMemValue(); + Type type = resultRegister.getType(); Expression address = e.getAddress(); String mo = e.getMo(); - Register dummy = e.getThread().newRegister(type); - Register statusReg = e.getThread().newRegister(type); + Register dummy = e.getFunction().newRegister(type); + Register statusReg = e.getFunction().newRegister(types.getBooleanType()); Load load = newRMWLoadExclusive(dummy, address); // TODO: No mo on the load? - Store store = RISCV.newRMWStoreConditional(address, expressions.makeBinary(dummy, e.getOp(), value), mo.equals(Tag.Linux.MO_MB) ? Tag.RISCV.MO_REL : "", true); + Store store = RISCV.newRMWStoreConditional(address, expressions.makeBinary(dummy, e.getOperator(), e.getOperand()), + mo.equals(Tag.Linux.MO_MB) ? Tag.RISCV.MO_REL : "", true); ExecutionStatus status = newExecutionStatusWithDependencyTracking(statusReg, store); Label label = newLabel("FakeDep"); - Event fakeCtrlDep = newJump(expressions.makeEQ(statusReg, expressions.makeZero(type)), label); + Event fakeCtrlDep = newJump(statusReg, label); // TODO: Do we really need a fakedep from the store? Fence optionalMemoryBarrierBefore = mo.equals(Tag.Linux.MO_RELEASE) ? RISCV.newRWWFence() : null; Fence optionalMemoryBarrierAfter = mo.equals(Tag.Linux.MO_MB) ? RISCV.newRWRWFence() : mo.equals(Tag.Linux.MO_ACQUIRE) ? RISCV.newRRWFence() : null; @@ -636,30 +564,27 @@ public List visitRMWFetchOp(RMWFetchOp e) { // Since in VisitorArm8 this one is similar to visitRMWCmpXchg // we also make it scheme similar to the one of visitRMWCmpXchg in this class @Override - public List visitRMWOpReturn(RMWOpReturn e) { + public List visitLKMMOpReturn(LKMMOpReturn e) { Register resultRegister = e.getResultRegister(); - IntegerType type = resultRegister.getType(); - Expression zero = expressions.makeZero(type); - IOpBin op = e.getOp(); - Expression value = e.getMemValue(); + Type type = resultRegister.getType(); Expression address = e.getAddress(); String mo = e.getMo(); - Register dummy = e.getThread().newRegister(type); - Register statusReg = e.getThread().newRegister(type); + Register dummy = e.getFunction().newRegister(type); + Register statusReg = e.getFunction().newRegister(types.getBooleanType()); Load load = newRMWLoadExclusive(dummy, address); // TODO: No mo on the load? Store store = RISCV.newRMWStoreConditional(address, dummy, mo.equals(Tag.Linux.MO_MB) ? Tag.RISCV.MO_REL : "", true); ExecutionStatus status = newExecutionStatusWithDependencyTracking(statusReg, store); Label label = newLabel("FakeDep"); - Event fakeCtrlDep = newJump(expressions.makeEQ(statusReg, zero), label); + Event fakeCtrlDep = newJump(statusReg, label); // TODO: Do we really need a fakedep from the store? Fence optionalMemoryBarrierBefore = mo.equals(Tag.Linux.MO_RELEASE) ? RISCV.newRWWFence() : null; Fence optionalMemoryBarrierAfter = mo.equals(Tag.Linux.MO_MB) ? RISCV.newRWRWFence() : mo.equals(Tag.Linux.MO_ACQUIRE) ? RISCV.newRRWFence() : null; return eventSequence( optionalMemoryBarrierBefore, load, - newLocal(dummy, expressions.makeBinary(dummy, op, value)), + newLocal(dummy, expressions.makeBinary(dummy, e.getOperator(), e.getOperand())), store, status, newLocal(resultRegister, dummy), @@ -677,27 +602,25 @@ public List visitRMWOpReturn(RMWOpReturn e) { // and not on inlined assembly, we don't really need to test that the compilation is correct // (the other methods implementing the macros are been tested already). @Override - public List visitRMWAddUnless(RMWAddUnless e) { + public List visitLKMMAddUnless(LKMMAddUnless e) { Register resultRegister = e.getResultRegister(); - IntegerType type = resultRegister.getType(); + Type type = resultRegister.getType(); Expression address = e.getAddress(); - Expression value = e.getMemValue(); String mo = e.getMo(); - Register regValue = e.getThread().newRegister(type); - Register statusReg = e.getThread().newRegister(type); + Register regValue = e.getFunction().newRegister(type); Load load = newRMWLoadExclusive(regValue, address); // TODO: No mo on the load? - Store store = RISCV.newRMWStoreConditional(address, expressions.makeADD(regValue, value), mo.equals(Tag.Linux.MO_MB) ? Tag.RISCV.MO_REL : "", true); - ExecutionStatus status = newExecutionStatusWithDependencyTracking(statusReg, store); + Store store = RISCV.newRMWStoreConditional(address, expressions.makeADD(regValue, e.getOperand()), mo.equals(Tag.Linux.MO_MB) ? Tag.RISCV.MO_REL : "", true); + // TODO: Why does this use a different fake dep (from the load) than the other RMW events (from the store)? Label label = newLabel("FakeDep"); Event fakeCtrlDep = newFakeCtrlDep(regValue, label); - Register dummy = e.getThread().newRegister(resultRegister.getType()); + Register dummy = e.getFunction().newRegister(types.getBooleanType()); Expression unless = e.getCmp(); Label cauEnd = newLabel("CAddU_end"); - CondJump branchOnCauCmpResult = newJump(expressions.makeEQ(dummy, expressions.makeZero(type)), cauEnd); + CondJump branchOnCauCmpResult = newJumpUnless(dummy, cauEnd); Fence optionalMemoryBarrierAfter = mo.equals(Tag.Linux.MO_MB) ? RISCV.newRWRWFence() : mo.equals(Tag.Linux.MO_ACQUIRE) ? RISCV.newRRWFence() : null; return eventSequence( @@ -705,12 +628,11 @@ public List visitRMWAddUnless(RMWAddUnless e) { newLocal(dummy, expressions.makeNEQ(regValue, unless)), branchOnCauCmpResult, store, - status, fakeCtrlDep, label, optionalMemoryBarrierAfter, cauEnd, - newLocal(resultRegister, dummy) + newLocal(resultRegister, expressions.makeCast(dummy, resultRegister.getType())) ); } @@ -721,23 +643,17 @@ public List visitRMWAddUnless(RMWAddUnless e) { // https://elixir.bootlin.com/linux/v5.18/source/scripts/atomic/fallbacks/inc_and_test // https://elixir.bootlin.com/linux/v5.18/source/scripts/atomic/fallbacks/dec_and_test @Override - public List visitRMWOpAndTest(RMWOpAndTest e) { + public List visitLKMMOpAndTest(LKMMOpAndTest e) { Register resultRegister = e.getResultRegister(); - IntegerType type = resultRegister.getType(); - IOpBin op = e.getOp(); - Expression value = e.getMemValue(); Expression address = e.getAddress(); String mo = e.getMo(); - - Register dummy = e.getThread().newRegister(type); - Register statusReg = e.getThread().newRegister(type); - Register retReg = e.getThread().newRegister(type); - Local localOp = newLocal(retReg, expressions.makeBinary(dummy, op, value)); - Local testOp = newLocal(resultRegister, expressions.makeEQ(retReg, expressions.makeZero(type))); + Register dummy = e.getFunction().newRegister(types.getArchType()); + Expression testResult = expressions.makeNot(expressions.makeBooleanCast(dummy)); Load load = newRMWLoadExclusive(dummy, address); // TODO: No mo on the load? - Store store = newRMWStoreExclusiveWithMo(address, retReg, true, mo.equals(Tag.Linux.MO_MB) ? Tag.RISCV.MO_REL : ""); - ExecutionStatus status = newExecutionStatusWithDependencyTracking(statusReg, store); + Local localOp = newLocal(dummy, expressions.makeBinary(dummy, e.getOperator(), e.getOperand())); + Store store = newRMWStoreExclusiveWithMo(address, dummy, true, mo.equals(Tag.Linux.MO_MB) ? Tag.RISCV.MO_REL : ""); + Local testOp = newLocal(resultRegister, expressions.makeCast(testResult, resultRegister.getType())); Label label = newLabel("FakeDep"); Event fakeCtrlDep = newFakeCtrlDep(dummy, label); Fence optionalMemoryBarrierAfter = mo.equals(Tag.Linux.MO_MB) ? RISCV.newRWRWFence() : mo.equals(Tag.Linux.MO_ACQUIRE) ? RISCV.newRRWFence() : null; @@ -746,7 +662,6 @@ public List visitRMWOpAndTest(RMWOpAndTest e) { load, localOp, store, - status, fakeCtrlDep, label, optionalMemoryBarrierAfter, @@ -761,7 +676,7 @@ public List visitLKMMLock(LKMMLock e) { IntegerType type = types.getArchType(); Expression one = expressions.makeOne(type); Expression zero = expressions.makeZero(type); - Register dummy = e.getThread().newRegister(type); + Register dummy = e.getFunction().newRegister(type); // From this "unofficial" source (there is no RISCV specific implementation in the kernel) // https://github.com/westerndigitalcorporation/RISC-V-Linux/blob/master/linux/arch/riscv/include/asm/spinlock.h // We replace AMO instructions with LL/SC diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorTso.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorTso.java index b334e1dc4d..397dfda3f1 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorTso.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/compilation/VisitorTso.java @@ -1,19 +1,23 @@ package com.dat3m.dartagnan.program.processing.compilation; import com.dat3m.dartagnan.expression.Expression; +import com.dat3m.dartagnan.expression.type.BooleanType; import com.dat3m.dartagnan.expression.type.IntegerType; +import com.dat3m.dartagnan.expression.type.Type; import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.Tag; -import com.dat3m.dartagnan.program.event.Tag.C11; -import com.dat3m.dartagnan.program.event.arch.tso.Xchg; +import com.dat3m.dartagnan.program.event.arch.tso.TSOXchg; import com.dat3m.dartagnan.program.event.core.*; import com.dat3m.dartagnan.program.event.lang.catomic.*; import com.dat3m.dartagnan.program.event.lang.llvm.*; -import com.dat3m.dartagnan.program.event.lang.pthread.*; +import com.dat3m.dartagnan.program.event.lang.pthread.InitLock; +import com.dat3m.dartagnan.program.event.lang.pthread.Lock; +import com.dat3m.dartagnan.program.event.lang.pthread.Unlock; import java.util.List; import static com.dat3m.dartagnan.program.event.EventFactory.*; +import static com.google.common.base.Verify.verify; class VisitorTso extends VisitorBase { @@ -22,7 +26,7 @@ protected VisitorTso(boolean forceStart) { } @Override - public List visitXchg(Xchg e) { + public List visitTSOXchg(TSOXchg e) { Register resultRegister = e.getResultRegister(); Expression address = e.getAddress(); @@ -40,54 +44,6 @@ public List visitXchg(Xchg e) { // ========================================= PTHREAD =========================================== // ============================================================================================= - @Override - public List visitCreate(Create e) { - Store store = newStore(e.getAddress(), e.getMemValue()); - store.addTags(C11.PTHREAD); - - return tagList(eventSequence( - store, - X86.newMemoryFence() - )); - } - - @Override - public List visitEnd(End e) { - return tagList(eventSequence( - // Nothing comes after an End event thus no need for a fence - newStore(e.getAddress(), expressions.makeZero(types.getArchType())) - )); - } - - @Override - public List visitJoin(Join e) { - Register resultRegister = e.getResultRegister(); - Expression zero = expressions.makeZero(resultRegister.getType()); - Load load = newLoad(resultRegister, e.getAddress()); - load.addTags(C11.PTHREAD); - - return tagList(eventSequence( - load, - newJump(expressions.makeNEQ(resultRegister, zero), - (Label) e.getThread().getExit()) - )); - } - - @Override - public List visitStart(Start e) { - Register resultRegister = e.getResultRegister(); - Expression one = expressions.makeOne(resultRegister.getType()); - Load load = newLoad(resultRegister, e.getAddress()); - load.addTags(Tag.STARTLOAD); - - return tagList(eventSequence( - load, - super.visitStart(e), - newJump(expressions.makeNEQ(resultRegister, one), - (Label) e.getThread().getExit()) - )); - } - public List visitInitLock(InitLock e) { return eventSequence( newStore(e.getAddress(), e.getMemValue()), @@ -145,7 +101,7 @@ public List visitLlvmXchg(LlvmXchg e) { return tagList(eventSequence( load, - newRMWStore(load, address, e.getMemValue()) + newRMWStore(load, address, e.getValue()) )); } @@ -159,7 +115,7 @@ public List visitLlvmRMW(LlvmRMW e) { return tagList(eventSequence( load, - newLocal(dummyReg, expressions.makeBinary(resultRegister, e.getOp(), e.getMemValue())), + newLocal(dummyReg, expressions.makeBinary(resultRegister, e.getOperator(), e.getOperand())), newRMWStore(load, address, dummyReg) )); } @@ -168,18 +124,17 @@ public List visitLlvmRMW(LlvmRMW e) { public List visitLlvmCmpXchg(LlvmCmpXchg e) { Register oldValueRegister = e.getStructRegister(0); Register resultRegister = e.getStructRegister(1); - Expression one = expressions.makeOne(resultRegister.getType()); + verify(resultRegister.getType() instanceof BooleanType); - Expression value = e.getMemValue(); Expression address = e.getAddress(); Expression expectedValue = e.getExpectedValue(); Local casCmpResult = newLocal(resultRegister, expressions.makeEQ(oldValueRegister, expectedValue)); Label casEnd = newLabel("CAS_end"); - CondJump branchOnCasCmpResult = newJump(expressions.makeNEQ(resultRegister, one), casEnd); + CondJump branchOnCasCmpResult = newJumpUnless(resultRegister, casEnd); Load load = newRMWLoad(oldValueRegister, address); - Store store = newRMWStore(load, address, value); + Store store = newRMWStore(load, address, e.getStoreValue()); return tagList(eventSequence( load, @@ -207,24 +162,24 @@ public List visitLlvmFence(LlvmFence e) { public List visitAtomicCmpXchg(AtomicCmpXchg e) { Register resultRegister = e.getResultRegister(); Expression address = e.getAddress(); - Expression value = e.getMemValue(); - String mo = e.getMo(); - Expression expectedAddr = e.getExpectedAddr(); - IntegerType type = resultRegister.getType(); - Expression one = expressions.makeOne(type); - + Expression value = e.getStoreValue(); + Expression expectedAddr = e.getAddressOfExpected(); + Type type = resultRegister.getType(); + Register booleanResultRegister = type instanceof BooleanType ? resultRegister : + e.getThread().newRegister(types.getBooleanType()); + Local castResult = booleanResultRegister == resultRegister ? null : + newLocal(resultRegister, expressions.makeCast(booleanResultRegister, type)); Register regExpected = e.getThread().newRegister(type); Load loadExpected = newLoad(regExpected, expectedAddr); Register regValue = e.getThread().newRegister(type); Load loadValue = newRMWLoad(regValue, address); - Local casCmpResult = newLocal(resultRegister, expressions.makeEQ(regValue, regExpected)); + Local casCmpResult = newLocal(booleanResultRegister, expressions.makeEQ(regValue, regExpected)); Label casFail = newLabel("CAS_fail"); - CondJump branchOnCasCmpResult = newJump(expressions.makeNEQ(resultRegister, one), casFail); + CondJump branchOnCasCmpResult = newJumpUnless(booleanResultRegister, casFail); Store storeValue = newRMWStore(loadValue, address, value); Label casEnd = newLabel("CAS_end"); CondJump gotoCasEnd = newGoto(casEnd); Store storeExpected = newStore(expectedAddr, regValue); - return tagList(eventSequence( loadExpected, loadValue, @@ -234,7 +189,8 @@ public List visitAtomicCmpXchg(AtomicCmpXchg e) { gotoCasEnd, casFail, storeExpected, - casEnd + casEnd, + castResult )); } @@ -248,7 +204,7 @@ public List visitAtomicFetchOp(AtomicFetchOp e) { return tagList(eventSequence( load, - newLocal(dummyReg, expressions.makeBinary(resultRegister, e.getOp(), e.getMemValue())), + newLocal(dummyReg, expressions.makeBinary(resultRegister, e.getOperator(), e.getOperand())), newRMWStore(load, address, dummyReg) )); } @@ -287,7 +243,7 @@ public List visitAtomicXchg(AtomicXchg e) { return tagList(eventSequence( load, - newRMWStore(load, address, e.getMemValue()) + newRMWStore(load, address, e.getValue()) )); } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/specification/AssertBasic.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/specification/AssertBasic.java index c23d1d0fc8..01547df3a7 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/specification/AssertBasic.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/specification/AssertBasic.java @@ -24,8 +24,8 @@ public AssertBasic(Expression e1, COpBin op, Expression e2){ @Override public BooleanFormula encode(EncodingContext context) { return context.encodeComparison(op, - context.encodeFinalIntegerExpression(e1), - context.encodeFinalIntegerExpression(e2)); + context.encodeFinalExpression(e1), + context.encodeFinalExpression(e2)); } @Override @@ -35,7 +35,7 @@ public String toString(){ private String valueToString(Expression value){ if(value instanceof Register register){ - return register.getThreadId() + ":" + value; + return register.getFunctionId() + ":" + value; } return value.toString(); } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/utils/Normalizer.java b/dartagnan/src/main/java/com/dat3m/dartagnan/utils/Normalizer.java new file mode 100644 index 0000000000..d1e9c90cfd --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/utils/Normalizer.java @@ -0,0 +1,13 @@ +package com.dat3m.dartagnan.utils; + +import java.util.HashMap; + +public class Normalizer { + + private final HashMap map = new HashMap<>(); + + @SuppressWarnings("unchecked") + public T normalize(T obj) { + return (T)map.computeIfAbsent(obj, k -> k); + } +} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/utils/printer/Printer.java b/dartagnan/src/main/java/com/dat3m/dartagnan/utils/printer/Printer.java index 9d24b515cf..b62c5d2a70 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/utils/printer/Printer.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/utils/printer/Printer.java @@ -1,5 +1,6 @@ package com.dat3m.dartagnan.utils.printer; +import com.dat3m.dartagnan.program.Function; import com.dat3m.dartagnan.program.Program; import com.dat3m.dartagnan.program.Thread; import com.dat3m.dartagnan.program.event.core.Event; @@ -7,6 +8,8 @@ import com.dat3m.dartagnan.program.event.core.Label; import com.dat3m.dartagnan.program.event.core.Skip; +import java.util.stream.Collectors; + public class Printer { private StringBuilder result; @@ -31,11 +34,19 @@ public String print(Program program){ } result.append(name).append("\n"); - for(Thread thread : program.getThreads()){ + for(Thread thread : program.getThreads()) { if(shouldPrintThread(thread)){ - appendThread(thread); + appendFunction(thread); + } + } + + for (Function function : program.getFunctions()) { + if (function instanceof Thread) { + continue; } + appendFunction(function); } + idType = origType; return result.toString(); } @@ -64,18 +75,22 @@ private boolean shouldPrintThread(Thread thread){ return firstEvent.getSuccessor() != null && !(firstEvent instanceof Init); } - private void appendThread(Thread thread){ - try { - Integer.parseInt(thread.getName()); - result.append("\nthread_").append(thread.getName()).append("\n"); - } catch (Exception e) { - result.append("\n").append(thread.getName()).append("\n"); - } - for (Event e : thread.getEvents()) { + private void appendFunction(Function func) { + result.append("\n[").append(func.getId()).append("]"); + result.append(func instanceof Thread ? " thread " : " function "); + result.append(functionSignatureToString(func)).append("\n"); + for (Event e : func.getEvents()) { appendEvent(e); } } + public String functionSignatureToString(Function func) { + final String prefix = func.getFunctionType().getReturnType() + " " + func.getName() + "("; + final String suffix = ")"; + return func.getParameterRegisters().stream().map(r -> r.getType() + " " + r.getName()) + .collect(Collectors.joining(", ", prefix, suffix)); + } + private void appendEvent(Event event){ if(showAuxiliaryEvents || !isAuxiliary(event)){ StringBuilder idSb = new StringBuilder(); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/utils/visualization/ExecutionGraphVisualizer.java b/dartagnan/src/main/java/com/dat3m/dartagnan/utils/visualization/ExecutionGraphVisualizer.java index 5660ce11a1..c9061985c2 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/utils/visualization/ExecutionGraphVisualizer.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/utils/visualization/ExecutionGraphVisualizer.java @@ -7,7 +7,6 @@ import com.dat3m.dartagnan.program.event.Tag; import com.dat3m.dartagnan.program.event.core.MemoryCoreEvent; import com.dat3m.dartagnan.program.event.metadata.MemoryOrder; -import com.dat3m.dartagnan.program.event.metadata.SourceLocation; import com.dat3m.dartagnan.verification.model.EventData; import com.dat3m.dartagnan.verification.model.ExecutionModel; import org.apache.logging.log4j.LogManager; @@ -23,7 +22,6 @@ import java.util.Map; import java.util.concurrent.TimeUnit; import java.util.function.BiPredicate; -import java.util.stream.Collectors; import static com.dat3m.dartagnan.program.analysis.SyntacticContextAnalysis.*; @@ -89,10 +87,9 @@ public void generateGraphOfExecutionModel(Writer writer, String graphName, Execu } private boolean ignore(EventData e) { - return !e.getEvent().hasMetadata(SourceLocation.class) && !e.isInit(); + return false; // We ignore no events for now. } - private ExecutionGraphVisualizer addReadFrom(ExecutionModel model) { graphviz.beginSubgraph("ReadFrom"); @@ -105,7 +102,7 @@ private ExecutionGraphVisualizer addReadFrom(ExecutionModel model) { continue; } - appendEdge(w, r, model, "label=rf"); + appendEdge(w, r, "label=rf"); } graphviz.end(); return this; @@ -128,7 +125,7 @@ private ExecutionGraphVisualizer addFromRead(ExecutionModel model) { if (co.indexOf(w) + 1 < co.size()) { EventData w2 = co.get(co.indexOf(w) + 1); if (!ignore(w2) && frFilter.test(r, w2)) { - appendEdge(r, w2, model, "label=fr"); + appendEdge(r, w2, "label=fr"); } } } @@ -149,7 +146,7 @@ private ExecutionGraphVisualizer addCoherence(ExecutionModel model) { if (ignore(w1) || ignore(w2) || !coFilter.test(w1, w2)) { continue; } - appendEdge(w1, w2, model, "label=co"); + appendEdge(w1, w2, "label=co"); } } graphviz.end(); @@ -165,14 +162,15 @@ private ExecutionGraphVisualizer addAllThreadPos(ExecutionModel model) { private ExecutionGraphVisualizer addThreadPo(Thread thread, ExecutionModel model) { List threadEvents = model.getThreadEventsMap().get(thread) - .stream().filter(e -> e.hasTag(Tag.VISIBLE)).collect(Collectors.toList()); + .stream().filter(e -> e.hasTag(Tag.VISIBLE)).toList(); if (threadEvents.size() <= 1) { + // This skips init threads. return this; } // --- Subgraph start --- graphviz.beginSubgraph("T" + thread.getId()); - graphviz.setEdgeAttributes("weight=10"); + graphviz.setEdgeAttributes("weight=100"); // --- Node list --- for (int i = 1; i < threadEvents.size(); i++) { EventData e1 = threadEvents.get(i - 1); @@ -182,7 +180,7 @@ private ExecutionGraphVisualizer addThreadPo(Thread thread, ExecutionModel model continue; } - appendEdge(e1, e2, model, (String[]) null); + appendEdge(e1, e2, (String[]) null); } // --- Subgraph end --- @@ -192,17 +190,9 @@ private ExecutionGraphVisualizer addThreadPo(Thread thread, ExecutionModel model } - private String eventToNode(EventData e, ExecutionModel model) { + private String eventToNode(EventData e) { if (e.isInit()) { return String.format("\"I(%s, %d)\"", addresses.get(e.getAccessedAddress()), e.getValue()); - } else if (!e.getEvent().hasMetadata(SourceLocation.class)) { - // Special write of each thread - int threadSize = model.getThreadEventsMap().get(e.getThread()).size(); - if (e.getLocalId() <= threadSize / 2) { - return String.format("\"T%d:start\"", e.getThread().getId()); - } else { - return String.format("\"T%d:end\"", e.getThread().getId()); - } } // We have MemEvent + Fence String tag = e.getEvent().toString(); @@ -217,7 +207,8 @@ private String eventToNode(EventData e, ExecutionModel model) { } final String callStack = makeContextString( synContext.getContextInfo(e.getEvent()).getContextOfType(CallContext.class), " -> \\n"); - return String.format("\"T%s:E%s\\n%s%s\n%s\"", + return String.format("\"%s:T%s/E%s\\n%s%s\n%s\"", + e.getThread().getName(), e.getThread().getId(), e.getEvent().getGlobalId(), callStack.isEmpty() ? callStack : callStack + " -> \\n", @@ -225,8 +216,8 @@ private String eventToNode(EventData e, ExecutionModel model) { tag); } - private void appendEdge(EventData a, EventData b, ExecutionModel model, String... options) { - graphviz.addEdge(eventToNode(a, model), eventToNode(b, model), options); + private void appendEdge(EventData a, EventData b, String... options) { + graphviz.addEdge(eventToNode(a), eventToNode(b), options); } public static void generateGraphvizFile(ExecutionModel model, int iterationCount, diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/verification/model/ExecutionModel.java b/dartagnan/src/main/java/com/dat3m/dartagnan/verification/model/ExecutionModel.java index b703608e4d..98c45dc11a 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/verification/model/ExecutionModel.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/verification/model/ExecutionModel.java @@ -6,6 +6,7 @@ import com.dat3m.dartagnan.program.Thread; import com.dat3m.dartagnan.program.event.Tag; import com.dat3m.dartagnan.program.event.core.*; +import com.dat3m.dartagnan.program.event.core.threading.ThreadArgument; import com.dat3m.dartagnan.program.event.core.utils.RegReader; import com.dat3m.dartagnan.program.event.core.utils.RegWriter; import com.dat3m.dartagnan.program.event.lang.svcomp.BeginAtomic; @@ -335,12 +336,19 @@ private void addEvent(Event e, int globalId, int localId) { addressWritesMap.put(address, new HashSet<>()); } + if (data.isRead() || data.isWrite()) { + String valueString = String.valueOf(model.evaluate(encodingContext.value((MemoryEvent) e))); + BigInteger value = switch(valueString) { + case "false" -> BigInteger.ZERO; + case "true" -> BigInteger.ONE; + default -> new BigInteger(valueString); + }; + data.setValue(value); + } + if (data.isRead()) { - data.setValue(new BigInteger(model.evaluate(encodingContext.result((RegWriter) e)).toString())); addressReadsMap.get(address).add(data); } else if (data.isWrite()) { - Object valueObject = checkNotNull(model.evaluate(encodingContext.value((MemoryEvent) e))); - data.setValue(new BigInteger(valueObject.toString())); addressWritesMap.get(address).add(data); writeReadsMap.put(data, new HashSet<>()); if (data.isInit()) { @@ -386,7 +394,7 @@ private void initDepTracking() { private void trackDependencies(Event e) { while (!endIfs.isEmpty() && e.getGlobalId() >= endIfs.peek().getGlobalId()) { - // We exited an If and remove the dependencies associated with it + // We exited an If-then-else block and remove the dependencies associated with it. // We do this inside a loop just in case multiple Ifs are left simultaneously endIfs.pop(); curCtrlDeps.removeAll(ifCtrlDeps.pop()); @@ -446,10 +454,13 @@ private void trackDependencies(Event e) { // put a dependency to the paired exclusive load if the store failed to execute? } lastRegWrites.put(status.getResultRegister(), deps); - } else if (regWriter instanceof Local local) { + } else if (regWriter instanceof RegReader regReader) { + // Note: This code might work for more cases than we check for here, + // but we want to throw an exception if an unexpected event appears. + assert regWriter instanceof Local; // ---- internal data dependency ---- final Set dataDeps = new HashSet<>(); - for (Register.Read regRead : local.getRegisterReads()) { + for (Register.Read regRead : regReader.getRegisterReads()) { final Register reg = regRead.register(); final Set visibleRootDependencies = lastRegWrites.get(reg); if (visibleRootDependencies == null) { @@ -460,7 +471,11 @@ private void trackDependencies(Event e) { assert regRead.usageType() == Register.UsageType.DATA; dataDeps.addAll(visibleRootDependencies); } - lastRegWrites.put(local.getResultRegister(), dataDeps); + lastRegWrites.put(regWriter.getResultRegister(), dataDeps); + } else { + assert e instanceof ThreadArgument; + // We have a RegWriter that doesn't read registers, so there are no dependencies. + lastRegWrites.put(regWriter.getResultRegister(), new HashSet<>()); } } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/witness/WitnessBuilder.java b/dartagnan/src/main/java/com/dat3m/dartagnan/witness/WitnessBuilder.java index b1f532f6fc..7fb9cff64b 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/witness/WitnessBuilder.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/witness/WitnessBuilder.java @@ -175,7 +175,7 @@ private List getSCExecutionOrder(Model model) { Map> map = new HashMap<>(); for(Event e : execEvents) { // TODO improve this: these events correspond to return statements - if(e instanceof Store store && store.getMemValue() instanceof BConst bVal && bVal.isFalse()) { + if(e instanceof Store store && store.getMemValue() instanceof BConst bVal && !bVal.getValue()) { continue; } BigInteger var = model.evaluate(context.clockVariable("hb", e)); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/witness/WitnessGraph.java b/dartagnan/src/main/java/com/dat3m/dartagnan/witness/WitnessGraph.java index 7fc6756b85..e0577c85bf 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/witness/WitnessGraph.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/witness/WitnessGraph.java @@ -9,9 +9,14 @@ import com.dat3m.dartagnan.program.event.metadata.SourceLocation; import com.google.common.collect.Lists; import com.google.common.io.Files; +import org.sosy_lab.java_smt.api.BitvectorFormula; +import org.sosy_lab.java_smt.api.BitvectorFormulaManager; import org.sosy_lab.java_smt.api.BooleanFormula; import org.sosy_lab.java_smt.api.BooleanFormulaManager; +import org.sosy_lab.java_smt.api.Formula; +import org.sosy_lab.java_smt.api.FormulaManager; import org.sosy_lab.java_smt.api.IntegerFormulaManager; +import org.sosy_lab.java_smt.api.NumeralFormula; import java.io.FileWriter; import java.io.IOException; @@ -27,19 +32,19 @@ public class WitnessGraph extends ElemWithAttributes { private final SortedSet nodes = new TreeSet<>(); // The order in which we add / traverse edges is important, thus a List private final List edges = new ArrayList<>(); - + public void addNode(String id) { nodes.add(new Node(id)); } - + public boolean hasNode(String id) { return nodes.stream().anyMatch(n -> n.getId().equals(id)); } - + public Node getNode(String id) { return nodes.stream().filter(n -> n.getId().equals(id)).findFirst().get(); } - + public void addEdge(Edge e) { nodes.add(e.getSource()); nodes.add(e.getTarget()); @@ -49,83 +54,111 @@ public void addEdge(Edge e) { public Set getNodes() { return nodes; } - + public List getEdges() { return edges; } - + public String getProgram() { return attributes.get(PROGRAMFILE.toString()); } - + public String toXML() { StringBuilder str = new StringBuilder(); str.append("\n"); - for(String attr : attributes.keySet()) { + for (String attr : attributes.keySet()) { str.append(" ").append(attributes.get(attr)).append("\n"); } - for(Node n : nodes) { + for (Node n : nodes) { str.append(n.toXML()); } - for(Edge e : edges) { + for (Edge e : edges) { str.append(e.toXML()); } str.append(""); return str.toString(); } - + public BooleanFormula encode(EncodingContext context) { Program program = context.getTask().getProgram(); BooleanFormulaManager bmgr = context.getBooleanFormulaManager(); - IntegerFormulaManager imgr = context.getFormulaManager().getIntegerFormulaManager(); + FormulaManager fmgr = context.getFormulaManager(); List enc = new ArrayList<>(); List previous = new ArrayList<>(); - for(Edge edge : edges.stream().filter(Edge::hasCline).toList()) { + for (Edge edge : edges.stream().filter(Edge::hasCline).toList()) { List events = program.getEvents(MemoryEvent.class).stream() .filter(e -> e.hasMetadata(SourceLocation.class)) .filter(e -> e.getMetadata(SourceLocation.class).lineNumber() == edge.getCline()) .collect(Collectors.toList()); - if(!previous.isEmpty() && !events.isEmpty()) { + if (!previous.isEmpty() && !events.isEmpty()) { enc.add(bmgr.or(Lists.cartesianProduct(previous, events).stream() .map(p -> context.edgeVariable("hb", p.get(0), p.get(1))) .toArray(BooleanFormula[]::new))); } - if(!events.isEmpty()) { - previous = events; + if (!events.isEmpty()) { + previous = events; } // FIXME: The reliance on "globalId" for matching is very fragile (see comment in WitnessBuilder) - if(edge.hasAttributed(EVENTID.toString()) && edge.hasAttributed(LOADEDVALUE.toString())) { + if (edge.hasAttributed(EVENTID.toString()) && edge.hasAttributed(LOADEDVALUE.toString())) { int id = Integer.parseInt(edge.getAttributed(EVENTID.toString())); Optional load = program.getEvents(Load.class).stream().filter(e -> e.getGlobalId() == id).findFirst(); if (load.isPresent()) { - BigInteger value = new BigInteger(edge.getAttributed(LOADEDVALUE.toString())); - enc.add(context.equal(context.result(load.get()), imgr.makeNumber(value))); + String loadedValue = edge.getAttributed(LOADEDVALUE.toString()); + enc.add(equalsParsedValue(context.result(load.get()), loadedValue, fmgr)); } } - if(edge.hasAttributed(EVENTID.toString()) && edge.hasAttributed(STOREDVALUE.toString())) { + if (edge.hasAttributed(EVENTID.toString()) && edge.hasAttributed(STOREDVALUE.toString())) { int id = Integer.parseInt(edge.getAttributed(EVENTID.toString())); Optional store = program.getEvents(Store.class).stream().filter(e -> e.getGlobalId() == id).findFirst(); if (store.isPresent()) { - BigInteger value = new BigInteger(edge.getAttributed(STOREDVALUE.toString())); - enc.add(context.equal(context.value(store.get()), imgr.makeNumber(value))); + String storedValue = edge.getAttributed(STOREDVALUE.toString()); + enc.add(equalsParsedValue(context.value(store.get()), storedValue, fmgr)); } } } return bmgr.and(enc); } - + + private static BooleanFormula equalsParsedValue(Formula operand, String value, FormulaManager formulaManager) { + if (operand instanceof BooleanFormula bool) { + return switch (value) { + case "false", "0" -> formulaManager.getBooleanFormulaManager().not(bool); + default -> bool; + }; + } + BigInteger integerValue = switch (value) { + case "false" -> BigInteger.ZERO; + case "true" -> BigInteger.ONE; + default -> new BigInteger(value); + }; + if (operand instanceof NumeralFormula.IntegerFormula integer) { + IntegerFormulaManager imgr = formulaManager.getIntegerFormulaManager(); + return imgr.equal(integer, imgr.makeNumber(integerValue)); + } + assert operand instanceof BitvectorFormula; + BitvectorFormula bitvector = (BitvectorFormula) operand; + BitvectorFormulaManager bvmgr = formulaManager.getBitvectorFormulaManager(); + return bvmgr.equal(bitvector, bvmgr.makeBitvector(bvmgr.getLength(bitvector), integerValue)); + } + public void write() { - try (FileWriter fw = new FileWriter(String.format("%s/%s.graphml", + try (FileWriter fw = new FileWriter(String.format("%s/%s.graphml", System.getenv("DAT3M_OUTPUT"), Files.getNameWithoutExtension(getProgram())))) { fw.write("\n"); fw.write("\n"); - for(GraphAttributes attr : GraphAttributes.values()) {fw.write("\n");} - for(NodeAttributes attr : NodeAttributes.values()) {fw.write("\n");} - for(EdgeAttributes attr : EdgeAttributes.values()) {fw.write("\n");} + for (GraphAttributes attr : GraphAttributes.values()) { + fw.write("\n"); + } + for (NodeAttributes attr : NodeAttributes.values()) { + fw.write("\n"); + } + for (EdgeAttributes attr : EdgeAttributes.values()) { + fw.write("\n"); + } fw.write(toXML()); fw.write("\n"); } catch (IOException e1) { e1.printStackTrace(); - } + } } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/Assumption.java b/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/Assumption.java index 03538e6dbb..bd843d0dcd 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/Assumption.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/Assumption.java @@ -36,7 +36,9 @@ public Map computeInitialKnowledgeClos RelationAnalysis.Knowledge k = knowledgeMap.get(rel); Set d = difference(k.getMaySet(), may); Set e = difference(must, k.getMustSet()); - logger.info("Assumption disables {} and enables {} at {}", d.size(), e.size(), rel.getNameOrTerm()); + if (d.size() + e.size() != 0) { + logger.info("Assumption disables {} and enables {} at {}", d.size(), e.size(), rel.getNameOrTerm()); + } return Map.of(rel, new RelationAnalysis.ExtendedDelta(d, e)); } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/Relation.java b/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/Relation.java index b19b1bb7e2..9b1d2d2485 100755 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/Relation.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/Relation.java @@ -1,7 +1,8 @@ package com.dat3m.dartagnan.wmm; import com.dat3m.dartagnan.utils.dependable.Dependent; -import com.dat3m.dartagnan.wmm.definition.*; +import com.dat3m.dartagnan.wmm.definition.Composition; +import com.dat3m.dartagnan.wmm.definition.Union; import org.sosy_lab.common.configuration.Configuration; import org.sosy_lab.common.configuration.InvalidConfigurationException; @@ -14,11 +15,13 @@ public final class Relation implements Dependent { + private final Wmm wmm; Definition definition = new Definition.Undefined(this); private boolean isRecursive; final List names = new ArrayList<>(); - Relation() { + Relation(Wmm wmm) { + this.wmm = wmm; } /** @@ -46,6 +49,8 @@ public List getDependencies() { public void configure(Configuration config) throws InvalidConfigurationException { } + public Wmm getMemoryModel() { return this.wmm; } + public Optional getName() { return names.isEmpty() ? Optional.empty() : Optional.of(names.get(0)); } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/Wmm.java b/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/Wmm.java index d6c7edc468..b6f17d236d 100755 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/Wmm.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/Wmm.java @@ -3,26 +3,41 @@ import com.dat3m.dartagnan.program.event.Tag; import com.dat3m.dartagnan.program.filter.Filter; import com.dat3m.dartagnan.wmm.axiom.Axiom; -import com.dat3m.dartagnan.wmm.definition.SameScope; -import com.dat3m.dartagnan.wmm.relation.RelationNameRepository; import com.dat3m.dartagnan.wmm.definition.*; +import com.dat3m.dartagnan.wmm.relation.RelationNameRepository; import com.google.common.collect.ImmutableSet; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.sosy_lab.common.configuration.Configuration; import org.sosy_lab.common.configuration.InvalidConfigurationException; +import org.sosy_lab.common.configuration.Option; +import org.sosy_lab.common.configuration.Options; import java.util.*; import java.util.function.BiFunction; import java.util.stream.Collectors; import java.util.stream.Stream; +import static com.dat3m.dartagnan.configuration.OptionNames.ENABLE_ACTIVE_SETS; +import static com.dat3m.dartagnan.configuration.OptionNames.REDUCE_ACYCLICITY_ENCODE_SETS; import static com.dat3m.dartagnan.wmm.relation.RelationNameRepository.*; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Verify.verify; public class Wmm { + @Options + public static class Config { + + @Option(name = REDUCE_ACYCLICITY_ENCODE_SETS, + description = "Omit adding transitively implied relationships to the encode set of an acyclic relation." + + " This option is only relevant if \"" + ENABLE_ACTIVE_SETS + "\" is set.", + secure = true) + private boolean reduceAcyclicityEncoding = true; + + public boolean isReduceAcyclicityEncoding() { return reduceAcyclicityEncoding; } + } + private static final Logger logger = LogManager.getLogger(Wmm.class); public final static ImmutableSet BASE_RELATIONS = ImmutableSet.of(CO, RF, RMW); @@ -31,10 +46,14 @@ public class Wmm { private final Map filters = new HashMap<>(); private final Set relations = new HashSet<>(); + private final Config config = new Config(); + public Wmm() { BASE_RELATIONS.forEach(this::getRelation); } + public Config getConfig() { return this.config; } + /** * Inserts a constraint into this model. * @param constraint Constraint over relations in this model, to be inserted. @@ -50,17 +69,14 @@ public void addConstraint(Constraint constraint) { } public List getConstraints() { - return Stream.concat(constraints.stream(), relations.stream().map(Relation::getDefinition)) - .collect(Collectors.toList()); + return Stream.concat(constraints.stream(), relations.stream().map(Relation::getDefinition)).toList(); } /** * @return View of all axioms in this model in insertion order. */ public List getAxioms() { - return constraints.stream() - .filter(Axiom.class::isInstance).map(Axiom.class::cast) - .collect(Collectors.toList()); + return constraints.stream().filter(Axiom.class::isInstance).map(Axiom.class::cast).toList(); } /** @@ -115,7 +131,7 @@ public void addAlias(String name, Relation relation) { * @return The created relation. */ public Relation newRelation() { - Relation relation = new Relation(); + Relation relation = new Relation(this); relations.add(relation); return relation; } @@ -128,7 +144,7 @@ public Relation newRelation() { public Relation newRelation(String name) { checkArgument(relations.stream().noneMatch(r -> r.hasName(name)), "Already bound name %s.", name); - Relation relation = new Relation(); + Relation relation = new Relation(this); relation.names.add(name); relations.add(relation); return relation; @@ -191,6 +207,7 @@ public Filter getFilter(String name) { // ====================== Utility Methods ==================== public void configureAll(Configuration config) throws InvalidConfigurationException { + config.inject(this.config); for (Relation rel : getRelations()) { rel.configure(config); } @@ -200,6 +217,8 @@ public void configureAll(Configuration config) throws InvalidConfigurationExcept axiom.configure(config); } } + + logger.info("{}: {}", REDUCE_ACYCLICITY_ENCODE_SETS, this.config.isReduceAcyclicityEncoding()); } public void simplify() { @@ -223,9 +242,7 @@ private void simplifyAssociatives(Class cls, BiFunction ((Axiom) c).getRelation().equals(r))) { continue; } - List parents = relations.stream() - .filter(x -> x.getDependencies().contains(r)) - .collect(Collectors.toList()); + List parents = relations.stream().filter(x -> x.getDependencies().contains(r)).toList(); Relation p = parents.size() == 1 ? parents.get(0) : null; if (p != null && cls.isInstance(p.definition)) { Relation[] o = Stream.of(r, p) @@ -246,102 +263,65 @@ private void simplifyAssociatives(Class cls, BiFunction new ProgramOrder(r, Filter.byTag(Tag.VISIBLE)); + case LOC -> new SameAddress(r); + case ID -> new Identity(r, Filter.byTag(Tag.VISIBLE)); + case INT -> new SameThread(r); + case EXT -> new DifferentThreads(r); + case CO -> new Coherence(r); + case RF -> new ReadFrom(r); + case RMW -> new ReadModifyWrites(r); + case CASDEP -> new CompareAndSwapDependency(r); + case CRIT -> new CriticalSections(r); + case IDD -> new DirectDataDependency(r); + case ADDRDIRECT -> new DirectAddressDependency(r); + case CTRLDIRECT -> new DirectControlDependency(r); + case EMPTY -> new Empty(r); + case RFINV -> { + //FIXME: We don't need a name for "rf^-1", this is a normal relation! + // This causes models that explicitly mention "rf^-1" to have two versions of the same relation! + yield new Inverse(r, getRelation(RF)); + } + case FR -> composition(r, getRelation(RFINV), getRelation(CO)); + case MM -> new CartesianProduct(r, Filter.byTag(Tag.MEMORY), Filter.byTag(Tag.MEMORY)); + case MV -> new CartesianProduct(r, Filter.byTag(Tag.MEMORY), Filter.byTag(Tag.VISIBLE)); + case IDDTRANS -> new TransitiveClosure(r, getRelation(IDD)); + case DATA -> intersection(r, getRelation(IDDTRANS), getRelation(MM)); + case ADDR -> { Relation addrdirect = getRelation(ADDRDIRECT); Relation comp = addDefinition(composition(newRelation(), getRelation(IDDTRANS), addrdirect)); Relation union = addDefinition(union(newRelation(), addrdirect, comp)); - return intersection(r, union, getRelation(MM)); + yield intersection(r, union, getRelation(MM)); } - case CTRL: { + case CTRL -> { Relation comp = addDefinition(composition(newRelation(), getRelation(IDDTRANS), getRelation(CTRLDIRECT))); - return intersection(r, comp, getRelation(MV)); + yield intersection(r, comp, getRelation(MV)); } - case POLOC: - return intersection(r, getRelation(PO), getRelation(LOC)); - case RFE: - return intersection(r, getRelation(RF), getRelation(EXT)); - case RFI: - return intersection(r, getRelation(RF), getRelation(INT)); - case COE: - return intersection(r, getRelation(CO), getRelation(EXT)); - case COI: - return intersection(r, getRelation(CO), getRelation(INT)); - case FRE: - return intersection(r, getRelation(FR), getRelation(EXT)); - case FRI: - return intersection(r, getRelation(FR), getRelation(INT)); - case MFENCE: - return fence(r, MFENCE); - case ISH: - return fence(r, ISH); - case ISB: - return fence(r, ISB); - case SYNC: - return fence(r, SYNC); - case ISYNC: - return fence(r, ISYNC); - case LWSYNC: - return fence(r, LWSYNC); - case CTRLISYNC: - return intersection(r, getRelation(CTRL), getRelation(ISYNC)); - case CTRLISB: - return intersection(r, getRelation(CTRL), getRelation(ISB)); - case SR: - return new SameScope(r); - case SCTA: - return new SameScope(r, Tag.PTX.CTA); - case SYNCBAR: - return new SyncBar(r); - case SYNC_BARRIER: - return intersection(r, getRelation(SYNCBAR), getRelation(SCTA)); - case SYNC_FENCE: - return new SyncFence(r); - case VLOC: - return new VirtualLocation(r); - default: - throw new RuntimeException(name + "is part of RelationNameRepository but it has no associated relation."); - } + case POLOC -> intersection(r, getRelation(PO), getRelation(LOC)); + case RFE -> intersection(r, getRelation(RF), getRelation(EXT)); + case RFI -> intersection(r, getRelation(RF), getRelation(INT)); + case COE -> intersection(r, getRelation(CO), getRelation(EXT)); + case COI -> intersection(r, getRelation(CO), getRelation(INT)); + case FRE -> intersection(r, getRelation(FR), getRelation(EXT)); + case FRI -> intersection(r, getRelation(FR), getRelation(INT)); + case MFENCE -> fence(r, MFENCE); + case ISH -> fence(r, ISH); + case ISB -> fence(r, ISB); + case SYNC -> fence(r, SYNC); + case ISYNC -> fence(r, ISYNC); + case LWSYNC -> fence(r, LWSYNC); + case CTRLISYNC -> intersection(r, getRelation(CTRL), getRelation(ISYNC)); + case CTRLISB -> intersection(r, getRelation(CTRL), getRelation(ISB)); + case SR -> new SameScope(r); + case SCTA -> new SameScope(r, Tag.PTX.CTA); + case SYNCBAR -> new SyncBar(r); + case SYNC_BARRIER -> intersection(r, getRelation(SYNCBAR), getRelation(SCTA)); + case SYNC_FENCE -> new SyncFence(r); + case VLOC -> new VirtualLocation(r); + default -> + throw new RuntimeException(name + "is part of RelationNameRepository but it has no associated relation."); + }; } private Definition union(Relation r0, Relation r1, Relation r2) { diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/analysis/RelationAnalysis.java b/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/analysis/RelationAnalysis.java index 7d75ea5ef1..7fb7b58d72 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/analysis/RelationAnalysis.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/analysis/RelationAnalysis.java @@ -9,7 +9,7 @@ import com.dat3m.dartagnan.program.analysis.ExecutionAnalysis; import com.dat3m.dartagnan.program.analysis.alias.AliasAnalysis; import com.dat3m.dartagnan.program.event.Tag; -import com.dat3m.dartagnan.program.event.arch.ptx.FenceWithId; +import com.dat3m.dartagnan.program.event.arch.ptx.PTXFenceWithId; import com.dat3m.dartagnan.program.event.core.*; import com.dat3m.dartagnan.program.event.core.rmw.RMWStore; import com.dat3m.dartagnan.program.event.core.rmw.RMWStoreExclusive; @@ -36,7 +36,6 @@ import java.util.*; import java.util.function.Function; -import java.util.stream.Collectors; import java.util.stream.Stream; import static com.dat3m.dartagnan.configuration.Arch.RISCV; @@ -112,39 +111,48 @@ private RelationAnalysis(VerificationTask t, Context context, Configuration conf public static RelationAnalysis fromConfig(VerificationTask task, Context context, Configuration config) throws InvalidConfigurationException { RelationAnalysis a = new RelationAnalysis(task, context, config); task.getConfig().inject(a); - logger.info("{}: {}", ENABLE_RELATION_ANALYSIS, a.enable); + + final StringBuilder configSummary = new StringBuilder().append("\n"); + configSummary.append("\t").append(ENABLE_RELATION_ANALYSIS).append(": ").append(a.enable).append("\n"); + configSummary.append("\t").append(ENABLE_MUST_SETS).append(": ").append(a.enableMustSets).append("\n"); + configSummary.append("\t").append(ENABLE_EXTENDED_RELATION_ANALYSIS).append(": ").append(a.enableExtended); + logger.info(configSummary); + if (a.enableMustSets && !a.enable) { logger.warn("{} implies {}", ENABLE_MUST_SETS, ENABLE_RELATION_ANALYSIS); a.enableMustSets = false; } - logger.info("{}: {}", ENABLE_MUST_SETS, a.enableMustSets); if (a.enableExtended && !a.enable) { logger.warn("{} implies {}", ENABLE_EXTENDED_RELATION_ANALYSIS, ENABLE_RELATION_ANALYSIS); a.enableExtended = false; } - logger.info("{}: {}", ENABLE_EXTENDED_RELATION_ANALYSIS, a.enableExtended); + long t0 = System.currentTimeMillis(); a.run(); long t1 = System.currentTimeMillis(); logger.info("Finished regular analysis in {}ms", t1 - t0); + + final StringBuilder summary = new StringBuilder() + .append("\n======== RelationAnalysis summary ======== \n"); + summary.append("\t#Relations: ").append(task.getMemoryModel().getRelations().size()).append("\n"); + summary.append("\t#Axioms: ").append(task.getMemoryModel().getAxioms().size()).append("\n"); if (a.enableExtended) { long mayCount = a.countMaySet(); long mustCount = a.countMustSet(); a.runExtended(); logger.info("Finished extended analysis in {}ms", System.currentTimeMillis() - t1); - logger.info("Count of may-tuples removed: {}", mayCount - a.countMaySet()); - logger.info("Count of must-tuples added: {}", a.countMustSet() - mustCount); + summary.append("\t#may-tuples removed (extended): ").append(mayCount - a.countMaySet()).append("\n"); + summary.append("\t#must-tuples added (extended): ").append(a.countMustSet() - mustCount).append("\n"); } verify(a.enableMustSets || a.knowledgeMap.values().stream().allMatch(k -> k.must.isEmpty())); - logger.info("Number of may-tuples: {}", a.countMaySet()); - logger.info("Number of must-tuples: {}", a.countMustSet()); - logger.info("Number of mutually-exclusive tuples: {}", a.mutex.size()); Knowledge rf = a.knowledgeMap.get(task.getMemoryModel().getRelation(RF)); - logger.info("Number of may-read-from-tuples: {}", rf.may.size()); - logger.info("Number of must-read-from-tuples: {}", rf.must.size()); Knowledge co = a.knowledgeMap.get(task.getMemoryModel().getRelation(CO)); - logger.info("Number of may-coherence-tuples: {}", co.may.size()); - logger.info("Number of must-coherence-tuples: {}", co.must.size()); + summary.append("\ttotal #must|may|exclusive tuples: ") + .append(a.countMustSet()).append("|").append(a.countMaySet()).append("|").append(a.mutex.size()).append("\n"); + summary.append("\t#must|may rf tuples: ").append(rf.must.size()).append("|").append(rf.may.size()).append("\n"); + summary.append("\t#must|may co tuples: ").append(co.must.size()).append("|").append(co.may.size()).append("\n"); + summary.append("==========================================="); + logger.info(summary); return a; } @@ -472,8 +480,8 @@ public Knowledge visitDefinition(Relation r, List d) { @Override public Knowledge visitProduct(Relation rel, Filter domain, Filter range) { Set must = new HashSet<>(); - List l1 = program.getEvents().stream().filter(domain::apply).collect(toList()); - List l2 = program.getEvents().stream().filter(range::apply).collect(toList()); + List l1 = program.getEvents().stream().filter(domain::apply).toList(); + List l2 = program.getEvents().stream().filter(range::apply).toList(); for (Event e1 : l1) { for (Event e2 : l2) { if (!exec.areMutuallyExclusive(e1, e2)) { @@ -536,7 +544,7 @@ public Knowledge visitInternal(Relation rel) { public Knowledge visitProgramOrder(Relation rel, Filter type) { Set must = new HashSet<>(); for (Thread t : program.getThreads()) { - List events = t.getEvents().stream().filter(type::apply).collect(toList()); + List events = t.getEvents().stream().filter(type::apply).toList(); for (int i = 0; i < events.size(); i++) { Event e1 = events.get(i); for (int j = i + 1; j < events.size(); j++) { @@ -707,7 +715,7 @@ public Knowledge visitReadModifyWrites(Relation rel) { Set may = new HashSet<>(must); // LoadExcl -> StoreExcl for (Thread thread : program.getThreads()) { - List events = thread.getEvents().stream().filter(e -> e.hasTag(EXCL)).collect(toList()); + List events = thread.getEvents().stream().filter(e -> e.hasTag(EXCL)).toList(); // assume order by globalId // assume globalId describes a topological sorting over the control flow for (int end = 1; end < events.size(); end++) { @@ -804,7 +812,7 @@ public Knowledge visitReadFrom(Relation rel) { .filter(e -> (e.getThread() == read.getThread() || e.hasTag(INIT))) .map(x -> (MemoryCoreEvent) x) .sorted((o1, o2) -> o1.hasTag(INIT) == o2.hasTag(INIT) ? (o1.getGlobalId() - o2.getGlobalId()) : o1.hasTag(INIT) ? -1 : 1) - .collect(Collectors.toList()); + .toList(); // The set of writes that won't be readable due getting overwritten. Set deletedWrites = new HashSet<>(); // A rf-edge (w1, r) is impossible, if there exists a write w2 such that @@ -969,9 +977,9 @@ public Knowledge visitSameScope(Relation rel, String specificScope) { public Knowledge visitSyncBarrier(Relation sync_bar) { Set may = new HashSet<>(); Set must = new HashSet<>(); - List fenceEvents = program.getEvents(FenceWithId.class); - for (FenceWithId e1 : fenceEvents) { - for (FenceWithId e2 : fenceEvents) { + List fenceEvents = program.getEvents(PTXFenceWithId.class); + for (PTXFenceWithId e1 : fenceEvents) { + for (PTXFenceWithId e2 : fenceEvents) { if(exec.areMutuallyExclusive(e1, e2)) { continue; } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/axiom/Acyclic.java b/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/axiom/Acyclic.java index 0bd68c658f..ce486623b9 100755 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/axiom/Acyclic.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/axiom/Acyclic.java @@ -11,9 +11,6 @@ import com.dat3m.dartagnan.wmm.utils.Tuple; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.sosy_lab.common.configuration.Configuration; -import org.sosy_lab.common.configuration.InvalidConfigurationException; -import org.sosy_lab.common.configuration.Option; import org.sosy_lab.common.configuration.Options; import org.sosy_lab.java_smt.api.BooleanFormula; import org.sosy_lab.java_smt.api.BooleanFormulaManager; @@ -24,21 +21,13 @@ import java.util.function.Function; import java.util.stream.Collectors; -import static com.dat3m.dartagnan.configuration.OptionNames.ENABLE_ACTIVE_SETS; -import static com.dat3m.dartagnan.configuration.OptionNames.REDUCE_ACYCLICITY_ENCODE_SETS; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.collect.Sets.difference; @Options public class Acyclic extends Axiom { - private static final Logger logger = LogManager.getLogger(Acyclic.class); - - @Option(name = REDUCE_ACYCLICITY_ENCODE_SETS, - description = "Omit adding transitively implied relationships to the encode set of an acyclic relation." + - " This option is only relevant if \"" + ENABLE_ACTIVE_SETS + "\" is set.", - secure = true) - private boolean reduceAcyclicityEncoding = true; + private static final Logger logger = LogManager.getLogger(Acyclic.class); public Acyclic(Relation rel, boolean negated, boolean flag) { super(rel, negated, flag); @@ -48,12 +37,6 @@ public Acyclic(Relation rel) { super(rel, false, false); } - @Override - public void configure(Configuration config) throws InvalidConfigurationException { - config.inject(this); - logger.info("{}: {}", REDUCE_ACYCLICITY_ENCODE_SETS, reduceAcyclicityEncoding); - } - @Override public String toString() { return (negated ? "~" : "") + "acyclic " + rel.getNameOrTerm(); @@ -206,7 +189,7 @@ private Set getEncodeTupleSet(ExecutionAnalysis exec, RelationAnalysis ra } logger.info("encodeTupleSet size: {}", result.size()); - if (reduceAcyclicityEncoding) { + if (getMemoryModel().getConfig().isReduceAcyclicityEncoding()) { Set obsolete = transitivelyDerivableMustTuples(exec, ra.getKnowledge(rel)); result.removeAll(obsolete); logger.info("reduced encodeTupleSet size: {}", result.size()); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/axiom/Axiom.java b/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/axiom/Axiom.java index dccce574f7..fe3e502e8b 100755 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/axiom/Axiom.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/axiom/Axiom.java @@ -4,15 +4,12 @@ import com.dat3m.dartagnan.verification.VerificationTask; import com.dat3m.dartagnan.wmm.Constraint; import com.dat3m.dartagnan.wmm.Relation; +import com.dat3m.dartagnan.wmm.Wmm; import com.dat3m.dartagnan.wmm.utils.Tuple; import org.sosy_lab.common.configuration.Configuration; import org.sosy_lab.common.configuration.InvalidConfigurationException; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; +import java.util.*; /** * @@ -43,6 +40,8 @@ public Relation getRelation() { return rel; } + public Wmm getMemoryModel() { return rel.getMemoryModel(); } + /** * Users have the option to not enforce consistency checks, but rather * to use axioms to report properties of the candidate execution. diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/relation/RelationNameRepository.java b/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/relation/RelationNameRepository.java index 8095df3fee..aa9ec01ae2 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/relation/RelationNameRepository.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/relation/RelationNameRepository.java @@ -49,7 +49,6 @@ public class RelationNameRepository { public static final String SYNC_FENCE = "sync_fence"; public static final String SYNCBAR = "syncbar"; public static final String VLOC = "vloc"; - // Any new string must be also added to method contains() below public static final ImmutableSet RELATION_NAMES; diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/utils/Flag.java b/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/utils/Flag.java index 7a2fffc156..e58d38db6d 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/utils/Flag.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/utils/Flag.java @@ -1,16 +1,15 @@ package com.dat3m.dartagnan.wmm.utils; +import com.google.common.collect.ImmutableSet; import org.sosy_lab.java_smt.api.BooleanFormula; import org.sosy_lab.java_smt.api.FormulaManager; -import com.google.common.collect.ImmutableSet; - public enum Flag { ARM_UNPREDICTABLE_BEHAVIOUR, LINUX_UNBALANCED_RCU; // TODO: Add linux when implemented - public static ImmutableSet all = ImmutableSet.of(ARM_UNPREDICTABLE_BEHAVIOUR); + public static final ImmutableSet ALL = ImmutableSet.of(ARM_UNPREDICTABLE_BEHAVIOUR); public BooleanFormula repr(FormulaManager m){ return m.getBooleanFormulaManager().makeVariable(code()); @@ -18,22 +17,16 @@ public BooleanFormula repr(FormulaManager m){ @Override public String toString(){ - switch (this){ - case ARM_UNPREDICTABLE_BEHAVIOUR: - return "ARM unpredictable behaviour"; - case LINUX_UNBALANCED_RCU: - return "Linux unbalanced RCU lock-unlock"; - } - throw new UnsupportedOperationException("Illegal flag type"); + return switch (this) { + case ARM_UNPREDICTABLE_BEHAVIOUR -> "ARM unpredictable behaviour"; + case LINUX_UNBALANCED_RCU -> "Linux unbalanced RCU lock-unlock"; + }; } private String code(){ - switch (this){ - case ARM_UNPREDICTABLE_BEHAVIOUR: - return "ARM_unpredictable_flag"; - case LINUX_UNBALANCED_RCU: - return "Linux_unbalanced_RCU_flag"; - } - throw new UnsupportedOperationException("Illegal flag type"); + return switch (this) { + case ARM_UNPREDICTABLE_BEHAVIOUR -> "ARM_unpredictable_flag"; + case LINUX_UNBALANCED_RCU -> "Linux_unbalanced_RCU_flag"; + }; } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/utils/Tuple.java b/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/utils/Tuple.java index c34d07f6ce..c05035a1c7 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/utils/Tuple.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/wmm/utils/Tuple.java @@ -66,11 +66,15 @@ public Tuple permute(Function p) { } public boolean isCrossThread() { - return !isSameThread(); + return first.getThread() != null && !isSameFunction(); } public boolean isSameThread() { - return first.getThread() == second.getThread(); + return first.getThread() != null && isSameFunction(); + } + + public boolean isSameFunction() { + return first.getFunction() == second.getFunction(); } public boolean isForward() { diff --git a/dartagnan/src/test/java/com/dat3m/dartagnan/c/MiscellaneousTest.java b/dartagnan/src/test/java/com/dat3m/dartagnan/c/MiscellaneousTest.java index e8f6099263..e4bc01caca 100644 --- a/dartagnan/src/test/java/com/dat3m/dartagnan/c/MiscellaneousTest.java +++ b/dartagnan/src/test/java/com/dat3m/dartagnan/c/MiscellaneousTest.java @@ -14,7 +14,8 @@ import static com.dat3m.dartagnan.configuration.Arch.*; import static com.dat3m.dartagnan.utils.ResourceHelper.TEST_RESOURCE_PATH; -import static com.dat3m.dartagnan.utils.Result.*; +import static com.dat3m.dartagnan.utils.Result.FAIL; +import static com.dat3m.dartagnan.utils.Result.PASS; import static org.junit.Assert.assertEquals; @RunWith(Parameterized.class) @@ -51,6 +52,12 @@ public static Iterable data() throws IOException { {"SB-RMW", IMM, PASS, 1}, {"MP_atomic_bool", IMM, PASS, 1}, {"MP_atomic_bool_weak", IMM, FAIL, 1}, + {"thread_chaining", IMM, PASS, 1}, + {"thread_inlining", IMM, PASS, 1}, + {"thread_inlining_complex", IMM, PASS, 1}, + {"thread_inlining_complex_2", IMM, PASS, 1}, + {"thread_local", IMM, PASS, 1}, + {"nondet_loop", IMM, FAIL, 3} }); } diff --git a/dartagnan/src/test/java/com/dat3m/dartagnan/exceptions/ExceptionsTest.java b/dartagnan/src/test/java/com/dat3m/dartagnan/exceptions/ExceptionsTest.java index b4cff23831..117a0eba5b 100644 --- a/dartagnan/src/test/java/com/dat3m/dartagnan/exceptions/ExceptionsTest.java +++ b/dartagnan/src/test/java/com/dat3m/dartagnan/exceptions/ExceptionsTest.java @@ -1,7 +1,7 @@ package com.dat3m.dartagnan.exceptions; import com.dat3m.dartagnan.exception.MalformedProgramException; -import com.dat3m.dartagnan.expression.*; +import com.dat3m.dartagnan.expression.ExpressionFactory; import com.dat3m.dartagnan.expression.type.TypeFactory; import com.dat3m.dartagnan.parsers.program.ProgramParser; import com.dat3m.dartagnan.parsers.program.utils.ProgramBuilder; @@ -26,16 +26,15 @@ public class ExceptionsTest { @Test(expected = MalformedProgramException.class) public void noThread() throws Exception { - ProgramBuilder pb = new ProgramBuilder(SourceLanguage.LITMUS); - // Thread 1 does not exists + ProgramBuilder pb = ProgramBuilder.forLanguage(SourceLanguage.LITMUS); + // Thread 1 does not exist pb.addChild(1, new Skip()); } @Test(expected = MalformedProgramException.class) public void RegisterAlreadyExist() throws Exception { - ProgramBuilder pb = new ProgramBuilder(SourceLanguage.LITMUS); - pb.initThread(0); - Thread t = pb.build().getThreads().get(0); + ProgramBuilder pb = ProgramBuilder.forLanguage(SourceLanguage.LITMUS); + Thread t = pb.newThread(0); t.newRegister("r1", types.getIntegerType()); // Adding same register a second time t.newRegister("r1", types.getIntegerType()); @@ -43,8 +42,8 @@ public void RegisterAlreadyExist() throws Exception { @Test(expected = IllegalArgumentException.class) public void reorderAfterUnrollException() throws Exception { - ProgramBuilder pb = new ProgramBuilder(SourceLanguage.LITMUS); - pb.initThread(0); + ProgramBuilder pb = ProgramBuilder.forLanguage(SourceLanguage.LITMUS); + pb.newThread(0); Program p = pb.build(); LoopUnrolling.newInstance().run(p); // Reordering cannot be called after unrolling @@ -53,8 +52,8 @@ public void reorderAfterUnrollException() throws Exception { @Test(expected = IllegalArgumentException.class) public void analyzeBeforeUnrollException() throws Exception { - ProgramBuilder pb = new ProgramBuilder(SourceLanguage.LITMUS); - pb.initThread(0); + ProgramBuilder pb = ProgramBuilder.forLanguage(SourceLanguage.LITMUS); + pb.newThread(0); Program p = pb.build(); Configuration config = Configuration.defaultConfiguration(); // The program must be unrolled before being able to construct an Encoder for it @@ -71,7 +70,7 @@ public void diffPrecisionInt() throws Exception { @Test(expected = NullPointerException.class) public void JumpWithNullLabel() throws Exception { - EventFactory.newJump(BConst.FALSE, null); + EventFactory.newJump(ExpressionFactory.getInstance().makeFalse(), null); } @Test(expected = NullPointerException.class) diff --git a/dartagnan/src/test/java/com/dat3m/dartagnan/miscellaneous/AnalysisTest.java b/dartagnan/src/test/java/com/dat3m/dartagnan/miscellaneous/AnalysisTest.java index cfddf0a540..edd709936f 100644 --- a/dartagnan/src/test/java/com/dat3m/dartagnan/miscellaneous/AnalysisTest.java +++ b/dartagnan/src/test/java/com/dat3m/dartagnan/miscellaneous/AnalysisTest.java @@ -48,18 +48,18 @@ private enum Result {NONE, MAY, MUST} @Test public void dependencyMustOverride() throws InvalidConfigurationException { - ProgramBuilder b = new ProgramBuilder(SourceLanguage.LITMUS); - b.initThread(0); + ProgramBuilder b = ProgramBuilder.forLanguage(SourceLanguage.LITMUS); + b.newThread(0); Register r0 = b.getOrNewRegister(0, "r0"); Register r1 = b.getOrNewRegister(0, "r1"); Register r2 = b.getOrNewRegister(0, "r2"); - Label alt = b.getOrCreateLabel("alt"); - b.addChild(0, newJump(new BNonDet(), alt)); + Label alt = b.getOrCreateLabel(0, "alt"); + b.addChild(0, newJump(new BNonDet(types.getBooleanType()), alt)); Local e0 = newLocal(r0, value(1)); b.addChild(0, e0); Local e1 = newLocal(r1, r0); b.addChild(0, e1); - Label join = b.getOrCreateLabel("join"); + Label join = b.getOrCreateLabel(0,"join"); b.addChild(0, newGoto(join)); b.addChild(0, alt); Local e2 = newLocal(r1, value(2)); @@ -112,12 +112,12 @@ public void fieldinsensitive0() throws InvalidConfigurationException { } private void program0(Alias method, Result... expect) throws InvalidConfigurationException { - ProgramBuilder b = new ProgramBuilder(SourceLanguage.LITMUS); + ProgramBuilder b = ProgramBuilder.forLanguage(SourceLanguage.LITMUS); - MemoryObject x = b.newObject("x", 2); - MemoryObject y = b.getOrNewObject("y"); + MemoryObject x = b.newMemoryObject("x", 2); + MemoryObject y = b.newMemoryObject("y", 1); - b.initThread(0); + b.newThread(0); Register r0 = b.getOrNewRegister(0, "r0"); //this is undefined behavior in C11 //the expression does not match a sum, but x occurs in it @@ -160,11 +160,11 @@ public void fieldinsensitive1() throws InvalidConfigurationException { } private void program1(Alias method, Result... expect) throws InvalidConfigurationException { - ProgramBuilder b = new ProgramBuilder(SourceLanguage.LITMUS); - MemoryObject x = b.newObject("x", 3); + ProgramBuilder b = ProgramBuilder.forLanguage(SourceLanguage.LITMUS); + MemoryObject x = b.newMemoryObject("x", 3); x.setInitialValue(0, x); - b.initThread(0); + b.newThread(0); Store e0 = newStore(plus(x, 1)); b.addChild(0, e0); Register r0 = b.getOrNewRegister(0, "r0"); @@ -204,14 +204,14 @@ public void fieldinsensitive2() throws InvalidConfigurationException { } private void program2(Alias method, Result... expect) throws InvalidConfigurationException { - ProgramBuilder b = new ProgramBuilder(SourceLanguage.LITMUS); + ProgramBuilder b = ProgramBuilder.forLanguage(SourceLanguage.LITMUS); IntegerType type = types.getArchType(); - MemoryObject x = b.newObject("x", 3); + MemoryObject x = b.newMemoryObject("x", 3); - b.initThread(0); + b.newThread(0); Register r0 = b.getOrNewRegister(0, "r0"); b.addChild(0, newLocal(r0, b.newConstant(type, true))); - Label l0 = b.getOrCreateLabel("l0"); + Label l0 = b.getOrCreateLabel(0,"l0"); b.addChild(0, newJump(expressions.makeOr( expressions.makeGT(r0, expressions.makeOne(type), true), expressions.makeLT(r0, expressions.makeZero(type), true)), l0)); @@ -258,11 +258,11 @@ public void fieldinsensitive3() throws InvalidConfigurationException { } private void program3(Alias method, Result... expect) throws InvalidConfigurationException { - ProgramBuilder b = new ProgramBuilder(SourceLanguage.LITMUS); - MemoryObject x = b.newObject("x", 3); + ProgramBuilder b = ProgramBuilder.forLanguage(SourceLanguage.LITMUS); + MemoryObject x = b.newMemoryObject("x", 3); x.setInitialValue(0, x); - b.initThread(0); + b.newThread(0); Register r0 = b.getOrNewRegister(0, "r0"); Load e0 = newLoad(r0, x); b.addChild(0, e0); @@ -302,12 +302,12 @@ public void fieldinsensitive4() throws InvalidConfigurationException { } private void program4(Alias method, Result... expect) throws InvalidConfigurationException { - ProgramBuilder b = new ProgramBuilder(SourceLanguage.LITMUS); - MemoryObject x = b.getOrNewObject("x"); - MemoryObject y = b.getOrNewObject("y"); - MemoryObject z = b.getOrNewObject("z"); + ProgramBuilder b = ProgramBuilder.forLanguage(SourceLanguage.LITMUS); + MemoryObject x = b.newMemoryObject("x", 1); + MemoryObject y = b.newMemoryObject("y", 1); + MemoryObject z = b.newMemoryObject("z", 1); - b.initThread(0); + b.newThread(0); Register r0 = b.getOrNewRegister(0, "r0"); b.addChild(0, newLocal(r0, mult(x, 0))); b.addChild(0, newLocal(r0, y)); @@ -346,12 +346,12 @@ public void fieldinsensitive5() throws InvalidConfigurationException { } private void program5(Alias method, Result... expect) throws InvalidConfigurationException { - ProgramBuilder b = new ProgramBuilder(SourceLanguage.LITMUS); - MemoryObject x = b.getOrNewObject("x"); - MemoryObject y = b.getOrNewObject("y"); - MemoryObject z = b.getOrNewObject("z"); + ProgramBuilder b = ProgramBuilder.forLanguage(SourceLanguage.LITMUS); + MemoryObject x = b.newMemoryObject("x", 1); + MemoryObject y = b.newMemoryObject("y", 1); + MemoryObject z = b.newMemoryObject("z", 1); - b.initThread(0); + b.newThread(0); Register r0 = b.getOrNewRegister(0, "r0"); b.addChild(0, newLocal(r0, y)); Store e0 = newStore(r0); diff --git a/dartagnan/src/test/resources/miscellaneous/nondet_loop.bpl b/dartagnan/src/test/resources/miscellaneous/nondet_loop.bpl new file mode 100644 index 0000000000..eba8384092 --- /dev/null +++ b/dartagnan/src/test/resources/miscellaneous/nondet_loop.bpl @@ -0,0 +1,16198 @@ +// generated by SMACK version 2.8.0 for corral +// via /usr/local/bin/smack -q -t --no-memory-splitting --clang-options= -bpl /Users/thomashaas/IdeaProjects/Dat3M/output/nondet_loop-opt.bpl /Users/thomashaas/IdeaProjects/Dat3M/output/nondet_loop-opt.ll + +// Basic types +type i1 = int; +type i5 = int; +type i6 = int; +type i8 = int; +type i16 = int; +type i24 = int; +type i32 = int; +type i33 = int; +type i40 = int; +type i48 = int; +type i56 = int; +type i64 = int; +type i80 = int; +type i88 = int; +type i96 = int; +type i128 = int; +type i160 = int; +type i256 = int; +type ref = i64; +type float; + +// Basic constants +const $0: i32; +axiom ($0 == 0); +const $1: i32; +axiom ($1 == 1); +const $0.ref: ref; +axiom ($0.ref == 0); +const $1.ref: ref; +axiom ($1.ref == 1); +const $1024.ref: ref; +axiom ($1024.ref == 1024); +// Memory model constants +const $GLOBALS_BOTTOM: ref; +const $EXTERNS_BOTTOM: ref; +const $MALLOC_TOP: ref; + +// Memory maps (0 regions) + +// Memory address bounds +axiom ($GLOBALS_BOTTOM == $sub.ref(0, 25797)); +axiom ($EXTERNS_BOTTOM == $add.ref($GLOBALS_BOTTOM, $sub.ref(0, 32768))); +axiom ($MALLOC_TOP == 9223372036854775807); +function {:inline} $isExternal(p: ref) returns (bool) { $slt.ref.bool(p, $EXTERNS_BOTTOM) } + +// SMT bit-vector/integer conversion +function {:builtin "(_ int2bv 64)"} $int2bv.64(i: i64) returns (bv64); +function {:builtin "bv2nat"} $bv2int.64(i: bv64) returns (i64); + +// Integer arithmetic operations +function {:inline} $add.i1(i1: i1, i2: i1) returns (i1) { (i1 + i2) } +function {:inline} $add.i5(i1: i5, i2: i5) returns (i5) { (i1 + i2) } +function {:inline} $add.i6(i1: i6, i2: i6) returns (i6) { (i1 + i2) } +function {:inline} $add.i8(i1: i8, i2: i8) returns (i8) { (i1 + i2) } +function {:inline} $add.i16(i1: i16, i2: i16) returns (i16) { (i1 + i2) } +function {:inline} $add.i24(i1: i24, i2: i24) returns (i24) { (i1 + i2) } +function {:inline} $add.i32(i1: i32, i2: i32) returns (i32) { (i1 + i2) } +function {:inline} $add.i33(i1: i33, i2: i33) returns (i33) { (i1 + i2) } +function {:inline} $add.i40(i1: i40, i2: i40) returns (i40) { (i1 + i2) } +function {:inline} $add.i48(i1: i48, i2: i48) returns (i48) { (i1 + i2) } +function {:inline} $add.i56(i1: i56, i2: i56) returns (i56) { (i1 + i2) } +function {:inline} $add.i64(i1: i64, i2: i64) returns (i64) { (i1 + i2) } +function {:inline} $add.i80(i1: i80, i2: i80) returns (i80) { (i1 + i2) } +function {:inline} $add.i88(i1: i88, i2: i88) returns (i88) { (i1 + i2) } +function {:inline} $add.i96(i1: i96, i2: i96) returns (i96) { (i1 + i2) } +function {:inline} $add.i128(i1: i128, i2: i128) returns (i128) { (i1 + i2) } +function {:inline} $add.i160(i1: i160, i2: i160) returns (i160) { (i1 + i2) } +function {:inline} $add.i256(i1: i256, i2: i256) returns (i256) { (i1 + i2) } +function {:inline} $sub.i1(i1: i1, i2: i1) returns (i1) { (i1 - i2) } +function {:inline} $sub.i5(i1: i5, i2: i5) returns (i5) { (i1 - i2) } +function {:inline} $sub.i6(i1: i6, i2: i6) returns (i6) { (i1 - i2) } +function {:inline} $sub.i8(i1: i8, i2: i8) returns (i8) { (i1 - i2) } +function {:inline} $sub.i16(i1: i16, i2: i16) returns (i16) { (i1 - i2) } +function {:inline} $sub.i24(i1: i24, i2: i24) returns (i24) { (i1 - i2) } +function {:inline} $sub.i32(i1: i32, i2: i32) returns (i32) { (i1 - i2) } +function {:inline} $sub.i33(i1: i33, i2: i33) returns (i33) { (i1 - i2) } +function {:inline} $sub.i40(i1: i40, i2: i40) returns (i40) { (i1 - i2) } +function {:inline} $sub.i48(i1: i48, i2: i48) returns (i48) { (i1 - i2) } +function {:inline} $sub.i56(i1: i56, i2: i56) returns (i56) { (i1 - i2) } +function {:inline} $sub.i64(i1: i64, i2: i64) returns (i64) { (i1 - i2) } +function {:inline} $sub.i80(i1: i80, i2: i80) returns (i80) { (i1 - i2) } +function {:inline} $sub.i88(i1: i88, i2: i88) returns (i88) { (i1 - i2) } +function {:inline} $sub.i96(i1: i96, i2: i96) returns (i96) { (i1 - i2) } +function {:inline} $sub.i128(i1: i128, i2: i128) returns (i128) { (i1 - i2) } +function {:inline} $sub.i160(i1: i160, i2: i160) returns (i160) { (i1 - i2) } +function {:inline} $sub.i256(i1: i256, i2: i256) returns (i256) { (i1 - i2) } +function {:inline} $mul.i1(i1: i1, i2: i1) returns (i1) { (i1 * i2) } +function {:inline} $mul.i5(i1: i5, i2: i5) returns (i5) { (i1 * i2) } +function {:inline} $mul.i6(i1: i6, i2: i6) returns (i6) { (i1 * i2) } +function {:inline} $mul.i8(i1: i8, i2: i8) returns (i8) { (i1 * i2) } +function {:inline} $mul.i16(i1: i16, i2: i16) returns (i16) { (i1 * i2) } +function {:inline} $mul.i24(i1: i24, i2: i24) returns (i24) { (i1 * i2) } +function {:inline} $mul.i32(i1: i32, i2: i32) returns (i32) { (i1 * i2) } +function {:inline} $mul.i33(i1: i33, i2: i33) returns (i33) { (i1 * i2) } +function {:inline} $mul.i40(i1: i40, i2: i40) returns (i40) { (i1 * i2) } +function {:inline} $mul.i48(i1: i48, i2: i48) returns (i48) { (i1 * i2) } +function {:inline} $mul.i56(i1: i56, i2: i56) returns (i56) { (i1 * i2) } +function {:inline} $mul.i64(i1: i64, i2: i64) returns (i64) { (i1 * i2) } +function {:inline} $mul.i80(i1: i80, i2: i80) returns (i80) { (i1 * i2) } +function {:inline} $mul.i88(i1: i88, i2: i88) returns (i88) { (i1 * i2) } +function {:inline} $mul.i96(i1: i96, i2: i96) returns (i96) { (i1 * i2) } +function {:inline} $mul.i128(i1: i128, i2: i128) returns (i128) { (i1 * i2) } +function {:inline} $mul.i160(i1: i160, i2: i160) returns (i160) { (i1 * i2) } +function {:inline} $mul.i256(i1: i256, i2: i256) returns (i256) { (i1 * i2) } +function {:builtin "div"} $idiv.i1(i1: i1, i2: i1) returns (i1); +function {:builtin "div"} $idiv.i5(i1: i5, i2: i5) returns (i5); +function {:builtin "div"} $idiv.i6(i1: i6, i2: i6) returns (i6); +function {:builtin "div"} $idiv.i8(i1: i8, i2: i8) returns (i8); +function {:builtin "div"} $idiv.i16(i1: i16, i2: i16) returns (i16); +function {:builtin "div"} $idiv.i24(i1: i24, i2: i24) returns (i24); +function {:builtin "div"} $idiv.i32(i1: i32, i2: i32) returns (i32); +function {:builtin "div"} $idiv.i33(i1: i33, i2: i33) returns (i33); +function {:builtin "div"} $idiv.i40(i1: i40, i2: i40) returns (i40); +function {:builtin "div"} $idiv.i48(i1: i48, i2: i48) returns (i48); +function {:builtin "div"} $idiv.i56(i1: i56, i2: i56) returns (i56); +function {:builtin "div"} $idiv.i64(i1: i64, i2: i64) returns (i64); +function {:builtin "div"} $idiv.i80(i1: i80, i2: i80) returns (i80); +function {:builtin "div"} $idiv.i88(i1: i88, i2: i88) returns (i88); +function {:builtin "div"} $idiv.i96(i1: i96, i2: i96) returns (i96); +function {:builtin "div"} $idiv.i128(i1: i128, i2: i128) returns (i128); +function {:builtin "div"} $idiv.i160(i1: i160, i2: i160) returns (i160); +function {:builtin "div"} $idiv.i256(i1: i256, i2: i256) returns (i256); +function {:inline} $sdiv.i1(i1: i1, i2: i1) returns (i1) { $idiv.i1(i1, i2) } +function {:inline} $sdiv.i5(i1: i5, i2: i5) returns (i5) { $idiv.i5(i1, i2) } +function {:inline} $sdiv.i6(i1: i6, i2: i6) returns (i6) { $idiv.i6(i1, i2) } +function {:inline} $sdiv.i8(i1: i8, i2: i8) returns (i8) { $idiv.i8(i1, i2) } +function {:inline} $sdiv.i16(i1: i16, i2: i16) returns (i16) { $idiv.i16(i1, i2) } +function {:inline} $sdiv.i24(i1: i24, i2: i24) returns (i24) { $idiv.i24(i1, i2) } +function {:inline} $sdiv.i32(i1: i32, i2: i32) returns (i32) { $idiv.i32(i1, i2) } +function {:inline} $sdiv.i33(i1: i33, i2: i33) returns (i33) { $idiv.i33(i1, i2) } +function {:inline} $sdiv.i40(i1: i40, i2: i40) returns (i40) { $idiv.i40(i1, i2) } +function {:inline} $sdiv.i48(i1: i48, i2: i48) returns (i48) { $idiv.i48(i1, i2) } +function {:inline} $sdiv.i56(i1: i56, i2: i56) returns (i56) { $idiv.i56(i1, i2) } +function {:inline} $sdiv.i64(i1: i64, i2: i64) returns (i64) { $idiv.i64(i1, i2) } +function {:inline} $sdiv.i80(i1: i80, i2: i80) returns (i80) { $idiv.i80(i1, i2) } +function {:inline} $sdiv.i88(i1: i88, i2: i88) returns (i88) { $idiv.i88(i1, i2) } +function {:inline} $sdiv.i96(i1: i96, i2: i96) returns (i96) { $idiv.i96(i1, i2) } +function {:inline} $sdiv.i128(i1: i128, i2: i128) returns (i128) { $idiv.i128(i1, i2) } +function {:inline} $sdiv.i160(i1: i160, i2: i160) returns (i160) { $idiv.i160(i1, i2) } +function {:inline} $sdiv.i256(i1: i256, i2: i256) returns (i256) { $idiv.i256(i1, i2) } +function {:inline} $udiv.i1(i1: i1, i2: i1) returns (i1) { $idiv.i1(i1, i2) } +function {:inline} $udiv.i5(i1: i5, i2: i5) returns (i5) { $idiv.i5(i1, i2) } +function {:inline} $udiv.i6(i1: i6, i2: i6) returns (i6) { $idiv.i6(i1, i2) } +function {:inline} $udiv.i8(i1: i8, i2: i8) returns (i8) { $idiv.i8(i1, i2) } +function {:inline} $udiv.i16(i1: i16, i2: i16) returns (i16) { $idiv.i16(i1, i2) } +function {:inline} $udiv.i24(i1: i24, i2: i24) returns (i24) { $idiv.i24(i1, i2) } +function {:inline} $udiv.i32(i1: i32, i2: i32) returns (i32) { $idiv.i32(i1, i2) } +function {:inline} $udiv.i33(i1: i33, i2: i33) returns (i33) { $idiv.i33(i1, i2) } +function {:inline} $udiv.i40(i1: i40, i2: i40) returns (i40) { $idiv.i40(i1, i2) } +function {:inline} $udiv.i48(i1: i48, i2: i48) returns (i48) { $idiv.i48(i1, i2) } +function {:inline} $udiv.i56(i1: i56, i2: i56) returns (i56) { $idiv.i56(i1, i2) } +function {:inline} $udiv.i64(i1: i64, i2: i64) returns (i64) { $idiv.i64(i1, i2) } +function {:inline} $udiv.i80(i1: i80, i2: i80) returns (i80) { $idiv.i80(i1, i2) } +function {:inline} $udiv.i88(i1: i88, i2: i88) returns (i88) { $idiv.i88(i1, i2) } +function {:inline} $udiv.i96(i1: i96, i2: i96) returns (i96) { $idiv.i96(i1, i2) } +function {:inline} $udiv.i128(i1: i128, i2: i128) returns (i128) { $idiv.i128(i1, i2) } +function {:inline} $udiv.i160(i1: i160, i2: i160) returns (i160) { $idiv.i160(i1, i2) } +function {:inline} $udiv.i256(i1: i256, i2: i256) returns (i256) { $idiv.i256(i1, i2) } +function {:builtin "mod"} $smod.i1(i1: i1, i2: i1) returns (i1); +function {:builtin "mod"} $smod.i5(i1: i5, i2: i5) returns (i5); +function {:builtin "mod"} $smod.i6(i1: i6, i2: i6) returns (i6); +function {:builtin "mod"} $smod.i8(i1: i8, i2: i8) returns (i8); +function {:builtin "mod"} $smod.i16(i1: i16, i2: i16) returns (i16); +function {:builtin "mod"} $smod.i24(i1: i24, i2: i24) returns (i24); +function {:builtin "mod"} $smod.i32(i1: i32, i2: i32) returns (i32); +function {:builtin "mod"} $smod.i33(i1: i33, i2: i33) returns (i33); +function {:builtin "mod"} $smod.i40(i1: i40, i2: i40) returns (i40); +function {:builtin "mod"} $smod.i48(i1: i48, i2: i48) returns (i48); +function {:builtin "mod"} $smod.i56(i1: i56, i2: i56) returns (i56); +function {:builtin "mod"} $smod.i64(i1: i64, i2: i64) returns (i64); +function {:builtin "mod"} $smod.i80(i1: i80, i2: i80) returns (i80); +function {:builtin "mod"} $smod.i88(i1: i88, i2: i88) returns (i88); +function {:builtin "mod"} $smod.i96(i1: i96, i2: i96) returns (i96); +function {:builtin "mod"} $smod.i128(i1: i128, i2: i128) returns (i128); +function {:builtin "mod"} $smod.i160(i1: i160, i2: i160) returns (i160); +function {:builtin "mod"} $smod.i256(i1: i256, i2: i256) returns (i256); +function {:inline} $srem.i1(i1: i1, i2: i1) returns (i1) { (if ($ne.i1.bool($smod.i1(i1, i2), 0) && $slt.i1.bool(i1, 0)) then $sub.i1($smod.i1(i1, i2), $smax.i1(i2, $sub.i1(0, i2))) else $smod.i1(i1, i2)) } +function {:inline} $srem.i5(i1: i5, i2: i5) returns (i5) { (if ($ne.i5.bool($smod.i5(i1, i2), 0) && $slt.i5.bool(i1, 0)) then $sub.i5($smod.i5(i1, i2), $smax.i5(i2, $sub.i5(0, i2))) else $smod.i5(i1, i2)) } +function {:inline} $srem.i6(i1: i6, i2: i6) returns (i6) { (if ($ne.i6.bool($smod.i6(i1, i2), 0) && $slt.i6.bool(i1, 0)) then $sub.i6($smod.i6(i1, i2), $smax.i6(i2, $sub.i6(0, i2))) else $smod.i6(i1, i2)) } +function {:inline} $srem.i8(i1: i8, i2: i8) returns (i8) { (if ($ne.i8.bool($smod.i8(i1, i2), 0) && $slt.i8.bool(i1, 0)) then $sub.i8($smod.i8(i1, i2), $smax.i8(i2, $sub.i8(0, i2))) else $smod.i8(i1, i2)) } +function {:inline} $srem.i16(i1: i16, i2: i16) returns (i16) { (if ($ne.i16.bool($smod.i16(i1, i2), 0) && $slt.i16.bool(i1, 0)) then $sub.i16($smod.i16(i1, i2), $smax.i16(i2, $sub.i16(0, i2))) else $smod.i16(i1, i2)) } +function {:inline} $srem.i24(i1: i24, i2: i24) returns (i24) { (if ($ne.i24.bool($smod.i24(i1, i2), 0) && $slt.i24.bool(i1, 0)) then $sub.i24($smod.i24(i1, i2), $smax.i24(i2, $sub.i24(0, i2))) else $smod.i24(i1, i2)) } +function {:inline} $srem.i32(i1: i32, i2: i32) returns (i32) { (if ($ne.i32.bool($smod.i32(i1, i2), 0) && $slt.i32.bool(i1, 0)) then $sub.i32($smod.i32(i1, i2), $smax.i32(i2, $sub.i32(0, i2))) else $smod.i32(i1, i2)) } +function {:inline} $srem.i33(i1: i33, i2: i33) returns (i33) { (if ($ne.i33.bool($smod.i33(i1, i2), 0) && $slt.i33.bool(i1, 0)) then $sub.i33($smod.i33(i1, i2), $smax.i33(i2, $sub.i33(0, i2))) else $smod.i33(i1, i2)) } +function {:inline} $srem.i40(i1: i40, i2: i40) returns (i40) { (if ($ne.i40.bool($smod.i40(i1, i2), 0) && $slt.i40.bool(i1, 0)) then $sub.i40($smod.i40(i1, i2), $smax.i40(i2, $sub.i40(0, i2))) else $smod.i40(i1, i2)) } +function {:inline} $srem.i48(i1: i48, i2: i48) returns (i48) { (if ($ne.i48.bool($smod.i48(i1, i2), 0) && $slt.i48.bool(i1, 0)) then $sub.i48($smod.i48(i1, i2), $smax.i48(i2, $sub.i48(0, i2))) else $smod.i48(i1, i2)) } +function {:inline} $srem.i56(i1: i56, i2: i56) returns (i56) { (if ($ne.i56.bool($smod.i56(i1, i2), 0) && $slt.i56.bool(i1, 0)) then $sub.i56($smod.i56(i1, i2), $smax.i56(i2, $sub.i56(0, i2))) else $smod.i56(i1, i2)) } +function {:inline} $srem.i64(i1: i64, i2: i64) returns (i64) { (if ($ne.i64.bool($smod.i64(i1, i2), 0) && $slt.i64.bool(i1, 0)) then $sub.i64($smod.i64(i1, i2), $smax.i64(i2, $sub.i64(0, i2))) else $smod.i64(i1, i2)) } +function {:inline} $srem.i80(i1: i80, i2: i80) returns (i80) { (if ($ne.i80.bool($smod.i80(i1, i2), 0) && $slt.i80.bool(i1, 0)) then $sub.i80($smod.i80(i1, i2), $smax.i80(i2, $sub.i80(0, i2))) else $smod.i80(i1, i2)) } +function {:inline} $srem.i88(i1: i88, i2: i88) returns (i88) { (if ($ne.i88.bool($smod.i88(i1, i2), 0) && $slt.i88.bool(i1, 0)) then $sub.i88($smod.i88(i1, i2), $smax.i88(i2, $sub.i88(0, i2))) else $smod.i88(i1, i2)) } +function {:inline} $srem.i96(i1: i96, i2: i96) returns (i96) { (if ($ne.i96.bool($smod.i96(i1, i2), 0) && $slt.i96.bool(i1, 0)) then $sub.i96($smod.i96(i1, i2), $smax.i96(i2, $sub.i96(0, i2))) else $smod.i96(i1, i2)) } +function {:inline} $srem.i128(i1: i128, i2: i128) returns (i128) { (if ($ne.i128.bool($smod.i128(i1, i2), 0) && $slt.i128.bool(i1, 0)) then $sub.i128($smod.i128(i1, i2), $smax.i128(i2, $sub.i128(0, i2))) else $smod.i128(i1, i2)) } +function {:inline} $srem.i160(i1: i160, i2: i160) returns (i160) { (if ($ne.i160.bool($smod.i160(i1, i2), 0) && $slt.i160.bool(i1, 0)) then $sub.i160($smod.i160(i1, i2), $smax.i160(i2, $sub.i160(0, i2))) else $smod.i160(i1, i2)) } +function {:inline} $srem.i256(i1: i256, i2: i256) returns (i256) { (if ($ne.i256.bool($smod.i256(i1, i2), 0) && $slt.i256.bool(i1, 0)) then $sub.i256($smod.i256(i1, i2), $smax.i256(i2, $sub.i256(0, i2))) else $smod.i256(i1, i2)) } +function {:inline} $urem.i1(i1: i1, i2: i1) returns (i1) { $smod.i1(i1, i2) } +function {:inline} $urem.i5(i1: i5, i2: i5) returns (i5) { $smod.i5(i1, i2) } +function {:inline} $urem.i6(i1: i6, i2: i6) returns (i6) { $smod.i6(i1, i2) } +function {:inline} $urem.i8(i1: i8, i2: i8) returns (i8) { $smod.i8(i1, i2) } +function {:inline} $urem.i16(i1: i16, i2: i16) returns (i16) { $smod.i16(i1, i2) } +function {:inline} $urem.i24(i1: i24, i2: i24) returns (i24) { $smod.i24(i1, i2) } +function {:inline} $urem.i32(i1: i32, i2: i32) returns (i32) { $smod.i32(i1, i2) } +function {:inline} $urem.i33(i1: i33, i2: i33) returns (i33) { $smod.i33(i1, i2) } +function {:inline} $urem.i40(i1: i40, i2: i40) returns (i40) { $smod.i40(i1, i2) } +function {:inline} $urem.i48(i1: i48, i2: i48) returns (i48) { $smod.i48(i1, i2) } +function {:inline} $urem.i56(i1: i56, i2: i56) returns (i56) { $smod.i56(i1, i2) } +function {:inline} $urem.i64(i1: i64, i2: i64) returns (i64) { $smod.i64(i1, i2) } +function {:inline} $urem.i80(i1: i80, i2: i80) returns (i80) { $smod.i80(i1, i2) } +function {:inline} $urem.i88(i1: i88, i2: i88) returns (i88) { $smod.i88(i1, i2) } +function {:inline} $urem.i96(i1: i96, i2: i96) returns (i96) { $smod.i96(i1, i2) } +function {:inline} $urem.i128(i1: i128, i2: i128) returns (i128) { $smod.i128(i1, i2) } +function {:inline} $urem.i160(i1: i160, i2: i160) returns (i160) { $smod.i160(i1, i2) } +function {:inline} $urem.i256(i1: i256, i2: i256) returns (i256) { $smod.i256(i1, i2) } +function $shl.i1(i1: i1, i2: i1) returns (i1); +function $shl.i5(i1: i5, i2: i5) returns (i5); +function $shl.i6(i1: i6, i2: i6) returns (i6); +function $shl.i8(i1: i8, i2: i8) returns (i8); +function $shl.i16(i1: i16, i2: i16) returns (i16); +function $shl.i24(i1: i24, i2: i24) returns (i24); +function $shl.i32(i1: i32, i2: i32) returns (i32); +function $shl.i33(i1: i33, i2: i33) returns (i33); +function $shl.i40(i1: i40, i2: i40) returns (i40); +function $shl.i48(i1: i48, i2: i48) returns (i48); +function $shl.i56(i1: i56, i2: i56) returns (i56); +function $shl.i64(i1: i64, i2: i64) returns (i64); +function $shl.i80(i1: i80, i2: i80) returns (i80); +function $shl.i88(i1: i88, i2: i88) returns (i88); +function $shl.i96(i1: i96, i2: i96) returns (i96); +function $shl.i128(i1: i128, i2: i128) returns (i128); +function $shl.i160(i1: i160, i2: i160) returns (i160); +function $shl.i256(i1: i256, i2: i256) returns (i256); +function $lshr.i1(i1: i1, i2: i1) returns (i1); +function $lshr.i5(i1: i5, i2: i5) returns (i5); +function $lshr.i6(i1: i6, i2: i6) returns (i6); +function $lshr.i8(i1: i8, i2: i8) returns (i8); +function $lshr.i16(i1: i16, i2: i16) returns (i16); +function $lshr.i24(i1: i24, i2: i24) returns (i24); +function $lshr.i32(i1: i32, i2: i32) returns (i32); +function $lshr.i33(i1: i33, i2: i33) returns (i33); +function $lshr.i40(i1: i40, i2: i40) returns (i40); +function $lshr.i48(i1: i48, i2: i48) returns (i48); +function $lshr.i56(i1: i56, i2: i56) returns (i56); +function $lshr.i64(i1: i64, i2: i64) returns (i64); +function $lshr.i80(i1: i80, i2: i80) returns (i80); +function $lshr.i88(i1: i88, i2: i88) returns (i88); +function $lshr.i96(i1: i96, i2: i96) returns (i96); +function $lshr.i128(i1: i128, i2: i128) returns (i128); +function $lshr.i160(i1: i160, i2: i160) returns (i160); +function $lshr.i256(i1: i256, i2: i256) returns (i256); +function $ashr.i1(i1: i1, i2: i1) returns (i1); +function $ashr.i5(i1: i5, i2: i5) returns (i5); +function $ashr.i6(i1: i6, i2: i6) returns (i6); +function $ashr.i8(i1: i8, i2: i8) returns (i8); +function $ashr.i16(i1: i16, i2: i16) returns (i16); +function $ashr.i24(i1: i24, i2: i24) returns (i24); +function $ashr.i32(i1: i32, i2: i32) returns (i32); +function $ashr.i33(i1: i33, i2: i33) returns (i33); +function $ashr.i40(i1: i40, i2: i40) returns (i40); +function $ashr.i48(i1: i48, i2: i48) returns (i48); +function $ashr.i56(i1: i56, i2: i56) returns (i56); +function $ashr.i64(i1: i64, i2: i64) returns (i64); +function $ashr.i80(i1: i80, i2: i80) returns (i80); +function $ashr.i88(i1: i88, i2: i88) returns (i88); +function $ashr.i96(i1: i96, i2: i96) returns (i96); +function $ashr.i128(i1: i128, i2: i128) returns (i128); +function $ashr.i160(i1: i160, i2: i160) returns (i160); +function $ashr.i256(i1: i256, i2: i256) returns (i256); +function $and.i1(i1: i1, i2: i1) returns (i1); +function $and.i5(i1: i5, i2: i5) returns (i5); +function $and.i6(i1: i6, i2: i6) returns (i6); +function $and.i8(i1: i8, i2: i8) returns (i8); +function $and.i16(i1: i16, i2: i16) returns (i16); +function $and.i24(i1: i24, i2: i24) returns (i24); +function $and.i32(i1: i32, i2: i32) returns (i32); +function $and.i33(i1: i33, i2: i33) returns (i33); +function $and.i40(i1: i40, i2: i40) returns (i40); +function $and.i48(i1: i48, i2: i48) returns (i48); +function $and.i56(i1: i56, i2: i56) returns (i56); +function $and.i64(i1: i64, i2: i64) returns (i64); +function $and.i80(i1: i80, i2: i80) returns (i80); +function $and.i88(i1: i88, i2: i88) returns (i88); +function $and.i96(i1: i96, i2: i96) returns (i96); +function $and.i128(i1: i128, i2: i128) returns (i128); +function $and.i160(i1: i160, i2: i160) returns (i160); +function $and.i256(i1: i256, i2: i256) returns (i256); +function $or.i1(i1: i1, i2: i1) returns (i1); +function $or.i5(i1: i5, i2: i5) returns (i5); +function $or.i6(i1: i6, i2: i6) returns (i6); +function $or.i8(i1: i8, i2: i8) returns (i8); +function $or.i16(i1: i16, i2: i16) returns (i16); +function $or.i24(i1: i24, i2: i24) returns (i24); +function $or.i32(i1: i32, i2: i32) returns (i32); +function $or.i33(i1: i33, i2: i33) returns (i33); +function $or.i40(i1: i40, i2: i40) returns (i40); +function $or.i48(i1: i48, i2: i48) returns (i48); +function $or.i56(i1: i56, i2: i56) returns (i56); +function $or.i64(i1: i64, i2: i64) returns (i64); +function $or.i80(i1: i80, i2: i80) returns (i80); +function $or.i88(i1: i88, i2: i88) returns (i88); +function $or.i96(i1: i96, i2: i96) returns (i96); +function $or.i128(i1: i128, i2: i128) returns (i128); +function $or.i160(i1: i160, i2: i160) returns (i160); +function $or.i256(i1: i256, i2: i256) returns (i256); +function $xor.i1(i1: i1, i2: i1) returns (i1); +function $xor.i5(i1: i5, i2: i5) returns (i5); +function $xor.i6(i1: i6, i2: i6) returns (i6); +function $xor.i8(i1: i8, i2: i8) returns (i8); +function $xor.i16(i1: i16, i2: i16) returns (i16); +function $xor.i24(i1: i24, i2: i24) returns (i24); +function $xor.i32(i1: i32, i2: i32) returns (i32); +function $xor.i33(i1: i33, i2: i33) returns (i33); +function $xor.i40(i1: i40, i2: i40) returns (i40); +function $xor.i48(i1: i48, i2: i48) returns (i48); +function $xor.i56(i1: i56, i2: i56) returns (i56); +function $xor.i64(i1: i64, i2: i64) returns (i64); +function $xor.i80(i1: i80, i2: i80) returns (i80); +function $xor.i88(i1: i88, i2: i88) returns (i88); +function $xor.i96(i1: i96, i2: i96) returns (i96); +function $xor.i128(i1: i128, i2: i128) returns (i128); +function $xor.i160(i1: i160, i2: i160) returns (i160); +function $xor.i256(i1: i256, i2: i256) returns (i256); +function $nand.i1(i1: i1, i2: i1) returns (i1); +function $nand.i5(i1: i5, i2: i5) returns (i5); +function $nand.i6(i1: i6, i2: i6) returns (i6); +function $nand.i8(i1: i8, i2: i8) returns (i8); +function $nand.i16(i1: i16, i2: i16) returns (i16); +function $nand.i24(i1: i24, i2: i24) returns (i24); +function $nand.i32(i1: i32, i2: i32) returns (i32); +function $nand.i33(i1: i33, i2: i33) returns (i33); +function $nand.i40(i1: i40, i2: i40) returns (i40); +function $nand.i48(i1: i48, i2: i48) returns (i48); +function $nand.i56(i1: i56, i2: i56) returns (i56); +function $nand.i64(i1: i64, i2: i64) returns (i64); +function $nand.i80(i1: i80, i2: i80) returns (i80); +function $nand.i88(i1: i88, i2: i88) returns (i88); +function $nand.i96(i1: i96, i2: i96) returns (i96); +function $nand.i128(i1: i128, i2: i128) returns (i128); +function $nand.i160(i1: i160, i2: i160) returns (i160); +function $nand.i256(i1: i256, i2: i256) returns (i256); +function $not.i1(i: i1) returns (i1); +function $not.i5(i: i5) returns (i5); +function $not.i6(i: i6) returns (i6); +function $not.i8(i: i8) returns (i8); +function $not.i16(i: i16) returns (i16); +function $not.i24(i: i24) returns (i24); +function $not.i32(i: i32) returns (i32); +function $not.i33(i: i33) returns (i33); +function $not.i40(i: i40) returns (i40); +function $not.i48(i: i48) returns (i48); +function $not.i56(i: i56) returns (i56); +function $not.i64(i: i64) returns (i64); +function $not.i80(i: i80) returns (i80); +function $not.i88(i: i88) returns (i88); +function $not.i96(i: i96) returns (i96); +function $not.i128(i: i128) returns (i128); +function $not.i160(i: i160) returns (i160); +function $not.i256(i: i256) returns (i256); +function {:inline} $smin.i1(i1: i1, i2: i1) returns (i1) { (if $slt.i1.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i5(i1: i5, i2: i5) returns (i5) { (if $slt.i5.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i6(i1: i6, i2: i6) returns (i6) { (if $slt.i6.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i8(i1: i8, i2: i8) returns (i8) { (if $slt.i8.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i16(i1: i16, i2: i16) returns (i16) { (if $slt.i16.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i24(i1: i24, i2: i24) returns (i24) { (if $slt.i24.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i32(i1: i32, i2: i32) returns (i32) { (if $slt.i32.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i33(i1: i33, i2: i33) returns (i33) { (if $slt.i33.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i40(i1: i40, i2: i40) returns (i40) { (if $slt.i40.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i48(i1: i48, i2: i48) returns (i48) { (if $slt.i48.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i56(i1: i56, i2: i56) returns (i56) { (if $slt.i56.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i64(i1: i64, i2: i64) returns (i64) { (if $slt.i64.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i80(i1: i80, i2: i80) returns (i80) { (if $slt.i80.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i88(i1: i88, i2: i88) returns (i88) { (if $slt.i88.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i96(i1: i96, i2: i96) returns (i96) { (if $slt.i96.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i128(i1: i128, i2: i128) returns (i128) { (if $slt.i128.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i160(i1: i160, i2: i160) returns (i160) { (if $slt.i160.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i256(i1: i256, i2: i256) returns (i256) { (if $slt.i256.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i1(i1: i1, i2: i1) returns (i1) { (if $sgt.i1.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i5(i1: i5, i2: i5) returns (i5) { (if $sgt.i5.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i6(i1: i6, i2: i6) returns (i6) { (if $sgt.i6.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i8(i1: i8, i2: i8) returns (i8) { (if $sgt.i8.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i16(i1: i16, i2: i16) returns (i16) { (if $sgt.i16.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i24(i1: i24, i2: i24) returns (i24) { (if $sgt.i24.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i32(i1: i32, i2: i32) returns (i32) { (if $sgt.i32.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i33(i1: i33, i2: i33) returns (i33) { (if $sgt.i33.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i40(i1: i40, i2: i40) returns (i40) { (if $sgt.i40.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i48(i1: i48, i2: i48) returns (i48) { (if $sgt.i48.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i56(i1: i56, i2: i56) returns (i56) { (if $sgt.i56.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i64(i1: i64, i2: i64) returns (i64) { (if $sgt.i64.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i80(i1: i80, i2: i80) returns (i80) { (if $sgt.i80.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i88(i1: i88, i2: i88) returns (i88) { (if $sgt.i88.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i96(i1: i96, i2: i96) returns (i96) { (if $sgt.i96.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i128(i1: i128, i2: i128) returns (i128) { (if $sgt.i128.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i160(i1: i160, i2: i160) returns (i160) { (if $sgt.i160.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i256(i1: i256, i2: i256) returns (i256) { (if $sgt.i256.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i1(i1: i1, i2: i1) returns (i1) { (if $ult.i1.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i5(i1: i5, i2: i5) returns (i5) { (if $ult.i5.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i6(i1: i6, i2: i6) returns (i6) { (if $ult.i6.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i8(i1: i8, i2: i8) returns (i8) { (if $ult.i8.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i16(i1: i16, i2: i16) returns (i16) { (if $ult.i16.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i24(i1: i24, i2: i24) returns (i24) { (if $ult.i24.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i32(i1: i32, i2: i32) returns (i32) { (if $ult.i32.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i33(i1: i33, i2: i33) returns (i33) { (if $ult.i33.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i40(i1: i40, i2: i40) returns (i40) { (if $ult.i40.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i48(i1: i48, i2: i48) returns (i48) { (if $ult.i48.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i56(i1: i56, i2: i56) returns (i56) { (if $ult.i56.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i64(i1: i64, i2: i64) returns (i64) { (if $ult.i64.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i80(i1: i80, i2: i80) returns (i80) { (if $ult.i80.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i88(i1: i88, i2: i88) returns (i88) { (if $ult.i88.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i96(i1: i96, i2: i96) returns (i96) { (if $ult.i96.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i128(i1: i128, i2: i128) returns (i128) { (if $ult.i128.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i160(i1: i160, i2: i160) returns (i160) { (if $ult.i160.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i256(i1: i256, i2: i256) returns (i256) { (if $ult.i256.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i1(i1: i1, i2: i1) returns (i1) { (if $ugt.i1.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i5(i1: i5, i2: i5) returns (i5) { (if $ugt.i5.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i6(i1: i6, i2: i6) returns (i6) { (if $ugt.i6.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i8(i1: i8, i2: i8) returns (i8) { (if $ugt.i8.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i16(i1: i16, i2: i16) returns (i16) { (if $ugt.i16.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i24(i1: i24, i2: i24) returns (i24) { (if $ugt.i24.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i32(i1: i32, i2: i32) returns (i32) { (if $ugt.i32.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i33(i1: i33, i2: i33) returns (i33) { (if $ugt.i33.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i40(i1: i40, i2: i40) returns (i40) { (if $ugt.i40.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i48(i1: i48, i2: i48) returns (i48) { (if $ugt.i48.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i56(i1: i56, i2: i56) returns (i56) { (if $ugt.i56.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i64(i1: i64, i2: i64) returns (i64) { (if $ugt.i64.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i80(i1: i80, i2: i80) returns (i80) { (if $ugt.i80.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i88(i1: i88, i2: i88) returns (i88) { (if $ugt.i88.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i96(i1: i96, i2: i96) returns (i96) { (if $ugt.i96.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i128(i1: i128, i2: i128) returns (i128) { (if $ugt.i128.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i160(i1: i160, i2: i160) returns (i160) { (if $ugt.i160.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i256(i1: i256, i2: i256) returns (i256) { (if $ugt.i256.bool(i1, i2) then i1 else i2) } +axiom ($and.i1(0, 0) == 0); +axiom ($or.i1(0, 0) == 0); +axiom ($xor.i1(0, 0) == 0); +axiom ($and.i1(0, 1) == 0); +axiom ($or.i1(0, 1) == 1); +axiom ($xor.i1(0, 1) == 1); +axiom ($and.i1(1, 0) == 0); +axiom ($or.i1(1, 0) == 1); +axiom ($xor.i1(1, 0) == 1); +axiom ($and.i1(1, 1) == 1); +axiom ($or.i1(1, 1) == 1); +axiom ($xor.i1(1, 1) == 0); +axiom ($and.i32(32, 16) == 0); +// Integer predicates +function {:inline} $ule.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i1(i1: i1, i2: i1) returns (i1) { (if $ule.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i5(i1: i5, i2: i5) returns (i1) { (if $ule.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i6(i1: i6, i2: i6) returns (i1) { (if $ule.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i8(i1: i8, i2: i8) returns (i1) { (if $ule.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i16(i1: i16, i2: i16) returns (i1) { (if $ule.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i24(i1: i24, i2: i24) returns (i1) { (if $ule.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i32(i1: i32, i2: i32) returns (i1) { (if $ule.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i33(i1: i33, i2: i33) returns (i1) { (if $ule.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i40(i1: i40, i2: i40) returns (i1) { (if $ule.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i48(i1: i48, i2: i48) returns (i1) { (if $ule.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i56(i1: i56, i2: i56) returns (i1) { (if $ule.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i64(i1: i64, i2: i64) returns (i1) { (if $ule.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i80(i1: i80, i2: i80) returns (i1) { (if $ule.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i88(i1: i88, i2: i88) returns (i1) { (if $ule.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i96(i1: i96, i2: i96) returns (i1) { (if $ule.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i128(i1: i128, i2: i128) returns (i1) { (if $ule.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i160(i1: i160, i2: i160) returns (i1) { (if $ule.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i256(i1: i256, i2: i256) returns (i1) { (if $ule.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 < i2) } +function {:inline} $ult.i1(i1: i1, i2: i1) returns (i1) { (if $ult.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 < i2) } +function {:inline} $ult.i5(i1: i5, i2: i5) returns (i1) { (if $ult.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 < i2) } +function {:inline} $ult.i6(i1: i6, i2: i6) returns (i1) { (if $ult.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 < i2) } +function {:inline} $ult.i8(i1: i8, i2: i8) returns (i1) { (if $ult.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 < i2) } +function {:inline} $ult.i16(i1: i16, i2: i16) returns (i1) { (if $ult.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 < i2) } +function {:inline} $ult.i24(i1: i24, i2: i24) returns (i1) { (if $ult.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 < i2) } +function {:inline} $ult.i32(i1: i32, i2: i32) returns (i1) { (if $ult.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 < i2) } +function {:inline} $ult.i33(i1: i33, i2: i33) returns (i1) { (if $ult.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 < i2) } +function {:inline} $ult.i40(i1: i40, i2: i40) returns (i1) { (if $ult.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 < i2) } +function {:inline} $ult.i48(i1: i48, i2: i48) returns (i1) { (if $ult.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 < i2) } +function {:inline} $ult.i56(i1: i56, i2: i56) returns (i1) { (if $ult.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 < i2) } +function {:inline} $ult.i64(i1: i64, i2: i64) returns (i1) { (if $ult.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 < i2) } +function {:inline} $ult.i80(i1: i80, i2: i80) returns (i1) { (if $ult.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 < i2) } +function {:inline} $ult.i88(i1: i88, i2: i88) returns (i1) { (if $ult.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 < i2) } +function {:inline} $ult.i96(i1: i96, i2: i96) returns (i1) { (if $ult.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 < i2) } +function {:inline} $ult.i128(i1: i128, i2: i128) returns (i1) { (if $ult.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 < i2) } +function {:inline} $ult.i160(i1: i160, i2: i160) returns (i1) { (if $ult.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 < i2) } +function {:inline} $ult.i256(i1: i256, i2: i256) returns (i1) { (if $ult.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i1(i1: i1, i2: i1) returns (i1) { (if $uge.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i5(i1: i5, i2: i5) returns (i1) { (if $uge.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i6(i1: i6, i2: i6) returns (i1) { (if $uge.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i8(i1: i8, i2: i8) returns (i1) { (if $uge.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i16(i1: i16, i2: i16) returns (i1) { (if $uge.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i24(i1: i24, i2: i24) returns (i1) { (if $uge.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i32(i1: i32, i2: i32) returns (i1) { (if $uge.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i33(i1: i33, i2: i33) returns (i1) { (if $uge.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i40(i1: i40, i2: i40) returns (i1) { (if $uge.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i48(i1: i48, i2: i48) returns (i1) { (if $uge.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i56(i1: i56, i2: i56) returns (i1) { (if $uge.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i64(i1: i64, i2: i64) returns (i1) { (if $uge.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i80(i1: i80, i2: i80) returns (i1) { (if $uge.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i88(i1: i88, i2: i88) returns (i1) { (if $uge.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i96(i1: i96, i2: i96) returns (i1) { (if $uge.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i128(i1: i128, i2: i128) returns (i1) { (if $uge.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i160(i1: i160, i2: i160) returns (i1) { (if $uge.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i256(i1: i256, i2: i256) returns (i1) { (if $uge.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i1(i1: i1, i2: i1) returns (i1) { (if $ugt.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i5(i1: i5, i2: i5) returns (i1) { (if $ugt.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i6(i1: i6, i2: i6) returns (i1) { (if $ugt.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i8(i1: i8, i2: i8) returns (i1) { (if $ugt.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i16(i1: i16, i2: i16) returns (i1) { (if $ugt.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i24(i1: i24, i2: i24) returns (i1) { (if $ugt.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i32(i1: i32, i2: i32) returns (i1) { (if $ugt.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i33(i1: i33, i2: i33) returns (i1) { (if $ugt.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i40(i1: i40, i2: i40) returns (i1) { (if $ugt.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i48(i1: i48, i2: i48) returns (i1) { (if $ugt.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i56(i1: i56, i2: i56) returns (i1) { (if $ugt.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i64(i1: i64, i2: i64) returns (i1) { (if $ugt.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i80(i1: i80, i2: i80) returns (i1) { (if $ugt.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i88(i1: i88, i2: i88) returns (i1) { (if $ugt.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i96(i1: i96, i2: i96) returns (i1) { (if $ugt.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i128(i1: i128, i2: i128) returns (i1) { (if $ugt.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i160(i1: i160, i2: i160) returns (i1) { (if $ugt.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i256(i1: i256, i2: i256) returns (i1) { (if $ugt.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i1(i1: i1, i2: i1) returns (i1) { (if $sle.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i5(i1: i5, i2: i5) returns (i1) { (if $sle.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i6(i1: i6, i2: i6) returns (i1) { (if $sle.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i8(i1: i8, i2: i8) returns (i1) { (if $sle.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i16(i1: i16, i2: i16) returns (i1) { (if $sle.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i24(i1: i24, i2: i24) returns (i1) { (if $sle.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i32(i1: i32, i2: i32) returns (i1) { (if $sle.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i33(i1: i33, i2: i33) returns (i1) { (if $sle.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i40(i1: i40, i2: i40) returns (i1) { (if $sle.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i48(i1: i48, i2: i48) returns (i1) { (if $sle.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i56(i1: i56, i2: i56) returns (i1) { (if $sle.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i64(i1: i64, i2: i64) returns (i1) { (if $sle.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i80(i1: i80, i2: i80) returns (i1) { (if $sle.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i88(i1: i88, i2: i88) returns (i1) { (if $sle.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i96(i1: i96, i2: i96) returns (i1) { (if $sle.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i128(i1: i128, i2: i128) returns (i1) { (if $sle.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i160(i1: i160, i2: i160) returns (i1) { (if $sle.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i256(i1: i256, i2: i256) returns (i1) { (if $sle.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 < i2) } +function {:inline} $slt.i1(i1: i1, i2: i1) returns (i1) { (if $slt.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 < i2) } +function {:inline} $slt.i5(i1: i5, i2: i5) returns (i1) { (if $slt.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 < i2) } +function {:inline} $slt.i6(i1: i6, i2: i6) returns (i1) { (if $slt.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 < i2) } +function {:inline} $slt.i8(i1: i8, i2: i8) returns (i1) { (if $slt.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 < i2) } +function {:inline} $slt.i16(i1: i16, i2: i16) returns (i1) { (if $slt.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 < i2) } +function {:inline} $slt.i24(i1: i24, i2: i24) returns (i1) { (if $slt.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 < i2) } +function {:inline} $slt.i32(i1: i32, i2: i32) returns (i1) { (if $slt.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 < i2) } +function {:inline} $slt.i33(i1: i33, i2: i33) returns (i1) { (if $slt.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 < i2) } +function {:inline} $slt.i40(i1: i40, i2: i40) returns (i1) { (if $slt.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 < i2) } +function {:inline} $slt.i48(i1: i48, i2: i48) returns (i1) { (if $slt.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 < i2) } +function {:inline} $slt.i56(i1: i56, i2: i56) returns (i1) { (if $slt.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 < i2) } +function {:inline} $slt.i64(i1: i64, i2: i64) returns (i1) { (if $slt.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 < i2) } +function {:inline} $slt.i80(i1: i80, i2: i80) returns (i1) { (if $slt.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 < i2) } +function {:inline} $slt.i88(i1: i88, i2: i88) returns (i1) { (if $slt.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 < i2) } +function {:inline} $slt.i96(i1: i96, i2: i96) returns (i1) { (if $slt.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 < i2) } +function {:inline} $slt.i128(i1: i128, i2: i128) returns (i1) { (if $slt.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 < i2) } +function {:inline} $slt.i160(i1: i160, i2: i160) returns (i1) { (if $slt.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 < i2) } +function {:inline} $slt.i256(i1: i256, i2: i256) returns (i1) { (if $slt.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i1(i1: i1, i2: i1) returns (i1) { (if $sge.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i5(i1: i5, i2: i5) returns (i1) { (if $sge.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i6(i1: i6, i2: i6) returns (i1) { (if $sge.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i8(i1: i8, i2: i8) returns (i1) { (if $sge.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i16(i1: i16, i2: i16) returns (i1) { (if $sge.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i24(i1: i24, i2: i24) returns (i1) { (if $sge.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i32(i1: i32, i2: i32) returns (i1) { (if $sge.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i33(i1: i33, i2: i33) returns (i1) { (if $sge.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i40(i1: i40, i2: i40) returns (i1) { (if $sge.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i48(i1: i48, i2: i48) returns (i1) { (if $sge.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i56(i1: i56, i2: i56) returns (i1) { (if $sge.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i64(i1: i64, i2: i64) returns (i1) { (if $sge.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i80(i1: i80, i2: i80) returns (i1) { (if $sge.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i88(i1: i88, i2: i88) returns (i1) { (if $sge.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i96(i1: i96, i2: i96) returns (i1) { (if $sge.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i128(i1: i128, i2: i128) returns (i1) { (if $sge.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i160(i1: i160, i2: i160) returns (i1) { (if $sge.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i256(i1: i256, i2: i256) returns (i1) { (if $sge.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i1(i1: i1, i2: i1) returns (i1) { (if $sgt.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i5(i1: i5, i2: i5) returns (i1) { (if $sgt.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i6(i1: i6, i2: i6) returns (i1) { (if $sgt.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i8(i1: i8, i2: i8) returns (i1) { (if $sgt.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i16(i1: i16, i2: i16) returns (i1) { (if $sgt.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i24(i1: i24, i2: i24) returns (i1) { (if $sgt.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i32(i1: i32, i2: i32) returns (i1) { (if $sgt.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i33(i1: i33, i2: i33) returns (i1) { (if $sgt.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i40(i1: i40, i2: i40) returns (i1) { (if $sgt.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i48(i1: i48, i2: i48) returns (i1) { (if $sgt.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i56(i1: i56, i2: i56) returns (i1) { (if $sgt.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i64(i1: i64, i2: i64) returns (i1) { (if $sgt.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i80(i1: i80, i2: i80) returns (i1) { (if $sgt.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i88(i1: i88, i2: i88) returns (i1) { (if $sgt.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i96(i1: i96, i2: i96) returns (i1) { (if $sgt.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i128(i1: i128, i2: i128) returns (i1) { (if $sgt.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i160(i1: i160, i2: i160) returns (i1) { (if $sgt.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i256(i1: i256, i2: i256) returns (i1) { (if $sgt.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 == i2) } +function {:inline} $eq.i1(i1: i1, i2: i1) returns (i1) { (if $eq.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 == i2) } +function {:inline} $eq.i5(i1: i5, i2: i5) returns (i1) { (if $eq.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 == i2) } +function {:inline} $eq.i6(i1: i6, i2: i6) returns (i1) { (if $eq.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 == i2) } +function {:inline} $eq.i8(i1: i8, i2: i8) returns (i1) { (if $eq.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 == i2) } +function {:inline} $eq.i16(i1: i16, i2: i16) returns (i1) { (if $eq.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 == i2) } +function {:inline} $eq.i24(i1: i24, i2: i24) returns (i1) { (if $eq.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 == i2) } +function {:inline} $eq.i32(i1: i32, i2: i32) returns (i1) { (if $eq.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 == i2) } +function {:inline} $eq.i33(i1: i33, i2: i33) returns (i1) { (if $eq.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 == i2) } +function {:inline} $eq.i40(i1: i40, i2: i40) returns (i1) { (if $eq.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 == i2) } +function {:inline} $eq.i48(i1: i48, i2: i48) returns (i1) { (if $eq.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 == i2) } +function {:inline} $eq.i56(i1: i56, i2: i56) returns (i1) { (if $eq.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 == i2) } +function {:inline} $eq.i64(i1: i64, i2: i64) returns (i1) { (if $eq.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 == i2) } +function {:inline} $eq.i80(i1: i80, i2: i80) returns (i1) { (if $eq.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 == i2) } +function {:inline} $eq.i88(i1: i88, i2: i88) returns (i1) { (if $eq.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 == i2) } +function {:inline} $eq.i96(i1: i96, i2: i96) returns (i1) { (if $eq.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 == i2) } +function {:inline} $eq.i128(i1: i128, i2: i128) returns (i1) { (if $eq.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 == i2) } +function {:inline} $eq.i160(i1: i160, i2: i160) returns (i1) { (if $eq.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 == i2) } +function {:inline} $eq.i256(i1: i256, i2: i256) returns (i1) { (if $eq.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 != i2) } +function {:inline} $ne.i1(i1: i1, i2: i1) returns (i1) { (if $ne.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 != i2) } +function {:inline} $ne.i5(i1: i5, i2: i5) returns (i1) { (if $ne.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 != i2) } +function {:inline} $ne.i6(i1: i6, i2: i6) returns (i1) { (if $ne.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 != i2) } +function {:inline} $ne.i8(i1: i8, i2: i8) returns (i1) { (if $ne.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 != i2) } +function {:inline} $ne.i16(i1: i16, i2: i16) returns (i1) { (if $ne.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 != i2) } +function {:inline} $ne.i24(i1: i24, i2: i24) returns (i1) { (if $ne.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 != i2) } +function {:inline} $ne.i32(i1: i32, i2: i32) returns (i1) { (if $ne.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 != i2) } +function {:inline} $ne.i33(i1: i33, i2: i33) returns (i1) { (if $ne.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 != i2) } +function {:inline} $ne.i40(i1: i40, i2: i40) returns (i1) { (if $ne.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 != i2) } +function {:inline} $ne.i48(i1: i48, i2: i48) returns (i1) { (if $ne.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 != i2) } +function {:inline} $ne.i56(i1: i56, i2: i56) returns (i1) { (if $ne.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 != i2) } +function {:inline} $ne.i64(i1: i64, i2: i64) returns (i1) { (if $ne.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 != i2) } +function {:inline} $ne.i80(i1: i80, i2: i80) returns (i1) { (if $ne.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 != i2) } +function {:inline} $ne.i88(i1: i88, i2: i88) returns (i1) { (if $ne.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 != i2) } +function {:inline} $ne.i96(i1: i96, i2: i96) returns (i1) { (if $ne.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 != i2) } +function {:inline} $ne.i128(i1: i128, i2: i128) returns (i1) { (if $ne.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 != i2) } +function {:inline} $ne.i160(i1: i160, i2: i160) returns (i1) { (if $ne.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 != i2) } +function {:inline} $ne.i256(i1: i256, i2: i256) returns (i1) { (if $ne.i256.bool(i1, i2) then 1 else 0) } +// Integer load/store operations +function {:inline} $load.i1(M: [ref] i1, p: ref) returns (i1) { M[p] } +function {:inline} $store.i1(M: [ref] i1, p: ref, i: i1) returns ([ref] i1) { M[p := i] } +function {:inline} $load.i5(M: [ref] i5, p: ref) returns (i5) { M[p] } +function {:inline} $store.i5(M: [ref] i5, p: ref, i: i5) returns ([ref] i5) { M[p := i] } +function {:inline} $load.i6(M: [ref] i6, p: ref) returns (i6) { M[p] } +function {:inline} $store.i6(M: [ref] i6, p: ref, i: i6) returns ([ref] i6) { M[p := i] } +function {:inline} $load.i8(M: [ref] i8, p: ref) returns (i8) { M[p] } +function {:inline} $store.i8(M: [ref] i8, p: ref, i: i8) returns ([ref] i8) { M[p := i] } +function {:inline} $load.i16(M: [ref] i16, p: ref) returns (i16) { M[p] } +function {:inline} $store.i16(M: [ref] i16, p: ref, i: i16) returns ([ref] i16) { M[p := i] } +function {:inline} $load.i24(M: [ref] i24, p: ref) returns (i24) { M[p] } +function {:inline} $store.i24(M: [ref] i24, p: ref, i: i24) returns ([ref] i24) { M[p := i] } +function {:inline} $load.i32(M: [ref] i32, p: ref) returns (i32) { M[p] } +function {:inline} $store.i32(M: [ref] i32, p: ref, i: i32) returns ([ref] i32) { M[p := i] } +function {:inline} $load.i33(M: [ref] i33, p: ref) returns (i33) { M[p] } +function {:inline} $store.i33(M: [ref] i33, p: ref, i: i33) returns ([ref] i33) { M[p := i] } +function {:inline} $load.i40(M: [ref] i40, p: ref) returns (i40) { M[p] } +function {:inline} $store.i40(M: [ref] i40, p: ref, i: i40) returns ([ref] i40) { M[p := i] } +function {:inline} $load.i48(M: [ref] i48, p: ref) returns (i48) { M[p] } +function {:inline} $store.i48(M: [ref] i48, p: ref, i: i48) returns ([ref] i48) { M[p := i] } +function {:inline} $load.i56(M: [ref] i56, p: ref) returns (i56) { M[p] } +function {:inline} $store.i56(M: [ref] i56, p: ref, i: i56) returns ([ref] i56) { M[p := i] } +function {:inline} $load.i64(M: [ref] i64, p: ref) returns (i64) { M[p] } +function {:inline} $store.i64(M: [ref] i64, p: ref, i: i64) returns ([ref] i64) { M[p := i] } +function {:inline} $load.i80(M: [ref] i80, p: ref) returns (i80) { M[p] } +function {:inline} $store.i80(M: [ref] i80, p: ref, i: i80) returns ([ref] i80) { M[p := i] } +function {:inline} $load.i88(M: [ref] i88, p: ref) returns (i88) { M[p] } +function {:inline} $store.i88(M: [ref] i88, p: ref, i: i88) returns ([ref] i88) { M[p := i] } +function {:inline} $load.i96(M: [ref] i96, p: ref) returns (i96) { M[p] } +function {:inline} $store.i96(M: [ref] i96, p: ref, i: i96) returns ([ref] i96) { M[p := i] } +function {:inline} $load.i128(M: [ref] i128, p: ref) returns (i128) { M[p] } +function {:inline} $store.i128(M: [ref] i128, p: ref, i: i128) returns ([ref] i128) { M[p := i] } +function {:inline} $load.i160(M: [ref] i160, p: ref) returns (i160) { M[p] } +function {:inline} $store.i160(M: [ref] i160, p: ref, i: i160) returns ([ref] i160) { M[p := i] } +function {:inline} $load.i256(M: [ref] i256, p: ref) returns (i256) { M[p] } +function {:inline} $store.i256(M: [ref] i256, p: ref, i: i256) returns ([ref] i256) { M[p := i] } +// Conversion between integer types +function {:inline} $trunc.i5.i1(i: i5) returns (i1) { i } +function {:inline} $trunc.i6.i1(i: i6) returns (i1) { i } +function {:inline} $trunc.i8.i1(i: i8) returns (i1) { i } +function {:inline} $trunc.i16.i1(i: i16) returns (i1) { i } +function {:inline} $trunc.i24.i1(i: i24) returns (i1) { i } +function {:inline} $trunc.i32.i1(i: i32) returns (i1) { i } +function {:inline} $trunc.i33.i1(i: i33) returns (i1) { i } +function {:inline} $trunc.i40.i1(i: i40) returns (i1) { i } +function {:inline} $trunc.i48.i1(i: i48) returns (i1) { i } +function {:inline} $trunc.i56.i1(i: i56) returns (i1) { i } +function {:inline} $trunc.i64.i1(i: i64) returns (i1) { i } +function {:inline} $trunc.i80.i1(i: i80) returns (i1) { i } +function {:inline} $trunc.i88.i1(i: i88) returns (i1) { i } +function {:inline} $trunc.i96.i1(i: i96) returns (i1) { i } +function {:inline} $trunc.i128.i1(i: i128) returns (i1) { i } +function {:inline} $trunc.i160.i1(i: i160) returns (i1) { i } +function {:inline} $trunc.i256.i1(i: i256) returns (i1) { i } +function {:inline} $trunc.i6.i5(i: i6) returns (i5) { i } +function {:inline} $trunc.i8.i5(i: i8) returns (i5) { i } +function {:inline} $trunc.i16.i5(i: i16) returns (i5) { i } +function {:inline} $trunc.i24.i5(i: i24) returns (i5) { i } +function {:inline} $trunc.i32.i5(i: i32) returns (i5) { i } +function {:inline} $trunc.i33.i5(i: i33) returns (i5) { i } +function {:inline} $trunc.i40.i5(i: i40) returns (i5) { i } +function {:inline} $trunc.i48.i5(i: i48) returns (i5) { i } +function {:inline} $trunc.i56.i5(i: i56) returns (i5) { i } +function {:inline} $trunc.i64.i5(i: i64) returns (i5) { i } +function {:inline} $trunc.i80.i5(i: i80) returns (i5) { i } +function {:inline} $trunc.i88.i5(i: i88) returns (i5) { i } +function {:inline} $trunc.i96.i5(i: i96) returns (i5) { i } +function {:inline} $trunc.i128.i5(i: i128) returns (i5) { i } +function {:inline} $trunc.i160.i5(i: i160) returns (i5) { i } +function {:inline} $trunc.i256.i5(i: i256) returns (i5) { i } +function {:inline} $trunc.i8.i6(i: i8) returns (i6) { i } +function {:inline} $trunc.i16.i6(i: i16) returns (i6) { i } +function {:inline} $trunc.i24.i6(i: i24) returns (i6) { i } +function {:inline} $trunc.i32.i6(i: i32) returns (i6) { i } +function {:inline} $trunc.i33.i6(i: i33) returns (i6) { i } +function {:inline} $trunc.i40.i6(i: i40) returns (i6) { i } +function {:inline} $trunc.i48.i6(i: i48) returns (i6) { i } +function {:inline} $trunc.i56.i6(i: i56) returns (i6) { i } +function {:inline} $trunc.i64.i6(i: i64) returns (i6) { i } +function {:inline} $trunc.i80.i6(i: i80) returns (i6) { i } +function {:inline} $trunc.i88.i6(i: i88) returns (i6) { i } +function {:inline} $trunc.i96.i6(i: i96) returns (i6) { i } +function {:inline} $trunc.i128.i6(i: i128) returns (i6) { i } +function {:inline} $trunc.i160.i6(i: i160) returns (i6) { i } +function {:inline} $trunc.i256.i6(i: i256) returns (i6) { i } +function {:inline} $trunc.i16.i8(i: i16) returns (i8) { i } +function {:inline} $trunc.i24.i8(i: i24) returns (i8) { i } +function {:inline} $trunc.i32.i8(i: i32) returns (i8) { i } +function {:inline} $trunc.i33.i8(i: i33) returns (i8) { i } +function {:inline} $trunc.i40.i8(i: i40) returns (i8) { i } +function {:inline} $trunc.i48.i8(i: i48) returns (i8) { i } +function {:inline} $trunc.i56.i8(i: i56) returns (i8) { i } +function {:inline} $trunc.i64.i8(i: i64) returns (i8) { i } +function {:inline} $trunc.i80.i8(i: i80) returns (i8) { i } +function {:inline} $trunc.i88.i8(i: i88) returns (i8) { i } +function {:inline} $trunc.i96.i8(i: i96) returns (i8) { i } +function {:inline} $trunc.i128.i8(i: i128) returns (i8) { i } +function {:inline} $trunc.i160.i8(i: i160) returns (i8) { i } +function {:inline} $trunc.i256.i8(i: i256) returns (i8) { i } +function {:inline} $trunc.i24.i16(i: i24) returns (i16) { i } +function {:inline} $trunc.i32.i16(i: i32) returns (i16) { i } +function {:inline} $trunc.i33.i16(i: i33) returns (i16) { i } +function {:inline} $trunc.i40.i16(i: i40) returns (i16) { i } +function {:inline} $trunc.i48.i16(i: i48) returns (i16) { i } +function {:inline} $trunc.i56.i16(i: i56) returns (i16) { i } +function {:inline} $trunc.i64.i16(i: i64) returns (i16) { i } +function {:inline} $trunc.i80.i16(i: i80) returns (i16) { i } +function {:inline} $trunc.i88.i16(i: i88) returns (i16) { i } +function {:inline} $trunc.i96.i16(i: i96) returns (i16) { i } +function {:inline} $trunc.i128.i16(i: i128) returns (i16) { i } +function {:inline} $trunc.i160.i16(i: i160) returns (i16) { i } +function {:inline} $trunc.i256.i16(i: i256) returns (i16) { i } +function {:inline} $trunc.i32.i24(i: i32) returns (i24) { i } +function {:inline} $trunc.i33.i24(i: i33) returns (i24) { i } +function {:inline} $trunc.i40.i24(i: i40) returns (i24) { i } +function {:inline} $trunc.i48.i24(i: i48) returns (i24) { i } +function {:inline} $trunc.i56.i24(i: i56) returns (i24) { i } +function {:inline} $trunc.i64.i24(i: i64) returns (i24) { i } +function {:inline} $trunc.i80.i24(i: i80) returns (i24) { i } +function {:inline} $trunc.i88.i24(i: i88) returns (i24) { i } +function {:inline} $trunc.i96.i24(i: i96) returns (i24) { i } +function {:inline} $trunc.i128.i24(i: i128) returns (i24) { i } +function {:inline} $trunc.i160.i24(i: i160) returns (i24) { i } +function {:inline} $trunc.i256.i24(i: i256) returns (i24) { i } +function {:inline} $trunc.i33.i32(i: i33) returns (i32) { i } +function {:inline} $trunc.i40.i32(i: i40) returns (i32) { i } +function {:inline} $trunc.i48.i32(i: i48) returns (i32) { i } +function {:inline} $trunc.i56.i32(i: i56) returns (i32) { i } +function {:inline} $trunc.i64.i32(i: i64) returns (i32) { i } +function {:inline} $trunc.i80.i32(i: i80) returns (i32) { i } +function {:inline} $trunc.i88.i32(i: i88) returns (i32) { i } +function {:inline} $trunc.i96.i32(i: i96) returns (i32) { i } +function {:inline} $trunc.i128.i32(i: i128) returns (i32) { i } +function {:inline} $trunc.i160.i32(i: i160) returns (i32) { i } +function {:inline} $trunc.i256.i32(i: i256) returns (i32) { i } +function {:inline} $trunc.i40.i33(i: i40) returns (i33) { i } +function {:inline} $trunc.i48.i33(i: i48) returns (i33) { i } +function {:inline} $trunc.i56.i33(i: i56) returns (i33) { i } +function {:inline} $trunc.i64.i33(i: i64) returns (i33) { i } +function {:inline} $trunc.i80.i33(i: i80) returns (i33) { i } +function {:inline} $trunc.i88.i33(i: i88) returns (i33) { i } +function {:inline} $trunc.i96.i33(i: i96) returns (i33) { i } +function {:inline} $trunc.i128.i33(i: i128) returns (i33) { i } +function {:inline} $trunc.i160.i33(i: i160) returns (i33) { i } +function {:inline} $trunc.i256.i33(i: i256) returns (i33) { i } +function {:inline} $trunc.i48.i40(i: i48) returns (i40) { i } +function {:inline} $trunc.i56.i40(i: i56) returns (i40) { i } +function {:inline} $trunc.i64.i40(i: i64) returns (i40) { i } +function {:inline} $trunc.i80.i40(i: i80) returns (i40) { i } +function {:inline} $trunc.i88.i40(i: i88) returns (i40) { i } +function {:inline} $trunc.i96.i40(i: i96) returns (i40) { i } +function {:inline} $trunc.i128.i40(i: i128) returns (i40) { i } +function {:inline} $trunc.i160.i40(i: i160) returns (i40) { i } +function {:inline} $trunc.i256.i40(i: i256) returns (i40) { i } +function {:inline} $trunc.i56.i48(i: i56) returns (i48) { i } +function {:inline} $trunc.i64.i48(i: i64) returns (i48) { i } +function {:inline} $trunc.i80.i48(i: i80) returns (i48) { i } +function {:inline} $trunc.i88.i48(i: i88) returns (i48) { i } +function {:inline} $trunc.i96.i48(i: i96) returns (i48) { i } +function {:inline} $trunc.i128.i48(i: i128) returns (i48) { i } +function {:inline} $trunc.i160.i48(i: i160) returns (i48) { i } +function {:inline} $trunc.i256.i48(i: i256) returns (i48) { i } +function {:inline} $trunc.i64.i56(i: i64) returns (i56) { i } +function {:inline} $trunc.i80.i56(i: i80) returns (i56) { i } +function {:inline} $trunc.i88.i56(i: i88) returns (i56) { i } +function {:inline} $trunc.i96.i56(i: i96) returns (i56) { i } +function {:inline} $trunc.i128.i56(i: i128) returns (i56) { i } +function {:inline} $trunc.i160.i56(i: i160) returns (i56) { i } +function {:inline} $trunc.i256.i56(i: i256) returns (i56) { i } +function {:inline} $trunc.i80.i64(i: i80) returns (i64) { i } +function {:inline} $trunc.i88.i64(i: i88) returns (i64) { i } +function {:inline} $trunc.i96.i64(i: i96) returns (i64) { i } +function {:inline} $trunc.i128.i64(i: i128) returns (i64) { i } +function {:inline} $trunc.i160.i64(i: i160) returns (i64) { i } +function {:inline} $trunc.i256.i64(i: i256) returns (i64) { i } +function {:inline} $trunc.i88.i80(i: i88) returns (i80) { i } +function {:inline} $trunc.i96.i80(i: i96) returns (i80) { i } +function {:inline} $trunc.i128.i80(i: i128) returns (i80) { i } +function {:inline} $trunc.i160.i80(i: i160) returns (i80) { i } +function {:inline} $trunc.i256.i80(i: i256) returns (i80) { i } +function {:inline} $trunc.i96.i88(i: i96) returns (i88) { i } +function {:inline} $trunc.i128.i88(i: i128) returns (i88) { i } +function {:inline} $trunc.i160.i88(i: i160) returns (i88) { i } +function {:inline} $trunc.i256.i88(i: i256) returns (i88) { i } +function {:inline} $trunc.i128.i96(i: i128) returns (i96) { i } +function {:inline} $trunc.i160.i96(i: i160) returns (i96) { i } +function {:inline} $trunc.i256.i96(i: i256) returns (i96) { i } +function {:inline} $trunc.i160.i128(i: i160) returns (i128) { i } +function {:inline} $trunc.i256.i128(i: i256) returns (i128) { i } +function {:inline} $trunc.i256.i160(i: i256) returns (i160) { i } +function {:inline} $sext.i1.i5(i: i1) returns (i5) { i } +function {:inline} $sext.i1.i6(i: i1) returns (i6) { i } +function {:inline} $sext.i1.i8(i: i1) returns (i8) { i } +function {:inline} $sext.i1.i16(i: i1) returns (i16) { i } +function {:inline} $sext.i1.i24(i: i1) returns (i24) { i } +function {:inline} $sext.i1.i32(i: i1) returns (i32) { i } +function {:inline} $sext.i1.i33(i: i1) returns (i33) { i } +function {:inline} $sext.i1.i40(i: i1) returns (i40) { i } +function {:inline} $sext.i1.i48(i: i1) returns (i48) { i } +function {:inline} $sext.i1.i56(i: i1) returns (i56) { i } +function {:inline} $sext.i1.i64(i: i1) returns (i64) { i } +function {:inline} $sext.i1.i80(i: i1) returns (i80) { i } +function {:inline} $sext.i1.i88(i: i1) returns (i88) { i } +function {:inline} $sext.i1.i96(i: i1) returns (i96) { i } +function {:inline} $sext.i1.i128(i: i1) returns (i128) { i } +function {:inline} $sext.i1.i160(i: i1) returns (i160) { i } +function {:inline} $sext.i1.i256(i: i1) returns (i256) { i } +function {:inline} $sext.i5.i6(i: i5) returns (i6) { i } +function {:inline} $sext.i5.i8(i: i5) returns (i8) { i } +function {:inline} $sext.i5.i16(i: i5) returns (i16) { i } +function {:inline} $sext.i5.i24(i: i5) returns (i24) { i } +function {:inline} $sext.i5.i32(i: i5) returns (i32) { i } +function {:inline} $sext.i5.i33(i: i5) returns (i33) { i } +function {:inline} $sext.i5.i40(i: i5) returns (i40) { i } +function {:inline} $sext.i5.i48(i: i5) returns (i48) { i } +function {:inline} $sext.i5.i56(i: i5) returns (i56) { i } +function {:inline} $sext.i5.i64(i: i5) returns (i64) { i } +function {:inline} $sext.i5.i80(i: i5) returns (i80) { i } +function {:inline} $sext.i5.i88(i: i5) returns (i88) { i } +function {:inline} $sext.i5.i96(i: i5) returns (i96) { i } +function {:inline} $sext.i5.i128(i: i5) returns (i128) { i } +function {:inline} $sext.i5.i160(i: i5) returns (i160) { i } +function {:inline} $sext.i5.i256(i: i5) returns (i256) { i } +function {:inline} $sext.i6.i8(i: i6) returns (i8) { i } +function {:inline} $sext.i6.i16(i: i6) returns (i16) { i } +function {:inline} $sext.i6.i24(i: i6) returns (i24) { i } +function {:inline} $sext.i6.i32(i: i6) returns (i32) { i } +function {:inline} $sext.i6.i33(i: i6) returns (i33) { i } +function {:inline} $sext.i6.i40(i: i6) returns (i40) { i } +function {:inline} $sext.i6.i48(i: i6) returns (i48) { i } +function {:inline} $sext.i6.i56(i: i6) returns (i56) { i } +function {:inline} $sext.i6.i64(i: i6) returns (i64) { i } +function {:inline} $sext.i6.i80(i: i6) returns (i80) { i } +function {:inline} $sext.i6.i88(i: i6) returns (i88) { i } +function {:inline} $sext.i6.i96(i: i6) returns (i96) { i } +function {:inline} $sext.i6.i128(i: i6) returns (i128) { i } +function {:inline} $sext.i6.i160(i: i6) returns (i160) { i } +function {:inline} $sext.i6.i256(i: i6) returns (i256) { i } +function {:inline} $sext.i8.i16(i: i8) returns (i16) { i } +function {:inline} $sext.i8.i24(i: i8) returns (i24) { i } +function {:inline} $sext.i8.i32(i: i8) returns (i32) { i } +function {:inline} $sext.i8.i33(i: i8) returns (i33) { i } +function {:inline} $sext.i8.i40(i: i8) returns (i40) { i } +function {:inline} $sext.i8.i48(i: i8) returns (i48) { i } +function {:inline} $sext.i8.i56(i: i8) returns (i56) { i } +function {:inline} $sext.i8.i64(i: i8) returns (i64) { i } +function {:inline} $sext.i8.i80(i: i8) returns (i80) { i } +function {:inline} $sext.i8.i88(i: i8) returns (i88) { i } +function {:inline} $sext.i8.i96(i: i8) returns (i96) { i } +function {:inline} $sext.i8.i128(i: i8) returns (i128) { i } +function {:inline} $sext.i8.i160(i: i8) returns (i160) { i } +function {:inline} $sext.i8.i256(i: i8) returns (i256) { i } +function {:inline} $sext.i16.i24(i: i16) returns (i24) { i } +function {:inline} $sext.i16.i32(i: i16) returns (i32) { i } +function {:inline} $sext.i16.i33(i: i16) returns (i33) { i } +function {:inline} $sext.i16.i40(i: i16) returns (i40) { i } +function {:inline} $sext.i16.i48(i: i16) returns (i48) { i } +function {:inline} $sext.i16.i56(i: i16) returns (i56) { i } +function {:inline} $sext.i16.i64(i: i16) returns (i64) { i } +function {:inline} $sext.i16.i80(i: i16) returns (i80) { i } +function {:inline} $sext.i16.i88(i: i16) returns (i88) { i } +function {:inline} $sext.i16.i96(i: i16) returns (i96) { i } +function {:inline} $sext.i16.i128(i: i16) returns (i128) { i } +function {:inline} $sext.i16.i160(i: i16) returns (i160) { i } +function {:inline} $sext.i16.i256(i: i16) returns (i256) { i } +function {:inline} $sext.i24.i32(i: i24) returns (i32) { i } +function {:inline} $sext.i24.i33(i: i24) returns (i33) { i } +function {:inline} $sext.i24.i40(i: i24) returns (i40) { i } +function {:inline} $sext.i24.i48(i: i24) returns (i48) { i } +function {:inline} $sext.i24.i56(i: i24) returns (i56) { i } +function {:inline} $sext.i24.i64(i: i24) returns (i64) { i } +function {:inline} $sext.i24.i80(i: i24) returns (i80) { i } +function {:inline} $sext.i24.i88(i: i24) returns (i88) { i } +function {:inline} $sext.i24.i96(i: i24) returns (i96) { i } +function {:inline} $sext.i24.i128(i: i24) returns (i128) { i } +function {:inline} $sext.i24.i160(i: i24) returns (i160) { i } +function {:inline} $sext.i24.i256(i: i24) returns (i256) { i } +function {:inline} $sext.i32.i33(i: i32) returns (i33) { i } +function {:inline} $sext.i32.i40(i: i32) returns (i40) { i } +function {:inline} $sext.i32.i48(i: i32) returns (i48) { i } +function {:inline} $sext.i32.i56(i: i32) returns (i56) { i } +function {:inline} $sext.i32.i64(i: i32) returns (i64) { i } +function {:inline} $sext.i32.i80(i: i32) returns (i80) { i } +function {:inline} $sext.i32.i88(i: i32) returns (i88) { i } +function {:inline} $sext.i32.i96(i: i32) returns (i96) { i } +function {:inline} $sext.i32.i128(i: i32) returns (i128) { i } +function {:inline} $sext.i32.i160(i: i32) returns (i160) { i } +function {:inline} $sext.i32.i256(i: i32) returns (i256) { i } +function {:inline} $sext.i33.i40(i: i33) returns (i40) { i } +function {:inline} $sext.i33.i48(i: i33) returns (i48) { i } +function {:inline} $sext.i33.i56(i: i33) returns (i56) { i } +function {:inline} $sext.i33.i64(i: i33) returns (i64) { i } +function {:inline} $sext.i33.i80(i: i33) returns (i80) { i } +function {:inline} $sext.i33.i88(i: i33) returns (i88) { i } +function {:inline} $sext.i33.i96(i: i33) returns (i96) { i } +function {:inline} $sext.i33.i128(i: i33) returns (i128) { i } +function {:inline} $sext.i33.i160(i: i33) returns (i160) { i } +function {:inline} $sext.i33.i256(i: i33) returns (i256) { i } +function {:inline} $sext.i40.i48(i: i40) returns (i48) { i } +function {:inline} $sext.i40.i56(i: i40) returns (i56) { i } +function {:inline} $sext.i40.i64(i: i40) returns (i64) { i } +function {:inline} $sext.i40.i80(i: i40) returns (i80) { i } +function {:inline} $sext.i40.i88(i: i40) returns (i88) { i } +function {:inline} $sext.i40.i96(i: i40) returns (i96) { i } +function {:inline} $sext.i40.i128(i: i40) returns (i128) { i } +function {:inline} $sext.i40.i160(i: i40) returns (i160) { i } +function {:inline} $sext.i40.i256(i: i40) returns (i256) { i } +function {:inline} $sext.i48.i56(i: i48) returns (i56) { i } +function {:inline} $sext.i48.i64(i: i48) returns (i64) { i } +function {:inline} $sext.i48.i80(i: i48) returns (i80) { i } +function {:inline} $sext.i48.i88(i: i48) returns (i88) { i } +function {:inline} $sext.i48.i96(i: i48) returns (i96) { i } +function {:inline} $sext.i48.i128(i: i48) returns (i128) { i } +function {:inline} $sext.i48.i160(i: i48) returns (i160) { i } +function {:inline} $sext.i48.i256(i: i48) returns (i256) { i } +function {:inline} $sext.i56.i64(i: i56) returns (i64) { i } +function {:inline} $sext.i56.i80(i: i56) returns (i80) { i } +function {:inline} $sext.i56.i88(i: i56) returns (i88) { i } +function {:inline} $sext.i56.i96(i: i56) returns (i96) { i } +function {:inline} $sext.i56.i128(i: i56) returns (i128) { i } +function {:inline} $sext.i56.i160(i: i56) returns (i160) { i } +function {:inline} $sext.i56.i256(i: i56) returns (i256) { i } +function {:inline} $sext.i64.i80(i: i64) returns (i80) { i } +function {:inline} $sext.i64.i88(i: i64) returns (i88) { i } +function {:inline} $sext.i64.i96(i: i64) returns (i96) { i } +function {:inline} $sext.i64.i128(i: i64) returns (i128) { i } +function {:inline} $sext.i64.i160(i: i64) returns (i160) { i } +function {:inline} $sext.i64.i256(i: i64) returns (i256) { i } +function {:inline} $sext.i80.i88(i: i80) returns (i88) { i } +function {:inline} $sext.i80.i96(i: i80) returns (i96) { i } +function {:inline} $sext.i80.i128(i: i80) returns (i128) { i } +function {:inline} $sext.i80.i160(i: i80) returns (i160) { i } +function {:inline} $sext.i80.i256(i: i80) returns (i256) { i } +function {:inline} $sext.i88.i96(i: i88) returns (i96) { i } +function {:inline} $sext.i88.i128(i: i88) returns (i128) { i } +function {:inline} $sext.i88.i160(i: i88) returns (i160) { i } +function {:inline} $sext.i88.i256(i: i88) returns (i256) { i } +function {:inline} $sext.i96.i128(i: i96) returns (i128) { i } +function {:inline} $sext.i96.i160(i: i96) returns (i160) { i } +function {:inline} $sext.i96.i256(i: i96) returns (i256) { i } +function {:inline} $sext.i128.i160(i: i128) returns (i160) { i } +function {:inline} $sext.i128.i256(i: i128) returns (i256) { i } +function {:inline} $sext.i160.i256(i: i160) returns (i256) { i } +function {:inline} $zext.i1.i5(i: i1) returns (i5) { i } +function {:inline} $zext.i1.i6(i: i1) returns (i6) { i } +function {:inline} $zext.i1.i8(i: i1) returns (i8) { i } +function {:inline} $zext.i1.i16(i: i1) returns (i16) { i } +function {:inline} $zext.i1.i24(i: i1) returns (i24) { i } +function {:inline} $zext.i1.i32(i: i1) returns (i32) { i } +function {:inline} $zext.i1.i33(i: i1) returns (i33) { i } +function {:inline} $zext.i1.i40(i: i1) returns (i40) { i } +function {:inline} $zext.i1.i48(i: i1) returns (i48) { i } +function {:inline} $zext.i1.i56(i: i1) returns (i56) { i } +function {:inline} $zext.i1.i64(i: i1) returns (i64) { i } +function {:inline} $zext.i1.i80(i: i1) returns (i80) { i } +function {:inline} $zext.i1.i88(i: i1) returns (i88) { i } +function {:inline} $zext.i1.i96(i: i1) returns (i96) { i } +function {:inline} $zext.i1.i128(i: i1) returns (i128) { i } +function {:inline} $zext.i1.i160(i: i1) returns (i160) { i } +function {:inline} $zext.i1.i256(i: i1) returns (i256) { i } +function {:inline} $zext.i5.i6(i: i5) returns (i6) { i } +function {:inline} $zext.i5.i8(i: i5) returns (i8) { i } +function {:inline} $zext.i5.i16(i: i5) returns (i16) { i } +function {:inline} $zext.i5.i24(i: i5) returns (i24) { i } +function {:inline} $zext.i5.i32(i: i5) returns (i32) { i } +function {:inline} $zext.i5.i33(i: i5) returns (i33) { i } +function {:inline} $zext.i5.i40(i: i5) returns (i40) { i } +function {:inline} $zext.i5.i48(i: i5) returns (i48) { i } +function {:inline} $zext.i5.i56(i: i5) returns (i56) { i } +function {:inline} $zext.i5.i64(i: i5) returns (i64) { i } +function {:inline} $zext.i5.i80(i: i5) returns (i80) { i } +function {:inline} $zext.i5.i88(i: i5) returns (i88) { i } +function {:inline} $zext.i5.i96(i: i5) returns (i96) { i } +function {:inline} $zext.i5.i128(i: i5) returns (i128) { i } +function {:inline} $zext.i5.i160(i: i5) returns (i160) { i } +function {:inline} $zext.i5.i256(i: i5) returns (i256) { i } +function {:inline} $zext.i6.i8(i: i6) returns (i8) { i } +function {:inline} $zext.i6.i16(i: i6) returns (i16) { i } +function {:inline} $zext.i6.i24(i: i6) returns (i24) { i } +function {:inline} $zext.i6.i32(i: i6) returns (i32) { i } +function {:inline} $zext.i6.i33(i: i6) returns (i33) { i } +function {:inline} $zext.i6.i40(i: i6) returns (i40) { i } +function {:inline} $zext.i6.i48(i: i6) returns (i48) { i } +function {:inline} $zext.i6.i56(i: i6) returns (i56) { i } +function {:inline} $zext.i6.i64(i: i6) returns (i64) { i } +function {:inline} $zext.i6.i80(i: i6) returns (i80) { i } +function {:inline} $zext.i6.i88(i: i6) returns (i88) { i } +function {:inline} $zext.i6.i96(i: i6) returns (i96) { i } +function {:inline} $zext.i6.i128(i: i6) returns (i128) { i } +function {:inline} $zext.i6.i160(i: i6) returns (i160) { i } +function {:inline} $zext.i6.i256(i: i6) returns (i256) { i } +function {:inline} $zext.i8.i16(i: i8) returns (i16) { i } +function {:inline} $zext.i8.i24(i: i8) returns (i24) { i } +function {:inline} $zext.i8.i32(i: i8) returns (i32) { i } +function {:inline} $zext.i8.i33(i: i8) returns (i33) { i } +function {:inline} $zext.i8.i40(i: i8) returns (i40) { i } +function {:inline} $zext.i8.i48(i: i8) returns (i48) { i } +function {:inline} $zext.i8.i56(i: i8) returns (i56) { i } +function {:inline} $zext.i8.i64(i: i8) returns (i64) { i } +function {:inline} $zext.i8.i80(i: i8) returns (i80) { i } +function {:inline} $zext.i8.i88(i: i8) returns (i88) { i } +function {:inline} $zext.i8.i96(i: i8) returns (i96) { i } +function {:inline} $zext.i8.i128(i: i8) returns (i128) { i } +function {:inline} $zext.i8.i160(i: i8) returns (i160) { i } +function {:inline} $zext.i8.i256(i: i8) returns (i256) { i } +function {:inline} $zext.i16.i24(i: i16) returns (i24) { i } +function {:inline} $zext.i16.i32(i: i16) returns (i32) { i } +function {:inline} $zext.i16.i33(i: i16) returns (i33) { i } +function {:inline} $zext.i16.i40(i: i16) returns (i40) { i } +function {:inline} $zext.i16.i48(i: i16) returns (i48) { i } +function {:inline} $zext.i16.i56(i: i16) returns (i56) { i } +function {:inline} $zext.i16.i64(i: i16) returns (i64) { i } +function {:inline} $zext.i16.i80(i: i16) returns (i80) { i } +function {:inline} $zext.i16.i88(i: i16) returns (i88) { i } +function {:inline} $zext.i16.i96(i: i16) returns (i96) { i } +function {:inline} $zext.i16.i128(i: i16) returns (i128) { i } +function {:inline} $zext.i16.i160(i: i16) returns (i160) { i } +function {:inline} $zext.i16.i256(i: i16) returns (i256) { i } +function {:inline} $zext.i24.i32(i: i24) returns (i32) { i } +function {:inline} $zext.i24.i33(i: i24) returns (i33) { i } +function {:inline} $zext.i24.i40(i: i24) returns (i40) { i } +function {:inline} $zext.i24.i48(i: i24) returns (i48) { i } +function {:inline} $zext.i24.i56(i: i24) returns (i56) { i } +function {:inline} $zext.i24.i64(i: i24) returns (i64) { i } +function {:inline} $zext.i24.i80(i: i24) returns (i80) { i } +function {:inline} $zext.i24.i88(i: i24) returns (i88) { i } +function {:inline} $zext.i24.i96(i: i24) returns (i96) { i } +function {:inline} $zext.i24.i128(i: i24) returns (i128) { i } +function {:inline} $zext.i24.i160(i: i24) returns (i160) { i } +function {:inline} $zext.i24.i256(i: i24) returns (i256) { i } +function {:inline} $zext.i32.i33(i: i32) returns (i33) { i } +function {:inline} $zext.i32.i40(i: i32) returns (i40) { i } +function {:inline} $zext.i32.i48(i: i32) returns (i48) { i } +function {:inline} $zext.i32.i56(i: i32) returns (i56) { i } +function {:inline} $zext.i32.i64(i: i32) returns (i64) { i } +function {:inline} $zext.i32.i80(i: i32) returns (i80) { i } +function {:inline} $zext.i32.i88(i: i32) returns (i88) { i } +function {:inline} $zext.i32.i96(i: i32) returns (i96) { i } +function {:inline} $zext.i32.i128(i: i32) returns (i128) { i } +function {:inline} $zext.i32.i160(i: i32) returns (i160) { i } +function {:inline} $zext.i32.i256(i: i32) returns (i256) { i } +function {:inline} $zext.i33.i40(i: i33) returns (i40) { i } +function {:inline} $zext.i33.i48(i: i33) returns (i48) { i } +function {:inline} $zext.i33.i56(i: i33) returns (i56) { i } +function {:inline} $zext.i33.i64(i: i33) returns (i64) { i } +function {:inline} $zext.i33.i80(i: i33) returns (i80) { i } +function {:inline} $zext.i33.i88(i: i33) returns (i88) { i } +function {:inline} $zext.i33.i96(i: i33) returns (i96) { i } +function {:inline} $zext.i33.i128(i: i33) returns (i128) { i } +function {:inline} $zext.i33.i160(i: i33) returns (i160) { i } +function {:inline} $zext.i33.i256(i: i33) returns (i256) { i } +function {:inline} $zext.i40.i48(i: i40) returns (i48) { i } +function {:inline} $zext.i40.i56(i: i40) returns (i56) { i } +function {:inline} $zext.i40.i64(i: i40) returns (i64) { i } +function {:inline} $zext.i40.i80(i: i40) returns (i80) { i } +function {:inline} $zext.i40.i88(i: i40) returns (i88) { i } +function {:inline} $zext.i40.i96(i: i40) returns (i96) { i } +function {:inline} $zext.i40.i128(i: i40) returns (i128) { i } +function {:inline} $zext.i40.i160(i: i40) returns (i160) { i } +function {:inline} $zext.i40.i256(i: i40) returns (i256) { i } +function {:inline} $zext.i48.i56(i: i48) returns (i56) { i } +function {:inline} $zext.i48.i64(i: i48) returns (i64) { i } +function {:inline} $zext.i48.i80(i: i48) returns (i80) { i } +function {:inline} $zext.i48.i88(i: i48) returns (i88) { i } +function {:inline} $zext.i48.i96(i: i48) returns (i96) { i } +function {:inline} $zext.i48.i128(i: i48) returns (i128) { i } +function {:inline} $zext.i48.i160(i: i48) returns (i160) { i } +function {:inline} $zext.i48.i256(i: i48) returns (i256) { i } +function {:inline} $zext.i56.i64(i: i56) returns (i64) { i } +function {:inline} $zext.i56.i80(i: i56) returns (i80) { i } +function {:inline} $zext.i56.i88(i: i56) returns (i88) { i } +function {:inline} $zext.i56.i96(i: i56) returns (i96) { i } +function {:inline} $zext.i56.i128(i: i56) returns (i128) { i } +function {:inline} $zext.i56.i160(i: i56) returns (i160) { i } +function {:inline} $zext.i56.i256(i: i56) returns (i256) { i } +function {:inline} $zext.i64.i80(i: i64) returns (i80) { i } +function {:inline} $zext.i64.i88(i: i64) returns (i88) { i } +function {:inline} $zext.i64.i96(i: i64) returns (i96) { i } +function {:inline} $zext.i64.i128(i: i64) returns (i128) { i } +function {:inline} $zext.i64.i160(i: i64) returns (i160) { i } +function {:inline} $zext.i64.i256(i: i64) returns (i256) { i } +function {:inline} $zext.i80.i88(i: i80) returns (i88) { i } +function {:inline} $zext.i80.i96(i: i80) returns (i96) { i } +function {:inline} $zext.i80.i128(i: i80) returns (i128) { i } +function {:inline} $zext.i80.i160(i: i80) returns (i160) { i } +function {:inline} $zext.i80.i256(i: i80) returns (i256) { i } +function {:inline} $zext.i88.i96(i: i88) returns (i96) { i } +function {:inline} $zext.i88.i128(i: i88) returns (i128) { i } +function {:inline} $zext.i88.i160(i: i88) returns (i160) { i } +function {:inline} $zext.i88.i256(i: i88) returns (i256) { i } +function {:inline} $zext.i96.i128(i: i96) returns (i128) { i } +function {:inline} $zext.i96.i160(i: i96) returns (i160) { i } +function {:inline} $zext.i96.i256(i: i96) returns (i256) { i } +function {:inline} $zext.i128.i160(i: i128) returns (i160) { i } +function {:inline} $zext.i128.i256(i: i128) returns (i256) { i } +function {:inline} $zext.i160.i256(i: i160) returns (i256) { i } +function $extractvalue.i1(p: ref, i: int) returns (i1); +function $extractvalue.i5(p: ref, i: int) returns (i5); +function $extractvalue.i6(p: ref, i: int) returns (i6); +function $extractvalue.i8(p: ref, i: int) returns (i8); +function $extractvalue.i16(p: ref, i: int) returns (i16); +function $extractvalue.i24(p: ref, i: int) returns (i24); +function $extractvalue.i32(p: ref, i: int) returns (i32); +function $extractvalue.i33(p: ref, i: int) returns (i33); +function $extractvalue.i40(p: ref, i: int) returns (i40); +function $extractvalue.i48(p: ref, i: int) returns (i48); +function $extractvalue.i56(p: ref, i: int) returns (i56); +function $extractvalue.i64(p: ref, i: int) returns (i64); +function $extractvalue.i80(p: ref, i: int) returns (i80); +function $extractvalue.i88(p: ref, i: int) returns (i88); +function $extractvalue.i96(p: ref, i: int) returns (i96); +function $extractvalue.i128(p: ref, i: int) returns (i128); +function $extractvalue.i160(p: ref, i: int) returns (i160); +function $extractvalue.i256(p: ref, i: int) returns (i256); +// Pointer arithmetic operations +function {:inline} $add.ref(p1: ref, p2: ref) returns (ref) { $add.i64(p1, p2) } +function {:inline} $sub.ref(p1: ref, p2: ref) returns (ref) { $sub.i64(p1, p2) } +function {:inline} $mul.ref(p1: ref, p2: ref) returns (ref) { $mul.i64(p1, p2) } + +// Pointer predicates +function {:inline} $eq.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 == p2) } +function {:inline} $eq.ref(p1: ref, p2: ref) returns (i1) { (if $eq.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $ne.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 != p2) } +function {:inline} $ne.ref(p1: ref, p2: ref) returns (i1) { (if $ne.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $ugt.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 > p2) } +function {:inline} $ugt.ref(p1: ref, p2: ref) returns (i1) { (if $ugt.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $uge.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 >= p2) } +function {:inline} $uge.ref(p1: ref, p2: ref) returns (i1) { (if $uge.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $ult.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 < p2) } +function {:inline} $ult.ref(p1: ref, p2: ref) returns (i1) { (if $ult.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $ule.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 <= p2) } +function {:inline} $ule.ref(p1: ref, p2: ref) returns (i1) { (if $ule.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $sgt.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 > p2) } +function {:inline} $sgt.ref(p1: ref, p2: ref) returns (i1) { (if $sgt.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $sge.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 >= p2) } +function {:inline} $sge.ref(p1: ref, p2: ref) returns (i1) { (if $sge.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $slt.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 < p2) } +function {:inline} $slt.ref(p1: ref, p2: ref) returns (i1) { (if $slt.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $sle.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 <= p2) } +function {:inline} $sle.ref(p1: ref, p2: ref) returns (i1) { (if $sle.ref.bool(p1, p2) then 1 else 0) } + +// Pointer load/store operations +function {:inline} $load.ref(M: [ref] ref, p: ref) returns (ref) { M[p] } +function {:inline} $store.ref(M: [ref] ref, p: ref, i: ref) returns ([ref] ref) { M[p := i] } + +// Pointer conversion +function {:inline} $bitcast.ref.ref(p: ref) returns (ref) { p } +function $extractvalue.ref(p: ref, i: int) returns (ref); +// Pointer-number conversion +function {:inline} $p2i.ref.i8(p: ref) returns (i8) { $trunc.i64.i8(p) } +function {:inline} $i2p.i8.ref(i: i8) returns (ref) { $zext.i8.i64(i) } +function {:inline} $p2i.ref.i16(p: ref) returns (i16) { $trunc.i64.i16(p) } +function {:inline} $i2p.i16.ref(i: i16) returns (ref) { $zext.i16.i64(i) } +function {:inline} $p2i.ref.i32(p: ref) returns (i32) { $trunc.i64.i32(p) } +function {:inline} $i2p.i32.ref(i: i32) returns (ref) { $zext.i32.i64(i) } +function {:inline} $p2i.ref.i64(p: ref) returns (i64) { p } +function {:inline} $i2p.i64.ref(i: i64) returns (ref) { i } + +function $fp(ipart: int, fpart: int, epart: int) returns (float); +// Floating-point arithmetic operations +function $abs.float(f: float) returns (float); +function $round.float(f: float) returns (float); +function $sqrt.float(f: float) returns (float); +function $fadd.float(f1: float, f2: float) returns (float); +function $fsub.float(f1: float, f2: float) returns (float); +function $fmul.float(f1: float, f2: float) returns (float); +function $fdiv.float(f1: float, f2: float) returns (float); +function $frem.float(f1: float, f2: float) returns (float); +function $min.float(f1: float, f2: float) returns (float); +function $max.float(f1: float, f2: float) returns (float); +function $fma.float(f1: float, f2: float, f3: float) returns (float); +function $fneg.float(f: float) returns (float); +// Floating-point predicates +function $foeq.float.bool(f1: float, f2: float) returns (bool); +function $fole.float.bool(f1: float, f2: float) returns (bool); +function $folt.float.bool(f1: float, f2: float) returns (bool); +function $foge.float.bool(f1: float, f2: float) returns (bool); +function $fogt.float.bool(f1: float, f2: float) returns (bool); +function $fone.float.bool(f1: float, f2: float) returns (bool); +function $ford.float.bool(f1: float, f2: float) returns (bool); +function $fueq.float.bool(f1: float, f2: float) returns (bool); +function $fugt.float.bool(f1: float, f2: float) returns (bool); +function $fuge.float.bool(f1: float, f2: float) returns (bool); +function $fult.float.bool(f1: float, f2: float) returns (bool); +function $fule.float.bool(f1: float, f2: float) returns (bool); +function $fune.float.bool(f1: float, f2: float) returns (bool); +function $funo.float.bool(f1: float, f2: float) returns (bool); +function $ffalse.float.bool(f1: float, f2: float) returns (bool); +function $ftrue.float.bool(f1: float, f2: float) returns (bool); +// Floating-point/integer conversion +function $bitcast.float.i8(f: float) returns (i8); +function $bitcast.float.i16(f: float) returns (i16); +function $bitcast.float.i32(f: float) returns (i32); +function $bitcast.float.i64(f: float) returns (i64); +function $bitcast.float.i80(f: float) returns (i80); +function $bitcast.i8.float(i: i8) returns (float); +function $bitcast.i16.float(i: i16) returns (float); +function $bitcast.i32.float(i: i32) returns (float); +function $bitcast.i64.float(i: i64) returns (float); +function $bitcast.i80.float(i: i80) returns (float); +function $fp2si.float.i1(f: float) returns (i1); +function $fp2si.float.i5(f: float) returns (i5); +function $fp2si.float.i6(f: float) returns (i6); +function $fp2si.float.i8(f: float) returns (i8); +function $fp2si.float.i16(f: float) returns (i16); +function $fp2si.float.i24(f: float) returns (i24); +function $fp2si.float.i32(f: float) returns (i32); +function $fp2si.float.i33(f: float) returns (i33); +function $fp2si.float.i40(f: float) returns (i40); +function $fp2si.float.i48(f: float) returns (i48); +function $fp2si.float.i56(f: float) returns (i56); +function $fp2si.float.i64(f: float) returns (i64); +function $fp2si.float.i80(f: float) returns (i80); +function $fp2si.float.i88(f: float) returns (i88); +function $fp2si.float.i96(f: float) returns (i96); +function $fp2si.float.i128(f: float) returns (i128); +function $fp2si.float.i160(f: float) returns (i160); +function $fp2si.float.i256(f: float) returns (i256); +function $fp2ui.float.i1(f: float) returns (i1); +function $fp2ui.float.i5(f: float) returns (i5); +function $fp2ui.float.i6(f: float) returns (i6); +function $fp2ui.float.i8(f: float) returns (i8); +function $fp2ui.float.i16(f: float) returns (i16); +function $fp2ui.float.i24(f: float) returns (i24); +function $fp2ui.float.i32(f: float) returns (i32); +function $fp2ui.float.i33(f: float) returns (i33); +function $fp2ui.float.i40(f: float) returns (i40); +function $fp2ui.float.i48(f: float) returns (i48); +function $fp2ui.float.i56(f: float) returns (i56); +function $fp2ui.float.i64(f: float) returns (i64); +function $fp2ui.float.i80(f: float) returns (i80); +function $fp2ui.float.i88(f: float) returns (i88); +function $fp2ui.float.i96(f: float) returns (i96); +function $fp2ui.float.i128(f: float) returns (i128); +function $fp2ui.float.i160(f: float) returns (i160); +function $fp2ui.float.i256(f: float) returns (i256); +function $si2fp.i1.float(i: i1) returns (float); +function $si2fp.i5.float(i: i5) returns (float); +function $si2fp.i6.float(i: i6) returns (float); +function $si2fp.i8.float(i: i8) returns (float); +function $si2fp.i16.float(i: i16) returns (float); +function $si2fp.i24.float(i: i24) returns (float); +function $si2fp.i32.float(i: i32) returns (float); +function $si2fp.i33.float(i: i33) returns (float); +function $si2fp.i40.float(i: i40) returns (float); +function $si2fp.i48.float(i: i48) returns (float); +function $si2fp.i56.float(i: i56) returns (float); +function $si2fp.i64.float(i: i64) returns (float); +function $si2fp.i80.float(i: i80) returns (float); +function $si2fp.i88.float(i: i88) returns (float); +function $si2fp.i96.float(i: i96) returns (float); +function $si2fp.i128.float(i: i128) returns (float); +function $si2fp.i160.float(i: i160) returns (float); +function $si2fp.i256.float(i: i256) returns (float); +function $ui2fp.i1.float(i: i1) returns (float); +function $ui2fp.i5.float(i: i5) returns (float); +function $ui2fp.i6.float(i: i6) returns (float); +function $ui2fp.i8.float(i: i8) returns (float); +function $ui2fp.i16.float(i: i16) returns (float); +function $ui2fp.i24.float(i: i24) returns (float); +function $ui2fp.i32.float(i: i32) returns (float); +function $ui2fp.i33.float(i: i33) returns (float); +function $ui2fp.i40.float(i: i40) returns (float); +function $ui2fp.i48.float(i: i48) returns (float); +function $ui2fp.i56.float(i: i56) returns (float); +function $ui2fp.i64.float(i: i64) returns (float); +function $ui2fp.i80.float(i: i80) returns (float); +function $ui2fp.i88.float(i: i88) returns (float); +function $ui2fp.i96.float(i: i96) returns (float); +function $ui2fp.i128.float(i: i128) returns (float); +function $ui2fp.i160.float(i: i160) returns (float); +function $ui2fp.i256.float(i: i256) returns (float); +// Floating-point conversion +function $fpext.float.float(f: float) returns (float); +function $fptrunc.float.float(f: float) returns (float); +// Floating-point load/store operations +function {:inline} $load.float(M: [ref] float, p: ref) returns (float) { M[p] } +function {:inline} $store.float(M: [ref] float, p: ref, f: float) returns ([ref] float) { M[p := f] } +function {:inline} $load.unsafe.float(M: [ref] i8, p: ref) returns (float) { $bitcast.i8.float(M[p]) } +function {:inline} $store.unsafe.float(M: [ref] i8, p: ref, f: float) returns ([ref] i8) { M[p := $bitcast.float.i8(f)] } +function $extractvalue.float(p: ref, i: int) returns (float); +const {:allocSize 5} {:count 5} __func__.main: ref; +axiom (__func__.main == $sub.ref(0, 1029)); +const {:allocSize 14} .str: ref; +axiom (.str == $sub.ref(0, 2067)); +const {:allocSize 2} {:count 2} .str.1: ref; +axiom (.str.1 == $sub.ref(0, 3093)); +const main: ref; +axiom (main == $sub.ref(0, 4125)); +procedure {:entrypoint} main() + returns ($r: i32) +{ + var $i0: i32; + var $i1: i1; + var $i2: i32; + var $i3: i1; + var $i4: i32; + var $i5: i32; + var $i6: i32; +$bb0: + call $initialize(); + assume {:sourceloc "benchmarks/c/miscellaneous/nondet_loop.c", 7, 5} true; + assume {:verifier.code 0} true; + call {:cexpr "smack:entry:main"} boogie_si_record_ref(main); + assume {:sourceloc "benchmarks/c/miscellaneous/nondet_loop.c", 7, 5} true; + assume {:verifier.code 0} true; + $i0 := 0; + goto $bb1; +$bb1: + assume {:sourceloc "benchmarks/c/miscellaneous/nondet_loop.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "benchmarks/c/miscellaneous/nondet_loop.c", 7, 14} true; + assume {:verifier.code 0} true; + $i1 := $ne.i32($i0, 5); + assume {:sourceloc "benchmarks/c/miscellaneous/nondet_loop.c", 7, 5} true; + assume {:verifier.code 0} true; + assume {:branchcond $i1} true; + goto $bb2, $bb3; +$bb2: + assume ($i1 == 1); + assume {:sourceloc "benchmarks/c/miscellaneous/nondet_loop.c", 8, 13} true; + assume {:verifier.code 1} true; + call $i2 := __VERIFIER_nondet_int(); + call {:cexpr "smack:ext:__VERIFIER_nondet_int"} boogie_si_record_i32($i2); + assume {:sourceloc "benchmarks/c/miscellaneous/nondet_loop.c", 8, 37} true; + assume {:verifier.code 0} true; + $i3 := $eq.i32($i2, 0); + assume {:sourceloc "benchmarks/c/miscellaneous/nondet_loop.c", 8, 13} true; + assume {:verifier.code 0} true; + $i4 := $add.i32($i0, 2); + assume {:sourceloc "benchmarks/c/miscellaneous/nondet_loop.c", 8, 13} true; + assume {:verifier.code 0} true; + $i5 := $add.i32($i0, 3); + assume {:sourceloc "benchmarks/c/miscellaneous/nondet_loop.c", 8, 13} true; + assume {:verifier.code 0} true; + $i6 := (if ($i3 == 1) then $i4 else $i5); + call {:cexpr "x"} boogie_si_record_i32($i6); + assume {:sourceloc "benchmarks/c/miscellaneous/nondet_loop.c", 7, 5} true; + assume {:verifier.code 0} true; + $i0 := $i6; + goto $bb1; +$bb3: + assume !(($i1 == 1)); + assume {:sourceloc "benchmarks/c/miscellaneous/nondet_loop.c", 14, 5} true; + assume {:verifier.code 0} true; + call __assert_rtn(__func__.main, .str, 14, .str.1); + assume {:sourceloc "benchmarks/c/miscellaneous/nondet_loop.c", 14, 5} true; + assume {:verifier.code 0} true; + assume false; +} +const llvm.dbg.value: ref; +axiom (llvm.dbg.value == $sub.ref(0, 5157)); +procedure llvm.dbg.value($p0: ref, $p1: ref, $p2: ref); +const __assert_rtn: ref; +axiom (__assert_rtn == $sub.ref(0, 6189)); +procedure __assert_rtn($p0: ref, $p1: ref, $i2: i32, $p3: ref); +const __SMACK_code: ref; +axiom (__SMACK_code == $sub.ref(0, 7221)); +procedure __SMACK_code.ref($p0: ref); +procedure __SMACK_code.ref.i32($p0: ref, p.1: i32); +const __VERIFIER_assume: ref; +axiom (__VERIFIER_assume == $sub.ref(0, 8253)); +procedure __VERIFIER_assume($i0: i32) +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + call {:cexpr "__VERIFIER_assume:arg:x"} boogie_si_record_i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + assume true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 45, 3} true; + assume {:verifier.code 1} true; + assume $i0 != $0; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 46, 1} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_dummy: ref; +axiom (__SMACK_dummy == $sub.ref(0, 9285)); +procedure __SMACK_dummy($i0: i32) +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_dummy:arg:v"} boogie_si_record_i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + assume true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 59} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_and32: ref; +axiom (__SMACK_and32 == $sub.ref(0, 10317)); +procedure __SMACK_and32($i0: i32, $i1: i32) + returns ($r: i32) +{ + var $i2: i32; + var $i3: i1; + var $i5: i1; + var $i6: i1; + var $i8: i32; + var $i7: i32; + var $i4: i32; + var $i9: i64; + var $i10: i64; + var $i11: i32; + var $i12: i32; + var $i13: i64; + var $i14: i64; + var $i15: i32; + var $i16: i32; + var $i17: i32; + var $i18: i1; + var $i20: i1; + var $i21: i1; + var $i23: i32; + var $i22: i32; + var $i19: i32; + var $i24: i64; + var $i25: i64; + var $i26: i32; + var $i27: i32; + var $i28: i64; + var $i29: i64; + var $i30: i32; + var $i31: i32; + var $i32: i32; + var $i33: i1; + var $i35: i1; + var $i36: i1; + var $i38: i32; + var $i37: i32; + var $i34: i32; + var $i39: i64; + var $i40: i64; + var $i41: i32; + var $i42: i32; + var $i43: i64; + var $i44: i64; + var $i45: i32; + var $i46: i32; + var $i47: i32; + var $i48: i1; + var $i50: i1; + var $i51: i1; + var $i53: i32; + var $i52: i32; + var $i49: i32; + var $i54: i64; + var $i55: i64; + var $i56: i32; + var $i57: i32; + var $i58: i64; + var $i59: i64; + var $i60: i32; + var $i61: i32; + var $i62: i32; + var $i63: i1; + var $i65: i1; + var $i66: i1; + var $i68: i32; + var $i67: i32; + var $i64: i32; + var $i69: i64; + var $i70: i64; + var $i71: i32; + var $i72: i32; + var $i73: i64; + var $i74: i64; + var $i75: i32; + var $i76: i32; + var $i77: i32; + var $i78: i1; + var $i80: i1; + var $i81: i1; + var $i83: i32; + var $i82: i32; + var $i79: i32; + var $i84: i64; + var $i85: i64; + var $i86: i32; + var $i87: i32; + var $i88: i64; + var $i89: i64; + var $i90: i32; + var $i91: i32; + var $i92: i32; + var $i93: i1; + var $i95: i1; + var $i96: i1; + var $i98: i32; + var $i97: i32; + var $i94: i32; + var $i99: i64; + var $i100: i64; + var $i101: i32; + var $i102: i32; + var $i103: i64; + var $i104: i64; + var $i105: i32; + var $i106: i32; + var $i107: i32; + var $i108: i1; + var $i110: i1; + var $i111: i1; + var $i113: i32; + var $i112: i32; + var $i109: i32; + var $i114: i64; + var $i115: i64; + var $i116: i32; + var $i117: i32; + var $i118: i64; + var $i119: i64; + var $i120: i32; + var $i121: i32; + var $i122: i32; + var $i123: i1; + var $i125: i1; + var $i126: i1; + var $i128: i32; + var $i127: i32; + var $i124: i32; + var $i129: i64; + var $i130: i64; + var $i131: i32; + var $i132: i32; + var $i133: i64; + var $i134: i64; + var $i135: i32; + var $i136: i32; + var $i137: i32; + var $i138: i1; + var $i140: i1; + var $i141: i1; + var $i143: i32; + var $i142: i32; + var $i139: i32; + var $i144: i64; + var $i145: i64; + var $i146: i32; + var $i147: i32; + var $i148: i64; + var $i149: i64; + var $i150: i32; + var $i151: i32; + var $i152: i32; + var $i153: i1; + var $i155: i1; + var $i156: i1; + var $i158: i32; + var $i157: i32; + var $i154: i32; + var $i159: i64; + var $i160: i64; + var $i161: i32; + var $i162: i32; + var $i163: i64; + var $i164: i64; + var $i165: i32; + var $i166: i32; + var $i167: i32; + var $i168: i1; + var $i170: i1; + var $i171: i1; + var $i173: i32; + var $i172: i32; + var $i169: i32; + var $i174: i64; + var $i175: i64; + var $i176: i32; + var $i177: i32; + var $i178: i64; + var $i179: i64; + var $i180: i32; + var $i181: i32; + var $i182: i32; + var $i183: i1; + var $i185: i1; + var $i186: i1; + var $i188: i32; + var $i187: i32; + var $i184: i32; + var $i189: i64; + var $i190: i64; + var $i191: i32; + var $i192: i32; + var $i193: i64; + var $i194: i64; + var $i195: i32; + var $i196: i32; + var $i197: i32; + var $i198: i1; + var $i200: i1; + var $i201: i1; + var $i203: i32; + var $i202: i32; + var $i199: i32; + var $i204: i64; + var $i205: i64; + var $i206: i32; + var $i207: i32; + var $i208: i64; + var $i209: i64; + var $i210: i32; + var $i211: i32; + var $i212: i32; + var $i213: i1; + var $i215: i1; + var $i216: i1; + var $i218: i32; + var $i217: i32; + var $i214: i32; + var $i219: i64; + var $i220: i64; + var $i221: i32; + var $i222: i32; + var $i223: i64; + var $i224: i64; + var $i225: i32; + var $i226: i32; + var $i227: i32; + var $i228: i1; + var $i230: i1; + var $i231: i1; + var $i233: i32; + var $i232: i32; + var $i229: i32; + var $i234: i64; + var $i235: i64; + var $i236: i32; + var $i237: i32; + var $i238: i64; + var $i239: i64; + var $i240: i32; + var $i241: i32; + var $i242: i32; + var $i243: i1; + var $i245: i1; + var $i246: i1; + var $i248: i32; + var $i247: i32; + var $i244: i32; + var $i249: i64; + var $i250: i64; + var $i251: i32; + var $i252: i32; + var $i253: i64; + var $i254: i64; + var $i255: i32; + var $i256: i32; + var $i257: i32; + var $i258: i1; + var $i260: i1; + var $i261: i1; + var $i263: i32; + var $i262: i32; + var $i259: i32; + var $i264: i64; + var $i265: i64; + var $i266: i32; + var $i267: i32; + var $i268: i64; + var $i269: i64; + var $i270: i32; + var $i271: i32; + var $i272: i32; + var $i273: i1; + var $i275: i1; + var $i276: i1; + var $i278: i32; + var $i277: i32; + var $i274: i32; + var $i279: i64; + var $i280: i64; + var $i281: i32; + var $i282: i32; + var $i283: i64; + var $i284: i64; + var $i285: i32; + var $i286: i32; + var $i287: i32; + var $i288: i1; + var $i290: i1; + var $i291: i1; + var $i293: i32; + var $i292: i32; + var $i289: i32; + var $i294: i64; + var $i295: i64; + var $i296: i32; + var $i297: i32; + var $i298: i64; + var $i299: i64; + var $i300: i32; + var $i301: i32; + var $i302: i32; + var $i303: i1; + var $i305: i1; + var $i306: i1; + var $i308: i32; + var $i307: i32; + var $i304: i32; + var $i309: i64; + var $i310: i64; + var $i311: i32; + var $i312: i32; + var $i313: i64; + var $i314: i64; + var $i315: i32; + var $i316: i32; + var $i317: i32; + var $i318: i1; + var $i320: i1; + var $i321: i1; + var $i323: i32; + var $i322: i32; + var $i319: i32; + var $i324: i64; + var $i325: i64; + var $i326: i32; + var $i327: i32; + var $i328: i64; + var $i329: i64; + var $i330: i32; + var $i331: i32; + var $i332: i32; + var $i333: i1; + var $i335: i1; + var $i336: i1; + var $i338: i32; + var $i337: i32; + var $i334: i32; + var $i339: i64; + var $i340: i64; + var $i341: i32; + var $i342: i32; + var $i343: i64; + var $i344: i64; + var $i345: i32; + var $i346: i32; + var $i347: i32; + var $i348: i1; + var $i350: i1; + var $i351: i1; + var $i353: i32; + var $i352: i32; + var $i349: i32; + var $i354: i64; + var $i355: i64; + var $i356: i32; + var $i357: i32; + var $i358: i64; + var $i359: i64; + var $i360: i32; + var $i361: i32; + var $i362: i32; + var $i363: i1; + var $i365: i1; + var $i366: i1; + var $i368: i32; + var $i367: i32; + var $i364: i32; + var $i369: i64; + var $i370: i64; + var $i371: i32; + var $i372: i32; + var $i373: i64; + var $i374: i64; + var $i375: i32; + var $i376: i32; + var $i377: i32; + var $i378: i1; + var $i380: i1; + var $i381: i1; + var $i383: i32; + var $i382: i32; + var $i379: i32; + var $i384: i64; + var $i385: i64; + var $i386: i32; + var $i387: i32; + var $i388: i64; + var $i389: i64; + var $i390: i32; + var $i391: i32; + var $i392: i32; + var $i393: i1; + var $i395: i1; + var $i396: i1; + var $i398: i32; + var $i397: i32; + var $i394: i32; + var $i399: i64; + var $i400: i64; + var $i401: i32; + var $i402: i32; + var $i403: i64; + var $i404: i64; + var $i405: i32; + var $i406: i32; + var $i407: i32; + var $i408: i1; + var $i410: i1; + var $i411: i1; + var $i413: i32; + var $i412: i32; + var $i409: i32; + var $i414: i64; + var $i415: i64; + var $i416: i32; + var $i417: i32; + var $i418: i64; + var $i419: i64; + var $i420: i32; + var $i421: i32; + var $i422: i32; + var $i423: i1; + var $i425: i1; + var $i426: i1; + var $i428: i32; + var $i427: i32; + var $i424: i32; + var $i429: i64; + var $i430: i64; + var $i431: i32; + var $i432: i32; + var $i433: i64; + var $i434: i64; + var $i435: i32; + var $i436: i32; + var $i437: i32; + var $i438: i1; + var $i440: i1; + var $i441: i1; + var $i443: i32; + var $i442: i32; + var $i439: i32; + var $i444: i64; + var $i445: i64; + var $i446: i32; + var $i447: i32; + var $i448: i64; + var $i449: i64; + var $i450: i32; + var $i451: i32; + var $i452: i32; + var $i453: i1; + var $i455: i1; + var $i456: i1; + var $i458: i32; + var $i457: i32; + var $i454: i32; + var $i459: i64; + var $i460: i64; + var $i461: i32; + var $i462: i32; + var $i463: i64; + var $i464: i64; + var $i465: i32; + var $i466: i32; + var $i467: i32; + var $i468: i1; + var $i470: i1; + var $i471: i1; + var $i473: i32; + var $i472: i32; + var $i469: i32; + var $i474: i64; + var $i475: i64; + var $i476: i32; + var $i477: i32; + var $i478: i64; + var $i479: i64; + var $i480: i32; + var $i481: i32; + var $i482: i32; + var $i483: i1; + var $i485: i1; + var $i486: i1; + var $i488: i32; + var $i487: i32; + var $i484: i32; + var $i489: i64; + var $i490: i64; + var $i491: i32; + var $i492: i32; + var $i493: i64; + var $i494: i64; + var $i495: i32; + var $i496: i32; + var $i497: i32; + var $i498: i1; + var $i500: i1; + var $i501: i1; + var $i503: i32; + var $i502: i32; + var $i499: i32; + var $i504: i64; + var $i505: i64; + var $i506: i32; + var $i507: i32; + var $i508: i64; + var $i509: i64; + var $i510: i32; + var $i511: i32; + var $i512: i32; + var $i513: i1; + var $i515: i1; + var $i516: i1; + var $i518: i32; + var $i517: i32; + var $i514: i32; + var $i519: i64; + var $i520: i64; + var $i521: i32; + var $i522: i32; + var $i523: i64; + var $i524: i64; + var $i525: i32; + var $i526: i32; + var $i527: i32; + var $i528: i1; + var $i530: i1; + var $i531: i1; + var $i533: i32; + var $i532: i32; + var $i529: i32; + var $i534: i64; + var $i535: i64; + var $i536: i32; + var $i537: i32; + var $i538: i64; + var $i539: i64; + var $i540: i32; + var $i541: i32; + var $i542: i32; + var $i543: i1; + var $i545: i1; + var $i546: i1; + var $i548: i32; + var $i547: i32; + var $i544: i32; + var $i549: i64; + var $i550: i64; + var $i551: i32; + var $i552: i32; + var $i553: i64; + var $i554: i64; + var $i555: i32; + var $i556: i32; + var $i557: i32; + var $i558: i1; + var $i560: i1; + var $i561: i1; + var $i563: i32; + var $i562: i32; + var $i559: i32; + var $i564: i64; + var $i565: i64; + var $i566: i32; + var $i567: i32; + var $i568: i64; + var $i569: i64; + var $i570: i32; + var $i571: i32; + var $i572: i32; + var $i573: i1; + var $i575: i1; + var $i576: i1; + var $i578: i32; + var $i577: i32; + var $i574: i32; + var $i579: i64; + var $i580: i64; + var $i581: i32; + var $i582: i32; + var $i583: i64; + var $i584: i64; + var $i585: i32; + var $i586: i32; + var $i587: i32; + var $i588: i1; + var $i590: i1; + var $i591: i1; + var $i593: i32; + var $i592: i32; + var $i589: i32; + var $i594: i64; + var $i595: i64; + var $i596: i32; + var $i597: i32; + var $i598: i64; + var $i599: i64; + var $i600: i32; + var $i601: i32; + var $i602: i32; + var $i603: i1; + var $i605: i1; + var $i606: i1; + var $i608: i32; + var $i607: i32; + var $i604: i32; + var $i609: i64; + var $i610: i64; + var $i611: i32; + var $i612: i32; + var $i613: i64; + var $i614: i64; + var $i615: i32; + var $i616: i32; + var $i617: i32; + var $i618: i1; + var $i620: i1; + var $i621: i1; + var $i623: i32; + var $i622: i32; + var $i619: i32; + var $i624: i64; + var $i625: i64; + var $i626: i32; + var $i627: i32; + var $i628: i64; + var $i629: i64; + var $i630: i32; + var $i631: i32; + var $i632: i32; + var $i633: i1; + var $i635: i1; + var $i636: i1; + var $i638: i32; + var $i637: i32; + var $i634: i32; + var $i639: i64; + var $i640: i64; + var $i641: i32; + var $i642: i32; + var $i643: i64; + var $i644: i64; + var $i645: i32; + var $i646: i32; + var $i647: i32; + var $i648: i1; + var $i650: i1; + var $i651: i1; + var $i653: i32; + var $i652: i32; + var $i649: i32; + var $i654: i64; + var $i655: i64; + var $i656: i32; + var $i657: i32; + var $i658: i64; + var $i659: i64; + var $i660: i32; + var $i661: i32; + var $i662: i32; + var $i663: i1; + var $i665: i1; + var $i666: i1; + var $i668: i32; + var $i667: i32; + var $i664: i32; + var $i669: i64; + var $i670: i64; + var $i671: i32; + var $i672: i32; + var $i673: i64; + var $i674: i64; + var $i675: i32; + var $i676: i32; + var $i677: i32; + var $i678: i1; + var $i680: i1; + var $i681: i1; + var $i683: i32; + var $i682: i32; + var $i679: i32; + var $i684: i64; + var $i685: i64; + var $i686: i32; + var $i687: i32; + var $i688: i64; + var $i689: i64; + var $i690: i32; + var $i691: i32; + var $i692: i32; + var $i693: i1; + var $i695: i1; + var $i696: i1; + var $i698: i32; + var $i697: i32; + var $i694: i32; + var $i699: i64; + var $i700: i64; + var $i701: i32; + var $i702: i32; + var $i703: i64; + var $i704: i64; + var $i705: i32; + var $i706: i32; + var $i707: i32; + var $i708: i1; + var $i710: i1; + var $i711: i1; + var $i713: i32; + var $i712: i32; + var $i709: i32; + var $i714: i64; + var $i715: i64; + var $i716: i32; + var $i717: i32; + var $i718: i64; + var $i719: i64; + var $i720: i32; + var $i721: i32; + var $i722: i32; + var $i723: i1; + var $i725: i1; + var $i726: i1; + var $i728: i32; + var $i727: i32; + var $i724: i32; + var $i729: i64; + var $i730: i64; + var $i731: i32; + var $i732: i32; + var $i733: i64; + var $i734: i64; + var $i735: i32; + var $i736: i32; + var $i737: i32; + var $i738: i1; + var $i740: i1; + var $i741: i1; + var $i743: i32; + var $i742: i32; + var $i739: i32; + var $i744: i64; + var $i745: i64; + var $i746: i32; + var $i747: i32; + var $i748: i64; + var $i749: i64; + var $i750: i32; + var $i751: i32; + var $i752: i32; + var $i753: i1; + var $i755: i1; + var $i756: i1; + var $i758: i32; + var $i757: i32; + var $i754: i32; + var $i759: i64; + var $i760: i64; + var $i761: i32; + var $i762: i32; + var $i763: i64; + var $i764: i64; + var $i765: i32; + var $i766: i32; + var $i767: i32; + var $i768: i1; + var $i770: i1; + var $i771: i1; + var $i773: i32; + var $i772: i32; + var $i769: i32; + var $i774: i64; + var $i775: i64; + var $i776: i32; + var $i777: i32; + var $i778: i64; + var $i779: i64; + var $i780: i32; + var $i781: i32; + var $i782: i32; + var $i783: i1; + var $i785: i1; + var $i786: i1; + var $i788: i32; + var $i787: i32; + var $i784: i32; + var $i789: i64; + var $i790: i64; + var $i791: i32; + var $i792: i32; + var $i793: i64; + var $i794: i64; + var $i795: i32; + var $i796: i32; + var $i797: i32; + var $i798: i1; + var $i800: i1; + var $i801: i1; + var $i803: i32; + var $i802: i32; + var $i799: i32; + var $i804: i64; + var $i805: i64; + var $i806: i32; + var $i807: i32; + var $i808: i64; + var $i809: i64; + var $i810: i32; + var $i811: i32; + var $i812: i32; + var $i813: i1; + var $i815: i1; + var $i816: i1; + var $i818: i32; + var $i817: i32; + var $i814: i32; + var $i819: i64; + var $i820: i64; + var $i821: i32; + var $i822: i32; + var $i823: i64; + var $i824: i64; + var $i825: i32; + var $i826: i32; + var $i827: i32; + var $i828: i1; + var $i830: i1; + var $i831: i1; + var $i833: i32; + var $i832: i32; + var $i829: i32; + var $i834: i64; + var $i835: i64; + var $i836: i32; + var $i837: i32; + var $i838: i64; + var $i839: i64; + var $i840: i32; + var $i841: i32; + var $i842: i32; + var $i843: i1; + var $i845: i1; + var $i846: i1; + var $i848: i32; + var $i847: i32; + var $i844: i32; + var $i849: i64; + var $i850: i64; + var $i851: i32; + var $i852: i32; + var $i853: i64; + var $i854: i64; + var $i855: i32; + var $i856: i32; + var $i857: i32; + var $i858: i1; + var $i860: i1; + var $i861: i1; + var $i863: i32; + var $i862: i32; + var $i859: i32; + var $i864: i64; + var $i865: i64; + var $i866: i32; + var $i867: i32; + var $i868: i64; + var $i869: i64; + var $i870: i32; + var $i871: i32; + var $i872: i32; + var $i873: i1; + var $i875: i1; + var $i876: i1; + var $i878: i32; + var $i877: i32; + var $i874: i32; + var $i879: i64; + var $i880: i64; + var $i881: i32; + var $i882: i32; + var $i883: i64; + var $i884: i64; + var $i885: i32; + var $i886: i32; + var $i887: i32; + var $i888: i1; + var $i890: i1; + var $i891: i1; + var $i893: i32; + var $i892: i32; + var $i889: i32; + var $i894: i64; + var $i895: i64; + var $i896: i32; + var $i897: i32; + var $i898: i64; + var $i899: i64; + var $i900: i32; + var $i901: i32; + var $i902: i32; + var $i903: i1; + var $i905: i1; + var $i906: i1; + var $i908: i32; + var $i907: i32; + var $i904: i32; + var $i909: i64; + var $i910: i64; + var $i911: i32; + var $i912: i32; + var $i913: i64; + var $i914: i64; + var $i915: i32; + var $i916: i32; + var $i917: i32; + var $i918: i1; + var $i920: i1; + var $i921: i1; + var $i923: i32; + var $i922: i32; + var $i919: i32; + var $i924: i64; + var $i925: i64; + var $i926: i32; + var $i927: i32; + var $i928: i64; + var $i929: i64; + var $i930: i32; + var $i931: i32; + var $i932: i32; + var $i933: i1; + var $i935: i1; + var $i936: i1; + var $i938: i32; + var $i937: i32; + var $i934: i32; + var $i939: i64; + var $i940: i64; + var $i941: i32; + var $i942: i32; + var $i943: i64; + var $i944: i64; + var $i945: i32; + var $i946: i32; + var $i947: i32; + var $i948: i1; + var $i950: i1; + var $i951: i1; + var $i953: i32; + var $i952: i32; + var $i949: i32; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 60, 5} true; + assume {:verifier.code 0} true; + call {:cexpr "__SMACK_and32:arg:a"} boogie_si_record_i32($i0); + call {:cexpr "__SMACK_and32:arg:b"} boogie_si_record_i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 60, 5} true; + assume {:verifier.code 0} true; + $i2 := $add.i32(0, 0); + call {:cexpr "c"} boogie_si_record_i32($i2); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 61, 9} true; + assume {:verifier.code 0} true; + $i3 := $slt.i32($i0, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 61, 7} true; + assume {:verifier.code 0} true; + $i4 := $i2; + assume {:branchcond $i3} true; + goto $bb1, $bb2; +$bb1: + assume ($i3 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 11} true; + assume {:verifier.code 0} true; + $i5 := $slt.i32($i1, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i5} true; + goto $bb4, $bb6; +$bb2: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 61, 7} true; + assume {:verifier.code 0} true; + assume !(($i3 == 1)); + goto $bb3; +$bb3: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 66, 7} true; + assume {:verifier.code 0} true; + $i9 := $sext.i32.i64($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 66, 9} true; + assume {:verifier.code 0} true; + $i10 := $srem.i64($i9, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 66, 7} true; + assume {:verifier.code 0} true; + $i11 := $trunc.i64.i32($i10); + call {:cexpr "a"} boogie_si_record_i32($i11); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 67, 5} true; + assume {:verifier.code 0} true; + $i12 := $add.i32($i11, $i11); + call {:cexpr "a"} boogie_si_record_i32($i12); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 68, 7} true; + assume {:verifier.code 0} true; + $i13 := $sext.i32.i64($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 68, 9} true; + assume {:verifier.code 0} true; + $i14 := $srem.i64($i13, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 68, 7} true; + assume {:verifier.code 0} true; + $i15 := $trunc.i64.i32($i14); + call {:cexpr "b"} boogie_si_record_i32($i15); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 69, 5} true; + assume {:verifier.code 0} true; + $i16 := $add.i32($i15, $i15); + call {:cexpr "b"} boogie_si_record_i32($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 71, 5} true; + assume {:verifier.code 0} true; + $i17 := $add.i32($i4, $i4); + call {:cexpr "c"} boogie_si_record_i32($i17); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 72, 9} true; + assume {:verifier.code 0} true; + $i18 := $slt.i32($i12, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 72, 7} true; + assume {:verifier.code 0} true; + $i19 := $i17; + assume {:branchcond $i18} true; + goto $bb10, $bb11; +$bb4: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 15} true; + assume {:verifier.code 0} true; + assume ($i5 == 1); + goto $bb5; +$bb5: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 63, 9} true; + assume {:verifier.code 0} true; + $i8 := $add.i32($i2, 1); + call {:cexpr "c"} boogie_si_record_i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 64, 5} true; + assume {:verifier.code 0} true; + $i7 := $i8; + goto $bb9; +$bb6: + assume !(($i5 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 20} true; + assume {:verifier.code 0} true; + $i6 := $sgt.i32($i1, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 9} true; + assume {:verifier.code 0} true; + $i7 := $i2; + assume {:branchcond $i6} true; + goto $bb7, $bb8; +$bb7: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 9} true; + assume {:verifier.code 0} true; + assume ($i6 == 1); + goto $bb5; +$bb8: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 9} true; + assume {:verifier.code 0} true; + assume !(($i6 == 1)); + goto $bb9; +$bb9: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 65, 3} true; + assume {:verifier.code 0} true; + $i4 := $i7; + goto $bb3; +$bb10: + assume ($i18 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 11} true; + assume {:verifier.code 0} true; + $i20 := $slt.i32($i16, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i20} true; + goto $bb13, $bb15; +$bb11: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 72, 7} true; + assume {:verifier.code 0} true; + assume !(($i18 == 1)); + goto $bb12; +$bb12: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 77, 7} true; + assume {:verifier.code 0} true; + $i24 := $sext.i32.i64($i12); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 77, 9} true; + assume {:verifier.code 0} true; + $i25 := $srem.i64($i24, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 77, 7} true; + assume {:verifier.code 0} true; + $i26 := $trunc.i64.i32($i25); + call {:cexpr "a"} boogie_si_record_i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 78, 5} true; + assume {:verifier.code 0} true; + $i27 := $add.i32($i26, $i26); + call {:cexpr "a"} boogie_si_record_i32($i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 79, 7} true; + assume {:verifier.code 0} true; + $i28 := $sext.i32.i64($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 79, 9} true; + assume {:verifier.code 0} true; + $i29 := $srem.i64($i28, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 79, 7} true; + assume {:verifier.code 0} true; + $i30 := $trunc.i64.i32($i29); + call {:cexpr "b"} boogie_si_record_i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 80, 5} true; + assume {:verifier.code 0} true; + $i31 := $add.i32($i30, $i30); + call {:cexpr "b"} boogie_si_record_i32($i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 82, 5} true; + assume {:verifier.code 0} true; + $i32 := $add.i32($i19, $i19); + call {:cexpr "c"} boogie_si_record_i32($i32); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 83, 9} true; + assume {:verifier.code 0} true; + $i33 := $slt.i32($i27, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 83, 7} true; + assume {:verifier.code 0} true; + $i34 := $i32; + assume {:branchcond $i33} true; + goto $bb19, $bb20; +$bb13: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 15} true; + assume {:verifier.code 0} true; + assume ($i20 == 1); + goto $bb14; +$bb14: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 74, 9} true; + assume {:verifier.code 0} true; + $i23 := $add.i32($i17, 1); + call {:cexpr "c"} boogie_si_record_i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 75, 5} true; + assume {:verifier.code 0} true; + $i22 := $i23; + goto $bb18; +$bb15: + assume !(($i20 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 20} true; + assume {:verifier.code 0} true; + $i21 := $sgt.i32($i16, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 9} true; + assume {:verifier.code 0} true; + $i22 := $i17; + assume {:branchcond $i21} true; + goto $bb16, $bb17; +$bb16: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 9} true; + assume {:verifier.code 0} true; + assume ($i21 == 1); + goto $bb14; +$bb17: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 9} true; + assume {:verifier.code 0} true; + assume !(($i21 == 1)); + goto $bb18; +$bb18: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 76, 3} true; + assume {:verifier.code 0} true; + $i19 := $i22; + goto $bb12; +$bb19: + assume ($i33 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 11} true; + assume {:verifier.code 0} true; + $i35 := $slt.i32($i31, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i35} true; + goto $bb22, $bb24; +$bb20: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 83, 7} true; + assume {:verifier.code 0} true; + assume !(($i33 == 1)); + goto $bb21; +$bb21: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 88, 7} true; + assume {:verifier.code 0} true; + $i39 := $sext.i32.i64($i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 88, 9} true; + assume {:verifier.code 0} true; + $i40 := $srem.i64($i39, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 88, 7} true; + assume {:verifier.code 0} true; + $i41 := $trunc.i64.i32($i40); + call {:cexpr "a"} boogie_si_record_i32($i41); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 89, 5} true; + assume {:verifier.code 0} true; + $i42 := $add.i32($i41, $i41); + call {:cexpr "a"} boogie_si_record_i32($i42); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 90, 7} true; + assume {:verifier.code 0} true; + $i43 := $sext.i32.i64($i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 90, 9} true; + assume {:verifier.code 0} true; + $i44 := $srem.i64($i43, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 90, 7} true; + assume {:verifier.code 0} true; + $i45 := $trunc.i64.i32($i44); + call {:cexpr "b"} boogie_si_record_i32($i45); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 91, 5} true; + assume {:verifier.code 0} true; + $i46 := $add.i32($i45, $i45); + call {:cexpr "b"} boogie_si_record_i32($i46); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 93, 5} true; + assume {:verifier.code 0} true; + $i47 := $add.i32($i34, $i34); + call {:cexpr "c"} boogie_si_record_i32($i47); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 94, 9} true; + assume {:verifier.code 0} true; + $i48 := $slt.i32($i42, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 94, 7} true; + assume {:verifier.code 0} true; + $i49 := $i47; + assume {:branchcond $i48} true; + goto $bb28, $bb29; +$bb22: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 15} true; + assume {:verifier.code 0} true; + assume ($i35 == 1); + goto $bb23; +$bb23: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 85, 9} true; + assume {:verifier.code 0} true; + $i38 := $add.i32($i32, 1); + call {:cexpr "c"} boogie_si_record_i32($i38); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 86, 5} true; + assume {:verifier.code 0} true; + $i37 := $i38; + goto $bb27; +$bb24: + assume !(($i35 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 20} true; + assume {:verifier.code 0} true; + $i36 := $sgt.i32($i31, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 9} true; + assume {:verifier.code 0} true; + $i37 := $i32; + assume {:branchcond $i36} true; + goto $bb25, $bb26; +$bb25: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 9} true; + assume {:verifier.code 0} true; + assume ($i36 == 1); + goto $bb23; +$bb26: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 9} true; + assume {:verifier.code 0} true; + assume !(($i36 == 1)); + goto $bb27; +$bb27: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 87, 3} true; + assume {:verifier.code 0} true; + $i34 := $i37; + goto $bb21; +$bb28: + assume ($i48 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 11} true; + assume {:verifier.code 0} true; + $i50 := $slt.i32($i46, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i50} true; + goto $bb31, $bb33; +$bb29: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 94, 7} true; + assume {:verifier.code 0} true; + assume !(($i48 == 1)); + goto $bb30; +$bb30: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 99, 7} true; + assume {:verifier.code 0} true; + $i54 := $sext.i32.i64($i42); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 99, 9} true; + assume {:verifier.code 0} true; + $i55 := $srem.i64($i54, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 99, 7} true; + assume {:verifier.code 0} true; + $i56 := $trunc.i64.i32($i55); + call {:cexpr "a"} boogie_si_record_i32($i56); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 100, 5} true; + assume {:verifier.code 0} true; + $i57 := $add.i32($i56, $i56); + call {:cexpr "a"} boogie_si_record_i32($i57); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 101, 7} true; + assume {:verifier.code 0} true; + $i58 := $sext.i32.i64($i46); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 101, 9} true; + assume {:verifier.code 0} true; + $i59 := $srem.i64($i58, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 101, 7} true; + assume {:verifier.code 0} true; + $i60 := $trunc.i64.i32($i59); + call {:cexpr "b"} boogie_si_record_i32($i60); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 102, 5} true; + assume {:verifier.code 0} true; + $i61 := $add.i32($i60, $i60); + call {:cexpr "b"} boogie_si_record_i32($i61); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 104, 5} true; + assume {:verifier.code 0} true; + $i62 := $add.i32($i49, $i49); + call {:cexpr "c"} boogie_si_record_i32($i62); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 105, 9} true; + assume {:verifier.code 0} true; + $i63 := $slt.i32($i57, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 105, 7} true; + assume {:verifier.code 0} true; + $i64 := $i62; + assume {:branchcond $i63} true; + goto $bb37, $bb38; +$bb31: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 15} true; + assume {:verifier.code 0} true; + assume ($i50 == 1); + goto $bb32; +$bb32: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 96, 9} true; + assume {:verifier.code 0} true; + $i53 := $add.i32($i47, 1); + call {:cexpr "c"} boogie_si_record_i32($i53); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 97, 5} true; + assume {:verifier.code 0} true; + $i52 := $i53; + goto $bb36; +$bb33: + assume !(($i50 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 20} true; + assume {:verifier.code 0} true; + $i51 := $sgt.i32($i46, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 9} true; + assume {:verifier.code 0} true; + $i52 := $i47; + assume {:branchcond $i51} true; + goto $bb34, $bb35; +$bb34: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 9} true; + assume {:verifier.code 0} true; + assume ($i51 == 1); + goto $bb32; +$bb35: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 9} true; + assume {:verifier.code 0} true; + assume !(($i51 == 1)); + goto $bb36; +$bb36: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 98, 3} true; + assume {:verifier.code 0} true; + $i49 := $i52; + goto $bb30; +$bb37: + assume ($i63 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 11} true; + assume {:verifier.code 0} true; + $i65 := $slt.i32($i61, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i65} true; + goto $bb40, $bb42; +$bb38: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 105, 7} true; + assume {:verifier.code 0} true; + assume !(($i63 == 1)); + goto $bb39; +$bb39: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 110, 7} true; + assume {:verifier.code 0} true; + $i69 := $sext.i32.i64($i57); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 110, 9} true; + assume {:verifier.code 0} true; + $i70 := $srem.i64($i69, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 110, 7} true; + assume {:verifier.code 0} true; + $i71 := $trunc.i64.i32($i70); + call {:cexpr "a"} boogie_si_record_i32($i71); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 111, 5} true; + assume {:verifier.code 0} true; + $i72 := $add.i32($i71, $i71); + call {:cexpr "a"} boogie_si_record_i32($i72); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 112, 7} true; + assume {:verifier.code 0} true; + $i73 := $sext.i32.i64($i61); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 112, 9} true; + assume {:verifier.code 0} true; + $i74 := $srem.i64($i73, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 112, 7} true; + assume {:verifier.code 0} true; + $i75 := $trunc.i64.i32($i74); + call {:cexpr "b"} boogie_si_record_i32($i75); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 113, 5} true; + assume {:verifier.code 0} true; + $i76 := $add.i32($i75, $i75); + call {:cexpr "b"} boogie_si_record_i32($i76); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 115, 5} true; + assume {:verifier.code 0} true; + $i77 := $add.i32($i64, $i64); + call {:cexpr "c"} boogie_si_record_i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 116, 9} true; + assume {:verifier.code 0} true; + $i78 := $slt.i32($i72, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 116, 7} true; + assume {:verifier.code 0} true; + $i79 := $i77; + assume {:branchcond $i78} true; + goto $bb46, $bb47; +$bb40: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 15} true; + assume {:verifier.code 0} true; + assume ($i65 == 1); + goto $bb41; +$bb41: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 107, 9} true; + assume {:verifier.code 0} true; + $i68 := $add.i32($i62, 1); + call {:cexpr "c"} boogie_si_record_i32($i68); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 108, 5} true; + assume {:verifier.code 0} true; + $i67 := $i68; + goto $bb45; +$bb42: + assume !(($i65 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 20} true; + assume {:verifier.code 0} true; + $i66 := $sgt.i32($i61, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 9} true; + assume {:verifier.code 0} true; + $i67 := $i62; + assume {:branchcond $i66} true; + goto $bb43, $bb44; +$bb43: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 9} true; + assume {:verifier.code 0} true; + assume ($i66 == 1); + goto $bb41; +$bb44: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 9} true; + assume {:verifier.code 0} true; + assume !(($i66 == 1)); + goto $bb45; +$bb45: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 109, 3} true; + assume {:verifier.code 0} true; + $i64 := $i67; + goto $bb39; +$bb46: + assume ($i78 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 11} true; + assume {:verifier.code 0} true; + $i80 := $slt.i32($i76, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i80} true; + goto $bb49, $bb51; +$bb47: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 116, 7} true; + assume {:verifier.code 0} true; + assume !(($i78 == 1)); + goto $bb48; +$bb48: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 121, 7} true; + assume {:verifier.code 0} true; + $i84 := $sext.i32.i64($i72); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 121, 9} true; + assume {:verifier.code 0} true; + $i85 := $srem.i64($i84, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 121, 7} true; + assume {:verifier.code 0} true; + $i86 := $trunc.i64.i32($i85); + call {:cexpr "a"} boogie_si_record_i32($i86); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 122, 5} true; + assume {:verifier.code 0} true; + $i87 := $add.i32($i86, $i86); + call {:cexpr "a"} boogie_si_record_i32($i87); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 123, 7} true; + assume {:verifier.code 0} true; + $i88 := $sext.i32.i64($i76); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 123, 9} true; + assume {:verifier.code 0} true; + $i89 := $srem.i64($i88, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 123, 7} true; + assume {:verifier.code 0} true; + $i90 := $trunc.i64.i32($i89); + call {:cexpr "b"} boogie_si_record_i32($i90); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 124, 5} true; + assume {:verifier.code 0} true; + $i91 := $add.i32($i90, $i90); + call {:cexpr "b"} boogie_si_record_i32($i91); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 126, 5} true; + assume {:verifier.code 0} true; + $i92 := $add.i32($i79, $i79); + call {:cexpr "c"} boogie_si_record_i32($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 127, 9} true; + assume {:verifier.code 0} true; + $i93 := $slt.i32($i87, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 127, 7} true; + assume {:verifier.code 0} true; + $i94 := $i92; + assume {:branchcond $i93} true; + goto $bb55, $bb56; +$bb49: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 15} true; + assume {:verifier.code 0} true; + assume ($i80 == 1); + goto $bb50; +$bb50: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 118, 9} true; + assume {:verifier.code 0} true; + $i83 := $add.i32($i77, 1); + call {:cexpr "c"} boogie_si_record_i32($i83); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 119, 5} true; + assume {:verifier.code 0} true; + $i82 := $i83; + goto $bb54; +$bb51: + assume !(($i80 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 20} true; + assume {:verifier.code 0} true; + $i81 := $sgt.i32($i76, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 9} true; + assume {:verifier.code 0} true; + $i82 := $i77; + assume {:branchcond $i81} true; + goto $bb52, $bb53; +$bb52: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 9} true; + assume {:verifier.code 0} true; + assume ($i81 == 1); + goto $bb50; +$bb53: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 9} true; + assume {:verifier.code 0} true; + assume !(($i81 == 1)); + goto $bb54; +$bb54: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 120, 3} true; + assume {:verifier.code 0} true; + $i79 := $i82; + goto $bb48; +$bb55: + assume ($i93 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 11} true; + assume {:verifier.code 0} true; + $i95 := $slt.i32($i91, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i95} true; + goto $bb58, $bb60; +$bb56: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 127, 7} true; + assume {:verifier.code 0} true; + assume !(($i93 == 1)); + goto $bb57; +$bb57: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 132, 7} true; + assume {:verifier.code 0} true; + $i99 := $sext.i32.i64($i87); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 132, 9} true; + assume {:verifier.code 0} true; + $i100 := $srem.i64($i99, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 132, 7} true; + assume {:verifier.code 0} true; + $i101 := $trunc.i64.i32($i100); + call {:cexpr "a"} boogie_si_record_i32($i101); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 133, 5} true; + assume {:verifier.code 0} true; + $i102 := $add.i32($i101, $i101); + call {:cexpr "a"} boogie_si_record_i32($i102); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 134, 7} true; + assume {:verifier.code 0} true; + $i103 := $sext.i32.i64($i91); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 134, 9} true; + assume {:verifier.code 0} true; + $i104 := $srem.i64($i103, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 134, 7} true; + assume {:verifier.code 0} true; + $i105 := $trunc.i64.i32($i104); + call {:cexpr "b"} boogie_si_record_i32($i105); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 135, 5} true; + assume {:verifier.code 0} true; + $i106 := $add.i32($i105, $i105); + call {:cexpr "b"} boogie_si_record_i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 137, 5} true; + assume {:verifier.code 0} true; + $i107 := $add.i32($i94, $i94); + call {:cexpr "c"} boogie_si_record_i32($i107); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 138, 9} true; + assume {:verifier.code 0} true; + $i108 := $slt.i32($i102, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 138, 7} true; + assume {:verifier.code 0} true; + $i109 := $i107; + assume {:branchcond $i108} true; + goto $bb64, $bb65; +$bb58: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 15} true; + assume {:verifier.code 0} true; + assume ($i95 == 1); + goto $bb59; +$bb59: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 129, 9} true; + assume {:verifier.code 0} true; + $i98 := $add.i32($i92, 1); + call {:cexpr "c"} boogie_si_record_i32($i98); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 130, 5} true; + assume {:verifier.code 0} true; + $i97 := $i98; + goto $bb63; +$bb60: + assume !(($i95 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 20} true; + assume {:verifier.code 0} true; + $i96 := $sgt.i32($i91, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 9} true; + assume {:verifier.code 0} true; + $i97 := $i92; + assume {:branchcond $i96} true; + goto $bb61, $bb62; +$bb61: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 9} true; + assume {:verifier.code 0} true; + assume ($i96 == 1); + goto $bb59; +$bb62: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 9} true; + assume {:verifier.code 0} true; + assume !(($i96 == 1)); + goto $bb63; +$bb63: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 131, 3} true; + assume {:verifier.code 0} true; + $i94 := $i97; + goto $bb57; +$bb64: + assume ($i108 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 11} true; + assume {:verifier.code 0} true; + $i110 := $slt.i32($i106, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i110} true; + goto $bb67, $bb69; +$bb65: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 138, 7} true; + assume {:verifier.code 0} true; + assume !(($i108 == 1)); + goto $bb66; +$bb66: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 143, 7} true; + assume {:verifier.code 0} true; + $i114 := $sext.i32.i64($i102); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 143, 9} true; + assume {:verifier.code 0} true; + $i115 := $srem.i64($i114, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 143, 7} true; + assume {:verifier.code 0} true; + $i116 := $trunc.i64.i32($i115); + call {:cexpr "a"} boogie_si_record_i32($i116); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 144, 5} true; + assume {:verifier.code 0} true; + $i117 := $add.i32($i116, $i116); + call {:cexpr "a"} boogie_si_record_i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 145, 7} true; + assume {:verifier.code 0} true; + $i118 := $sext.i32.i64($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 145, 9} true; + assume {:verifier.code 0} true; + $i119 := $srem.i64($i118, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 145, 7} true; + assume {:verifier.code 0} true; + $i120 := $trunc.i64.i32($i119); + call {:cexpr "b"} boogie_si_record_i32($i120); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 146, 5} true; + assume {:verifier.code 0} true; + $i121 := $add.i32($i120, $i120); + call {:cexpr "b"} boogie_si_record_i32($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 148, 5} true; + assume {:verifier.code 0} true; + $i122 := $add.i32($i109, $i109); + call {:cexpr "c"} boogie_si_record_i32($i122); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 149, 9} true; + assume {:verifier.code 0} true; + $i123 := $slt.i32($i117, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 149, 7} true; + assume {:verifier.code 0} true; + $i124 := $i122; + assume {:branchcond $i123} true; + goto $bb73, $bb74; +$bb67: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 15} true; + assume {:verifier.code 0} true; + assume ($i110 == 1); + goto $bb68; +$bb68: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 140, 9} true; + assume {:verifier.code 0} true; + $i113 := $add.i32($i107, 1); + call {:cexpr "c"} boogie_si_record_i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 141, 5} true; + assume {:verifier.code 0} true; + $i112 := $i113; + goto $bb72; +$bb69: + assume !(($i110 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 20} true; + assume {:verifier.code 0} true; + $i111 := $sgt.i32($i106, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 9} true; + assume {:verifier.code 0} true; + $i112 := $i107; + assume {:branchcond $i111} true; + goto $bb70, $bb71; +$bb70: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 9} true; + assume {:verifier.code 0} true; + assume ($i111 == 1); + goto $bb68; +$bb71: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 9} true; + assume {:verifier.code 0} true; + assume !(($i111 == 1)); + goto $bb72; +$bb72: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 142, 3} true; + assume {:verifier.code 0} true; + $i109 := $i112; + goto $bb66; +$bb73: + assume ($i123 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 11} true; + assume {:verifier.code 0} true; + $i125 := $slt.i32($i121, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i125} true; + goto $bb76, $bb78; +$bb74: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 149, 7} true; + assume {:verifier.code 0} true; + assume !(($i123 == 1)); + goto $bb75; +$bb75: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 154, 7} true; + assume {:verifier.code 0} true; + $i129 := $sext.i32.i64($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 154, 9} true; + assume {:verifier.code 0} true; + $i130 := $srem.i64($i129, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 154, 7} true; + assume {:verifier.code 0} true; + $i131 := $trunc.i64.i32($i130); + call {:cexpr "a"} boogie_si_record_i32($i131); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 155, 5} true; + assume {:verifier.code 0} true; + $i132 := $add.i32($i131, $i131); + call {:cexpr "a"} boogie_si_record_i32($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 156, 7} true; + assume {:verifier.code 0} true; + $i133 := $sext.i32.i64($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 156, 9} true; + assume {:verifier.code 0} true; + $i134 := $srem.i64($i133, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 156, 7} true; + assume {:verifier.code 0} true; + $i135 := $trunc.i64.i32($i134); + call {:cexpr "b"} boogie_si_record_i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 157, 5} true; + assume {:verifier.code 0} true; + $i136 := $add.i32($i135, $i135); + call {:cexpr "b"} boogie_si_record_i32($i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 159, 5} true; + assume {:verifier.code 0} true; + $i137 := $add.i32($i124, $i124); + call {:cexpr "c"} boogie_si_record_i32($i137); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 160, 9} true; + assume {:verifier.code 0} true; + $i138 := $slt.i32($i132, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 160, 7} true; + assume {:verifier.code 0} true; + $i139 := $i137; + assume {:branchcond $i138} true; + goto $bb82, $bb83; +$bb76: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 15} true; + assume {:verifier.code 0} true; + assume ($i125 == 1); + goto $bb77; +$bb77: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 151, 9} true; + assume {:verifier.code 0} true; + $i128 := $add.i32($i122, 1); + call {:cexpr "c"} boogie_si_record_i32($i128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 152, 5} true; + assume {:verifier.code 0} true; + $i127 := $i128; + goto $bb81; +$bb78: + assume !(($i125 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 20} true; + assume {:verifier.code 0} true; + $i126 := $sgt.i32($i121, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 9} true; + assume {:verifier.code 0} true; + $i127 := $i122; + assume {:branchcond $i126} true; + goto $bb79, $bb80; +$bb79: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 9} true; + assume {:verifier.code 0} true; + assume ($i126 == 1); + goto $bb77; +$bb80: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 9} true; + assume {:verifier.code 0} true; + assume !(($i126 == 1)); + goto $bb81; +$bb81: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 153, 3} true; + assume {:verifier.code 0} true; + $i124 := $i127; + goto $bb75; +$bb82: + assume ($i138 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 11} true; + assume {:verifier.code 0} true; + $i140 := $slt.i32($i136, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i140} true; + goto $bb85, $bb87; +$bb83: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 160, 7} true; + assume {:verifier.code 0} true; + assume !(($i138 == 1)); + goto $bb84; +$bb84: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 165, 7} true; + assume {:verifier.code 0} true; + $i144 := $sext.i32.i64($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 165, 9} true; + assume {:verifier.code 0} true; + $i145 := $srem.i64($i144, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 165, 7} true; + assume {:verifier.code 0} true; + $i146 := $trunc.i64.i32($i145); + call {:cexpr "a"} boogie_si_record_i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 166, 5} true; + assume {:verifier.code 0} true; + $i147 := $add.i32($i146, $i146); + call {:cexpr "a"} boogie_si_record_i32($i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 167, 7} true; + assume {:verifier.code 0} true; + $i148 := $sext.i32.i64($i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 167, 9} true; + assume {:verifier.code 0} true; + $i149 := $srem.i64($i148, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 167, 7} true; + assume {:verifier.code 0} true; + $i150 := $trunc.i64.i32($i149); + call {:cexpr "b"} boogie_si_record_i32($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 168, 5} true; + assume {:verifier.code 0} true; + $i151 := $add.i32($i150, $i150); + call {:cexpr "b"} boogie_si_record_i32($i151); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 170, 5} true; + assume {:verifier.code 0} true; + $i152 := $add.i32($i139, $i139); + call {:cexpr "c"} boogie_si_record_i32($i152); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 171, 9} true; + assume {:verifier.code 0} true; + $i153 := $slt.i32($i147, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 171, 7} true; + assume {:verifier.code 0} true; + $i154 := $i152; + assume {:branchcond $i153} true; + goto $bb91, $bb92; +$bb85: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 15} true; + assume {:verifier.code 0} true; + assume ($i140 == 1); + goto $bb86; +$bb86: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 162, 9} true; + assume {:verifier.code 0} true; + $i143 := $add.i32($i137, 1); + call {:cexpr "c"} boogie_si_record_i32($i143); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 163, 5} true; + assume {:verifier.code 0} true; + $i142 := $i143; + goto $bb90; +$bb87: + assume !(($i140 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 20} true; + assume {:verifier.code 0} true; + $i141 := $sgt.i32($i136, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 9} true; + assume {:verifier.code 0} true; + $i142 := $i137; + assume {:branchcond $i141} true; + goto $bb88, $bb89; +$bb88: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 9} true; + assume {:verifier.code 0} true; + assume ($i141 == 1); + goto $bb86; +$bb89: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 9} true; + assume {:verifier.code 0} true; + assume !(($i141 == 1)); + goto $bb90; +$bb90: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 164, 3} true; + assume {:verifier.code 0} true; + $i139 := $i142; + goto $bb84; +$bb91: + assume ($i153 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 11} true; + assume {:verifier.code 0} true; + $i155 := $slt.i32($i151, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i155} true; + goto $bb94, $bb96; +$bb92: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 171, 7} true; + assume {:verifier.code 0} true; + assume !(($i153 == 1)); + goto $bb93; +$bb93: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 176, 7} true; + assume {:verifier.code 0} true; + $i159 := $sext.i32.i64($i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 176, 9} true; + assume {:verifier.code 0} true; + $i160 := $srem.i64($i159, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 176, 7} true; + assume {:verifier.code 0} true; + $i161 := $trunc.i64.i32($i160); + call {:cexpr "a"} boogie_si_record_i32($i161); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 177, 5} true; + assume {:verifier.code 0} true; + $i162 := $add.i32($i161, $i161); + call {:cexpr "a"} boogie_si_record_i32($i162); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 178, 7} true; + assume {:verifier.code 0} true; + $i163 := $sext.i32.i64($i151); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 178, 9} true; + assume {:verifier.code 0} true; + $i164 := $srem.i64($i163, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 178, 7} true; + assume {:verifier.code 0} true; + $i165 := $trunc.i64.i32($i164); + call {:cexpr "b"} boogie_si_record_i32($i165); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 179, 5} true; + assume {:verifier.code 0} true; + $i166 := $add.i32($i165, $i165); + call {:cexpr "b"} boogie_si_record_i32($i166); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 181, 5} true; + assume {:verifier.code 0} true; + $i167 := $add.i32($i154, $i154); + call {:cexpr "c"} boogie_si_record_i32($i167); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 182, 9} true; + assume {:verifier.code 0} true; + $i168 := $slt.i32($i162, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 182, 7} true; + assume {:verifier.code 0} true; + $i169 := $i167; + assume {:branchcond $i168} true; + goto $bb100, $bb101; +$bb94: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 15} true; + assume {:verifier.code 0} true; + assume ($i155 == 1); + goto $bb95; +$bb95: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 173, 9} true; + assume {:verifier.code 0} true; + $i158 := $add.i32($i152, 1); + call {:cexpr "c"} boogie_si_record_i32($i158); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 174, 5} true; + assume {:verifier.code 0} true; + $i157 := $i158; + goto $bb99; +$bb96: + assume !(($i155 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 20} true; + assume {:verifier.code 0} true; + $i156 := $sgt.i32($i151, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 9} true; + assume {:verifier.code 0} true; + $i157 := $i152; + assume {:branchcond $i156} true; + goto $bb97, $bb98; +$bb97: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 9} true; + assume {:verifier.code 0} true; + assume ($i156 == 1); + goto $bb95; +$bb98: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 9} true; + assume {:verifier.code 0} true; + assume !(($i156 == 1)); + goto $bb99; +$bb99: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 175, 3} true; + assume {:verifier.code 0} true; + $i154 := $i157; + goto $bb93; +$bb100: + assume ($i168 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 11} true; + assume {:verifier.code 0} true; + $i170 := $slt.i32($i166, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i170} true; + goto $bb103, $bb105; +$bb101: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 182, 7} true; + assume {:verifier.code 0} true; + assume !(($i168 == 1)); + goto $bb102; +$bb102: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 187, 7} true; + assume {:verifier.code 0} true; + $i174 := $sext.i32.i64($i162); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 187, 9} true; + assume {:verifier.code 0} true; + $i175 := $srem.i64($i174, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 187, 7} true; + assume {:verifier.code 0} true; + $i176 := $trunc.i64.i32($i175); + call {:cexpr "a"} boogie_si_record_i32($i176); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 188, 5} true; + assume {:verifier.code 0} true; + $i177 := $add.i32($i176, $i176); + call {:cexpr "a"} boogie_si_record_i32($i177); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 189, 7} true; + assume {:verifier.code 0} true; + $i178 := $sext.i32.i64($i166); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 189, 9} true; + assume {:verifier.code 0} true; + $i179 := $srem.i64($i178, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 189, 7} true; + assume {:verifier.code 0} true; + $i180 := $trunc.i64.i32($i179); + call {:cexpr "b"} boogie_si_record_i32($i180); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 190, 5} true; + assume {:verifier.code 0} true; + $i181 := $add.i32($i180, $i180); + call {:cexpr "b"} boogie_si_record_i32($i181); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 192, 5} true; + assume {:verifier.code 0} true; + $i182 := $add.i32($i169, $i169); + call {:cexpr "c"} boogie_si_record_i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 193, 9} true; + assume {:verifier.code 0} true; + $i183 := $slt.i32($i177, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 193, 7} true; + assume {:verifier.code 0} true; + $i184 := $i182; + assume {:branchcond $i183} true; + goto $bb109, $bb110; +$bb103: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 15} true; + assume {:verifier.code 0} true; + assume ($i170 == 1); + goto $bb104; +$bb104: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 184, 9} true; + assume {:verifier.code 0} true; + $i173 := $add.i32($i167, 1); + call {:cexpr "c"} boogie_si_record_i32($i173); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 185, 5} true; + assume {:verifier.code 0} true; + $i172 := $i173; + goto $bb108; +$bb105: + assume !(($i170 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 20} true; + assume {:verifier.code 0} true; + $i171 := $sgt.i32($i166, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 9} true; + assume {:verifier.code 0} true; + $i172 := $i167; + assume {:branchcond $i171} true; + goto $bb106, $bb107; +$bb106: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 9} true; + assume {:verifier.code 0} true; + assume ($i171 == 1); + goto $bb104; +$bb107: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 9} true; + assume {:verifier.code 0} true; + assume !(($i171 == 1)); + goto $bb108; +$bb108: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 186, 3} true; + assume {:verifier.code 0} true; + $i169 := $i172; + goto $bb102; +$bb109: + assume ($i183 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 11} true; + assume {:verifier.code 0} true; + $i185 := $slt.i32($i181, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i185} true; + goto $bb112, $bb114; +$bb110: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 193, 7} true; + assume {:verifier.code 0} true; + assume !(($i183 == 1)); + goto $bb111; +$bb111: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 198, 7} true; + assume {:verifier.code 0} true; + $i189 := $sext.i32.i64($i177); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 198, 9} true; + assume {:verifier.code 0} true; + $i190 := $srem.i64($i189, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 198, 7} true; + assume {:verifier.code 0} true; + $i191 := $trunc.i64.i32($i190); + call {:cexpr "a"} boogie_si_record_i32($i191); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 199, 5} true; + assume {:verifier.code 0} true; + $i192 := $add.i32($i191, $i191); + call {:cexpr "a"} boogie_si_record_i32($i192); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 200, 7} true; + assume {:verifier.code 0} true; + $i193 := $sext.i32.i64($i181); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 200, 9} true; + assume {:verifier.code 0} true; + $i194 := $srem.i64($i193, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 200, 7} true; + assume {:verifier.code 0} true; + $i195 := $trunc.i64.i32($i194); + call {:cexpr "b"} boogie_si_record_i32($i195); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 201, 5} true; + assume {:verifier.code 0} true; + $i196 := $add.i32($i195, $i195); + call {:cexpr "b"} boogie_si_record_i32($i196); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 203, 5} true; + assume {:verifier.code 0} true; + $i197 := $add.i32($i184, $i184); + call {:cexpr "c"} boogie_si_record_i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 204, 9} true; + assume {:verifier.code 0} true; + $i198 := $slt.i32($i192, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 204, 7} true; + assume {:verifier.code 0} true; + $i199 := $i197; + assume {:branchcond $i198} true; + goto $bb118, $bb119; +$bb112: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 15} true; + assume {:verifier.code 0} true; + assume ($i185 == 1); + goto $bb113; +$bb113: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 195, 9} true; + assume {:verifier.code 0} true; + $i188 := $add.i32($i182, 1); + call {:cexpr "c"} boogie_si_record_i32($i188); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 196, 5} true; + assume {:verifier.code 0} true; + $i187 := $i188; + goto $bb117; +$bb114: + assume !(($i185 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 20} true; + assume {:verifier.code 0} true; + $i186 := $sgt.i32($i181, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 9} true; + assume {:verifier.code 0} true; + $i187 := $i182; + assume {:branchcond $i186} true; + goto $bb115, $bb116; +$bb115: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 9} true; + assume {:verifier.code 0} true; + assume ($i186 == 1); + goto $bb113; +$bb116: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 9} true; + assume {:verifier.code 0} true; + assume !(($i186 == 1)); + goto $bb117; +$bb117: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 197, 3} true; + assume {:verifier.code 0} true; + $i184 := $i187; + goto $bb111; +$bb118: + assume ($i198 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 11} true; + assume {:verifier.code 0} true; + $i200 := $slt.i32($i196, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i200} true; + goto $bb121, $bb123; +$bb119: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 204, 7} true; + assume {:verifier.code 0} true; + assume !(($i198 == 1)); + goto $bb120; +$bb120: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 209, 7} true; + assume {:verifier.code 0} true; + $i204 := $sext.i32.i64($i192); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 209, 9} true; + assume {:verifier.code 0} true; + $i205 := $srem.i64($i204, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 209, 7} true; + assume {:verifier.code 0} true; + $i206 := $trunc.i64.i32($i205); + call {:cexpr "a"} boogie_si_record_i32($i206); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 210, 5} true; + assume {:verifier.code 0} true; + $i207 := $add.i32($i206, $i206); + call {:cexpr "a"} boogie_si_record_i32($i207); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 211, 7} true; + assume {:verifier.code 0} true; + $i208 := $sext.i32.i64($i196); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 211, 9} true; + assume {:verifier.code 0} true; + $i209 := $srem.i64($i208, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 211, 7} true; + assume {:verifier.code 0} true; + $i210 := $trunc.i64.i32($i209); + call {:cexpr "b"} boogie_si_record_i32($i210); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 212, 5} true; + assume {:verifier.code 0} true; + $i211 := $add.i32($i210, $i210); + call {:cexpr "b"} boogie_si_record_i32($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 214, 5} true; + assume {:verifier.code 0} true; + $i212 := $add.i32($i199, $i199); + call {:cexpr "c"} boogie_si_record_i32($i212); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 215, 9} true; + assume {:verifier.code 0} true; + $i213 := $slt.i32($i207, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 215, 7} true; + assume {:verifier.code 0} true; + $i214 := $i212; + assume {:branchcond $i213} true; + goto $bb127, $bb128; +$bb121: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 15} true; + assume {:verifier.code 0} true; + assume ($i200 == 1); + goto $bb122; +$bb122: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 206, 9} true; + assume {:verifier.code 0} true; + $i203 := $add.i32($i197, 1); + call {:cexpr "c"} boogie_si_record_i32($i203); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 207, 5} true; + assume {:verifier.code 0} true; + $i202 := $i203; + goto $bb126; +$bb123: + assume !(($i200 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 20} true; + assume {:verifier.code 0} true; + $i201 := $sgt.i32($i196, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 9} true; + assume {:verifier.code 0} true; + $i202 := $i197; + assume {:branchcond $i201} true; + goto $bb124, $bb125; +$bb124: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 9} true; + assume {:verifier.code 0} true; + assume ($i201 == 1); + goto $bb122; +$bb125: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 9} true; + assume {:verifier.code 0} true; + assume !(($i201 == 1)); + goto $bb126; +$bb126: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 208, 3} true; + assume {:verifier.code 0} true; + $i199 := $i202; + goto $bb120; +$bb127: + assume ($i213 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 11} true; + assume {:verifier.code 0} true; + $i215 := $slt.i32($i211, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i215} true; + goto $bb130, $bb132; +$bb128: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 215, 7} true; + assume {:verifier.code 0} true; + assume !(($i213 == 1)); + goto $bb129; +$bb129: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 220, 7} true; + assume {:verifier.code 0} true; + $i219 := $sext.i32.i64($i207); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 220, 9} true; + assume {:verifier.code 0} true; + $i220 := $srem.i64($i219, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 220, 7} true; + assume {:verifier.code 0} true; + $i221 := $trunc.i64.i32($i220); + call {:cexpr "a"} boogie_si_record_i32($i221); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 221, 5} true; + assume {:verifier.code 0} true; + $i222 := $add.i32($i221, $i221); + call {:cexpr "a"} boogie_si_record_i32($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 222, 7} true; + assume {:verifier.code 0} true; + $i223 := $sext.i32.i64($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 222, 9} true; + assume {:verifier.code 0} true; + $i224 := $srem.i64($i223, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 222, 7} true; + assume {:verifier.code 0} true; + $i225 := $trunc.i64.i32($i224); + call {:cexpr "b"} boogie_si_record_i32($i225); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 223, 5} true; + assume {:verifier.code 0} true; + $i226 := $add.i32($i225, $i225); + call {:cexpr "b"} boogie_si_record_i32($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 225, 5} true; + assume {:verifier.code 0} true; + $i227 := $add.i32($i214, $i214); + call {:cexpr "c"} boogie_si_record_i32($i227); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 226, 9} true; + assume {:verifier.code 0} true; + $i228 := $slt.i32($i222, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 226, 7} true; + assume {:verifier.code 0} true; + $i229 := $i227; + assume {:branchcond $i228} true; + goto $bb136, $bb137; +$bb130: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 15} true; + assume {:verifier.code 0} true; + assume ($i215 == 1); + goto $bb131; +$bb131: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 217, 9} true; + assume {:verifier.code 0} true; + $i218 := $add.i32($i212, 1); + call {:cexpr "c"} boogie_si_record_i32($i218); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 218, 5} true; + assume {:verifier.code 0} true; + $i217 := $i218; + goto $bb135; +$bb132: + assume !(($i215 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 20} true; + assume {:verifier.code 0} true; + $i216 := $sgt.i32($i211, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 9} true; + assume {:verifier.code 0} true; + $i217 := $i212; + assume {:branchcond $i216} true; + goto $bb133, $bb134; +$bb133: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 9} true; + assume {:verifier.code 0} true; + assume ($i216 == 1); + goto $bb131; +$bb134: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 9} true; + assume {:verifier.code 0} true; + assume !(($i216 == 1)); + goto $bb135; +$bb135: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 219, 3} true; + assume {:verifier.code 0} true; + $i214 := $i217; + goto $bb129; +$bb136: + assume ($i228 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 11} true; + assume {:verifier.code 0} true; + $i230 := $slt.i32($i226, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i230} true; + goto $bb139, $bb141; +$bb137: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 226, 7} true; + assume {:verifier.code 0} true; + assume !(($i228 == 1)); + goto $bb138; +$bb138: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 231, 7} true; + assume {:verifier.code 0} true; + $i234 := $sext.i32.i64($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 231, 9} true; + assume {:verifier.code 0} true; + $i235 := $srem.i64($i234, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 231, 7} true; + assume {:verifier.code 0} true; + $i236 := $trunc.i64.i32($i235); + call {:cexpr "a"} boogie_si_record_i32($i236); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 232, 5} true; + assume {:verifier.code 0} true; + $i237 := $add.i32($i236, $i236); + call {:cexpr "a"} boogie_si_record_i32($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 233, 7} true; + assume {:verifier.code 0} true; + $i238 := $sext.i32.i64($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 233, 9} true; + assume {:verifier.code 0} true; + $i239 := $srem.i64($i238, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 233, 7} true; + assume {:verifier.code 0} true; + $i240 := $trunc.i64.i32($i239); + call {:cexpr "b"} boogie_si_record_i32($i240); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 234, 5} true; + assume {:verifier.code 0} true; + $i241 := $add.i32($i240, $i240); + call {:cexpr "b"} boogie_si_record_i32($i241); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 236, 5} true; + assume {:verifier.code 0} true; + $i242 := $add.i32($i229, $i229); + call {:cexpr "c"} boogie_si_record_i32($i242); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 237, 9} true; + assume {:verifier.code 0} true; + $i243 := $slt.i32($i237, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 237, 7} true; + assume {:verifier.code 0} true; + $i244 := $i242; + assume {:branchcond $i243} true; + goto $bb145, $bb146; +$bb139: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 15} true; + assume {:verifier.code 0} true; + assume ($i230 == 1); + goto $bb140; +$bb140: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 228, 9} true; + assume {:verifier.code 0} true; + $i233 := $add.i32($i227, 1); + call {:cexpr "c"} boogie_si_record_i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 229, 5} true; + assume {:verifier.code 0} true; + $i232 := $i233; + goto $bb144; +$bb141: + assume !(($i230 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 20} true; + assume {:verifier.code 0} true; + $i231 := $sgt.i32($i226, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 9} true; + assume {:verifier.code 0} true; + $i232 := $i227; + assume {:branchcond $i231} true; + goto $bb142, $bb143; +$bb142: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 9} true; + assume {:verifier.code 0} true; + assume ($i231 == 1); + goto $bb140; +$bb143: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 9} true; + assume {:verifier.code 0} true; + assume !(($i231 == 1)); + goto $bb144; +$bb144: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 230, 3} true; + assume {:verifier.code 0} true; + $i229 := $i232; + goto $bb138; +$bb145: + assume ($i243 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 11} true; + assume {:verifier.code 0} true; + $i245 := $slt.i32($i241, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i245} true; + goto $bb148, $bb150; +$bb146: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 237, 7} true; + assume {:verifier.code 0} true; + assume !(($i243 == 1)); + goto $bb147; +$bb147: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 242, 7} true; + assume {:verifier.code 0} true; + $i249 := $sext.i32.i64($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 242, 9} true; + assume {:verifier.code 0} true; + $i250 := $srem.i64($i249, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 242, 7} true; + assume {:verifier.code 0} true; + $i251 := $trunc.i64.i32($i250); + call {:cexpr "a"} boogie_si_record_i32($i251); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 243, 5} true; + assume {:verifier.code 0} true; + $i252 := $add.i32($i251, $i251); + call {:cexpr "a"} boogie_si_record_i32($i252); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 244, 7} true; + assume {:verifier.code 0} true; + $i253 := $sext.i32.i64($i241); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 244, 9} true; + assume {:verifier.code 0} true; + $i254 := $srem.i64($i253, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 244, 7} true; + assume {:verifier.code 0} true; + $i255 := $trunc.i64.i32($i254); + call {:cexpr "b"} boogie_si_record_i32($i255); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 245, 5} true; + assume {:verifier.code 0} true; + $i256 := $add.i32($i255, $i255); + call {:cexpr "b"} boogie_si_record_i32($i256); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 247, 5} true; + assume {:verifier.code 0} true; + $i257 := $add.i32($i244, $i244); + call {:cexpr "c"} boogie_si_record_i32($i257); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 248, 9} true; + assume {:verifier.code 0} true; + $i258 := $slt.i32($i252, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 248, 7} true; + assume {:verifier.code 0} true; + $i259 := $i257; + assume {:branchcond $i258} true; + goto $bb154, $bb155; +$bb148: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 15} true; + assume {:verifier.code 0} true; + assume ($i245 == 1); + goto $bb149; +$bb149: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 239, 9} true; + assume {:verifier.code 0} true; + $i248 := $add.i32($i242, 1); + call {:cexpr "c"} boogie_si_record_i32($i248); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 240, 5} true; + assume {:verifier.code 0} true; + $i247 := $i248; + goto $bb153; +$bb150: + assume !(($i245 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 20} true; + assume {:verifier.code 0} true; + $i246 := $sgt.i32($i241, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 9} true; + assume {:verifier.code 0} true; + $i247 := $i242; + assume {:branchcond $i246} true; + goto $bb151, $bb152; +$bb151: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 9} true; + assume {:verifier.code 0} true; + assume ($i246 == 1); + goto $bb149; +$bb152: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 9} true; + assume {:verifier.code 0} true; + assume !(($i246 == 1)); + goto $bb153; +$bb153: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 241, 3} true; + assume {:verifier.code 0} true; + $i244 := $i247; + goto $bb147; +$bb154: + assume ($i258 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 11} true; + assume {:verifier.code 0} true; + $i260 := $slt.i32($i256, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i260} true; + goto $bb157, $bb159; +$bb155: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 248, 7} true; + assume {:verifier.code 0} true; + assume !(($i258 == 1)); + goto $bb156; +$bb156: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 253, 7} true; + assume {:verifier.code 0} true; + $i264 := $sext.i32.i64($i252); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 253, 9} true; + assume {:verifier.code 0} true; + $i265 := $srem.i64($i264, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 253, 7} true; + assume {:verifier.code 0} true; + $i266 := $trunc.i64.i32($i265); + call {:cexpr "a"} boogie_si_record_i32($i266); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 254, 5} true; + assume {:verifier.code 0} true; + $i267 := $add.i32($i266, $i266); + call {:cexpr "a"} boogie_si_record_i32($i267); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 255, 7} true; + assume {:verifier.code 0} true; + $i268 := $sext.i32.i64($i256); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 255, 9} true; + assume {:verifier.code 0} true; + $i269 := $srem.i64($i268, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 255, 7} true; + assume {:verifier.code 0} true; + $i270 := $trunc.i64.i32($i269); + call {:cexpr "b"} boogie_si_record_i32($i270); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 256, 5} true; + assume {:verifier.code 0} true; + $i271 := $add.i32($i270, $i270); + call {:cexpr "b"} boogie_si_record_i32($i271); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 258, 5} true; + assume {:verifier.code 0} true; + $i272 := $add.i32($i259, $i259); + call {:cexpr "c"} boogie_si_record_i32($i272); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 259, 9} true; + assume {:verifier.code 0} true; + $i273 := $slt.i32($i267, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 259, 7} true; + assume {:verifier.code 0} true; + $i274 := $i272; + assume {:branchcond $i273} true; + goto $bb163, $bb164; +$bb157: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 15} true; + assume {:verifier.code 0} true; + assume ($i260 == 1); + goto $bb158; +$bb158: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 250, 9} true; + assume {:verifier.code 0} true; + $i263 := $add.i32($i257, 1); + call {:cexpr "c"} boogie_si_record_i32($i263); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 251, 5} true; + assume {:verifier.code 0} true; + $i262 := $i263; + goto $bb162; +$bb159: + assume !(($i260 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 20} true; + assume {:verifier.code 0} true; + $i261 := $sgt.i32($i256, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 9} true; + assume {:verifier.code 0} true; + $i262 := $i257; + assume {:branchcond $i261} true; + goto $bb160, $bb161; +$bb160: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 9} true; + assume {:verifier.code 0} true; + assume ($i261 == 1); + goto $bb158; +$bb161: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 9} true; + assume {:verifier.code 0} true; + assume !(($i261 == 1)); + goto $bb162; +$bb162: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 252, 3} true; + assume {:verifier.code 0} true; + $i259 := $i262; + goto $bb156; +$bb163: + assume ($i273 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 11} true; + assume {:verifier.code 0} true; + $i275 := $slt.i32($i271, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i275} true; + goto $bb166, $bb168; +$bb164: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 259, 7} true; + assume {:verifier.code 0} true; + assume !(($i273 == 1)); + goto $bb165; +$bb165: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 264, 7} true; + assume {:verifier.code 0} true; + $i279 := $sext.i32.i64($i267); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 264, 9} true; + assume {:verifier.code 0} true; + $i280 := $srem.i64($i279, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 264, 7} true; + assume {:verifier.code 0} true; + $i281 := $trunc.i64.i32($i280); + call {:cexpr "a"} boogie_si_record_i32($i281); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 265, 5} true; + assume {:verifier.code 0} true; + $i282 := $add.i32($i281, $i281); + call {:cexpr "a"} boogie_si_record_i32($i282); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 266, 7} true; + assume {:verifier.code 0} true; + $i283 := $sext.i32.i64($i271); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 266, 9} true; + assume {:verifier.code 0} true; + $i284 := $srem.i64($i283, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 266, 7} true; + assume {:verifier.code 0} true; + $i285 := $trunc.i64.i32($i284); + call {:cexpr "b"} boogie_si_record_i32($i285); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 267, 5} true; + assume {:verifier.code 0} true; + $i286 := $add.i32($i285, $i285); + call {:cexpr "b"} boogie_si_record_i32($i286); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 269, 5} true; + assume {:verifier.code 0} true; + $i287 := $add.i32($i274, $i274); + call {:cexpr "c"} boogie_si_record_i32($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 270, 9} true; + assume {:verifier.code 0} true; + $i288 := $slt.i32($i282, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 270, 7} true; + assume {:verifier.code 0} true; + $i289 := $i287; + assume {:branchcond $i288} true; + goto $bb172, $bb173; +$bb166: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 15} true; + assume {:verifier.code 0} true; + assume ($i275 == 1); + goto $bb167; +$bb167: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 261, 9} true; + assume {:verifier.code 0} true; + $i278 := $add.i32($i272, 1); + call {:cexpr "c"} boogie_si_record_i32($i278); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 262, 5} true; + assume {:verifier.code 0} true; + $i277 := $i278; + goto $bb171; +$bb168: + assume !(($i275 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 20} true; + assume {:verifier.code 0} true; + $i276 := $sgt.i32($i271, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 9} true; + assume {:verifier.code 0} true; + $i277 := $i272; + assume {:branchcond $i276} true; + goto $bb169, $bb170; +$bb169: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 9} true; + assume {:verifier.code 0} true; + assume ($i276 == 1); + goto $bb167; +$bb170: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 9} true; + assume {:verifier.code 0} true; + assume !(($i276 == 1)); + goto $bb171; +$bb171: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 263, 3} true; + assume {:verifier.code 0} true; + $i274 := $i277; + goto $bb165; +$bb172: + assume ($i288 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 11} true; + assume {:verifier.code 0} true; + $i290 := $slt.i32($i286, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i290} true; + goto $bb175, $bb177; +$bb173: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 270, 7} true; + assume {:verifier.code 0} true; + assume !(($i288 == 1)); + goto $bb174; +$bb174: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 275, 7} true; + assume {:verifier.code 0} true; + $i294 := $sext.i32.i64($i282); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 275, 9} true; + assume {:verifier.code 0} true; + $i295 := $srem.i64($i294, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 275, 7} true; + assume {:verifier.code 0} true; + $i296 := $trunc.i64.i32($i295); + call {:cexpr "a"} boogie_si_record_i32($i296); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 276, 5} true; + assume {:verifier.code 0} true; + $i297 := $add.i32($i296, $i296); + call {:cexpr "a"} boogie_si_record_i32($i297); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 277, 7} true; + assume {:verifier.code 0} true; + $i298 := $sext.i32.i64($i286); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 277, 9} true; + assume {:verifier.code 0} true; + $i299 := $srem.i64($i298, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 277, 7} true; + assume {:verifier.code 0} true; + $i300 := $trunc.i64.i32($i299); + call {:cexpr "b"} boogie_si_record_i32($i300); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 278, 5} true; + assume {:verifier.code 0} true; + $i301 := $add.i32($i300, $i300); + call {:cexpr "b"} boogie_si_record_i32($i301); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 280, 5} true; + assume {:verifier.code 0} true; + $i302 := $add.i32($i289, $i289); + call {:cexpr "c"} boogie_si_record_i32($i302); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 281, 9} true; + assume {:verifier.code 0} true; + $i303 := $slt.i32($i297, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 281, 7} true; + assume {:verifier.code 0} true; + $i304 := $i302; + assume {:branchcond $i303} true; + goto $bb181, $bb182; +$bb175: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 15} true; + assume {:verifier.code 0} true; + assume ($i290 == 1); + goto $bb176; +$bb176: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 272, 9} true; + assume {:verifier.code 0} true; + $i293 := $add.i32($i287, 1); + call {:cexpr "c"} boogie_si_record_i32($i293); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 273, 5} true; + assume {:verifier.code 0} true; + $i292 := $i293; + goto $bb180; +$bb177: + assume !(($i290 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 20} true; + assume {:verifier.code 0} true; + $i291 := $sgt.i32($i286, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 9} true; + assume {:verifier.code 0} true; + $i292 := $i287; + assume {:branchcond $i291} true; + goto $bb178, $bb179; +$bb178: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 9} true; + assume {:verifier.code 0} true; + assume ($i291 == 1); + goto $bb176; +$bb179: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 9} true; + assume {:verifier.code 0} true; + assume !(($i291 == 1)); + goto $bb180; +$bb180: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 274, 3} true; + assume {:verifier.code 0} true; + $i289 := $i292; + goto $bb174; +$bb181: + assume ($i303 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 11} true; + assume {:verifier.code 0} true; + $i305 := $slt.i32($i301, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i305} true; + goto $bb184, $bb186; +$bb182: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 281, 7} true; + assume {:verifier.code 0} true; + assume !(($i303 == 1)); + goto $bb183; +$bb183: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 286, 7} true; + assume {:verifier.code 0} true; + $i309 := $sext.i32.i64($i297); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 286, 9} true; + assume {:verifier.code 0} true; + $i310 := $srem.i64($i309, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 286, 7} true; + assume {:verifier.code 0} true; + $i311 := $trunc.i64.i32($i310); + call {:cexpr "a"} boogie_si_record_i32($i311); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 287, 5} true; + assume {:verifier.code 0} true; + $i312 := $add.i32($i311, $i311); + call {:cexpr "a"} boogie_si_record_i32($i312); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 288, 7} true; + assume {:verifier.code 0} true; + $i313 := $sext.i32.i64($i301); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 288, 9} true; + assume {:verifier.code 0} true; + $i314 := $srem.i64($i313, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 288, 7} true; + assume {:verifier.code 0} true; + $i315 := $trunc.i64.i32($i314); + call {:cexpr "b"} boogie_si_record_i32($i315); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 289, 5} true; + assume {:verifier.code 0} true; + $i316 := $add.i32($i315, $i315); + call {:cexpr "b"} boogie_si_record_i32($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 291, 5} true; + assume {:verifier.code 0} true; + $i317 := $add.i32($i304, $i304); + call {:cexpr "c"} boogie_si_record_i32($i317); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 292, 9} true; + assume {:verifier.code 0} true; + $i318 := $slt.i32($i312, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 292, 7} true; + assume {:verifier.code 0} true; + $i319 := $i317; + assume {:branchcond $i318} true; + goto $bb190, $bb191; +$bb184: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 15} true; + assume {:verifier.code 0} true; + assume ($i305 == 1); + goto $bb185; +$bb185: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 283, 9} true; + assume {:verifier.code 0} true; + $i308 := $add.i32($i302, 1); + call {:cexpr "c"} boogie_si_record_i32($i308); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 284, 5} true; + assume {:verifier.code 0} true; + $i307 := $i308; + goto $bb189; +$bb186: + assume !(($i305 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 20} true; + assume {:verifier.code 0} true; + $i306 := $sgt.i32($i301, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 9} true; + assume {:verifier.code 0} true; + $i307 := $i302; + assume {:branchcond $i306} true; + goto $bb187, $bb188; +$bb187: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 9} true; + assume {:verifier.code 0} true; + assume ($i306 == 1); + goto $bb185; +$bb188: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 9} true; + assume {:verifier.code 0} true; + assume !(($i306 == 1)); + goto $bb189; +$bb189: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 285, 3} true; + assume {:verifier.code 0} true; + $i304 := $i307; + goto $bb183; +$bb190: + assume ($i318 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 11} true; + assume {:verifier.code 0} true; + $i320 := $slt.i32($i316, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i320} true; + goto $bb193, $bb195; +$bb191: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 292, 7} true; + assume {:verifier.code 0} true; + assume !(($i318 == 1)); + goto $bb192; +$bb192: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 297, 7} true; + assume {:verifier.code 0} true; + $i324 := $sext.i32.i64($i312); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 297, 9} true; + assume {:verifier.code 0} true; + $i325 := $srem.i64($i324, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 297, 7} true; + assume {:verifier.code 0} true; + $i326 := $trunc.i64.i32($i325); + call {:cexpr "a"} boogie_si_record_i32($i326); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 298, 5} true; + assume {:verifier.code 0} true; + $i327 := $add.i32($i326, $i326); + call {:cexpr "a"} boogie_si_record_i32($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 299, 7} true; + assume {:verifier.code 0} true; + $i328 := $sext.i32.i64($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 299, 9} true; + assume {:verifier.code 0} true; + $i329 := $srem.i64($i328, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 299, 7} true; + assume {:verifier.code 0} true; + $i330 := $trunc.i64.i32($i329); + call {:cexpr "b"} boogie_si_record_i32($i330); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 300, 5} true; + assume {:verifier.code 0} true; + $i331 := $add.i32($i330, $i330); + call {:cexpr "b"} boogie_si_record_i32($i331); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 302, 5} true; + assume {:verifier.code 0} true; + $i332 := $add.i32($i319, $i319); + call {:cexpr "c"} boogie_si_record_i32($i332); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 303, 9} true; + assume {:verifier.code 0} true; + $i333 := $slt.i32($i327, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 303, 7} true; + assume {:verifier.code 0} true; + $i334 := $i332; + assume {:branchcond $i333} true; + goto $bb199, $bb200; +$bb193: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 15} true; + assume {:verifier.code 0} true; + assume ($i320 == 1); + goto $bb194; +$bb194: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 294, 9} true; + assume {:verifier.code 0} true; + $i323 := $add.i32($i317, 1); + call {:cexpr "c"} boogie_si_record_i32($i323); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 295, 5} true; + assume {:verifier.code 0} true; + $i322 := $i323; + goto $bb198; +$bb195: + assume !(($i320 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 20} true; + assume {:verifier.code 0} true; + $i321 := $sgt.i32($i316, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 9} true; + assume {:verifier.code 0} true; + $i322 := $i317; + assume {:branchcond $i321} true; + goto $bb196, $bb197; +$bb196: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 9} true; + assume {:verifier.code 0} true; + assume ($i321 == 1); + goto $bb194; +$bb197: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 9} true; + assume {:verifier.code 0} true; + assume !(($i321 == 1)); + goto $bb198; +$bb198: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 296, 3} true; + assume {:verifier.code 0} true; + $i319 := $i322; + goto $bb192; +$bb199: + assume ($i333 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 11} true; + assume {:verifier.code 0} true; + $i335 := $slt.i32($i331, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i335} true; + goto $bb202, $bb204; +$bb200: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 303, 7} true; + assume {:verifier.code 0} true; + assume !(($i333 == 1)); + goto $bb201; +$bb201: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 308, 7} true; + assume {:verifier.code 0} true; + $i339 := $sext.i32.i64($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 308, 9} true; + assume {:verifier.code 0} true; + $i340 := $srem.i64($i339, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 308, 7} true; + assume {:verifier.code 0} true; + $i341 := $trunc.i64.i32($i340); + call {:cexpr "a"} boogie_si_record_i32($i341); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 309, 5} true; + assume {:verifier.code 0} true; + $i342 := $add.i32($i341, $i341); + call {:cexpr "a"} boogie_si_record_i32($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 310, 7} true; + assume {:verifier.code 0} true; + $i343 := $sext.i32.i64($i331); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 310, 9} true; + assume {:verifier.code 0} true; + $i344 := $srem.i64($i343, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 310, 7} true; + assume {:verifier.code 0} true; + $i345 := $trunc.i64.i32($i344); + call {:cexpr "b"} boogie_si_record_i32($i345); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 311, 5} true; + assume {:verifier.code 0} true; + $i346 := $add.i32($i345, $i345); + call {:cexpr "b"} boogie_si_record_i32($i346); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 313, 5} true; + assume {:verifier.code 0} true; + $i347 := $add.i32($i334, $i334); + call {:cexpr "c"} boogie_si_record_i32($i347); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 314, 9} true; + assume {:verifier.code 0} true; + $i348 := $slt.i32($i342, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 314, 7} true; + assume {:verifier.code 0} true; + $i349 := $i347; + assume {:branchcond $i348} true; + goto $bb208, $bb209; +$bb202: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 15} true; + assume {:verifier.code 0} true; + assume ($i335 == 1); + goto $bb203; +$bb203: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 305, 9} true; + assume {:verifier.code 0} true; + $i338 := $add.i32($i332, 1); + call {:cexpr "c"} boogie_si_record_i32($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 306, 5} true; + assume {:verifier.code 0} true; + $i337 := $i338; + goto $bb207; +$bb204: + assume !(($i335 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 20} true; + assume {:verifier.code 0} true; + $i336 := $sgt.i32($i331, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 9} true; + assume {:verifier.code 0} true; + $i337 := $i332; + assume {:branchcond $i336} true; + goto $bb205, $bb206; +$bb205: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 9} true; + assume {:verifier.code 0} true; + assume ($i336 == 1); + goto $bb203; +$bb206: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 9} true; + assume {:verifier.code 0} true; + assume !(($i336 == 1)); + goto $bb207; +$bb207: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 307, 3} true; + assume {:verifier.code 0} true; + $i334 := $i337; + goto $bb201; +$bb208: + assume ($i348 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 11} true; + assume {:verifier.code 0} true; + $i350 := $slt.i32($i346, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i350} true; + goto $bb211, $bb213; +$bb209: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 314, 7} true; + assume {:verifier.code 0} true; + assume !(($i348 == 1)); + goto $bb210; +$bb210: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 319, 7} true; + assume {:verifier.code 0} true; + $i354 := $sext.i32.i64($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 319, 9} true; + assume {:verifier.code 0} true; + $i355 := $srem.i64($i354, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 319, 7} true; + assume {:verifier.code 0} true; + $i356 := $trunc.i64.i32($i355); + call {:cexpr "a"} boogie_si_record_i32($i356); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 320, 5} true; + assume {:verifier.code 0} true; + $i357 := $add.i32($i356, $i356); + call {:cexpr "a"} boogie_si_record_i32($i357); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 321, 7} true; + assume {:verifier.code 0} true; + $i358 := $sext.i32.i64($i346); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 321, 9} true; + assume {:verifier.code 0} true; + $i359 := $srem.i64($i358, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 321, 7} true; + assume {:verifier.code 0} true; + $i360 := $trunc.i64.i32($i359); + call {:cexpr "b"} boogie_si_record_i32($i360); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 322, 5} true; + assume {:verifier.code 0} true; + $i361 := $add.i32($i360, $i360); + call {:cexpr "b"} boogie_si_record_i32($i361); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 324, 5} true; + assume {:verifier.code 0} true; + $i362 := $add.i32($i349, $i349); + call {:cexpr "c"} boogie_si_record_i32($i362); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 325, 9} true; + assume {:verifier.code 0} true; + $i363 := $slt.i32($i357, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 325, 7} true; + assume {:verifier.code 0} true; + $i364 := $i362; + assume {:branchcond $i363} true; + goto $bb217, $bb218; +$bb211: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 15} true; + assume {:verifier.code 0} true; + assume ($i350 == 1); + goto $bb212; +$bb212: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 316, 9} true; + assume {:verifier.code 0} true; + $i353 := $add.i32($i347, 1); + call {:cexpr "c"} boogie_si_record_i32($i353); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 317, 5} true; + assume {:verifier.code 0} true; + $i352 := $i353; + goto $bb216; +$bb213: + assume !(($i350 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 20} true; + assume {:verifier.code 0} true; + $i351 := $sgt.i32($i346, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 9} true; + assume {:verifier.code 0} true; + $i352 := $i347; + assume {:branchcond $i351} true; + goto $bb214, $bb215; +$bb214: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 9} true; + assume {:verifier.code 0} true; + assume ($i351 == 1); + goto $bb212; +$bb215: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 9} true; + assume {:verifier.code 0} true; + assume !(($i351 == 1)); + goto $bb216; +$bb216: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 318, 3} true; + assume {:verifier.code 0} true; + $i349 := $i352; + goto $bb210; +$bb217: + assume ($i363 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 11} true; + assume {:verifier.code 0} true; + $i365 := $slt.i32($i361, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i365} true; + goto $bb220, $bb222; +$bb218: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 325, 7} true; + assume {:verifier.code 0} true; + assume !(($i363 == 1)); + goto $bb219; +$bb219: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 330, 7} true; + assume {:verifier.code 0} true; + $i369 := $sext.i32.i64($i357); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 330, 9} true; + assume {:verifier.code 0} true; + $i370 := $srem.i64($i369, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 330, 7} true; + assume {:verifier.code 0} true; + $i371 := $trunc.i64.i32($i370); + call {:cexpr "a"} boogie_si_record_i32($i371); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 331, 5} true; + assume {:verifier.code 0} true; + $i372 := $add.i32($i371, $i371); + call {:cexpr "a"} boogie_si_record_i32($i372); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 332, 7} true; + assume {:verifier.code 0} true; + $i373 := $sext.i32.i64($i361); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 332, 9} true; + assume {:verifier.code 0} true; + $i374 := $srem.i64($i373, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 332, 7} true; + assume {:verifier.code 0} true; + $i375 := $trunc.i64.i32($i374); + call {:cexpr "b"} boogie_si_record_i32($i375); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 333, 5} true; + assume {:verifier.code 0} true; + $i376 := $add.i32($i375, $i375); + call {:cexpr "b"} boogie_si_record_i32($i376); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 335, 5} true; + assume {:verifier.code 0} true; + $i377 := $add.i32($i364, $i364); + call {:cexpr "c"} boogie_si_record_i32($i377); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 336, 9} true; + assume {:verifier.code 0} true; + $i378 := $slt.i32($i372, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 336, 7} true; + assume {:verifier.code 0} true; + $i379 := $i377; + assume {:branchcond $i378} true; + goto $bb226, $bb227; +$bb220: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 15} true; + assume {:verifier.code 0} true; + assume ($i365 == 1); + goto $bb221; +$bb221: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 327, 9} true; + assume {:verifier.code 0} true; + $i368 := $add.i32($i362, 1); + call {:cexpr "c"} boogie_si_record_i32($i368); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 328, 5} true; + assume {:verifier.code 0} true; + $i367 := $i368; + goto $bb225; +$bb222: + assume !(($i365 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 20} true; + assume {:verifier.code 0} true; + $i366 := $sgt.i32($i361, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 9} true; + assume {:verifier.code 0} true; + $i367 := $i362; + assume {:branchcond $i366} true; + goto $bb223, $bb224; +$bb223: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 9} true; + assume {:verifier.code 0} true; + assume ($i366 == 1); + goto $bb221; +$bb224: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 9} true; + assume {:verifier.code 0} true; + assume !(($i366 == 1)); + goto $bb225; +$bb225: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 329, 3} true; + assume {:verifier.code 0} true; + $i364 := $i367; + goto $bb219; +$bb226: + assume ($i378 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 11} true; + assume {:verifier.code 0} true; + $i380 := $slt.i32($i376, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i380} true; + goto $bb229, $bb231; +$bb227: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 336, 7} true; + assume {:verifier.code 0} true; + assume !(($i378 == 1)); + goto $bb228; +$bb228: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 341, 7} true; + assume {:verifier.code 0} true; + $i384 := $sext.i32.i64($i372); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 341, 9} true; + assume {:verifier.code 0} true; + $i385 := $srem.i64($i384, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 341, 7} true; + assume {:verifier.code 0} true; + $i386 := $trunc.i64.i32($i385); + call {:cexpr "a"} boogie_si_record_i32($i386); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 342, 5} true; + assume {:verifier.code 0} true; + $i387 := $add.i32($i386, $i386); + call {:cexpr "a"} boogie_si_record_i32($i387); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 343, 7} true; + assume {:verifier.code 0} true; + $i388 := $sext.i32.i64($i376); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 343, 9} true; + assume {:verifier.code 0} true; + $i389 := $srem.i64($i388, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 343, 7} true; + assume {:verifier.code 0} true; + $i390 := $trunc.i64.i32($i389); + call {:cexpr "b"} boogie_si_record_i32($i390); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 344, 5} true; + assume {:verifier.code 0} true; + $i391 := $add.i32($i390, $i390); + call {:cexpr "b"} boogie_si_record_i32($i391); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 346, 5} true; + assume {:verifier.code 0} true; + $i392 := $add.i32($i379, $i379); + call {:cexpr "c"} boogie_si_record_i32($i392); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 347, 9} true; + assume {:verifier.code 0} true; + $i393 := $slt.i32($i387, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 347, 7} true; + assume {:verifier.code 0} true; + $i394 := $i392; + assume {:branchcond $i393} true; + goto $bb235, $bb236; +$bb229: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 15} true; + assume {:verifier.code 0} true; + assume ($i380 == 1); + goto $bb230; +$bb230: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 338, 9} true; + assume {:verifier.code 0} true; + $i383 := $add.i32($i377, 1); + call {:cexpr "c"} boogie_si_record_i32($i383); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 339, 5} true; + assume {:verifier.code 0} true; + $i382 := $i383; + goto $bb234; +$bb231: + assume !(($i380 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 20} true; + assume {:verifier.code 0} true; + $i381 := $sgt.i32($i376, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 9} true; + assume {:verifier.code 0} true; + $i382 := $i377; + assume {:branchcond $i381} true; + goto $bb232, $bb233; +$bb232: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 9} true; + assume {:verifier.code 0} true; + assume ($i381 == 1); + goto $bb230; +$bb233: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 9} true; + assume {:verifier.code 0} true; + assume !(($i381 == 1)); + goto $bb234; +$bb234: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 340, 3} true; + assume {:verifier.code 0} true; + $i379 := $i382; + goto $bb228; +$bb235: + assume ($i393 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 11} true; + assume {:verifier.code 0} true; + $i395 := $slt.i32($i391, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i395} true; + goto $bb238, $bb240; +$bb236: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 347, 7} true; + assume {:verifier.code 0} true; + assume !(($i393 == 1)); + goto $bb237; +$bb237: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 352, 7} true; + assume {:verifier.code 0} true; + $i399 := $sext.i32.i64($i387); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 352, 9} true; + assume {:verifier.code 0} true; + $i400 := $srem.i64($i399, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 352, 7} true; + assume {:verifier.code 0} true; + $i401 := $trunc.i64.i32($i400); + call {:cexpr "a"} boogie_si_record_i32($i401); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 353, 5} true; + assume {:verifier.code 0} true; + $i402 := $add.i32($i401, $i401); + call {:cexpr "a"} boogie_si_record_i32($i402); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 354, 7} true; + assume {:verifier.code 0} true; + $i403 := $sext.i32.i64($i391); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 354, 9} true; + assume {:verifier.code 0} true; + $i404 := $srem.i64($i403, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 354, 7} true; + assume {:verifier.code 0} true; + $i405 := $trunc.i64.i32($i404); + call {:cexpr "b"} boogie_si_record_i32($i405); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 355, 5} true; + assume {:verifier.code 0} true; + $i406 := $add.i32($i405, $i405); + call {:cexpr "b"} boogie_si_record_i32($i406); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 357, 5} true; + assume {:verifier.code 0} true; + $i407 := $add.i32($i394, $i394); + call {:cexpr "c"} boogie_si_record_i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 358, 9} true; + assume {:verifier.code 0} true; + $i408 := $slt.i32($i402, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 358, 7} true; + assume {:verifier.code 0} true; + $i409 := $i407; + assume {:branchcond $i408} true; + goto $bb244, $bb245; +$bb238: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 15} true; + assume {:verifier.code 0} true; + assume ($i395 == 1); + goto $bb239; +$bb239: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 349, 9} true; + assume {:verifier.code 0} true; + $i398 := $add.i32($i392, 1); + call {:cexpr "c"} boogie_si_record_i32($i398); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 350, 5} true; + assume {:verifier.code 0} true; + $i397 := $i398; + goto $bb243; +$bb240: + assume !(($i395 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 20} true; + assume {:verifier.code 0} true; + $i396 := $sgt.i32($i391, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 9} true; + assume {:verifier.code 0} true; + $i397 := $i392; + assume {:branchcond $i396} true; + goto $bb241, $bb242; +$bb241: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 9} true; + assume {:verifier.code 0} true; + assume ($i396 == 1); + goto $bb239; +$bb242: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 9} true; + assume {:verifier.code 0} true; + assume !(($i396 == 1)); + goto $bb243; +$bb243: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 351, 3} true; + assume {:verifier.code 0} true; + $i394 := $i397; + goto $bb237; +$bb244: + assume ($i408 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 11} true; + assume {:verifier.code 0} true; + $i410 := $slt.i32($i406, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i410} true; + goto $bb247, $bb249; +$bb245: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 358, 7} true; + assume {:verifier.code 0} true; + assume !(($i408 == 1)); + goto $bb246; +$bb246: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 363, 7} true; + assume {:verifier.code 0} true; + $i414 := $sext.i32.i64($i402); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 363, 9} true; + assume {:verifier.code 0} true; + $i415 := $srem.i64($i414, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 363, 7} true; + assume {:verifier.code 0} true; + $i416 := $trunc.i64.i32($i415); + call {:cexpr "a"} boogie_si_record_i32($i416); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 364, 5} true; + assume {:verifier.code 0} true; + $i417 := $add.i32($i416, $i416); + call {:cexpr "a"} boogie_si_record_i32($i417); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 365, 7} true; + assume {:verifier.code 0} true; + $i418 := $sext.i32.i64($i406); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 365, 9} true; + assume {:verifier.code 0} true; + $i419 := $srem.i64($i418, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 365, 7} true; + assume {:verifier.code 0} true; + $i420 := $trunc.i64.i32($i419); + call {:cexpr "b"} boogie_si_record_i32($i420); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 366, 5} true; + assume {:verifier.code 0} true; + $i421 := $add.i32($i420, $i420); + call {:cexpr "b"} boogie_si_record_i32($i421); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 368, 5} true; + assume {:verifier.code 0} true; + $i422 := $add.i32($i409, $i409); + call {:cexpr "c"} boogie_si_record_i32($i422); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 369, 9} true; + assume {:verifier.code 0} true; + $i423 := $slt.i32($i417, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 369, 7} true; + assume {:verifier.code 0} true; + $i424 := $i422; + assume {:branchcond $i423} true; + goto $bb253, $bb254; +$bb247: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 15} true; + assume {:verifier.code 0} true; + assume ($i410 == 1); + goto $bb248; +$bb248: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 360, 9} true; + assume {:verifier.code 0} true; + $i413 := $add.i32($i407, 1); + call {:cexpr "c"} boogie_si_record_i32($i413); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 361, 5} true; + assume {:verifier.code 0} true; + $i412 := $i413; + goto $bb252; +$bb249: + assume !(($i410 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 20} true; + assume {:verifier.code 0} true; + $i411 := $sgt.i32($i406, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 9} true; + assume {:verifier.code 0} true; + $i412 := $i407; + assume {:branchcond $i411} true; + goto $bb250, $bb251; +$bb250: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 9} true; + assume {:verifier.code 0} true; + assume ($i411 == 1); + goto $bb248; +$bb251: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 9} true; + assume {:verifier.code 0} true; + assume !(($i411 == 1)); + goto $bb252; +$bb252: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 362, 3} true; + assume {:verifier.code 0} true; + $i409 := $i412; + goto $bb246; +$bb253: + assume ($i423 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 11} true; + assume {:verifier.code 0} true; + $i425 := $slt.i32($i421, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i425} true; + goto $bb256, $bb258; +$bb254: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 369, 7} true; + assume {:verifier.code 0} true; + assume !(($i423 == 1)); + goto $bb255; +$bb255: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 374, 7} true; + assume {:verifier.code 0} true; + $i429 := $sext.i32.i64($i417); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 374, 9} true; + assume {:verifier.code 0} true; + $i430 := $srem.i64($i429, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 374, 7} true; + assume {:verifier.code 0} true; + $i431 := $trunc.i64.i32($i430); + call {:cexpr "a"} boogie_si_record_i32($i431); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 375, 5} true; + assume {:verifier.code 0} true; + $i432 := $add.i32($i431, $i431); + call {:cexpr "a"} boogie_si_record_i32($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 376, 7} true; + assume {:verifier.code 0} true; + $i433 := $sext.i32.i64($i421); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 376, 9} true; + assume {:verifier.code 0} true; + $i434 := $srem.i64($i433, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 376, 7} true; + assume {:verifier.code 0} true; + $i435 := $trunc.i64.i32($i434); + call {:cexpr "b"} boogie_si_record_i32($i435); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 377, 5} true; + assume {:verifier.code 0} true; + $i436 := $add.i32($i435, $i435); + call {:cexpr "b"} boogie_si_record_i32($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 379, 5} true; + assume {:verifier.code 0} true; + $i437 := $add.i32($i424, $i424); + call {:cexpr "c"} boogie_si_record_i32($i437); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 380, 9} true; + assume {:verifier.code 0} true; + $i438 := $slt.i32($i432, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 380, 7} true; + assume {:verifier.code 0} true; + $i439 := $i437; + assume {:branchcond $i438} true; + goto $bb262, $bb263; +$bb256: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 15} true; + assume {:verifier.code 0} true; + assume ($i425 == 1); + goto $bb257; +$bb257: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 371, 9} true; + assume {:verifier.code 0} true; + $i428 := $add.i32($i422, 1); + call {:cexpr "c"} boogie_si_record_i32($i428); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 372, 5} true; + assume {:verifier.code 0} true; + $i427 := $i428; + goto $bb261; +$bb258: + assume !(($i425 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 20} true; + assume {:verifier.code 0} true; + $i426 := $sgt.i32($i421, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 9} true; + assume {:verifier.code 0} true; + $i427 := $i422; + assume {:branchcond $i426} true; + goto $bb259, $bb260; +$bb259: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 9} true; + assume {:verifier.code 0} true; + assume ($i426 == 1); + goto $bb257; +$bb260: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 9} true; + assume {:verifier.code 0} true; + assume !(($i426 == 1)); + goto $bb261; +$bb261: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 373, 3} true; + assume {:verifier.code 0} true; + $i424 := $i427; + goto $bb255; +$bb262: + assume ($i438 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 11} true; + assume {:verifier.code 0} true; + $i440 := $slt.i32($i436, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i440} true; + goto $bb265, $bb267; +$bb263: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 380, 7} true; + assume {:verifier.code 0} true; + assume !(($i438 == 1)); + goto $bb264; +$bb264: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 385, 7} true; + assume {:verifier.code 0} true; + $i444 := $sext.i32.i64($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 385, 9} true; + assume {:verifier.code 0} true; + $i445 := $srem.i64($i444, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 385, 7} true; + assume {:verifier.code 0} true; + $i446 := $trunc.i64.i32($i445); + call {:cexpr "a"} boogie_si_record_i32($i446); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 386, 5} true; + assume {:verifier.code 0} true; + $i447 := $add.i32($i446, $i446); + call {:cexpr "a"} boogie_si_record_i32($i447); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 387, 7} true; + assume {:verifier.code 0} true; + $i448 := $sext.i32.i64($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 387, 9} true; + assume {:verifier.code 0} true; + $i449 := $srem.i64($i448, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 387, 7} true; + assume {:verifier.code 0} true; + $i450 := $trunc.i64.i32($i449); + call {:cexpr "b"} boogie_si_record_i32($i450); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 388, 5} true; + assume {:verifier.code 0} true; + $i451 := $add.i32($i450, $i450); + call {:cexpr "b"} boogie_si_record_i32($i451); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 390, 5} true; + assume {:verifier.code 0} true; + $i452 := $add.i32($i439, $i439); + call {:cexpr "c"} boogie_si_record_i32($i452); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 391, 9} true; + assume {:verifier.code 0} true; + $i453 := $slt.i32($i447, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 391, 7} true; + assume {:verifier.code 0} true; + $i454 := $i452; + assume {:branchcond $i453} true; + goto $bb271, $bb272; +$bb265: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 15} true; + assume {:verifier.code 0} true; + assume ($i440 == 1); + goto $bb266; +$bb266: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 382, 9} true; + assume {:verifier.code 0} true; + $i443 := $add.i32($i437, 1); + call {:cexpr "c"} boogie_si_record_i32($i443); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 383, 5} true; + assume {:verifier.code 0} true; + $i442 := $i443; + goto $bb270; +$bb267: + assume !(($i440 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 20} true; + assume {:verifier.code 0} true; + $i441 := $sgt.i32($i436, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 9} true; + assume {:verifier.code 0} true; + $i442 := $i437; + assume {:branchcond $i441} true; + goto $bb268, $bb269; +$bb268: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 9} true; + assume {:verifier.code 0} true; + assume ($i441 == 1); + goto $bb266; +$bb269: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 9} true; + assume {:verifier.code 0} true; + assume !(($i441 == 1)); + goto $bb270; +$bb270: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 384, 3} true; + assume {:verifier.code 0} true; + $i439 := $i442; + goto $bb264; +$bb271: + assume ($i453 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 11} true; + assume {:verifier.code 0} true; + $i455 := $slt.i32($i451, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i455} true; + goto $bb274, $bb276; +$bb272: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 391, 7} true; + assume {:verifier.code 0} true; + assume !(($i453 == 1)); + goto $bb273; +$bb273: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 396, 7} true; + assume {:verifier.code 0} true; + $i459 := $sext.i32.i64($i447); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 396, 9} true; + assume {:verifier.code 0} true; + $i460 := $srem.i64($i459, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 396, 7} true; + assume {:verifier.code 0} true; + $i461 := $trunc.i64.i32($i460); + call {:cexpr "a"} boogie_si_record_i32($i461); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 397, 5} true; + assume {:verifier.code 0} true; + $i462 := $add.i32($i461, $i461); + call {:cexpr "a"} boogie_si_record_i32($i462); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 398, 7} true; + assume {:verifier.code 0} true; + $i463 := $sext.i32.i64($i451); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 398, 9} true; + assume {:verifier.code 0} true; + $i464 := $srem.i64($i463, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 398, 7} true; + assume {:verifier.code 0} true; + $i465 := $trunc.i64.i32($i464); + call {:cexpr "b"} boogie_si_record_i32($i465); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 399, 5} true; + assume {:verifier.code 0} true; + $i466 := $add.i32($i465, $i465); + call {:cexpr "b"} boogie_si_record_i32($i466); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 401, 5} true; + assume {:verifier.code 0} true; + $i467 := $add.i32($i454, $i454); + call {:cexpr "c"} boogie_si_record_i32($i467); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 402, 9} true; + assume {:verifier.code 0} true; + $i468 := $slt.i32($i462, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 402, 7} true; + assume {:verifier.code 0} true; + $i469 := $i467; + assume {:branchcond $i468} true; + goto $bb280, $bb281; +$bb274: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 15} true; + assume {:verifier.code 0} true; + assume ($i455 == 1); + goto $bb275; +$bb275: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 393, 9} true; + assume {:verifier.code 0} true; + $i458 := $add.i32($i452, 1); + call {:cexpr "c"} boogie_si_record_i32($i458); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 394, 5} true; + assume {:verifier.code 0} true; + $i457 := $i458; + goto $bb279; +$bb276: + assume !(($i455 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 20} true; + assume {:verifier.code 0} true; + $i456 := $sgt.i32($i451, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 9} true; + assume {:verifier.code 0} true; + $i457 := $i452; + assume {:branchcond $i456} true; + goto $bb277, $bb278; +$bb277: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 9} true; + assume {:verifier.code 0} true; + assume ($i456 == 1); + goto $bb275; +$bb278: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 9} true; + assume {:verifier.code 0} true; + assume !(($i456 == 1)); + goto $bb279; +$bb279: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 395, 3} true; + assume {:verifier.code 0} true; + $i454 := $i457; + goto $bb273; +$bb280: + assume ($i468 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 11} true; + assume {:verifier.code 0} true; + $i470 := $slt.i32($i466, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i470} true; + goto $bb283, $bb285; +$bb281: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 402, 7} true; + assume {:verifier.code 0} true; + assume !(($i468 == 1)); + goto $bb282; +$bb282: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 407, 7} true; + assume {:verifier.code 0} true; + $i474 := $sext.i32.i64($i462); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 407, 9} true; + assume {:verifier.code 0} true; + $i475 := $srem.i64($i474, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 407, 7} true; + assume {:verifier.code 0} true; + $i476 := $trunc.i64.i32($i475); + call {:cexpr "a"} boogie_si_record_i32($i476); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 408, 5} true; + assume {:verifier.code 0} true; + $i477 := $add.i32($i476, $i476); + call {:cexpr "a"} boogie_si_record_i32($i477); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 409, 7} true; + assume {:verifier.code 0} true; + $i478 := $sext.i32.i64($i466); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 409, 9} true; + assume {:verifier.code 0} true; + $i479 := $srem.i64($i478, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 409, 7} true; + assume {:verifier.code 0} true; + $i480 := $trunc.i64.i32($i479); + call {:cexpr "b"} boogie_si_record_i32($i480); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 410, 5} true; + assume {:verifier.code 0} true; + $i481 := $add.i32($i480, $i480); + call {:cexpr "b"} boogie_si_record_i32($i481); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 412, 5} true; + assume {:verifier.code 0} true; + $i482 := $add.i32($i469, $i469); + call {:cexpr "c"} boogie_si_record_i32($i482); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 413, 9} true; + assume {:verifier.code 0} true; + $i483 := $slt.i32($i477, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 413, 7} true; + assume {:verifier.code 0} true; + $i484 := $i482; + assume {:branchcond $i483} true; + goto $bb289, $bb290; +$bb283: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 15} true; + assume {:verifier.code 0} true; + assume ($i470 == 1); + goto $bb284; +$bb284: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 404, 9} true; + assume {:verifier.code 0} true; + $i473 := $add.i32($i467, 1); + call {:cexpr "c"} boogie_si_record_i32($i473); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 405, 5} true; + assume {:verifier.code 0} true; + $i472 := $i473; + goto $bb288; +$bb285: + assume !(($i470 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 20} true; + assume {:verifier.code 0} true; + $i471 := $sgt.i32($i466, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 9} true; + assume {:verifier.code 0} true; + $i472 := $i467; + assume {:branchcond $i471} true; + goto $bb286, $bb287; +$bb286: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 9} true; + assume {:verifier.code 0} true; + assume ($i471 == 1); + goto $bb284; +$bb287: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 9} true; + assume {:verifier.code 0} true; + assume !(($i471 == 1)); + goto $bb288; +$bb288: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 406, 3} true; + assume {:verifier.code 0} true; + $i469 := $i472; + goto $bb282; +$bb289: + assume ($i483 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 11} true; + assume {:verifier.code 0} true; + $i485 := $slt.i32($i481, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i485} true; + goto $bb292, $bb294; +$bb290: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 413, 7} true; + assume {:verifier.code 0} true; + assume !(($i483 == 1)); + goto $bb291; +$bb291: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 418, 7} true; + assume {:verifier.code 0} true; + $i489 := $sext.i32.i64($i477); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 418, 9} true; + assume {:verifier.code 0} true; + $i490 := $srem.i64($i489, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 418, 7} true; + assume {:verifier.code 0} true; + $i491 := $trunc.i64.i32($i490); + call {:cexpr "a"} boogie_si_record_i32($i491); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 419, 5} true; + assume {:verifier.code 0} true; + $i492 := $add.i32($i491, $i491); + call {:cexpr "a"} boogie_si_record_i32($i492); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 420, 7} true; + assume {:verifier.code 0} true; + $i493 := $sext.i32.i64($i481); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 420, 9} true; + assume {:verifier.code 0} true; + $i494 := $srem.i64($i493, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 420, 7} true; + assume {:verifier.code 0} true; + $i495 := $trunc.i64.i32($i494); + call {:cexpr "b"} boogie_si_record_i32($i495); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 421, 5} true; + assume {:verifier.code 0} true; + $i496 := $add.i32($i495, $i495); + call {:cexpr "b"} boogie_si_record_i32($i496); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 423, 5} true; + assume {:verifier.code 0} true; + $i497 := $add.i32($i484, $i484); + call {:cexpr "c"} boogie_si_record_i32($i497); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 424, 9} true; + assume {:verifier.code 0} true; + $i498 := $slt.i32($i492, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 424, 7} true; + assume {:verifier.code 0} true; + $i499 := $i497; + assume {:branchcond $i498} true; + goto $bb298, $bb299; +$bb292: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 15} true; + assume {:verifier.code 0} true; + assume ($i485 == 1); + goto $bb293; +$bb293: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 415, 9} true; + assume {:verifier.code 0} true; + $i488 := $add.i32($i482, 1); + call {:cexpr "c"} boogie_si_record_i32($i488); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 416, 5} true; + assume {:verifier.code 0} true; + $i487 := $i488; + goto $bb297; +$bb294: + assume !(($i485 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 20} true; + assume {:verifier.code 0} true; + $i486 := $sgt.i32($i481, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 9} true; + assume {:verifier.code 0} true; + $i487 := $i482; + assume {:branchcond $i486} true; + goto $bb295, $bb296; +$bb295: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 9} true; + assume {:verifier.code 0} true; + assume ($i486 == 1); + goto $bb293; +$bb296: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 9} true; + assume {:verifier.code 0} true; + assume !(($i486 == 1)); + goto $bb297; +$bb297: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 417, 3} true; + assume {:verifier.code 0} true; + $i484 := $i487; + goto $bb291; +$bb298: + assume ($i498 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 11} true; + assume {:verifier.code 0} true; + $i500 := $slt.i32($i496, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i500} true; + goto $bb301, $bb303; +$bb299: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 424, 7} true; + assume {:verifier.code 0} true; + assume !(($i498 == 1)); + goto $bb300; +$bb300: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 429, 7} true; + assume {:verifier.code 0} true; + $i504 := $sext.i32.i64($i492); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 429, 9} true; + assume {:verifier.code 0} true; + $i505 := $srem.i64($i504, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 429, 7} true; + assume {:verifier.code 0} true; + $i506 := $trunc.i64.i32($i505); + call {:cexpr "a"} boogie_si_record_i32($i506); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 430, 5} true; + assume {:verifier.code 0} true; + $i507 := $add.i32($i506, $i506); + call {:cexpr "a"} boogie_si_record_i32($i507); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 431, 7} true; + assume {:verifier.code 0} true; + $i508 := $sext.i32.i64($i496); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 431, 9} true; + assume {:verifier.code 0} true; + $i509 := $srem.i64($i508, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 431, 7} true; + assume {:verifier.code 0} true; + $i510 := $trunc.i64.i32($i509); + call {:cexpr "b"} boogie_si_record_i32($i510); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 432, 5} true; + assume {:verifier.code 0} true; + $i511 := $add.i32($i510, $i510); + call {:cexpr "b"} boogie_si_record_i32($i511); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 434, 5} true; + assume {:verifier.code 0} true; + $i512 := $add.i32($i499, $i499); + call {:cexpr "c"} boogie_si_record_i32($i512); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 435, 9} true; + assume {:verifier.code 0} true; + $i513 := $slt.i32($i507, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 435, 7} true; + assume {:verifier.code 0} true; + $i514 := $i512; + assume {:branchcond $i513} true; + goto $bb307, $bb308; +$bb301: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 15} true; + assume {:verifier.code 0} true; + assume ($i500 == 1); + goto $bb302; +$bb302: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 426, 9} true; + assume {:verifier.code 0} true; + $i503 := $add.i32($i497, 1); + call {:cexpr "c"} boogie_si_record_i32($i503); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 427, 5} true; + assume {:verifier.code 0} true; + $i502 := $i503; + goto $bb306; +$bb303: + assume !(($i500 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 20} true; + assume {:verifier.code 0} true; + $i501 := $sgt.i32($i496, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 9} true; + assume {:verifier.code 0} true; + $i502 := $i497; + assume {:branchcond $i501} true; + goto $bb304, $bb305; +$bb304: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 9} true; + assume {:verifier.code 0} true; + assume ($i501 == 1); + goto $bb302; +$bb305: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 9} true; + assume {:verifier.code 0} true; + assume !(($i501 == 1)); + goto $bb306; +$bb306: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 428, 3} true; + assume {:verifier.code 0} true; + $i499 := $i502; + goto $bb300; +$bb307: + assume ($i513 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 11} true; + assume {:verifier.code 0} true; + $i515 := $slt.i32($i511, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i515} true; + goto $bb310, $bb312; +$bb308: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 435, 7} true; + assume {:verifier.code 0} true; + assume !(($i513 == 1)); + goto $bb309; +$bb309: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 440, 7} true; + assume {:verifier.code 0} true; + $i519 := $sext.i32.i64($i507); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 440, 9} true; + assume {:verifier.code 0} true; + $i520 := $srem.i64($i519, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 440, 7} true; + assume {:verifier.code 0} true; + $i521 := $trunc.i64.i32($i520); + call {:cexpr "a"} boogie_si_record_i32($i521); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 441, 5} true; + assume {:verifier.code 0} true; + $i522 := $add.i32($i521, $i521); + call {:cexpr "a"} boogie_si_record_i32($i522); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 442, 7} true; + assume {:verifier.code 0} true; + $i523 := $sext.i32.i64($i511); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 442, 9} true; + assume {:verifier.code 0} true; + $i524 := $srem.i64($i523, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 442, 7} true; + assume {:verifier.code 0} true; + $i525 := $trunc.i64.i32($i524); + call {:cexpr "b"} boogie_si_record_i32($i525); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 443, 5} true; + assume {:verifier.code 0} true; + $i526 := $add.i32($i525, $i525); + call {:cexpr "b"} boogie_si_record_i32($i526); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 445, 5} true; + assume {:verifier.code 0} true; + $i527 := $add.i32($i514, $i514); + call {:cexpr "c"} boogie_si_record_i32($i527); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 446, 9} true; + assume {:verifier.code 0} true; + $i528 := $slt.i32($i522, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 446, 7} true; + assume {:verifier.code 0} true; + $i529 := $i527; + assume {:branchcond $i528} true; + goto $bb316, $bb317; +$bb310: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 15} true; + assume {:verifier.code 0} true; + assume ($i515 == 1); + goto $bb311; +$bb311: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 437, 9} true; + assume {:verifier.code 0} true; + $i518 := $add.i32($i512, 1); + call {:cexpr "c"} boogie_si_record_i32($i518); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 438, 5} true; + assume {:verifier.code 0} true; + $i517 := $i518; + goto $bb315; +$bb312: + assume !(($i515 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 20} true; + assume {:verifier.code 0} true; + $i516 := $sgt.i32($i511, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 9} true; + assume {:verifier.code 0} true; + $i517 := $i512; + assume {:branchcond $i516} true; + goto $bb313, $bb314; +$bb313: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 9} true; + assume {:verifier.code 0} true; + assume ($i516 == 1); + goto $bb311; +$bb314: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 9} true; + assume {:verifier.code 0} true; + assume !(($i516 == 1)); + goto $bb315; +$bb315: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 439, 3} true; + assume {:verifier.code 0} true; + $i514 := $i517; + goto $bb309; +$bb316: + assume ($i528 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 11} true; + assume {:verifier.code 0} true; + $i530 := $slt.i32($i526, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i530} true; + goto $bb319, $bb321; +$bb317: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 446, 7} true; + assume {:verifier.code 0} true; + assume !(($i528 == 1)); + goto $bb318; +$bb318: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 451, 7} true; + assume {:verifier.code 0} true; + $i534 := $sext.i32.i64($i522); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 451, 9} true; + assume {:verifier.code 0} true; + $i535 := $srem.i64($i534, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 451, 7} true; + assume {:verifier.code 0} true; + $i536 := $trunc.i64.i32($i535); + call {:cexpr "a"} boogie_si_record_i32($i536); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 452, 5} true; + assume {:verifier.code 0} true; + $i537 := $add.i32($i536, $i536); + call {:cexpr "a"} boogie_si_record_i32($i537); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 453, 7} true; + assume {:verifier.code 0} true; + $i538 := $sext.i32.i64($i526); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 453, 9} true; + assume {:verifier.code 0} true; + $i539 := $srem.i64($i538, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 453, 7} true; + assume {:verifier.code 0} true; + $i540 := $trunc.i64.i32($i539); + call {:cexpr "b"} boogie_si_record_i32($i540); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 454, 5} true; + assume {:verifier.code 0} true; + $i541 := $add.i32($i540, $i540); + call {:cexpr "b"} boogie_si_record_i32($i541); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 456, 5} true; + assume {:verifier.code 0} true; + $i542 := $add.i32($i529, $i529); + call {:cexpr "c"} boogie_si_record_i32($i542); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 457, 9} true; + assume {:verifier.code 0} true; + $i543 := $slt.i32($i537, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 457, 7} true; + assume {:verifier.code 0} true; + $i544 := $i542; + assume {:branchcond $i543} true; + goto $bb325, $bb326; +$bb319: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 15} true; + assume {:verifier.code 0} true; + assume ($i530 == 1); + goto $bb320; +$bb320: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 448, 9} true; + assume {:verifier.code 0} true; + $i533 := $add.i32($i527, 1); + call {:cexpr "c"} boogie_si_record_i32($i533); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 449, 5} true; + assume {:verifier.code 0} true; + $i532 := $i533; + goto $bb324; +$bb321: + assume !(($i530 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 20} true; + assume {:verifier.code 0} true; + $i531 := $sgt.i32($i526, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 9} true; + assume {:verifier.code 0} true; + $i532 := $i527; + assume {:branchcond $i531} true; + goto $bb322, $bb323; +$bb322: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 9} true; + assume {:verifier.code 0} true; + assume ($i531 == 1); + goto $bb320; +$bb323: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 9} true; + assume {:verifier.code 0} true; + assume !(($i531 == 1)); + goto $bb324; +$bb324: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 450, 3} true; + assume {:verifier.code 0} true; + $i529 := $i532; + goto $bb318; +$bb325: + assume ($i543 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 11} true; + assume {:verifier.code 0} true; + $i545 := $slt.i32($i541, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i545} true; + goto $bb328, $bb330; +$bb326: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 457, 7} true; + assume {:verifier.code 0} true; + assume !(($i543 == 1)); + goto $bb327; +$bb327: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 462, 7} true; + assume {:verifier.code 0} true; + $i549 := $sext.i32.i64($i537); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 462, 9} true; + assume {:verifier.code 0} true; + $i550 := $srem.i64($i549, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 462, 7} true; + assume {:verifier.code 0} true; + $i551 := $trunc.i64.i32($i550); + call {:cexpr "a"} boogie_si_record_i32($i551); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 463, 5} true; + assume {:verifier.code 0} true; + $i552 := $add.i32($i551, $i551); + call {:cexpr "a"} boogie_si_record_i32($i552); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 464, 7} true; + assume {:verifier.code 0} true; + $i553 := $sext.i32.i64($i541); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 464, 9} true; + assume {:verifier.code 0} true; + $i554 := $srem.i64($i553, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 464, 7} true; + assume {:verifier.code 0} true; + $i555 := $trunc.i64.i32($i554); + call {:cexpr "b"} boogie_si_record_i32($i555); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 465, 5} true; + assume {:verifier.code 0} true; + $i556 := $add.i32($i555, $i555); + call {:cexpr "b"} boogie_si_record_i32($i556); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 467, 5} true; + assume {:verifier.code 0} true; + $i557 := $add.i32($i544, $i544); + call {:cexpr "c"} boogie_si_record_i32($i557); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 468, 9} true; + assume {:verifier.code 0} true; + $i558 := $slt.i32($i552, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 468, 7} true; + assume {:verifier.code 0} true; + $i559 := $i557; + assume {:branchcond $i558} true; + goto $bb334, $bb335; +$bb328: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 15} true; + assume {:verifier.code 0} true; + assume ($i545 == 1); + goto $bb329; +$bb329: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 459, 9} true; + assume {:verifier.code 0} true; + $i548 := $add.i32($i542, 1); + call {:cexpr "c"} boogie_si_record_i32($i548); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 460, 5} true; + assume {:verifier.code 0} true; + $i547 := $i548; + goto $bb333; +$bb330: + assume !(($i545 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 20} true; + assume {:verifier.code 0} true; + $i546 := $sgt.i32($i541, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 9} true; + assume {:verifier.code 0} true; + $i547 := $i542; + assume {:branchcond $i546} true; + goto $bb331, $bb332; +$bb331: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 9} true; + assume {:verifier.code 0} true; + assume ($i546 == 1); + goto $bb329; +$bb332: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 9} true; + assume {:verifier.code 0} true; + assume !(($i546 == 1)); + goto $bb333; +$bb333: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 461, 3} true; + assume {:verifier.code 0} true; + $i544 := $i547; + goto $bb327; +$bb334: + assume ($i558 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 11} true; + assume {:verifier.code 0} true; + $i560 := $slt.i32($i556, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i560} true; + goto $bb337, $bb339; +$bb335: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 468, 7} true; + assume {:verifier.code 0} true; + assume !(($i558 == 1)); + goto $bb336; +$bb336: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 473, 7} true; + assume {:verifier.code 0} true; + $i564 := $sext.i32.i64($i552); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 473, 9} true; + assume {:verifier.code 0} true; + $i565 := $srem.i64($i564, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 473, 7} true; + assume {:verifier.code 0} true; + $i566 := $trunc.i64.i32($i565); + call {:cexpr "a"} boogie_si_record_i32($i566); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 474, 5} true; + assume {:verifier.code 0} true; + $i567 := $add.i32($i566, $i566); + call {:cexpr "a"} boogie_si_record_i32($i567); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 475, 7} true; + assume {:verifier.code 0} true; + $i568 := $sext.i32.i64($i556); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 475, 9} true; + assume {:verifier.code 0} true; + $i569 := $srem.i64($i568, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 475, 7} true; + assume {:verifier.code 0} true; + $i570 := $trunc.i64.i32($i569); + call {:cexpr "b"} boogie_si_record_i32($i570); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 476, 5} true; + assume {:verifier.code 0} true; + $i571 := $add.i32($i570, $i570); + call {:cexpr "b"} boogie_si_record_i32($i571); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 478, 5} true; + assume {:verifier.code 0} true; + $i572 := $add.i32($i559, $i559); + call {:cexpr "c"} boogie_si_record_i32($i572); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 479, 9} true; + assume {:verifier.code 0} true; + $i573 := $slt.i32($i567, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 479, 7} true; + assume {:verifier.code 0} true; + $i574 := $i572; + assume {:branchcond $i573} true; + goto $bb343, $bb344; +$bb337: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 15} true; + assume {:verifier.code 0} true; + assume ($i560 == 1); + goto $bb338; +$bb338: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 470, 9} true; + assume {:verifier.code 0} true; + $i563 := $add.i32($i557, 1); + call {:cexpr "c"} boogie_si_record_i32($i563); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 471, 5} true; + assume {:verifier.code 0} true; + $i562 := $i563; + goto $bb342; +$bb339: + assume !(($i560 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 20} true; + assume {:verifier.code 0} true; + $i561 := $sgt.i32($i556, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 9} true; + assume {:verifier.code 0} true; + $i562 := $i557; + assume {:branchcond $i561} true; + goto $bb340, $bb341; +$bb340: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 9} true; + assume {:verifier.code 0} true; + assume ($i561 == 1); + goto $bb338; +$bb341: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 9} true; + assume {:verifier.code 0} true; + assume !(($i561 == 1)); + goto $bb342; +$bb342: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 472, 3} true; + assume {:verifier.code 0} true; + $i559 := $i562; + goto $bb336; +$bb343: + assume ($i573 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 11} true; + assume {:verifier.code 0} true; + $i575 := $slt.i32($i571, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i575} true; + goto $bb346, $bb348; +$bb344: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 479, 7} true; + assume {:verifier.code 0} true; + assume !(($i573 == 1)); + goto $bb345; +$bb345: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 484, 7} true; + assume {:verifier.code 0} true; + $i579 := $sext.i32.i64($i567); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 484, 9} true; + assume {:verifier.code 0} true; + $i580 := $srem.i64($i579, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 484, 7} true; + assume {:verifier.code 0} true; + $i581 := $trunc.i64.i32($i580); + call {:cexpr "a"} boogie_si_record_i32($i581); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 485, 5} true; + assume {:verifier.code 0} true; + $i582 := $add.i32($i581, $i581); + call {:cexpr "a"} boogie_si_record_i32($i582); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 486, 7} true; + assume {:verifier.code 0} true; + $i583 := $sext.i32.i64($i571); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 486, 9} true; + assume {:verifier.code 0} true; + $i584 := $srem.i64($i583, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 486, 7} true; + assume {:verifier.code 0} true; + $i585 := $trunc.i64.i32($i584); + call {:cexpr "b"} boogie_si_record_i32($i585); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 487, 5} true; + assume {:verifier.code 0} true; + $i586 := $add.i32($i585, $i585); + call {:cexpr "b"} boogie_si_record_i32($i586); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 489, 5} true; + assume {:verifier.code 0} true; + $i587 := $add.i32($i574, $i574); + call {:cexpr "c"} boogie_si_record_i32($i587); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 490, 9} true; + assume {:verifier.code 0} true; + $i588 := $slt.i32($i582, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 490, 7} true; + assume {:verifier.code 0} true; + $i589 := $i587; + assume {:branchcond $i588} true; + goto $bb352, $bb353; +$bb346: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 15} true; + assume {:verifier.code 0} true; + assume ($i575 == 1); + goto $bb347; +$bb347: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 481, 9} true; + assume {:verifier.code 0} true; + $i578 := $add.i32($i572, 1); + call {:cexpr "c"} boogie_si_record_i32($i578); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 482, 5} true; + assume {:verifier.code 0} true; + $i577 := $i578; + goto $bb351; +$bb348: + assume !(($i575 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 20} true; + assume {:verifier.code 0} true; + $i576 := $sgt.i32($i571, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 9} true; + assume {:verifier.code 0} true; + $i577 := $i572; + assume {:branchcond $i576} true; + goto $bb349, $bb350; +$bb349: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 9} true; + assume {:verifier.code 0} true; + assume ($i576 == 1); + goto $bb347; +$bb350: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 9} true; + assume {:verifier.code 0} true; + assume !(($i576 == 1)); + goto $bb351; +$bb351: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 483, 3} true; + assume {:verifier.code 0} true; + $i574 := $i577; + goto $bb345; +$bb352: + assume ($i588 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 11} true; + assume {:verifier.code 0} true; + $i590 := $slt.i32($i586, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i590} true; + goto $bb355, $bb357; +$bb353: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 490, 7} true; + assume {:verifier.code 0} true; + assume !(($i588 == 1)); + goto $bb354; +$bb354: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 495, 7} true; + assume {:verifier.code 0} true; + $i594 := $sext.i32.i64($i582); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 495, 9} true; + assume {:verifier.code 0} true; + $i595 := $srem.i64($i594, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 495, 7} true; + assume {:verifier.code 0} true; + $i596 := $trunc.i64.i32($i595); + call {:cexpr "a"} boogie_si_record_i32($i596); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 496, 5} true; + assume {:verifier.code 0} true; + $i597 := $add.i32($i596, $i596); + call {:cexpr "a"} boogie_si_record_i32($i597); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 497, 7} true; + assume {:verifier.code 0} true; + $i598 := $sext.i32.i64($i586); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 497, 9} true; + assume {:verifier.code 0} true; + $i599 := $srem.i64($i598, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 497, 7} true; + assume {:verifier.code 0} true; + $i600 := $trunc.i64.i32($i599); + call {:cexpr "b"} boogie_si_record_i32($i600); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 498, 5} true; + assume {:verifier.code 0} true; + $i601 := $add.i32($i600, $i600); + call {:cexpr "b"} boogie_si_record_i32($i601); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 500, 5} true; + assume {:verifier.code 0} true; + $i602 := $add.i32($i589, $i589); + call {:cexpr "c"} boogie_si_record_i32($i602); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 501, 9} true; + assume {:verifier.code 0} true; + $i603 := $slt.i32($i597, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 501, 7} true; + assume {:verifier.code 0} true; + $i604 := $i602; + assume {:branchcond $i603} true; + goto $bb361, $bb362; +$bb355: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 15} true; + assume {:verifier.code 0} true; + assume ($i590 == 1); + goto $bb356; +$bb356: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 492, 9} true; + assume {:verifier.code 0} true; + $i593 := $add.i32($i587, 1); + call {:cexpr "c"} boogie_si_record_i32($i593); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 493, 5} true; + assume {:verifier.code 0} true; + $i592 := $i593; + goto $bb360; +$bb357: + assume !(($i590 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 20} true; + assume {:verifier.code 0} true; + $i591 := $sgt.i32($i586, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 9} true; + assume {:verifier.code 0} true; + $i592 := $i587; + assume {:branchcond $i591} true; + goto $bb358, $bb359; +$bb358: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 9} true; + assume {:verifier.code 0} true; + assume ($i591 == 1); + goto $bb356; +$bb359: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 9} true; + assume {:verifier.code 0} true; + assume !(($i591 == 1)); + goto $bb360; +$bb360: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 494, 3} true; + assume {:verifier.code 0} true; + $i589 := $i592; + goto $bb354; +$bb361: + assume ($i603 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 11} true; + assume {:verifier.code 0} true; + $i605 := $slt.i32($i601, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i605} true; + goto $bb364, $bb366; +$bb362: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 501, 7} true; + assume {:verifier.code 0} true; + assume !(($i603 == 1)); + goto $bb363; +$bb363: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 506, 7} true; + assume {:verifier.code 0} true; + $i609 := $sext.i32.i64($i597); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 506, 9} true; + assume {:verifier.code 0} true; + $i610 := $srem.i64($i609, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 506, 7} true; + assume {:verifier.code 0} true; + $i611 := $trunc.i64.i32($i610); + call {:cexpr "a"} boogie_si_record_i32($i611); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 507, 5} true; + assume {:verifier.code 0} true; + $i612 := $add.i32($i611, $i611); + call {:cexpr "a"} boogie_si_record_i32($i612); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 508, 7} true; + assume {:verifier.code 0} true; + $i613 := $sext.i32.i64($i601); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 508, 9} true; + assume {:verifier.code 0} true; + $i614 := $srem.i64($i613, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 508, 7} true; + assume {:verifier.code 0} true; + $i615 := $trunc.i64.i32($i614); + call {:cexpr "b"} boogie_si_record_i32($i615); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 509, 5} true; + assume {:verifier.code 0} true; + $i616 := $add.i32($i615, $i615); + call {:cexpr "b"} boogie_si_record_i32($i616); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 511, 5} true; + assume {:verifier.code 0} true; + $i617 := $add.i32($i604, $i604); + call {:cexpr "c"} boogie_si_record_i32($i617); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 512, 9} true; + assume {:verifier.code 0} true; + $i618 := $slt.i32($i612, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 512, 7} true; + assume {:verifier.code 0} true; + $i619 := $i617; + assume {:branchcond $i618} true; + goto $bb370, $bb371; +$bb364: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 15} true; + assume {:verifier.code 0} true; + assume ($i605 == 1); + goto $bb365; +$bb365: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 503, 9} true; + assume {:verifier.code 0} true; + $i608 := $add.i32($i602, 1); + call {:cexpr "c"} boogie_si_record_i32($i608); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 504, 5} true; + assume {:verifier.code 0} true; + $i607 := $i608; + goto $bb369; +$bb366: + assume !(($i605 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 20} true; + assume {:verifier.code 0} true; + $i606 := $sgt.i32($i601, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 9} true; + assume {:verifier.code 0} true; + $i607 := $i602; + assume {:branchcond $i606} true; + goto $bb367, $bb368; +$bb367: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 9} true; + assume {:verifier.code 0} true; + assume ($i606 == 1); + goto $bb365; +$bb368: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 9} true; + assume {:verifier.code 0} true; + assume !(($i606 == 1)); + goto $bb369; +$bb369: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 505, 3} true; + assume {:verifier.code 0} true; + $i604 := $i607; + goto $bb363; +$bb370: + assume ($i618 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 11} true; + assume {:verifier.code 0} true; + $i620 := $slt.i32($i616, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i620} true; + goto $bb373, $bb375; +$bb371: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 512, 7} true; + assume {:verifier.code 0} true; + assume !(($i618 == 1)); + goto $bb372; +$bb372: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 517, 7} true; + assume {:verifier.code 0} true; + $i624 := $sext.i32.i64($i612); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 517, 9} true; + assume {:verifier.code 0} true; + $i625 := $srem.i64($i624, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 517, 7} true; + assume {:verifier.code 0} true; + $i626 := $trunc.i64.i32($i625); + call {:cexpr "a"} boogie_si_record_i32($i626); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 518, 5} true; + assume {:verifier.code 0} true; + $i627 := $add.i32($i626, $i626); + call {:cexpr "a"} boogie_si_record_i32($i627); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 519, 7} true; + assume {:verifier.code 0} true; + $i628 := $sext.i32.i64($i616); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 519, 9} true; + assume {:verifier.code 0} true; + $i629 := $srem.i64($i628, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 519, 7} true; + assume {:verifier.code 0} true; + $i630 := $trunc.i64.i32($i629); + call {:cexpr "b"} boogie_si_record_i32($i630); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 520, 5} true; + assume {:verifier.code 0} true; + $i631 := $add.i32($i630, $i630); + call {:cexpr "b"} boogie_si_record_i32($i631); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 522, 5} true; + assume {:verifier.code 0} true; + $i632 := $add.i32($i619, $i619); + call {:cexpr "c"} boogie_si_record_i32($i632); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 523, 9} true; + assume {:verifier.code 0} true; + $i633 := $slt.i32($i627, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 523, 7} true; + assume {:verifier.code 0} true; + $i634 := $i632; + assume {:branchcond $i633} true; + goto $bb379, $bb380; +$bb373: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 15} true; + assume {:verifier.code 0} true; + assume ($i620 == 1); + goto $bb374; +$bb374: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 514, 9} true; + assume {:verifier.code 0} true; + $i623 := $add.i32($i617, 1); + call {:cexpr "c"} boogie_si_record_i32($i623); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 515, 5} true; + assume {:verifier.code 0} true; + $i622 := $i623; + goto $bb378; +$bb375: + assume !(($i620 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 20} true; + assume {:verifier.code 0} true; + $i621 := $sgt.i32($i616, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 9} true; + assume {:verifier.code 0} true; + $i622 := $i617; + assume {:branchcond $i621} true; + goto $bb376, $bb377; +$bb376: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 9} true; + assume {:verifier.code 0} true; + assume ($i621 == 1); + goto $bb374; +$bb377: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 9} true; + assume {:verifier.code 0} true; + assume !(($i621 == 1)); + goto $bb378; +$bb378: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 516, 3} true; + assume {:verifier.code 0} true; + $i619 := $i622; + goto $bb372; +$bb379: + assume ($i633 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 11} true; + assume {:verifier.code 0} true; + $i635 := $slt.i32($i631, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i635} true; + goto $bb382, $bb384; +$bb380: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 523, 7} true; + assume {:verifier.code 0} true; + assume !(($i633 == 1)); + goto $bb381; +$bb381: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 528, 7} true; + assume {:verifier.code 0} true; + $i639 := $sext.i32.i64($i627); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 528, 9} true; + assume {:verifier.code 0} true; + $i640 := $srem.i64($i639, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 528, 7} true; + assume {:verifier.code 0} true; + $i641 := $trunc.i64.i32($i640); + call {:cexpr "a"} boogie_si_record_i32($i641); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 529, 5} true; + assume {:verifier.code 0} true; + $i642 := $add.i32($i641, $i641); + call {:cexpr "a"} boogie_si_record_i32($i642); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 530, 7} true; + assume {:verifier.code 0} true; + $i643 := $sext.i32.i64($i631); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 530, 9} true; + assume {:verifier.code 0} true; + $i644 := $srem.i64($i643, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 530, 7} true; + assume {:verifier.code 0} true; + $i645 := $trunc.i64.i32($i644); + call {:cexpr "b"} boogie_si_record_i32($i645); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 531, 5} true; + assume {:verifier.code 0} true; + $i646 := $add.i32($i645, $i645); + call {:cexpr "b"} boogie_si_record_i32($i646); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 533, 5} true; + assume {:verifier.code 0} true; + $i647 := $add.i32($i634, $i634); + call {:cexpr "c"} boogie_si_record_i32($i647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 534, 9} true; + assume {:verifier.code 0} true; + $i648 := $slt.i32($i642, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 534, 7} true; + assume {:verifier.code 0} true; + $i649 := $i647; + assume {:branchcond $i648} true; + goto $bb388, $bb389; +$bb382: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 15} true; + assume {:verifier.code 0} true; + assume ($i635 == 1); + goto $bb383; +$bb383: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 525, 9} true; + assume {:verifier.code 0} true; + $i638 := $add.i32($i632, 1); + call {:cexpr "c"} boogie_si_record_i32($i638); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 526, 5} true; + assume {:verifier.code 0} true; + $i637 := $i638; + goto $bb387; +$bb384: + assume !(($i635 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 20} true; + assume {:verifier.code 0} true; + $i636 := $sgt.i32($i631, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 9} true; + assume {:verifier.code 0} true; + $i637 := $i632; + assume {:branchcond $i636} true; + goto $bb385, $bb386; +$bb385: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 9} true; + assume {:verifier.code 0} true; + assume ($i636 == 1); + goto $bb383; +$bb386: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 9} true; + assume {:verifier.code 0} true; + assume !(($i636 == 1)); + goto $bb387; +$bb387: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 527, 3} true; + assume {:verifier.code 0} true; + $i634 := $i637; + goto $bb381; +$bb388: + assume ($i648 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 11} true; + assume {:verifier.code 0} true; + $i650 := $slt.i32($i646, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i650} true; + goto $bb391, $bb393; +$bb389: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 534, 7} true; + assume {:verifier.code 0} true; + assume !(($i648 == 1)); + goto $bb390; +$bb390: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 539, 7} true; + assume {:verifier.code 0} true; + $i654 := $sext.i32.i64($i642); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 539, 9} true; + assume {:verifier.code 0} true; + $i655 := $srem.i64($i654, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 539, 7} true; + assume {:verifier.code 0} true; + $i656 := $trunc.i64.i32($i655); + call {:cexpr "a"} boogie_si_record_i32($i656); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 540, 5} true; + assume {:verifier.code 0} true; + $i657 := $add.i32($i656, $i656); + call {:cexpr "a"} boogie_si_record_i32($i657); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 541, 7} true; + assume {:verifier.code 0} true; + $i658 := $sext.i32.i64($i646); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 541, 9} true; + assume {:verifier.code 0} true; + $i659 := $srem.i64($i658, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 541, 7} true; + assume {:verifier.code 0} true; + $i660 := $trunc.i64.i32($i659); + call {:cexpr "b"} boogie_si_record_i32($i660); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 542, 5} true; + assume {:verifier.code 0} true; + $i661 := $add.i32($i660, $i660); + call {:cexpr "b"} boogie_si_record_i32($i661); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 544, 5} true; + assume {:verifier.code 0} true; + $i662 := $add.i32($i649, $i649); + call {:cexpr "c"} boogie_si_record_i32($i662); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 545, 9} true; + assume {:verifier.code 0} true; + $i663 := $slt.i32($i657, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 545, 7} true; + assume {:verifier.code 0} true; + $i664 := $i662; + assume {:branchcond $i663} true; + goto $bb397, $bb398; +$bb391: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 15} true; + assume {:verifier.code 0} true; + assume ($i650 == 1); + goto $bb392; +$bb392: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 536, 9} true; + assume {:verifier.code 0} true; + $i653 := $add.i32($i647, 1); + call {:cexpr "c"} boogie_si_record_i32($i653); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 537, 5} true; + assume {:verifier.code 0} true; + $i652 := $i653; + goto $bb396; +$bb393: + assume !(($i650 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 20} true; + assume {:verifier.code 0} true; + $i651 := $sgt.i32($i646, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 9} true; + assume {:verifier.code 0} true; + $i652 := $i647; + assume {:branchcond $i651} true; + goto $bb394, $bb395; +$bb394: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 9} true; + assume {:verifier.code 0} true; + assume ($i651 == 1); + goto $bb392; +$bb395: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 9} true; + assume {:verifier.code 0} true; + assume !(($i651 == 1)); + goto $bb396; +$bb396: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 538, 3} true; + assume {:verifier.code 0} true; + $i649 := $i652; + goto $bb390; +$bb397: + assume ($i663 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 11} true; + assume {:verifier.code 0} true; + $i665 := $slt.i32($i661, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i665} true; + goto $bb400, $bb402; +$bb398: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 545, 7} true; + assume {:verifier.code 0} true; + assume !(($i663 == 1)); + goto $bb399; +$bb399: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 550, 7} true; + assume {:verifier.code 0} true; + $i669 := $sext.i32.i64($i657); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 550, 9} true; + assume {:verifier.code 0} true; + $i670 := $srem.i64($i669, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 550, 7} true; + assume {:verifier.code 0} true; + $i671 := $trunc.i64.i32($i670); + call {:cexpr "a"} boogie_si_record_i32($i671); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 551, 5} true; + assume {:verifier.code 0} true; + $i672 := $add.i32($i671, $i671); + call {:cexpr "a"} boogie_si_record_i32($i672); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 552, 7} true; + assume {:verifier.code 0} true; + $i673 := $sext.i32.i64($i661); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 552, 9} true; + assume {:verifier.code 0} true; + $i674 := $srem.i64($i673, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 552, 7} true; + assume {:verifier.code 0} true; + $i675 := $trunc.i64.i32($i674); + call {:cexpr "b"} boogie_si_record_i32($i675); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 553, 5} true; + assume {:verifier.code 0} true; + $i676 := $add.i32($i675, $i675); + call {:cexpr "b"} boogie_si_record_i32($i676); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 555, 5} true; + assume {:verifier.code 0} true; + $i677 := $add.i32($i664, $i664); + call {:cexpr "c"} boogie_si_record_i32($i677); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 556, 9} true; + assume {:verifier.code 0} true; + $i678 := $slt.i32($i672, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 556, 7} true; + assume {:verifier.code 0} true; + $i679 := $i677; + assume {:branchcond $i678} true; + goto $bb406, $bb407; +$bb400: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 15} true; + assume {:verifier.code 0} true; + assume ($i665 == 1); + goto $bb401; +$bb401: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 547, 9} true; + assume {:verifier.code 0} true; + $i668 := $add.i32($i662, 1); + call {:cexpr "c"} boogie_si_record_i32($i668); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 548, 5} true; + assume {:verifier.code 0} true; + $i667 := $i668; + goto $bb405; +$bb402: + assume !(($i665 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 20} true; + assume {:verifier.code 0} true; + $i666 := $sgt.i32($i661, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 9} true; + assume {:verifier.code 0} true; + $i667 := $i662; + assume {:branchcond $i666} true; + goto $bb403, $bb404; +$bb403: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 9} true; + assume {:verifier.code 0} true; + assume ($i666 == 1); + goto $bb401; +$bb404: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 9} true; + assume {:verifier.code 0} true; + assume !(($i666 == 1)); + goto $bb405; +$bb405: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 549, 3} true; + assume {:verifier.code 0} true; + $i664 := $i667; + goto $bb399; +$bb406: + assume ($i678 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 11} true; + assume {:verifier.code 0} true; + $i680 := $slt.i32($i676, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i680} true; + goto $bb409, $bb411; +$bb407: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 556, 7} true; + assume {:verifier.code 0} true; + assume !(($i678 == 1)); + goto $bb408; +$bb408: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 561, 7} true; + assume {:verifier.code 0} true; + $i684 := $sext.i32.i64($i672); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 561, 9} true; + assume {:verifier.code 0} true; + $i685 := $srem.i64($i684, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 561, 7} true; + assume {:verifier.code 0} true; + $i686 := $trunc.i64.i32($i685); + call {:cexpr "a"} boogie_si_record_i32($i686); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 562, 5} true; + assume {:verifier.code 0} true; + $i687 := $add.i32($i686, $i686); + call {:cexpr "a"} boogie_si_record_i32($i687); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 563, 7} true; + assume {:verifier.code 0} true; + $i688 := $sext.i32.i64($i676); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 563, 9} true; + assume {:verifier.code 0} true; + $i689 := $srem.i64($i688, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 563, 7} true; + assume {:verifier.code 0} true; + $i690 := $trunc.i64.i32($i689); + call {:cexpr "b"} boogie_si_record_i32($i690); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 564, 5} true; + assume {:verifier.code 0} true; + $i691 := $add.i32($i690, $i690); + call {:cexpr "b"} boogie_si_record_i32($i691); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 566, 5} true; + assume {:verifier.code 0} true; + $i692 := $add.i32($i679, $i679); + call {:cexpr "c"} boogie_si_record_i32($i692); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 567, 9} true; + assume {:verifier.code 0} true; + $i693 := $slt.i32($i687, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 567, 7} true; + assume {:verifier.code 0} true; + $i694 := $i692; + assume {:branchcond $i693} true; + goto $bb415, $bb416; +$bb409: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 15} true; + assume {:verifier.code 0} true; + assume ($i680 == 1); + goto $bb410; +$bb410: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 558, 9} true; + assume {:verifier.code 0} true; + $i683 := $add.i32($i677, 1); + call {:cexpr "c"} boogie_si_record_i32($i683); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 559, 5} true; + assume {:verifier.code 0} true; + $i682 := $i683; + goto $bb414; +$bb411: + assume !(($i680 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 20} true; + assume {:verifier.code 0} true; + $i681 := $sgt.i32($i676, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 9} true; + assume {:verifier.code 0} true; + $i682 := $i677; + assume {:branchcond $i681} true; + goto $bb412, $bb413; +$bb412: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 9} true; + assume {:verifier.code 0} true; + assume ($i681 == 1); + goto $bb410; +$bb413: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 9} true; + assume {:verifier.code 0} true; + assume !(($i681 == 1)); + goto $bb414; +$bb414: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 560, 3} true; + assume {:verifier.code 0} true; + $i679 := $i682; + goto $bb408; +$bb415: + assume ($i693 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 11} true; + assume {:verifier.code 0} true; + $i695 := $slt.i32($i691, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i695} true; + goto $bb418, $bb420; +$bb416: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 567, 7} true; + assume {:verifier.code 0} true; + assume !(($i693 == 1)); + goto $bb417; +$bb417: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 572, 7} true; + assume {:verifier.code 0} true; + $i699 := $sext.i32.i64($i687); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 572, 9} true; + assume {:verifier.code 0} true; + $i700 := $srem.i64($i699, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 572, 7} true; + assume {:verifier.code 0} true; + $i701 := $trunc.i64.i32($i700); + call {:cexpr "a"} boogie_si_record_i32($i701); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 573, 5} true; + assume {:verifier.code 0} true; + $i702 := $add.i32($i701, $i701); + call {:cexpr "a"} boogie_si_record_i32($i702); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 574, 7} true; + assume {:verifier.code 0} true; + $i703 := $sext.i32.i64($i691); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 574, 9} true; + assume {:verifier.code 0} true; + $i704 := $srem.i64($i703, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 574, 7} true; + assume {:verifier.code 0} true; + $i705 := $trunc.i64.i32($i704); + call {:cexpr "b"} boogie_si_record_i32($i705); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 575, 5} true; + assume {:verifier.code 0} true; + $i706 := $add.i32($i705, $i705); + call {:cexpr "b"} boogie_si_record_i32($i706); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 577, 5} true; + assume {:verifier.code 0} true; + $i707 := $add.i32($i694, $i694); + call {:cexpr "c"} boogie_si_record_i32($i707); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 578, 9} true; + assume {:verifier.code 0} true; + $i708 := $slt.i32($i702, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 578, 7} true; + assume {:verifier.code 0} true; + $i709 := $i707; + assume {:branchcond $i708} true; + goto $bb424, $bb425; +$bb418: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 15} true; + assume {:verifier.code 0} true; + assume ($i695 == 1); + goto $bb419; +$bb419: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 569, 9} true; + assume {:verifier.code 0} true; + $i698 := $add.i32($i692, 1); + call {:cexpr "c"} boogie_si_record_i32($i698); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 570, 5} true; + assume {:verifier.code 0} true; + $i697 := $i698; + goto $bb423; +$bb420: + assume !(($i695 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 20} true; + assume {:verifier.code 0} true; + $i696 := $sgt.i32($i691, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 9} true; + assume {:verifier.code 0} true; + $i697 := $i692; + assume {:branchcond $i696} true; + goto $bb421, $bb422; +$bb421: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 9} true; + assume {:verifier.code 0} true; + assume ($i696 == 1); + goto $bb419; +$bb422: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 9} true; + assume {:verifier.code 0} true; + assume !(($i696 == 1)); + goto $bb423; +$bb423: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 571, 3} true; + assume {:verifier.code 0} true; + $i694 := $i697; + goto $bb417; +$bb424: + assume ($i708 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 11} true; + assume {:verifier.code 0} true; + $i710 := $slt.i32($i706, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i710} true; + goto $bb427, $bb429; +$bb425: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 578, 7} true; + assume {:verifier.code 0} true; + assume !(($i708 == 1)); + goto $bb426; +$bb426: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 583, 7} true; + assume {:verifier.code 0} true; + $i714 := $sext.i32.i64($i702); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 583, 9} true; + assume {:verifier.code 0} true; + $i715 := $srem.i64($i714, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 583, 7} true; + assume {:verifier.code 0} true; + $i716 := $trunc.i64.i32($i715); + call {:cexpr "a"} boogie_si_record_i32($i716); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 584, 5} true; + assume {:verifier.code 0} true; + $i717 := $add.i32($i716, $i716); + call {:cexpr "a"} boogie_si_record_i32($i717); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 585, 7} true; + assume {:verifier.code 0} true; + $i718 := $sext.i32.i64($i706); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 585, 9} true; + assume {:verifier.code 0} true; + $i719 := $srem.i64($i718, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 585, 7} true; + assume {:verifier.code 0} true; + $i720 := $trunc.i64.i32($i719); + call {:cexpr "b"} boogie_si_record_i32($i720); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 586, 5} true; + assume {:verifier.code 0} true; + $i721 := $add.i32($i720, $i720); + call {:cexpr "b"} boogie_si_record_i32($i721); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 588, 5} true; + assume {:verifier.code 0} true; + $i722 := $add.i32($i709, $i709); + call {:cexpr "c"} boogie_si_record_i32($i722); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 589, 9} true; + assume {:verifier.code 0} true; + $i723 := $slt.i32($i717, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 589, 7} true; + assume {:verifier.code 0} true; + $i724 := $i722; + assume {:branchcond $i723} true; + goto $bb433, $bb434; +$bb427: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 15} true; + assume {:verifier.code 0} true; + assume ($i710 == 1); + goto $bb428; +$bb428: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 580, 9} true; + assume {:verifier.code 0} true; + $i713 := $add.i32($i707, 1); + call {:cexpr "c"} boogie_si_record_i32($i713); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 581, 5} true; + assume {:verifier.code 0} true; + $i712 := $i713; + goto $bb432; +$bb429: + assume !(($i710 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 20} true; + assume {:verifier.code 0} true; + $i711 := $sgt.i32($i706, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 9} true; + assume {:verifier.code 0} true; + $i712 := $i707; + assume {:branchcond $i711} true; + goto $bb430, $bb431; +$bb430: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 9} true; + assume {:verifier.code 0} true; + assume ($i711 == 1); + goto $bb428; +$bb431: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 9} true; + assume {:verifier.code 0} true; + assume !(($i711 == 1)); + goto $bb432; +$bb432: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 582, 3} true; + assume {:verifier.code 0} true; + $i709 := $i712; + goto $bb426; +$bb433: + assume ($i723 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 11} true; + assume {:verifier.code 0} true; + $i725 := $slt.i32($i721, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i725} true; + goto $bb436, $bb438; +$bb434: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 589, 7} true; + assume {:verifier.code 0} true; + assume !(($i723 == 1)); + goto $bb435; +$bb435: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 594, 7} true; + assume {:verifier.code 0} true; + $i729 := $sext.i32.i64($i717); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 594, 9} true; + assume {:verifier.code 0} true; + $i730 := $srem.i64($i729, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 594, 7} true; + assume {:verifier.code 0} true; + $i731 := $trunc.i64.i32($i730); + call {:cexpr "a"} boogie_si_record_i32($i731); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 595, 5} true; + assume {:verifier.code 0} true; + $i732 := $add.i32($i731, $i731); + call {:cexpr "a"} boogie_si_record_i32($i732); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 596, 7} true; + assume {:verifier.code 0} true; + $i733 := $sext.i32.i64($i721); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 596, 9} true; + assume {:verifier.code 0} true; + $i734 := $srem.i64($i733, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 596, 7} true; + assume {:verifier.code 0} true; + $i735 := $trunc.i64.i32($i734); + call {:cexpr "b"} boogie_si_record_i32($i735); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 597, 5} true; + assume {:verifier.code 0} true; + $i736 := $add.i32($i735, $i735); + call {:cexpr "b"} boogie_si_record_i32($i736); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 599, 5} true; + assume {:verifier.code 0} true; + $i737 := $add.i32($i724, $i724); + call {:cexpr "c"} boogie_si_record_i32($i737); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 600, 9} true; + assume {:verifier.code 0} true; + $i738 := $slt.i32($i732, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 600, 7} true; + assume {:verifier.code 0} true; + $i739 := $i737; + assume {:branchcond $i738} true; + goto $bb442, $bb443; +$bb436: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 15} true; + assume {:verifier.code 0} true; + assume ($i725 == 1); + goto $bb437; +$bb437: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 591, 9} true; + assume {:verifier.code 0} true; + $i728 := $add.i32($i722, 1); + call {:cexpr "c"} boogie_si_record_i32($i728); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 592, 5} true; + assume {:verifier.code 0} true; + $i727 := $i728; + goto $bb441; +$bb438: + assume !(($i725 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 20} true; + assume {:verifier.code 0} true; + $i726 := $sgt.i32($i721, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 9} true; + assume {:verifier.code 0} true; + $i727 := $i722; + assume {:branchcond $i726} true; + goto $bb439, $bb440; +$bb439: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 9} true; + assume {:verifier.code 0} true; + assume ($i726 == 1); + goto $bb437; +$bb440: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 9} true; + assume {:verifier.code 0} true; + assume !(($i726 == 1)); + goto $bb441; +$bb441: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 593, 3} true; + assume {:verifier.code 0} true; + $i724 := $i727; + goto $bb435; +$bb442: + assume ($i738 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 11} true; + assume {:verifier.code 0} true; + $i740 := $slt.i32($i736, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i740} true; + goto $bb445, $bb447; +$bb443: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 600, 7} true; + assume {:verifier.code 0} true; + assume !(($i738 == 1)); + goto $bb444; +$bb444: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 605, 7} true; + assume {:verifier.code 0} true; + $i744 := $sext.i32.i64($i732); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 605, 9} true; + assume {:verifier.code 0} true; + $i745 := $srem.i64($i744, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 605, 7} true; + assume {:verifier.code 0} true; + $i746 := $trunc.i64.i32($i745); + call {:cexpr "a"} boogie_si_record_i32($i746); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 606, 5} true; + assume {:verifier.code 0} true; + $i747 := $add.i32($i746, $i746); + call {:cexpr "a"} boogie_si_record_i32($i747); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 607, 7} true; + assume {:verifier.code 0} true; + $i748 := $sext.i32.i64($i736); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 607, 9} true; + assume {:verifier.code 0} true; + $i749 := $srem.i64($i748, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 607, 7} true; + assume {:verifier.code 0} true; + $i750 := $trunc.i64.i32($i749); + call {:cexpr "b"} boogie_si_record_i32($i750); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 608, 5} true; + assume {:verifier.code 0} true; + $i751 := $add.i32($i750, $i750); + call {:cexpr "b"} boogie_si_record_i32($i751); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 610, 5} true; + assume {:verifier.code 0} true; + $i752 := $add.i32($i739, $i739); + call {:cexpr "c"} boogie_si_record_i32($i752); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 611, 9} true; + assume {:verifier.code 0} true; + $i753 := $slt.i32($i747, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 611, 7} true; + assume {:verifier.code 0} true; + $i754 := $i752; + assume {:branchcond $i753} true; + goto $bb451, $bb452; +$bb445: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 15} true; + assume {:verifier.code 0} true; + assume ($i740 == 1); + goto $bb446; +$bb446: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 602, 9} true; + assume {:verifier.code 0} true; + $i743 := $add.i32($i737, 1); + call {:cexpr "c"} boogie_si_record_i32($i743); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 603, 5} true; + assume {:verifier.code 0} true; + $i742 := $i743; + goto $bb450; +$bb447: + assume !(($i740 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 20} true; + assume {:verifier.code 0} true; + $i741 := $sgt.i32($i736, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 9} true; + assume {:verifier.code 0} true; + $i742 := $i737; + assume {:branchcond $i741} true; + goto $bb448, $bb449; +$bb448: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 9} true; + assume {:verifier.code 0} true; + assume ($i741 == 1); + goto $bb446; +$bb449: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 9} true; + assume {:verifier.code 0} true; + assume !(($i741 == 1)); + goto $bb450; +$bb450: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 604, 3} true; + assume {:verifier.code 0} true; + $i739 := $i742; + goto $bb444; +$bb451: + assume ($i753 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 11} true; + assume {:verifier.code 0} true; + $i755 := $slt.i32($i751, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i755} true; + goto $bb454, $bb456; +$bb452: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 611, 7} true; + assume {:verifier.code 0} true; + assume !(($i753 == 1)); + goto $bb453; +$bb453: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 616, 7} true; + assume {:verifier.code 0} true; + $i759 := $sext.i32.i64($i747); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 616, 9} true; + assume {:verifier.code 0} true; + $i760 := $srem.i64($i759, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 616, 7} true; + assume {:verifier.code 0} true; + $i761 := $trunc.i64.i32($i760); + call {:cexpr "a"} boogie_si_record_i32($i761); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 617, 5} true; + assume {:verifier.code 0} true; + $i762 := $add.i32($i761, $i761); + call {:cexpr "a"} boogie_si_record_i32($i762); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 618, 7} true; + assume {:verifier.code 0} true; + $i763 := $sext.i32.i64($i751); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 618, 9} true; + assume {:verifier.code 0} true; + $i764 := $srem.i64($i763, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 618, 7} true; + assume {:verifier.code 0} true; + $i765 := $trunc.i64.i32($i764); + call {:cexpr "b"} boogie_si_record_i32($i765); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 619, 5} true; + assume {:verifier.code 0} true; + $i766 := $add.i32($i765, $i765); + call {:cexpr "b"} boogie_si_record_i32($i766); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 621, 5} true; + assume {:verifier.code 0} true; + $i767 := $add.i32($i754, $i754); + call {:cexpr "c"} boogie_si_record_i32($i767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 622, 9} true; + assume {:verifier.code 0} true; + $i768 := $slt.i32($i762, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 622, 7} true; + assume {:verifier.code 0} true; + $i769 := $i767; + assume {:branchcond $i768} true; + goto $bb460, $bb461; +$bb454: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 15} true; + assume {:verifier.code 0} true; + assume ($i755 == 1); + goto $bb455; +$bb455: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 613, 9} true; + assume {:verifier.code 0} true; + $i758 := $add.i32($i752, 1); + call {:cexpr "c"} boogie_si_record_i32($i758); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 614, 5} true; + assume {:verifier.code 0} true; + $i757 := $i758; + goto $bb459; +$bb456: + assume !(($i755 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 20} true; + assume {:verifier.code 0} true; + $i756 := $sgt.i32($i751, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 9} true; + assume {:verifier.code 0} true; + $i757 := $i752; + assume {:branchcond $i756} true; + goto $bb457, $bb458; +$bb457: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 9} true; + assume {:verifier.code 0} true; + assume ($i756 == 1); + goto $bb455; +$bb458: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 9} true; + assume {:verifier.code 0} true; + assume !(($i756 == 1)); + goto $bb459; +$bb459: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 615, 3} true; + assume {:verifier.code 0} true; + $i754 := $i757; + goto $bb453; +$bb460: + assume ($i768 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 11} true; + assume {:verifier.code 0} true; + $i770 := $slt.i32($i766, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i770} true; + goto $bb463, $bb465; +$bb461: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 622, 7} true; + assume {:verifier.code 0} true; + assume !(($i768 == 1)); + goto $bb462; +$bb462: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 627, 7} true; + assume {:verifier.code 0} true; + $i774 := $sext.i32.i64($i762); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 627, 9} true; + assume {:verifier.code 0} true; + $i775 := $srem.i64($i774, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 627, 7} true; + assume {:verifier.code 0} true; + $i776 := $trunc.i64.i32($i775); + call {:cexpr "a"} boogie_si_record_i32($i776); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 628, 5} true; + assume {:verifier.code 0} true; + $i777 := $add.i32($i776, $i776); + call {:cexpr "a"} boogie_si_record_i32($i777); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 629, 7} true; + assume {:verifier.code 0} true; + $i778 := $sext.i32.i64($i766); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 629, 9} true; + assume {:verifier.code 0} true; + $i779 := $srem.i64($i778, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 629, 7} true; + assume {:verifier.code 0} true; + $i780 := $trunc.i64.i32($i779); + call {:cexpr "b"} boogie_si_record_i32($i780); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 630, 5} true; + assume {:verifier.code 0} true; + $i781 := $add.i32($i780, $i780); + call {:cexpr "b"} boogie_si_record_i32($i781); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 632, 5} true; + assume {:verifier.code 0} true; + $i782 := $add.i32($i769, $i769); + call {:cexpr "c"} boogie_si_record_i32($i782); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 633, 9} true; + assume {:verifier.code 0} true; + $i783 := $slt.i32($i777, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 633, 7} true; + assume {:verifier.code 0} true; + $i784 := $i782; + assume {:branchcond $i783} true; + goto $bb469, $bb470; +$bb463: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 15} true; + assume {:verifier.code 0} true; + assume ($i770 == 1); + goto $bb464; +$bb464: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 624, 9} true; + assume {:verifier.code 0} true; + $i773 := $add.i32($i767, 1); + call {:cexpr "c"} boogie_si_record_i32($i773); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 625, 5} true; + assume {:verifier.code 0} true; + $i772 := $i773; + goto $bb468; +$bb465: + assume !(($i770 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 20} true; + assume {:verifier.code 0} true; + $i771 := $sgt.i32($i766, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 9} true; + assume {:verifier.code 0} true; + $i772 := $i767; + assume {:branchcond $i771} true; + goto $bb466, $bb467; +$bb466: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 9} true; + assume {:verifier.code 0} true; + assume ($i771 == 1); + goto $bb464; +$bb467: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 9} true; + assume {:verifier.code 0} true; + assume !(($i771 == 1)); + goto $bb468; +$bb468: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 626, 3} true; + assume {:verifier.code 0} true; + $i769 := $i772; + goto $bb462; +$bb469: + assume ($i783 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 11} true; + assume {:verifier.code 0} true; + $i785 := $slt.i32($i781, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i785} true; + goto $bb472, $bb474; +$bb470: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 633, 7} true; + assume {:verifier.code 0} true; + assume !(($i783 == 1)); + goto $bb471; +$bb471: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 638, 7} true; + assume {:verifier.code 0} true; + $i789 := $sext.i32.i64($i777); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 638, 9} true; + assume {:verifier.code 0} true; + $i790 := $srem.i64($i789, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 638, 7} true; + assume {:verifier.code 0} true; + $i791 := $trunc.i64.i32($i790); + call {:cexpr "a"} boogie_si_record_i32($i791); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 639, 5} true; + assume {:verifier.code 0} true; + $i792 := $add.i32($i791, $i791); + call {:cexpr "a"} boogie_si_record_i32($i792); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 640, 7} true; + assume {:verifier.code 0} true; + $i793 := $sext.i32.i64($i781); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 640, 9} true; + assume {:verifier.code 0} true; + $i794 := $srem.i64($i793, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 640, 7} true; + assume {:verifier.code 0} true; + $i795 := $trunc.i64.i32($i794); + call {:cexpr "b"} boogie_si_record_i32($i795); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 641, 5} true; + assume {:verifier.code 0} true; + $i796 := $add.i32($i795, $i795); + call {:cexpr "b"} boogie_si_record_i32($i796); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 643, 5} true; + assume {:verifier.code 0} true; + $i797 := $add.i32($i784, $i784); + call {:cexpr "c"} boogie_si_record_i32($i797); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 644, 9} true; + assume {:verifier.code 0} true; + $i798 := $slt.i32($i792, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 644, 7} true; + assume {:verifier.code 0} true; + $i799 := $i797; + assume {:branchcond $i798} true; + goto $bb478, $bb479; +$bb472: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 15} true; + assume {:verifier.code 0} true; + assume ($i785 == 1); + goto $bb473; +$bb473: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 635, 9} true; + assume {:verifier.code 0} true; + $i788 := $add.i32($i782, 1); + call {:cexpr "c"} boogie_si_record_i32($i788); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 636, 5} true; + assume {:verifier.code 0} true; + $i787 := $i788; + goto $bb477; +$bb474: + assume !(($i785 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 20} true; + assume {:verifier.code 0} true; + $i786 := $sgt.i32($i781, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 9} true; + assume {:verifier.code 0} true; + $i787 := $i782; + assume {:branchcond $i786} true; + goto $bb475, $bb476; +$bb475: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 9} true; + assume {:verifier.code 0} true; + assume ($i786 == 1); + goto $bb473; +$bb476: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 9} true; + assume {:verifier.code 0} true; + assume !(($i786 == 1)); + goto $bb477; +$bb477: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 637, 3} true; + assume {:verifier.code 0} true; + $i784 := $i787; + goto $bb471; +$bb478: + assume ($i798 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 11} true; + assume {:verifier.code 0} true; + $i800 := $slt.i32($i796, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i800} true; + goto $bb481, $bb483; +$bb479: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 644, 7} true; + assume {:verifier.code 0} true; + assume !(($i798 == 1)); + goto $bb480; +$bb480: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 649, 7} true; + assume {:verifier.code 0} true; + $i804 := $sext.i32.i64($i792); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 649, 9} true; + assume {:verifier.code 0} true; + $i805 := $srem.i64($i804, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 649, 7} true; + assume {:verifier.code 0} true; + $i806 := $trunc.i64.i32($i805); + call {:cexpr "a"} boogie_si_record_i32($i806); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 650, 5} true; + assume {:verifier.code 0} true; + $i807 := $add.i32($i806, $i806); + call {:cexpr "a"} boogie_si_record_i32($i807); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 651, 7} true; + assume {:verifier.code 0} true; + $i808 := $sext.i32.i64($i796); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 651, 9} true; + assume {:verifier.code 0} true; + $i809 := $srem.i64($i808, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 651, 7} true; + assume {:verifier.code 0} true; + $i810 := $trunc.i64.i32($i809); + call {:cexpr "b"} boogie_si_record_i32($i810); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 652, 5} true; + assume {:verifier.code 0} true; + $i811 := $add.i32($i810, $i810); + call {:cexpr "b"} boogie_si_record_i32($i811); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 654, 5} true; + assume {:verifier.code 0} true; + $i812 := $add.i32($i799, $i799); + call {:cexpr "c"} boogie_si_record_i32($i812); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 655, 9} true; + assume {:verifier.code 0} true; + $i813 := $slt.i32($i807, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 655, 7} true; + assume {:verifier.code 0} true; + $i814 := $i812; + assume {:branchcond $i813} true; + goto $bb487, $bb488; +$bb481: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 15} true; + assume {:verifier.code 0} true; + assume ($i800 == 1); + goto $bb482; +$bb482: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 646, 9} true; + assume {:verifier.code 0} true; + $i803 := $add.i32($i797, 1); + call {:cexpr "c"} boogie_si_record_i32($i803); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 647, 5} true; + assume {:verifier.code 0} true; + $i802 := $i803; + goto $bb486; +$bb483: + assume !(($i800 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 20} true; + assume {:verifier.code 0} true; + $i801 := $sgt.i32($i796, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 9} true; + assume {:verifier.code 0} true; + $i802 := $i797; + assume {:branchcond $i801} true; + goto $bb484, $bb485; +$bb484: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 9} true; + assume {:verifier.code 0} true; + assume ($i801 == 1); + goto $bb482; +$bb485: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 9} true; + assume {:verifier.code 0} true; + assume !(($i801 == 1)); + goto $bb486; +$bb486: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 648, 3} true; + assume {:verifier.code 0} true; + $i799 := $i802; + goto $bb480; +$bb487: + assume ($i813 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 11} true; + assume {:verifier.code 0} true; + $i815 := $slt.i32($i811, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i815} true; + goto $bb490, $bb492; +$bb488: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 655, 7} true; + assume {:verifier.code 0} true; + assume !(($i813 == 1)); + goto $bb489; +$bb489: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 660, 7} true; + assume {:verifier.code 0} true; + $i819 := $sext.i32.i64($i807); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 660, 9} true; + assume {:verifier.code 0} true; + $i820 := $srem.i64($i819, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 660, 7} true; + assume {:verifier.code 0} true; + $i821 := $trunc.i64.i32($i820); + call {:cexpr "a"} boogie_si_record_i32($i821); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 661, 5} true; + assume {:verifier.code 0} true; + $i822 := $add.i32($i821, $i821); + call {:cexpr "a"} boogie_si_record_i32($i822); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 662, 7} true; + assume {:verifier.code 0} true; + $i823 := $sext.i32.i64($i811); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 662, 9} true; + assume {:verifier.code 0} true; + $i824 := $srem.i64($i823, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 662, 7} true; + assume {:verifier.code 0} true; + $i825 := $trunc.i64.i32($i824); + call {:cexpr "b"} boogie_si_record_i32($i825); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 663, 5} true; + assume {:verifier.code 0} true; + $i826 := $add.i32($i825, $i825); + call {:cexpr "b"} boogie_si_record_i32($i826); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 665, 5} true; + assume {:verifier.code 0} true; + $i827 := $add.i32($i814, $i814); + call {:cexpr "c"} boogie_si_record_i32($i827); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 666, 9} true; + assume {:verifier.code 0} true; + $i828 := $slt.i32($i822, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 666, 7} true; + assume {:verifier.code 0} true; + $i829 := $i827; + assume {:branchcond $i828} true; + goto $bb496, $bb497; +$bb490: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 15} true; + assume {:verifier.code 0} true; + assume ($i815 == 1); + goto $bb491; +$bb491: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 657, 9} true; + assume {:verifier.code 0} true; + $i818 := $add.i32($i812, 1); + call {:cexpr "c"} boogie_si_record_i32($i818); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 658, 5} true; + assume {:verifier.code 0} true; + $i817 := $i818; + goto $bb495; +$bb492: + assume !(($i815 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 20} true; + assume {:verifier.code 0} true; + $i816 := $sgt.i32($i811, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 9} true; + assume {:verifier.code 0} true; + $i817 := $i812; + assume {:branchcond $i816} true; + goto $bb493, $bb494; +$bb493: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 9} true; + assume {:verifier.code 0} true; + assume ($i816 == 1); + goto $bb491; +$bb494: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 9} true; + assume {:verifier.code 0} true; + assume !(($i816 == 1)); + goto $bb495; +$bb495: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 659, 3} true; + assume {:verifier.code 0} true; + $i814 := $i817; + goto $bb489; +$bb496: + assume ($i828 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 11} true; + assume {:verifier.code 0} true; + $i830 := $slt.i32($i826, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i830} true; + goto $bb499, $bb501; +$bb497: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 666, 7} true; + assume {:verifier.code 0} true; + assume !(($i828 == 1)); + goto $bb498; +$bb498: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 671, 7} true; + assume {:verifier.code 0} true; + $i834 := $sext.i32.i64($i822); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 671, 9} true; + assume {:verifier.code 0} true; + $i835 := $srem.i64($i834, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 671, 7} true; + assume {:verifier.code 0} true; + $i836 := $trunc.i64.i32($i835); + call {:cexpr "a"} boogie_si_record_i32($i836); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 672, 5} true; + assume {:verifier.code 0} true; + $i837 := $add.i32($i836, $i836); + call {:cexpr "a"} boogie_si_record_i32($i837); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 673, 7} true; + assume {:verifier.code 0} true; + $i838 := $sext.i32.i64($i826); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 673, 9} true; + assume {:verifier.code 0} true; + $i839 := $srem.i64($i838, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 673, 7} true; + assume {:verifier.code 0} true; + $i840 := $trunc.i64.i32($i839); + call {:cexpr "b"} boogie_si_record_i32($i840); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 674, 5} true; + assume {:verifier.code 0} true; + $i841 := $add.i32($i840, $i840); + call {:cexpr "b"} boogie_si_record_i32($i841); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 676, 5} true; + assume {:verifier.code 0} true; + $i842 := $add.i32($i829, $i829); + call {:cexpr "c"} boogie_si_record_i32($i842); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 677, 9} true; + assume {:verifier.code 0} true; + $i843 := $slt.i32($i837, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 677, 7} true; + assume {:verifier.code 0} true; + $i844 := $i842; + assume {:branchcond $i843} true; + goto $bb505, $bb506; +$bb499: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 15} true; + assume {:verifier.code 0} true; + assume ($i830 == 1); + goto $bb500; +$bb500: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 668, 9} true; + assume {:verifier.code 0} true; + $i833 := $add.i32($i827, 1); + call {:cexpr "c"} boogie_si_record_i32($i833); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 669, 5} true; + assume {:verifier.code 0} true; + $i832 := $i833; + goto $bb504; +$bb501: + assume !(($i830 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 20} true; + assume {:verifier.code 0} true; + $i831 := $sgt.i32($i826, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 9} true; + assume {:verifier.code 0} true; + $i832 := $i827; + assume {:branchcond $i831} true; + goto $bb502, $bb503; +$bb502: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 9} true; + assume {:verifier.code 0} true; + assume ($i831 == 1); + goto $bb500; +$bb503: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 9} true; + assume {:verifier.code 0} true; + assume !(($i831 == 1)); + goto $bb504; +$bb504: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 670, 3} true; + assume {:verifier.code 0} true; + $i829 := $i832; + goto $bb498; +$bb505: + assume ($i843 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 11} true; + assume {:verifier.code 0} true; + $i845 := $slt.i32($i841, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i845} true; + goto $bb508, $bb510; +$bb506: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 677, 7} true; + assume {:verifier.code 0} true; + assume !(($i843 == 1)); + goto $bb507; +$bb507: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 682, 7} true; + assume {:verifier.code 0} true; + $i849 := $sext.i32.i64($i837); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 682, 9} true; + assume {:verifier.code 0} true; + $i850 := $srem.i64($i849, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 682, 7} true; + assume {:verifier.code 0} true; + $i851 := $trunc.i64.i32($i850); + call {:cexpr "a"} boogie_si_record_i32($i851); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 683, 5} true; + assume {:verifier.code 0} true; + $i852 := $add.i32($i851, $i851); + call {:cexpr "a"} boogie_si_record_i32($i852); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 684, 7} true; + assume {:verifier.code 0} true; + $i853 := $sext.i32.i64($i841); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 684, 9} true; + assume {:verifier.code 0} true; + $i854 := $srem.i64($i853, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 684, 7} true; + assume {:verifier.code 0} true; + $i855 := $trunc.i64.i32($i854); + call {:cexpr "b"} boogie_si_record_i32($i855); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 685, 5} true; + assume {:verifier.code 0} true; + $i856 := $add.i32($i855, $i855); + call {:cexpr "b"} boogie_si_record_i32($i856); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 687, 5} true; + assume {:verifier.code 0} true; + $i857 := $add.i32($i844, $i844); + call {:cexpr "c"} boogie_si_record_i32($i857); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 688, 9} true; + assume {:verifier.code 0} true; + $i858 := $slt.i32($i852, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 688, 7} true; + assume {:verifier.code 0} true; + $i859 := $i857; + assume {:branchcond $i858} true; + goto $bb514, $bb515; +$bb508: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 15} true; + assume {:verifier.code 0} true; + assume ($i845 == 1); + goto $bb509; +$bb509: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 679, 9} true; + assume {:verifier.code 0} true; + $i848 := $add.i32($i842, 1); + call {:cexpr "c"} boogie_si_record_i32($i848); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 680, 5} true; + assume {:verifier.code 0} true; + $i847 := $i848; + goto $bb513; +$bb510: + assume !(($i845 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 20} true; + assume {:verifier.code 0} true; + $i846 := $sgt.i32($i841, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 9} true; + assume {:verifier.code 0} true; + $i847 := $i842; + assume {:branchcond $i846} true; + goto $bb511, $bb512; +$bb511: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 9} true; + assume {:verifier.code 0} true; + assume ($i846 == 1); + goto $bb509; +$bb512: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 9} true; + assume {:verifier.code 0} true; + assume !(($i846 == 1)); + goto $bb513; +$bb513: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 681, 3} true; + assume {:verifier.code 0} true; + $i844 := $i847; + goto $bb507; +$bb514: + assume ($i858 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 11} true; + assume {:verifier.code 0} true; + $i860 := $slt.i32($i856, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i860} true; + goto $bb517, $bb519; +$bb515: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 688, 7} true; + assume {:verifier.code 0} true; + assume !(($i858 == 1)); + goto $bb516; +$bb516: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 693, 7} true; + assume {:verifier.code 0} true; + $i864 := $sext.i32.i64($i852); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 693, 9} true; + assume {:verifier.code 0} true; + $i865 := $srem.i64($i864, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 693, 7} true; + assume {:verifier.code 0} true; + $i866 := $trunc.i64.i32($i865); + call {:cexpr "a"} boogie_si_record_i32($i866); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 694, 5} true; + assume {:verifier.code 0} true; + $i867 := $add.i32($i866, $i866); + call {:cexpr "a"} boogie_si_record_i32($i867); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 695, 7} true; + assume {:verifier.code 0} true; + $i868 := $sext.i32.i64($i856); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 695, 9} true; + assume {:verifier.code 0} true; + $i869 := $srem.i64($i868, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 695, 7} true; + assume {:verifier.code 0} true; + $i870 := $trunc.i64.i32($i869); + call {:cexpr "b"} boogie_si_record_i32($i870); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 696, 5} true; + assume {:verifier.code 0} true; + $i871 := $add.i32($i870, $i870); + call {:cexpr "b"} boogie_si_record_i32($i871); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 698, 5} true; + assume {:verifier.code 0} true; + $i872 := $add.i32($i859, $i859); + call {:cexpr "c"} boogie_si_record_i32($i872); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 699, 9} true; + assume {:verifier.code 0} true; + $i873 := $slt.i32($i867, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 699, 7} true; + assume {:verifier.code 0} true; + $i874 := $i872; + assume {:branchcond $i873} true; + goto $bb523, $bb524; +$bb517: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 15} true; + assume {:verifier.code 0} true; + assume ($i860 == 1); + goto $bb518; +$bb518: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 690, 9} true; + assume {:verifier.code 0} true; + $i863 := $add.i32($i857, 1); + call {:cexpr "c"} boogie_si_record_i32($i863); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 691, 5} true; + assume {:verifier.code 0} true; + $i862 := $i863; + goto $bb522; +$bb519: + assume !(($i860 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 20} true; + assume {:verifier.code 0} true; + $i861 := $sgt.i32($i856, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 9} true; + assume {:verifier.code 0} true; + $i862 := $i857; + assume {:branchcond $i861} true; + goto $bb520, $bb521; +$bb520: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 9} true; + assume {:verifier.code 0} true; + assume ($i861 == 1); + goto $bb518; +$bb521: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 9} true; + assume {:verifier.code 0} true; + assume !(($i861 == 1)); + goto $bb522; +$bb522: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 692, 3} true; + assume {:verifier.code 0} true; + $i859 := $i862; + goto $bb516; +$bb523: + assume ($i873 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 11} true; + assume {:verifier.code 0} true; + $i875 := $slt.i32($i871, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i875} true; + goto $bb526, $bb528; +$bb524: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 699, 7} true; + assume {:verifier.code 0} true; + assume !(($i873 == 1)); + goto $bb525; +$bb525: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 704, 7} true; + assume {:verifier.code 0} true; + $i879 := $sext.i32.i64($i867); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 704, 9} true; + assume {:verifier.code 0} true; + $i880 := $srem.i64($i879, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 704, 7} true; + assume {:verifier.code 0} true; + $i881 := $trunc.i64.i32($i880); + call {:cexpr "a"} boogie_si_record_i32($i881); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 705, 5} true; + assume {:verifier.code 0} true; + $i882 := $add.i32($i881, $i881); + call {:cexpr "a"} boogie_si_record_i32($i882); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 706, 7} true; + assume {:verifier.code 0} true; + $i883 := $sext.i32.i64($i871); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 706, 9} true; + assume {:verifier.code 0} true; + $i884 := $srem.i64($i883, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 706, 7} true; + assume {:verifier.code 0} true; + $i885 := $trunc.i64.i32($i884); + call {:cexpr "b"} boogie_si_record_i32($i885); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 707, 5} true; + assume {:verifier.code 0} true; + $i886 := $add.i32($i885, $i885); + call {:cexpr "b"} boogie_si_record_i32($i886); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 709, 5} true; + assume {:verifier.code 0} true; + $i887 := $add.i32($i874, $i874); + call {:cexpr "c"} boogie_si_record_i32($i887); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 710, 9} true; + assume {:verifier.code 0} true; + $i888 := $slt.i32($i882, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 710, 7} true; + assume {:verifier.code 0} true; + $i889 := $i887; + assume {:branchcond $i888} true; + goto $bb532, $bb533; +$bb526: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 15} true; + assume {:verifier.code 0} true; + assume ($i875 == 1); + goto $bb527; +$bb527: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 701, 9} true; + assume {:verifier.code 0} true; + $i878 := $add.i32($i872, 1); + call {:cexpr "c"} boogie_si_record_i32($i878); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 702, 5} true; + assume {:verifier.code 0} true; + $i877 := $i878; + goto $bb531; +$bb528: + assume !(($i875 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 20} true; + assume {:verifier.code 0} true; + $i876 := $sgt.i32($i871, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 9} true; + assume {:verifier.code 0} true; + $i877 := $i872; + assume {:branchcond $i876} true; + goto $bb529, $bb530; +$bb529: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 9} true; + assume {:verifier.code 0} true; + assume ($i876 == 1); + goto $bb527; +$bb530: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 9} true; + assume {:verifier.code 0} true; + assume !(($i876 == 1)); + goto $bb531; +$bb531: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 703, 3} true; + assume {:verifier.code 0} true; + $i874 := $i877; + goto $bb525; +$bb532: + assume ($i888 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 11} true; + assume {:verifier.code 0} true; + $i890 := $slt.i32($i886, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i890} true; + goto $bb535, $bb537; +$bb533: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 710, 7} true; + assume {:verifier.code 0} true; + assume !(($i888 == 1)); + goto $bb534; +$bb534: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 715, 7} true; + assume {:verifier.code 0} true; + $i894 := $sext.i32.i64($i882); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 715, 9} true; + assume {:verifier.code 0} true; + $i895 := $srem.i64($i894, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 715, 7} true; + assume {:verifier.code 0} true; + $i896 := $trunc.i64.i32($i895); + call {:cexpr "a"} boogie_si_record_i32($i896); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 716, 5} true; + assume {:verifier.code 0} true; + $i897 := $add.i32($i896, $i896); + call {:cexpr "a"} boogie_si_record_i32($i897); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 717, 7} true; + assume {:verifier.code 0} true; + $i898 := $sext.i32.i64($i886); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 717, 9} true; + assume {:verifier.code 0} true; + $i899 := $srem.i64($i898, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 717, 7} true; + assume {:verifier.code 0} true; + $i900 := $trunc.i64.i32($i899); + call {:cexpr "b"} boogie_si_record_i32($i900); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 718, 5} true; + assume {:verifier.code 0} true; + $i901 := $add.i32($i900, $i900); + call {:cexpr "b"} boogie_si_record_i32($i901); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 720, 5} true; + assume {:verifier.code 0} true; + $i902 := $add.i32($i889, $i889); + call {:cexpr "c"} boogie_si_record_i32($i902); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 721, 9} true; + assume {:verifier.code 0} true; + $i903 := $slt.i32($i897, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 721, 7} true; + assume {:verifier.code 0} true; + $i904 := $i902; + assume {:branchcond $i903} true; + goto $bb541, $bb542; +$bb535: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 15} true; + assume {:verifier.code 0} true; + assume ($i890 == 1); + goto $bb536; +$bb536: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 712, 9} true; + assume {:verifier.code 0} true; + $i893 := $add.i32($i887, 1); + call {:cexpr "c"} boogie_si_record_i32($i893); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 713, 5} true; + assume {:verifier.code 0} true; + $i892 := $i893; + goto $bb540; +$bb537: + assume !(($i890 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 20} true; + assume {:verifier.code 0} true; + $i891 := $sgt.i32($i886, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 9} true; + assume {:verifier.code 0} true; + $i892 := $i887; + assume {:branchcond $i891} true; + goto $bb538, $bb539; +$bb538: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 9} true; + assume {:verifier.code 0} true; + assume ($i891 == 1); + goto $bb536; +$bb539: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 9} true; + assume {:verifier.code 0} true; + assume !(($i891 == 1)); + goto $bb540; +$bb540: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 714, 3} true; + assume {:verifier.code 0} true; + $i889 := $i892; + goto $bb534; +$bb541: + assume ($i903 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 11} true; + assume {:verifier.code 0} true; + $i905 := $slt.i32($i901, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i905} true; + goto $bb544, $bb546; +$bb542: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 721, 7} true; + assume {:verifier.code 0} true; + assume !(($i903 == 1)); + goto $bb543; +$bb543: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 726, 7} true; + assume {:verifier.code 0} true; + $i909 := $sext.i32.i64($i897); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 726, 9} true; + assume {:verifier.code 0} true; + $i910 := $srem.i64($i909, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 726, 7} true; + assume {:verifier.code 0} true; + $i911 := $trunc.i64.i32($i910); + call {:cexpr "a"} boogie_si_record_i32($i911); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 727, 5} true; + assume {:verifier.code 0} true; + $i912 := $add.i32($i911, $i911); + call {:cexpr "a"} boogie_si_record_i32($i912); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 728, 7} true; + assume {:verifier.code 0} true; + $i913 := $sext.i32.i64($i901); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 728, 9} true; + assume {:verifier.code 0} true; + $i914 := $srem.i64($i913, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 728, 7} true; + assume {:verifier.code 0} true; + $i915 := $trunc.i64.i32($i914); + call {:cexpr "b"} boogie_si_record_i32($i915); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 729, 5} true; + assume {:verifier.code 0} true; + $i916 := $add.i32($i915, $i915); + call {:cexpr "b"} boogie_si_record_i32($i916); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 731, 5} true; + assume {:verifier.code 0} true; + $i917 := $add.i32($i904, $i904); + call {:cexpr "c"} boogie_si_record_i32($i917); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 732, 9} true; + assume {:verifier.code 0} true; + $i918 := $slt.i32($i912, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 732, 7} true; + assume {:verifier.code 0} true; + $i919 := $i917; + assume {:branchcond $i918} true; + goto $bb550, $bb551; +$bb544: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 15} true; + assume {:verifier.code 0} true; + assume ($i905 == 1); + goto $bb545; +$bb545: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 723, 9} true; + assume {:verifier.code 0} true; + $i908 := $add.i32($i902, 1); + call {:cexpr "c"} boogie_si_record_i32($i908); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 724, 5} true; + assume {:verifier.code 0} true; + $i907 := $i908; + goto $bb549; +$bb546: + assume !(($i905 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 20} true; + assume {:verifier.code 0} true; + $i906 := $sgt.i32($i901, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 9} true; + assume {:verifier.code 0} true; + $i907 := $i902; + assume {:branchcond $i906} true; + goto $bb547, $bb548; +$bb547: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 9} true; + assume {:verifier.code 0} true; + assume ($i906 == 1); + goto $bb545; +$bb548: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 9} true; + assume {:verifier.code 0} true; + assume !(($i906 == 1)); + goto $bb549; +$bb549: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 725, 3} true; + assume {:verifier.code 0} true; + $i904 := $i907; + goto $bb543; +$bb550: + assume ($i918 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 11} true; + assume {:verifier.code 0} true; + $i920 := $slt.i32($i916, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i920} true; + goto $bb553, $bb555; +$bb551: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 732, 7} true; + assume {:verifier.code 0} true; + assume !(($i918 == 1)); + goto $bb552; +$bb552: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 737, 7} true; + assume {:verifier.code 0} true; + $i924 := $sext.i32.i64($i912); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 737, 9} true; + assume {:verifier.code 0} true; + $i925 := $srem.i64($i924, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 737, 7} true; + assume {:verifier.code 0} true; + $i926 := $trunc.i64.i32($i925); + call {:cexpr "a"} boogie_si_record_i32($i926); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 738, 5} true; + assume {:verifier.code 0} true; + $i927 := $add.i32($i926, $i926); + call {:cexpr "a"} boogie_si_record_i32($i927); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 739, 7} true; + assume {:verifier.code 0} true; + $i928 := $sext.i32.i64($i916); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 739, 9} true; + assume {:verifier.code 0} true; + $i929 := $srem.i64($i928, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 739, 7} true; + assume {:verifier.code 0} true; + $i930 := $trunc.i64.i32($i929); + call {:cexpr "b"} boogie_si_record_i32($i930); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 740, 5} true; + assume {:verifier.code 0} true; + $i931 := $add.i32($i930, $i930); + call {:cexpr "b"} boogie_si_record_i32($i931); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 742, 5} true; + assume {:verifier.code 0} true; + $i932 := $add.i32($i919, $i919); + call {:cexpr "c"} boogie_si_record_i32($i932); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 743, 9} true; + assume {:verifier.code 0} true; + $i933 := $slt.i32($i927, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 743, 7} true; + assume {:verifier.code 0} true; + $i934 := $i932; + assume {:branchcond $i933} true; + goto $bb559, $bb560; +$bb553: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 15} true; + assume {:verifier.code 0} true; + assume ($i920 == 1); + goto $bb554; +$bb554: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 734, 9} true; + assume {:verifier.code 0} true; + $i923 := $add.i32($i917, 1); + call {:cexpr "c"} boogie_si_record_i32($i923); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 735, 5} true; + assume {:verifier.code 0} true; + $i922 := $i923; + goto $bb558; +$bb555: + assume !(($i920 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 20} true; + assume {:verifier.code 0} true; + $i921 := $sgt.i32($i916, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 9} true; + assume {:verifier.code 0} true; + $i922 := $i917; + assume {:branchcond $i921} true; + goto $bb556, $bb557; +$bb556: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 9} true; + assume {:verifier.code 0} true; + assume ($i921 == 1); + goto $bb554; +$bb557: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 9} true; + assume {:verifier.code 0} true; + assume !(($i921 == 1)); + goto $bb558; +$bb558: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 736, 3} true; + assume {:verifier.code 0} true; + $i919 := $i922; + goto $bb552; +$bb559: + assume ($i933 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 11} true; + assume {:verifier.code 0} true; + $i935 := $slt.i32($i931, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i935} true; + goto $bb562, $bb564; +$bb560: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 743, 7} true; + assume {:verifier.code 0} true; + assume !(($i933 == 1)); + goto $bb561; +$bb561: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 748, 7} true; + assume {:verifier.code 0} true; + $i939 := $sext.i32.i64($i927); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 748, 9} true; + assume {:verifier.code 0} true; + $i940 := $srem.i64($i939, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 748, 7} true; + assume {:verifier.code 0} true; + $i941 := $trunc.i64.i32($i940); + call {:cexpr "a"} boogie_si_record_i32($i941); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 749, 5} true; + assume {:verifier.code 0} true; + $i942 := $add.i32($i941, $i941); + call {:cexpr "a"} boogie_si_record_i32($i942); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 750, 7} true; + assume {:verifier.code 0} true; + $i943 := $sext.i32.i64($i931); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 750, 9} true; + assume {:verifier.code 0} true; + $i944 := $srem.i64($i943, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 750, 7} true; + assume {:verifier.code 0} true; + $i945 := $trunc.i64.i32($i944); + call {:cexpr "b"} boogie_si_record_i32($i945); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 751, 5} true; + assume {:verifier.code 0} true; + $i946 := $add.i32($i945, $i945); + call {:cexpr "b"} boogie_si_record_i32($i946); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 753, 5} true; + assume {:verifier.code 0} true; + $i947 := $add.i32($i934, $i934); + call {:cexpr "c"} boogie_si_record_i32($i947); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 754, 9} true; + assume {:verifier.code 0} true; + $i948 := $slt.i32($i942, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 754, 7} true; + assume {:verifier.code 0} true; + $i949 := $i947; + assume {:branchcond $i948} true; + goto $bb568, $bb569; +$bb562: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 15} true; + assume {:verifier.code 0} true; + assume ($i935 == 1); + goto $bb563; +$bb563: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 745, 9} true; + assume {:verifier.code 0} true; + $i938 := $add.i32($i932, 1); + call {:cexpr "c"} boogie_si_record_i32($i938); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 746, 5} true; + assume {:verifier.code 0} true; + $i937 := $i938; + goto $bb567; +$bb564: + assume !(($i935 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 20} true; + assume {:verifier.code 0} true; + $i936 := $sgt.i32($i931, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 9} true; + assume {:verifier.code 0} true; + $i937 := $i932; + assume {:branchcond $i936} true; + goto $bb565, $bb566; +$bb565: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 9} true; + assume {:verifier.code 0} true; + assume ($i936 == 1); + goto $bb563; +$bb566: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 9} true; + assume {:verifier.code 0} true; + assume !(($i936 == 1)); + goto $bb567; +$bb567: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 747, 3} true; + assume {:verifier.code 0} true; + $i934 := $i937; + goto $bb561; +$bb568: + assume ($i948 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 11} true; + assume {:verifier.code 0} true; + $i950 := $slt.i32($i946, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i950} true; + goto $bb571, $bb573; +$bb569: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 754, 7} true; + assume {:verifier.code 0} true; + assume !(($i948 == 1)); + goto $bb570; +$bb570: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 764, 3} true; + assume {:verifier.code 0} true; + $r := $i949; + $exn := false; + return; +$bb571: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 15} true; + assume {:verifier.code 0} true; + assume ($i950 == 1); + goto $bb572; +$bb572: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 756, 9} true; + assume {:verifier.code 0} true; + $i953 := $add.i32($i947, 1); + call {:cexpr "c"} boogie_si_record_i32($i953); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 757, 5} true; + assume {:verifier.code 0} true; + $i952 := $i953; + goto $bb576; +$bb573: + assume !(($i950 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 20} true; + assume {:verifier.code 0} true; + $i951 := $sgt.i32($i946, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 9} true; + assume {:verifier.code 0} true; + $i952 := $i947; + assume {:branchcond $i951} true; + goto $bb574, $bb575; +$bb574: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 9} true; + assume {:verifier.code 0} true; + assume ($i951 == 1); + goto $bb572; +$bb575: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 9} true; + assume {:verifier.code 0} true; + assume !(($i951 == 1)); + goto $bb576; +$bb576: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 758, 3} true; + assume {:verifier.code 0} true; + $i949 := $i952; + goto $bb570; +} +const __SMACK_and64: ref; +axiom (__SMACK_and64 == $sub.ref(0, 11349)); +procedure __SMACK_and64($i0: i64, $i1: i64) + returns ($r: i64) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i64; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 65} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_and64:arg:a"} boogie_si_record_i64($i0); + call {:cexpr "__SMACK_and64:arg:b"} boogie_si_record_i64($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 65} true; + assume {:verifier.code 1} true; + $i2 := $trunc.i64.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 68} true; + assume {:verifier.code 1} true; + $i3 := $trunc.i64.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 51} true; + assume {:verifier.code 1} true; + call $i4 := __SMACK_and32($i2, $i3); + call {:cexpr "smack:ext:__SMACK_and32"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 45} true; + assume {:verifier.code 0} true; + $i5 := $sext.i32.i64($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 38} true; + assume {:verifier.code 0} true; + $r := $i5; + $exn := false; + return; +} +const __SMACK_and16: ref; +axiom (__SMACK_and16 == $sub.ref(0, 12381)); +procedure __SMACK_and16($i0: i16, $i1: i16) + returns ($r: i16) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i16; + var $i6: i32; + var $i7: i1; + var $i9: i32; + var $i10: i1; + var $i11: i32; + var $i12: i1; + var $i14: i32; + var $i15: i32; + var $i16: i16; + var $i13: i16; + var $i8: i16; + var $i17: i32; + var $i18: i32; + var $i19: i16; + var $i20: i32; + var $i21: i32; + var $i22: i32; + var $i23: i16; + var $i24: i32; + var $i25: i32; + var $i26: i16; + var $i27: i32; + var $i28: i32; + var $i29: i32; + var $i30: i16; + var $i31: i32; + var $i32: i32; + var $i33: i32; + var $i34: i16; + var $i35: i32; + var $i36: i1; + var $i38: i32; + var $i39: i1; + var $i40: i32; + var $i41: i1; + var $i43: i32; + var $i44: i32; + var $i45: i16; + var $i42: i16; + var $i37: i16; + var $i46: i32; + var $i47: i32; + var $i48: i16; + var $i49: i32; + var $i50: i32; + var $i51: i32; + var $i52: i16; + var $i53: i32; + var $i54: i32; + var $i55: i16; + var $i56: i32; + var $i57: i32; + var $i58: i32; + var $i59: i16; + var $i60: i32; + var $i61: i32; + var $i62: i32; + var $i63: i16; + var $i64: i32; + var $i65: i1; + var $i67: i32; + var $i68: i1; + var $i69: i32; + var $i70: i1; + var $i72: i32; + var $i73: i32; + var $i74: i16; + var $i71: i16; + var $i66: i16; + var $i75: i32; + var $i76: i32; + var $i77: i16; + var $i78: i32; + var $i79: i32; + var $i80: i32; + var $i81: i16; + var $i82: i32; + var $i83: i32; + var $i84: i16; + var $i85: i32; + var $i86: i32; + var $i87: i32; + var $i88: i16; + var $i89: i32; + var $i90: i32; + var $i91: i32; + var $i92: i16; + var $i93: i32; + var $i94: i1; + var $i96: i32; + var $i97: i1; + var $i98: i32; + var $i99: i1; + var $i101: i32; + var $i102: i32; + var $i103: i16; + var $i100: i16; + var $i95: i16; + var $i104: i32; + var $i105: i32; + var $i106: i16; + var $i107: i32; + var $i108: i32; + var $i109: i32; + var $i110: i16; + var $i111: i32; + var $i112: i32; + var $i113: i16; + var $i114: i32; + var $i115: i32; + var $i116: i32; + var $i117: i16; + var $i118: i32; + var $i119: i32; + var $i120: i32; + var $i121: i16; + var $i122: i32; + var $i123: i1; + var $i125: i32; + var $i126: i1; + var $i127: i32; + var $i128: i1; + var $i130: i32; + var $i131: i32; + var $i132: i16; + var $i129: i16; + var $i124: i16; + var $i133: i32; + var $i134: i32; + var $i135: i16; + var $i136: i32; + var $i137: i32; + var $i138: i32; + var $i139: i16; + var $i140: i32; + var $i141: i32; + var $i142: i16; + var $i143: i32; + var $i144: i32; + var $i145: i32; + var $i146: i16; + var $i147: i32; + var $i148: i32; + var $i149: i32; + var $i150: i16; + var $i151: i32; + var $i152: i1; + var $i154: i32; + var $i155: i1; + var $i156: i32; + var $i157: i1; + var $i159: i32; + var $i160: i32; + var $i161: i16; + var $i158: i16; + var $i153: i16; + var $i162: i32; + var $i163: i32; + var $i164: i16; + var $i165: i32; + var $i166: i32; + var $i167: i32; + var $i168: i16; + var $i169: i32; + var $i170: i32; + var $i171: i16; + var $i172: i32; + var $i173: i32; + var $i174: i32; + var $i175: i16; + var $i176: i32; + var $i177: i32; + var $i178: i32; + var $i179: i16; + var $i180: i32; + var $i181: i1; + var $i183: i32; + var $i184: i1; + var $i185: i32; + var $i186: i1; + var $i188: i32; + var $i189: i32; + var $i190: i16; + var $i187: i16; + var $i182: i16; + var $i191: i32; + var $i192: i32; + var $i193: i16; + var $i194: i32; + var $i195: i32; + var $i196: i32; + var $i197: i16; + var $i198: i32; + var $i199: i32; + var $i200: i16; + var $i201: i32; + var $i202: i32; + var $i203: i32; + var $i204: i16; + var $i205: i32; + var $i206: i32; + var $i207: i32; + var $i208: i16; + var $i209: i32; + var $i210: i1; + var $i212: i32; + var $i213: i1; + var $i214: i32; + var $i215: i1; + var $i217: i32; + var $i218: i32; + var $i219: i16; + var $i216: i16; + var $i211: i16; + var $i220: i32; + var $i221: i32; + var $i222: i16; + var $i223: i32; + var $i224: i32; + var $i225: i32; + var $i226: i16; + var $i227: i32; + var $i228: i32; + var $i229: i16; + var $i230: i32; + var $i231: i32; + var $i232: i32; + var $i233: i16; + var $i234: i32; + var $i235: i32; + var $i236: i32; + var $i237: i16; + var $i238: i32; + var $i239: i1; + var $i241: i32; + var $i242: i1; + var $i243: i32; + var $i244: i1; + var $i246: i32; + var $i247: i32; + var $i248: i16; + var $i245: i16; + var $i240: i16; + var $i249: i32; + var $i250: i32; + var $i251: i16; + var $i252: i32; + var $i253: i32; + var $i254: i32; + var $i255: i16; + var $i256: i32; + var $i257: i32; + var $i258: i16; + var $i259: i32; + var $i260: i32; + var $i261: i32; + var $i262: i16; + var $i263: i32; + var $i264: i32; + var $i265: i32; + var $i266: i16; + var $i267: i32; + var $i268: i1; + var $i270: i32; + var $i271: i1; + var $i272: i32; + var $i273: i1; + var $i275: i32; + var $i276: i32; + var $i277: i16; + var $i274: i16; + var $i269: i16; + var $i278: i32; + var $i279: i32; + var $i280: i16; + var $i281: i32; + var $i282: i32; + var $i283: i32; + var $i284: i16; + var $i285: i32; + var $i286: i32; + var $i287: i16; + var $i288: i32; + var $i289: i32; + var $i290: i32; + var $i291: i16; + var $i292: i32; + var $i293: i32; + var $i294: i32; + var $i295: i16; + var $i296: i32; + var $i297: i1; + var $i299: i32; + var $i300: i1; + var $i301: i32; + var $i302: i1; + var $i304: i32; + var $i305: i32; + var $i306: i16; + var $i303: i16; + var $i298: i16; + var $i307: i32; + var $i308: i32; + var $i309: i16; + var $i310: i32; + var $i311: i32; + var $i312: i32; + var $i313: i16; + var $i314: i32; + var $i315: i32; + var $i316: i16; + var $i317: i32; + var $i318: i32; + var $i319: i32; + var $i320: i16; + var $i321: i32; + var $i322: i32; + var $i323: i32; + var $i324: i16; + var $i325: i32; + var $i326: i1; + var $i328: i32; + var $i329: i1; + var $i330: i32; + var $i331: i1; + var $i333: i32; + var $i334: i32; + var $i335: i16; + var $i332: i16; + var $i327: i16; + var $i336: i32; + var $i337: i32; + var $i338: i16; + var $i339: i32; + var $i340: i32; + var $i341: i32; + var $i342: i16; + var $i343: i32; + var $i344: i32; + var $i345: i16; + var $i346: i32; + var $i347: i32; + var $i348: i32; + var $i349: i16; + var $i350: i32; + var $i351: i32; + var $i352: i32; + var $i353: i16; + var $i354: i32; + var $i355: i1; + var $i357: i32; + var $i358: i1; + var $i359: i32; + var $i360: i1; + var $i362: i32; + var $i363: i32; + var $i364: i16; + var $i361: i16; + var $i356: i16; + var $i365: i32; + var $i366: i32; + var $i367: i16; + var $i368: i32; + var $i369: i32; + var $i370: i32; + var $i371: i16; + var $i372: i32; + var $i373: i32; + var $i374: i16; + var $i375: i32; + var $i376: i32; + var $i377: i32; + var $i378: i16; + var $i379: i32; + var $i380: i32; + var $i381: i32; + var $i382: i16; + var $i383: i32; + var $i384: i1; + var $i386: i32; + var $i387: i1; + var $i388: i32; + var $i389: i1; + var $i391: i32; + var $i392: i32; + var $i393: i16; + var $i390: i16; + var $i385: i16; + var $i394: i32; + var $i395: i32; + var $i396: i16; + var $i397: i32; + var $i398: i32; + var $i399: i32; + var $i400: i16; + var $i401: i32; + var $i402: i32; + var $i403: i16; + var $i404: i32; + var $i405: i32; + var $i406: i32; + var $i407: i16; + var $i408: i32; + var $i409: i32; + var $i410: i32; + var $i411: i16; + var $i412: i32; + var $i413: i1; + var $i415: i32; + var $i416: i1; + var $i417: i32; + var $i418: i1; + var $i420: i32; + var $i421: i32; + var $i422: i16; + var $i419: i16; + var $i414: i16; + var $i423: i32; + var $i424: i32; + var $i425: i16; + var $i426: i32; + var $i427: i32; + var $i428: i32; + var $i429: i16; + var $i430: i32; + var $i431: i32; + var $i432: i16; + var $i433: i32; + var $i434: i32; + var $i435: i32; + var $i436: i16; + var $i437: i32; + var $i438: i32; + var $i439: i32; + var $i440: i16; + var $i441: i32; + var $i442: i1; + var $i444: i32; + var $i445: i1; + var $i446: i32; + var $i447: i1; + var $i449: i32; + var $i450: i32; + var $i451: i16; + var $i448: i16; + var $i443: i16; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 8} true; + assume {:verifier.code 0} true; + call {:cexpr "__SMACK_and16:arg:a"} boogie_si_record_i16($i0); + call {:cexpr "__SMACK_and16:arg:b"} boogie_si_record_i16($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 8} true; + assume {:verifier.code 0} true; + $i2 := $sext.i16.i32(0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 5} true; + assume {:verifier.code 0} true; + $i3 := $sext.i16.i32(0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 5} true; + assume {:verifier.code 0} true; + $i4 := $add.i32($i3, $i2); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 5} true; + assume {:verifier.code 0} true; + $i5 := $trunc.i32.i16($i4); + call {:cexpr "c"} boogie_si_record_i16($i5); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 773, 7} true; + assume {:verifier.code 0} true; + $i6 := $sext.i16.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 773, 9} true; + assume {:verifier.code 0} true; + $i7 := $slt.i32($i6, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 773, 7} true; + assume {:verifier.code 0} true; + $i8 := $i5; + assume {:branchcond $i7} true; + goto $bb1, $bb2; +$bb1: + assume ($i7 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 9} true; + assume {:verifier.code 0} true; + $i9 := $sext.i16.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 11} true; + assume {:verifier.code 0} true; + $i10 := $slt.i32($i9, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i10} true; + goto $bb4, $bb6; +$bb2: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 773, 7} true; + assume {:verifier.code 0} true; + assume !(($i7 == 1)); + goto $bb3; +$bb3: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 778, 7} true; + assume {:verifier.code 0} true; + $i17 := $sext.i16.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 778, 9} true; + assume {:verifier.code 0} true; + $i18 := $srem.i32($i17, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 778, 7} true; + assume {:verifier.code 0} true; + $i19 := $trunc.i32.i16($i18); + call {:cexpr "a"} boogie_si_record_i16($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 779, 8} true; + assume {:verifier.code 0} true; + $i20 := $sext.i16.i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 779, 5} true; + assume {:verifier.code 0} true; + $i21 := $sext.i16.i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 779, 5} true; + assume {:verifier.code 0} true; + $i22 := $add.i32($i21, $i20); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 779, 5} true; + assume {:verifier.code 0} true; + $i23 := $trunc.i32.i16($i22); + call {:cexpr "a"} boogie_si_record_i16($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 780, 7} true; + assume {:verifier.code 0} true; + $i24 := $sext.i16.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 780, 9} true; + assume {:verifier.code 0} true; + $i25 := $srem.i32($i24, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 780, 7} true; + assume {:verifier.code 0} true; + $i26 := $trunc.i32.i16($i25); + call {:cexpr "b"} boogie_si_record_i16($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 781, 8} true; + assume {:verifier.code 0} true; + $i27 := $sext.i16.i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 781, 5} true; + assume {:verifier.code 0} true; + $i28 := $sext.i16.i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 781, 5} true; + assume {:verifier.code 0} true; + $i29 := $add.i32($i28, $i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 781, 5} true; + assume {:verifier.code 0} true; + $i30 := $trunc.i32.i16($i29); + call {:cexpr "b"} boogie_si_record_i16($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 783, 8} true; + assume {:verifier.code 0} true; + $i31 := $sext.i16.i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 783, 5} true; + assume {:verifier.code 0} true; + $i32 := $sext.i16.i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 783, 5} true; + assume {:verifier.code 0} true; + $i33 := $add.i32($i32, $i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 783, 5} true; + assume {:verifier.code 0} true; + $i34 := $trunc.i32.i16($i33); + call {:cexpr "c"} boogie_si_record_i16($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 784, 7} true; + assume {:verifier.code 0} true; + $i35 := $sext.i16.i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 784, 9} true; + assume {:verifier.code 0} true; + $i36 := $slt.i32($i35, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 784, 7} true; + assume {:verifier.code 0} true; + $i37 := $i34; + assume {:branchcond $i36} true; + goto $bb10, $bb11; +$bb4: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 15} true; + assume {:verifier.code 0} true; + assume ($i10 == 1); + goto $bb5; +$bb5: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 775, 9} true; + assume {:verifier.code 0} true; + $i14 := $sext.i16.i32($i5); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 775, 9} true; + assume {:verifier.code 0} true; + $i15 := $add.i32($i14, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 775, 9} true; + assume {:verifier.code 0} true; + $i16 := $trunc.i32.i16($i15); + call {:cexpr "c"} boogie_si_record_i16($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 776, 5} true; + assume {:verifier.code 0} true; + $i13 := $i16; + goto $bb9; +$bb6: + assume !(($i10 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 18} true; + assume {:verifier.code 0} true; + $i11 := $sext.i16.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 20} true; + assume {:verifier.code 0} true; + $i12 := $sgt.i32($i11, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 9} true; + assume {:verifier.code 0} true; + $i13 := $i5; + assume {:branchcond $i12} true; + goto $bb7, $bb8; +$bb7: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 9} true; + assume {:verifier.code 0} true; + assume ($i12 == 1); + goto $bb5; +$bb8: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 9} true; + assume {:verifier.code 0} true; + assume !(($i12 == 1)); + goto $bb9; +$bb9: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 777, 3} true; + assume {:verifier.code 0} true; + $i8 := $i13; + goto $bb3; +$bb10: + assume ($i36 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 9} true; + assume {:verifier.code 0} true; + $i38 := $sext.i16.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 11} true; + assume {:verifier.code 0} true; + $i39 := $slt.i32($i38, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i39} true; + goto $bb13, $bb15; +$bb11: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 784, 7} true; + assume {:verifier.code 0} true; + assume !(($i36 == 1)); + goto $bb12; +$bb12: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 789, 7} true; + assume {:verifier.code 0} true; + $i46 := $sext.i16.i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 789, 9} true; + assume {:verifier.code 0} true; + $i47 := $srem.i32($i46, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 789, 7} true; + assume {:verifier.code 0} true; + $i48 := $trunc.i32.i16($i47); + call {:cexpr "a"} boogie_si_record_i16($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 790, 8} true; + assume {:verifier.code 0} true; + $i49 := $sext.i16.i32($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 790, 5} true; + assume {:verifier.code 0} true; + $i50 := $sext.i16.i32($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 790, 5} true; + assume {:verifier.code 0} true; + $i51 := $add.i32($i50, $i49); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 790, 5} true; + assume {:verifier.code 0} true; + $i52 := $trunc.i32.i16($i51); + call {:cexpr "a"} boogie_si_record_i16($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 791, 7} true; + assume {:verifier.code 0} true; + $i53 := $sext.i16.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 791, 9} true; + assume {:verifier.code 0} true; + $i54 := $srem.i32($i53, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 791, 7} true; + assume {:verifier.code 0} true; + $i55 := $trunc.i32.i16($i54); + call {:cexpr "b"} boogie_si_record_i16($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 792, 8} true; + assume {:verifier.code 0} true; + $i56 := $sext.i16.i32($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 792, 5} true; + assume {:verifier.code 0} true; + $i57 := $sext.i16.i32($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 792, 5} true; + assume {:verifier.code 0} true; + $i58 := $add.i32($i57, $i56); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 792, 5} true; + assume {:verifier.code 0} true; + $i59 := $trunc.i32.i16($i58); + call {:cexpr "b"} boogie_si_record_i16($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 794, 8} true; + assume {:verifier.code 0} true; + $i60 := $sext.i16.i32($i37); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 794, 5} true; + assume {:verifier.code 0} true; + $i61 := $sext.i16.i32($i37); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 794, 5} true; + assume {:verifier.code 0} true; + $i62 := $add.i32($i61, $i60); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 794, 5} true; + assume {:verifier.code 0} true; + $i63 := $trunc.i32.i16($i62); + call {:cexpr "c"} boogie_si_record_i16($i63); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 795, 7} true; + assume {:verifier.code 0} true; + $i64 := $sext.i16.i32($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 795, 9} true; + assume {:verifier.code 0} true; + $i65 := $slt.i32($i64, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 795, 7} true; + assume {:verifier.code 0} true; + $i66 := $i63; + assume {:branchcond $i65} true; + goto $bb19, $bb20; +$bb13: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 15} true; + assume {:verifier.code 0} true; + assume ($i39 == 1); + goto $bb14; +$bb14: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 786, 9} true; + assume {:verifier.code 0} true; + $i43 := $sext.i16.i32($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 786, 9} true; + assume {:verifier.code 0} true; + $i44 := $add.i32($i43, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 786, 9} true; + assume {:verifier.code 0} true; + $i45 := $trunc.i32.i16($i44); + call {:cexpr "c"} boogie_si_record_i16($i45); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 787, 5} true; + assume {:verifier.code 0} true; + $i42 := $i45; + goto $bb18; +$bb15: + assume !(($i39 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 18} true; + assume {:verifier.code 0} true; + $i40 := $sext.i16.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 20} true; + assume {:verifier.code 0} true; + $i41 := $sgt.i32($i40, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 9} true; + assume {:verifier.code 0} true; + $i42 := $i34; + assume {:branchcond $i41} true; + goto $bb16, $bb17; +$bb16: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 9} true; + assume {:verifier.code 0} true; + assume ($i41 == 1); + goto $bb14; +$bb17: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 9} true; + assume {:verifier.code 0} true; + assume !(($i41 == 1)); + goto $bb18; +$bb18: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 788, 3} true; + assume {:verifier.code 0} true; + $i37 := $i42; + goto $bb12; +$bb19: + assume ($i65 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 9} true; + assume {:verifier.code 0} true; + $i67 := $sext.i16.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 11} true; + assume {:verifier.code 0} true; + $i68 := $slt.i32($i67, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i68} true; + goto $bb22, $bb24; +$bb20: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 795, 7} true; + assume {:verifier.code 0} true; + assume !(($i65 == 1)); + goto $bb21; +$bb21: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 800, 7} true; + assume {:verifier.code 0} true; + $i75 := $sext.i16.i32($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 800, 9} true; + assume {:verifier.code 0} true; + $i76 := $srem.i32($i75, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 800, 7} true; + assume {:verifier.code 0} true; + $i77 := $trunc.i32.i16($i76); + call {:cexpr "a"} boogie_si_record_i16($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 801, 8} true; + assume {:verifier.code 0} true; + $i78 := $sext.i16.i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 801, 5} true; + assume {:verifier.code 0} true; + $i79 := $sext.i16.i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 801, 5} true; + assume {:verifier.code 0} true; + $i80 := $add.i32($i79, $i78); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 801, 5} true; + assume {:verifier.code 0} true; + $i81 := $trunc.i32.i16($i80); + call {:cexpr "a"} boogie_si_record_i16($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 802, 7} true; + assume {:verifier.code 0} true; + $i82 := $sext.i16.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 802, 9} true; + assume {:verifier.code 0} true; + $i83 := $srem.i32($i82, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 802, 7} true; + assume {:verifier.code 0} true; + $i84 := $trunc.i32.i16($i83); + call {:cexpr "b"} boogie_si_record_i16($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 803, 8} true; + assume {:verifier.code 0} true; + $i85 := $sext.i16.i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 803, 5} true; + assume {:verifier.code 0} true; + $i86 := $sext.i16.i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 803, 5} true; + assume {:verifier.code 0} true; + $i87 := $add.i32($i86, $i85); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 803, 5} true; + assume {:verifier.code 0} true; + $i88 := $trunc.i32.i16($i87); + call {:cexpr "b"} boogie_si_record_i16($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 805, 8} true; + assume {:verifier.code 0} true; + $i89 := $sext.i16.i32($i66); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 805, 5} true; + assume {:verifier.code 0} true; + $i90 := $sext.i16.i32($i66); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 805, 5} true; + assume {:verifier.code 0} true; + $i91 := $add.i32($i90, $i89); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 805, 5} true; + assume {:verifier.code 0} true; + $i92 := $trunc.i32.i16($i91); + call {:cexpr "c"} boogie_si_record_i16($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 806, 7} true; + assume {:verifier.code 0} true; + $i93 := $sext.i16.i32($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 806, 9} true; + assume {:verifier.code 0} true; + $i94 := $slt.i32($i93, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 806, 7} true; + assume {:verifier.code 0} true; + $i95 := $i92; + assume {:branchcond $i94} true; + goto $bb28, $bb29; +$bb22: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 15} true; + assume {:verifier.code 0} true; + assume ($i68 == 1); + goto $bb23; +$bb23: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 797, 9} true; + assume {:verifier.code 0} true; + $i72 := $sext.i16.i32($i63); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 797, 9} true; + assume {:verifier.code 0} true; + $i73 := $add.i32($i72, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 797, 9} true; + assume {:verifier.code 0} true; + $i74 := $trunc.i32.i16($i73); + call {:cexpr "c"} boogie_si_record_i16($i74); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 798, 5} true; + assume {:verifier.code 0} true; + $i71 := $i74; + goto $bb27; +$bb24: + assume !(($i68 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 18} true; + assume {:verifier.code 0} true; + $i69 := $sext.i16.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 20} true; + assume {:verifier.code 0} true; + $i70 := $sgt.i32($i69, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 9} true; + assume {:verifier.code 0} true; + $i71 := $i63; + assume {:branchcond $i70} true; + goto $bb25, $bb26; +$bb25: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 9} true; + assume {:verifier.code 0} true; + assume ($i70 == 1); + goto $bb23; +$bb26: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 9} true; + assume {:verifier.code 0} true; + assume !(($i70 == 1)); + goto $bb27; +$bb27: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 799, 3} true; + assume {:verifier.code 0} true; + $i66 := $i71; + goto $bb21; +$bb28: + assume ($i94 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 9} true; + assume {:verifier.code 0} true; + $i96 := $sext.i16.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 11} true; + assume {:verifier.code 0} true; + $i97 := $slt.i32($i96, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i97} true; + goto $bb31, $bb33; +$bb29: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 806, 7} true; + assume {:verifier.code 0} true; + assume !(($i94 == 1)); + goto $bb30; +$bb30: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 811, 7} true; + assume {:verifier.code 0} true; + $i104 := $sext.i16.i32($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 811, 9} true; + assume {:verifier.code 0} true; + $i105 := $srem.i32($i104, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 811, 7} true; + assume {:verifier.code 0} true; + $i106 := $trunc.i32.i16($i105); + call {:cexpr "a"} boogie_si_record_i16($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 812, 8} true; + assume {:verifier.code 0} true; + $i107 := $sext.i16.i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 812, 5} true; + assume {:verifier.code 0} true; + $i108 := $sext.i16.i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 812, 5} true; + assume {:verifier.code 0} true; + $i109 := $add.i32($i108, $i107); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 812, 5} true; + assume {:verifier.code 0} true; + $i110 := $trunc.i32.i16($i109); + call {:cexpr "a"} boogie_si_record_i16($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 813, 7} true; + assume {:verifier.code 0} true; + $i111 := $sext.i16.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 813, 9} true; + assume {:verifier.code 0} true; + $i112 := $srem.i32($i111, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 813, 7} true; + assume {:verifier.code 0} true; + $i113 := $trunc.i32.i16($i112); + call {:cexpr "b"} boogie_si_record_i16($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 814, 8} true; + assume {:verifier.code 0} true; + $i114 := $sext.i16.i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 814, 5} true; + assume {:verifier.code 0} true; + $i115 := $sext.i16.i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 814, 5} true; + assume {:verifier.code 0} true; + $i116 := $add.i32($i115, $i114); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 814, 5} true; + assume {:verifier.code 0} true; + $i117 := $trunc.i32.i16($i116); + call {:cexpr "b"} boogie_si_record_i16($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 816, 8} true; + assume {:verifier.code 0} true; + $i118 := $sext.i16.i32($i95); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 816, 5} true; + assume {:verifier.code 0} true; + $i119 := $sext.i16.i32($i95); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 816, 5} true; + assume {:verifier.code 0} true; + $i120 := $add.i32($i119, $i118); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 816, 5} true; + assume {:verifier.code 0} true; + $i121 := $trunc.i32.i16($i120); + call {:cexpr "c"} boogie_si_record_i16($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 817, 7} true; + assume {:verifier.code 0} true; + $i122 := $sext.i16.i32($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 817, 9} true; + assume {:verifier.code 0} true; + $i123 := $slt.i32($i122, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 817, 7} true; + assume {:verifier.code 0} true; + $i124 := $i121; + assume {:branchcond $i123} true; + goto $bb37, $bb38; +$bb31: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 15} true; + assume {:verifier.code 0} true; + assume ($i97 == 1); + goto $bb32; +$bb32: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 808, 9} true; + assume {:verifier.code 0} true; + $i101 := $sext.i16.i32($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 808, 9} true; + assume {:verifier.code 0} true; + $i102 := $add.i32($i101, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 808, 9} true; + assume {:verifier.code 0} true; + $i103 := $trunc.i32.i16($i102); + call {:cexpr "c"} boogie_si_record_i16($i103); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 809, 5} true; + assume {:verifier.code 0} true; + $i100 := $i103; + goto $bb36; +$bb33: + assume !(($i97 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 18} true; + assume {:verifier.code 0} true; + $i98 := $sext.i16.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 20} true; + assume {:verifier.code 0} true; + $i99 := $sgt.i32($i98, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 9} true; + assume {:verifier.code 0} true; + $i100 := $i92; + assume {:branchcond $i99} true; + goto $bb34, $bb35; +$bb34: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 9} true; + assume {:verifier.code 0} true; + assume ($i99 == 1); + goto $bb32; +$bb35: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 9} true; + assume {:verifier.code 0} true; + assume !(($i99 == 1)); + goto $bb36; +$bb36: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 810, 3} true; + assume {:verifier.code 0} true; + $i95 := $i100; + goto $bb30; +$bb37: + assume ($i123 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 9} true; + assume {:verifier.code 0} true; + $i125 := $sext.i16.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 11} true; + assume {:verifier.code 0} true; + $i126 := $slt.i32($i125, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i126} true; + goto $bb40, $bb42; +$bb38: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 817, 7} true; + assume {:verifier.code 0} true; + assume !(($i123 == 1)); + goto $bb39; +$bb39: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 822, 7} true; + assume {:verifier.code 0} true; + $i133 := $sext.i16.i32($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 822, 9} true; + assume {:verifier.code 0} true; + $i134 := $srem.i32($i133, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 822, 7} true; + assume {:verifier.code 0} true; + $i135 := $trunc.i32.i16($i134); + call {:cexpr "a"} boogie_si_record_i16($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 823, 8} true; + assume {:verifier.code 0} true; + $i136 := $sext.i16.i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 823, 5} true; + assume {:verifier.code 0} true; + $i137 := $sext.i16.i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 823, 5} true; + assume {:verifier.code 0} true; + $i138 := $add.i32($i137, $i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 823, 5} true; + assume {:verifier.code 0} true; + $i139 := $trunc.i32.i16($i138); + call {:cexpr "a"} boogie_si_record_i16($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 824, 7} true; + assume {:verifier.code 0} true; + $i140 := $sext.i16.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 824, 9} true; + assume {:verifier.code 0} true; + $i141 := $srem.i32($i140, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 824, 7} true; + assume {:verifier.code 0} true; + $i142 := $trunc.i32.i16($i141); + call {:cexpr "b"} boogie_si_record_i16($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 825, 8} true; + assume {:verifier.code 0} true; + $i143 := $sext.i16.i32($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 825, 5} true; + assume {:verifier.code 0} true; + $i144 := $sext.i16.i32($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 825, 5} true; + assume {:verifier.code 0} true; + $i145 := $add.i32($i144, $i143); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 825, 5} true; + assume {:verifier.code 0} true; + $i146 := $trunc.i32.i16($i145); + call {:cexpr "b"} boogie_si_record_i16($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 827, 8} true; + assume {:verifier.code 0} true; + $i147 := $sext.i16.i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 827, 5} true; + assume {:verifier.code 0} true; + $i148 := $sext.i16.i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 827, 5} true; + assume {:verifier.code 0} true; + $i149 := $add.i32($i148, $i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 827, 5} true; + assume {:verifier.code 0} true; + $i150 := $trunc.i32.i16($i149); + call {:cexpr "c"} boogie_si_record_i16($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 828, 7} true; + assume {:verifier.code 0} true; + $i151 := $sext.i16.i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 828, 9} true; + assume {:verifier.code 0} true; + $i152 := $slt.i32($i151, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 828, 7} true; + assume {:verifier.code 0} true; + $i153 := $i150; + assume {:branchcond $i152} true; + goto $bb46, $bb47; +$bb40: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 15} true; + assume {:verifier.code 0} true; + assume ($i126 == 1); + goto $bb41; +$bb41: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 819, 9} true; + assume {:verifier.code 0} true; + $i130 := $sext.i16.i32($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 819, 9} true; + assume {:verifier.code 0} true; + $i131 := $add.i32($i130, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 819, 9} true; + assume {:verifier.code 0} true; + $i132 := $trunc.i32.i16($i131); + call {:cexpr "c"} boogie_si_record_i16($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 820, 5} true; + assume {:verifier.code 0} true; + $i129 := $i132; + goto $bb45; +$bb42: + assume !(($i126 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 18} true; + assume {:verifier.code 0} true; + $i127 := $sext.i16.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 20} true; + assume {:verifier.code 0} true; + $i128 := $sgt.i32($i127, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 9} true; + assume {:verifier.code 0} true; + $i129 := $i121; + assume {:branchcond $i128} true; + goto $bb43, $bb44; +$bb43: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 9} true; + assume {:verifier.code 0} true; + assume ($i128 == 1); + goto $bb41; +$bb44: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 9} true; + assume {:verifier.code 0} true; + assume !(($i128 == 1)); + goto $bb45; +$bb45: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 821, 3} true; + assume {:verifier.code 0} true; + $i124 := $i129; + goto $bb39; +$bb46: + assume ($i152 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 9} true; + assume {:verifier.code 0} true; + $i154 := $sext.i16.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 11} true; + assume {:verifier.code 0} true; + $i155 := $slt.i32($i154, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i155} true; + goto $bb49, $bb51; +$bb47: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 828, 7} true; + assume {:verifier.code 0} true; + assume !(($i152 == 1)); + goto $bb48; +$bb48: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 833, 7} true; + assume {:verifier.code 0} true; + $i162 := $sext.i16.i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 833, 9} true; + assume {:verifier.code 0} true; + $i163 := $srem.i32($i162, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 833, 7} true; + assume {:verifier.code 0} true; + $i164 := $trunc.i32.i16($i163); + call {:cexpr "a"} boogie_si_record_i16($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 834, 8} true; + assume {:verifier.code 0} true; + $i165 := $sext.i16.i32($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 834, 5} true; + assume {:verifier.code 0} true; + $i166 := $sext.i16.i32($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 834, 5} true; + assume {:verifier.code 0} true; + $i167 := $add.i32($i166, $i165); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 834, 5} true; + assume {:verifier.code 0} true; + $i168 := $trunc.i32.i16($i167); + call {:cexpr "a"} boogie_si_record_i16($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 835, 7} true; + assume {:verifier.code 0} true; + $i169 := $sext.i16.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 835, 9} true; + assume {:verifier.code 0} true; + $i170 := $srem.i32($i169, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 835, 7} true; + assume {:verifier.code 0} true; + $i171 := $trunc.i32.i16($i170); + call {:cexpr "b"} boogie_si_record_i16($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 836, 8} true; + assume {:verifier.code 0} true; + $i172 := $sext.i16.i32($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 836, 5} true; + assume {:verifier.code 0} true; + $i173 := $sext.i16.i32($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 836, 5} true; + assume {:verifier.code 0} true; + $i174 := $add.i32($i173, $i172); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 836, 5} true; + assume {:verifier.code 0} true; + $i175 := $trunc.i32.i16($i174); + call {:cexpr "b"} boogie_si_record_i16($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 838, 8} true; + assume {:verifier.code 0} true; + $i176 := $sext.i16.i32($i153); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 838, 5} true; + assume {:verifier.code 0} true; + $i177 := $sext.i16.i32($i153); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 838, 5} true; + assume {:verifier.code 0} true; + $i178 := $add.i32($i177, $i176); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 838, 5} true; + assume {:verifier.code 0} true; + $i179 := $trunc.i32.i16($i178); + call {:cexpr "c"} boogie_si_record_i16($i179); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 839, 7} true; + assume {:verifier.code 0} true; + $i180 := $sext.i16.i32($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 839, 9} true; + assume {:verifier.code 0} true; + $i181 := $slt.i32($i180, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 839, 7} true; + assume {:verifier.code 0} true; + $i182 := $i179; + assume {:branchcond $i181} true; + goto $bb55, $bb56; +$bb49: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 15} true; + assume {:verifier.code 0} true; + assume ($i155 == 1); + goto $bb50; +$bb50: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 830, 9} true; + assume {:verifier.code 0} true; + $i159 := $sext.i16.i32($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 830, 9} true; + assume {:verifier.code 0} true; + $i160 := $add.i32($i159, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 830, 9} true; + assume {:verifier.code 0} true; + $i161 := $trunc.i32.i16($i160); + call {:cexpr "c"} boogie_si_record_i16($i161); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 831, 5} true; + assume {:verifier.code 0} true; + $i158 := $i161; + goto $bb54; +$bb51: + assume !(($i155 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 18} true; + assume {:verifier.code 0} true; + $i156 := $sext.i16.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 20} true; + assume {:verifier.code 0} true; + $i157 := $sgt.i32($i156, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 9} true; + assume {:verifier.code 0} true; + $i158 := $i150; + assume {:branchcond $i157} true; + goto $bb52, $bb53; +$bb52: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 9} true; + assume {:verifier.code 0} true; + assume ($i157 == 1); + goto $bb50; +$bb53: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 9} true; + assume {:verifier.code 0} true; + assume !(($i157 == 1)); + goto $bb54; +$bb54: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 832, 3} true; + assume {:verifier.code 0} true; + $i153 := $i158; + goto $bb48; +$bb55: + assume ($i181 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 9} true; + assume {:verifier.code 0} true; + $i183 := $sext.i16.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 11} true; + assume {:verifier.code 0} true; + $i184 := $slt.i32($i183, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i184} true; + goto $bb58, $bb60; +$bb56: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 839, 7} true; + assume {:verifier.code 0} true; + assume !(($i181 == 1)); + goto $bb57; +$bb57: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 844, 7} true; + assume {:verifier.code 0} true; + $i191 := $sext.i16.i32($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 844, 9} true; + assume {:verifier.code 0} true; + $i192 := $srem.i32($i191, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 844, 7} true; + assume {:verifier.code 0} true; + $i193 := $trunc.i32.i16($i192); + call {:cexpr "a"} boogie_si_record_i16($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 845, 8} true; + assume {:verifier.code 0} true; + $i194 := $sext.i16.i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 845, 5} true; + assume {:verifier.code 0} true; + $i195 := $sext.i16.i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 845, 5} true; + assume {:verifier.code 0} true; + $i196 := $add.i32($i195, $i194); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 845, 5} true; + assume {:verifier.code 0} true; + $i197 := $trunc.i32.i16($i196); + call {:cexpr "a"} boogie_si_record_i16($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 846, 7} true; + assume {:verifier.code 0} true; + $i198 := $sext.i16.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 846, 9} true; + assume {:verifier.code 0} true; + $i199 := $srem.i32($i198, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 846, 7} true; + assume {:verifier.code 0} true; + $i200 := $trunc.i32.i16($i199); + call {:cexpr "b"} boogie_si_record_i16($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 847, 8} true; + assume {:verifier.code 0} true; + $i201 := $sext.i16.i32($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 847, 5} true; + assume {:verifier.code 0} true; + $i202 := $sext.i16.i32($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 847, 5} true; + assume {:verifier.code 0} true; + $i203 := $add.i32($i202, $i201); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 847, 5} true; + assume {:verifier.code 0} true; + $i204 := $trunc.i32.i16($i203); + call {:cexpr "b"} boogie_si_record_i16($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 849, 8} true; + assume {:verifier.code 0} true; + $i205 := $sext.i16.i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 849, 5} true; + assume {:verifier.code 0} true; + $i206 := $sext.i16.i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 849, 5} true; + assume {:verifier.code 0} true; + $i207 := $add.i32($i206, $i205); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 849, 5} true; + assume {:verifier.code 0} true; + $i208 := $trunc.i32.i16($i207); + call {:cexpr "c"} boogie_si_record_i16($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 850, 7} true; + assume {:verifier.code 0} true; + $i209 := $sext.i16.i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 850, 9} true; + assume {:verifier.code 0} true; + $i210 := $slt.i32($i209, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 850, 7} true; + assume {:verifier.code 0} true; + $i211 := $i208; + assume {:branchcond $i210} true; + goto $bb64, $bb65; +$bb58: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 15} true; + assume {:verifier.code 0} true; + assume ($i184 == 1); + goto $bb59; +$bb59: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 841, 9} true; + assume {:verifier.code 0} true; + $i188 := $sext.i16.i32($i179); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 841, 9} true; + assume {:verifier.code 0} true; + $i189 := $add.i32($i188, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 841, 9} true; + assume {:verifier.code 0} true; + $i190 := $trunc.i32.i16($i189); + call {:cexpr "c"} boogie_si_record_i16($i190); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 842, 5} true; + assume {:verifier.code 0} true; + $i187 := $i190; + goto $bb63; +$bb60: + assume !(($i184 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 18} true; + assume {:verifier.code 0} true; + $i185 := $sext.i16.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 20} true; + assume {:verifier.code 0} true; + $i186 := $sgt.i32($i185, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 9} true; + assume {:verifier.code 0} true; + $i187 := $i179; + assume {:branchcond $i186} true; + goto $bb61, $bb62; +$bb61: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 9} true; + assume {:verifier.code 0} true; + assume ($i186 == 1); + goto $bb59; +$bb62: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 9} true; + assume {:verifier.code 0} true; + assume !(($i186 == 1)); + goto $bb63; +$bb63: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 843, 3} true; + assume {:verifier.code 0} true; + $i182 := $i187; + goto $bb57; +$bb64: + assume ($i210 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 9} true; + assume {:verifier.code 0} true; + $i212 := $sext.i16.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 11} true; + assume {:verifier.code 0} true; + $i213 := $slt.i32($i212, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i213} true; + goto $bb67, $bb69; +$bb65: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 850, 7} true; + assume {:verifier.code 0} true; + assume !(($i210 == 1)); + goto $bb66; +$bb66: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 855, 7} true; + assume {:verifier.code 0} true; + $i220 := $sext.i16.i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 855, 9} true; + assume {:verifier.code 0} true; + $i221 := $srem.i32($i220, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 855, 7} true; + assume {:verifier.code 0} true; + $i222 := $trunc.i32.i16($i221); + call {:cexpr "a"} boogie_si_record_i16($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 856, 8} true; + assume {:verifier.code 0} true; + $i223 := $sext.i16.i32($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 856, 5} true; + assume {:verifier.code 0} true; + $i224 := $sext.i16.i32($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 856, 5} true; + assume {:verifier.code 0} true; + $i225 := $add.i32($i224, $i223); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 856, 5} true; + assume {:verifier.code 0} true; + $i226 := $trunc.i32.i16($i225); + call {:cexpr "a"} boogie_si_record_i16($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 857, 7} true; + assume {:verifier.code 0} true; + $i227 := $sext.i16.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 857, 9} true; + assume {:verifier.code 0} true; + $i228 := $srem.i32($i227, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 857, 7} true; + assume {:verifier.code 0} true; + $i229 := $trunc.i32.i16($i228); + call {:cexpr "b"} boogie_si_record_i16($i229); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 858, 8} true; + assume {:verifier.code 0} true; + $i230 := $sext.i16.i32($i229); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 858, 5} true; + assume {:verifier.code 0} true; + $i231 := $sext.i16.i32($i229); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 858, 5} true; + assume {:verifier.code 0} true; + $i232 := $add.i32($i231, $i230); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 858, 5} true; + assume {:verifier.code 0} true; + $i233 := $trunc.i32.i16($i232); + call {:cexpr "b"} boogie_si_record_i16($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 860, 8} true; + assume {:verifier.code 0} true; + $i234 := $sext.i16.i32($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 860, 5} true; + assume {:verifier.code 0} true; + $i235 := $sext.i16.i32($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 860, 5} true; + assume {:verifier.code 0} true; + $i236 := $add.i32($i235, $i234); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 860, 5} true; + assume {:verifier.code 0} true; + $i237 := $trunc.i32.i16($i236); + call {:cexpr "c"} boogie_si_record_i16($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 861, 7} true; + assume {:verifier.code 0} true; + $i238 := $sext.i16.i32($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 861, 9} true; + assume {:verifier.code 0} true; + $i239 := $slt.i32($i238, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 861, 7} true; + assume {:verifier.code 0} true; + $i240 := $i237; + assume {:branchcond $i239} true; + goto $bb73, $bb74; +$bb67: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 15} true; + assume {:verifier.code 0} true; + assume ($i213 == 1); + goto $bb68; +$bb68: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 852, 9} true; + assume {:verifier.code 0} true; + $i217 := $sext.i16.i32($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 852, 9} true; + assume {:verifier.code 0} true; + $i218 := $add.i32($i217, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 852, 9} true; + assume {:verifier.code 0} true; + $i219 := $trunc.i32.i16($i218); + call {:cexpr "c"} boogie_si_record_i16($i219); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 853, 5} true; + assume {:verifier.code 0} true; + $i216 := $i219; + goto $bb72; +$bb69: + assume !(($i213 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 18} true; + assume {:verifier.code 0} true; + $i214 := $sext.i16.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 20} true; + assume {:verifier.code 0} true; + $i215 := $sgt.i32($i214, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 9} true; + assume {:verifier.code 0} true; + $i216 := $i208; + assume {:branchcond $i215} true; + goto $bb70, $bb71; +$bb70: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 9} true; + assume {:verifier.code 0} true; + assume ($i215 == 1); + goto $bb68; +$bb71: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 9} true; + assume {:verifier.code 0} true; + assume !(($i215 == 1)); + goto $bb72; +$bb72: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 854, 3} true; + assume {:verifier.code 0} true; + $i211 := $i216; + goto $bb66; +$bb73: + assume ($i239 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 9} true; + assume {:verifier.code 0} true; + $i241 := $sext.i16.i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 11} true; + assume {:verifier.code 0} true; + $i242 := $slt.i32($i241, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i242} true; + goto $bb76, $bb78; +$bb74: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 861, 7} true; + assume {:verifier.code 0} true; + assume !(($i239 == 1)); + goto $bb75; +$bb75: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 866, 7} true; + assume {:verifier.code 0} true; + $i249 := $sext.i16.i32($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 866, 9} true; + assume {:verifier.code 0} true; + $i250 := $srem.i32($i249, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 866, 7} true; + assume {:verifier.code 0} true; + $i251 := $trunc.i32.i16($i250); + call {:cexpr "a"} boogie_si_record_i16($i251); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 867, 8} true; + assume {:verifier.code 0} true; + $i252 := $sext.i16.i32($i251); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 867, 5} true; + assume {:verifier.code 0} true; + $i253 := $sext.i16.i32($i251); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 867, 5} true; + assume {:verifier.code 0} true; + $i254 := $add.i32($i253, $i252); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 867, 5} true; + assume {:verifier.code 0} true; + $i255 := $trunc.i32.i16($i254); + call {:cexpr "a"} boogie_si_record_i16($i255); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 868, 7} true; + assume {:verifier.code 0} true; + $i256 := $sext.i16.i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 868, 9} true; + assume {:verifier.code 0} true; + $i257 := $srem.i32($i256, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 868, 7} true; + assume {:verifier.code 0} true; + $i258 := $trunc.i32.i16($i257); + call {:cexpr "b"} boogie_si_record_i16($i258); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 869, 8} true; + assume {:verifier.code 0} true; + $i259 := $sext.i16.i32($i258); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 869, 5} true; + assume {:verifier.code 0} true; + $i260 := $sext.i16.i32($i258); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 869, 5} true; + assume {:verifier.code 0} true; + $i261 := $add.i32($i260, $i259); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 869, 5} true; + assume {:verifier.code 0} true; + $i262 := $trunc.i32.i16($i261); + call {:cexpr "b"} boogie_si_record_i16($i262); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 871, 8} true; + assume {:verifier.code 0} true; + $i263 := $sext.i16.i32($i240); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 871, 5} true; + assume {:verifier.code 0} true; + $i264 := $sext.i16.i32($i240); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 871, 5} true; + assume {:verifier.code 0} true; + $i265 := $add.i32($i264, $i263); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 871, 5} true; + assume {:verifier.code 0} true; + $i266 := $trunc.i32.i16($i265); + call {:cexpr "c"} boogie_si_record_i16($i266); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 872, 7} true; + assume {:verifier.code 0} true; + $i267 := $sext.i16.i32($i255); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 872, 9} true; + assume {:verifier.code 0} true; + $i268 := $slt.i32($i267, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 872, 7} true; + assume {:verifier.code 0} true; + $i269 := $i266; + assume {:branchcond $i268} true; + goto $bb82, $bb83; +$bb76: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 15} true; + assume {:verifier.code 0} true; + assume ($i242 == 1); + goto $bb77; +$bb77: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 863, 9} true; + assume {:verifier.code 0} true; + $i246 := $sext.i16.i32($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 863, 9} true; + assume {:verifier.code 0} true; + $i247 := $add.i32($i246, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 863, 9} true; + assume {:verifier.code 0} true; + $i248 := $trunc.i32.i16($i247); + call {:cexpr "c"} boogie_si_record_i16($i248); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 864, 5} true; + assume {:verifier.code 0} true; + $i245 := $i248; + goto $bb81; +$bb78: + assume !(($i242 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 18} true; + assume {:verifier.code 0} true; + $i243 := $sext.i16.i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 20} true; + assume {:verifier.code 0} true; + $i244 := $sgt.i32($i243, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 9} true; + assume {:verifier.code 0} true; + $i245 := $i237; + assume {:branchcond $i244} true; + goto $bb79, $bb80; +$bb79: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 9} true; + assume {:verifier.code 0} true; + assume ($i244 == 1); + goto $bb77; +$bb80: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 9} true; + assume {:verifier.code 0} true; + assume !(($i244 == 1)); + goto $bb81; +$bb81: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 865, 3} true; + assume {:verifier.code 0} true; + $i240 := $i245; + goto $bb75; +$bb82: + assume ($i268 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 9} true; + assume {:verifier.code 0} true; + $i270 := $sext.i16.i32($i262); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 11} true; + assume {:verifier.code 0} true; + $i271 := $slt.i32($i270, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i271} true; + goto $bb85, $bb87; +$bb83: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 872, 7} true; + assume {:verifier.code 0} true; + assume !(($i268 == 1)); + goto $bb84; +$bb84: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 877, 7} true; + assume {:verifier.code 0} true; + $i278 := $sext.i16.i32($i255); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 877, 9} true; + assume {:verifier.code 0} true; + $i279 := $srem.i32($i278, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 877, 7} true; + assume {:verifier.code 0} true; + $i280 := $trunc.i32.i16($i279); + call {:cexpr "a"} boogie_si_record_i16($i280); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 878, 8} true; + assume {:verifier.code 0} true; + $i281 := $sext.i16.i32($i280); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 878, 5} true; + assume {:verifier.code 0} true; + $i282 := $sext.i16.i32($i280); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 878, 5} true; + assume {:verifier.code 0} true; + $i283 := $add.i32($i282, $i281); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 878, 5} true; + assume {:verifier.code 0} true; + $i284 := $trunc.i32.i16($i283); + call {:cexpr "a"} boogie_si_record_i16($i284); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 879, 7} true; + assume {:verifier.code 0} true; + $i285 := $sext.i16.i32($i262); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 879, 9} true; + assume {:verifier.code 0} true; + $i286 := $srem.i32($i285, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 879, 7} true; + assume {:verifier.code 0} true; + $i287 := $trunc.i32.i16($i286); + call {:cexpr "b"} boogie_si_record_i16($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 880, 8} true; + assume {:verifier.code 0} true; + $i288 := $sext.i16.i32($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 880, 5} true; + assume {:verifier.code 0} true; + $i289 := $sext.i16.i32($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 880, 5} true; + assume {:verifier.code 0} true; + $i290 := $add.i32($i289, $i288); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 880, 5} true; + assume {:verifier.code 0} true; + $i291 := $trunc.i32.i16($i290); + call {:cexpr "b"} boogie_si_record_i16($i291); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 882, 8} true; + assume {:verifier.code 0} true; + $i292 := $sext.i16.i32($i269); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 882, 5} true; + assume {:verifier.code 0} true; + $i293 := $sext.i16.i32($i269); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 882, 5} true; + assume {:verifier.code 0} true; + $i294 := $add.i32($i293, $i292); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 882, 5} true; + assume {:verifier.code 0} true; + $i295 := $trunc.i32.i16($i294); + call {:cexpr "c"} boogie_si_record_i16($i295); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 883, 7} true; + assume {:verifier.code 0} true; + $i296 := $sext.i16.i32($i284); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 883, 9} true; + assume {:verifier.code 0} true; + $i297 := $slt.i32($i296, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 883, 7} true; + assume {:verifier.code 0} true; + $i298 := $i295; + assume {:branchcond $i297} true; + goto $bb91, $bb92; +$bb85: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 15} true; + assume {:verifier.code 0} true; + assume ($i271 == 1); + goto $bb86; +$bb86: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 874, 9} true; + assume {:verifier.code 0} true; + $i275 := $sext.i16.i32($i266); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 874, 9} true; + assume {:verifier.code 0} true; + $i276 := $add.i32($i275, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 874, 9} true; + assume {:verifier.code 0} true; + $i277 := $trunc.i32.i16($i276); + call {:cexpr "c"} boogie_si_record_i16($i277); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 875, 5} true; + assume {:verifier.code 0} true; + $i274 := $i277; + goto $bb90; +$bb87: + assume !(($i271 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 18} true; + assume {:verifier.code 0} true; + $i272 := $sext.i16.i32($i262); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 20} true; + assume {:verifier.code 0} true; + $i273 := $sgt.i32($i272, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 9} true; + assume {:verifier.code 0} true; + $i274 := $i266; + assume {:branchcond $i273} true; + goto $bb88, $bb89; +$bb88: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 9} true; + assume {:verifier.code 0} true; + assume ($i273 == 1); + goto $bb86; +$bb89: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 9} true; + assume {:verifier.code 0} true; + assume !(($i273 == 1)); + goto $bb90; +$bb90: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 876, 3} true; + assume {:verifier.code 0} true; + $i269 := $i274; + goto $bb84; +$bb91: + assume ($i297 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 9} true; + assume {:verifier.code 0} true; + $i299 := $sext.i16.i32($i291); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 11} true; + assume {:verifier.code 0} true; + $i300 := $slt.i32($i299, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i300} true; + goto $bb94, $bb96; +$bb92: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 883, 7} true; + assume {:verifier.code 0} true; + assume !(($i297 == 1)); + goto $bb93; +$bb93: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 888, 7} true; + assume {:verifier.code 0} true; + $i307 := $sext.i16.i32($i284); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 888, 9} true; + assume {:verifier.code 0} true; + $i308 := $srem.i32($i307, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 888, 7} true; + assume {:verifier.code 0} true; + $i309 := $trunc.i32.i16($i308); + call {:cexpr "a"} boogie_si_record_i16($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 889, 8} true; + assume {:verifier.code 0} true; + $i310 := $sext.i16.i32($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 889, 5} true; + assume {:verifier.code 0} true; + $i311 := $sext.i16.i32($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 889, 5} true; + assume {:verifier.code 0} true; + $i312 := $add.i32($i311, $i310); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 889, 5} true; + assume {:verifier.code 0} true; + $i313 := $trunc.i32.i16($i312); + call {:cexpr "a"} boogie_si_record_i16($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 890, 7} true; + assume {:verifier.code 0} true; + $i314 := $sext.i16.i32($i291); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 890, 9} true; + assume {:verifier.code 0} true; + $i315 := $srem.i32($i314, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 890, 7} true; + assume {:verifier.code 0} true; + $i316 := $trunc.i32.i16($i315); + call {:cexpr "b"} boogie_si_record_i16($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 891, 8} true; + assume {:verifier.code 0} true; + $i317 := $sext.i16.i32($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 891, 5} true; + assume {:verifier.code 0} true; + $i318 := $sext.i16.i32($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 891, 5} true; + assume {:verifier.code 0} true; + $i319 := $add.i32($i318, $i317); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 891, 5} true; + assume {:verifier.code 0} true; + $i320 := $trunc.i32.i16($i319); + call {:cexpr "b"} boogie_si_record_i16($i320); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 893, 8} true; + assume {:verifier.code 0} true; + $i321 := $sext.i16.i32($i298); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 893, 5} true; + assume {:verifier.code 0} true; + $i322 := $sext.i16.i32($i298); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 893, 5} true; + assume {:verifier.code 0} true; + $i323 := $add.i32($i322, $i321); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 893, 5} true; + assume {:verifier.code 0} true; + $i324 := $trunc.i32.i16($i323); + call {:cexpr "c"} boogie_si_record_i16($i324); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 894, 7} true; + assume {:verifier.code 0} true; + $i325 := $sext.i16.i32($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 894, 9} true; + assume {:verifier.code 0} true; + $i326 := $slt.i32($i325, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 894, 7} true; + assume {:verifier.code 0} true; + $i327 := $i324; + assume {:branchcond $i326} true; + goto $bb100, $bb101; +$bb94: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 15} true; + assume {:verifier.code 0} true; + assume ($i300 == 1); + goto $bb95; +$bb95: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 885, 9} true; + assume {:verifier.code 0} true; + $i304 := $sext.i16.i32($i295); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 885, 9} true; + assume {:verifier.code 0} true; + $i305 := $add.i32($i304, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 885, 9} true; + assume {:verifier.code 0} true; + $i306 := $trunc.i32.i16($i305); + call {:cexpr "c"} boogie_si_record_i16($i306); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 886, 5} true; + assume {:verifier.code 0} true; + $i303 := $i306; + goto $bb99; +$bb96: + assume !(($i300 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 18} true; + assume {:verifier.code 0} true; + $i301 := $sext.i16.i32($i291); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 20} true; + assume {:verifier.code 0} true; + $i302 := $sgt.i32($i301, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 9} true; + assume {:verifier.code 0} true; + $i303 := $i295; + assume {:branchcond $i302} true; + goto $bb97, $bb98; +$bb97: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 9} true; + assume {:verifier.code 0} true; + assume ($i302 == 1); + goto $bb95; +$bb98: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 9} true; + assume {:verifier.code 0} true; + assume !(($i302 == 1)); + goto $bb99; +$bb99: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 887, 3} true; + assume {:verifier.code 0} true; + $i298 := $i303; + goto $bb93; +$bb100: + assume ($i326 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 9} true; + assume {:verifier.code 0} true; + $i328 := $sext.i16.i32($i320); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 11} true; + assume {:verifier.code 0} true; + $i329 := $slt.i32($i328, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i329} true; + goto $bb103, $bb105; +$bb101: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 894, 7} true; + assume {:verifier.code 0} true; + assume !(($i326 == 1)); + goto $bb102; +$bb102: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 899, 7} true; + assume {:verifier.code 0} true; + $i336 := $sext.i16.i32($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 899, 9} true; + assume {:verifier.code 0} true; + $i337 := $srem.i32($i336, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 899, 7} true; + assume {:verifier.code 0} true; + $i338 := $trunc.i32.i16($i337); + call {:cexpr "a"} boogie_si_record_i16($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 900, 8} true; + assume {:verifier.code 0} true; + $i339 := $sext.i16.i32($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 900, 5} true; + assume {:verifier.code 0} true; + $i340 := $sext.i16.i32($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 900, 5} true; + assume {:verifier.code 0} true; + $i341 := $add.i32($i340, $i339); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 900, 5} true; + assume {:verifier.code 0} true; + $i342 := $trunc.i32.i16($i341); + call {:cexpr "a"} boogie_si_record_i16($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 901, 7} true; + assume {:verifier.code 0} true; + $i343 := $sext.i16.i32($i320); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 901, 9} true; + assume {:verifier.code 0} true; + $i344 := $srem.i32($i343, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 901, 7} true; + assume {:verifier.code 0} true; + $i345 := $trunc.i32.i16($i344); + call {:cexpr "b"} boogie_si_record_i16($i345); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 902, 8} true; + assume {:verifier.code 0} true; + $i346 := $sext.i16.i32($i345); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 902, 5} true; + assume {:verifier.code 0} true; + $i347 := $sext.i16.i32($i345); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 902, 5} true; + assume {:verifier.code 0} true; + $i348 := $add.i32($i347, $i346); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 902, 5} true; + assume {:verifier.code 0} true; + $i349 := $trunc.i32.i16($i348); + call {:cexpr "b"} boogie_si_record_i16($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 904, 8} true; + assume {:verifier.code 0} true; + $i350 := $sext.i16.i32($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 904, 5} true; + assume {:verifier.code 0} true; + $i351 := $sext.i16.i32($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 904, 5} true; + assume {:verifier.code 0} true; + $i352 := $add.i32($i351, $i350); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 904, 5} true; + assume {:verifier.code 0} true; + $i353 := $trunc.i32.i16($i352); + call {:cexpr "c"} boogie_si_record_i16($i353); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 905, 7} true; + assume {:verifier.code 0} true; + $i354 := $sext.i16.i32($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 905, 9} true; + assume {:verifier.code 0} true; + $i355 := $slt.i32($i354, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 905, 7} true; + assume {:verifier.code 0} true; + $i356 := $i353; + assume {:branchcond $i355} true; + goto $bb109, $bb110; +$bb103: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 15} true; + assume {:verifier.code 0} true; + assume ($i329 == 1); + goto $bb104; +$bb104: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 896, 9} true; + assume {:verifier.code 0} true; + $i333 := $sext.i16.i32($i324); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 896, 9} true; + assume {:verifier.code 0} true; + $i334 := $add.i32($i333, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 896, 9} true; + assume {:verifier.code 0} true; + $i335 := $trunc.i32.i16($i334); + call {:cexpr "c"} boogie_si_record_i16($i335); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 897, 5} true; + assume {:verifier.code 0} true; + $i332 := $i335; + goto $bb108; +$bb105: + assume !(($i329 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 18} true; + assume {:verifier.code 0} true; + $i330 := $sext.i16.i32($i320); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 20} true; + assume {:verifier.code 0} true; + $i331 := $sgt.i32($i330, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 9} true; + assume {:verifier.code 0} true; + $i332 := $i324; + assume {:branchcond $i331} true; + goto $bb106, $bb107; +$bb106: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 9} true; + assume {:verifier.code 0} true; + assume ($i331 == 1); + goto $bb104; +$bb107: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 9} true; + assume {:verifier.code 0} true; + assume !(($i331 == 1)); + goto $bb108; +$bb108: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 898, 3} true; + assume {:verifier.code 0} true; + $i327 := $i332; + goto $bb102; +$bb109: + assume ($i355 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 9} true; + assume {:verifier.code 0} true; + $i357 := $sext.i16.i32($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 11} true; + assume {:verifier.code 0} true; + $i358 := $slt.i32($i357, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i358} true; + goto $bb112, $bb114; +$bb110: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 905, 7} true; + assume {:verifier.code 0} true; + assume !(($i355 == 1)); + goto $bb111; +$bb111: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 910, 7} true; + assume {:verifier.code 0} true; + $i365 := $sext.i16.i32($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 910, 9} true; + assume {:verifier.code 0} true; + $i366 := $srem.i32($i365, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 910, 7} true; + assume {:verifier.code 0} true; + $i367 := $trunc.i32.i16($i366); + call {:cexpr "a"} boogie_si_record_i16($i367); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 911, 8} true; + assume {:verifier.code 0} true; + $i368 := $sext.i16.i32($i367); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 911, 5} true; + assume {:verifier.code 0} true; + $i369 := $sext.i16.i32($i367); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 911, 5} true; + assume {:verifier.code 0} true; + $i370 := $add.i32($i369, $i368); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 911, 5} true; + assume {:verifier.code 0} true; + $i371 := $trunc.i32.i16($i370); + call {:cexpr "a"} boogie_si_record_i16($i371); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 912, 7} true; + assume {:verifier.code 0} true; + $i372 := $sext.i16.i32($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 912, 9} true; + assume {:verifier.code 0} true; + $i373 := $srem.i32($i372, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 912, 7} true; + assume {:verifier.code 0} true; + $i374 := $trunc.i32.i16($i373); + call {:cexpr "b"} boogie_si_record_i16($i374); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 913, 8} true; + assume {:verifier.code 0} true; + $i375 := $sext.i16.i32($i374); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 913, 5} true; + assume {:verifier.code 0} true; + $i376 := $sext.i16.i32($i374); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 913, 5} true; + assume {:verifier.code 0} true; + $i377 := $add.i32($i376, $i375); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 913, 5} true; + assume {:verifier.code 0} true; + $i378 := $trunc.i32.i16($i377); + call {:cexpr "b"} boogie_si_record_i16($i378); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 915, 8} true; + assume {:verifier.code 0} true; + $i379 := $sext.i16.i32($i356); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 915, 5} true; + assume {:verifier.code 0} true; + $i380 := $sext.i16.i32($i356); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 915, 5} true; + assume {:verifier.code 0} true; + $i381 := $add.i32($i380, $i379); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 915, 5} true; + assume {:verifier.code 0} true; + $i382 := $trunc.i32.i16($i381); + call {:cexpr "c"} boogie_si_record_i16($i382); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 916, 7} true; + assume {:verifier.code 0} true; + $i383 := $sext.i16.i32($i371); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 916, 9} true; + assume {:verifier.code 0} true; + $i384 := $slt.i32($i383, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 916, 7} true; + assume {:verifier.code 0} true; + $i385 := $i382; + assume {:branchcond $i384} true; + goto $bb118, $bb119; +$bb112: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 15} true; + assume {:verifier.code 0} true; + assume ($i358 == 1); + goto $bb113; +$bb113: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 907, 9} true; + assume {:verifier.code 0} true; + $i362 := $sext.i16.i32($i353); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 907, 9} true; + assume {:verifier.code 0} true; + $i363 := $add.i32($i362, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 907, 9} true; + assume {:verifier.code 0} true; + $i364 := $trunc.i32.i16($i363); + call {:cexpr "c"} boogie_si_record_i16($i364); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 908, 5} true; + assume {:verifier.code 0} true; + $i361 := $i364; + goto $bb117; +$bb114: + assume !(($i358 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 18} true; + assume {:verifier.code 0} true; + $i359 := $sext.i16.i32($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 20} true; + assume {:verifier.code 0} true; + $i360 := $sgt.i32($i359, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 9} true; + assume {:verifier.code 0} true; + $i361 := $i353; + assume {:branchcond $i360} true; + goto $bb115, $bb116; +$bb115: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 9} true; + assume {:verifier.code 0} true; + assume ($i360 == 1); + goto $bb113; +$bb116: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 9} true; + assume {:verifier.code 0} true; + assume !(($i360 == 1)); + goto $bb117; +$bb117: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 909, 3} true; + assume {:verifier.code 0} true; + $i356 := $i361; + goto $bb111; +$bb118: + assume ($i384 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 9} true; + assume {:verifier.code 0} true; + $i386 := $sext.i16.i32($i378); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 11} true; + assume {:verifier.code 0} true; + $i387 := $slt.i32($i386, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i387} true; + goto $bb121, $bb123; +$bb119: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 916, 7} true; + assume {:verifier.code 0} true; + assume !(($i384 == 1)); + goto $bb120; +$bb120: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 921, 7} true; + assume {:verifier.code 0} true; + $i394 := $sext.i16.i32($i371); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 921, 9} true; + assume {:verifier.code 0} true; + $i395 := $srem.i32($i394, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 921, 7} true; + assume {:verifier.code 0} true; + $i396 := $trunc.i32.i16($i395); + call {:cexpr "a"} boogie_si_record_i16($i396); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 922, 8} true; + assume {:verifier.code 0} true; + $i397 := $sext.i16.i32($i396); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 922, 5} true; + assume {:verifier.code 0} true; + $i398 := $sext.i16.i32($i396); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 922, 5} true; + assume {:verifier.code 0} true; + $i399 := $add.i32($i398, $i397); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 922, 5} true; + assume {:verifier.code 0} true; + $i400 := $trunc.i32.i16($i399); + call {:cexpr "a"} boogie_si_record_i16($i400); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 923, 7} true; + assume {:verifier.code 0} true; + $i401 := $sext.i16.i32($i378); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 923, 9} true; + assume {:verifier.code 0} true; + $i402 := $srem.i32($i401, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 923, 7} true; + assume {:verifier.code 0} true; + $i403 := $trunc.i32.i16($i402); + call {:cexpr "b"} boogie_si_record_i16($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 924, 8} true; + assume {:verifier.code 0} true; + $i404 := $sext.i16.i32($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 924, 5} true; + assume {:verifier.code 0} true; + $i405 := $sext.i16.i32($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 924, 5} true; + assume {:verifier.code 0} true; + $i406 := $add.i32($i405, $i404); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 924, 5} true; + assume {:verifier.code 0} true; + $i407 := $trunc.i32.i16($i406); + call {:cexpr "b"} boogie_si_record_i16($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 926, 8} true; + assume {:verifier.code 0} true; + $i408 := $sext.i16.i32($i385); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 926, 5} true; + assume {:verifier.code 0} true; + $i409 := $sext.i16.i32($i385); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 926, 5} true; + assume {:verifier.code 0} true; + $i410 := $add.i32($i409, $i408); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 926, 5} true; + assume {:verifier.code 0} true; + $i411 := $trunc.i32.i16($i410); + call {:cexpr "c"} boogie_si_record_i16($i411); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 927, 7} true; + assume {:verifier.code 0} true; + $i412 := $sext.i16.i32($i400); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 927, 9} true; + assume {:verifier.code 0} true; + $i413 := $slt.i32($i412, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 927, 7} true; + assume {:verifier.code 0} true; + $i414 := $i411; + assume {:branchcond $i413} true; + goto $bb127, $bb128; +$bb121: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 15} true; + assume {:verifier.code 0} true; + assume ($i387 == 1); + goto $bb122; +$bb122: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 918, 9} true; + assume {:verifier.code 0} true; + $i391 := $sext.i16.i32($i382); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 918, 9} true; + assume {:verifier.code 0} true; + $i392 := $add.i32($i391, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 918, 9} true; + assume {:verifier.code 0} true; + $i393 := $trunc.i32.i16($i392); + call {:cexpr "c"} boogie_si_record_i16($i393); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 919, 5} true; + assume {:verifier.code 0} true; + $i390 := $i393; + goto $bb126; +$bb123: + assume !(($i387 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 18} true; + assume {:verifier.code 0} true; + $i388 := $sext.i16.i32($i378); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 20} true; + assume {:verifier.code 0} true; + $i389 := $sgt.i32($i388, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 9} true; + assume {:verifier.code 0} true; + $i390 := $i382; + assume {:branchcond $i389} true; + goto $bb124, $bb125; +$bb124: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 9} true; + assume {:verifier.code 0} true; + assume ($i389 == 1); + goto $bb122; +$bb125: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 9} true; + assume {:verifier.code 0} true; + assume !(($i389 == 1)); + goto $bb126; +$bb126: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 920, 3} true; + assume {:verifier.code 0} true; + $i385 := $i390; + goto $bb120; +$bb127: + assume ($i413 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 9} true; + assume {:verifier.code 0} true; + $i415 := $sext.i16.i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 11} true; + assume {:verifier.code 0} true; + $i416 := $slt.i32($i415, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i416} true; + goto $bb130, $bb132; +$bb128: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 927, 7} true; + assume {:verifier.code 0} true; + assume !(($i413 == 1)); + goto $bb129; +$bb129: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 932, 7} true; + assume {:verifier.code 0} true; + $i423 := $sext.i16.i32($i400); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 932, 9} true; + assume {:verifier.code 0} true; + $i424 := $srem.i32($i423, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 932, 7} true; + assume {:verifier.code 0} true; + $i425 := $trunc.i32.i16($i424); + call {:cexpr "a"} boogie_si_record_i16($i425); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 933, 8} true; + assume {:verifier.code 0} true; + $i426 := $sext.i16.i32($i425); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 933, 5} true; + assume {:verifier.code 0} true; + $i427 := $sext.i16.i32($i425); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 933, 5} true; + assume {:verifier.code 0} true; + $i428 := $add.i32($i427, $i426); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 933, 5} true; + assume {:verifier.code 0} true; + $i429 := $trunc.i32.i16($i428); + call {:cexpr "a"} boogie_si_record_i16($i429); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 934, 7} true; + assume {:verifier.code 0} true; + $i430 := $sext.i16.i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 934, 9} true; + assume {:verifier.code 0} true; + $i431 := $srem.i32($i430, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 934, 7} true; + assume {:verifier.code 0} true; + $i432 := $trunc.i32.i16($i431); + call {:cexpr "b"} boogie_si_record_i16($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 935, 8} true; + assume {:verifier.code 0} true; + $i433 := $sext.i16.i32($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 935, 5} true; + assume {:verifier.code 0} true; + $i434 := $sext.i16.i32($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 935, 5} true; + assume {:verifier.code 0} true; + $i435 := $add.i32($i434, $i433); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 935, 5} true; + assume {:verifier.code 0} true; + $i436 := $trunc.i32.i16($i435); + call {:cexpr "b"} boogie_si_record_i16($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 937, 8} true; + assume {:verifier.code 0} true; + $i437 := $sext.i16.i32($i414); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 937, 5} true; + assume {:verifier.code 0} true; + $i438 := $sext.i16.i32($i414); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 937, 5} true; + assume {:verifier.code 0} true; + $i439 := $add.i32($i438, $i437); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 937, 5} true; + assume {:verifier.code 0} true; + $i440 := $trunc.i32.i16($i439); + call {:cexpr "c"} boogie_si_record_i16($i440); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 938, 7} true; + assume {:verifier.code 0} true; + $i441 := $sext.i16.i32($i429); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 938, 9} true; + assume {:verifier.code 0} true; + $i442 := $slt.i32($i441, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 938, 7} true; + assume {:verifier.code 0} true; + $i443 := $i440; + assume {:branchcond $i442} true; + goto $bb136, $bb137; +$bb130: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 15} true; + assume {:verifier.code 0} true; + assume ($i416 == 1); + goto $bb131; +$bb131: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 929, 9} true; + assume {:verifier.code 0} true; + $i420 := $sext.i16.i32($i411); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 929, 9} true; + assume {:verifier.code 0} true; + $i421 := $add.i32($i420, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 929, 9} true; + assume {:verifier.code 0} true; + $i422 := $trunc.i32.i16($i421); + call {:cexpr "c"} boogie_si_record_i16($i422); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 930, 5} true; + assume {:verifier.code 0} true; + $i419 := $i422; + goto $bb135; +$bb132: + assume !(($i416 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 18} true; + assume {:verifier.code 0} true; + $i417 := $sext.i16.i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 20} true; + assume {:verifier.code 0} true; + $i418 := $sgt.i32($i417, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 9} true; + assume {:verifier.code 0} true; + $i419 := $i411; + assume {:branchcond $i418} true; + goto $bb133, $bb134; +$bb133: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 9} true; + assume {:verifier.code 0} true; + assume ($i418 == 1); + goto $bb131; +$bb134: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 9} true; + assume {:verifier.code 0} true; + assume !(($i418 == 1)); + goto $bb135; +$bb135: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 931, 3} true; + assume {:verifier.code 0} true; + $i414 := $i419; + goto $bb129; +$bb136: + assume ($i442 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 9} true; + assume {:verifier.code 0} true; + $i444 := $sext.i16.i32($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 11} true; + assume {:verifier.code 0} true; + $i445 := $slt.i32($i444, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i445} true; + goto $bb139, $bb141; +$bb137: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 938, 7} true; + assume {:verifier.code 0} true; + assume !(($i442 == 1)); + goto $bb138; +$bb138: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 948, 3} true; + assume {:verifier.code 0} true; + $r := $i443; + $exn := false; + return; +$bb139: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 15} true; + assume {:verifier.code 0} true; + assume ($i445 == 1); + goto $bb140; +$bb140: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 940, 9} true; + assume {:verifier.code 0} true; + $i449 := $sext.i16.i32($i440); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 940, 9} true; + assume {:verifier.code 0} true; + $i450 := $add.i32($i449, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 940, 9} true; + assume {:verifier.code 0} true; + $i451 := $trunc.i32.i16($i450); + call {:cexpr "c"} boogie_si_record_i16($i451); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 941, 5} true; + assume {:verifier.code 0} true; + $i448 := $i451; + goto $bb144; +$bb141: + assume !(($i445 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 18} true; + assume {:verifier.code 0} true; + $i446 := $sext.i16.i32($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 20} true; + assume {:verifier.code 0} true; + $i447 := $sgt.i32($i446, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 9} true; + assume {:verifier.code 0} true; + $i448 := $i440; + assume {:branchcond $i447} true; + goto $bb142, $bb143; +$bb142: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 9} true; + assume {:verifier.code 0} true; + assume ($i447 == 1); + goto $bb140; +$bb143: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 9} true; + assume {:verifier.code 0} true; + assume !(($i447 == 1)); + goto $bb144; +$bb144: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 942, 3} true; + assume {:verifier.code 0} true; + $i443 := $i448; + goto $bb138; +} +const __SMACK_and8: ref; +axiom (__SMACK_and8 == $sub.ref(0, 13413)); +procedure __SMACK_and8($i0: i8, $i1: i8) + returns ($r: i8) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i8; + var $i6: i32; + var $i7: i1; + var $i9: i32; + var $i10: i1; + var $i11: i32; + var $i12: i1; + var $i14: i32; + var $i15: i32; + var $i16: i8; + var $i13: i8; + var $i8: i8; + var $i17: i32; + var $i18: i32; + var $i19: i8; + var $i20: i32; + var $i21: i32; + var $i22: i32; + var $i23: i8; + var $i24: i32; + var $i25: i32; + var $i26: i8; + var $i27: i32; + var $i28: i32; + var $i29: i32; + var $i30: i8; + var $i31: i32; + var $i32: i32; + var $i33: i32; + var $i34: i8; + var $i35: i32; + var $i36: i1; + var $i38: i32; + var $i39: i1; + var $i40: i32; + var $i41: i1; + var $i43: i32; + var $i44: i32; + var $i45: i8; + var $i42: i8; + var $i37: i8; + var $i46: i32; + var $i47: i32; + var $i48: i8; + var $i49: i32; + var $i50: i32; + var $i51: i32; + var $i52: i8; + var $i53: i32; + var $i54: i32; + var $i55: i8; + var $i56: i32; + var $i57: i32; + var $i58: i32; + var $i59: i8; + var $i60: i32; + var $i61: i32; + var $i62: i32; + var $i63: i8; + var $i64: i32; + var $i65: i1; + var $i67: i32; + var $i68: i1; + var $i69: i32; + var $i70: i1; + var $i72: i32; + var $i73: i32; + var $i74: i8; + var $i71: i8; + var $i66: i8; + var $i75: i32; + var $i76: i32; + var $i77: i8; + var $i78: i32; + var $i79: i32; + var $i80: i32; + var $i81: i8; + var $i82: i32; + var $i83: i32; + var $i84: i8; + var $i85: i32; + var $i86: i32; + var $i87: i32; + var $i88: i8; + var $i89: i32; + var $i90: i32; + var $i91: i32; + var $i92: i8; + var $i93: i32; + var $i94: i1; + var $i96: i32; + var $i97: i1; + var $i98: i32; + var $i99: i1; + var $i101: i32; + var $i102: i32; + var $i103: i8; + var $i100: i8; + var $i95: i8; + var $i104: i32; + var $i105: i32; + var $i106: i8; + var $i107: i32; + var $i108: i32; + var $i109: i32; + var $i110: i8; + var $i111: i32; + var $i112: i32; + var $i113: i8; + var $i114: i32; + var $i115: i32; + var $i116: i32; + var $i117: i8; + var $i118: i32; + var $i119: i32; + var $i120: i32; + var $i121: i8; + var $i122: i32; + var $i123: i1; + var $i125: i32; + var $i126: i1; + var $i127: i32; + var $i128: i1; + var $i130: i32; + var $i131: i32; + var $i132: i8; + var $i129: i8; + var $i124: i8; + var $i133: i32; + var $i134: i32; + var $i135: i8; + var $i136: i32; + var $i137: i32; + var $i138: i32; + var $i139: i8; + var $i140: i32; + var $i141: i32; + var $i142: i8; + var $i143: i32; + var $i144: i32; + var $i145: i32; + var $i146: i8; + var $i147: i32; + var $i148: i32; + var $i149: i32; + var $i150: i8; + var $i151: i32; + var $i152: i1; + var $i154: i32; + var $i155: i1; + var $i156: i32; + var $i157: i1; + var $i159: i32; + var $i160: i32; + var $i161: i8; + var $i158: i8; + var $i153: i8; + var $i162: i32; + var $i163: i32; + var $i164: i8; + var $i165: i32; + var $i166: i32; + var $i167: i32; + var $i168: i8; + var $i169: i32; + var $i170: i32; + var $i171: i8; + var $i172: i32; + var $i173: i32; + var $i174: i32; + var $i175: i8; + var $i176: i32; + var $i177: i32; + var $i178: i32; + var $i179: i8; + var $i180: i32; + var $i181: i1; + var $i183: i32; + var $i184: i1; + var $i185: i32; + var $i186: i1; + var $i188: i32; + var $i189: i32; + var $i190: i8; + var $i187: i8; + var $i182: i8; + var $i191: i32; + var $i192: i32; + var $i193: i8; + var $i194: i32; + var $i195: i32; + var $i196: i32; + var $i197: i8; + var $i198: i32; + var $i199: i32; + var $i200: i8; + var $i201: i32; + var $i202: i32; + var $i203: i32; + var $i204: i8; + var $i205: i32; + var $i206: i32; + var $i207: i32; + var $i208: i8; + var $i209: i32; + var $i210: i1; + var $i212: i32; + var $i213: i1; + var $i214: i32; + var $i215: i1; + var $i217: i32; + var $i218: i32; + var $i219: i8; + var $i216: i8; + var $i211: i8; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 8} true; + assume {:verifier.code 0} true; + call {:cexpr "__SMACK_and8:arg:a"} boogie_si_record_i8($i0); + call {:cexpr "__SMACK_and8:arg:b"} boogie_si_record_i8($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 8} true; + assume {:verifier.code 0} true; + $i2 := $sext.i8.i32(0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 5} true; + assume {:verifier.code 0} true; + $i3 := $sext.i8.i32(0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 5} true; + assume {:verifier.code 0} true; + $i4 := $add.i32($i3, $i2); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 5} true; + assume {:verifier.code 0} true; + $i5 := $trunc.i32.i8($i4); + call {:cexpr "c"} boogie_si_record_i8($i5); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 955, 7} true; + assume {:verifier.code 0} true; + $i6 := $sext.i8.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 955, 9} true; + assume {:verifier.code 0} true; + $i7 := $slt.i32($i6, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 955, 7} true; + assume {:verifier.code 0} true; + $i8 := $i5; + assume {:branchcond $i7} true; + goto $bb1, $bb2; +$bb1: + assume ($i7 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 9} true; + assume {:verifier.code 0} true; + $i9 := $sext.i8.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 11} true; + assume {:verifier.code 0} true; + $i10 := $slt.i32($i9, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i10} true; + goto $bb4, $bb6; +$bb2: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 955, 7} true; + assume {:verifier.code 0} true; + assume !(($i7 == 1)); + goto $bb3; +$bb3: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 960, 7} true; + assume {:verifier.code 0} true; + $i17 := $sext.i8.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 960, 9} true; + assume {:verifier.code 0} true; + $i18 := $srem.i32($i17, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 960, 7} true; + assume {:verifier.code 0} true; + $i19 := $trunc.i32.i8($i18); + call {:cexpr "a"} boogie_si_record_i8($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 961, 8} true; + assume {:verifier.code 0} true; + $i20 := $sext.i8.i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 961, 5} true; + assume {:verifier.code 0} true; + $i21 := $sext.i8.i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 961, 5} true; + assume {:verifier.code 0} true; + $i22 := $add.i32($i21, $i20); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 961, 5} true; + assume {:verifier.code 0} true; + $i23 := $trunc.i32.i8($i22); + call {:cexpr "a"} boogie_si_record_i8($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 962, 7} true; + assume {:verifier.code 0} true; + $i24 := $sext.i8.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 962, 9} true; + assume {:verifier.code 0} true; + $i25 := $srem.i32($i24, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 962, 7} true; + assume {:verifier.code 0} true; + $i26 := $trunc.i32.i8($i25); + call {:cexpr "b"} boogie_si_record_i8($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 963, 8} true; + assume {:verifier.code 0} true; + $i27 := $sext.i8.i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 963, 5} true; + assume {:verifier.code 0} true; + $i28 := $sext.i8.i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 963, 5} true; + assume {:verifier.code 0} true; + $i29 := $add.i32($i28, $i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 963, 5} true; + assume {:verifier.code 0} true; + $i30 := $trunc.i32.i8($i29); + call {:cexpr "b"} boogie_si_record_i8($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 965, 8} true; + assume {:verifier.code 0} true; + $i31 := $sext.i8.i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 965, 5} true; + assume {:verifier.code 0} true; + $i32 := $sext.i8.i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 965, 5} true; + assume {:verifier.code 0} true; + $i33 := $add.i32($i32, $i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 965, 5} true; + assume {:verifier.code 0} true; + $i34 := $trunc.i32.i8($i33); + call {:cexpr "c"} boogie_si_record_i8($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 966, 7} true; + assume {:verifier.code 0} true; + $i35 := $sext.i8.i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 966, 9} true; + assume {:verifier.code 0} true; + $i36 := $slt.i32($i35, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 966, 7} true; + assume {:verifier.code 0} true; + $i37 := $i34; + assume {:branchcond $i36} true; + goto $bb10, $bb11; +$bb4: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 15} true; + assume {:verifier.code 0} true; + assume ($i10 == 1); + goto $bb5; +$bb5: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 957, 9} true; + assume {:verifier.code 0} true; + $i14 := $sext.i8.i32($i5); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 957, 9} true; + assume {:verifier.code 0} true; + $i15 := $add.i32($i14, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 957, 9} true; + assume {:verifier.code 0} true; + $i16 := $trunc.i32.i8($i15); + call {:cexpr "c"} boogie_si_record_i8($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 958, 5} true; + assume {:verifier.code 0} true; + $i13 := $i16; + goto $bb9; +$bb6: + assume !(($i10 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 18} true; + assume {:verifier.code 0} true; + $i11 := $sext.i8.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 20} true; + assume {:verifier.code 0} true; + $i12 := $sgt.i32($i11, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 9} true; + assume {:verifier.code 0} true; + $i13 := $i5; + assume {:branchcond $i12} true; + goto $bb7, $bb8; +$bb7: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 9} true; + assume {:verifier.code 0} true; + assume ($i12 == 1); + goto $bb5; +$bb8: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 9} true; + assume {:verifier.code 0} true; + assume !(($i12 == 1)); + goto $bb9; +$bb9: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 959, 3} true; + assume {:verifier.code 0} true; + $i8 := $i13; + goto $bb3; +$bb10: + assume ($i36 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 9} true; + assume {:verifier.code 0} true; + $i38 := $sext.i8.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 11} true; + assume {:verifier.code 0} true; + $i39 := $slt.i32($i38, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i39} true; + goto $bb13, $bb15; +$bb11: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 966, 7} true; + assume {:verifier.code 0} true; + assume !(($i36 == 1)); + goto $bb12; +$bb12: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 971, 7} true; + assume {:verifier.code 0} true; + $i46 := $sext.i8.i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 971, 9} true; + assume {:verifier.code 0} true; + $i47 := $srem.i32($i46, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 971, 7} true; + assume {:verifier.code 0} true; + $i48 := $trunc.i32.i8($i47); + call {:cexpr "a"} boogie_si_record_i8($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 972, 8} true; + assume {:verifier.code 0} true; + $i49 := $sext.i8.i32($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 972, 5} true; + assume {:verifier.code 0} true; + $i50 := $sext.i8.i32($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 972, 5} true; + assume {:verifier.code 0} true; + $i51 := $add.i32($i50, $i49); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 972, 5} true; + assume {:verifier.code 0} true; + $i52 := $trunc.i32.i8($i51); + call {:cexpr "a"} boogie_si_record_i8($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 973, 7} true; + assume {:verifier.code 0} true; + $i53 := $sext.i8.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 973, 9} true; + assume {:verifier.code 0} true; + $i54 := $srem.i32($i53, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 973, 7} true; + assume {:verifier.code 0} true; + $i55 := $trunc.i32.i8($i54); + call {:cexpr "b"} boogie_si_record_i8($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 974, 8} true; + assume {:verifier.code 0} true; + $i56 := $sext.i8.i32($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 974, 5} true; + assume {:verifier.code 0} true; + $i57 := $sext.i8.i32($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 974, 5} true; + assume {:verifier.code 0} true; + $i58 := $add.i32($i57, $i56); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 974, 5} true; + assume {:verifier.code 0} true; + $i59 := $trunc.i32.i8($i58); + call {:cexpr "b"} boogie_si_record_i8($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 976, 8} true; + assume {:verifier.code 0} true; + $i60 := $sext.i8.i32($i37); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 976, 5} true; + assume {:verifier.code 0} true; + $i61 := $sext.i8.i32($i37); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 976, 5} true; + assume {:verifier.code 0} true; + $i62 := $add.i32($i61, $i60); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 976, 5} true; + assume {:verifier.code 0} true; + $i63 := $trunc.i32.i8($i62); + call {:cexpr "c"} boogie_si_record_i8($i63); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 977, 7} true; + assume {:verifier.code 0} true; + $i64 := $sext.i8.i32($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 977, 9} true; + assume {:verifier.code 0} true; + $i65 := $slt.i32($i64, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 977, 7} true; + assume {:verifier.code 0} true; + $i66 := $i63; + assume {:branchcond $i65} true; + goto $bb19, $bb20; +$bb13: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 15} true; + assume {:verifier.code 0} true; + assume ($i39 == 1); + goto $bb14; +$bb14: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 968, 9} true; + assume {:verifier.code 0} true; + $i43 := $sext.i8.i32($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 968, 9} true; + assume {:verifier.code 0} true; + $i44 := $add.i32($i43, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 968, 9} true; + assume {:verifier.code 0} true; + $i45 := $trunc.i32.i8($i44); + call {:cexpr "c"} boogie_si_record_i8($i45); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 969, 5} true; + assume {:verifier.code 0} true; + $i42 := $i45; + goto $bb18; +$bb15: + assume !(($i39 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 18} true; + assume {:verifier.code 0} true; + $i40 := $sext.i8.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 20} true; + assume {:verifier.code 0} true; + $i41 := $sgt.i32($i40, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 9} true; + assume {:verifier.code 0} true; + $i42 := $i34; + assume {:branchcond $i41} true; + goto $bb16, $bb17; +$bb16: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 9} true; + assume {:verifier.code 0} true; + assume ($i41 == 1); + goto $bb14; +$bb17: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 9} true; + assume {:verifier.code 0} true; + assume !(($i41 == 1)); + goto $bb18; +$bb18: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 970, 3} true; + assume {:verifier.code 0} true; + $i37 := $i42; + goto $bb12; +$bb19: + assume ($i65 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 9} true; + assume {:verifier.code 0} true; + $i67 := $sext.i8.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 11} true; + assume {:verifier.code 0} true; + $i68 := $slt.i32($i67, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i68} true; + goto $bb22, $bb24; +$bb20: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 977, 7} true; + assume {:verifier.code 0} true; + assume !(($i65 == 1)); + goto $bb21; +$bb21: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 982, 7} true; + assume {:verifier.code 0} true; + $i75 := $sext.i8.i32($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 982, 9} true; + assume {:verifier.code 0} true; + $i76 := $srem.i32($i75, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 982, 7} true; + assume {:verifier.code 0} true; + $i77 := $trunc.i32.i8($i76); + call {:cexpr "a"} boogie_si_record_i8($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 983, 8} true; + assume {:verifier.code 0} true; + $i78 := $sext.i8.i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 983, 5} true; + assume {:verifier.code 0} true; + $i79 := $sext.i8.i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 983, 5} true; + assume {:verifier.code 0} true; + $i80 := $add.i32($i79, $i78); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 983, 5} true; + assume {:verifier.code 0} true; + $i81 := $trunc.i32.i8($i80); + call {:cexpr "a"} boogie_si_record_i8($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 984, 7} true; + assume {:verifier.code 0} true; + $i82 := $sext.i8.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 984, 9} true; + assume {:verifier.code 0} true; + $i83 := $srem.i32($i82, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 984, 7} true; + assume {:verifier.code 0} true; + $i84 := $trunc.i32.i8($i83); + call {:cexpr "b"} boogie_si_record_i8($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 985, 8} true; + assume {:verifier.code 0} true; + $i85 := $sext.i8.i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 985, 5} true; + assume {:verifier.code 0} true; + $i86 := $sext.i8.i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 985, 5} true; + assume {:verifier.code 0} true; + $i87 := $add.i32($i86, $i85); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 985, 5} true; + assume {:verifier.code 0} true; + $i88 := $trunc.i32.i8($i87); + call {:cexpr "b"} boogie_si_record_i8($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 987, 8} true; + assume {:verifier.code 0} true; + $i89 := $sext.i8.i32($i66); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 987, 5} true; + assume {:verifier.code 0} true; + $i90 := $sext.i8.i32($i66); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 987, 5} true; + assume {:verifier.code 0} true; + $i91 := $add.i32($i90, $i89); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 987, 5} true; + assume {:verifier.code 0} true; + $i92 := $trunc.i32.i8($i91); + call {:cexpr "c"} boogie_si_record_i8($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 988, 7} true; + assume {:verifier.code 0} true; + $i93 := $sext.i8.i32($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 988, 9} true; + assume {:verifier.code 0} true; + $i94 := $slt.i32($i93, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 988, 7} true; + assume {:verifier.code 0} true; + $i95 := $i92; + assume {:branchcond $i94} true; + goto $bb28, $bb29; +$bb22: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 15} true; + assume {:verifier.code 0} true; + assume ($i68 == 1); + goto $bb23; +$bb23: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 979, 9} true; + assume {:verifier.code 0} true; + $i72 := $sext.i8.i32($i63); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 979, 9} true; + assume {:verifier.code 0} true; + $i73 := $add.i32($i72, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 979, 9} true; + assume {:verifier.code 0} true; + $i74 := $trunc.i32.i8($i73); + call {:cexpr "c"} boogie_si_record_i8($i74); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 980, 5} true; + assume {:verifier.code 0} true; + $i71 := $i74; + goto $bb27; +$bb24: + assume !(($i68 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 18} true; + assume {:verifier.code 0} true; + $i69 := $sext.i8.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 20} true; + assume {:verifier.code 0} true; + $i70 := $sgt.i32($i69, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 9} true; + assume {:verifier.code 0} true; + $i71 := $i63; + assume {:branchcond $i70} true; + goto $bb25, $bb26; +$bb25: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 9} true; + assume {:verifier.code 0} true; + assume ($i70 == 1); + goto $bb23; +$bb26: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 9} true; + assume {:verifier.code 0} true; + assume !(($i70 == 1)); + goto $bb27; +$bb27: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 981, 3} true; + assume {:verifier.code 0} true; + $i66 := $i71; + goto $bb21; +$bb28: + assume ($i94 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 9} true; + assume {:verifier.code 0} true; + $i96 := $sext.i8.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 11} true; + assume {:verifier.code 0} true; + $i97 := $slt.i32($i96, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i97} true; + goto $bb31, $bb33; +$bb29: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 988, 7} true; + assume {:verifier.code 0} true; + assume !(($i94 == 1)); + goto $bb30; +$bb30: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 993, 7} true; + assume {:verifier.code 0} true; + $i104 := $sext.i8.i32($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 993, 9} true; + assume {:verifier.code 0} true; + $i105 := $srem.i32($i104, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 993, 7} true; + assume {:verifier.code 0} true; + $i106 := $trunc.i32.i8($i105); + call {:cexpr "a"} boogie_si_record_i8($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 994, 8} true; + assume {:verifier.code 0} true; + $i107 := $sext.i8.i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 994, 5} true; + assume {:verifier.code 0} true; + $i108 := $sext.i8.i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 994, 5} true; + assume {:verifier.code 0} true; + $i109 := $add.i32($i108, $i107); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 994, 5} true; + assume {:verifier.code 0} true; + $i110 := $trunc.i32.i8($i109); + call {:cexpr "a"} boogie_si_record_i8($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 995, 7} true; + assume {:verifier.code 0} true; + $i111 := $sext.i8.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 995, 9} true; + assume {:verifier.code 0} true; + $i112 := $srem.i32($i111, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 995, 7} true; + assume {:verifier.code 0} true; + $i113 := $trunc.i32.i8($i112); + call {:cexpr "b"} boogie_si_record_i8($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 996, 8} true; + assume {:verifier.code 0} true; + $i114 := $sext.i8.i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 996, 5} true; + assume {:verifier.code 0} true; + $i115 := $sext.i8.i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 996, 5} true; + assume {:verifier.code 0} true; + $i116 := $add.i32($i115, $i114); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 996, 5} true; + assume {:verifier.code 0} true; + $i117 := $trunc.i32.i8($i116); + call {:cexpr "b"} boogie_si_record_i8($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 998, 8} true; + assume {:verifier.code 0} true; + $i118 := $sext.i8.i32($i95); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 998, 5} true; + assume {:verifier.code 0} true; + $i119 := $sext.i8.i32($i95); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 998, 5} true; + assume {:verifier.code 0} true; + $i120 := $add.i32($i119, $i118); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 998, 5} true; + assume {:verifier.code 0} true; + $i121 := $trunc.i32.i8($i120); + call {:cexpr "c"} boogie_si_record_i8($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 999, 7} true; + assume {:verifier.code 0} true; + $i122 := $sext.i8.i32($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 999, 9} true; + assume {:verifier.code 0} true; + $i123 := $slt.i32($i122, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 999, 7} true; + assume {:verifier.code 0} true; + $i124 := $i121; + assume {:branchcond $i123} true; + goto $bb37, $bb38; +$bb31: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 15} true; + assume {:verifier.code 0} true; + assume ($i97 == 1); + goto $bb32; +$bb32: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 990, 9} true; + assume {:verifier.code 0} true; + $i101 := $sext.i8.i32($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 990, 9} true; + assume {:verifier.code 0} true; + $i102 := $add.i32($i101, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 990, 9} true; + assume {:verifier.code 0} true; + $i103 := $trunc.i32.i8($i102); + call {:cexpr "c"} boogie_si_record_i8($i103); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 991, 5} true; + assume {:verifier.code 0} true; + $i100 := $i103; + goto $bb36; +$bb33: + assume !(($i97 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 18} true; + assume {:verifier.code 0} true; + $i98 := $sext.i8.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 20} true; + assume {:verifier.code 0} true; + $i99 := $sgt.i32($i98, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 9} true; + assume {:verifier.code 0} true; + $i100 := $i92; + assume {:branchcond $i99} true; + goto $bb34, $bb35; +$bb34: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 9} true; + assume {:verifier.code 0} true; + assume ($i99 == 1); + goto $bb32; +$bb35: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 9} true; + assume {:verifier.code 0} true; + assume !(($i99 == 1)); + goto $bb36; +$bb36: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 992, 3} true; + assume {:verifier.code 0} true; + $i95 := $i100; + goto $bb30; +$bb37: + assume ($i123 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 9} true; + assume {:verifier.code 0} true; + $i125 := $sext.i8.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 11} true; + assume {:verifier.code 0} true; + $i126 := $slt.i32($i125, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i126} true; + goto $bb40, $bb42; +$bb38: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 999, 7} true; + assume {:verifier.code 0} true; + assume !(($i123 == 1)); + goto $bb39; +$bb39: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1004, 7} true; + assume {:verifier.code 0} true; + $i133 := $sext.i8.i32($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1004, 9} true; + assume {:verifier.code 0} true; + $i134 := $srem.i32($i133, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1004, 7} true; + assume {:verifier.code 0} true; + $i135 := $trunc.i32.i8($i134); + call {:cexpr "a"} boogie_si_record_i8($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1005, 8} true; + assume {:verifier.code 0} true; + $i136 := $sext.i8.i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1005, 5} true; + assume {:verifier.code 0} true; + $i137 := $sext.i8.i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1005, 5} true; + assume {:verifier.code 0} true; + $i138 := $add.i32($i137, $i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1005, 5} true; + assume {:verifier.code 0} true; + $i139 := $trunc.i32.i8($i138); + call {:cexpr "a"} boogie_si_record_i8($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1006, 7} true; + assume {:verifier.code 0} true; + $i140 := $sext.i8.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1006, 9} true; + assume {:verifier.code 0} true; + $i141 := $srem.i32($i140, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1006, 7} true; + assume {:verifier.code 0} true; + $i142 := $trunc.i32.i8($i141); + call {:cexpr "b"} boogie_si_record_i8($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1007, 8} true; + assume {:verifier.code 0} true; + $i143 := $sext.i8.i32($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1007, 5} true; + assume {:verifier.code 0} true; + $i144 := $sext.i8.i32($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1007, 5} true; + assume {:verifier.code 0} true; + $i145 := $add.i32($i144, $i143); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1007, 5} true; + assume {:verifier.code 0} true; + $i146 := $trunc.i32.i8($i145); + call {:cexpr "b"} boogie_si_record_i8($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1009, 8} true; + assume {:verifier.code 0} true; + $i147 := $sext.i8.i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1009, 5} true; + assume {:verifier.code 0} true; + $i148 := $sext.i8.i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1009, 5} true; + assume {:verifier.code 0} true; + $i149 := $add.i32($i148, $i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1009, 5} true; + assume {:verifier.code 0} true; + $i150 := $trunc.i32.i8($i149); + call {:cexpr "c"} boogie_si_record_i8($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1010, 7} true; + assume {:verifier.code 0} true; + $i151 := $sext.i8.i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1010, 9} true; + assume {:verifier.code 0} true; + $i152 := $slt.i32($i151, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1010, 7} true; + assume {:verifier.code 0} true; + $i153 := $i150; + assume {:branchcond $i152} true; + goto $bb46, $bb47; +$bb40: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 15} true; + assume {:verifier.code 0} true; + assume ($i126 == 1); + goto $bb41; +$bb41: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1001, 9} true; + assume {:verifier.code 0} true; + $i130 := $sext.i8.i32($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1001, 9} true; + assume {:verifier.code 0} true; + $i131 := $add.i32($i130, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1001, 9} true; + assume {:verifier.code 0} true; + $i132 := $trunc.i32.i8($i131); + call {:cexpr "c"} boogie_si_record_i8($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1002, 5} true; + assume {:verifier.code 0} true; + $i129 := $i132; + goto $bb45; +$bb42: + assume !(($i126 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 18} true; + assume {:verifier.code 0} true; + $i127 := $sext.i8.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 20} true; + assume {:verifier.code 0} true; + $i128 := $sgt.i32($i127, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 9} true; + assume {:verifier.code 0} true; + $i129 := $i121; + assume {:branchcond $i128} true; + goto $bb43, $bb44; +$bb43: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 9} true; + assume {:verifier.code 0} true; + assume ($i128 == 1); + goto $bb41; +$bb44: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 9} true; + assume {:verifier.code 0} true; + assume !(($i128 == 1)); + goto $bb45; +$bb45: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1003, 3} true; + assume {:verifier.code 0} true; + $i124 := $i129; + goto $bb39; +$bb46: + assume ($i152 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 9} true; + assume {:verifier.code 0} true; + $i154 := $sext.i8.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 11} true; + assume {:verifier.code 0} true; + $i155 := $slt.i32($i154, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i155} true; + goto $bb49, $bb51; +$bb47: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1010, 7} true; + assume {:verifier.code 0} true; + assume !(($i152 == 1)); + goto $bb48; +$bb48: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1015, 7} true; + assume {:verifier.code 0} true; + $i162 := $sext.i8.i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1015, 9} true; + assume {:verifier.code 0} true; + $i163 := $srem.i32($i162, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1015, 7} true; + assume {:verifier.code 0} true; + $i164 := $trunc.i32.i8($i163); + call {:cexpr "a"} boogie_si_record_i8($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1016, 8} true; + assume {:verifier.code 0} true; + $i165 := $sext.i8.i32($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1016, 5} true; + assume {:verifier.code 0} true; + $i166 := $sext.i8.i32($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1016, 5} true; + assume {:verifier.code 0} true; + $i167 := $add.i32($i166, $i165); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1016, 5} true; + assume {:verifier.code 0} true; + $i168 := $trunc.i32.i8($i167); + call {:cexpr "a"} boogie_si_record_i8($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1017, 7} true; + assume {:verifier.code 0} true; + $i169 := $sext.i8.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1017, 9} true; + assume {:verifier.code 0} true; + $i170 := $srem.i32($i169, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1017, 7} true; + assume {:verifier.code 0} true; + $i171 := $trunc.i32.i8($i170); + call {:cexpr "b"} boogie_si_record_i8($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1018, 8} true; + assume {:verifier.code 0} true; + $i172 := $sext.i8.i32($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1018, 5} true; + assume {:verifier.code 0} true; + $i173 := $sext.i8.i32($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1018, 5} true; + assume {:verifier.code 0} true; + $i174 := $add.i32($i173, $i172); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1018, 5} true; + assume {:verifier.code 0} true; + $i175 := $trunc.i32.i8($i174); + call {:cexpr "b"} boogie_si_record_i8($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1020, 8} true; + assume {:verifier.code 0} true; + $i176 := $sext.i8.i32($i153); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1020, 5} true; + assume {:verifier.code 0} true; + $i177 := $sext.i8.i32($i153); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1020, 5} true; + assume {:verifier.code 0} true; + $i178 := $add.i32($i177, $i176); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1020, 5} true; + assume {:verifier.code 0} true; + $i179 := $trunc.i32.i8($i178); + call {:cexpr "c"} boogie_si_record_i8($i179); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1021, 7} true; + assume {:verifier.code 0} true; + $i180 := $sext.i8.i32($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1021, 9} true; + assume {:verifier.code 0} true; + $i181 := $slt.i32($i180, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1021, 7} true; + assume {:verifier.code 0} true; + $i182 := $i179; + assume {:branchcond $i181} true; + goto $bb55, $bb56; +$bb49: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 15} true; + assume {:verifier.code 0} true; + assume ($i155 == 1); + goto $bb50; +$bb50: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1012, 9} true; + assume {:verifier.code 0} true; + $i159 := $sext.i8.i32($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1012, 9} true; + assume {:verifier.code 0} true; + $i160 := $add.i32($i159, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1012, 9} true; + assume {:verifier.code 0} true; + $i161 := $trunc.i32.i8($i160); + call {:cexpr "c"} boogie_si_record_i8($i161); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1013, 5} true; + assume {:verifier.code 0} true; + $i158 := $i161; + goto $bb54; +$bb51: + assume !(($i155 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 18} true; + assume {:verifier.code 0} true; + $i156 := $sext.i8.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 20} true; + assume {:verifier.code 0} true; + $i157 := $sgt.i32($i156, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 9} true; + assume {:verifier.code 0} true; + $i158 := $i150; + assume {:branchcond $i157} true; + goto $bb52, $bb53; +$bb52: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 9} true; + assume {:verifier.code 0} true; + assume ($i157 == 1); + goto $bb50; +$bb53: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 9} true; + assume {:verifier.code 0} true; + assume !(($i157 == 1)); + goto $bb54; +$bb54: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1014, 3} true; + assume {:verifier.code 0} true; + $i153 := $i158; + goto $bb48; +$bb55: + assume ($i181 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 9} true; + assume {:verifier.code 0} true; + $i183 := $sext.i8.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 11} true; + assume {:verifier.code 0} true; + $i184 := $slt.i32($i183, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i184} true; + goto $bb58, $bb60; +$bb56: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1021, 7} true; + assume {:verifier.code 0} true; + assume !(($i181 == 1)); + goto $bb57; +$bb57: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1026, 7} true; + assume {:verifier.code 0} true; + $i191 := $sext.i8.i32($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1026, 9} true; + assume {:verifier.code 0} true; + $i192 := $srem.i32($i191, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1026, 7} true; + assume {:verifier.code 0} true; + $i193 := $trunc.i32.i8($i192); + call {:cexpr "a"} boogie_si_record_i8($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1027, 8} true; + assume {:verifier.code 0} true; + $i194 := $sext.i8.i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1027, 5} true; + assume {:verifier.code 0} true; + $i195 := $sext.i8.i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1027, 5} true; + assume {:verifier.code 0} true; + $i196 := $add.i32($i195, $i194); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1027, 5} true; + assume {:verifier.code 0} true; + $i197 := $trunc.i32.i8($i196); + call {:cexpr "a"} boogie_si_record_i8($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1028, 7} true; + assume {:verifier.code 0} true; + $i198 := $sext.i8.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1028, 9} true; + assume {:verifier.code 0} true; + $i199 := $srem.i32($i198, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1028, 7} true; + assume {:verifier.code 0} true; + $i200 := $trunc.i32.i8($i199); + call {:cexpr "b"} boogie_si_record_i8($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1029, 8} true; + assume {:verifier.code 0} true; + $i201 := $sext.i8.i32($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1029, 5} true; + assume {:verifier.code 0} true; + $i202 := $sext.i8.i32($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1029, 5} true; + assume {:verifier.code 0} true; + $i203 := $add.i32($i202, $i201); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1029, 5} true; + assume {:verifier.code 0} true; + $i204 := $trunc.i32.i8($i203); + call {:cexpr "b"} boogie_si_record_i8($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1031, 8} true; + assume {:verifier.code 0} true; + $i205 := $sext.i8.i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1031, 5} true; + assume {:verifier.code 0} true; + $i206 := $sext.i8.i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1031, 5} true; + assume {:verifier.code 0} true; + $i207 := $add.i32($i206, $i205); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1031, 5} true; + assume {:verifier.code 0} true; + $i208 := $trunc.i32.i8($i207); + call {:cexpr "c"} boogie_si_record_i8($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1032, 7} true; + assume {:verifier.code 0} true; + $i209 := $sext.i8.i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1032, 9} true; + assume {:verifier.code 0} true; + $i210 := $slt.i32($i209, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1032, 7} true; + assume {:verifier.code 0} true; + $i211 := $i208; + assume {:branchcond $i210} true; + goto $bb64, $bb65; +$bb58: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 15} true; + assume {:verifier.code 0} true; + assume ($i184 == 1); + goto $bb59; +$bb59: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1023, 9} true; + assume {:verifier.code 0} true; + $i188 := $sext.i8.i32($i179); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1023, 9} true; + assume {:verifier.code 0} true; + $i189 := $add.i32($i188, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1023, 9} true; + assume {:verifier.code 0} true; + $i190 := $trunc.i32.i8($i189); + call {:cexpr "c"} boogie_si_record_i8($i190); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1024, 5} true; + assume {:verifier.code 0} true; + $i187 := $i190; + goto $bb63; +$bb60: + assume !(($i184 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 18} true; + assume {:verifier.code 0} true; + $i185 := $sext.i8.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 20} true; + assume {:verifier.code 0} true; + $i186 := $sgt.i32($i185, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 9} true; + assume {:verifier.code 0} true; + $i187 := $i179; + assume {:branchcond $i186} true; + goto $bb61, $bb62; +$bb61: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 9} true; + assume {:verifier.code 0} true; + assume ($i186 == 1); + goto $bb59; +$bb62: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 9} true; + assume {:verifier.code 0} true; + assume !(($i186 == 1)); + goto $bb63; +$bb63: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1025, 3} true; + assume {:verifier.code 0} true; + $i182 := $i187; + goto $bb57; +$bb64: + assume ($i210 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 9} true; + assume {:verifier.code 0} true; + $i212 := $sext.i8.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 11} true; + assume {:verifier.code 0} true; + $i213 := $slt.i32($i212, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i213} true; + goto $bb67, $bb69; +$bb65: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1032, 7} true; + assume {:verifier.code 0} true; + assume !(($i210 == 1)); + goto $bb66; +$bb66: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1042, 3} true; + assume {:verifier.code 0} true; + $r := $i211; + $exn := false; + return; +$bb67: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 15} true; + assume {:verifier.code 0} true; + assume ($i213 == 1); + goto $bb68; +$bb68: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1034, 9} true; + assume {:verifier.code 0} true; + $i217 := $sext.i8.i32($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1034, 9} true; + assume {:verifier.code 0} true; + $i218 := $add.i32($i217, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1034, 9} true; + assume {:verifier.code 0} true; + $i219 := $trunc.i32.i8($i218); + call {:cexpr "c"} boogie_si_record_i8($i219); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1035, 5} true; + assume {:verifier.code 0} true; + $i216 := $i219; + goto $bb72; +$bb69: + assume !(($i213 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 18} true; + assume {:verifier.code 0} true; + $i214 := $sext.i8.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 20} true; + assume {:verifier.code 0} true; + $i215 := $sgt.i32($i214, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 9} true; + assume {:verifier.code 0} true; + $i216 := $i208; + assume {:branchcond $i215} true; + goto $bb70, $bb71; +$bb70: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 9} true; + assume {:verifier.code 0} true; + assume ($i215 == 1); + goto $bb68; +$bb71: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 9} true; + assume {:verifier.code 0} true; + assume !(($i215 == 1)); + goto $bb72; +$bb72: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1036, 3} true; + assume {:verifier.code 0} true; + $i211 := $i216; + goto $bb66; +} +const __SMACK_or32: ref; +axiom (__SMACK_or32 == $sub.ref(0, 14445)); +procedure __SMACK_or32($i0: i32, $i1: i32) + returns ($r: i32) +{ + var $i2: i32; + var $i3: i1; + var $i4: i32; + var $i6: i1; + var $i8: i32; + var $i7: i32; + var $i5: i32; + var $i9: i32; + var $i10: i64; + var $i11: i64; + var $i12: i32; + var $i13: i32; + var $i14: i64; + var $i15: i64; + var $i16: i32; + var $i17: i32; + var $i18: i1; + var $i19: i32; + var $i21: i1; + var $i23: i32; + var $i22: i32; + var $i20: i32; + var $i24: i32; + var $i25: i64; + var $i26: i64; + var $i27: i32; + var $i28: i32; + var $i29: i64; + var $i30: i64; + var $i31: i32; + var $i32: i32; + var $i33: i1; + var $i34: i32; + var $i36: i1; + var $i38: i32; + var $i37: i32; + var $i35: i32; + var $i39: i32; + var $i40: i64; + var $i41: i64; + var $i42: i32; + var $i43: i32; + var $i44: i64; + var $i45: i64; + var $i46: i32; + var $i47: i32; + var $i48: i1; + var $i49: i32; + var $i51: i1; + var $i53: i32; + var $i52: i32; + var $i50: i32; + var $i54: i32; + var $i55: i64; + var $i56: i64; + var $i57: i32; + var $i58: i32; + var $i59: i64; + var $i60: i64; + var $i61: i32; + var $i62: i32; + var $i63: i1; + var $i64: i32; + var $i66: i1; + var $i68: i32; + var $i67: i32; + var $i65: i32; + var $i69: i32; + var $i70: i64; + var $i71: i64; + var $i72: i32; + var $i73: i32; + var $i74: i64; + var $i75: i64; + var $i76: i32; + var $i77: i32; + var $i78: i1; + var $i79: i32; + var $i81: i1; + var $i83: i32; + var $i82: i32; + var $i80: i32; + var $i84: i32; + var $i85: i64; + var $i86: i64; + var $i87: i32; + var $i88: i32; + var $i89: i64; + var $i90: i64; + var $i91: i32; + var $i92: i32; + var $i93: i1; + var $i94: i32; + var $i96: i1; + var $i98: i32; + var $i97: i32; + var $i95: i32; + var $i99: i32; + var $i100: i64; + var $i101: i64; + var $i102: i32; + var $i103: i32; + var $i104: i64; + var $i105: i64; + var $i106: i32; + var $i107: i32; + var $i108: i1; + var $i109: i32; + var $i111: i1; + var $i113: i32; + var $i112: i32; + var $i110: i32; + var $i114: i32; + var $i115: i64; + var $i116: i64; + var $i117: i32; + var $i118: i32; + var $i119: i64; + var $i120: i64; + var $i121: i32; + var $i122: i32; + var $i123: i1; + var $i124: i32; + var $i126: i1; + var $i128: i32; + var $i127: i32; + var $i125: i32; + var $i129: i32; + var $i130: i64; + var $i131: i64; + var $i132: i32; + var $i133: i32; + var $i134: i64; + var $i135: i64; + var $i136: i32; + var $i137: i32; + var $i138: i1; + var $i139: i32; + var $i141: i1; + var $i143: i32; + var $i142: i32; + var $i140: i32; + var $i144: i32; + var $i145: i64; + var $i146: i64; + var $i147: i32; + var $i148: i32; + var $i149: i64; + var $i150: i64; + var $i151: i32; + var $i152: i32; + var $i153: i1; + var $i154: i32; + var $i156: i1; + var $i158: i32; + var $i157: i32; + var $i155: i32; + var $i159: i32; + var $i160: i64; + var $i161: i64; + var $i162: i32; + var $i163: i32; + var $i164: i64; + var $i165: i64; + var $i166: i32; + var $i167: i32; + var $i168: i1; + var $i169: i32; + var $i171: i1; + var $i173: i32; + var $i172: i32; + var $i170: i32; + var $i174: i32; + var $i175: i64; + var $i176: i64; + var $i177: i32; + var $i178: i32; + var $i179: i64; + var $i180: i64; + var $i181: i32; + var $i182: i32; + var $i183: i1; + var $i184: i32; + var $i186: i1; + var $i188: i32; + var $i187: i32; + var $i185: i32; + var $i189: i32; + var $i190: i64; + var $i191: i64; + var $i192: i32; + var $i193: i32; + var $i194: i64; + var $i195: i64; + var $i196: i32; + var $i197: i32; + var $i198: i1; + var $i199: i32; + var $i201: i1; + var $i203: i32; + var $i202: i32; + var $i200: i32; + var $i204: i32; + var $i205: i64; + var $i206: i64; + var $i207: i32; + var $i208: i32; + var $i209: i64; + var $i210: i64; + var $i211: i32; + var $i212: i32; + var $i213: i1; + var $i214: i32; + var $i216: i1; + var $i218: i32; + var $i217: i32; + var $i215: i32; + var $i219: i32; + var $i220: i64; + var $i221: i64; + var $i222: i32; + var $i223: i32; + var $i224: i64; + var $i225: i64; + var $i226: i32; + var $i227: i32; + var $i228: i1; + var $i229: i32; + var $i231: i1; + var $i233: i32; + var $i232: i32; + var $i230: i32; + var $i234: i32; + var $i235: i64; + var $i236: i64; + var $i237: i32; + var $i238: i32; + var $i239: i64; + var $i240: i64; + var $i241: i32; + var $i242: i32; + var $i243: i1; + var $i244: i32; + var $i246: i1; + var $i248: i32; + var $i247: i32; + var $i245: i32; + var $i249: i32; + var $i250: i64; + var $i251: i64; + var $i252: i32; + var $i253: i32; + var $i254: i64; + var $i255: i64; + var $i256: i32; + var $i257: i32; + var $i258: i1; + var $i259: i32; + var $i261: i1; + var $i263: i32; + var $i262: i32; + var $i260: i32; + var $i264: i32; + var $i265: i64; + var $i266: i64; + var $i267: i32; + var $i268: i32; + var $i269: i64; + var $i270: i64; + var $i271: i32; + var $i272: i32; + var $i273: i1; + var $i274: i32; + var $i276: i1; + var $i278: i32; + var $i277: i32; + var $i275: i32; + var $i279: i32; + var $i280: i64; + var $i281: i64; + var $i282: i32; + var $i283: i32; + var $i284: i64; + var $i285: i64; + var $i286: i32; + var $i287: i32; + var $i288: i1; + var $i289: i32; + var $i291: i1; + var $i293: i32; + var $i292: i32; + var $i290: i32; + var $i294: i32; + var $i295: i64; + var $i296: i64; + var $i297: i32; + var $i298: i32; + var $i299: i64; + var $i300: i64; + var $i301: i32; + var $i302: i32; + var $i303: i1; + var $i304: i32; + var $i306: i1; + var $i308: i32; + var $i307: i32; + var $i305: i32; + var $i309: i32; + var $i310: i64; + var $i311: i64; + var $i312: i32; + var $i313: i32; + var $i314: i64; + var $i315: i64; + var $i316: i32; + var $i317: i32; + var $i318: i1; + var $i319: i32; + var $i321: i1; + var $i323: i32; + var $i322: i32; + var $i320: i32; + var $i324: i32; + var $i325: i64; + var $i326: i64; + var $i327: i32; + var $i328: i32; + var $i329: i64; + var $i330: i64; + var $i331: i32; + var $i332: i32; + var $i333: i1; + var $i334: i32; + var $i336: i1; + var $i338: i32; + var $i337: i32; + var $i335: i32; + var $i339: i32; + var $i340: i64; + var $i341: i64; + var $i342: i32; + var $i343: i32; + var $i344: i64; + var $i345: i64; + var $i346: i32; + var $i347: i32; + var $i348: i1; + var $i349: i32; + var $i351: i1; + var $i353: i32; + var $i352: i32; + var $i350: i32; + var $i354: i32; + var $i355: i64; + var $i356: i64; + var $i357: i32; + var $i358: i32; + var $i359: i64; + var $i360: i64; + var $i361: i32; + var $i362: i32; + var $i363: i1; + var $i364: i32; + var $i366: i1; + var $i368: i32; + var $i367: i32; + var $i365: i32; + var $i369: i32; + var $i370: i64; + var $i371: i64; + var $i372: i32; + var $i373: i32; + var $i374: i64; + var $i375: i64; + var $i376: i32; + var $i377: i32; + var $i378: i1; + var $i379: i32; + var $i381: i1; + var $i383: i32; + var $i382: i32; + var $i380: i32; + var $i384: i32; + var $i385: i64; + var $i386: i64; + var $i387: i32; + var $i388: i32; + var $i389: i64; + var $i390: i64; + var $i391: i32; + var $i392: i32; + var $i393: i1; + var $i394: i32; + var $i396: i1; + var $i398: i32; + var $i397: i32; + var $i395: i32; + var $i399: i32; + var $i400: i64; + var $i401: i64; + var $i402: i32; + var $i403: i32; + var $i404: i64; + var $i405: i64; + var $i406: i32; + var $i407: i32; + var $i408: i1; + var $i409: i32; + var $i411: i1; + var $i413: i32; + var $i412: i32; + var $i410: i32; + var $i414: i32; + var $i415: i64; + var $i416: i64; + var $i417: i32; + var $i418: i32; + var $i419: i64; + var $i420: i64; + var $i421: i32; + var $i422: i32; + var $i423: i1; + var $i424: i32; + var $i426: i1; + var $i428: i32; + var $i427: i32; + var $i425: i32; + var $i429: i32; + var $i430: i64; + var $i431: i64; + var $i432: i32; + var $i433: i32; + var $i434: i64; + var $i435: i64; + var $i436: i32; + var $i437: i32; + var $i438: i1; + var $i439: i32; + var $i441: i1; + var $i443: i32; + var $i442: i32; + var $i440: i32; + var $i444: i32; + var $i445: i64; + var $i446: i64; + var $i447: i32; + var $i448: i32; + var $i449: i64; + var $i450: i64; + var $i451: i32; + var $i452: i32; + var $i453: i1; + var $i454: i32; + var $i456: i1; + var $i458: i32; + var $i457: i32; + var $i455: i32; + var $i459: i32; + var $i460: i64; + var $i461: i64; + var $i462: i32; + var $i463: i32; + var $i464: i64; + var $i465: i64; + var $i466: i32; + var $i467: i32; + var $i468: i1; + var $i469: i32; + var $i471: i1; + var $i473: i32; + var $i472: i32; + var $i470: i32; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1048, 5} true; + assume {:verifier.code 0} true; + call {:cexpr "__SMACK_or32:arg:a"} boogie_si_record_i32($i0); + call {:cexpr "__SMACK_or32:arg:b"} boogie_si_record_i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1048, 5} true; + assume {:verifier.code 0} true; + $i2 := $add.i32(0, 0); + call {:cexpr "c"} boogie_si_record_i32($i2); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1049, 9} true; + assume {:verifier.code 0} true; + $i3 := $slt.i32($i0, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1049, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i3} true; + goto $bb1, $bb2; +$bb1: + assume ($i3 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1050, 7} true; + assume {:verifier.code 0} true; + $i4 := $add.i32($i2, 1); + call {:cexpr "c"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1051, 3} true; + assume {:verifier.code 0} true; + $i5 := $i4; + goto $bb3; +$bb2: + assume !(($i3 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1051, 16} true; + assume {:verifier.code 0} true; + $i6 := $slt.i32($i1, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1051, 14} true; + assume {:verifier.code 0} true; + $i7 := $i2; + assume {:branchcond $i6} true; + goto $bb4, $bb5; +$bb3: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1054, 5} true; + assume {:verifier.code 0} true; + $i9 := $add.i32($i0, $i0); + call {:cexpr "a"} boogie_si_record_i32($i9); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1055, 7} true; + assume {:verifier.code 0} true; + $i10 := $sext.i32.i64($i9); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1055, 9} true; + assume {:verifier.code 0} true; + $i11 := $srem.i64($i10, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1055, 7} true; + assume {:verifier.code 0} true; + $i12 := $trunc.i64.i32($i11); + call {:cexpr "a"} boogie_si_record_i32($i12); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1056, 5} true; + assume {:verifier.code 0} true; + $i13 := $add.i32($i1, $i1); + call {:cexpr "b"} boogie_si_record_i32($i13); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1057, 7} true; + assume {:verifier.code 0} true; + $i14 := $sext.i32.i64($i13); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1057, 9} true; + assume {:verifier.code 0} true; + $i15 := $srem.i64($i14, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1057, 7} true; + assume {:verifier.code 0} true; + $i16 := $trunc.i64.i32($i15); + call {:cexpr "b"} boogie_si_record_i32($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1059, 5} true; + assume {:verifier.code 0} true; + $i17 := $add.i32($i5, $i5); + call {:cexpr "c"} boogie_si_record_i32($i17); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1060, 9} true; + assume {:verifier.code 0} true; + $i18 := $slt.i32($i12, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1060, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i18} true; + goto $bb7, $bb8; +$bb4: + assume ($i6 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1052, 7} true; + assume {:verifier.code 0} true; + $i8 := $add.i32($i2, 1); + call {:cexpr "c"} boogie_si_record_i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1053, 3} true; + assume {:verifier.code 0} true; + $i7 := $i8; + goto $bb6; +$bb5: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1051, 14} true; + assume {:verifier.code 0} true; + assume !(($i6 == 1)); + goto $bb6; +$bb6: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i5 := $i7; + goto $bb3; +$bb7: + assume ($i18 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1061, 7} true; + assume {:verifier.code 0} true; + $i19 := $add.i32($i17, 1); + call {:cexpr "c"} boogie_si_record_i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1062, 3} true; + assume {:verifier.code 0} true; + $i20 := $i19; + goto $bb9; +$bb8: + assume !(($i18 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1062, 16} true; + assume {:verifier.code 0} true; + $i21 := $slt.i32($i16, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1062, 14} true; + assume {:verifier.code 0} true; + $i22 := $i17; + assume {:branchcond $i21} true; + goto $bb10, $bb11; +$bb9: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1065, 5} true; + assume {:verifier.code 0} true; + $i24 := $add.i32($i12, $i12); + call {:cexpr "a"} boogie_si_record_i32($i24); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1066, 7} true; + assume {:verifier.code 0} true; + $i25 := $sext.i32.i64($i24); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1066, 9} true; + assume {:verifier.code 0} true; + $i26 := $srem.i64($i25, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1066, 7} true; + assume {:verifier.code 0} true; + $i27 := $trunc.i64.i32($i26); + call {:cexpr "a"} boogie_si_record_i32($i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1067, 5} true; + assume {:verifier.code 0} true; + $i28 := $add.i32($i16, $i16); + call {:cexpr "b"} boogie_si_record_i32($i28); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1068, 7} true; + assume {:verifier.code 0} true; + $i29 := $sext.i32.i64($i28); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1068, 9} true; + assume {:verifier.code 0} true; + $i30 := $srem.i64($i29, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1068, 7} true; + assume {:verifier.code 0} true; + $i31 := $trunc.i64.i32($i30); + call {:cexpr "b"} boogie_si_record_i32($i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1070, 5} true; + assume {:verifier.code 0} true; + $i32 := $add.i32($i20, $i20); + call {:cexpr "c"} boogie_si_record_i32($i32); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1071, 9} true; + assume {:verifier.code 0} true; + $i33 := $slt.i32($i27, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1071, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i33} true; + goto $bb13, $bb14; +$bb10: + assume ($i21 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1063, 7} true; + assume {:verifier.code 0} true; + $i23 := $add.i32($i17, 1); + call {:cexpr "c"} boogie_si_record_i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1064, 3} true; + assume {:verifier.code 0} true; + $i22 := $i23; + goto $bb12; +$bb11: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1062, 14} true; + assume {:verifier.code 0} true; + assume !(($i21 == 1)); + goto $bb12; +$bb12: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i20 := $i22; + goto $bb9; +$bb13: + assume ($i33 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1072, 7} true; + assume {:verifier.code 0} true; + $i34 := $add.i32($i32, 1); + call {:cexpr "c"} boogie_si_record_i32($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1073, 3} true; + assume {:verifier.code 0} true; + $i35 := $i34; + goto $bb15; +$bb14: + assume !(($i33 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1073, 16} true; + assume {:verifier.code 0} true; + $i36 := $slt.i32($i31, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1073, 14} true; + assume {:verifier.code 0} true; + $i37 := $i32; + assume {:branchcond $i36} true; + goto $bb16, $bb17; +$bb15: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1076, 5} true; + assume {:verifier.code 0} true; + $i39 := $add.i32($i27, $i27); + call {:cexpr "a"} boogie_si_record_i32($i39); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1077, 7} true; + assume {:verifier.code 0} true; + $i40 := $sext.i32.i64($i39); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1077, 9} true; + assume {:verifier.code 0} true; + $i41 := $srem.i64($i40, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1077, 7} true; + assume {:verifier.code 0} true; + $i42 := $trunc.i64.i32($i41); + call {:cexpr "a"} boogie_si_record_i32($i42); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1078, 5} true; + assume {:verifier.code 0} true; + $i43 := $add.i32($i31, $i31); + call {:cexpr "b"} boogie_si_record_i32($i43); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1079, 7} true; + assume {:verifier.code 0} true; + $i44 := $sext.i32.i64($i43); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1079, 9} true; + assume {:verifier.code 0} true; + $i45 := $srem.i64($i44, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1079, 7} true; + assume {:verifier.code 0} true; + $i46 := $trunc.i64.i32($i45); + call {:cexpr "b"} boogie_si_record_i32($i46); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1081, 5} true; + assume {:verifier.code 0} true; + $i47 := $add.i32($i35, $i35); + call {:cexpr "c"} boogie_si_record_i32($i47); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1082, 9} true; + assume {:verifier.code 0} true; + $i48 := $slt.i32($i42, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1082, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i48} true; + goto $bb19, $bb20; +$bb16: + assume ($i36 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1074, 7} true; + assume {:verifier.code 0} true; + $i38 := $add.i32($i32, 1); + call {:cexpr "c"} boogie_si_record_i32($i38); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1075, 3} true; + assume {:verifier.code 0} true; + $i37 := $i38; + goto $bb18; +$bb17: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1073, 14} true; + assume {:verifier.code 0} true; + assume !(($i36 == 1)); + goto $bb18; +$bb18: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i35 := $i37; + goto $bb15; +$bb19: + assume ($i48 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1083, 7} true; + assume {:verifier.code 0} true; + $i49 := $add.i32($i47, 1); + call {:cexpr "c"} boogie_si_record_i32($i49); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1084, 3} true; + assume {:verifier.code 0} true; + $i50 := $i49; + goto $bb21; +$bb20: + assume !(($i48 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1084, 16} true; + assume {:verifier.code 0} true; + $i51 := $slt.i32($i46, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1084, 14} true; + assume {:verifier.code 0} true; + $i52 := $i47; + assume {:branchcond $i51} true; + goto $bb22, $bb23; +$bb21: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1087, 5} true; + assume {:verifier.code 0} true; + $i54 := $add.i32($i42, $i42); + call {:cexpr "a"} boogie_si_record_i32($i54); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1088, 7} true; + assume {:verifier.code 0} true; + $i55 := $sext.i32.i64($i54); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1088, 9} true; + assume {:verifier.code 0} true; + $i56 := $srem.i64($i55, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1088, 7} true; + assume {:verifier.code 0} true; + $i57 := $trunc.i64.i32($i56); + call {:cexpr "a"} boogie_si_record_i32($i57); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1089, 5} true; + assume {:verifier.code 0} true; + $i58 := $add.i32($i46, $i46); + call {:cexpr "b"} boogie_si_record_i32($i58); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1090, 7} true; + assume {:verifier.code 0} true; + $i59 := $sext.i32.i64($i58); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1090, 9} true; + assume {:verifier.code 0} true; + $i60 := $srem.i64($i59, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1090, 7} true; + assume {:verifier.code 0} true; + $i61 := $trunc.i64.i32($i60); + call {:cexpr "b"} boogie_si_record_i32($i61); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1092, 5} true; + assume {:verifier.code 0} true; + $i62 := $add.i32($i50, $i50); + call {:cexpr "c"} boogie_si_record_i32($i62); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1093, 9} true; + assume {:verifier.code 0} true; + $i63 := $slt.i32($i57, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1093, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i63} true; + goto $bb25, $bb26; +$bb22: + assume ($i51 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1085, 7} true; + assume {:verifier.code 0} true; + $i53 := $add.i32($i47, 1); + call {:cexpr "c"} boogie_si_record_i32($i53); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1086, 3} true; + assume {:verifier.code 0} true; + $i52 := $i53; + goto $bb24; +$bb23: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1084, 14} true; + assume {:verifier.code 0} true; + assume !(($i51 == 1)); + goto $bb24; +$bb24: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i50 := $i52; + goto $bb21; +$bb25: + assume ($i63 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1094, 7} true; + assume {:verifier.code 0} true; + $i64 := $add.i32($i62, 1); + call {:cexpr "c"} boogie_si_record_i32($i64); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1095, 3} true; + assume {:verifier.code 0} true; + $i65 := $i64; + goto $bb27; +$bb26: + assume !(($i63 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1095, 16} true; + assume {:verifier.code 0} true; + $i66 := $slt.i32($i61, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1095, 14} true; + assume {:verifier.code 0} true; + $i67 := $i62; + assume {:branchcond $i66} true; + goto $bb28, $bb29; +$bb27: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1098, 5} true; + assume {:verifier.code 0} true; + $i69 := $add.i32($i57, $i57); + call {:cexpr "a"} boogie_si_record_i32($i69); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1099, 7} true; + assume {:verifier.code 0} true; + $i70 := $sext.i32.i64($i69); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1099, 9} true; + assume {:verifier.code 0} true; + $i71 := $srem.i64($i70, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1099, 7} true; + assume {:verifier.code 0} true; + $i72 := $trunc.i64.i32($i71); + call {:cexpr "a"} boogie_si_record_i32($i72); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1100, 5} true; + assume {:verifier.code 0} true; + $i73 := $add.i32($i61, $i61); + call {:cexpr "b"} boogie_si_record_i32($i73); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1101, 7} true; + assume {:verifier.code 0} true; + $i74 := $sext.i32.i64($i73); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1101, 9} true; + assume {:verifier.code 0} true; + $i75 := $srem.i64($i74, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1101, 7} true; + assume {:verifier.code 0} true; + $i76 := $trunc.i64.i32($i75); + call {:cexpr "b"} boogie_si_record_i32($i76); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1103, 5} true; + assume {:verifier.code 0} true; + $i77 := $add.i32($i65, $i65); + call {:cexpr "c"} boogie_si_record_i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1104, 9} true; + assume {:verifier.code 0} true; + $i78 := $slt.i32($i72, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1104, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i78} true; + goto $bb31, $bb32; +$bb28: + assume ($i66 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1096, 7} true; + assume {:verifier.code 0} true; + $i68 := $add.i32($i62, 1); + call {:cexpr "c"} boogie_si_record_i32($i68); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1097, 3} true; + assume {:verifier.code 0} true; + $i67 := $i68; + goto $bb30; +$bb29: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1095, 14} true; + assume {:verifier.code 0} true; + assume !(($i66 == 1)); + goto $bb30; +$bb30: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i65 := $i67; + goto $bb27; +$bb31: + assume ($i78 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1105, 7} true; + assume {:verifier.code 0} true; + $i79 := $add.i32($i77, 1); + call {:cexpr "c"} boogie_si_record_i32($i79); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1106, 3} true; + assume {:verifier.code 0} true; + $i80 := $i79; + goto $bb33; +$bb32: + assume !(($i78 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1106, 16} true; + assume {:verifier.code 0} true; + $i81 := $slt.i32($i76, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1106, 14} true; + assume {:verifier.code 0} true; + $i82 := $i77; + assume {:branchcond $i81} true; + goto $bb34, $bb35; +$bb33: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1109, 5} true; + assume {:verifier.code 0} true; + $i84 := $add.i32($i72, $i72); + call {:cexpr "a"} boogie_si_record_i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1110, 7} true; + assume {:verifier.code 0} true; + $i85 := $sext.i32.i64($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1110, 9} true; + assume {:verifier.code 0} true; + $i86 := $srem.i64($i85, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1110, 7} true; + assume {:verifier.code 0} true; + $i87 := $trunc.i64.i32($i86); + call {:cexpr "a"} boogie_si_record_i32($i87); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1111, 5} true; + assume {:verifier.code 0} true; + $i88 := $add.i32($i76, $i76); + call {:cexpr "b"} boogie_si_record_i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1112, 7} true; + assume {:verifier.code 0} true; + $i89 := $sext.i32.i64($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1112, 9} true; + assume {:verifier.code 0} true; + $i90 := $srem.i64($i89, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1112, 7} true; + assume {:verifier.code 0} true; + $i91 := $trunc.i64.i32($i90); + call {:cexpr "b"} boogie_si_record_i32($i91); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1114, 5} true; + assume {:verifier.code 0} true; + $i92 := $add.i32($i80, $i80); + call {:cexpr "c"} boogie_si_record_i32($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1115, 9} true; + assume {:verifier.code 0} true; + $i93 := $slt.i32($i87, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1115, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i93} true; + goto $bb37, $bb38; +$bb34: + assume ($i81 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1107, 7} true; + assume {:verifier.code 0} true; + $i83 := $add.i32($i77, 1); + call {:cexpr "c"} boogie_si_record_i32($i83); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1108, 3} true; + assume {:verifier.code 0} true; + $i82 := $i83; + goto $bb36; +$bb35: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1106, 14} true; + assume {:verifier.code 0} true; + assume !(($i81 == 1)); + goto $bb36; +$bb36: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i80 := $i82; + goto $bb33; +$bb37: + assume ($i93 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1116, 7} true; + assume {:verifier.code 0} true; + $i94 := $add.i32($i92, 1); + call {:cexpr "c"} boogie_si_record_i32($i94); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1117, 3} true; + assume {:verifier.code 0} true; + $i95 := $i94; + goto $bb39; +$bb38: + assume !(($i93 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1117, 16} true; + assume {:verifier.code 0} true; + $i96 := $slt.i32($i91, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1117, 14} true; + assume {:verifier.code 0} true; + $i97 := $i92; + assume {:branchcond $i96} true; + goto $bb40, $bb41; +$bb39: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1120, 5} true; + assume {:verifier.code 0} true; + $i99 := $add.i32($i87, $i87); + call {:cexpr "a"} boogie_si_record_i32($i99); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1121, 7} true; + assume {:verifier.code 0} true; + $i100 := $sext.i32.i64($i99); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1121, 9} true; + assume {:verifier.code 0} true; + $i101 := $srem.i64($i100, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1121, 7} true; + assume {:verifier.code 0} true; + $i102 := $trunc.i64.i32($i101); + call {:cexpr "a"} boogie_si_record_i32($i102); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1122, 5} true; + assume {:verifier.code 0} true; + $i103 := $add.i32($i91, $i91); + call {:cexpr "b"} boogie_si_record_i32($i103); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1123, 7} true; + assume {:verifier.code 0} true; + $i104 := $sext.i32.i64($i103); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1123, 9} true; + assume {:verifier.code 0} true; + $i105 := $srem.i64($i104, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1123, 7} true; + assume {:verifier.code 0} true; + $i106 := $trunc.i64.i32($i105); + call {:cexpr "b"} boogie_si_record_i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1125, 5} true; + assume {:verifier.code 0} true; + $i107 := $add.i32($i95, $i95); + call {:cexpr "c"} boogie_si_record_i32($i107); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1126, 9} true; + assume {:verifier.code 0} true; + $i108 := $slt.i32($i102, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1126, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i108} true; + goto $bb43, $bb44; +$bb40: + assume ($i96 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1118, 7} true; + assume {:verifier.code 0} true; + $i98 := $add.i32($i92, 1); + call {:cexpr "c"} boogie_si_record_i32($i98); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1119, 3} true; + assume {:verifier.code 0} true; + $i97 := $i98; + goto $bb42; +$bb41: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1117, 14} true; + assume {:verifier.code 0} true; + assume !(($i96 == 1)); + goto $bb42; +$bb42: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i95 := $i97; + goto $bb39; +$bb43: + assume ($i108 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1127, 7} true; + assume {:verifier.code 0} true; + $i109 := $add.i32($i107, 1); + call {:cexpr "c"} boogie_si_record_i32($i109); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1128, 3} true; + assume {:verifier.code 0} true; + $i110 := $i109; + goto $bb45; +$bb44: + assume !(($i108 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1128, 16} true; + assume {:verifier.code 0} true; + $i111 := $slt.i32($i106, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1128, 14} true; + assume {:verifier.code 0} true; + $i112 := $i107; + assume {:branchcond $i111} true; + goto $bb46, $bb47; +$bb45: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1131, 5} true; + assume {:verifier.code 0} true; + $i114 := $add.i32($i102, $i102); + call {:cexpr "a"} boogie_si_record_i32($i114); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1132, 7} true; + assume {:verifier.code 0} true; + $i115 := $sext.i32.i64($i114); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1132, 9} true; + assume {:verifier.code 0} true; + $i116 := $srem.i64($i115, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1132, 7} true; + assume {:verifier.code 0} true; + $i117 := $trunc.i64.i32($i116); + call {:cexpr "a"} boogie_si_record_i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1133, 5} true; + assume {:verifier.code 0} true; + $i118 := $add.i32($i106, $i106); + call {:cexpr "b"} boogie_si_record_i32($i118); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1134, 7} true; + assume {:verifier.code 0} true; + $i119 := $sext.i32.i64($i118); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1134, 9} true; + assume {:verifier.code 0} true; + $i120 := $srem.i64($i119, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1134, 7} true; + assume {:verifier.code 0} true; + $i121 := $trunc.i64.i32($i120); + call {:cexpr "b"} boogie_si_record_i32($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1136, 5} true; + assume {:verifier.code 0} true; + $i122 := $add.i32($i110, $i110); + call {:cexpr "c"} boogie_si_record_i32($i122); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1137, 9} true; + assume {:verifier.code 0} true; + $i123 := $slt.i32($i117, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1137, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i123} true; + goto $bb49, $bb50; +$bb46: + assume ($i111 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1129, 7} true; + assume {:verifier.code 0} true; + $i113 := $add.i32($i107, 1); + call {:cexpr "c"} boogie_si_record_i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1130, 3} true; + assume {:verifier.code 0} true; + $i112 := $i113; + goto $bb48; +$bb47: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1128, 14} true; + assume {:verifier.code 0} true; + assume !(($i111 == 1)); + goto $bb48; +$bb48: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i110 := $i112; + goto $bb45; +$bb49: + assume ($i123 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1138, 7} true; + assume {:verifier.code 0} true; + $i124 := $add.i32($i122, 1); + call {:cexpr "c"} boogie_si_record_i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1139, 3} true; + assume {:verifier.code 0} true; + $i125 := $i124; + goto $bb51; +$bb50: + assume !(($i123 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1139, 16} true; + assume {:verifier.code 0} true; + $i126 := $slt.i32($i121, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1139, 14} true; + assume {:verifier.code 0} true; + $i127 := $i122; + assume {:branchcond $i126} true; + goto $bb52, $bb53; +$bb51: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1142, 5} true; + assume {:verifier.code 0} true; + $i129 := $add.i32($i117, $i117); + call {:cexpr "a"} boogie_si_record_i32($i129); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1143, 7} true; + assume {:verifier.code 0} true; + $i130 := $sext.i32.i64($i129); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1143, 9} true; + assume {:verifier.code 0} true; + $i131 := $srem.i64($i130, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1143, 7} true; + assume {:verifier.code 0} true; + $i132 := $trunc.i64.i32($i131); + call {:cexpr "a"} boogie_si_record_i32($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1144, 5} true; + assume {:verifier.code 0} true; + $i133 := $add.i32($i121, $i121); + call {:cexpr "b"} boogie_si_record_i32($i133); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1145, 7} true; + assume {:verifier.code 0} true; + $i134 := $sext.i32.i64($i133); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1145, 9} true; + assume {:verifier.code 0} true; + $i135 := $srem.i64($i134, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1145, 7} true; + assume {:verifier.code 0} true; + $i136 := $trunc.i64.i32($i135); + call {:cexpr "b"} boogie_si_record_i32($i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1147, 5} true; + assume {:verifier.code 0} true; + $i137 := $add.i32($i125, $i125); + call {:cexpr "c"} boogie_si_record_i32($i137); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1148, 9} true; + assume {:verifier.code 0} true; + $i138 := $slt.i32($i132, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1148, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i138} true; + goto $bb55, $bb56; +$bb52: + assume ($i126 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1140, 7} true; + assume {:verifier.code 0} true; + $i128 := $add.i32($i122, 1); + call {:cexpr "c"} boogie_si_record_i32($i128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1141, 3} true; + assume {:verifier.code 0} true; + $i127 := $i128; + goto $bb54; +$bb53: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1139, 14} true; + assume {:verifier.code 0} true; + assume !(($i126 == 1)); + goto $bb54; +$bb54: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i125 := $i127; + goto $bb51; +$bb55: + assume ($i138 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1149, 7} true; + assume {:verifier.code 0} true; + $i139 := $add.i32($i137, 1); + call {:cexpr "c"} boogie_si_record_i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1150, 3} true; + assume {:verifier.code 0} true; + $i140 := $i139; + goto $bb57; +$bb56: + assume !(($i138 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1150, 16} true; + assume {:verifier.code 0} true; + $i141 := $slt.i32($i136, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1150, 14} true; + assume {:verifier.code 0} true; + $i142 := $i137; + assume {:branchcond $i141} true; + goto $bb58, $bb59; +$bb57: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1153, 5} true; + assume {:verifier.code 0} true; + $i144 := $add.i32($i132, $i132); + call {:cexpr "a"} boogie_si_record_i32($i144); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1154, 7} true; + assume {:verifier.code 0} true; + $i145 := $sext.i32.i64($i144); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1154, 9} true; + assume {:verifier.code 0} true; + $i146 := $srem.i64($i145, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1154, 7} true; + assume {:verifier.code 0} true; + $i147 := $trunc.i64.i32($i146); + call {:cexpr "a"} boogie_si_record_i32($i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1155, 5} true; + assume {:verifier.code 0} true; + $i148 := $add.i32($i136, $i136); + call {:cexpr "b"} boogie_si_record_i32($i148); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1156, 7} true; + assume {:verifier.code 0} true; + $i149 := $sext.i32.i64($i148); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1156, 9} true; + assume {:verifier.code 0} true; + $i150 := $srem.i64($i149, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1156, 7} true; + assume {:verifier.code 0} true; + $i151 := $trunc.i64.i32($i150); + call {:cexpr "b"} boogie_si_record_i32($i151); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1158, 5} true; + assume {:verifier.code 0} true; + $i152 := $add.i32($i140, $i140); + call {:cexpr "c"} boogie_si_record_i32($i152); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1159, 9} true; + assume {:verifier.code 0} true; + $i153 := $slt.i32($i147, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1159, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i153} true; + goto $bb61, $bb62; +$bb58: + assume ($i141 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1151, 7} true; + assume {:verifier.code 0} true; + $i143 := $add.i32($i137, 1); + call {:cexpr "c"} boogie_si_record_i32($i143); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1152, 3} true; + assume {:verifier.code 0} true; + $i142 := $i143; + goto $bb60; +$bb59: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1150, 14} true; + assume {:verifier.code 0} true; + assume !(($i141 == 1)); + goto $bb60; +$bb60: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i140 := $i142; + goto $bb57; +$bb61: + assume ($i153 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1160, 7} true; + assume {:verifier.code 0} true; + $i154 := $add.i32($i152, 1); + call {:cexpr "c"} boogie_si_record_i32($i154); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1161, 3} true; + assume {:verifier.code 0} true; + $i155 := $i154; + goto $bb63; +$bb62: + assume !(($i153 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1161, 16} true; + assume {:verifier.code 0} true; + $i156 := $slt.i32($i151, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1161, 14} true; + assume {:verifier.code 0} true; + $i157 := $i152; + assume {:branchcond $i156} true; + goto $bb64, $bb65; +$bb63: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1164, 5} true; + assume {:verifier.code 0} true; + $i159 := $add.i32($i147, $i147); + call {:cexpr "a"} boogie_si_record_i32($i159); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1165, 7} true; + assume {:verifier.code 0} true; + $i160 := $sext.i32.i64($i159); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1165, 9} true; + assume {:verifier.code 0} true; + $i161 := $srem.i64($i160, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1165, 7} true; + assume {:verifier.code 0} true; + $i162 := $trunc.i64.i32($i161); + call {:cexpr "a"} boogie_si_record_i32($i162); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1166, 5} true; + assume {:verifier.code 0} true; + $i163 := $add.i32($i151, $i151); + call {:cexpr "b"} boogie_si_record_i32($i163); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1167, 7} true; + assume {:verifier.code 0} true; + $i164 := $sext.i32.i64($i163); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1167, 9} true; + assume {:verifier.code 0} true; + $i165 := $srem.i64($i164, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1167, 7} true; + assume {:verifier.code 0} true; + $i166 := $trunc.i64.i32($i165); + call {:cexpr "b"} boogie_si_record_i32($i166); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1169, 5} true; + assume {:verifier.code 0} true; + $i167 := $add.i32($i155, $i155); + call {:cexpr "c"} boogie_si_record_i32($i167); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1170, 9} true; + assume {:verifier.code 0} true; + $i168 := $slt.i32($i162, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1170, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i168} true; + goto $bb67, $bb68; +$bb64: + assume ($i156 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1162, 7} true; + assume {:verifier.code 0} true; + $i158 := $add.i32($i152, 1); + call {:cexpr "c"} boogie_si_record_i32($i158); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1163, 3} true; + assume {:verifier.code 0} true; + $i157 := $i158; + goto $bb66; +$bb65: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1161, 14} true; + assume {:verifier.code 0} true; + assume !(($i156 == 1)); + goto $bb66; +$bb66: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i155 := $i157; + goto $bb63; +$bb67: + assume ($i168 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1171, 7} true; + assume {:verifier.code 0} true; + $i169 := $add.i32($i167, 1); + call {:cexpr "c"} boogie_si_record_i32($i169); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1172, 3} true; + assume {:verifier.code 0} true; + $i170 := $i169; + goto $bb69; +$bb68: + assume !(($i168 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1172, 16} true; + assume {:verifier.code 0} true; + $i171 := $slt.i32($i166, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1172, 14} true; + assume {:verifier.code 0} true; + $i172 := $i167; + assume {:branchcond $i171} true; + goto $bb70, $bb71; +$bb69: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1175, 5} true; + assume {:verifier.code 0} true; + $i174 := $add.i32($i162, $i162); + call {:cexpr "a"} boogie_si_record_i32($i174); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1176, 7} true; + assume {:verifier.code 0} true; + $i175 := $sext.i32.i64($i174); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1176, 9} true; + assume {:verifier.code 0} true; + $i176 := $srem.i64($i175, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1176, 7} true; + assume {:verifier.code 0} true; + $i177 := $trunc.i64.i32($i176); + call {:cexpr "a"} boogie_si_record_i32($i177); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1177, 5} true; + assume {:verifier.code 0} true; + $i178 := $add.i32($i166, $i166); + call {:cexpr "b"} boogie_si_record_i32($i178); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1178, 7} true; + assume {:verifier.code 0} true; + $i179 := $sext.i32.i64($i178); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1178, 9} true; + assume {:verifier.code 0} true; + $i180 := $srem.i64($i179, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1178, 7} true; + assume {:verifier.code 0} true; + $i181 := $trunc.i64.i32($i180); + call {:cexpr "b"} boogie_si_record_i32($i181); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1180, 5} true; + assume {:verifier.code 0} true; + $i182 := $add.i32($i170, $i170); + call {:cexpr "c"} boogie_si_record_i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1181, 9} true; + assume {:verifier.code 0} true; + $i183 := $slt.i32($i177, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1181, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i183} true; + goto $bb73, $bb74; +$bb70: + assume ($i171 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1173, 7} true; + assume {:verifier.code 0} true; + $i173 := $add.i32($i167, 1); + call {:cexpr "c"} boogie_si_record_i32($i173); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1174, 3} true; + assume {:verifier.code 0} true; + $i172 := $i173; + goto $bb72; +$bb71: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1172, 14} true; + assume {:verifier.code 0} true; + assume !(($i171 == 1)); + goto $bb72; +$bb72: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i170 := $i172; + goto $bb69; +$bb73: + assume ($i183 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1182, 7} true; + assume {:verifier.code 0} true; + $i184 := $add.i32($i182, 1); + call {:cexpr "c"} boogie_si_record_i32($i184); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1183, 3} true; + assume {:verifier.code 0} true; + $i185 := $i184; + goto $bb75; +$bb74: + assume !(($i183 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1183, 16} true; + assume {:verifier.code 0} true; + $i186 := $slt.i32($i181, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1183, 14} true; + assume {:verifier.code 0} true; + $i187 := $i182; + assume {:branchcond $i186} true; + goto $bb76, $bb77; +$bb75: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1186, 5} true; + assume {:verifier.code 0} true; + $i189 := $add.i32($i177, $i177); + call {:cexpr "a"} boogie_si_record_i32($i189); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1187, 7} true; + assume {:verifier.code 0} true; + $i190 := $sext.i32.i64($i189); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1187, 9} true; + assume {:verifier.code 0} true; + $i191 := $srem.i64($i190, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1187, 7} true; + assume {:verifier.code 0} true; + $i192 := $trunc.i64.i32($i191); + call {:cexpr "a"} boogie_si_record_i32($i192); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1188, 5} true; + assume {:verifier.code 0} true; + $i193 := $add.i32($i181, $i181); + call {:cexpr "b"} boogie_si_record_i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1189, 7} true; + assume {:verifier.code 0} true; + $i194 := $sext.i32.i64($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1189, 9} true; + assume {:verifier.code 0} true; + $i195 := $srem.i64($i194, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1189, 7} true; + assume {:verifier.code 0} true; + $i196 := $trunc.i64.i32($i195); + call {:cexpr "b"} boogie_si_record_i32($i196); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1191, 5} true; + assume {:verifier.code 0} true; + $i197 := $add.i32($i185, $i185); + call {:cexpr "c"} boogie_si_record_i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1192, 9} true; + assume {:verifier.code 0} true; + $i198 := $slt.i32($i192, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1192, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i198} true; + goto $bb79, $bb80; +$bb76: + assume ($i186 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1184, 7} true; + assume {:verifier.code 0} true; + $i188 := $add.i32($i182, 1); + call {:cexpr "c"} boogie_si_record_i32($i188); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1185, 3} true; + assume {:verifier.code 0} true; + $i187 := $i188; + goto $bb78; +$bb77: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1183, 14} true; + assume {:verifier.code 0} true; + assume !(($i186 == 1)); + goto $bb78; +$bb78: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i185 := $i187; + goto $bb75; +$bb79: + assume ($i198 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1193, 7} true; + assume {:verifier.code 0} true; + $i199 := $add.i32($i197, 1); + call {:cexpr "c"} boogie_si_record_i32($i199); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1194, 3} true; + assume {:verifier.code 0} true; + $i200 := $i199; + goto $bb81; +$bb80: + assume !(($i198 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1194, 16} true; + assume {:verifier.code 0} true; + $i201 := $slt.i32($i196, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1194, 14} true; + assume {:verifier.code 0} true; + $i202 := $i197; + assume {:branchcond $i201} true; + goto $bb82, $bb83; +$bb81: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1197, 5} true; + assume {:verifier.code 0} true; + $i204 := $add.i32($i192, $i192); + call {:cexpr "a"} boogie_si_record_i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1198, 7} true; + assume {:verifier.code 0} true; + $i205 := $sext.i32.i64($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1198, 9} true; + assume {:verifier.code 0} true; + $i206 := $srem.i64($i205, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1198, 7} true; + assume {:verifier.code 0} true; + $i207 := $trunc.i64.i32($i206); + call {:cexpr "a"} boogie_si_record_i32($i207); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1199, 5} true; + assume {:verifier.code 0} true; + $i208 := $add.i32($i196, $i196); + call {:cexpr "b"} boogie_si_record_i32($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1200, 7} true; + assume {:verifier.code 0} true; + $i209 := $sext.i32.i64($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1200, 9} true; + assume {:verifier.code 0} true; + $i210 := $srem.i64($i209, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1200, 7} true; + assume {:verifier.code 0} true; + $i211 := $trunc.i64.i32($i210); + call {:cexpr "b"} boogie_si_record_i32($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1202, 5} true; + assume {:verifier.code 0} true; + $i212 := $add.i32($i200, $i200); + call {:cexpr "c"} boogie_si_record_i32($i212); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1203, 9} true; + assume {:verifier.code 0} true; + $i213 := $slt.i32($i207, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1203, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i213} true; + goto $bb85, $bb86; +$bb82: + assume ($i201 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1195, 7} true; + assume {:verifier.code 0} true; + $i203 := $add.i32($i197, 1); + call {:cexpr "c"} boogie_si_record_i32($i203); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1196, 3} true; + assume {:verifier.code 0} true; + $i202 := $i203; + goto $bb84; +$bb83: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1194, 14} true; + assume {:verifier.code 0} true; + assume !(($i201 == 1)); + goto $bb84; +$bb84: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i200 := $i202; + goto $bb81; +$bb85: + assume ($i213 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1204, 7} true; + assume {:verifier.code 0} true; + $i214 := $add.i32($i212, 1); + call {:cexpr "c"} boogie_si_record_i32($i214); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1205, 3} true; + assume {:verifier.code 0} true; + $i215 := $i214; + goto $bb87; +$bb86: + assume !(($i213 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1205, 16} true; + assume {:verifier.code 0} true; + $i216 := $slt.i32($i211, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1205, 14} true; + assume {:verifier.code 0} true; + $i217 := $i212; + assume {:branchcond $i216} true; + goto $bb88, $bb89; +$bb87: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1208, 5} true; + assume {:verifier.code 0} true; + $i219 := $add.i32($i207, $i207); + call {:cexpr "a"} boogie_si_record_i32($i219); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1209, 7} true; + assume {:verifier.code 0} true; + $i220 := $sext.i32.i64($i219); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1209, 9} true; + assume {:verifier.code 0} true; + $i221 := $srem.i64($i220, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1209, 7} true; + assume {:verifier.code 0} true; + $i222 := $trunc.i64.i32($i221); + call {:cexpr "a"} boogie_si_record_i32($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1210, 5} true; + assume {:verifier.code 0} true; + $i223 := $add.i32($i211, $i211); + call {:cexpr "b"} boogie_si_record_i32($i223); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1211, 7} true; + assume {:verifier.code 0} true; + $i224 := $sext.i32.i64($i223); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1211, 9} true; + assume {:verifier.code 0} true; + $i225 := $srem.i64($i224, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1211, 7} true; + assume {:verifier.code 0} true; + $i226 := $trunc.i64.i32($i225); + call {:cexpr "b"} boogie_si_record_i32($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1213, 5} true; + assume {:verifier.code 0} true; + $i227 := $add.i32($i215, $i215); + call {:cexpr "c"} boogie_si_record_i32($i227); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1214, 9} true; + assume {:verifier.code 0} true; + $i228 := $slt.i32($i222, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1214, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i228} true; + goto $bb91, $bb92; +$bb88: + assume ($i216 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1206, 7} true; + assume {:verifier.code 0} true; + $i218 := $add.i32($i212, 1); + call {:cexpr "c"} boogie_si_record_i32($i218); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1207, 3} true; + assume {:verifier.code 0} true; + $i217 := $i218; + goto $bb90; +$bb89: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1205, 14} true; + assume {:verifier.code 0} true; + assume !(($i216 == 1)); + goto $bb90; +$bb90: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i215 := $i217; + goto $bb87; +$bb91: + assume ($i228 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1215, 7} true; + assume {:verifier.code 0} true; + $i229 := $add.i32($i227, 1); + call {:cexpr "c"} boogie_si_record_i32($i229); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1216, 3} true; + assume {:verifier.code 0} true; + $i230 := $i229; + goto $bb93; +$bb92: + assume !(($i228 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1216, 16} true; + assume {:verifier.code 0} true; + $i231 := $slt.i32($i226, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1216, 14} true; + assume {:verifier.code 0} true; + $i232 := $i227; + assume {:branchcond $i231} true; + goto $bb94, $bb95; +$bb93: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1219, 5} true; + assume {:verifier.code 0} true; + $i234 := $add.i32($i222, $i222); + call {:cexpr "a"} boogie_si_record_i32($i234); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1220, 7} true; + assume {:verifier.code 0} true; + $i235 := $sext.i32.i64($i234); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1220, 9} true; + assume {:verifier.code 0} true; + $i236 := $srem.i64($i235, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1220, 7} true; + assume {:verifier.code 0} true; + $i237 := $trunc.i64.i32($i236); + call {:cexpr "a"} boogie_si_record_i32($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1221, 5} true; + assume {:verifier.code 0} true; + $i238 := $add.i32($i226, $i226); + call {:cexpr "b"} boogie_si_record_i32($i238); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1222, 7} true; + assume {:verifier.code 0} true; + $i239 := $sext.i32.i64($i238); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1222, 9} true; + assume {:verifier.code 0} true; + $i240 := $srem.i64($i239, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1222, 7} true; + assume {:verifier.code 0} true; + $i241 := $trunc.i64.i32($i240); + call {:cexpr "b"} boogie_si_record_i32($i241); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1224, 5} true; + assume {:verifier.code 0} true; + $i242 := $add.i32($i230, $i230); + call {:cexpr "c"} boogie_si_record_i32($i242); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1225, 9} true; + assume {:verifier.code 0} true; + $i243 := $slt.i32($i237, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1225, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i243} true; + goto $bb97, $bb98; +$bb94: + assume ($i231 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1217, 7} true; + assume {:verifier.code 0} true; + $i233 := $add.i32($i227, 1); + call {:cexpr "c"} boogie_si_record_i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1218, 3} true; + assume {:verifier.code 0} true; + $i232 := $i233; + goto $bb96; +$bb95: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1216, 14} true; + assume {:verifier.code 0} true; + assume !(($i231 == 1)); + goto $bb96; +$bb96: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i230 := $i232; + goto $bb93; +$bb97: + assume ($i243 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1226, 7} true; + assume {:verifier.code 0} true; + $i244 := $add.i32($i242, 1); + call {:cexpr "c"} boogie_si_record_i32($i244); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1227, 3} true; + assume {:verifier.code 0} true; + $i245 := $i244; + goto $bb99; +$bb98: + assume !(($i243 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1227, 16} true; + assume {:verifier.code 0} true; + $i246 := $slt.i32($i241, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1227, 14} true; + assume {:verifier.code 0} true; + $i247 := $i242; + assume {:branchcond $i246} true; + goto $bb100, $bb101; +$bb99: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1230, 5} true; + assume {:verifier.code 0} true; + $i249 := $add.i32($i237, $i237); + call {:cexpr "a"} boogie_si_record_i32($i249); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1231, 7} true; + assume {:verifier.code 0} true; + $i250 := $sext.i32.i64($i249); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1231, 9} true; + assume {:verifier.code 0} true; + $i251 := $srem.i64($i250, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1231, 7} true; + assume {:verifier.code 0} true; + $i252 := $trunc.i64.i32($i251); + call {:cexpr "a"} boogie_si_record_i32($i252); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1232, 5} true; + assume {:verifier.code 0} true; + $i253 := $add.i32($i241, $i241); + call {:cexpr "b"} boogie_si_record_i32($i253); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1233, 7} true; + assume {:verifier.code 0} true; + $i254 := $sext.i32.i64($i253); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1233, 9} true; + assume {:verifier.code 0} true; + $i255 := $srem.i64($i254, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1233, 7} true; + assume {:verifier.code 0} true; + $i256 := $trunc.i64.i32($i255); + call {:cexpr "b"} boogie_si_record_i32($i256); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1235, 5} true; + assume {:verifier.code 0} true; + $i257 := $add.i32($i245, $i245); + call {:cexpr "c"} boogie_si_record_i32($i257); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1236, 9} true; + assume {:verifier.code 0} true; + $i258 := $slt.i32($i252, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1236, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i258} true; + goto $bb103, $bb104; +$bb100: + assume ($i246 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1228, 7} true; + assume {:verifier.code 0} true; + $i248 := $add.i32($i242, 1); + call {:cexpr "c"} boogie_si_record_i32($i248); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1229, 3} true; + assume {:verifier.code 0} true; + $i247 := $i248; + goto $bb102; +$bb101: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1227, 14} true; + assume {:verifier.code 0} true; + assume !(($i246 == 1)); + goto $bb102; +$bb102: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i245 := $i247; + goto $bb99; +$bb103: + assume ($i258 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1237, 7} true; + assume {:verifier.code 0} true; + $i259 := $add.i32($i257, 1); + call {:cexpr "c"} boogie_si_record_i32($i259); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1238, 3} true; + assume {:verifier.code 0} true; + $i260 := $i259; + goto $bb105; +$bb104: + assume !(($i258 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1238, 16} true; + assume {:verifier.code 0} true; + $i261 := $slt.i32($i256, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1238, 14} true; + assume {:verifier.code 0} true; + $i262 := $i257; + assume {:branchcond $i261} true; + goto $bb106, $bb107; +$bb105: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1241, 5} true; + assume {:verifier.code 0} true; + $i264 := $add.i32($i252, $i252); + call {:cexpr "a"} boogie_si_record_i32($i264); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1242, 7} true; + assume {:verifier.code 0} true; + $i265 := $sext.i32.i64($i264); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1242, 9} true; + assume {:verifier.code 0} true; + $i266 := $srem.i64($i265, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1242, 7} true; + assume {:verifier.code 0} true; + $i267 := $trunc.i64.i32($i266); + call {:cexpr "a"} boogie_si_record_i32($i267); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1243, 5} true; + assume {:verifier.code 0} true; + $i268 := $add.i32($i256, $i256); + call {:cexpr "b"} boogie_si_record_i32($i268); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1244, 7} true; + assume {:verifier.code 0} true; + $i269 := $sext.i32.i64($i268); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1244, 9} true; + assume {:verifier.code 0} true; + $i270 := $srem.i64($i269, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1244, 7} true; + assume {:verifier.code 0} true; + $i271 := $trunc.i64.i32($i270); + call {:cexpr "b"} boogie_si_record_i32($i271); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1246, 5} true; + assume {:verifier.code 0} true; + $i272 := $add.i32($i260, $i260); + call {:cexpr "c"} boogie_si_record_i32($i272); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1247, 9} true; + assume {:verifier.code 0} true; + $i273 := $slt.i32($i267, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1247, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i273} true; + goto $bb109, $bb110; +$bb106: + assume ($i261 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1239, 7} true; + assume {:verifier.code 0} true; + $i263 := $add.i32($i257, 1); + call {:cexpr "c"} boogie_si_record_i32($i263); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1240, 3} true; + assume {:verifier.code 0} true; + $i262 := $i263; + goto $bb108; +$bb107: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1238, 14} true; + assume {:verifier.code 0} true; + assume !(($i261 == 1)); + goto $bb108; +$bb108: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i260 := $i262; + goto $bb105; +$bb109: + assume ($i273 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1248, 7} true; + assume {:verifier.code 0} true; + $i274 := $add.i32($i272, 1); + call {:cexpr "c"} boogie_si_record_i32($i274); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1249, 3} true; + assume {:verifier.code 0} true; + $i275 := $i274; + goto $bb111; +$bb110: + assume !(($i273 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1249, 16} true; + assume {:verifier.code 0} true; + $i276 := $slt.i32($i271, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1249, 14} true; + assume {:verifier.code 0} true; + $i277 := $i272; + assume {:branchcond $i276} true; + goto $bb112, $bb113; +$bb111: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1252, 5} true; + assume {:verifier.code 0} true; + $i279 := $add.i32($i267, $i267); + call {:cexpr "a"} boogie_si_record_i32($i279); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1253, 7} true; + assume {:verifier.code 0} true; + $i280 := $sext.i32.i64($i279); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1253, 9} true; + assume {:verifier.code 0} true; + $i281 := $srem.i64($i280, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1253, 7} true; + assume {:verifier.code 0} true; + $i282 := $trunc.i64.i32($i281); + call {:cexpr "a"} boogie_si_record_i32($i282); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1254, 5} true; + assume {:verifier.code 0} true; + $i283 := $add.i32($i271, $i271); + call {:cexpr "b"} boogie_si_record_i32($i283); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1255, 7} true; + assume {:verifier.code 0} true; + $i284 := $sext.i32.i64($i283); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1255, 9} true; + assume {:verifier.code 0} true; + $i285 := $srem.i64($i284, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1255, 7} true; + assume {:verifier.code 0} true; + $i286 := $trunc.i64.i32($i285); + call {:cexpr "b"} boogie_si_record_i32($i286); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1257, 5} true; + assume {:verifier.code 0} true; + $i287 := $add.i32($i275, $i275); + call {:cexpr "c"} boogie_si_record_i32($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1258, 9} true; + assume {:verifier.code 0} true; + $i288 := $slt.i32($i282, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1258, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i288} true; + goto $bb115, $bb116; +$bb112: + assume ($i276 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1250, 7} true; + assume {:verifier.code 0} true; + $i278 := $add.i32($i272, 1); + call {:cexpr "c"} boogie_si_record_i32($i278); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1251, 3} true; + assume {:verifier.code 0} true; + $i277 := $i278; + goto $bb114; +$bb113: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1249, 14} true; + assume {:verifier.code 0} true; + assume !(($i276 == 1)); + goto $bb114; +$bb114: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i275 := $i277; + goto $bb111; +$bb115: + assume ($i288 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1259, 7} true; + assume {:verifier.code 0} true; + $i289 := $add.i32($i287, 1); + call {:cexpr "c"} boogie_si_record_i32($i289); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1260, 3} true; + assume {:verifier.code 0} true; + $i290 := $i289; + goto $bb117; +$bb116: + assume !(($i288 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1260, 16} true; + assume {:verifier.code 0} true; + $i291 := $slt.i32($i286, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1260, 14} true; + assume {:verifier.code 0} true; + $i292 := $i287; + assume {:branchcond $i291} true; + goto $bb118, $bb119; +$bb117: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1263, 5} true; + assume {:verifier.code 0} true; + $i294 := $add.i32($i282, $i282); + call {:cexpr "a"} boogie_si_record_i32($i294); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1264, 7} true; + assume {:verifier.code 0} true; + $i295 := $sext.i32.i64($i294); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1264, 9} true; + assume {:verifier.code 0} true; + $i296 := $srem.i64($i295, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1264, 7} true; + assume {:verifier.code 0} true; + $i297 := $trunc.i64.i32($i296); + call {:cexpr "a"} boogie_si_record_i32($i297); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1265, 5} true; + assume {:verifier.code 0} true; + $i298 := $add.i32($i286, $i286); + call {:cexpr "b"} boogie_si_record_i32($i298); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1266, 7} true; + assume {:verifier.code 0} true; + $i299 := $sext.i32.i64($i298); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1266, 9} true; + assume {:verifier.code 0} true; + $i300 := $srem.i64($i299, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1266, 7} true; + assume {:verifier.code 0} true; + $i301 := $trunc.i64.i32($i300); + call {:cexpr "b"} boogie_si_record_i32($i301); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1268, 5} true; + assume {:verifier.code 0} true; + $i302 := $add.i32($i290, $i290); + call {:cexpr "c"} boogie_si_record_i32($i302); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1269, 9} true; + assume {:verifier.code 0} true; + $i303 := $slt.i32($i297, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1269, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i303} true; + goto $bb121, $bb122; +$bb118: + assume ($i291 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1261, 7} true; + assume {:verifier.code 0} true; + $i293 := $add.i32($i287, 1); + call {:cexpr "c"} boogie_si_record_i32($i293); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1262, 3} true; + assume {:verifier.code 0} true; + $i292 := $i293; + goto $bb120; +$bb119: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1260, 14} true; + assume {:verifier.code 0} true; + assume !(($i291 == 1)); + goto $bb120; +$bb120: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i290 := $i292; + goto $bb117; +$bb121: + assume ($i303 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1270, 7} true; + assume {:verifier.code 0} true; + $i304 := $add.i32($i302, 1); + call {:cexpr "c"} boogie_si_record_i32($i304); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1271, 3} true; + assume {:verifier.code 0} true; + $i305 := $i304; + goto $bb123; +$bb122: + assume !(($i303 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1271, 16} true; + assume {:verifier.code 0} true; + $i306 := $slt.i32($i301, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1271, 14} true; + assume {:verifier.code 0} true; + $i307 := $i302; + assume {:branchcond $i306} true; + goto $bb124, $bb125; +$bb123: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1274, 5} true; + assume {:verifier.code 0} true; + $i309 := $add.i32($i297, $i297); + call {:cexpr "a"} boogie_si_record_i32($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1275, 7} true; + assume {:verifier.code 0} true; + $i310 := $sext.i32.i64($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1275, 9} true; + assume {:verifier.code 0} true; + $i311 := $srem.i64($i310, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1275, 7} true; + assume {:verifier.code 0} true; + $i312 := $trunc.i64.i32($i311); + call {:cexpr "a"} boogie_si_record_i32($i312); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1276, 5} true; + assume {:verifier.code 0} true; + $i313 := $add.i32($i301, $i301); + call {:cexpr "b"} boogie_si_record_i32($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1277, 7} true; + assume {:verifier.code 0} true; + $i314 := $sext.i32.i64($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1277, 9} true; + assume {:verifier.code 0} true; + $i315 := $srem.i64($i314, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1277, 7} true; + assume {:verifier.code 0} true; + $i316 := $trunc.i64.i32($i315); + call {:cexpr "b"} boogie_si_record_i32($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1279, 5} true; + assume {:verifier.code 0} true; + $i317 := $add.i32($i305, $i305); + call {:cexpr "c"} boogie_si_record_i32($i317); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1280, 9} true; + assume {:verifier.code 0} true; + $i318 := $slt.i32($i312, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1280, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i318} true; + goto $bb127, $bb128; +$bb124: + assume ($i306 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1272, 7} true; + assume {:verifier.code 0} true; + $i308 := $add.i32($i302, 1); + call {:cexpr "c"} boogie_si_record_i32($i308); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1273, 3} true; + assume {:verifier.code 0} true; + $i307 := $i308; + goto $bb126; +$bb125: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1271, 14} true; + assume {:verifier.code 0} true; + assume !(($i306 == 1)); + goto $bb126; +$bb126: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i305 := $i307; + goto $bb123; +$bb127: + assume ($i318 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1281, 7} true; + assume {:verifier.code 0} true; + $i319 := $add.i32($i317, 1); + call {:cexpr "c"} boogie_si_record_i32($i319); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1282, 3} true; + assume {:verifier.code 0} true; + $i320 := $i319; + goto $bb129; +$bb128: + assume !(($i318 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1282, 16} true; + assume {:verifier.code 0} true; + $i321 := $slt.i32($i316, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1282, 14} true; + assume {:verifier.code 0} true; + $i322 := $i317; + assume {:branchcond $i321} true; + goto $bb130, $bb131; +$bb129: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1285, 5} true; + assume {:verifier.code 0} true; + $i324 := $add.i32($i312, $i312); + call {:cexpr "a"} boogie_si_record_i32($i324); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1286, 7} true; + assume {:verifier.code 0} true; + $i325 := $sext.i32.i64($i324); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1286, 9} true; + assume {:verifier.code 0} true; + $i326 := $srem.i64($i325, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1286, 7} true; + assume {:verifier.code 0} true; + $i327 := $trunc.i64.i32($i326); + call {:cexpr "a"} boogie_si_record_i32($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1287, 5} true; + assume {:verifier.code 0} true; + $i328 := $add.i32($i316, $i316); + call {:cexpr "b"} boogie_si_record_i32($i328); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1288, 7} true; + assume {:verifier.code 0} true; + $i329 := $sext.i32.i64($i328); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1288, 9} true; + assume {:verifier.code 0} true; + $i330 := $srem.i64($i329, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1288, 7} true; + assume {:verifier.code 0} true; + $i331 := $trunc.i64.i32($i330); + call {:cexpr "b"} boogie_si_record_i32($i331); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1290, 5} true; + assume {:verifier.code 0} true; + $i332 := $add.i32($i320, $i320); + call {:cexpr "c"} boogie_si_record_i32($i332); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1291, 9} true; + assume {:verifier.code 0} true; + $i333 := $slt.i32($i327, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1291, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i333} true; + goto $bb133, $bb134; +$bb130: + assume ($i321 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1283, 7} true; + assume {:verifier.code 0} true; + $i323 := $add.i32($i317, 1); + call {:cexpr "c"} boogie_si_record_i32($i323); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1284, 3} true; + assume {:verifier.code 0} true; + $i322 := $i323; + goto $bb132; +$bb131: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1282, 14} true; + assume {:verifier.code 0} true; + assume !(($i321 == 1)); + goto $bb132; +$bb132: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i320 := $i322; + goto $bb129; +$bb133: + assume ($i333 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1292, 7} true; + assume {:verifier.code 0} true; + $i334 := $add.i32($i332, 1); + call {:cexpr "c"} boogie_si_record_i32($i334); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1293, 3} true; + assume {:verifier.code 0} true; + $i335 := $i334; + goto $bb135; +$bb134: + assume !(($i333 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1293, 16} true; + assume {:verifier.code 0} true; + $i336 := $slt.i32($i331, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1293, 14} true; + assume {:verifier.code 0} true; + $i337 := $i332; + assume {:branchcond $i336} true; + goto $bb136, $bb137; +$bb135: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1296, 5} true; + assume {:verifier.code 0} true; + $i339 := $add.i32($i327, $i327); + call {:cexpr "a"} boogie_si_record_i32($i339); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1297, 7} true; + assume {:verifier.code 0} true; + $i340 := $sext.i32.i64($i339); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1297, 9} true; + assume {:verifier.code 0} true; + $i341 := $srem.i64($i340, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1297, 7} true; + assume {:verifier.code 0} true; + $i342 := $trunc.i64.i32($i341); + call {:cexpr "a"} boogie_si_record_i32($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1298, 5} true; + assume {:verifier.code 0} true; + $i343 := $add.i32($i331, $i331); + call {:cexpr "b"} boogie_si_record_i32($i343); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1299, 7} true; + assume {:verifier.code 0} true; + $i344 := $sext.i32.i64($i343); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1299, 9} true; + assume {:verifier.code 0} true; + $i345 := $srem.i64($i344, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1299, 7} true; + assume {:verifier.code 0} true; + $i346 := $trunc.i64.i32($i345); + call {:cexpr "b"} boogie_si_record_i32($i346); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1301, 5} true; + assume {:verifier.code 0} true; + $i347 := $add.i32($i335, $i335); + call {:cexpr "c"} boogie_si_record_i32($i347); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1302, 9} true; + assume {:verifier.code 0} true; + $i348 := $slt.i32($i342, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1302, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i348} true; + goto $bb139, $bb140; +$bb136: + assume ($i336 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1294, 7} true; + assume {:verifier.code 0} true; + $i338 := $add.i32($i332, 1); + call {:cexpr "c"} boogie_si_record_i32($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1295, 3} true; + assume {:verifier.code 0} true; + $i337 := $i338; + goto $bb138; +$bb137: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1293, 14} true; + assume {:verifier.code 0} true; + assume !(($i336 == 1)); + goto $bb138; +$bb138: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i335 := $i337; + goto $bb135; +$bb139: + assume ($i348 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1303, 7} true; + assume {:verifier.code 0} true; + $i349 := $add.i32($i347, 1); + call {:cexpr "c"} boogie_si_record_i32($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1304, 3} true; + assume {:verifier.code 0} true; + $i350 := $i349; + goto $bb141; +$bb140: + assume !(($i348 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1304, 16} true; + assume {:verifier.code 0} true; + $i351 := $slt.i32($i346, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1304, 14} true; + assume {:verifier.code 0} true; + $i352 := $i347; + assume {:branchcond $i351} true; + goto $bb142, $bb143; +$bb141: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1307, 5} true; + assume {:verifier.code 0} true; + $i354 := $add.i32($i342, $i342); + call {:cexpr "a"} boogie_si_record_i32($i354); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1308, 7} true; + assume {:verifier.code 0} true; + $i355 := $sext.i32.i64($i354); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1308, 9} true; + assume {:verifier.code 0} true; + $i356 := $srem.i64($i355, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1308, 7} true; + assume {:verifier.code 0} true; + $i357 := $trunc.i64.i32($i356); + call {:cexpr "a"} boogie_si_record_i32($i357); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1309, 5} true; + assume {:verifier.code 0} true; + $i358 := $add.i32($i346, $i346); + call {:cexpr "b"} boogie_si_record_i32($i358); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1310, 7} true; + assume {:verifier.code 0} true; + $i359 := $sext.i32.i64($i358); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1310, 9} true; + assume {:verifier.code 0} true; + $i360 := $srem.i64($i359, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1310, 7} true; + assume {:verifier.code 0} true; + $i361 := $trunc.i64.i32($i360); + call {:cexpr "b"} boogie_si_record_i32($i361); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1312, 5} true; + assume {:verifier.code 0} true; + $i362 := $add.i32($i350, $i350); + call {:cexpr "c"} boogie_si_record_i32($i362); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1313, 9} true; + assume {:verifier.code 0} true; + $i363 := $slt.i32($i357, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1313, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i363} true; + goto $bb145, $bb146; +$bb142: + assume ($i351 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1305, 7} true; + assume {:verifier.code 0} true; + $i353 := $add.i32($i347, 1); + call {:cexpr "c"} boogie_si_record_i32($i353); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1306, 3} true; + assume {:verifier.code 0} true; + $i352 := $i353; + goto $bb144; +$bb143: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1304, 14} true; + assume {:verifier.code 0} true; + assume !(($i351 == 1)); + goto $bb144; +$bb144: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i350 := $i352; + goto $bb141; +$bb145: + assume ($i363 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1314, 7} true; + assume {:verifier.code 0} true; + $i364 := $add.i32($i362, 1); + call {:cexpr "c"} boogie_si_record_i32($i364); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1315, 3} true; + assume {:verifier.code 0} true; + $i365 := $i364; + goto $bb147; +$bb146: + assume !(($i363 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1315, 16} true; + assume {:verifier.code 0} true; + $i366 := $slt.i32($i361, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1315, 14} true; + assume {:verifier.code 0} true; + $i367 := $i362; + assume {:branchcond $i366} true; + goto $bb148, $bb149; +$bb147: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1318, 5} true; + assume {:verifier.code 0} true; + $i369 := $add.i32($i357, $i357); + call {:cexpr "a"} boogie_si_record_i32($i369); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1319, 7} true; + assume {:verifier.code 0} true; + $i370 := $sext.i32.i64($i369); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1319, 9} true; + assume {:verifier.code 0} true; + $i371 := $srem.i64($i370, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1319, 7} true; + assume {:verifier.code 0} true; + $i372 := $trunc.i64.i32($i371); + call {:cexpr "a"} boogie_si_record_i32($i372); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1320, 5} true; + assume {:verifier.code 0} true; + $i373 := $add.i32($i361, $i361); + call {:cexpr "b"} boogie_si_record_i32($i373); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1321, 7} true; + assume {:verifier.code 0} true; + $i374 := $sext.i32.i64($i373); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1321, 9} true; + assume {:verifier.code 0} true; + $i375 := $srem.i64($i374, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1321, 7} true; + assume {:verifier.code 0} true; + $i376 := $trunc.i64.i32($i375); + call {:cexpr "b"} boogie_si_record_i32($i376); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1323, 5} true; + assume {:verifier.code 0} true; + $i377 := $add.i32($i365, $i365); + call {:cexpr "c"} boogie_si_record_i32($i377); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1324, 9} true; + assume {:verifier.code 0} true; + $i378 := $slt.i32($i372, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1324, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i378} true; + goto $bb151, $bb152; +$bb148: + assume ($i366 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1316, 7} true; + assume {:verifier.code 0} true; + $i368 := $add.i32($i362, 1); + call {:cexpr "c"} boogie_si_record_i32($i368); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1317, 3} true; + assume {:verifier.code 0} true; + $i367 := $i368; + goto $bb150; +$bb149: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1315, 14} true; + assume {:verifier.code 0} true; + assume !(($i366 == 1)); + goto $bb150; +$bb150: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i365 := $i367; + goto $bb147; +$bb151: + assume ($i378 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1325, 7} true; + assume {:verifier.code 0} true; + $i379 := $add.i32($i377, 1); + call {:cexpr "c"} boogie_si_record_i32($i379); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1326, 3} true; + assume {:verifier.code 0} true; + $i380 := $i379; + goto $bb153; +$bb152: + assume !(($i378 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1326, 16} true; + assume {:verifier.code 0} true; + $i381 := $slt.i32($i376, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1326, 14} true; + assume {:verifier.code 0} true; + $i382 := $i377; + assume {:branchcond $i381} true; + goto $bb154, $bb155; +$bb153: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1329, 5} true; + assume {:verifier.code 0} true; + $i384 := $add.i32($i372, $i372); + call {:cexpr "a"} boogie_si_record_i32($i384); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1330, 7} true; + assume {:verifier.code 0} true; + $i385 := $sext.i32.i64($i384); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1330, 9} true; + assume {:verifier.code 0} true; + $i386 := $srem.i64($i385, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1330, 7} true; + assume {:verifier.code 0} true; + $i387 := $trunc.i64.i32($i386); + call {:cexpr "a"} boogie_si_record_i32($i387); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1331, 5} true; + assume {:verifier.code 0} true; + $i388 := $add.i32($i376, $i376); + call {:cexpr "b"} boogie_si_record_i32($i388); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1332, 7} true; + assume {:verifier.code 0} true; + $i389 := $sext.i32.i64($i388); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1332, 9} true; + assume {:verifier.code 0} true; + $i390 := $srem.i64($i389, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1332, 7} true; + assume {:verifier.code 0} true; + $i391 := $trunc.i64.i32($i390); + call {:cexpr "b"} boogie_si_record_i32($i391); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1334, 5} true; + assume {:verifier.code 0} true; + $i392 := $add.i32($i380, $i380); + call {:cexpr "c"} boogie_si_record_i32($i392); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1335, 9} true; + assume {:verifier.code 0} true; + $i393 := $slt.i32($i387, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1335, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i393} true; + goto $bb157, $bb158; +$bb154: + assume ($i381 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1327, 7} true; + assume {:verifier.code 0} true; + $i383 := $add.i32($i377, 1); + call {:cexpr "c"} boogie_si_record_i32($i383); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1328, 3} true; + assume {:verifier.code 0} true; + $i382 := $i383; + goto $bb156; +$bb155: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1326, 14} true; + assume {:verifier.code 0} true; + assume !(($i381 == 1)); + goto $bb156; +$bb156: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i380 := $i382; + goto $bb153; +$bb157: + assume ($i393 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1336, 7} true; + assume {:verifier.code 0} true; + $i394 := $add.i32($i392, 1); + call {:cexpr "c"} boogie_si_record_i32($i394); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1337, 3} true; + assume {:verifier.code 0} true; + $i395 := $i394; + goto $bb159; +$bb158: + assume !(($i393 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1337, 16} true; + assume {:verifier.code 0} true; + $i396 := $slt.i32($i391, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1337, 14} true; + assume {:verifier.code 0} true; + $i397 := $i392; + assume {:branchcond $i396} true; + goto $bb160, $bb161; +$bb159: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1340, 5} true; + assume {:verifier.code 0} true; + $i399 := $add.i32($i387, $i387); + call {:cexpr "a"} boogie_si_record_i32($i399); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1341, 7} true; + assume {:verifier.code 0} true; + $i400 := $sext.i32.i64($i399); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1341, 9} true; + assume {:verifier.code 0} true; + $i401 := $srem.i64($i400, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1341, 7} true; + assume {:verifier.code 0} true; + $i402 := $trunc.i64.i32($i401); + call {:cexpr "a"} boogie_si_record_i32($i402); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1342, 5} true; + assume {:verifier.code 0} true; + $i403 := $add.i32($i391, $i391); + call {:cexpr "b"} boogie_si_record_i32($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1343, 7} true; + assume {:verifier.code 0} true; + $i404 := $sext.i32.i64($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1343, 9} true; + assume {:verifier.code 0} true; + $i405 := $srem.i64($i404, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1343, 7} true; + assume {:verifier.code 0} true; + $i406 := $trunc.i64.i32($i405); + call {:cexpr "b"} boogie_si_record_i32($i406); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1345, 5} true; + assume {:verifier.code 0} true; + $i407 := $add.i32($i395, $i395); + call {:cexpr "c"} boogie_si_record_i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1346, 9} true; + assume {:verifier.code 0} true; + $i408 := $slt.i32($i402, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1346, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i408} true; + goto $bb163, $bb164; +$bb160: + assume ($i396 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1338, 7} true; + assume {:verifier.code 0} true; + $i398 := $add.i32($i392, 1); + call {:cexpr "c"} boogie_si_record_i32($i398); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1339, 3} true; + assume {:verifier.code 0} true; + $i397 := $i398; + goto $bb162; +$bb161: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1337, 14} true; + assume {:verifier.code 0} true; + assume !(($i396 == 1)); + goto $bb162; +$bb162: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i395 := $i397; + goto $bb159; +$bb163: + assume ($i408 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1347, 7} true; + assume {:verifier.code 0} true; + $i409 := $add.i32($i407, 1); + call {:cexpr "c"} boogie_si_record_i32($i409); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1348, 3} true; + assume {:verifier.code 0} true; + $i410 := $i409; + goto $bb165; +$bb164: + assume !(($i408 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1348, 16} true; + assume {:verifier.code 0} true; + $i411 := $slt.i32($i406, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1348, 14} true; + assume {:verifier.code 0} true; + $i412 := $i407; + assume {:branchcond $i411} true; + goto $bb166, $bb167; +$bb165: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1351, 5} true; + assume {:verifier.code 0} true; + $i414 := $add.i32($i402, $i402); + call {:cexpr "a"} boogie_si_record_i32($i414); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1352, 7} true; + assume {:verifier.code 0} true; + $i415 := $sext.i32.i64($i414); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1352, 9} true; + assume {:verifier.code 0} true; + $i416 := $srem.i64($i415, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1352, 7} true; + assume {:verifier.code 0} true; + $i417 := $trunc.i64.i32($i416); + call {:cexpr "a"} boogie_si_record_i32($i417); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1353, 5} true; + assume {:verifier.code 0} true; + $i418 := $add.i32($i406, $i406); + call {:cexpr "b"} boogie_si_record_i32($i418); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1354, 7} true; + assume {:verifier.code 0} true; + $i419 := $sext.i32.i64($i418); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1354, 9} true; + assume {:verifier.code 0} true; + $i420 := $srem.i64($i419, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1354, 7} true; + assume {:verifier.code 0} true; + $i421 := $trunc.i64.i32($i420); + call {:cexpr "b"} boogie_si_record_i32($i421); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1356, 5} true; + assume {:verifier.code 0} true; + $i422 := $add.i32($i410, $i410); + call {:cexpr "c"} boogie_si_record_i32($i422); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1357, 9} true; + assume {:verifier.code 0} true; + $i423 := $slt.i32($i417, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1357, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i423} true; + goto $bb169, $bb170; +$bb166: + assume ($i411 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1349, 7} true; + assume {:verifier.code 0} true; + $i413 := $add.i32($i407, 1); + call {:cexpr "c"} boogie_si_record_i32($i413); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1350, 3} true; + assume {:verifier.code 0} true; + $i412 := $i413; + goto $bb168; +$bb167: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1348, 14} true; + assume {:verifier.code 0} true; + assume !(($i411 == 1)); + goto $bb168; +$bb168: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i410 := $i412; + goto $bb165; +$bb169: + assume ($i423 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1358, 7} true; + assume {:verifier.code 0} true; + $i424 := $add.i32($i422, 1); + call {:cexpr "c"} boogie_si_record_i32($i424); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1359, 3} true; + assume {:verifier.code 0} true; + $i425 := $i424; + goto $bb171; +$bb170: + assume !(($i423 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1359, 16} true; + assume {:verifier.code 0} true; + $i426 := $slt.i32($i421, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1359, 14} true; + assume {:verifier.code 0} true; + $i427 := $i422; + assume {:branchcond $i426} true; + goto $bb172, $bb173; +$bb171: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1362, 5} true; + assume {:verifier.code 0} true; + $i429 := $add.i32($i417, $i417); + call {:cexpr "a"} boogie_si_record_i32($i429); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1363, 7} true; + assume {:verifier.code 0} true; + $i430 := $sext.i32.i64($i429); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1363, 9} true; + assume {:verifier.code 0} true; + $i431 := $srem.i64($i430, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1363, 7} true; + assume {:verifier.code 0} true; + $i432 := $trunc.i64.i32($i431); + call {:cexpr "a"} boogie_si_record_i32($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1364, 5} true; + assume {:verifier.code 0} true; + $i433 := $add.i32($i421, $i421); + call {:cexpr "b"} boogie_si_record_i32($i433); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1365, 7} true; + assume {:verifier.code 0} true; + $i434 := $sext.i32.i64($i433); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1365, 9} true; + assume {:verifier.code 0} true; + $i435 := $srem.i64($i434, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1365, 7} true; + assume {:verifier.code 0} true; + $i436 := $trunc.i64.i32($i435); + call {:cexpr "b"} boogie_si_record_i32($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1367, 5} true; + assume {:verifier.code 0} true; + $i437 := $add.i32($i425, $i425); + call {:cexpr "c"} boogie_si_record_i32($i437); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1368, 9} true; + assume {:verifier.code 0} true; + $i438 := $slt.i32($i432, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1368, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i438} true; + goto $bb175, $bb176; +$bb172: + assume ($i426 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1360, 7} true; + assume {:verifier.code 0} true; + $i428 := $add.i32($i422, 1); + call {:cexpr "c"} boogie_si_record_i32($i428); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1361, 3} true; + assume {:verifier.code 0} true; + $i427 := $i428; + goto $bb174; +$bb173: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1359, 14} true; + assume {:verifier.code 0} true; + assume !(($i426 == 1)); + goto $bb174; +$bb174: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i425 := $i427; + goto $bb171; +$bb175: + assume ($i438 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1369, 7} true; + assume {:verifier.code 0} true; + $i439 := $add.i32($i437, 1); + call {:cexpr "c"} boogie_si_record_i32($i439); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1370, 3} true; + assume {:verifier.code 0} true; + $i440 := $i439; + goto $bb177; +$bb176: + assume !(($i438 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1370, 16} true; + assume {:verifier.code 0} true; + $i441 := $slt.i32($i436, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1370, 14} true; + assume {:verifier.code 0} true; + $i442 := $i437; + assume {:branchcond $i441} true; + goto $bb178, $bb179; +$bb177: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1373, 5} true; + assume {:verifier.code 0} true; + $i444 := $add.i32($i432, $i432); + call {:cexpr "a"} boogie_si_record_i32($i444); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1374, 7} true; + assume {:verifier.code 0} true; + $i445 := $sext.i32.i64($i444); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1374, 9} true; + assume {:verifier.code 0} true; + $i446 := $srem.i64($i445, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1374, 7} true; + assume {:verifier.code 0} true; + $i447 := $trunc.i64.i32($i446); + call {:cexpr "a"} boogie_si_record_i32($i447); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1375, 5} true; + assume {:verifier.code 0} true; + $i448 := $add.i32($i436, $i436); + call {:cexpr "b"} boogie_si_record_i32($i448); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1376, 7} true; + assume {:verifier.code 0} true; + $i449 := $sext.i32.i64($i448); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1376, 9} true; + assume {:verifier.code 0} true; + $i450 := $srem.i64($i449, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1376, 7} true; + assume {:verifier.code 0} true; + $i451 := $trunc.i64.i32($i450); + call {:cexpr "b"} boogie_si_record_i32($i451); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1378, 5} true; + assume {:verifier.code 0} true; + $i452 := $add.i32($i440, $i440); + call {:cexpr "c"} boogie_si_record_i32($i452); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1379, 9} true; + assume {:verifier.code 0} true; + $i453 := $slt.i32($i447, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1379, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i453} true; + goto $bb181, $bb182; +$bb178: + assume ($i441 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1371, 7} true; + assume {:verifier.code 0} true; + $i443 := $add.i32($i437, 1); + call {:cexpr "c"} boogie_si_record_i32($i443); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1372, 3} true; + assume {:verifier.code 0} true; + $i442 := $i443; + goto $bb180; +$bb179: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1370, 14} true; + assume {:verifier.code 0} true; + assume !(($i441 == 1)); + goto $bb180; +$bb180: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i440 := $i442; + goto $bb177; +$bb181: + assume ($i453 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1380, 7} true; + assume {:verifier.code 0} true; + $i454 := $add.i32($i452, 1); + call {:cexpr "c"} boogie_si_record_i32($i454); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1381, 3} true; + assume {:verifier.code 0} true; + $i455 := $i454; + goto $bb183; +$bb182: + assume !(($i453 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1381, 16} true; + assume {:verifier.code 0} true; + $i456 := $slt.i32($i451, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1381, 14} true; + assume {:verifier.code 0} true; + $i457 := $i452; + assume {:branchcond $i456} true; + goto $bb184, $bb185; +$bb183: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1384, 5} true; + assume {:verifier.code 0} true; + $i459 := $add.i32($i447, $i447); + call {:cexpr "a"} boogie_si_record_i32($i459); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1385, 7} true; + assume {:verifier.code 0} true; + $i460 := $sext.i32.i64($i459); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1385, 9} true; + assume {:verifier.code 0} true; + $i461 := $srem.i64($i460, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1385, 7} true; + assume {:verifier.code 0} true; + $i462 := $trunc.i64.i32($i461); + call {:cexpr "a"} boogie_si_record_i32($i462); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1386, 5} true; + assume {:verifier.code 0} true; + $i463 := $add.i32($i451, $i451); + call {:cexpr "b"} boogie_si_record_i32($i463); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1387, 7} true; + assume {:verifier.code 0} true; + $i464 := $sext.i32.i64($i463); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1387, 9} true; + assume {:verifier.code 0} true; + $i465 := $srem.i64($i464, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1387, 7} true; + assume {:verifier.code 0} true; + $i466 := $trunc.i64.i32($i465); + call {:cexpr "b"} boogie_si_record_i32($i466); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1389, 5} true; + assume {:verifier.code 0} true; + $i467 := $add.i32($i455, $i455); + call {:cexpr "c"} boogie_si_record_i32($i467); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1390, 9} true; + assume {:verifier.code 0} true; + $i468 := $slt.i32($i462, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1390, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i468} true; + goto $bb187, $bb188; +$bb184: + assume ($i456 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1382, 7} true; + assume {:verifier.code 0} true; + $i458 := $add.i32($i452, 1); + call {:cexpr "c"} boogie_si_record_i32($i458); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1383, 3} true; + assume {:verifier.code 0} true; + $i457 := $i458; + goto $bb186; +$bb185: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1381, 14} true; + assume {:verifier.code 0} true; + assume !(($i456 == 1)); + goto $bb186; +$bb186: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i455 := $i457; + goto $bb183; +$bb187: + assume ($i468 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1391, 7} true; + assume {:verifier.code 0} true; + $i469 := $add.i32($i467, 1); + call {:cexpr "c"} boogie_si_record_i32($i469); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1392, 3} true; + assume {:verifier.code 0} true; + $i470 := $i469; + goto $bb189; +$bb188: + assume !(($i468 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1392, 16} true; + assume {:verifier.code 0} true; + $i471 := $slt.i32($i466, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1392, 14} true; + assume {:verifier.code 0} true; + $i472 := $i467; + assume {:branchcond $i471} true; + goto $bb190, $bb191; +$bb189: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1400, 3} true; + assume {:verifier.code 0} true; + $r := $i470; + $exn := false; + return; +$bb190: + assume ($i471 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1393, 7} true; + assume {:verifier.code 0} true; + $i473 := $add.i32($i467, 1); + call {:cexpr "c"} boogie_si_record_i32($i473); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1394, 3} true; + assume {:verifier.code 0} true; + $i472 := $i473; + goto $bb192; +$bb191: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1392, 14} true; + assume {:verifier.code 0} true; + assume !(($i471 == 1)); + goto $bb192; +$bb192: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i470 := $i472; + goto $bb189; +} +const __SMACK_or64: ref; +axiom (__SMACK_or64 == $sub.ref(0, 15477)); +procedure __SMACK_or64($i0: i64, $i1: i64) + returns ($r: i64) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i64; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 63} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_or64:arg:a"} boogie_si_record_i64($i0); + call {:cexpr "__SMACK_or64:arg:b"} boogie_si_record_i64($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 63} true; + assume {:verifier.code 1} true; + $i2 := $trunc.i64.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 66} true; + assume {:verifier.code 1} true; + $i3 := $trunc.i64.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 50} true; + assume {:verifier.code 1} true; + call $i4 := __SMACK_or32($i2, $i3); + call {:cexpr "smack:ext:__SMACK_or32"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 44} true; + assume {:verifier.code 0} true; + $i5 := $sext.i32.i64($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 37} true; + assume {:verifier.code 0} true; + $r := $i5; + $exn := false; + return; +} +const __SMACK_or16: ref; +axiom (__SMACK_or16 == $sub.ref(0, 16509)); +procedure __SMACK_or16($i0: i16, $i1: i16) + returns ($r: i16) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i16; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 67} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_or16:arg:a"} boogie_si_record_i16($i0); + call {:cexpr "__SMACK_or16:arg:b"} boogie_si_record_i16($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 67} true; + assume {:verifier.code 1} true; + $i2 := $sext.i16.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 70} true; + assume {:verifier.code 1} true; + $i3 := $sext.i16.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 54} true; + assume {:verifier.code 1} true; + call $i4 := __SMACK_or32($i2, $i3); + call {:cexpr "smack:ext:__SMACK_or32"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 47} true; + assume {:verifier.code 0} true; + $i5 := $trunc.i32.i16($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 40} true; + assume {:verifier.code 0} true; + $r := $i5; + $exn := false; + return; +} +const __SMACK_or8: ref; +axiom (__SMACK_or8 == $sub.ref(0, 17541)); +procedure __SMACK_or8($i0: i8, $i1: i8) + returns ($r: i8) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i8; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 62} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_or8:arg:a"} boogie_si_record_i8($i0); + call {:cexpr "__SMACK_or8:arg:b"} boogie_si_record_i8($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 62} true; + assume {:verifier.code 1} true; + $i2 := $sext.i8.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 65} true; + assume {:verifier.code 1} true; + $i3 := $sext.i8.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 49} true; + assume {:verifier.code 1} true; + call $i4 := __SMACK_or32($i2, $i3); + call {:cexpr "smack:ext:__SMACK_or32"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 43} true; + assume {:verifier.code 0} true; + $i5 := $trunc.i32.i8($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 36} true; + assume {:verifier.code 0} true; + $r := $i5; + $exn := false; + return; +} +const __SMACK_check_overflow: ref; +axiom (__SMACK_check_overflow == $sub.ref(0, 18573)); +procedure __SMACK_check_overflow($i0: i32) +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_check_overflow:arg:flag"} boogie_si_record_i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + assume true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1409, 3} true; + assume {:verifier.code 1} true; + assert {:overflow} $i0 == $0; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1410, 1} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_loop_exit: ref; +axiom (__SMACK_loop_exit == $sub.ref(0, 19605)); +procedure __SMACK_loop_exit() +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1412, 32} true; + assume {:verifier.code 1} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1412, 32} true; + assume {:verifier.code 1} true; + assert {:loopexit} false; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1412, 75} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __VERIFIER_nondet_int: ref; +axiom (__VERIFIER_nondet_int == $sub.ref(0, 20637)); +procedure __VERIFIER_nondet_int() + returns ($r: i32) +{ + var $i0: i32; + var $i1: i1; + var $i3: i1; + var $i2: i1; + var $i4: i32; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1463, 11} true; + assume {:verifier.code 1} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1463, 11} true; + assume {:verifier.code 1} true; + call $i0 := __SMACK_nondet_int(); + call {:cexpr "smack:ext:__SMACK_nondet_int"} boogie_si_record_i32($i0); + call {:cexpr "x"} boogie_si_record_i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1464, 23} true; + assume {:verifier.code 0} true; + $i1 := $sge.i32($i0, $sub.i32(0, 2147483648)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1464, 34} true; + assume {:verifier.code 0} true; + $i2 := 0; + assume {:branchcond $i1} true; + goto $bb1, $bb2; +$bb1: + assume ($i1 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1464, 39} true; + assume {:verifier.code 1} true; + $i3 := $sle.i32($i0, 2147483647); + assume {:verifier.code 0} true; + $i2 := $i3; + goto $bb3; +$bb2: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1464, 34} true; + assume {:verifier.code 0} true; + assume !(($i1 == 1)); + goto $bb3; +$bb3: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 1} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1464, 34} true; + assume {:verifier.code 1} true; + $i4 := $zext.i1.i32($i2); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1464, 3} true; + assume {:verifier.code 1} true; + call __VERIFIER_assume($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1465, 3} true; + assume {:verifier.code 0} true; + $r := $i0; + $exn := false; + return; +} +const __SMACK_nondet_int: ref; +axiom (__SMACK_nondet_int == $sub.ref(0, 21669)); +procedure __SMACK_nondet_int() + returns ($r: i32); +const __SMACK_decls: ref; +axiom (__SMACK_decls == $sub.ref(0, 22701)); +type $mop; +procedure boogie_si_record_mop(m: $mop); +const $MOP: $mop; +var $exn: bool; +var $exnv: int; +procedure corral_atomic_begin(); +procedure corral_atomic_end(); +procedure $alloc(n: ref) returns (p: ref) +{ + call corral_atomic_begin(); + call p := $$alloc(n); + call corral_atomic_end(); +} + +procedure $malloc(n: ref) returns (p: ref) +{ + call corral_atomic_begin(); + call p := $$alloc(n); + call corral_atomic_end(); +} + +var $CurrAddr:ref; + +procedure {:inline 1} $$alloc(n: ref) returns (p: ref) +modifies $CurrAddr; +{ + assume $sge.ref.bool(n, $0.ref); + if ($sgt.ref.bool(n, $0.ref)) { + p := $CurrAddr; + havoc $CurrAddr; + assume $sge.ref.bool($sub.ref($CurrAddr, n), p); + assume $sgt.ref.bool($CurrAddr, $0.ref) && $slt.ref.bool($CurrAddr, $MALLOC_TOP); + } +} + +procedure $free(p: ref); + +const __SMACK_top_decl: ref; +axiom (__SMACK_top_decl == $sub.ref(0, 23733)); +procedure __SMACK_top_decl.ref($p0: ref); +const __SMACK_init_func_memory_model: ref; +axiom (__SMACK_init_func_memory_model == $sub.ref(0, 24765)); +procedure __SMACK_init_func_memory_model() +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1885, 3} true; + assume {:verifier.code 1} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1885, 3} true; + assume {:verifier.code 1} true; + $CurrAddr := $1024.ref; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1890, 1} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_static_init: ref; +axiom (__SMACK_static_init == $sub.ref(0, 25797)); +procedure __SMACK_static_init() +{ +$bb0: + $exn := false; + return; +} +procedure boogie_si_record_i16(x: i16); +procedure boogie_si_record_i32(x: i32); +procedure boogie_si_record_i64(x: i64); +procedure boogie_si_record_i8(x: i8); +procedure boogie_si_record_ref(x: ref); +procedure $initialize() +{ + call __SMACK_static_init(); + call __SMACK_init_func_memory_model(); + return; +} diff --git a/dartagnan/src/test/resources/miscellaneous/thread_chaining.bpl b/dartagnan/src/test/resources/miscellaneous/thread_chaining.bpl new file mode 100644 index 0000000000..ff02004f96 --- /dev/null +++ b/dartagnan/src/test/resources/miscellaneous/thread_chaining.bpl @@ -0,0 +1,16193 @@ +// generated by SMACK version 2.8.0 for corral +// via /usr/local/bin/smack -q -t --no-memory-splitting --clang-options= -bpl /Users/thomashaas/IdeaProjects/Dat3M/output/thread_chaining-opt.bpl /Users/thomashaas/IdeaProjects/Dat3M/output/thread_chaining-opt.ll + +// Basic types +type i1 = int; +type i5 = int; +type i6 = int; +type i8 = int; +type i16 = int; +type i24 = int; +type i32 = int; +type i33 = int; +type i40 = int; +type i48 = int; +type i56 = int; +type i64 = int; +type i80 = int; +type i88 = int; +type i96 = int; +type i128 = int; +type i160 = int; +type i256 = int; +type ref = i64; +type float; + +// Basic constants +const $0: i32; +axiom ($0 == 0); +const $1: i32; +axiom ($1 == 1); +const $0.ref: ref; +axiom ($0.ref == 0); +const $1.ref: ref; +axiom ($1.ref == 1); +const $1024.ref: ref; +axiom ($1024.ref == 1024); +// Memory model constants +const $GLOBALS_BOTTOM: ref; +const $EXTERNS_BOTTOM: ref; +const $MALLOC_TOP: ref; + +// Memory maps (1 regions) +var $M.0: [ref] ref; + +// Memory address bounds +axiom ($GLOBALS_BOTTOM == $sub.ref(0, 28892)); +axiom ($EXTERNS_BOTTOM == $add.ref($GLOBALS_BOTTOM, $sub.ref(0, 32768))); +axiom ($MALLOC_TOP == 9223372036854775807); +function {:inline} $isExternal(p: ref) returns (bool) { $slt.ref.bool(p, $EXTERNS_BOTTOM) } + +// SMT bit-vector/integer conversion +function {:builtin "(_ int2bv 64)"} $int2bv.64(i: i64) returns (bv64); +function {:builtin "bv2nat"} $bv2int.64(i: bv64) returns (i64); + +// Integer arithmetic operations +function {:inline} $add.i1(i1: i1, i2: i1) returns (i1) { (i1 + i2) } +function {:inline} $add.i5(i1: i5, i2: i5) returns (i5) { (i1 + i2) } +function {:inline} $add.i6(i1: i6, i2: i6) returns (i6) { (i1 + i2) } +function {:inline} $add.i8(i1: i8, i2: i8) returns (i8) { (i1 + i2) } +function {:inline} $add.i16(i1: i16, i2: i16) returns (i16) { (i1 + i2) } +function {:inline} $add.i24(i1: i24, i2: i24) returns (i24) { (i1 + i2) } +function {:inline} $add.i32(i1: i32, i2: i32) returns (i32) { (i1 + i2) } +function {:inline} $add.i33(i1: i33, i2: i33) returns (i33) { (i1 + i2) } +function {:inline} $add.i40(i1: i40, i2: i40) returns (i40) { (i1 + i2) } +function {:inline} $add.i48(i1: i48, i2: i48) returns (i48) { (i1 + i2) } +function {:inline} $add.i56(i1: i56, i2: i56) returns (i56) { (i1 + i2) } +function {:inline} $add.i64(i1: i64, i2: i64) returns (i64) { (i1 + i2) } +function {:inline} $add.i80(i1: i80, i2: i80) returns (i80) { (i1 + i2) } +function {:inline} $add.i88(i1: i88, i2: i88) returns (i88) { (i1 + i2) } +function {:inline} $add.i96(i1: i96, i2: i96) returns (i96) { (i1 + i2) } +function {:inline} $add.i128(i1: i128, i2: i128) returns (i128) { (i1 + i2) } +function {:inline} $add.i160(i1: i160, i2: i160) returns (i160) { (i1 + i2) } +function {:inline} $add.i256(i1: i256, i2: i256) returns (i256) { (i1 + i2) } +function {:inline} $sub.i1(i1: i1, i2: i1) returns (i1) { (i1 - i2) } +function {:inline} $sub.i5(i1: i5, i2: i5) returns (i5) { (i1 - i2) } +function {:inline} $sub.i6(i1: i6, i2: i6) returns (i6) { (i1 - i2) } +function {:inline} $sub.i8(i1: i8, i2: i8) returns (i8) { (i1 - i2) } +function {:inline} $sub.i16(i1: i16, i2: i16) returns (i16) { (i1 - i2) } +function {:inline} $sub.i24(i1: i24, i2: i24) returns (i24) { (i1 - i2) } +function {:inline} $sub.i32(i1: i32, i2: i32) returns (i32) { (i1 - i2) } +function {:inline} $sub.i33(i1: i33, i2: i33) returns (i33) { (i1 - i2) } +function {:inline} $sub.i40(i1: i40, i2: i40) returns (i40) { (i1 - i2) } +function {:inline} $sub.i48(i1: i48, i2: i48) returns (i48) { (i1 - i2) } +function {:inline} $sub.i56(i1: i56, i2: i56) returns (i56) { (i1 - i2) } +function {:inline} $sub.i64(i1: i64, i2: i64) returns (i64) { (i1 - i2) } +function {:inline} $sub.i80(i1: i80, i2: i80) returns (i80) { (i1 - i2) } +function {:inline} $sub.i88(i1: i88, i2: i88) returns (i88) { (i1 - i2) } +function {:inline} $sub.i96(i1: i96, i2: i96) returns (i96) { (i1 - i2) } +function {:inline} $sub.i128(i1: i128, i2: i128) returns (i128) { (i1 - i2) } +function {:inline} $sub.i160(i1: i160, i2: i160) returns (i160) { (i1 - i2) } +function {:inline} $sub.i256(i1: i256, i2: i256) returns (i256) { (i1 - i2) } +function {:inline} $mul.i1(i1: i1, i2: i1) returns (i1) { (i1 * i2) } +function {:inline} $mul.i5(i1: i5, i2: i5) returns (i5) { (i1 * i2) } +function {:inline} $mul.i6(i1: i6, i2: i6) returns (i6) { (i1 * i2) } +function {:inline} $mul.i8(i1: i8, i2: i8) returns (i8) { (i1 * i2) } +function {:inline} $mul.i16(i1: i16, i2: i16) returns (i16) { (i1 * i2) } +function {:inline} $mul.i24(i1: i24, i2: i24) returns (i24) { (i1 * i2) } +function {:inline} $mul.i32(i1: i32, i2: i32) returns (i32) { (i1 * i2) } +function {:inline} $mul.i33(i1: i33, i2: i33) returns (i33) { (i1 * i2) } +function {:inline} $mul.i40(i1: i40, i2: i40) returns (i40) { (i1 * i2) } +function {:inline} $mul.i48(i1: i48, i2: i48) returns (i48) { (i1 * i2) } +function {:inline} $mul.i56(i1: i56, i2: i56) returns (i56) { (i1 * i2) } +function {:inline} $mul.i64(i1: i64, i2: i64) returns (i64) { (i1 * i2) } +function {:inline} $mul.i80(i1: i80, i2: i80) returns (i80) { (i1 * i2) } +function {:inline} $mul.i88(i1: i88, i2: i88) returns (i88) { (i1 * i2) } +function {:inline} $mul.i96(i1: i96, i2: i96) returns (i96) { (i1 * i2) } +function {:inline} $mul.i128(i1: i128, i2: i128) returns (i128) { (i1 * i2) } +function {:inline} $mul.i160(i1: i160, i2: i160) returns (i160) { (i1 * i2) } +function {:inline} $mul.i256(i1: i256, i2: i256) returns (i256) { (i1 * i2) } +function {:builtin "div"} $idiv.i1(i1: i1, i2: i1) returns (i1); +function {:builtin "div"} $idiv.i5(i1: i5, i2: i5) returns (i5); +function {:builtin "div"} $idiv.i6(i1: i6, i2: i6) returns (i6); +function {:builtin "div"} $idiv.i8(i1: i8, i2: i8) returns (i8); +function {:builtin "div"} $idiv.i16(i1: i16, i2: i16) returns (i16); +function {:builtin "div"} $idiv.i24(i1: i24, i2: i24) returns (i24); +function {:builtin "div"} $idiv.i32(i1: i32, i2: i32) returns (i32); +function {:builtin "div"} $idiv.i33(i1: i33, i2: i33) returns (i33); +function {:builtin "div"} $idiv.i40(i1: i40, i2: i40) returns (i40); +function {:builtin "div"} $idiv.i48(i1: i48, i2: i48) returns (i48); +function {:builtin "div"} $idiv.i56(i1: i56, i2: i56) returns (i56); +function {:builtin "div"} $idiv.i64(i1: i64, i2: i64) returns (i64); +function {:builtin "div"} $idiv.i80(i1: i80, i2: i80) returns (i80); +function {:builtin "div"} $idiv.i88(i1: i88, i2: i88) returns (i88); +function {:builtin "div"} $idiv.i96(i1: i96, i2: i96) returns (i96); +function {:builtin "div"} $idiv.i128(i1: i128, i2: i128) returns (i128); +function {:builtin "div"} $idiv.i160(i1: i160, i2: i160) returns (i160); +function {:builtin "div"} $idiv.i256(i1: i256, i2: i256) returns (i256); +function {:inline} $sdiv.i1(i1: i1, i2: i1) returns (i1) { $idiv.i1(i1, i2) } +function {:inline} $sdiv.i5(i1: i5, i2: i5) returns (i5) { $idiv.i5(i1, i2) } +function {:inline} $sdiv.i6(i1: i6, i2: i6) returns (i6) { $idiv.i6(i1, i2) } +function {:inline} $sdiv.i8(i1: i8, i2: i8) returns (i8) { $idiv.i8(i1, i2) } +function {:inline} $sdiv.i16(i1: i16, i2: i16) returns (i16) { $idiv.i16(i1, i2) } +function {:inline} $sdiv.i24(i1: i24, i2: i24) returns (i24) { $idiv.i24(i1, i2) } +function {:inline} $sdiv.i32(i1: i32, i2: i32) returns (i32) { $idiv.i32(i1, i2) } +function {:inline} $sdiv.i33(i1: i33, i2: i33) returns (i33) { $idiv.i33(i1, i2) } +function {:inline} $sdiv.i40(i1: i40, i2: i40) returns (i40) { $idiv.i40(i1, i2) } +function {:inline} $sdiv.i48(i1: i48, i2: i48) returns (i48) { $idiv.i48(i1, i2) } +function {:inline} $sdiv.i56(i1: i56, i2: i56) returns (i56) { $idiv.i56(i1, i2) } +function {:inline} $sdiv.i64(i1: i64, i2: i64) returns (i64) { $idiv.i64(i1, i2) } +function {:inline} $sdiv.i80(i1: i80, i2: i80) returns (i80) { $idiv.i80(i1, i2) } +function {:inline} $sdiv.i88(i1: i88, i2: i88) returns (i88) { $idiv.i88(i1, i2) } +function {:inline} $sdiv.i96(i1: i96, i2: i96) returns (i96) { $idiv.i96(i1, i2) } +function {:inline} $sdiv.i128(i1: i128, i2: i128) returns (i128) { $idiv.i128(i1, i2) } +function {:inline} $sdiv.i160(i1: i160, i2: i160) returns (i160) { $idiv.i160(i1, i2) } +function {:inline} $sdiv.i256(i1: i256, i2: i256) returns (i256) { $idiv.i256(i1, i2) } +function {:inline} $udiv.i1(i1: i1, i2: i1) returns (i1) { $idiv.i1(i1, i2) } +function {:inline} $udiv.i5(i1: i5, i2: i5) returns (i5) { $idiv.i5(i1, i2) } +function {:inline} $udiv.i6(i1: i6, i2: i6) returns (i6) { $idiv.i6(i1, i2) } +function {:inline} $udiv.i8(i1: i8, i2: i8) returns (i8) { $idiv.i8(i1, i2) } +function {:inline} $udiv.i16(i1: i16, i2: i16) returns (i16) { $idiv.i16(i1, i2) } +function {:inline} $udiv.i24(i1: i24, i2: i24) returns (i24) { $idiv.i24(i1, i2) } +function {:inline} $udiv.i32(i1: i32, i2: i32) returns (i32) { $idiv.i32(i1, i2) } +function {:inline} $udiv.i33(i1: i33, i2: i33) returns (i33) { $idiv.i33(i1, i2) } +function {:inline} $udiv.i40(i1: i40, i2: i40) returns (i40) { $idiv.i40(i1, i2) } +function {:inline} $udiv.i48(i1: i48, i2: i48) returns (i48) { $idiv.i48(i1, i2) } +function {:inline} $udiv.i56(i1: i56, i2: i56) returns (i56) { $idiv.i56(i1, i2) } +function {:inline} $udiv.i64(i1: i64, i2: i64) returns (i64) { $idiv.i64(i1, i2) } +function {:inline} $udiv.i80(i1: i80, i2: i80) returns (i80) { $idiv.i80(i1, i2) } +function {:inline} $udiv.i88(i1: i88, i2: i88) returns (i88) { $idiv.i88(i1, i2) } +function {:inline} $udiv.i96(i1: i96, i2: i96) returns (i96) { $idiv.i96(i1, i2) } +function {:inline} $udiv.i128(i1: i128, i2: i128) returns (i128) { $idiv.i128(i1, i2) } +function {:inline} $udiv.i160(i1: i160, i2: i160) returns (i160) { $idiv.i160(i1, i2) } +function {:inline} $udiv.i256(i1: i256, i2: i256) returns (i256) { $idiv.i256(i1, i2) } +function {:builtin "mod"} $smod.i1(i1: i1, i2: i1) returns (i1); +function {:builtin "mod"} $smod.i5(i1: i5, i2: i5) returns (i5); +function {:builtin "mod"} $smod.i6(i1: i6, i2: i6) returns (i6); +function {:builtin "mod"} $smod.i8(i1: i8, i2: i8) returns (i8); +function {:builtin "mod"} $smod.i16(i1: i16, i2: i16) returns (i16); +function {:builtin "mod"} $smod.i24(i1: i24, i2: i24) returns (i24); +function {:builtin "mod"} $smod.i32(i1: i32, i2: i32) returns (i32); +function {:builtin "mod"} $smod.i33(i1: i33, i2: i33) returns (i33); +function {:builtin "mod"} $smod.i40(i1: i40, i2: i40) returns (i40); +function {:builtin "mod"} $smod.i48(i1: i48, i2: i48) returns (i48); +function {:builtin "mod"} $smod.i56(i1: i56, i2: i56) returns (i56); +function {:builtin "mod"} $smod.i64(i1: i64, i2: i64) returns (i64); +function {:builtin "mod"} $smod.i80(i1: i80, i2: i80) returns (i80); +function {:builtin "mod"} $smod.i88(i1: i88, i2: i88) returns (i88); +function {:builtin "mod"} $smod.i96(i1: i96, i2: i96) returns (i96); +function {:builtin "mod"} $smod.i128(i1: i128, i2: i128) returns (i128); +function {:builtin "mod"} $smod.i160(i1: i160, i2: i160) returns (i160); +function {:builtin "mod"} $smod.i256(i1: i256, i2: i256) returns (i256); +function {:inline} $srem.i1(i1: i1, i2: i1) returns (i1) { (if ($ne.i1.bool($smod.i1(i1, i2), 0) && $slt.i1.bool(i1, 0)) then $sub.i1($smod.i1(i1, i2), $smax.i1(i2, $sub.i1(0, i2))) else $smod.i1(i1, i2)) } +function {:inline} $srem.i5(i1: i5, i2: i5) returns (i5) { (if ($ne.i5.bool($smod.i5(i1, i2), 0) && $slt.i5.bool(i1, 0)) then $sub.i5($smod.i5(i1, i2), $smax.i5(i2, $sub.i5(0, i2))) else $smod.i5(i1, i2)) } +function {:inline} $srem.i6(i1: i6, i2: i6) returns (i6) { (if ($ne.i6.bool($smod.i6(i1, i2), 0) && $slt.i6.bool(i1, 0)) then $sub.i6($smod.i6(i1, i2), $smax.i6(i2, $sub.i6(0, i2))) else $smod.i6(i1, i2)) } +function {:inline} $srem.i8(i1: i8, i2: i8) returns (i8) { (if ($ne.i8.bool($smod.i8(i1, i2), 0) && $slt.i8.bool(i1, 0)) then $sub.i8($smod.i8(i1, i2), $smax.i8(i2, $sub.i8(0, i2))) else $smod.i8(i1, i2)) } +function {:inline} $srem.i16(i1: i16, i2: i16) returns (i16) { (if ($ne.i16.bool($smod.i16(i1, i2), 0) && $slt.i16.bool(i1, 0)) then $sub.i16($smod.i16(i1, i2), $smax.i16(i2, $sub.i16(0, i2))) else $smod.i16(i1, i2)) } +function {:inline} $srem.i24(i1: i24, i2: i24) returns (i24) { (if ($ne.i24.bool($smod.i24(i1, i2), 0) && $slt.i24.bool(i1, 0)) then $sub.i24($smod.i24(i1, i2), $smax.i24(i2, $sub.i24(0, i2))) else $smod.i24(i1, i2)) } +function {:inline} $srem.i32(i1: i32, i2: i32) returns (i32) { (if ($ne.i32.bool($smod.i32(i1, i2), 0) && $slt.i32.bool(i1, 0)) then $sub.i32($smod.i32(i1, i2), $smax.i32(i2, $sub.i32(0, i2))) else $smod.i32(i1, i2)) } +function {:inline} $srem.i33(i1: i33, i2: i33) returns (i33) { (if ($ne.i33.bool($smod.i33(i1, i2), 0) && $slt.i33.bool(i1, 0)) then $sub.i33($smod.i33(i1, i2), $smax.i33(i2, $sub.i33(0, i2))) else $smod.i33(i1, i2)) } +function {:inline} $srem.i40(i1: i40, i2: i40) returns (i40) { (if ($ne.i40.bool($smod.i40(i1, i2), 0) && $slt.i40.bool(i1, 0)) then $sub.i40($smod.i40(i1, i2), $smax.i40(i2, $sub.i40(0, i2))) else $smod.i40(i1, i2)) } +function {:inline} $srem.i48(i1: i48, i2: i48) returns (i48) { (if ($ne.i48.bool($smod.i48(i1, i2), 0) && $slt.i48.bool(i1, 0)) then $sub.i48($smod.i48(i1, i2), $smax.i48(i2, $sub.i48(0, i2))) else $smod.i48(i1, i2)) } +function {:inline} $srem.i56(i1: i56, i2: i56) returns (i56) { (if ($ne.i56.bool($smod.i56(i1, i2), 0) && $slt.i56.bool(i1, 0)) then $sub.i56($smod.i56(i1, i2), $smax.i56(i2, $sub.i56(0, i2))) else $smod.i56(i1, i2)) } +function {:inline} $srem.i64(i1: i64, i2: i64) returns (i64) { (if ($ne.i64.bool($smod.i64(i1, i2), 0) && $slt.i64.bool(i1, 0)) then $sub.i64($smod.i64(i1, i2), $smax.i64(i2, $sub.i64(0, i2))) else $smod.i64(i1, i2)) } +function {:inline} $srem.i80(i1: i80, i2: i80) returns (i80) { (if ($ne.i80.bool($smod.i80(i1, i2), 0) && $slt.i80.bool(i1, 0)) then $sub.i80($smod.i80(i1, i2), $smax.i80(i2, $sub.i80(0, i2))) else $smod.i80(i1, i2)) } +function {:inline} $srem.i88(i1: i88, i2: i88) returns (i88) { (if ($ne.i88.bool($smod.i88(i1, i2), 0) && $slt.i88.bool(i1, 0)) then $sub.i88($smod.i88(i1, i2), $smax.i88(i2, $sub.i88(0, i2))) else $smod.i88(i1, i2)) } +function {:inline} $srem.i96(i1: i96, i2: i96) returns (i96) { (if ($ne.i96.bool($smod.i96(i1, i2), 0) && $slt.i96.bool(i1, 0)) then $sub.i96($smod.i96(i1, i2), $smax.i96(i2, $sub.i96(0, i2))) else $smod.i96(i1, i2)) } +function {:inline} $srem.i128(i1: i128, i2: i128) returns (i128) { (if ($ne.i128.bool($smod.i128(i1, i2), 0) && $slt.i128.bool(i1, 0)) then $sub.i128($smod.i128(i1, i2), $smax.i128(i2, $sub.i128(0, i2))) else $smod.i128(i1, i2)) } +function {:inline} $srem.i160(i1: i160, i2: i160) returns (i160) { (if ($ne.i160.bool($smod.i160(i1, i2), 0) && $slt.i160.bool(i1, 0)) then $sub.i160($smod.i160(i1, i2), $smax.i160(i2, $sub.i160(0, i2))) else $smod.i160(i1, i2)) } +function {:inline} $srem.i256(i1: i256, i2: i256) returns (i256) { (if ($ne.i256.bool($smod.i256(i1, i2), 0) && $slt.i256.bool(i1, 0)) then $sub.i256($smod.i256(i1, i2), $smax.i256(i2, $sub.i256(0, i2))) else $smod.i256(i1, i2)) } +function {:inline} $urem.i1(i1: i1, i2: i1) returns (i1) { $smod.i1(i1, i2) } +function {:inline} $urem.i5(i1: i5, i2: i5) returns (i5) { $smod.i5(i1, i2) } +function {:inline} $urem.i6(i1: i6, i2: i6) returns (i6) { $smod.i6(i1, i2) } +function {:inline} $urem.i8(i1: i8, i2: i8) returns (i8) { $smod.i8(i1, i2) } +function {:inline} $urem.i16(i1: i16, i2: i16) returns (i16) { $smod.i16(i1, i2) } +function {:inline} $urem.i24(i1: i24, i2: i24) returns (i24) { $smod.i24(i1, i2) } +function {:inline} $urem.i32(i1: i32, i2: i32) returns (i32) { $smod.i32(i1, i2) } +function {:inline} $urem.i33(i1: i33, i2: i33) returns (i33) { $smod.i33(i1, i2) } +function {:inline} $urem.i40(i1: i40, i2: i40) returns (i40) { $smod.i40(i1, i2) } +function {:inline} $urem.i48(i1: i48, i2: i48) returns (i48) { $smod.i48(i1, i2) } +function {:inline} $urem.i56(i1: i56, i2: i56) returns (i56) { $smod.i56(i1, i2) } +function {:inline} $urem.i64(i1: i64, i2: i64) returns (i64) { $smod.i64(i1, i2) } +function {:inline} $urem.i80(i1: i80, i2: i80) returns (i80) { $smod.i80(i1, i2) } +function {:inline} $urem.i88(i1: i88, i2: i88) returns (i88) { $smod.i88(i1, i2) } +function {:inline} $urem.i96(i1: i96, i2: i96) returns (i96) { $smod.i96(i1, i2) } +function {:inline} $urem.i128(i1: i128, i2: i128) returns (i128) { $smod.i128(i1, i2) } +function {:inline} $urem.i160(i1: i160, i2: i160) returns (i160) { $smod.i160(i1, i2) } +function {:inline} $urem.i256(i1: i256, i2: i256) returns (i256) { $smod.i256(i1, i2) } +function $shl.i1(i1: i1, i2: i1) returns (i1); +function $shl.i5(i1: i5, i2: i5) returns (i5); +function $shl.i6(i1: i6, i2: i6) returns (i6); +function $shl.i8(i1: i8, i2: i8) returns (i8); +function $shl.i16(i1: i16, i2: i16) returns (i16); +function $shl.i24(i1: i24, i2: i24) returns (i24); +function $shl.i32(i1: i32, i2: i32) returns (i32); +function $shl.i33(i1: i33, i2: i33) returns (i33); +function $shl.i40(i1: i40, i2: i40) returns (i40); +function $shl.i48(i1: i48, i2: i48) returns (i48); +function $shl.i56(i1: i56, i2: i56) returns (i56); +function $shl.i64(i1: i64, i2: i64) returns (i64); +function $shl.i80(i1: i80, i2: i80) returns (i80); +function $shl.i88(i1: i88, i2: i88) returns (i88); +function $shl.i96(i1: i96, i2: i96) returns (i96); +function $shl.i128(i1: i128, i2: i128) returns (i128); +function $shl.i160(i1: i160, i2: i160) returns (i160); +function $shl.i256(i1: i256, i2: i256) returns (i256); +function $lshr.i1(i1: i1, i2: i1) returns (i1); +function $lshr.i5(i1: i5, i2: i5) returns (i5); +function $lshr.i6(i1: i6, i2: i6) returns (i6); +function $lshr.i8(i1: i8, i2: i8) returns (i8); +function $lshr.i16(i1: i16, i2: i16) returns (i16); +function $lshr.i24(i1: i24, i2: i24) returns (i24); +function $lshr.i32(i1: i32, i2: i32) returns (i32); +function $lshr.i33(i1: i33, i2: i33) returns (i33); +function $lshr.i40(i1: i40, i2: i40) returns (i40); +function $lshr.i48(i1: i48, i2: i48) returns (i48); +function $lshr.i56(i1: i56, i2: i56) returns (i56); +function $lshr.i64(i1: i64, i2: i64) returns (i64); +function $lshr.i80(i1: i80, i2: i80) returns (i80); +function $lshr.i88(i1: i88, i2: i88) returns (i88); +function $lshr.i96(i1: i96, i2: i96) returns (i96); +function $lshr.i128(i1: i128, i2: i128) returns (i128); +function $lshr.i160(i1: i160, i2: i160) returns (i160); +function $lshr.i256(i1: i256, i2: i256) returns (i256); +function $ashr.i1(i1: i1, i2: i1) returns (i1); +function $ashr.i5(i1: i5, i2: i5) returns (i5); +function $ashr.i6(i1: i6, i2: i6) returns (i6); +function $ashr.i8(i1: i8, i2: i8) returns (i8); +function $ashr.i16(i1: i16, i2: i16) returns (i16); +function $ashr.i24(i1: i24, i2: i24) returns (i24); +function $ashr.i32(i1: i32, i2: i32) returns (i32); +function $ashr.i33(i1: i33, i2: i33) returns (i33); +function $ashr.i40(i1: i40, i2: i40) returns (i40); +function $ashr.i48(i1: i48, i2: i48) returns (i48); +function $ashr.i56(i1: i56, i2: i56) returns (i56); +function $ashr.i64(i1: i64, i2: i64) returns (i64); +function $ashr.i80(i1: i80, i2: i80) returns (i80); +function $ashr.i88(i1: i88, i2: i88) returns (i88); +function $ashr.i96(i1: i96, i2: i96) returns (i96); +function $ashr.i128(i1: i128, i2: i128) returns (i128); +function $ashr.i160(i1: i160, i2: i160) returns (i160); +function $ashr.i256(i1: i256, i2: i256) returns (i256); +function $and.i1(i1: i1, i2: i1) returns (i1); +function $and.i5(i1: i5, i2: i5) returns (i5); +function $and.i6(i1: i6, i2: i6) returns (i6); +function $and.i8(i1: i8, i2: i8) returns (i8); +function $and.i16(i1: i16, i2: i16) returns (i16); +function $and.i24(i1: i24, i2: i24) returns (i24); +function $and.i32(i1: i32, i2: i32) returns (i32); +function $and.i33(i1: i33, i2: i33) returns (i33); +function $and.i40(i1: i40, i2: i40) returns (i40); +function $and.i48(i1: i48, i2: i48) returns (i48); +function $and.i56(i1: i56, i2: i56) returns (i56); +function $and.i64(i1: i64, i2: i64) returns (i64); +function $and.i80(i1: i80, i2: i80) returns (i80); +function $and.i88(i1: i88, i2: i88) returns (i88); +function $and.i96(i1: i96, i2: i96) returns (i96); +function $and.i128(i1: i128, i2: i128) returns (i128); +function $and.i160(i1: i160, i2: i160) returns (i160); +function $and.i256(i1: i256, i2: i256) returns (i256); +function $or.i1(i1: i1, i2: i1) returns (i1); +function $or.i5(i1: i5, i2: i5) returns (i5); +function $or.i6(i1: i6, i2: i6) returns (i6); +function $or.i8(i1: i8, i2: i8) returns (i8); +function $or.i16(i1: i16, i2: i16) returns (i16); +function $or.i24(i1: i24, i2: i24) returns (i24); +function $or.i32(i1: i32, i2: i32) returns (i32); +function $or.i33(i1: i33, i2: i33) returns (i33); +function $or.i40(i1: i40, i2: i40) returns (i40); +function $or.i48(i1: i48, i2: i48) returns (i48); +function $or.i56(i1: i56, i2: i56) returns (i56); +function $or.i64(i1: i64, i2: i64) returns (i64); +function $or.i80(i1: i80, i2: i80) returns (i80); +function $or.i88(i1: i88, i2: i88) returns (i88); +function $or.i96(i1: i96, i2: i96) returns (i96); +function $or.i128(i1: i128, i2: i128) returns (i128); +function $or.i160(i1: i160, i2: i160) returns (i160); +function $or.i256(i1: i256, i2: i256) returns (i256); +function $xor.i1(i1: i1, i2: i1) returns (i1); +function $xor.i5(i1: i5, i2: i5) returns (i5); +function $xor.i6(i1: i6, i2: i6) returns (i6); +function $xor.i8(i1: i8, i2: i8) returns (i8); +function $xor.i16(i1: i16, i2: i16) returns (i16); +function $xor.i24(i1: i24, i2: i24) returns (i24); +function $xor.i32(i1: i32, i2: i32) returns (i32); +function $xor.i33(i1: i33, i2: i33) returns (i33); +function $xor.i40(i1: i40, i2: i40) returns (i40); +function $xor.i48(i1: i48, i2: i48) returns (i48); +function $xor.i56(i1: i56, i2: i56) returns (i56); +function $xor.i64(i1: i64, i2: i64) returns (i64); +function $xor.i80(i1: i80, i2: i80) returns (i80); +function $xor.i88(i1: i88, i2: i88) returns (i88); +function $xor.i96(i1: i96, i2: i96) returns (i96); +function $xor.i128(i1: i128, i2: i128) returns (i128); +function $xor.i160(i1: i160, i2: i160) returns (i160); +function $xor.i256(i1: i256, i2: i256) returns (i256); +function $nand.i1(i1: i1, i2: i1) returns (i1); +function $nand.i5(i1: i5, i2: i5) returns (i5); +function $nand.i6(i1: i6, i2: i6) returns (i6); +function $nand.i8(i1: i8, i2: i8) returns (i8); +function $nand.i16(i1: i16, i2: i16) returns (i16); +function $nand.i24(i1: i24, i2: i24) returns (i24); +function $nand.i32(i1: i32, i2: i32) returns (i32); +function $nand.i33(i1: i33, i2: i33) returns (i33); +function $nand.i40(i1: i40, i2: i40) returns (i40); +function $nand.i48(i1: i48, i2: i48) returns (i48); +function $nand.i56(i1: i56, i2: i56) returns (i56); +function $nand.i64(i1: i64, i2: i64) returns (i64); +function $nand.i80(i1: i80, i2: i80) returns (i80); +function $nand.i88(i1: i88, i2: i88) returns (i88); +function $nand.i96(i1: i96, i2: i96) returns (i96); +function $nand.i128(i1: i128, i2: i128) returns (i128); +function $nand.i160(i1: i160, i2: i160) returns (i160); +function $nand.i256(i1: i256, i2: i256) returns (i256); +function $not.i1(i: i1) returns (i1); +function $not.i5(i: i5) returns (i5); +function $not.i6(i: i6) returns (i6); +function $not.i8(i: i8) returns (i8); +function $not.i16(i: i16) returns (i16); +function $not.i24(i: i24) returns (i24); +function $not.i32(i: i32) returns (i32); +function $not.i33(i: i33) returns (i33); +function $not.i40(i: i40) returns (i40); +function $not.i48(i: i48) returns (i48); +function $not.i56(i: i56) returns (i56); +function $not.i64(i: i64) returns (i64); +function $not.i80(i: i80) returns (i80); +function $not.i88(i: i88) returns (i88); +function $not.i96(i: i96) returns (i96); +function $not.i128(i: i128) returns (i128); +function $not.i160(i: i160) returns (i160); +function $not.i256(i: i256) returns (i256); +function {:inline} $smin.i1(i1: i1, i2: i1) returns (i1) { (if $slt.i1.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i5(i1: i5, i2: i5) returns (i5) { (if $slt.i5.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i6(i1: i6, i2: i6) returns (i6) { (if $slt.i6.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i8(i1: i8, i2: i8) returns (i8) { (if $slt.i8.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i16(i1: i16, i2: i16) returns (i16) { (if $slt.i16.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i24(i1: i24, i2: i24) returns (i24) { (if $slt.i24.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i32(i1: i32, i2: i32) returns (i32) { (if $slt.i32.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i33(i1: i33, i2: i33) returns (i33) { (if $slt.i33.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i40(i1: i40, i2: i40) returns (i40) { (if $slt.i40.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i48(i1: i48, i2: i48) returns (i48) { (if $slt.i48.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i56(i1: i56, i2: i56) returns (i56) { (if $slt.i56.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i64(i1: i64, i2: i64) returns (i64) { (if $slt.i64.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i80(i1: i80, i2: i80) returns (i80) { (if $slt.i80.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i88(i1: i88, i2: i88) returns (i88) { (if $slt.i88.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i96(i1: i96, i2: i96) returns (i96) { (if $slt.i96.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i128(i1: i128, i2: i128) returns (i128) { (if $slt.i128.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i160(i1: i160, i2: i160) returns (i160) { (if $slt.i160.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i256(i1: i256, i2: i256) returns (i256) { (if $slt.i256.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i1(i1: i1, i2: i1) returns (i1) { (if $sgt.i1.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i5(i1: i5, i2: i5) returns (i5) { (if $sgt.i5.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i6(i1: i6, i2: i6) returns (i6) { (if $sgt.i6.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i8(i1: i8, i2: i8) returns (i8) { (if $sgt.i8.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i16(i1: i16, i2: i16) returns (i16) { (if $sgt.i16.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i24(i1: i24, i2: i24) returns (i24) { (if $sgt.i24.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i32(i1: i32, i2: i32) returns (i32) { (if $sgt.i32.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i33(i1: i33, i2: i33) returns (i33) { (if $sgt.i33.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i40(i1: i40, i2: i40) returns (i40) { (if $sgt.i40.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i48(i1: i48, i2: i48) returns (i48) { (if $sgt.i48.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i56(i1: i56, i2: i56) returns (i56) { (if $sgt.i56.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i64(i1: i64, i2: i64) returns (i64) { (if $sgt.i64.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i80(i1: i80, i2: i80) returns (i80) { (if $sgt.i80.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i88(i1: i88, i2: i88) returns (i88) { (if $sgt.i88.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i96(i1: i96, i2: i96) returns (i96) { (if $sgt.i96.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i128(i1: i128, i2: i128) returns (i128) { (if $sgt.i128.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i160(i1: i160, i2: i160) returns (i160) { (if $sgt.i160.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i256(i1: i256, i2: i256) returns (i256) { (if $sgt.i256.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i1(i1: i1, i2: i1) returns (i1) { (if $ult.i1.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i5(i1: i5, i2: i5) returns (i5) { (if $ult.i5.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i6(i1: i6, i2: i6) returns (i6) { (if $ult.i6.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i8(i1: i8, i2: i8) returns (i8) { (if $ult.i8.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i16(i1: i16, i2: i16) returns (i16) { (if $ult.i16.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i24(i1: i24, i2: i24) returns (i24) { (if $ult.i24.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i32(i1: i32, i2: i32) returns (i32) { (if $ult.i32.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i33(i1: i33, i2: i33) returns (i33) { (if $ult.i33.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i40(i1: i40, i2: i40) returns (i40) { (if $ult.i40.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i48(i1: i48, i2: i48) returns (i48) { (if $ult.i48.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i56(i1: i56, i2: i56) returns (i56) { (if $ult.i56.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i64(i1: i64, i2: i64) returns (i64) { (if $ult.i64.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i80(i1: i80, i2: i80) returns (i80) { (if $ult.i80.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i88(i1: i88, i2: i88) returns (i88) { (if $ult.i88.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i96(i1: i96, i2: i96) returns (i96) { (if $ult.i96.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i128(i1: i128, i2: i128) returns (i128) { (if $ult.i128.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i160(i1: i160, i2: i160) returns (i160) { (if $ult.i160.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i256(i1: i256, i2: i256) returns (i256) { (if $ult.i256.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i1(i1: i1, i2: i1) returns (i1) { (if $ugt.i1.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i5(i1: i5, i2: i5) returns (i5) { (if $ugt.i5.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i6(i1: i6, i2: i6) returns (i6) { (if $ugt.i6.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i8(i1: i8, i2: i8) returns (i8) { (if $ugt.i8.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i16(i1: i16, i2: i16) returns (i16) { (if $ugt.i16.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i24(i1: i24, i2: i24) returns (i24) { (if $ugt.i24.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i32(i1: i32, i2: i32) returns (i32) { (if $ugt.i32.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i33(i1: i33, i2: i33) returns (i33) { (if $ugt.i33.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i40(i1: i40, i2: i40) returns (i40) { (if $ugt.i40.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i48(i1: i48, i2: i48) returns (i48) { (if $ugt.i48.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i56(i1: i56, i2: i56) returns (i56) { (if $ugt.i56.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i64(i1: i64, i2: i64) returns (i64) { (if $ugt.i64.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i80(i1: i80, i2: i80) returns (i80) { (if $ugt.i80.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i88(i1: i88, i2: i88) returns (i88) { (if $ugt.i88.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i96(i1: i96, i2: i96) returns (i96) { (if $ugt.i96.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i128(i1: i128, i2: i128) returns (i128) { (if $ugt.i128.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i160(i1: i160, i2: i160) returns (i160) { (if $ugt.i160.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i256(i1: i256, i2: i256) returns (i256) { (if $ugt.i256.bool(i1, i2) then i1 else i2) } +axiom ($and.i1(0, 0) == 0); +axiom ($or.i1(0, 0) == 0); +axiom ($xor.i1(0, 0) == 0); +axiom ($and.i1(0, 1) == 0); +axiom ($or.i1(0, 1) == 1); +axiom ($xor.i1(0, 1) == 1); +axiom ($and.i1(1, 0) == 0); +axiom ($or.i1(1, 0) == 1); +axiom ($xor.i1(1, 0) == 1); +axiom ($and.i1(1, 1) == 1); +axiom ($or.i1(1, 1) == 1); +axiom ($xor.i1(1, 1) == 0); +axiom ($and.i32(32, 16) == 0); +// Integer predicates +function {:inline} $ule.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i1(i1: i1, i2: i1) returns (i1) { (if $ule.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i5(i1: i5, i2: i5) returns (i1) { (if $ule.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i6(i1: i6, i2: i6) returns (i1) { (if $ule.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i8(i1: i8, i2: i8) returns (i1) { (if $ule.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i16(i1: i16, i2: i16) returns (i1) { (if $ule.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i24(i1: i24, i2: i24) returns (i1) { (if $ule.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i32(i1: i32, i2: i32) returns (i1) { (if $ule.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i33(i1: i33, i2: i33) returns (i1) { (if $ule.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i40(i1: i40, i2: i40) returns (i1) { (if $ule.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i48(i1: i48, i2: i48) returns (i1) { (if $ule.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i56(i1: i56, i2: i56) returns (i1) { (if $ule.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i64(i1: i64, i2: i64) returns (i1) { (if $ule.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i80(i1: i80, i2: i80) returns (i1) { (if $ule.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i88(i1: i88, i2: i88) returns (i1) { (if $ule.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i96(i1: i96, i2: i96) returns (i1) { (if $ule.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i128(i1: i128, i2: i128) returns (i1) { (if $ule.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i160(i1: i160, i2: i160) returns (i1) { (if $ule.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i256(i1: i256, i2: i256) returns (i1) { (if $ule.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 < i2) } +function {:inline} $ult.i1(i1: i1, i2: i1) returns (i1) { (if $ult.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 < i2) } +function {:inline} $ult.i5(i1: i5, i2: i5) returns (i1) { (if $ult.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 < i2) } +function {:inline} $ult.i6(i1: i6, i2: i6) returns (i1) { (if $ult.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 < i2) } +function {:inline} $ult.i8(i1: i8, i2: i8) returns (i1) { (if $ult.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 < i2) } +function {:inline} $ult.i16(i1: i16, i2: i16) returns (i1) { (if $ult.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 < i2) } +function {:inline} $ult.i24(i1: i24, i2: i24) returns (i1) { (if $ult.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 < i2) } +function {:inline} $ult.i32(i1: i32, i2: i32) returns (i1) { (if $ult.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 < i2) } +function {:inline} $ult.i33(i1: i33, i2: i33) returns (i1) { (if $ult.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 < i2) } +function {:inline} $ult.i40(i1: i40, i2: i40) returns (i1) { (if $ult.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 < i2) } +function {:inline} $ult.i48(i1: i48, i2: i48) returns (i1) { (if $ult.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 < i2) } +function {:inline} $ult.i56(i1: i56, i2: i56) returns (i1) { (if $ult.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 < i2) } +function {:inline} $ult.i64(i1: i64, i2: i64) returns (i1) { (if $ult.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 < i2) } +function {:inline} $ult.i80(i1: i80, i2: i80) returns (i1) { (if $ult.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 < i2) } +function {:inline} $ult.i88(i1: i88, i2: i88) returns (i1) { (if $ult.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 < i2) } +function {:inline} $ult.i96(i1: i96, i2: i96) returns (i1) { (if $ult.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 < i2) } +function {:inline} $ult.i128(i1: i128, i2: i128) returns (i1) { (if $ult.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 < i2) } +function {:inline} $ult.i160(i1: i160, i2: i160) returns (i1) { (if $ult.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 < i2) } +function {:inline} $ult.i256(i1: i256, i2: i256) returns (i1) { (if $ult.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i1(i1: i1, i2: i1) returns (i1) { (if $uge.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i5(i1: i5, i2: i5) returns (i1) { (if $uge.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i6(i1: i6, i2: i6) returns (i1) { (if $uge.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i8(i1: i8, i2: i8) returns (i1) { (if $uge.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i16(i1: i16, i2: i16) returns (i1) { (if $uge.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i24(i1: i24, i2: i24) returns (i1) { (if $uge.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i32(i1: i32, i2: i32) returns (i1) { (if $uge.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i33(i1: i33, i2: i33) returns (i1) { (if $uge.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i40(i1: i40, i2: i40) returns (i1) { (if $uge.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i48(i1: i48, i2: i48) returns (i1) { (if $uge.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i56(i1: i56, i2: i56) returns (i1) { (if $uge.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i64(i1: i64, i2: i64) returns (i1) { (if $uge.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i80(i1: i80, i2: i80) returns (i1) { (if $uge.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i88(i1: i88, i2: i88) returns (i1) { (if $uge.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i96(i1: i96, i2: i96) returns (i1) { (if $uge.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i128(i1: i128, i2: i128) returns (i1) { (if $uge.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i160(i1: i160, i2: i160) returns (i1) { (if $uge.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i256(i1: i256, i2: i256) returns (i1) { (if $uge.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i1(i1: i1, i2: i1) returns (i1) { (if $ugt.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i5(i1: i5, i2: i5) returns (i1) { (if $ugt.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i6(i1: i6, i2: i6) returns (i1) { (if $ugt.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i8(i1: i8, i2: i8) returns (i1) { (if $ugt.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i16(i1: i16, i2: i16) returns (i1) { (if $ugt.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i24(i1: i24, i2: i24) returns (i1) { (if $ugt.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i32(i1: i32, i2: i32) returns (i1) { (if $ugt.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i33(i1: i33, i2: i33) returns (i1) { (if $ugt.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i40(i1: i40, i2: i40) returns (i1) { (if $ugt.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i48(i1: i48, i2: i48) returns (i1) { (if $ugt.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i56(i1: i56, i2: i56) returns (i1) { (if $ugt.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i64(i1: i64, i2: i64) returns (i1) { (if $ugt.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i80(i1: i80, i2: i80) returns (i1) { (if $ugt.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i88(i1: i88, i2: i88) returns (i1) { (if $ugt.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i96(i1: i96, i2: i96) returns (i1) { (if $ugt.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i128(i1: i128, i2: i128) returns (i1) { (if $ugt.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i160(i1: i160, i2: i160) returns (i1) { (if $ugt.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i256(i1: i256, i2: i256) returns (i1) { (if $ugt.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i1(i1: i1, i2: i1) returns (i1) { (if $sle.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i5(i1: i5, i2: i5) returns (i1) { (if $sle.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i6(i1: i6, i2: i6) returns (i1) { (if $sle.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i8(i1: i8, i2: i8) returns (i1) { (if $sle.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i16(i1: i16, i2: i16) returns (i1) { (if $sle.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i24(i1: i24, i2: i24) returns (i1) { (if $sle.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i32(i1: i32, i2: i32) returns (i1) { (if $sle.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i33(i1: i33, i2: i33) returns (i1) { (if $sle.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i40(i1: i40, i2: i40) returns (i1) { (if $sle.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i48(i1: i48, i2: i48) returns (i1) { (if $sle.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i56(i1: i56, i2: i56) returns (i1) { (if $sle.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i64(i1: i64, i2: i64) returns (i1) { (if $sle.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i80(i1: i80, i2: i80) returns (i1) { (if $sle.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i88(i1: i88, i2: i88) returns (i1) { (if $sle.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i96(i1: i96, i2: i96) returns (i1) { (if $sle.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i128(i1: i128, i2: i128) returns (i1) { (if $sle.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i160(i1: i160, i2: i160) returns (i1) { (if $sle.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i256(i1: i256, i2: i256) returns (i1) { (if $sle.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 < i2) } +function {:inline} $slt.i1(i1: i1, i2: i1) returns (i1) { (if $slt.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 < i2) } +function {:inline} $slt.i5(i1: i5, i2: i5) returns (i1) { (if $slt.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 < i2) } +function {:inline} $slt.i6(i1: i6, i2: i6) returns (i1) { (if $slt.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 < i2) } +function {:inline} $slt.i8(i1: i8, i2: i8) returns (i1) { (if $slt.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 < i2) } +function {:inline} $slt.i16(i1: i16, i2: i16) returns (i1) { (if $slt.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 < i2) } +function {:inline} $slt.i24(i1: i24, i2: i24) returns (i1) { (if $slt.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 < i2) } +function {:inline} $slt.i32(i1: i32, i2: i32) returns (i1) { (if $slt.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 < i2) } +function {:inline} $slt.i33(i1: i33, i2: i33) returns (i1) { (if $slt.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 < i2) } +function {:inline} $slt.i40(i1: i40, i2: i40) returns (i1) { (if $slt.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 < i2) } +function {:inline} $slt.i48(i1: i48, i2: i48) returns (i1) { (if $slt.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 < i2) } +function {:inline} $slt.i56(i1: i56, i2: i56) returns (i1) { (if $slt.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 < i2) } +function {:inline} $slt.i64(i1: i64, i2: i64) returns (i1) { (if $slt.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 < i2) } +function {:inline} $slt.i80(i1: i80, i2: i80) returns (i1) { (if $slt.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 < i2) } +function {:inline} $slt.i88(i1: i88, i2: i88) returns (i1) { (if $slt.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 < i2) } +function {:inline} $slt.i96(i1: i96, i2: i96) returns (i1) { (if $slt.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 < i2) } +function {:inline} $slt.i128(i1: i128, i2: i128) returns (i1) { (if $slt.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 < i2) } +function {:inline} $slt.i160(i1: i160, i2: i160) returns (i1) { (if $slt.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 < i2) } +function {:inline} $slt.i256(i1: i256, i2: i256) returns (i1) { (if $slt.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i1(i1: i1, i2: i1) returns (i1) { (if $sge.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i5(i1: i5, i2: i5) returns (i1) { (if $sge.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i6(i1: i6, i2: i6) returns (i1) { (if $sge.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i8(i1: i8, i2: i8) returns (i1) { (if $sge.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i16(i1: i16, i2: i16) returns (i1) { (if $sge.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i24(i1: i24, i2: i24) returns (i1) { (if $sge.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i32(i1: i32, i2: i32) returns (i1) { (if $sge.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i33(i1: i33, i2: i33) returns (i1) { (if $sge.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i40(i1: i40, i2: i40) returns (i1) { (if $sge.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i48(i1: i48, i2: i48) returns (i1) { (if $sge.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i56(i1: i56, i2: i56) returns (i1) { (if $sge.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i64(i1: i64, i2: i64) returns (i1) { (if $sge.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i80(i1: i80, i2: i80) returns (i1) { (if $sge.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i88(i1: i88, i2: i88) returns (i1) { (if $sge.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i96(i1: i96, i2: i96) returns (i1) { (if $sge.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i128(i1: i128, i2: i128) returns (i1) { (if $sge.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i160(i1: i160, i2: i160) returns (i1) { (if $sge.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i256(i1: i256, i2: i256) returns (i1) { (if $sge.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i1(i1: i1, i2: i1) returns (i1) { (if $sgt.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i5(i1: i5, i2: i5) returns (i1) { (if $sgt.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i6(i1: i6, i2: i6) returns (i1) { (if $sgt.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i8(i1: i8, i2: i8) returns (i1) { (if $sgt.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i16(i1: i16, i2: i16) returns (i1) { (if $sgt.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i24(i1: i24, i2: i24) returns (i1) { (if $sgt.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i32(i1: i32, i2: i32) returns (i1) { (if $sgt.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i33(i1: i33, i2: i33) returns (i1) { (if $sgt.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i40(i1: i40, i2: i40) returns (i1) { (if $sgt.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i48(i1: i48, i2: i48) returns (i1) { (if $sgt.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i56(i1: i56, i2: i56) returns (i1) { (if $sgt.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i64(i1: i64, i2: i64) returns (i1) { (if $sgt.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i80(i1: i80, i2: i80) returns (i1) { (if $sgt.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i88(i1: i88, i2: i88) returns (i1) { (if $sgt.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i96(i1: i96, i2: i96) returns (i1) { (if $sgt.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i128(i1: i128, i2: i128) returns (i1) { (if $sgt.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i160(i1: i160, i2: i160) returns (i1) { (if $sgt.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i256(i1: i256, i2: i256) returns (i1) { (if $sgt.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 == i2) } +function {:inline} $eq.i1(i1: i1, i2: i1) returns (i1) { (if $eq.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 == i2) } +function {:inline} $eq.i5(i1: i5, i2: i5) returns (i1) { (if $eq.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 == i2) } +function {:inline} $eq.i6(i1: i6, i2: i6) returns (i1) { (if $eq.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 == i2) } +function {:inline} $eq.i8(i1: i8, i2: i8) returns (i1) { (if $eq.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 == i2) } +function {:inline} $eq.i16(i1: i16, i2: i16) returns (i1) { (if $eq.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 == i2) } +function {:inline} $eq.i24(i1: i24, i2: i24) returns (i1) { (if $eq.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 == i2) } +function {:inline} $eq.i32(i1: i32, i2: i32) returns (i1) { (if $eq.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 == i2) } +function {:inline} $eq.i33(i1: i33, i2: i33) returns (i1) { (if $eq.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 == i2) } +function {:inline} $eq.i40(i1: i40, i2: i40) returns (i1) { (if $eq.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 == i2) } +function {:inline} $eq.i48(i1: i48, i2: i48) returns (i1) { (if $eq.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 == i2) } +function {:inline} $eq.i56(i1: i56, i2: i56) returns (i1) { (if $eq.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 == i2) } +function {:inline} $eq.i64(i1: i64, i2: i64) returns (i1) { (if $eq.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 == i2) } +function {:inline} $eq.i80(i1: i80, i2: i80) returns (i1) { (if $eq.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 == i2) } +function {:inline} $eq.i88(i1: i88, i2: i88) returns (i1) { (if $eq.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 == i2) } +function {:inline} $eq.i96(i1: i96, i2: i96) returns (i1) { (if $eq.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 == i2) } +function {:inline} $eq.i128(i1: i128, i2: i128) returns (i1) { (if $eq.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 == i2) } +function {:inline} $eq.i160(i1: i160, i2: i160) returns (i1) { (if $eq.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 == i2) } +function {:inline} $eq.i256(i1: i256, i2: i256) returns (i1) { (if $eq.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 != i2) } +function {:inline} $ne.i1(i1: i1, i2: i1) returns (i1) { (if $ne.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 != i2) } +function {:inline} $ne.i5(i1: i5, i2: i5) returns (i1) { (if $ne.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 != i2) } +function {:inline} $ne.i6(i1: i6, i2: i6) returns (i1) { (if $ne.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 != i2) } +function {:inline} $ne.i8(i1: i8, i2: i8) returns (i1) { (if $ne.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 != i2) } +function {:inline} $ne.i16(i1: i16, i2: i16) returns (i1) { (if $ne.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 != i2) } +function {:inline} $ne.i24(i1: i24, i2: i24) returns (i1) { (if $ne.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 != i2) } +function {:inline} $ne.i32(i1: i32, i2: i32) returns (i1) { (if $ne.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 != i2) } +function {:inline} $ne.i33(i1: i33, i2: i33) returns (i1) { (if $ne.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 != i2) } +function {:inline} $ne.i40(i1: i40, i2: i40) returns (i1) { (if $ne.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 != i2) } +function {:inline} $ne.i48(i1: i48, i2: i48) returns (i1) { (if $ne.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 != i2) } +function {:inline} $ne.i56(i1: i56, i2: i56) returns (i1) { (if $ne.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 != i2) } +function {:inline} $ne.i64(i1: i64, i2: i64) returns (i1) { (if $ne.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 != i2) } +function {:inline} $ne.i80(i1: i80, i2: i80) returns (i1) { (if $ne.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 != i2) } +function {:inline} $ne.i88(i1: i88, i2: i88) returns (i1) { (if $ne.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 != i2) } +function {:inline} $ne.i96(i1: i96, i2: i96) returns (i1) { (if $ne.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 != i2) } +function {:inline} $ne.i128(i1: i128, i2: i128) returns (i1) { (if $ne.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 != i2) } +function {:inline} $ne.i160(i1: i160, i2: i160) returns (i1) { (if $ne.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 != i2) } +function {:inline} $ne.i256(i1: i256, i2: i256) returns (i1) { (if $ne.i256.bool(i1, i2) then 1 else 0) } +// Integer load/store operations +function {:inline} $load.i1(M: [ref] i1, p: ref) returns (i1) { M[p] } +function {:inline} $store.i1(M: [ref] i1, p: ref, i: i1) returns ([ref] i1) { M[p := i] } +function {:inline} $load.i5(M: [ref] i5, p: ref) returns (i5) { M[p] } +function {:inline} $store.i5(M: [ref] i5, p: ref, i: i5) returns ([ref] i5) { M[p := i] } +function {:inline} $load.i6(M: [ref] i6, p: ref) returns (i6) { M[p] } +function {:inline} $store.i6(M: [ref] i6, p: ref, i: i6) returns ([ref] i6) { M[p := i] } +function {:inline} $load.i8(M: [ref] i8, p: ref) returns (i8) { M[p] } +function {:inline} $store.i8(M: [ref] i8, p: ref, i: i8) returns ([ref] i8) { M[p := i] } +function {:inline} $load.i16(M: [ref] i16, p: ref) returns (i16) { M[p] } +function {:inline} $store.i16(M: [ref] i16, p: ref, i: i16) returns ([ref] i16) { M[p := i] } +function {:inline} $load.i24(M: [ref] i24, p: ref) returns (i24) { M[p] } +function {:inline} $store.i24(M: [ref] i24, p: ref, i: i24) returns ([ref] i24) { M[p := i] } +function {:inline} $load.i32(M: [ref] i32, p: ref) returns (i32) { M[p] } +function {:inline} $store.i32(M: [ref] i32, p: ref, i: i32) returns ([ref] i32) { M[p := i] } +function {:inline} $load.i33(M: [ref] i33, p: ref) returns (i33) { M[p] } +function {:inline} $store.i33(M: [ref] i33, p: ref, i: i33) returns ([ref] i33) { M[p := i] } +function {:inline} $load.i40(M: [ref] i40, p: ref) returns (i40) { M[p] } +function {:inline} $store.i40(M: [ref] i40, p: ref, i: i40) returns ([ref] i40) { M[p := i] } +function {:inline} $load.i48(M: [ref] i48, p: ref) returns (i48) { M[p] } +function {:inline} $store.i48(M: [ref] i48, p: ref, i: i48) returns ([ref] i48) { M[p := i] } +function {:inline} $load.i56(M: [ref] i56, p: ref) returns (i56) { M[p] } +function {:inline} $store.i56(M: [ref] i56, p: ref, i: i56) returns ([ref] i56) { M[p := i] } +function {:inline} $load.i64(M: [ref] i64, p: ref) returns (i64) { M[p] } +function {:inline} $store.i64(M: [ref] i64, p: ref, i: i64) returns ([ref] i64) { M[p := i] } +function {:inline} $load.i80(M: [ref] i80, p: ref) returns (i80) { M[p] } +function {:inline} $store.i80(M: [ref] i80, p: ref, i: i80) returns ([ref] i80) { M[p := i] } +function {:inline} $load.i88(M: [ref] i88, p: ref) returns (i88) { M[p] } +function {:inline} $store.i88(M: [ref] i88, p: ref, i: i88) returns ([ref] i88) { M[p := i] } +function {:inline} $load.i96(M: [ref] i96, p: ref) returns (i96) { M[p] } +function {:inline} $store.i96(M: [ref] i96, p: ref, i: i96) returns ([ref] i96) { M[p := i] } +function {:inline} $load.i128(M: [ref] i128, p: ref) returns (i128) { M[p] } +function {:inline} $store.i128(M: [ref] i128, p: ref, i: i128) returns ([ref] i128) { M[p := i] } +function {:inline} $load.i160(M: [ref] i160, p: ref) returns (i160) { M[p] } +function {:inline} $store.i160(M: [ref] i160, p: ref, i: i160) returns ([ref] i160) { M[p := i] } +function {:inline} $load.i256(M: [ref] i256, p: ref) returns (i256) { M[p] } +function {:inline} $store.i256(M: [ref] i256, p: ref, i: i256) returns ([ref] i256) { M[p := i] } +// Conversion between integer types +function {:inline} $trunc.i5.i1(i: i5) returns (i1) { i } +function {:inline} $trunc.i6.i1(i: i6) returns (i1) { i } +function {:inline} $trunc.i8.i1(i: i8) returns (i1) { i } +function {:inline} $trunc.i16.i1(i: i16) returns (i1) { i } +function {:inline} $trunc.i24.i1(i: i24) returns (i1) { i } +function {:inline} $trunc.i32.i1(i: i32) returns (i1) { i } +function {:inline} $trunc.i33.i1(i: i33) returns (i1) { i } +function {:inline} $trunc.i40.i1(i: i40) returns (i1) { i } +function {:inline} $trunc.i48.i1(i: i48) returns (i1) { i } +function {:inline} $trunc.i56.i1(i: i56) returns (i1) { i } +function {:inline} $trunc.i64.i1(i: i64) returns (i1) { i } +function {:inline} $trunc.i80.i1(i: i80) returns (i1) { i } +function {:inline} $trunc.i88.i1(i: i88) returns (i1) { i } +function {:inline} $trunc.i96.i1(i: i96) returns (i1) { i } +function {:inline} $trunc.i128.i1(i: i128) returns (i1) { i } +function {:inline} $trunc.i160.i1(i: i160) returns (i1) { i } +function {:inline} $trunc.i256.i1(i: i256) returns (i1) { i } +function {:inline} $trunc.i6.i5(i: i6) returns (i5) { i } +function {:inline} $trunc.i8.i5(i: i8) returns (i5) { i } +function {:inline} $trunc.i16.i5(i: i16) returns (i5) { i } +function {:inline} $trunc.i24.i5(i: i24) returns (i5) { i } +function {:inline} $trunc.i32.i5(i: i32) returns (i5) { i } +function {:inline} $trunc.i33.i5(i: i33) returns (i5) { i } +function {:inline} $trunc.i40.i5(i: i40) returns (i5) { i } +function {:inline} $trunc.i48.i5(i: i48) returns (i5) { i } +function {:inline} $trunc.i56.i5(i: i56) returns (i5) { i } +function {:inline} $trunc.i64.i5(i: i64) returns (i5) { i } +function {:inline} $trunc.i80.i5(i: i80) returns (i5) { i } +function {:inline} $trunc.i88.i5(i: i88) returns (i5) { i } +function {:inline} $trunc.i96.i5(i: i96) returns (i5) { i } +function {:inline} $trunc.i128.i5(i: i128) returns (i5) { i } +function {:inline} $trunc.i160.i5(i: i160) returns (i5) { i } +function {:inline} $trunc.i256.i5(i: i256) returns (i5) { i } +function {:inline} $trunc.i8.i6(i: i8) returns (i6) { i } +function {:inline} $trunc.i16.i6(i: i16) returns (i6) { i } +function {:inline} $trunc.i24.i6(i: i24) returns (i6) { i } +function {:inline} $trunc.i32.i6(i: i32) returns (i6) { i } +function {:inline} $trunc.i33.i6(i: i33) returns (i6) { i } +function {:inline} $trunc.i40.i6(i: i40) returns (i6) { i } +function {:inline} $trunc.i48.i6(i: i48) returns (i6) { i } +function {:inline} $trunc.i56.i6(i: i56) returns (i6) { i } +function {:inline} $trunc.i64.i6(i: i64) returns (i6) { i } +function {:inline} $trunc.i80.i6(i: i80) returns (i6) { i } +function {:inline} $trunc.i88.i6(i: i88) returns (i6) { i } +function {:inline} $trunc.i96.i6(i: i96) returns (i6) { i } +function {:inline} $trunc.i128.i6(i: i128) returns (i6) { i } +function {:inline} $trunc.i160.i6(i: i160) returns (i6) { i } +function {:inline} $trunc.i256.i6(i: i256) returns (i6) { i } +function {:inline} $trunc.i16.i8(i: i16) returns (i8) { i } +function {:inline} $trunc.i24.i8(i: i24) returns (i8) { i } +function {:inline} $trunc.i32.i8(i: i32) returns (i8) { i } +function {:inline} $trunc.i33.i8(i: i33) returns (i8) { i } +function {:inline} $trunc.i40.i8(i: i40) returns (i8) { i } +function {:inline} $trunc.i48.i8(i: i48) returns (i8) { i } +function {:inline} $trunc.i56.i8(i: i56) returns (i8) { i } +function {:inline} $trunc.i64.i8(i: i64) returns (i8) { i } +function {:inline} $trunc.i80.i8(i: i80) returns (i8) { i } +function {:inline} $trunc.i88.i8(i: i88) returns (i8) { i } +function {:inline} $trunc.i96.i8(i: i96) returns (i8) { i } +function {:inline} $trunc.i128.i8(i: i128) returns (i8) { i } +function {:inline} $trunc.i160.i8(i: i160) returns (i8) { i } +function {:inline} $trunc.i256.i8(i: i256) returns (i8) { i } +function {:inline} $trunc.i24.i16(i: i24) returns (i16) { i } +function {:inline} $trunc.i32.i16(i: i32) returns (i16) { i } +function {:inline} $trunc.i33.i16(i: i33) returns (i16) { i } +function {:inline} $trunc.i40.i16(i: i40) returns (i16) { i } +function {:inline} $trunc.i48.i16(i: i48) returns (i16) { i } +function {:inline} $trunc.i56.i16(i: i56) returns (i16) { i } +function {:inline} $trunc.i64.i16(i: i64) returns (i16) { i } +function {:inline} $trunc.i80.i16(i: i80) returns (i16) { i } +function {:inline} $trunc.i88.i16(i: i88) returns (i16) { i } +function {:inline} $trunc.i96.i16(i: i96) returns (i16) { i } +function {:inline} $trunc.i128.i16(i: i128) returns (i16) { i } +function {:inline} $trunc.i160.i16(i: i160) returns (i16) { i } +function {:inline} $trunc.i256.i16(i: i256) returns (i16) { i } +function {:inline} $trunc.i32.i24(i: i32) returns (i24) { i } +function {:inline} $trunc.i33.i24(i: i33) returns (i24) { i } +function {:inline} $trunc.i40.i24(i: i40) returns (i24) { i } +function {:inline} $trunc.i48.i24(i: i48) returns (i24) { i } +function {:inline} $trunc.i56.i24(i: i56) returns (i24) { i } +function {:inline} $trunc.i64.i24(i: i64) returns (i24) { i } +function {:inline} $trunc.i80.i24(i: i80) returns (i24) { i } +function {:inline} $trunc.i88.i24(i: i88) returns (i24) { i } +function {:inline} $trunc.i96.i24(i: i96) returns (i24) { i } +function {:inline} $trunc.i128.i24(i: i128) returns (i24) { i } +function {:inline} $trunc.i160.i24(i: i160) returns (i24) { i } +function {:inline} $trunc.i256.i24(i: i256) returns (i24) { i } +function {:inline} $trunc.i33.i32(i: i33) returns (i32) { i } +function {:inline} $trunc.i40.i32(i: i40) returns (i32) { i } +function {:inline} $trunc.i48.i32(i: i48) returns (i32) { i } +function {:inline} $trunc.i56.i32(i: i56) returns (i32) { i } +function {:inline} $trunc.i64.i32(i: i64) returns (i32) { i } +function {:inline} $trunc.i80.i32(i: i80) returns (i32) { i } +function {:inline} $trunc.i88.i32(i: i88) returns (i32) { i } +function {:inline} $trunc.i96.i32(i: i96) returns (i32) { i } +function {:inline} $trunc.i128.i32(i: i128) returns (i32) { i } +function {:inline} $trunc.i160.i32(i: i160) returns (i32) { i } +function {:inline} $trunc.i256.i32(i: i256) returns (i32) { i } +function {:inline} $trunc.i40.i33(i: i40) returns (i33) { i } +function {:inline} $trunc.i48.i33(i: i48) returns (i33) { i } +function {:inline} $trunc.i56.i33(i: i56) returns (i33) { i } +function {:inline} $trunc.i64.i33(i: i64) returns (i33) { i } +function {:inline} $trunc.i80.i33(i: i80) returns (i33) { i } +function {:inline} $trunc.i88.i33(i: i88) returns (i33) { i } +function {:inline} $trunc.i96.i33(i: i96) returns (i33) { i } +function {:inline} $trunc.i128.i33(i: i128) returns (i33) { i } +function {:inline} $trunc.i160.i33(i: i160) returns (i33) { i } +function {:inline} $trunc.i256.i33(i: i256) returns (i33) { i } +function {:inline} $trunc.i48.i40(i: i48) returns (i40) { i } +function {:inline} $trunc.i56.i40(i: i56) returns (i40) { i } +function {:inline} $trunc.i64.i40(i: i64) returns (i40) { i } +function {:inline} $trunc.i80.i40(i: i80) returns (i40) { i } +function {:inline} $trunc.i88.i40(i: i88) returns (i40) { i } +function {:inline} $trunc.i96.i40(i: i96) returns (i40) { i } +function {:inline} $trunc.i128.i40(i: i128) returns (i40) { i } +function {:inline} $trunc.i160.i40(i: i160) returns (i40) { i } +function {:inline} $trunc.i256.i40(i: i256) returns (i40) { i } +function {:inline} $trunc.i56.i48(i: i56) returns (i48) { i } +function {:inline} $trunc.i64.i48(i: i64) returns (i48) { i } +function {:inline} $trunc.i80.i48(i: i80) returns (i48) { i } +function {:inline} $trunc.i88.i48(i: i88) returns (i48) { i } +function {:inline} $trunc.i96.i48(i: i96) returns (i48) { i } +function {:inline} $trunc.i128.i48(i: i128) returns (i48) { i } +function {:inline} $trunc.i160.i48(i: i160) returns (i48) { i } +function {:inline} $trunc.i256.i48(i: i256) returns (i48) { i } +function {:inline} $trunc.i64.i56(i: i64) returns (i56) { i } +function {:inline} $trunc.i80.i56(i: i80) returns (i56) { i } +function {:inline} $trunc.i88.i56(i: i88) returns (i56) { i } +function {:inline} $trunc.i96.i56(i: i96) returns (i56) { i } +function {:inline} $trunc.i128.i56(i: i128) returns (i56) { i } +function {:inline} $trunc.i160.i56(i: i160) returns (i56) { i } +function {:inline} $trunc.i256.i56(i: i256) returns (i56) { i } +function {:inline} $trunc.i80.i64(i: i80) returns (i64) { i } +function {:inline} $trunc.i88.i64(i: i88) returns (i64) { i } +function {:inline} $trunc.i96.i64(i: i96) returns (i64) { i } +function {:inline} $trunc.i128.i64(i: i128) returns (i64) { i } +function {:inline} $trunc.i160.i64(i: i160) returns (i64) { i } +function {:inline} $trunc.i256.i64(i: i256) returns (i64) { i } +function {:inline} $trunc.i88.i80(i: i88) returns (i80) { i } +function {:inline} $trunc.i96.i80(i: i96) returns (i80) { i } +function {:inline} $trunc.i128.i80(i: i128) returns (i80) { i } +function {:inline} $trunc.i160.i80(i: i160) returns (i80) { i } +function {:inline} $trunc.i256.i80(i: i256) returns (i80) { i } +function {:inline} $trunc.i96.i88(i: i96) returns (i88) { i } +function {:inline} $trunc.i128.i88(i: i128) returns (i88) { i } +function {:inline} $trunc.i160.i88(i: i160) returns (i88) { i } +function {:inline} $trunc.i256.i88(i: i256) returns (i88) { i } +function {:inline} $trunc.i128.i96(i: i128) returns (i96) { i } +function {:inline} $trunc.i160.i96(i: i160) returns (i96) { i } +function {:inline} $trunc.i256.i96(i: i256) returns (i96) { i } +function {:inline} $trunc.i160.i128(i: i160) returns (i128) { i } +function {:inline} $trunc.i256.i128(i: i256) returns (i128) { i } +function {:inline} $trunc.i256.i160(i: i256) returns (i160) { i } +function {:inline} $sext.i1.i5(i: i1) returns (i5) { i } +function {:inline} $sext.i1.i6(i: i1) returns (i6) { i } +function {:inline} $sext.i1.i8(i: i1) returns (i8) { i } +function {:inline} $sext.i1.i16(i: i1) returns (i16) { i } +function {:inline} $sext.i1.i24(i: i1) returns (i24) { i } +function {:inline} $sext.i1.i32(i: i1) returns (i32) { i } +function {:inline} $sext.i1.i33(i: i1) returns (i33) { i } +function {:inline} $sext.i1.i40(i: i1) returns (i40) { i } +function {:inline} $sext.i1.i48(i: i1) returns (i48) { i } +function {:inline} $sext.i1.i56(i: i1) returns (i56) { i } +function {:inline} $sext.i1.i64(i: i1) returns (i64) { i } +function {:inline} $sext.i1.i80(i: i1) returns (i80) { i } +function {:inline} $sext.i1.i88(i: i1) returns (i88) { i } +function {:inline} $sext.i1.i96(i: i1) returns (i96) { i } +function {:inline} $sext.i1.i128(i: i1) returns (i128) { i } +function {:inline} $sext.i1.i160(i: i1) returns (i160) { i } +function {:inline} $sext.i1.i256(i: i1) returns (i256) { i } +function {:inline} $sext.i5.i6(i: i5) returns (i6) { i } +function {:inline} $sext.i5.i8(i: i5) returns (i8) { i } +function {:inline} $sext.i5.i16(i: i5) returns (i16) { i } +function {:inline} $sext.i5.i24(i: i5) returns (i24) { i } +function {:inline} $sext.i5.i32(i: i5) returns (i32) { i } +function {:inline} $sext.i5.i33(i: i5) returns (i33) { i } +function {:inline} $sext.i5.i40(i: i5) returns (i40) { i } +function {:inline} $sext.i5.i48(i: i5) returns (i48) { i } +function {:inline} $sext.i5.i56(i: i5) returns (i56) { i } +function {:inline} $sext.i5.i64(i: i5) returns (i64) { i } +function {:inline} $sext.i5.i80(i: i5) returns (i80) { i } +function {:inline} $sext.i5.i88(i: i5) returns (i88) { i } +function {:inline} $sext.i5.i96(i: i5) returns (i96) { i } +function {:inline} $sext.i5.i128(i: i5) returns (i128) { i } +function {:inline} $sext.i5.i160(i: i5) returns (i160) { i } +function {:inline} $sext.i5.i256(i: i5) returns (i256) { i } +function {:inline} $sext.i6.i8(i: i6) returns (i8) { i } +function {:inline} $sext.i6.i16(i: i6) returns (i16) { i } +function {:inline} $sext.i6.i24(i: i6) returns (i24) { i } +function {:inline} $sext.i6.i32(i: i6) returns (i32) { i } +function {:inline} $sext.i6.i33(i: i6) returns (i33) { i } +function {:inline} $sext.i6.i40(i: i6) returns (i40) { i } +function {:inline} $sext.i6.i48(i: i6) returns (i48) { i } +function {:inline} $sext.i6.i56(i: i6) returns (i56) { i } +function {:inline} $sext.i6.i64(i: i6) returns (i64) { i } +function {:inline} $sext.i6.i80(i: i6) returns (i80) { i } +function {:inline} $sext.i6.i88(i: i6) returns (i88) { i } +function {:inline} $sext.i6.i96(i: i6) returns (i96) { i } +function {:inline} $sext.i6.i128(i: i6) returns (i128) { i } +function {:inline} $sext.i6.i160(i: i6) returns (i160) { i } +function {:inline} $sext.i6.i256(i: i6) returns (i256) { i } +function {:inline} $sext.i8.i16(i: i8) returns (i16) { i } +function {:inline} $sext.i8.i24(i: i8) returns (i24) { i } +function {:inline} $sext.i8.i32(i: i8) returns (i32) { i } +function {:inline} $sext.i8.i33(i: i8) returns (i33) { i } +function {:inline} $sext.i8.i40(i: i8) returns (i40) { i } +function {:inline} $sext.i8.i48(i: i8) returns (i48) { i } +function {:inline} $sext.i8.i56(i: i8) returns (i56) { i } +function {:inline} $sext.i8.i64(i: i8) returns (i64) { i } +function {:inline} $sext.i8.i80(i: i8) returns (i80) { i } +function {:inline} $sext.i8.i88(i: i8) returns (i88) { i } +function {:inline} $sext.i8.i96(i: i8) returns (i96) { i } +function {:inline} $sext.i8.i128(i: i8) returns (i128) { i } +function {:inline} $sext.i8.i160(i: i8) returns (i160) { i } +function {:inline} $sext.i8.i256(i: i8) returns (i256) { i } +function {:inline} $sext.i16.i24(i: i16) returns (i24) { i } +function {:inline} $sext.i16.i32(i: i16) returns (i32) { i } +function {:inline} $sext.i16.i33(i: i16) returns (i33) { i } +function {:inline} $sext.i16.i40(i: i16) returns (i40) { i } +function {:inline} $sext.i16.i48(i: i16) returns (i48) { i } +function {:inline} $sext.i16.i56(i: i16) returns (i56) { i } +function {:inline} $sext.i16.i64(i: i16) returns (i64) { i } +function {:inline} $sext.i16.i80(i: i16) returns (i80) { i } +function {:inline} $sext.i16.i88(i: i16) returns (i88) { i } +function {:inline} $sext.i16.i96(i: i16) returns (i96) { i } +function {:inline} $sext.i16.i128(i: i16) returns (i128) { i } +function {:inline} $sext.i16.i160(i: i16) returns (i160) { i } +function {:inline} $sext.i16.i256(i: i16) returns (i256) { i } +function {:inline} $sext.i24.i32(i: i24) returns (i32) { i } +function {:inline} $sext.i24.i33(i: i24) returns (i33) { i } +function {:inline} $sext.i24.i40(i: i24) returns (i40) { i } +function {:inline} $sext.i24.i48(i: i24) returns (i48) { i } +function {:inline} $sext.i24.i56(i: i24) returns (i56) { i } +function {:inline} $sext.i24.i64(i: i24) returns (i64) { i } +function {:inline} $sext.i24.i80(i: i24) returns (i80) { i } +function {:inline} $sext.i24.i88(i: i24) returns (i88) { i } +function {:inline} $sext.i24.i96(i: i24) returns (i96) { i } +function {:inline} $sext.i24.i128(i: i24) returns (i128) { i } +function {:inline} $sext.i24.i160(i: i24) returns (i160) { i } +function {:inline} $sext.i24.i256(i: i24) returns (i256) { i } +function {:inline} $sext.i32.i33(i: i32) returns (i33) { i } +function {:inline} $sext.i32.i40(i: i32) returns (i40) { i } +function {:inline} $sext.i32.i48(i: i32) returns (i48) { i } +function {:inline} $sext.i32.i56(i: i32) returns (i56) { i } +function {:inline} $sext.i32.i64(i: i32) returns (i64) { i } +function {:inline} $sext.i32.i80(i: i32) returns (i80) { i } +function {:inline} $sext.i32.i88(i: i32) returns (i88) { i } +function {:inline} $sext.i32.i96(i: i32) returns (i96) { i } +function {:inline} $sext.i32.i128(i: i32) returns (i128) { i } +function {:inline} $sext.i32.i160(i: i32) returns (i160) { i } +function {:inline} $sext.i32.i256(i: i32) returns (i256) { i } +function {:inline} $sext.i33.i40(i: i33) returns (i40) { i } +function {:inline} $sext.i33.i48(i: i33) returns (i48) { i } +function {:inline} $sext.i33.i56(i: i33) returns (i56) { i } +function {:inline} $sext.i33.i64(i: i33) returns (i64) { i } +function {:inline} $sext.i33.i80(i: i33) returns (i80) { i } +function {:inline} $sext.i33.i88(i: i33) returns (i88) { i } +function {:inline} $sext.i33.i96(i: i33) returns (i96) { i } +function {:inline} $sext.i33.i128(i: i33) returns (i128) { i } +function {:inline} $sext.i33.i160(i: i33) returns (i160) { i } +function {:inline} $sext.i33.i256(i: i33) returns (i256) { i } +function {:inline} $sext.i40.i48(i: i40) returns (i48) { i } +function {:inline} $sext.i40.i56(i: i40) returns (i56) { i } +function {:inline} $sext.i40.i64(i: i40) returns (i64) { i } +function {:inline} $sext.i40.i80(i: i40) returns (i80) { i } +function {:inline} $sext.i40.i88(i: i40) returns (i88) { i } +function {:inline} $sext.i40.i96(i: i40) returns (i96) { i } +function {:inline} $sext.i40.i128(i: i40) returns (i128) { i } +function {:inline} $sext.i40.i160(i: i40) returns (i160) { i } +function {:inline} $sext.i40.i256(i: i40) returns (i256) { i } +function {:inline} $sext.i48.i56(i: i48) returns (i56) { i } +function {:inline} $sext.i48.i64(i: i48) returns (i64) { i } +function {:inline} $sext.i48.i80(i: i48) returns (i80) { i } +function {:inline} $sext.i48.i88(i: i48) returns (i88) { i } +function {:inline} $sext.i48.i96(i: i48) returns (i96) { i } +function {:inline} $sext.i48.i128(i: i48) returns (i128) { i } +function {:inline} $sext.i48.i160(i: i48) returns (i160) { i } +function {:inline} $sext.i48.i256(i: i48) returns (i256) { i } +function {:inline} $sext.i56.i64(i: i56) returns (i64) { i } +function {:inline} $sext.i56.i80(i: i56) returns (i80) { i } +function {:inline} $sext.i56.i88(i: i56) returns (i88) { i } +function {:inline} $sext.i56.i96(i: i56) returns (i96) { i } +function {:inline} $sext.i56.i128(i: i56) returns (i128) { i } +function {:inline} $sext.i56.i160(i: i56) returns (i160) { i } +function {:inline} $sext.i56.i256(i: i56) returns (i256) { i } +function {:inline} $sext.i64.i80(i: i64) returns (i80) { i } +function {:inline} $sext.i64.i88(i: i64) returns (i88) { i } +function {:inline} $sext.i64.i96(i: i64) returns (i96) { i } +function {:inline} $sext.i64.i128(i: i64) returns (i128) { i } +function {:inline} $sext.i64.i160(i: i64) returns (i160) { i } +function {:inline} $sext.i64.i256(i: i64) returns (i256) { i } +function {:inline} $sext.i80.i88(i: i80) returns (i88) { i } +function {:inline} $sext.i80.i96(i: i80) returns (i96) { i } +function {:inline} $sext.i80.i128(i: i80) returns (i128) { i } +function {:inline} $sext.i80.i160(i: i80) returns (i160) { i } +function {:inline} $sext.i80.i256(i: i80) returns (i256) { i } +function {:inline} $sext.i88.i96(i: i88) returns (i96) { i } +function {:inline} $sext.i88.i128(i: i88) returns (i128) { i } +function {:inline} $sext.i88.i160(i: i88) returns (i160) { i } +function {:inline} $sext.i88.i256(i: i88) returns (i256) { i } +function {:inline} $sext.i96.i128(i: i96) returns (i128) { i } +function {:inline} $sext.i96.i160(i: i96) returns (i160) { i } +function {:inline} $sext.i96.i256(i: i96) returns (i256) { i } +function {:inline} $sext.i128.i160(i: i128) returns (i160) { i } +function {:inline} $sext.i128.i256(i: i128) returns (i256) { i } +function {:inline} $sext.i160.i256(i: i160) returns (i256) { i } +function {:inline} $zext.i1.i5(i: i1) returns (i5) { i } +function {:inline} $zext.i1.i6(i: i1) returns (i6) { i } +function {:inline} $zext.i1.i8(i: i1) returns (i8) { i } +function {:inline} $zext.i1.i16(i: i1) returns (i16) { i } +function {:inline} $zext.i1.i24(i: i1) returns (i24) { i } +function {:inline} $zext.i1.i32(i: i1) returns (i32) { i } +function {:inline} $zext.i1.i33(i: i1) returns (i33) { i } +function {:inline} $zext.i1.i40(i: i1) returns (i40) { i } +function {:inline} $zext.i1.i48(i: i1) returns (i48) { i } +function {:inline} $zext.i1.i56(i: i1) returns (i56) { i } +function {:inline} $zext.i1.i64(i: i1) returns (i64) { i } +function {:inline} $zext.i1.i80(i: i1) returns (i80) { i } +function {:inline} $zext.i1.i88(i: i1) returns (i88) { i } +function {:inline} $zext.i1.i96(i: i1) returns (i96) { i } +function {:inline} $zext.i1.i128(i: i1) returns (i128) { i } +function {:inline} $zext.i1.i160(i: i1) returns (i160) { i } +function {:inline} $zext.i1.i256(i: i1) returns (i256) { i } +function {:inline} $zext.i5.i6(i: i5) returns (i6) { i } +function {:inline} $zext.i5.i8(i: i5) returns (i8) { i } +function {:inline} $zext.i5.i16(i: i5) returns (i16) { i } +function {:inline} $zext.i5.i24(i: i5) returns (i24) { i } +function {:inline} $zext.i5.i32(i: i5) returns (i32) { i } +function {:inline} $zext.i5.i33(i: i5) returns (i33) { i } +function {:inline} $zext.i5.i40(i: i5) returns (i40) { i } +function {:inline} $zext.i5.i48(i: i5) returns (i48) { i } +function {:inline} $zext.i5.i56(i: i5) returns (i56) { i } +function {:inline} $zext.i5.i64(i: i5) returns (i64) { i } +function {:inline} $zext.i5.i80(i: i5) returns (i80) { i } +function {:inline} $zext.i5.i88(i: i5) returns (i88) { i } +function {:inline} $zext.i5.i96(i: i5) returns (i96) { i } +function {:inline} $zext.i5.i128(i: i5) returns (i128) { i } +function {:inline} $zext.i5.i160(i: i5) returns (i160) { i } +function {:inline} $zext.i5.i256(i: i5) returns (i256) { i } +function {:inline} $zext.i6.i8(i: i6) returns (i8) { i } +function {:inline} $zext.i6.i16(i: i6) returns (i16) { i } +function {:inline} $zext.i6.i24(i: i6) returns (i24) { i } +function {:inline} $zext.i6.i32(i: i6) returns (i32) { i } +function {:inline} $zext.i6.i33(i: i6) returns (i33) { i } +function {:inline} $zext.i6.i40(i: i6) returns (i40) { i } +function {:inline} $zext.i6.i48(i: i6) returns (i48) { i } +function {:inline} $zext.i6.i56(i: i6) returns (i56) { i } +function {:inline} $zext.i6.i64(i: i6) returns (i64) { i } +function {:inline} $zext.i6.i80(i: i6) returns (i80) { i } +function {:inline} $zext.i6.i88(i: i6) returns (i88) { i } +function {:inline} $zext.i6.i96(i: i6) returns (i96) { i } +function {:inline} $zext.i6.i128(i: i6) returns (i128) { i } +function {:inline} $zext.i6.i160(i: i6) returns (i160) { i } +function {:inline} $zext.i6.i256(i: i6) returns (i256) { i } +function {:inline} $zext.i8.i16(i: i8) returns (i16) { i } +function {:inline} $zext.i8.i24(i: i8) returns (i24) { i } +function {:inline} $zext.i8.i32(i: i8) returns (i32) { i } +function {:inline} $zext.i8.i33(i: i8) returns (i33) { i } +function {:inline} $zext.i8.i40(i: i8) returns (i40) { i } +function {:inline} $zext.i8.i48(i: i8) returns (i48) { i } +function {:inline} $zext.i8.i56(i: i8) returns (i56) { i } +function {:inline} $zext.i8.i64(i: i8) returns (i64) { i } +function {:inline} $zext.i8.i80(i: i8) returns (i80) { i } +function {:inline} $zext.i8.i88(i: i8) returns (i88) { i } +function {:inline} $zext.i8.i96(i: i8) returns (i96) { i } +function {:inline} $zext.i8.i128(i: i8) returns (i128) { i } +function {:inline} $zext.i8.i160(i: i8) returns (i160) { i } +function {:inline} $zext.i8.i256(i: i8) returns (i256) { i } +function {:inline} $zext.i16.i24(i: i16) returns (i24) { i } +function {:inline} $zext.i16.i32(i: i16) returns (i32) { i } +function {:inline} $zext.i16.i33(i: i16) returns (i33) { i } +function {:inline} $zext.i16.i40(i: i16) returns (i40) { i } +function {:inline} $zext.i16.i48(i: i16) returns (i48) { i } +function {:inline} $zext.i16.i56(i: i16) returns (i56) { i } +function {:inline} $zext.i16.i64(i: i16) returns (i64) { i } +function {:inline} $zext.i16.i80(i: i16) returns (i80) { i } +function {:inline} $zext.i16.i88(i: i16) returns (i88) { i } +function {:inline} $zext.i16.i96(i: i16) returns (i96) { i } +function {:inline} $zext.i16.i128(i: i16) returns (i128) { i } +function {:inline} $zext.i16.i160(i: i16) returns (i160) { i } +function {:inline} $zext.i16.i256(i: i16) returns (i256) { i } +function {:inline} $zext.i24.i32(i: i24) returns (i32) { i } +function {:inline} $zext.i24.i33(i: i24) returns (i33) { i } +function {:inline} $zext.i24.i40(i: i24) returns (i40) { i } +function {:inline} $zext.i24.i48(i: i24) returns (i48) { i } +function {:inline} $zext.i24.i56(i: i24) returns (i56) { i } +function {:inline} $zext.i24.i64(i: i24) returns (i64) { i } +function {:inline} $zext.i24.i80(i: i24) returns (i80) { i } +function {:inline} $zext.i24.i88(i: i24) returns (i88) { i } +function {:inline} $zext.i24.i96(i: i24) returns (i96) { i } +function {:inline} $zext.i24.i128(i: i24) returns (i128) { i } +function {:inline} $zext.i24.i160(i: i24) returns (i160) { i } +function {:inline} $zext.i24.i256(i: i24) returns (i256) { i } +function {:inline} $zext.i32.i33(i: i32) returns (i33) { i } +function {:inline} $zext.i32.i40(i: i32) returns (i40) { i } +function {:inline} $zext.i32.i48(i: i32) returns (i48) { i } +function {:inline} $zext.i32.i56(i: i32) returns (i56) { i } +function {:inline} $zext.i32.i64(i: i32) returns (i64) { i } +function {:inline} $zext.i32.i80(i: i32) returns (i80) { i } +function {:inline} $zext.i32.i88(i: i32) returns (i88) { i } +function {:inline} $zext.i32.i96(i: i32) returns (i96) { i } +function {:inline} $zext.i32.i128(i: i32) returns (i128) { i } +function {:inline} $zext.i32.i160(i: i32) returns (i160) { i } +function {:inline} $zext.i32.i256(i: i32) returns (i256) { i } +function {:inline} $zext.i33.i40(i: i33) returns (i40) { i } +function {:inline} $zext.i33.i48(i: i33) returns (i48) { i } +function {:inline} $zext.i33.i56(i: i33) returns (i56) { i } +function {:inline} $zext.i33.i64(i: i33) returns (i64) { i } +function {:inline} $zext.i33.i80(i: i33) returns (i80) { i } +function {:inline} $zext.i33.i88(i: i33) returns (i88) { i } +function {:inline} $zext.i33.i96(i: i33) returns (i96) { i } +function {:inline} $zext.i33.i128(i: i33) returns (i128) { i } +function {:inline} $zext.i33.i160(i: i33) returns (i160) { i } +function {:inline} $zext.i33.i256(i: i33) returns (i256) { i } +function {:inline} $zext.i40.i48(i: i40) returns (i48) { i } +function {:inline} $zext.i40.i56(i: i40) returns (i56) { i } +function {:inline} $zext.i40.i64(i: i40) returns (i64) { i } +function {:inline} $zext.i40.i80(i: i40) returns (i80) { i } +function {:inline} $zext.i40.i88(i: i40) returns (i88) { i } +function {:inline} $zext.i40.i96(i: i40) returns (i96) { i } +function {:inline} $zext.i40.i128(i: i40) returns (i128) { i } +function {:inline} $zext.i40.i160(i: i40) returns (i160) { i } +function {:inline} $zext.i40.i256(i: i40) returns (i256) { i } +function {:inline} $zext.i48.i56(i: i48) returns (i56) { i } +function {:inline} $zext.i48.i64(i: i48) returns (i64) { i } +function {:inline} $zext.i48.i80(i: i48) returns (i80) { i } +function {:inline} $zext.i48.i88(i: i48) returns (i88) { i } +function {:inline} $zext.i48.i96(i: i48) returns (i96) { i } +function {:inline} $zext.i48.i128(i: i48) returns (i128) { i } +function {:inline} $zext.i48.i160(i: i48) returns (i160) { i } +function {:inline} $zext.i48.i256(i: i48) returns (i256) { i } +function {:inline} $zext.i56.i64(i: i56) returns (i64) { i } +function {:inline} $zext.i56.i80(i: i56) returns (i80) { i } +function {:inline} $zext.i56.i88(i: i56) returns (i88) { i } +function {:inline} $zext.i56.i96(i: i56) returns (i96) { i } +function {:inline} $zext.i56.i128(i: i56) returns (i128) { i } +function {:inline} $zext.i56.i160(i: i56) returns (i160) { i } +function {:inline} $zext.i56.i256(i: i56) returns (i256) { i } +function {:inline} $zext.i64.i80(i: i64) returns (i80) { i } +function {:inline} $zext.i64.i88(i: i64) returns (i88) { i } +function {:inline} $zext.i64.i96(i: i64) returns (i96) { i } +function {:inline} $zext.i64.i128(i: i64) returns (i128) { i } +function {:inline} $zext.i64.i160(i: i64) returns (i160) { i } +function {:inline} $zext.i64.i256(i: i64) returns (i256) { i } +function {:inline} $zext.i80.i88(i: i80) returns (i88) { i } +function {:inline} $zext.i80.i96(i: i80) returns (i96) { i } +function {:inline} $zext.i80.i128(i: i80) returns (i128) { i } +function {:inline} $zext.i80.i160(i: i80) returns (i160) { i } +function {:inline} $zext.i80.i256(i: i80) returns (i256) { i } +function {:inline} $zext.i88.i96(i: i88) returns (i96) { i } +function {:inline} $zext.i88.i128(i: i88) returns (i128) { i } +function {:inline} $zext.i88.i160(i: i88) returns (i160) { i } +function {:inline} $zext.i88.i256(i: i88) returns (i256) { i } +function {:inline} $zext.i96.i128(i: i96) returns (i128) { i } +function {:inline} $zext.i96.i160(i: i96) returns (i160) { i } +function {:inline} $zext.i96.i256(i: i96) returns (i256) { i } +function {:inline} $zext.i128.i160(i: i128) returns (i160) { i } +function {:inline} $zext.i128.i256(i: i128) returns (i256) { i } +function {:inline} $zext.i160.i256(i: i160) returns (i256) { i } +function $extractvalue.i1(p: ref, i: int) returns (i1); +function $extractvalue.i5(p: ref, i: int) returns (i5); +function $extractvalue.i6(p: ref, i: int) returns (i6); +function $extractvalue.i8(p: ref, i: int) returns (i8); +function $extractvalue.i16(p: ref, i: int) returns (i16); +function $extractvalue.i24(p: ref, i: int) returns (i24); +function $extractvalue.i32(p: ref, i: int) returns (i32); +function $extractvalue.i33(p: ref, i: int) returns (i33); +function $extractvalue.i40(p: ref, i: int) returns (i40); +function $extractvalue.i48(p: ref, i: int) returns (i48); +function $extractvalue.i56(p: ref, i: int) returns (i56); +function $extractvalue.i64(p: ref, i: int) returns (i64); +function $extractvalue.i80(p: ref, i: int) returns (i80); +function $extractvalue.i88(p: ref, i: int) returns (i88); +function $extractvalue.i96(p: ref, i: int) returns (i96); +function $extractvalue.i128(p: ref, i: int) returns (i128); +function $extractvalue.i160(p: ref, i: int) returns (i160); +function $extractvalue.i256(p: ref, i: int) returns (i256); +// Pointer arithmetic operations +function {:inline} $add.ref(p1: ref, p2: ref) returns (ref) { $add.i64(p1, p2) } +function {:inline} $sub.ref(p1: ref, p2: ref) returns (ref) { $sub.i64(p1, p2) } +function {:inline} $mul.ref(p1: ref, p2: ref) returns (ref) { $mul.i64(p1, p2) } + +// Pointer predicates +function {:inline} $eq.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 == p2) } +function {:inline} $eq.ref(p1: ref, p2: ref) returns (i1) { (if $eq.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $ne.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 != p2) } +function {:inline} $ne.ref(p1: ref, p2: ref) returns (i1) { (if $ne.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $ugt.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 > p2) } +function {:inline} $ugt.ref(p1: ref, p2: ref) returns (i1) { (if $ugt.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $uge.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 >= p2) } +function {:inline} $uge.ref(p1: ref, p2: ref) returns (i1) { (if $uge.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $ult.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 < p2) } +function {:inline} $ult.ref(p1: ref, p2: ref) returns (i1) { (if $ult.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $ule.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 <= p2) } +function {:inline} $ule.ref(p1: ref, p2: ref) returns (i1) { (if $ule.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $sgt.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 > p2) } +function {:inline} $sgt.ref(p1: ref, p2: ref) returns (i1) { (if $sgt.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $sge.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 >= p2) } +function {:inline} $sge.ref(p1: ref, p2: ref) returns (i1) { (if $sge.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $slt.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 < p2) } +function {:inline} $slt.ref(p1: ref, p2: ref) returns (i1) { (if $slt.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $sle.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 <= p2) } +function {:inline} $sle.ref(p1: ref, p2: ref) returns (i1) { (if $sle.ref.bool(p1, p2) then 1 else 0) } + +// Pointer load/store operations +function {:inline} $load.ref(M: [ref] ref, p: ref) returns (ref) { M[p] } +function {:inline} $store.ref(M: [ref] ref, p: ref, i: ref) returns ([ref] ref) { M[p := i] } + +// Pointer conversion +function {:inline} $bitcast.ref.ref(p: ref) returns (ref) { p } +function $extractvalue.ref(p: ref, i: int) returns (ref); +// Pointer-number conversion +function {:inline} $p2i.ref.i8(p: ref) returns (i8) { $trunc.i64.i8(p) } +function {:inline} $i2p.i8.ref(i: i8) returns (ref) { $zext.i8.i64(i) } +function {:inline} $p2i.ref.i16(p: ref) returns (i16) { $trunc.i64.i16(p) } +function {:inline} $i2p.i16.ref(i: i16) returns (ref) { $zext.i16.i64(i) } +function {:inline} $p2i.ref.i32(p: ref) returns (i32) { $trunc.i64.i32(p) } +function {:inline} $i2p.i32.ref(i: i32) returns (ref) { $zext.i32.i64(i) } +function {:inline} $p2i.ref.i64(p: ref) returns (i64) { p } +function {:inline} $i2p.i64.ref(i: i64) returns (ref) { i } + +function $fp(ipart: int, fpart: int, epart: int) returns (float); +// Floating-point arithmetic operations +function $abs.float(f: float) returns (float); +function $round.float(f: float) returns (float); +function $sqrt.float(f: float) returns (float); +function $fadd.float(f1: float, f2: float) returns (float); +function $fsub.float(f1: float, f2: float) returns (float); +function $fmul.float(f1: float, f2: float) returns (float); +function $fdiv.float(f1: float, f2: float) returns (float); +function $frem.float(f1: float, f2: float) returns (float); +function $min.float(f1: float, f2: float) returns (float); +function $max.float(f1: float, f2: float) returns (float); +function $fma.float(f1: float, f2: float, f3: float) returns (float); +function $fneg.float(f: float) returns (float); +// Floating-point predicates +function $foeq.float.bool(f1: float, f2: float) returns (bool); +function $fole.float.bool(f1: float, f2: float) returns (bool); +function $folt.float.bool(f1: float, f2: float) returns (bool); +function $foge.float.bool(f1: float, f2: float) returns (bool); +function $fogt.float.bool(f1: float, f2: float) returns (bool); +function $fone.float.bool(f1: float, f2: float) returns (bool); +function $ford.float.bool(f1: float, f2: float) returns (bool); +function $fueq.float.bool(f1: float, f2: float) returns (bool); +function $fugt.float.bool(f1: float, f2: float) returns (bool); +function $fuge.float.bool(f1: float, f2: float) returns (bool); +function $fult.float.bool(f1: float, f2: float) returns (bool); +function $fule.float.bool(f1: float, f2: float) returns (bool); +function $fune.float.bool(f1: float, f2: float) returns (bool); +function $funo.float.bool(f1: float, f2: float) returns (bool); +function $ffalse.float.bool(f1: float, f2: float) returns (bool); +function $ftrue.float.bool(f1: float, f2: float) returns (bool); +// Floating-point/integer conversion +function $bitcast.float.i8(f: float) returns (i8); +function $bitcast.float.i16(f: float) returns (i16); +function $bitcast.float.i32(f: float) returns (i32); +function $bitcast.float.i64(f: float) returns (i64); +function $bitcast.float.i80(f: float) returns (i80); +function $bitcast.i8.float(i: i8) returns (float); +function $bitcast.i16.float(i: i16) returns (float); +function $bitcast.i32.float(i: i32) returns (float); +function $bitcast.i64.float(i: i64) returns (float); +function $bitcast.i80.float(i: i80) returns (float); +function $fp2si.float.i1(f: float) returns (i1); +function $fp2si.float.i5(f: float) returns (i5); +function $fp2si.float.i6(f: float) returns (i6); +function $fp2si.float.i8(f: float) returns (i8); +function $fp2si.float.i16(f: float) returns (i16); +function $fp2si.float.i24(f: float) returns (i24); +function $fp2si.float.i32(f: float) returns (i32); +function $fp2si.float.i33(f: float) returns (i33); +function $fp2si.float.i40(f: float) returns (i40); +function $fp2si.float.i48(f: float) returns (i48); +function $fp2si.float.i56(f: float) returns (i56); +function $fp2si.float.i64(f: float) returns (i64); +function $fp2si.float.i80(f: float) returns (i80); +function $fp2si.float.i88(f: float) returns (i88); +function $fp2si.float.i96(f: float) returns (i96); +function $fp2si.float.i128(f: float) returns (i128); +function $fp2si.float.i160(f: float) returns (i160); +function $fp2si.float.i256(f: float) returns (i256); +function $fp2ui.float.i1(f: float) returns (i1); +function $fp2ui.float.i5(f: float) returns (i5); +function $fp2ui.float.i6(f: float) returns (i6); +function $fp2ui.float.i8(f: float) returns (i8); +function $fp2ui.float.i16(f: float) returns (i16); +function $fp2ui.float.i24(f: float) returns (i24); +function $fp2ui.float.i32(f: float) returns (i32); +function $fp2ui.float.i33(f: float) returns (i33); +function $fp2ui.float.i40(f: float) returns (i40); +function $fp2ui.float.i48(f: float) returns (i48); +function $fp2ui.float.i56(f: float) returns (i56); +function $fp2ui.float.i64(f: float) returns (i64); +function $fp2ui.float.i80(f: float) returns (i80); +function $fp2ui.float.i88(f: float) returns (i88); +function $fp2ui.float.i96(f: float) returns (i96); +function $fp2ui.float.i128(f: float) returns (i128); +function $fp2ui.float.i160(f: float) returns (i160); +function $fp2ui.float.i256(f: float) returns (i256); +function $si2fp.i1.float(i: i1) returns (float); +function $si2fp.i5.float(i: i5) returns (float); +function $si2fp.i6.float(i: i6) returns (float); +function $si2fp.i8.float(i: i8) returns (float); +function $si2fp.i16.float(i: i16) returns (float); +function $si2fp.i24.float(i: i24) returns (float); +function $si2fp.i32.float(i: i32) returns (float); +function $si2fp.i33.float(i: i33) returns (float); +function $si2fp.i40.float(i: i40) returns (float); +function $si2fp.i48.float(i: i48) returns (float); +function $si2fp.i56.float(i: i56) returns (float); +function $si2fp.i64.float(i: i64) returns (float); +function $si2fp.i80.float(i: i80) returns (float); +function $si2fp.i88.float(i: i88) returns (float); +function $si2fp.i96.float(i: i96) returns (float); +function $si2fp.i128.float(i: i128) returns (float); +function $si2fp.i160.float(i: i160) returns (float); +function $si2fp.i256.float(i: i256) returns (float); +function $ui2fp.i1.float(i: i1) returns (float); +function $ui2fp.i5.float(i: i5) returns (float); +function $ui2fp.i6.float(i: i6) returns (float); +function $ui2fp.i8.float(i: i8) returns (float); +function $ui2fp.i16.float(i: i16) returns (float); +function $ui2fp.i24.float(i: i24) returns (float); +function $ui2fp.i32.float(i: i32) returns (float); +function $ui2fp.i33.float(i: i33) returns (float); +function $ui2fp.i40.float(i: i40) returns (float); +function $ui2fp.i48.float(i: i48) returns (float); +function $ui2fp.i56.float(i: i56) returns (float); +function $ui2fp.i64.float(i: i64) returns (float); +function $ui2fp.i80.float(i: i80) returns (float); +function $ui2fp.i88.float(i: i88) returns (float); +function $ui2fp.i96.float(i: i96) returns (float); +function $ui2fp.i128.float(i: i128) returns (float); +function $ui2fp.i160.float(i: i160) returns (float); +function $ui2fp.i256.float(i: i256) returns (float); +// Floating-point conversion +function $fpext.float.float(f: float) returns (float); +function $fptrunc.float.float(f: float) returns (float); +// Floating-point load/store operations +function {:inline} $load.float(M: [ref] float, p: ref) returns (float) { M[p] } +function {:inline} $store.float(M: [ref] float, p: ref, f: float) returns ([ref] float) { M[p := f] } +function {:inline} $load.unsafe.float(M: [ref] i8, p: ref) returns (float) { $bitcast.i8.float(M[p]) } +function {:inline} $store.unsafe.float(M: [ref] i8, p: ref, f: float) returns ([ref] i8) { M[p := $bitcast.float.i8(f)] } +function $extractvalue.float(p: ref, i: int) returns (float); +const {:allocSize 4} data: ref; +axiom (data == $sub.ref(0, 1028)); +const thread2: ref; +axiom (thread2 == $sub.ref(0, 2060)); +procedure thread2($p0: ref) + returns ($r: ref) +{ + var $i1: i32; +$bb0: + assume {:sourceloc "benchmarks/c/miscellaneous/thread_chaining.c", 14, 11} true; + assume {:verifier.code 0} true; + assume {:sourceloc "benchmarks/c/miscellaneous/thread_chaining.c", 14, 11} true; + assume {:verifier.code 0} true; + $i1 := $p2i.ref.i32($p0); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_chaining.c", 15, 1} true; + assume {:verifier.code 0} true; + call __llvm_atomic32_store(data, $i1, 5); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_chaining.c", 15, 1} true; + assume {:verifier.code 0} true; + $r := $u0; + $exn := false; + return; +} +const llvm.dbg.value: ref; +axiom (llvm.dbg.value == $sub.ref(0, 3092)); +procedure llvm.dbg.value($p0: ref, $p1: ref, $p2: ref); +const __llvm_atomic32_store: ref; +axiom (__llvm_atomic32_store == $sub.ref(0, 4124)); +procedure __llvm_atomic32_store($p0: ref, $i1: i32, $i2: i32); +const thread1: ref; +axiom (thread1 == $sub.ref(0, 5156)); +procedure thread1($p0: ref) + returns ($r: ref) +{ + var $p1: ref; + var $i2: i32; + var $p3: ref; + var $i4: i32; +$bb0: + assume {:sourceloc "benchmarks/c/miscellaneous/thread_chaining.c", 20, 5} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + call $p1 := $alloc($mul.ref(8, $zext.i32.i64(1))); + assume true; + assume {:sourceloc "benchmarks/c/miscellaneous/thread_chaining.c", 20, 5} true; + assume {:verifier.code 0} true; + call $i2 := pthread_create($p1, $0.ref, thread2, $p0); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_chaining.c", 21, 18} true; + assume {:verifier.code 0} true; + $p3 := $load.ref($M.0, $p1); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_chaining.c", 21, 5} true; + assume {:verifier.code 0} true; + call $i4 := __pthread_join($p3, $0.ref); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_chaining.c", 22, 1} true; + assume {:verifier.code 0} true; + $r := $u0; + $exn := false; + return; +} +const llvm.dbg.declare: ref; +axiom (llvm.dbg.declare == $sub.ref(0, 6188)); +procedure llvm.dbg.declare($p0: ref, $p1: ref, $p2: ref); +const pthread_create: ref; +axiom (pthread_create == $sub.ref(0, 7220)); +procedure pthread_create($p0: ref, $p1: ref, $p2: ref, $p3: ref) + returns ($r: i32); +const __pthread_join: ref; +axiom (__pthread_join == $sub.ref(0, 8252)); +procedure __pthread_join($p0: ref, $p1: ref) + returns ($r: i32); +const main: ref; +axiom (main == $sub.ref(0, 9284)); +procedure {:entrypoint} main() + returns ($r: i32) +{ + var $p0: ref; + var $i1: i32; + var $p2: ref; + var $i3: i32; + var $i4: i32; + var $i5: i1; + var $i6: i32; + var $i7: i32; +$bb0: + call $initialize(); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_chaining.c", 27, 5} true; + assume {:verifier.code 0} true; + call {:cexpr "smack:entry:main"} boogie_si_record_ref(main); + assume {:verifier.code 0} true; + call $p0 := $alloc($mul.ref(8, $zext.i32.i64(1))); + assume true; + assume {:sourceloc "benchmarks/c/miscellaneous/thread_chaining.c", 27, 5} true; + assume {:verifier.code 0} true; + call $i1 := pthread_create($p0, $0.ref, thread1, $i2p.i64.ref(42)); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_chaining.c", 28, 18} true; + assume {:verifier.code 0} true; + $p2 := $load.ref($M.0, $p0); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_chaining.c", 28, 5} true; + assume {:verifier.code 0} true; + call $i3 := __pthread_join($p2, $0.ref); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_chaining.c", 30, 17} true; + assume {:verifier.code 0} true; + call $i4 := __llvm_atomic32_load(data, 5); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_chaining.c", 30, 17} true; + assume {:verifier.code 0} true; + $i5 := $eq.i32($i4, 42); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_chaining.c", 30, 17} true; + assume {:verifier.code 0} true; + $i6 := $zext.i1.i32($i5); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_chaining.c", 30, 5} true; + assume {:verifier.code 0} true; + call $i7 := assert_.i32($i6); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_chaining.c", 31, 1} true; + assume {:verifier.code 0} true; + $r := 0; + $exn := false; + return; +} +const __llvm_atomic32_load: ref; +axiom (__llvm_atomic32_load == $sub.ref(0, 10316)); +procedure __llvm_atomic32_load($p0: ref, $i1: i32) + returns ($r: i32); +const assert_: ref; +axiom (assert_ == $sub.ref(0, 11348)); +procedure assert_.i32(p.0: i32) + returns ($r: i32); +const __SMACK_code: ref; +axiom (__SMACK_code == $sub.ref(0, 12380)); +procedure __SMACK_code.ref($p0: ref); +procedure __SMACK_code.ref.i32($p0: ref, p.1: i32); +const __VERIFIER_assume: ref; +axiom (__VERIFIER_assume == $sub.ref(0, 13412)); +procedure __VERIFIER_assume($i0: i32) +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + call {:cexpr "__VERIFIER_assume:arg:x"} boogie_si_record_i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + assume true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 45, 3} true; + assume {:verifier.code 1} true; + assume $i0 != $0; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 46, 1} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_dummy: ref; +axiom (__SMACK_dummy == $sub.ref(0, 14444)); +procedure __SMACK_dummy($i0: i32) +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_dummy:arg:v"} boogie_si_record_i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + assume true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 59} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_and32: ref; +axiom (__SMACK_and32 == $sub.ref(0, 15476)); +procedure __SMACK_and32($i0: i32, $i1: i32) + returns ($r: i32) +{ + var $i2: i32; + var $i3: i1; + var $i5: i1; + var $i6: i1; + var $i8: i32; + var $i7: i32; + var $i4: i32; + var $i9: i64; + var $i10: i64; + var $i11: i32; + var $i12: i32; + var $i13: i64; + var $i14: i64; + var $i15: i32; + var $i16: i32; + var $i17: i32; + var $i18: i1; + var $i20: i1; + var $i21: i1; + var $i23: i32; + var $i22: i32; + var $i19: i32; + var $i24: i64; + var $i25: i64; + var $i26: i32; + var $i27: i32; + var $i28: i64; + var $i29: i64; + var $i30: i32; + var $i31: i32; + var $i32: i32; + var $i33: i1; + var $i35: i1; + var $i36: i1; + var $i38: i32; + var $i37: i32; + var $i34: i32; + var $i39: i64; + var $i40: i64; + var $i41: i32; + var $i42: i32; + var $i43: i64; + var $i44: i64; + var $i45: i32; + var $i46: i32; + var $i47: i32; + var $i48: i1; + var $i50: i1; + var $i51: i1; + var $i53: i32; + var $i52: i32; + var $i49: i32; + var $i54: i64; + var $i55: i64; + var $i56: i32; + var $i57: i32; + var $i58: i64; + var $i59: i64; + var $i60: i32; + var $i61: i32; + var $i62: i32; + var $i63: i1; + var $i65: i1; + var $i66: i1; + var $i68: i32; + var $i67: i32; + var $i64: i32; + var $i69: i64; + var $i70: i64; + var $i71: i32; + var $i72: i32; + var $i73: i64; + var $i74: i64; + var $i75: i32; + var $i76: i32; + var $i77: i32; + var $i78: i1; + var $i80: i1; + var $i81: i1; + var $i83: i32; + var $i82: i32; + var $i79: i32; + var $i84: i64; + var $i85: i64; + var $i86: i32; + var $i87: i32; + var $i88: i64; + var $i89: i64; + var $i90: i32; + var $i91: i32; + var $i92: i32; + var $i93: i1; + var $i95: i1; + var $i96: i1; + var $i98: i32; + var $i97: i32; + var $i94: i32; + var $i99: i64; + var $i100: i64; + var $i101: i32; + var $i102: i32; + var $i103: i64; + var $i104: i64; + var $i105: i32; + var $i106: i32; + var $i107: i32; + var $i108: i1; + var $i110: i1; + var $i111: i1; + var $i113: i32; + var $i112: i32; + var $i109: i32; + var $i114: i64; + var $i115: i64; + var $i116: i32; + var $i117: i32; + var $i118: i64; + var $i119: i64; + var $i120: i32; + var $i121: i32; + var $i122: i32; + var $i123: i1; + var $i125: i1; + var $i126: i1; + var $i128: i32; + var $i127: i32; + var $i124: i32; + var $i129: i64; + var $i130: i64; + var $i131: i32; + var $i132: i32; + var $i133: i64; + var $i134: i64; + var $i135: i32; + var $i136: i32; + var $i137: i32; + var $i138: i1; + var $i140: i1; + var $i141: i1; + var $i143: i32; + var $i142: i32; + var $i139: i32; + var $i144: i64; + var $i145: i64; + var $i146: i32; + var $i147: i32; + var $i148: i64; + var $i149: i64; + var $i150: i32; + var $i151: i32; + var $i152: i32; + var $i153: i1; + var $i155: i1; + var $i156: i1; + var $i158: i32; + var $i157: i32; + var $i154: i32; + var $i159: i64; + var $i160: i64; + var $i161: i32; + var $i162: i32; + var $i163: i64; + var $i164: i64; + var $i165: i32; + var $i166: i32; + var $i167: i32; + var $i168: i1; + var $i170: i1; + var $i171: i1; + var $i173: i32; + var $i172: i32; + var $i169: i32; + var $i174: i64; + var $i175: i64; + var $i176: i32; + var $i177: i32; + var $i178: i64; + var $i179: i64; + var $i180: i32; + var $i181: i32; + var $i182: i32; + var $i183: i1; + var $i185: i1; + var $i186: i1; + var $i188: i32; + var $i187: i32; + var $i184: i32; + var $i189: i64; + var $i190: i64; + var $i191: i32; + var $i192: i32; + var $i193: i64; + var $i194: i64; + var $i195: i32; + var $i196: i32; + var $i197: i32; + var $i198: i1; + var $i200: i1; + var $i201: i1; + var $i203: i32; + var $i202: i32; + var $i199: i32; + var $i204: i64; + var $i205: i64; + var $i206: i32; + var $i207: i32; + var $i208: i64; + var $i209: i64; + var $i210: i32; + var $i211: i32; + var $i212: i32; + var $i213: i1; + var $i215: i1; + var $i216: i1; + var $i218: i32; + var $i217: i32; + var $i214: i32; + var $i219: i64; + var $i220: i64; + var $i221: i32; + var $i222: i32; + var $i223: i64; + var $i224: i64; + var $i225: i32; + var $i226: i32; + var $i227: i32; + var $i228: i1; + var $i230: i1; + var $i231: i1; + var $i233: i32; + var $i232: i32; + var $i229: i32; + var $i234: i64; + var $i235: i64; + var $i236: i32; + var $i237: i32; + var $i238: i64; + var $i239: i64; + var $i240: i32; + var $i241: i32; + var $i242: i32; + var $i243: i1; + var $i245: i1; + var $i246: i1; + var $i248: i32; + var $i247: i32; + var $i244: i32; + var $i249: i64; + var $i250: i64; + var $i251: i32; + var $i252: i32; + var $i253: i64; + var $i254: i64; + var $i255: i32; + var $i256: i32; + var $i257: i32; + var $i258: i1; + var $i260: i1; + var $i261: i1; + var $i263: i32; + var $i262: i32; + var $i259: i32; + var $i264: i64; + var $i265: i64; + var $i266: i32; + var $i267: i32; + var $i268: i64; + var $i269: i64; + var $i270: i32; + var $i271: i32; + var $i272: i32; + var $i273: i1; + var $i275: i1; + var $i276: i1; + var $i278: i32; + var $i277: i32; + var $i274: i32; + var $i279: i64; + var $i280: i64; + var $i281: i32; + var $i282: i32; + var $i283: i64; + var $i284: i64; + var $i285: i32; + var $i286: i32; + var $i287: i32; + var $i288: i1; + var $i290: i1; + var $i291: i1; + var $i293: i32; + var $i292: i32; + var $i289: i32; + var $i294: i64; + var $i295: i64; + var $i296: i32; + var $i297: i32; + var $i298: i64; + var $i299: i64; + var $i300: i32; + var $i301: i32; + var $i302: i32; + var $i303: i1; + var $i305: i1; + var $i306: i1; + var $i308: i32; + var $i307: i32; + var $i304: i32; + var $i309: i64; + var $i310: i64; + var $i311: i32; + var $i312: i32; + var $i313: i64; + var $i314: i64; + var $i315: i32; + var $i316: i32; + var $i317: i32; + var $i318: i1; + var $i320: i1; + var $i321: i1; + var $i323: i32; + var $i322: i32; + var $i319: i32; + var $i324: i64; + var $i325: i64; + var $i326: i32; + var $i327: i32; + var $i328: i64; + var $i329: i64; + var $i330: i32; + var $i331: i32; + var $i332: i32; + var $i333: i1; + var $i335: i1; + var $i336: i1; + var $i338: i32; + var $i337: i32; + var $i334: i32; + var $i339: i64; + var $i340: i64; + var $i341: i32; + var $i342: i32; + var $i343: i64; + var $i344: i64; + var $i345: i32; + var $i346: i32; + var $i347: i32; + var $i348: i1; + var $i350: i1; + var $i351: i1; + var $i353: i32; + var $i352: i32; + var $i349: i32; + var $i354: i64; + var $i355: i64; + var $i356: i32; + var $i357: i32; + var $i358: i64; + var $i359: i64; + var $i360: i32; + var $i361: i32; + var $i362: i32; + var $i363: i1; + var $i365: i1; + var $i366: i1; + var $i368: i32; + var $i367: i32; + var $i364: i32; + var $i369: i64; + var $i370: i64; + var $i371: i32; + var $i372: i32; + var $i373: i64; + var $i374: i64; + var $i375: i32; + var $i376: i32; + var $i377: i32; + var $i378: i1; + var $i380: i1; + var $i381: i1; + var $i383: i32; + var $i382: i32; + var $i379: i32; + var $i384: i64; + var $i385: i64; + var $i386: i32; + var $i387: i32; + var $i388: i64; + var $i389: i64; + var $i390: i32; + var $i391: i32; + var $i392: i32; + var $i393: i1; + var $i395: i1; + var $i396: i1; + var $i398: i32; + var $i397: i32; + var $i394: i32; + var $i399: i64; + var $i400: i64; + var $i401: i32; + var $i402: i32; + var $i403: i64; + var $i404: i64; + var $i405: i32; + var $i406: i32; + var $i407: i32; + var $i408: i1; + var $i410: i1; + var $i411: i1; + var $i413: i32; + var $i412: i32; + var $i409: i32; + var $i414: i64; + var $i415: i64; + var $i416: i32; + var $i417: i32; + var $i418: i64; + var $i419: i64; + var $i420: i32; + var $i421: i32; + var $i422: i32; + var $i423: i1; + var $i425: i1; + var $i426: i1; + var $i428: i32; + var $i427: i32; + var $i424: i32; + var $i429: i64; + var $i430: i64; + var $i431: i32; + var $i432: i32; + var $i433: i64; + var $i434: i64; + var $i435: i32; + var $i436: i32; + var $i437: i32; + var $i438: i1; + var $i440: i1; + var $i441: i1; + var $i443: i32; + var $i442: i32; + var $i439: i32; + var $i444: i64; + var $i445: i64; + var $i446: i32; + var $i447: i32; + var $i448: i64; + var $i449: i64; + var $i450: i32; + var $i451: i32; + var $i452: i32; + var $i453: i1; + var $i455: i1; + var $i456: i1; + var $i458: i32; + var $i457: i32; + var $i454: i32; + var $i459: i64; + var $i460: i64; + var $i461: i32; + var $i462: i32; + var $i463: i64; + var $i464: i64; + var $i465: i32; + var $i466: i32; + var $i467: i32; + var $i468: i1; + var $i470: i1; + var $i471: i1; + var $i473: i32; + var $i472: i32; + var $i469: i32; + var $i474: i64; + var $i475: i64; + var $i476: i32; + var $i477: i32; + var $i478: i64; + var $i479: i64; + var $i480: i32; + var $i481: i32; + var $i482: i32; + var $i483: i1; + var $i485: i1; + var $i486: i1; + var $i488: i32; + var $i487: i32; + var $i484: i32; + var $i489: i64; + var $i490: i64; + var $i491: i32; + var $i492: i32; + var $i493: i64; + var $i494: i64; + var $i495: i32; + var $i496: i32; + var $i497: i32; + var $i498: i1; + var $i500: i1; + var $i501: i1; + var $i503: i32; + var $i502: i32; + var $i499: i32; + var $i504: i64; + var $i505: i64; + var $i506: i32; + var $i507: i32; + var $i508: i64; + var $i509: i64; + var $i510: i32; + var $i511: i32; + var $i512: i32; + var $i513: i1; + var $i515: i1; + var $i516: i1; + var $i518: i32; + var $i517: i32; + var $i514: i32; + var $i519: i64; + var $i520: i64; + var $i521: i32; + var $i522: i32; + var $i523: i64; + var $i524: i64; + var $i525: i32; + var $i526: i32; + var $i527: i32; + var $i528: i1; + var $i530: i1; + var $i531: i1; + var $i533: i32; + var $i532: i32; + var $i529: i32; + var $i534: i64; + var $i535: i64; + var $i536: i32; + var $i537: i32; + var $i538: i64; + var $i539: i64; + var $i540: i32; + var $i541: i32; + var $i542: i32; + var $i543: i1; + var $i545: i1; + var $i546: i1; + var $i548: i32; + var $i547: i32; + var $i544: i32; + var $i549: i64; + var $i550: i64; + var $i551: i32; + var $i552: i32; + var $i553: i64; + var $i554: i64; + var $i555: i32; + var $i556: i32; + var $i557: i32; + var $i558: i1; + var $i560: i1; + var $i561: i1; + var $i563: i32; + var $i562: i32; + var $i559: i32; + var $i564: i64; + var $i565: i64; + var $i566: i32; + var $i567: i32; + var $i568: i64; + var $i569: i64; + var $i570: i32; + var $i571: i32; + var $i572: i32; + var $i573: i1; + var $i575: i1; + var $i576: i1; + var $i578: i32; + var $i577: i32; + var $i574: i32; + var $i579: i64; + var $i580: i64; + var $i581: i32; + var $i582: i32; + var $i583: i64; + var $i584: i64; + var $i585: i32; + var $i586: i32; + var $i587: i32; + var $i588: i1; + var $i590: i1; + var $i591: i1; + var $i593: i32; + var $i592: i32; + var $i589: i32; + var $i594: i64; + var $i595: i64; + var $i596: i32; + var $i597: i32; + var $i598: i64; + var $i599: i64; + var $i600: i32; + var $i601: i32; + var $i602: i32; + var $i603: i1; + var $i605: i1; + var $i606: i1; + var $i608: i32; + var $i607: i32; + var $i604: i32; + var $i609: i64; + var $i610: i64; + var $i611: i32; + var $i612: i32; + var $i613: i64; + var $i614: i64; + var $i615: i32; + var $i616: i32; + var $i617: i32; + var $i618: i1; + var $i620: i1; + var $i621: i1; + var $i623: i32; + var $i622: i32; + var $i619: i32; + var $i624: i64; + var $i625: i64; + var $i626: i32; + var $i627: i32; + var $i628: i64; + var $i629: i64; + var $i630: i32; + var $i631: i32; + var $i632: i32; + var $i633: i1; + var $i635: i1; + var $i636: i1; + var $i638: i32; + var $i637: i32; + var $i634: i32; + var $i639: i64; + var $i640: i64; + var $i641: i32; + var $i642: i32; + var $i643: i64; + var $i644: i64; + var $i645: i32; + var $i646: i32; + var $i647: i32; + var $i648: i1; + var $i650: i1; + var $i651: i1; + var $i653: i32; + var $i652: i32; + var $i649: i32; + var $i654: i64; + var $i655: i64; + var $i656: i32; + var $i657: i32; + var $i658: i64; + var $i659: i64; + var $i660: i32; + var $i661: i32; + var $i662: i32; + var $i663: i1; + var $i665: i1; + var $i666: i1; + var $i668: i32; + var $i667: i32; + var $i664: i32; + var $i669: i64; + var $i670: i64; + var $i671: i32; + var $i672: i32; + var $i673: i64; + var $i674: i64; + var $i675: i32; + var $i676: i32; + var $i677: i32; + var $i678: i1; + var $i680: i1; + var $i681: i1; + var $i683: i32; + var $i682: i32; + var $i679: i32; + var $i684: i64; + var $i685: i64; + var $i686: i32; + var $i687: i32; + var $i688: i64; + var $i689: i64; + var $i690: i32; + var $i691: i32; + var $i692: i32; + var $i693: i1; + var $i695: i1; + var $i696: i1; + var $i698: i32; + var $i697: i32; + var $i694: i32; + var $i699: i64; + var $i700: i64; + var $i701: i32; + var $i702: i32; + var $i703: i64; + var $i704: i64; + var $i705: i32; + var $i706: i32; + var $i707: i32; + var $i708: i1; + var $i710: i1; + var $i711: i1; + var $i713: i32; + var $i712: i32; + var $i709: i32; + var $i714: i64; + var $i715: i64; + var $i716: i32; + var $i717: i32; + var $i718: i64; + var $i719: i64; + var $i720: i32; + var $i721: i32; + var $i722: i32; + var $i723: i1; + var $i725: i1; + var $i726: i1; + var $i728: i32; + var $i727: i32; + var $i724: i32; + var $i729: i64; + var $i730: i64; + var $i731: i32; + var $i732: i32; + var $i733: i64; + var $i734: i64; + var $i735: i32; + var $i736: i32; + var $i737: i32; + var $i738: i1; + var $i740: i1; + var $i741: i1; + var $i743: i32; + var $i742: i32; + var $i739: i32; + var $i744: i64; + var $i745: i64; + var $i746: i32; + var $i747: i32; + var $i748: i64; + var $i749: i64; + var $i750: i32; + var $i751: i32; + var $i752: i32; + var $i753: i1; + var $i755: i1; + var $i756: i1; + var $i758: i32; + var $i757: i32; + var $i754: i32; + var $i759: i64; + var $i760: i64; + var $i761: i32; + var $i762: i32; + var $i763: i64; + var $i764: i64; + var $i765: i32; + var $i766: i32; + var $i767: i32; + var $i768: i1; + var $i770: i1; + var $i771: i1; + var $i773: i32; + var $i772: i32; + var $i769: i32; + var $i774: i64; + var $i775: i64; + var $i776: i32; + var $i777: i32; + var $i778: i64; + var $i779: i64; + var $i780: i32; + var $i781: i32; + var $i782: i32; + var $i783: i1; + var $i785: i1; + var $i786: i1; + var $i788: i32; + var $i787: i32; + var $i784: i32; + var $i789: i64; + var $i790: i64; + var $i791: i32; + var $i792: i32; + var $i793: i64; + var $i794: i64; + var $i795: i32; + var $i796: i32; + var $i797: i32; + var $i798: i1; + var $i800: i1; + var $i801: i1; + var $i803: i32; + var $i802: i32; + var $i799: i32; + var $i804: i64; + var $i805: i64; + var $i806: i32; + var $i807: i32; + var $i808: i64; + var $i809: i64; + var $i810: i32; + var $i811: i32; + var $i812: i32; + var $i813: i1; + var $i815: i1; + var $i816: i1; + var $i818: i32; + var $i817: i32; + var $i814: i32; + var $i819: i64; + var $i820: i64; + var $i821: i32; + var $i822: i32; + var $i823: i64; + var $i824: i64; + var $i825: i32; + var $i826: i32; + var $i827: i32; + var $i828: i1; + var $i830: i1; + var $i831: i1; + var $i833: i32; + var $i832: i32; + var $i829: i32; + var $i834: i64; + var $i835: i64; + var $i836: i32; + var $i837: i32; + var $i838: i64; + var $i839: i64; + var $i840: i32; + var $i841: i32; + var $i842: i32; + var $i843: i1; + var $i845: i1; + var $i846: i1; + var $i848: i32; + var $i847: i32; + var $i844: i32; + var $i849: i64; + var $i850: i64; + var $i851: i32; + var $i852: i32; + var $i853: i64; + var $i854: i64; + var $i855: i32; + var $i856: i32; + var $i857: i32; + var $i858: i1; + var $i860: i1; + var $i861: i1; + var $i863: i32; + var $i862: i32; + var $i859: i32; + var $i864: i64; + var $i865: i64; + var $i866: i32; + var $i867: i32; + var $i868: i64; + var $i869: i64; + var $i870: i32; + var $i871: i32; + var $i872: i32; + var $i873: i1; + var $i875: i1; + var $i876: i1; + var $i878: i32; + var $i877: i32; + var $i874: i32; + var $i879: i64; + var $i880: i64; + var $i881: i32; + var $i882: i32; + var $i883: i64; + var $i884: i64; + var $i885: i32; + var $i886: i32; + var $i887: i32; + var $i888: i1; + var $i890: i1; + var $i891: i1; + var $i893: i32; + var $i892: i32; + var $i889: i32; + var $i894: i64; + var $i895: i64; + var $i896: i32; + var $i897: i32; + var $i898: i64; + var $i899: i64; + var $i900: i32; + var $i901: i32; + var $i902: i32; + var $i903: i1; + var $i905: i1; + var $i906: i1; + var $i908: i32; + var $i907: i32; + var $i904: i32; + var $i909: i64; + var $i910: i64; + var $i911: i32; + var $i912: i32; + var $i913: i64; + var $i914: i64; + var $i915: i32; + var $i916: i32; + var $i917: i32; + var $i918: i1; + var $i920: i1; + var $i921: i1; + var $i923: i32; + var $i922: i32; + var $i919: i32; + var $i924: i64; + var $i925: i64; + var $i926: i32; + var $i927: i32; + var $i928: i64; + var $i929: i64; + var $i930: i32; + var $i931: i32; + var $i932: i32; + var $i933: i1; + var $i935: i1; + var $i936: i1; + var $i938: i32; + var $i937: i32; + var $i934: i32; + var $i939: i64; + var $i940: i64; + var $i941: i32; + var $i942: i32; + var $i943: i64; + var $i944: i64; + var $i945: i32; + var $i946: i32; + var $i947: i32; + var $i948: i1; + var $i950: i1; + var $i951: i1; + var $i953: i32; + var $i952: i32; + var $i949: i32; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 60, 5} true; + assume {:verifier.code 0} true; + call {:cexpr "__SMACK_and32:arg:a"} boogie_si_record_i32($i0); + call {:cexpr "__SMACK_and32:arg:b"} boogie_si_record_i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 60, 5} true; + assume {:verifier.code 0} true; + $i2 := $add.i32(0, 0); + call {:cexpr "c"} boogie_si_record_i32($i2); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 61, 9} true; + assume {:verifier.code 0} true; + $i3 := $slt.i32($i0, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 61, 7} true; + assume {:verifier.code 0} true; + $i4 := $i2; + assume {:branchcond $i3} true; + goto $bb1, $bb2; +$bb1: + assume ($i3 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 11} true; + assume {:verifier.code 0} true; + $i5 := $slt.i32($i1, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i5} true; + goto $bb4, $bb6; +$bb2: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 61, 7} true; + assume {:verifier.code 0} true; + assume !(($i3 == 1)); + goto $bb3; +$bb3: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 66, 7} true; + assume {:verifier.code 0} true; + $i9 := $sext.i32.i64($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 66, 9} true; + assume {:verifier.code 0} true; + $i10 := $srem.i64($i9, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 66, 7} true; + assume {:verifier.code 0} true; + $i11 := $trunc.i64.i32($i10); + call {:cexpr "a"} boogie_si_record_i32($i11); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 67, 5} true; + assume {:verifier.code 0} true; + $i12 := $add.i32($i11, $i11); + call {:cexpr "a"} boogie_si_record_i32($i12); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 68, 7} true; + assume {:verifier.code 0} true; + $i13 := $sext.i32.i64($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 68, 9} true; + assume {:verifier.code 0} true; + $i14 := $srem.i64($i13, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 68, 7} true; + assume {:verifier.code 0} true; + $i15 := $trunc.i64.i32($i14); + call {:cexpr "b"} boogie_si_record_i32($i15); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 69, 5} true; + assume {:verifier.code 0} true; + $i16 := $add.i32($i15, $i15); + call {:cexpr "b"} boogie_si_record_i32($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 71, 5} true; + assume {:verifier.code 0} true; + $i17 := $add.i32($i4, $i4); + call {:cexpr "c"} boogie_si_record_i32($i17); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 72, 9} true; + assume {:verifier.code 0} true; + $i18 := $slt.i32($i12, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 72, 7} true; + assume {:verifier.code 0} true; + $i19 := $i17; + assume {:branchcond $i18} true; + goto $bb10, $bb11; +$bb4: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 15} true; + assume {:verifier.code 0} true; + assume ($i5 == 1); + goto $bb5; +$bb5: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 63, 9} true; + assume {:verifier.code 0} true; + $i8 := $add.i32($i2, 1); + call {:cexpr "c"} boogie_si_record_i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 64, 5} true; + assume {:verifier.code 0} true; + $i7 := $i8; + goto $bb9; +$bb6: + assume !(($i5 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 20} true; + assume {:verifier.code 0} true; + $i6 := $sgt.i32($i1, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 9} true; + assume {:verifier.code 0} true; + $i7 := $i2; + assume {:branchcond $i6} true; + goto $bb7, $bb8; +$bb7: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 9} true; + assume {:verifier.code 0} true; + assume ($i6 == 1); + goto $bb5; +$bb8: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 9} true; + assume {:verifier.code 0} true; + assume !(($i6 == 1)); + goto $bb9; +$bb9: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 65, 3} true; + assume {:verifier.code 0} true; + $i4 := $i7; + goto $bb3; +$bb10: + assume ($i18 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 11} true; + assume {:verifier.code 0} true; + $i20 := $slt.i32($i16, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i20} true; + goto $bb13, $bb15; +$bb11: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 72, 7} true; + assume {:verifier.code 0} true; + assume !(($i18 == 1)); + goto $bb12; +$bb12: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 77, 7} true; + assume {:verifier.code 0} true; + $i24 := $sext.i32.i64($i12); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 77, 9} true; + assume {:verifier.code 0} true; + $i25 := $srem.i64($i24, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 77, 7} true; + assume {:verifier.code 0} true; + $i26 := $trunc.i64.i32($i25); + call {:cexpr "a"} boogie_si_record_i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 78, 5} true; + assume {:verifier.code 0} true; + $i27 := $add.i32($i26, $i26); + call {:cexpr "a"} boogie_si_record_i32($i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 79, 7} true; + assume {:verifier.code 0} true; + $i28 := $sext.i32.i64($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 79, 9} true; + assume {:verifier.code 0} true; + $i29 := $srem.i64($i28, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 79, 7} true; + assume {:verifier.code 0} true; + $i30 := $trunc.i64.i32($i29); + call {:cexpr "b"} boogie_si_record_i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 80, 5} true; + assume {:verifier.code 0} true; + $i31 := $add.i32($i30, $i30); + call {:cexpr "b"} boogie_si_record_i32($i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 82, 5} true; + assume {:verifier.code 0} true; + $i32 := $add.i32($i19, $i19); + call {:cexpr "c"} boogie_si_record_i32($i32); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 83, 9} true; + assume {:verifier.code 0} true; + $i33 := $slt.i32($i27, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 83, 7} true; + assume {:verifier.code 0} true; + $i34 := $i32; + assume {:branchcond $i33} true; + goto $bb19, $bb20; +$bb13: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 15} true; + assume {:verifier.code 0} true; + assume ($i20 == 1); + goto $bb14; +$bb14: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 74, 9} true; + assume {:verifier.code 0} true; + $i23 := $add.i32($i17, 1); + call {:cexpr "c"} boogie_si_record_i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 75, 5} true; + assume {:verifier.code 0} true; + $i22 := $i23; + goto $bb18; +$bb15: + assume !(($i20 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 20} true; + assume {:verifier.code 0} true; + $i21 := $sgt.i32($i16, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 9} true; + assume {:verifier.code 0} true; + $i22 := $i17; + assume {:branchcond $i21} true; + goto $bb16, $bb17; +$bb16: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 9} true; + assume {:verifier.code 0} true; + assume ($i21 == 1); + goto $bb14; +$bb17: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 9} true; + assume {:verifier.code 0} true; + assume !(($i21 == 1)); + goto $bb18; +$bb18: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 76, 3} true; + assume {:verifier.code 0} true; + $i19 := $i22; + goto $bb12; +$bb19: + assume ($i33 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 11} true; + assume {:verifier.code 0} true; + $i35 := $slt.i32($i31, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i35} true; + goto $bb22, $bb24; +$bb20: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 83, 7} true; + assume {:verifier.code 0} true; + assume !(($i33 == 1)); + goto $bb21; +$bb21: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 88, 7} true; + assume {:verifier.code 0} true; + $i39 := $sext.i32.i64($i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 88, 9} true; + assume {:verifier.code 0} true; + $i40 := $srem.i64($i39, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 88, 7} true; + assume {:verifier.code 0} true; + $i41 := $trunc.i64.i32($i40); + call {:cexpr "a"} boogie_si_record_i32($i41); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 89, 5} true; + assume {:verifier.code 0} true; + $i42 := $add.i32($i41, $i41); + call {:cexpr "a"} boogie_si_record_i32($i42); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 90, 7} true; + assume {:verifier.code 0} true; + $i43 := $sext.i32.i64($i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 90, 9} true; + assume {:verifier.code 0} true; + $i44 := $srem.i64($i43, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 90, 7} true; + assume {:verifier.code 0} true; + $i45 := $trunc.i64.i32($i44); + call {:cexpr "b"} boogie_si_record_i32($i45); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 91, 5} true; + assume {:verifier.code 0} true; + $i46 := $add.i32($i45, $i45); + call {:cexpr "b"} boogie_si_record_i32($i46); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 93, 5} true; + assume {:verifier.code 0} true; + $i47 := $add.i32($i34, $i34); + call {:cexpr "c"} boogie_si_record_i32($i47); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 94, 9} true; + assume {:verifier.code 0} true; + $i48 := $slt.i32($i42, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 94, 7} true; + assume {:verifier.code 0} true; + $i49 := $i47; + assume {:branchcond $i48} true; + goto $bb28, $bb29; +$bb22: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 15} true; + assume {:verifier.code 0} true; + assume ($i35 == 1); + goto $bb23; +$bb23: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 85, 9} true; + assume {:verifier.code 0} true; + $i38 := $add.i32($i32, 1); + call {:cexpr "c"} boogie_si_record_i32($i38); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 86, 5} true; + assume {:verifier.code 0} true; + $i37 := $i38; + goto $bb27; +$bb24: + assume !(($i35 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 20} true; + assume {:verifier.code 0} true; + $i36 := $sgt.i32($i31, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 9} true; + assume {:verifier.code 0} true; + $i37 := $i32; + assume {:branchcond $i36} true; + goto $bb25, $bb26; +$bb25: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 9} true; + assume {:verifier.code 0} true; + assume ($i36 == 1); + goto $bb23; +$bb26: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 9} true; + assume {:verifier.code 0} true; + assume !(($i36 == 1)); + goto $bb27; +$bb27: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 87, 3} true; + assume {:verifier.code 0} true; + $i34 := $i37; + goto $bb21; +$bb28: + assume ($i48 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 11} true; + assume {:verifier.code 0} true; + $i50 := $slt.i32($i46, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i50} true; + goto $bb31, $bb33; +$bb29: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 94, 7} true; + assume {:verifier.code 0} true; + assume !(($i48 == 1)); + goto $bb30; +$bb30: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 99, 7} true; + assume {:verifier.code 0} true; + $i54 := $sext.i32.i64($i42); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 99, 9} true; + assume {:verifier.code 0} true; + $i55 := $srem.i64($i54, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 99, 7} true; + assume {:verifier.code 0} true; + $i56 := $trunc.i64.i32($i55); + call {:cexpr "a"} boogie_si_record_i32($i56); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 100, 5} true; + assume {:verifier.code 0} true; + $i57 := $add.i32($i56, $i56); + call {:cexpr "a"} boogie_si_record_i32($i57); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 101, 7} true; + assume {:verifier.code 0} true; + $i58 := $sext.i32.i64($i46); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 101, 9} true; + assume {:verifier.code 0} true; + $i59 := $srem.i64($i58, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 101, 7} true; + assume {:verifier.code 0} true; + $i60 := $trunc.i64.i32($i59); + call {:cexpr "b"} boogie_si_record_i32($i60); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 102, 5} true; + assume {:verifier.code 0} true; + $i61 := $add.i32($i60, $i60); + call {:cexpr "b"} boogie_si_record_i32($i61); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 104, 5} true; + assume {:verifier.code 0} true; + $i62 := $add.i32($i49, $i49); + call {:cexpr "c"} boogie_si_record_i32($i62); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 105, 9} true; + assume {:verifier.code 0} true; + $i63 := $slt.i32($i57, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 105, 7} true; + assume {:verifier.code 0} true; + $i64 := $i62; + assume {:branchcond $i63} true; + goto $bb37, $bb38; +$bb31: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 15} true; + assume {:verifier.code 0} true; + assume ($i50 == 1); + goto $bb32; +$bb32: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 96, 9} true; + assume {:verifier.code 0} true; + $i53 := $add.i32($i47, 1); + call {:cexpr "c"} boogie_si_record_i32($i53); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 97, 5} true; + assume {:verifier.code 0} true; + $i52 := $i53; + goto $bb36; +$bb33: + assume !(($i50 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 20} true; + assume {:verifier.code 0} true; + $i51 := $sgt.i32($i46, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 9} true; + assume {:verifier.code 0} true; + $i52 := $i47; + assume {:branchcond $i51} true; + goto $bb34, $bb35; +$bb34: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 9} true; + assume {:verifier.code 0} true; + assume ($i51 == 1); + goto $bb32; +$bb35: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 9} true; + assume {:verifier.code 0} true; + assume !(($i51 == 1)); + goto $bb36; +$bb36: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 98, 3} true; + assume {:verifier.code 0} true; + $i49 := $i52; + goto $bb30; +$bb37: + assume ($i63 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 11} true; + assume {:verifier.code 0} true; + $i65 := $slt.i32($i61, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i65} true; + goto $bb40, $bb42; +$bb38: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 105, 7} true; + assume {:verifier.code 0} true; + assume !(($i63 == 1)); + goto $bb39; +$bb39: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 110, 7} true; + assume {:verifier.code 0} true; + $i69 := $sext.i32.i64($i57); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 110, 9} true; + assume {:verifier.code 0} true; + $i70 := $srem.i64($i69, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 110, 7} true; + assume {:verifier.code 0} true; + $i71 := $trunc.i64.i32($i70); + call {:cexpr "a"} boogie_si_record_i32($i71); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 111, 5} true; + assume {:verifier.code 0} true; + $i72 := $add.i32($i71, $i71); + call {:cexpr "a"} boogie_si_record_i32($i72); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 112, 7} true; + assume {:verifier.code 0} true; + $i73 := $sext.i32.i64($i61); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 112, 9} true; + assume {:verifier.code 0} true; + $i74 := $srem.i64($i73, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 112, 7} true; + assume {:verifier.code 0} true; + $i75 := $trunc.i64.i32($i74); + call {:cexpr "b"} boogie_si_record_i32($i75); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 113, 5} true; + assume {:verifier.code 0} true; + $i76 := $add.i32($i75, $i75); + call {:cexpr "b"} boogie_si_record_i32($i76); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 115, 5} true; + assume {:verifier.code 0} true; + $i77 := $add.i32($i64, $i64); + call {:cexpr "c"} boogie_si_record_i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 116, 9} true; + assume {:verifier.code 0} true; + $i78 := $slt.i32($i72, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 116, 7} true; + assume {:verifier.code 0} true; + $i79 := $i77; + assume {:branchcond $i78} true; + goto $bb46, $bb47; +$bb40: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 15} true; + assume {:verifier.code 0} true; + assume ($i65 == 1); + goto $bb41; +$bb41: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 107, 9} true; + assume {:verifier.code 0} true; + $i68 := $add.i32($i62, 1); + call {:cexpr "c"} boogie_si_record_i32($i68); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 108, 5} true; + assume {:verifier.code 0} true; + $i67 := $i68; + goto $bb45; +$bb42: + assume !(($i65 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 20} true; + assume {:verifier.code 0} true; + $i66 := $sgt.i32($i61, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 9} true; + assume {:verifier.code 0} true; + $i67 := $i62; + assume {:branchcond $i66} true; + goto $bb43, $bb44; +$bb43: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 9} true; + assume {:verifier.code 0} true; + assume ($i66 == 1); + goto $bb41; +$bb44: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 9} true; + assume {:verifier.code 0} true; + assume !(($i66 == 1)); + goto $bb45; +$bb45: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 109, 3} true; + assume {:verifier.code 0} true; + $i64 := $i67; + goto $bb39; +$bb46: + assume ($i78 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 11} true; + assume {:verifier.code 0} true; + $i80 := $slt.i32($i76, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i80} true; + goto $bb49, $bb51; +$bb47: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 116, 7} true; + assume {:verifier.code 0} true; + assume !(($i78 == 1)); + goto $bb48; +$bb48: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 121, 7} true; + assume {:verifier.code 0} true; + $i84 := $sext.i32.i64($i72); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 121, 9} true; + assume {:verifier.code 0} true; + $i85 := $srem.i64($i84, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 121, 7} true; + assume {:verifier.code 0} true; + $i86 := $trunc.i64.i32($i85); + call {:cexpr "a"} boogie_si_record_i32($i86); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 122, 5} true; + assume {:verifier.code 0} true; + $i87 := $add.i32($i86, $i86); + call {:cexpr "a"} boogie_si_record_i32($i87); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 123, 7} true; + assume {:verifier.code 0} true; + $i88 := $sext.i32.i64($i76); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 123, 9} true; + assume {:verifier.code 0} true; + $i89 := $srem.i64($i88, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 123, 7} true; + assume {:verifier.code 0} true; + $i90 := $trunc.i64.i32($i89); + call {:cexpr "b"} boogie_si_record_i32($i90); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 124, 5} true; + assume {:verifier.code 0} true; + $i91 := $add.i32($i90, $i90); + call {:cexpr "b"} boogie_si_record_i32($i91); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 126, 5} true; + assume {:verifier.code 0} true; + $i92 := $add.i32($i79, $i79); + call {:cexpr "c"} boogie_si_record_i32($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 127, 9} true; + assume {:verifier.code 0} true; + $i93 := $slt.i32($i87, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 127, 7} true; + assume {:verifier.code 0} true; + $i94 := $i92; + assume {:branchcond $i93} true; + goto $bb55, $bb56; +$bb49: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 15} true; + assume {:verifier.code 0} true; + assume ($i80 == 1); + goto $bb50; +$bb50: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 118, 9} true; + assume {:verifier.code 0} true; + $i83 := $add.i32($i77, 1); + call {:cexpr "c"} boogie_si_record_i32($i83); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 119, 5} true; + assume {:verifier.code 0} true; + $i82 := $i83; + goto $bb54; +$bb51: + assume !(($i80 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 20} true; + assume {:verifier.code 0} true; + $i81 := $sgt.i32($i76, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 9} true; + assume {:verifier.code 0} true; + $i82 := $i77; + assume {:branchcond $i81} true; + goto $bb52, $bb53; +$bb52: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 9} true; + assume {:verifier.code 0} true; + assume ($i81 == 1); + goto $bb50; +$bb53: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 9} true; + assume {:verifier.code 0} true; + assume !(($i81 == 1)); + goto $bb54; +$bb54: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 120, 3} true; + assume {:verifier.code 0} true; + $i79 := $i82; + goto $bb48; +$bb55: + assume ($i93 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 11} true; + assume {:verifier.code 0} true; + $i95 := $slt.i32($i91, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i95} true; + goto $bb58, $bb60; +$bb56: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 127, 7} true; + assume {:verifier.code 0} true; + assume !(($i93 == 1)); + goto $bb57; +$bb57: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 132, 7} true; + assume {:verifier.code 0} true; + $i99 := $sext.i32.i64($i87); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 132, 9} true; + assume {:verifier.code 0} true; + $i100 := $srem.i64($i99, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 132, 7} true; + assume {:verifier.code 0} true; + $i101 := $trunc.i64.i32($i100); + call {:cexpr "a"} boogie_si_record_i32($i101); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 133, 5} true; + assume {:verifier.code 0} true; + $i102 := $add.i32($i101, $i101); + call {:cexpr "a"} boogie_si_record_i32($i102); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 134, 7} true; + assume {:verifier.code 0} true; + $i103 := $sext.i32.i64($i91); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 134, 9} true; + assume {:verifier.code 0} true; + $i104 := $srem.i64($i103, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 134, 7} true; + assume {:verifier.code 0} true; + $i105 := $trunc.i64.i32($i104); + call {:cexpr "b"} boogie_si_record_i32($i105); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 135, 5} true; + assume {:verifier.code 0} true; + $i106 := $add.i32($i105, $i105); + call {:cexpr "b"} boogie_si_record_i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 137, 5} true; + assume {:verifier.code 0} true; + $i107 := $add.i32($i94, $i94); + call {:cexpr "c"} boogie_si_record_i32($i107); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 138, 9} true; + assume {:verifier.code 0} true; + $i108 := $slt.i32($i102, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 138, 7} true; + assume {:verifier.code 0} true; + $i109 := $i107; + assume {:branchcond $i108} true; + goto $bb64, $bb65; +$bb58: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 15} true; + assume {:verifier.code 0} true; + assume ($i95 == 1); + goto $bb59; +$bb59: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 129, 9} true; + assume {:verifier.code 0} true; + $i98 := $add.i32($i92, 1); + call {:cexpr "c"} boogie_si_record_i32($i98); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 130, 5} true; + assume {:verifier.code 0} true; + $i97 := $i98; + goto $bb63; +$bb60: + assume !(($i95 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 20} true; + assume {:verifier.code 0} true; + $i96 := $sgt.i32($i91, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 9} true; + assume {:verifier.code 0} true; + $i97 := $i92; + assume {:branchcond $i96} true; + goto $bb61, $bb62; +$bb61: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 9} true; + assume {:verifier.code 0} true; + assume ($i96 == 1); + goto $bb59; +$bb62: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 9} true; + assume {:verifier.code 0} true; + assume !(($i96 == 1)); + goto $bb63; +$bb63: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 131, 3} true; + assume {:verifier.code 0} true; + $i94 := $i97; + goto $bb57; +$bb64: + assume ($i108 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 11} true; + assume {:verifier.code 0} true; + $i110 := $slt.i32($i106, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i110} true; + goto $bb67, $bb69; +$bb65: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 138, 7} true; + assume {:verifier.code 0} true; + assume !(($i108 == 1)); + goto $bb66; +$bb66: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 143, 7} true; + assume {:verifier.code 0} true; + $i114 := $sext.i32.i64($i102); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 143, 9} true; + assume {:verifier.code 0} true; + $i115 := $srem.i64($i114, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 143, 7} true; + assume {:verifier.code 0} true; + $i116 := $trunc.i64.i32($i115); + call {:cexpr "a"} boogie_si_record_i32($i116); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 144, 5} true; + assume {:verifier.code 0} true; + $i117 := $add.i32($i116, $i116); + call {:cexpr "a"} boogie_si_record_i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 145, 7} true; + assume {:verifier.code 0} true; + $i118 := $sext.i32.i64($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 145, 9} true; + assume {:verifier.code 0} true; + $i119 := $srem.i64($i118, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 145, 7} true; + assume {:verifier.code 0} true; + $i120 := $trunc.i64.i32($i119); + call {:cexpr "b"} boogie_si_record_i32($i120); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 146, 5} true; + assume {:verifier.code 0} true; + $i121 := $add.i32($i120, $i120); + call {:cexpr "b"} boogie_si_record_i32($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 148, 5} true; + assume {:verifier.code 0} true; + $i122 := $add.i32($i109, $i109); + call {:cexpr "c"} boogie_si_record_i32($i122); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 149, 9} true; + assume {:verifier.code 0} true; + $i123 := $slt.i32($i117, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 149, 7} true; + assume {:verifier.code 0} true; + $i124 := $i122; + assume {:branchcond $i123} true; + goto $bb73, $bb74; +$bb67: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 15} true; + assume {:verifier.code 0} true; + assume ($i110 == 1); + goto $bb68; +$bb68: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 140, 9} true; + assume {:verifier.code 0} true; + $i113 := $add.i32($i107, 1); + call {:cexpr "c"} boogie_si_record_i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 141, 5} true; + assume {:verifier.code 0} true; + $i112 := $i113; + goto $bb72; +$bb69: + assume !(($i110 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 20} true; + assume {:verifier.code 0} true; + $i111 := $sgt.i32($i106, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 9} true; + assume {:verifier.code 0} true; + $i112 := $i107; + assume {:branchcond $i111} true; + goto $bb70, $bb71; +$bb70: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 9} true; + assume {:verifier.code 0} true; + assume ($i111 == 1); + goto $bb68; +$bb71: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 9} true; + assume {:verifier.code 0} true; + assume !(($i111 == 1)); + goto $bb72; +$bb72: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 142, 3} true; + assume {:verifier.code 0} true; + $i109 := $i112; + goto $bb66; +$bb73: + assume ($i123 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 11} true; + assume {:verifier.code 0} true; + $i125 := $slt.i32($i121, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i125} true; + goto $bb76, $bb78; +$bb74: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 149, 7} true; + assume {:verifier.code 0} true; + assume !(($i123 == 1)); + goto $bb75; +$bb75: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 154, 7} true; + assume {:verifier.code 0} true; + $i129 := $sext.i32.i64($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 154, 9} true; + assume {:verifier.code 0} true; + $i130 := $srem.i64($i129, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 154, 7} true; + assume {:verifier.code 0} true; + $i131 := $trunc.i64.i32($i130); + call {:cexpr "a"} boogie_si_record_i32($i131); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 155, 5} true; + assume {:verifier.code 0} true; + $i132 := $add.i32($i131, $i131); + call {:cexpr "a"} boogie_si_record_i32($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 156, 7} true; + assume {:verifier.code 0} true; + $i133 := $sext.i32.i64($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 156, 9} true; + assume {:verifier.code 0} true; + $i134 := $srem.i64($i133, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 156, 7} true; + assume {:verifier.code 0} true; + $i135 := $trunc.i64.i32($i134); + call {:cexpr "b"} boogie_si_record_i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 157, 5} true; + assume {:verifier.code 0} true; + $i136 := $add.i32($i135, $i135); + call {:cexpr "b"} boogie_si_record_i32($i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 159, 5} true; + assume {:verifier.code 0} true; + $i137 := $add.i32($i124, $i124); + call {:cexpr "c"} boogie_si_record_i32($i137); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 160, 9} true; + assume {:verifier.code 0} true; + $i138 := $slt.i32($i132, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 160, 7} true; + assume {:verifier.code 0} true; + $i139 := $i137; + assume {:branchcond $i138} true; + goto $bb82, $bb83; +$bb76: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 15} true; + assume {:verifier.code 0} true; + assume ($i125 == 1); + goto $bb77; +$bb77: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 151, 9} true; + assume {:verifier.code 0} true; + $i128 := $add.i32($i122, 1); + call {:cexpr "c"} boogie_si_record_i32($i128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 152, 5} true; + assume {:verifier.code 0} true; + $i127 := $i128; + goto $bb81; +$bb78: + assume !(($i125 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 20} true; + assume {:verifier.code 0} true; + $i126 := $sgt.i32($i121, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 9} true; + assume {:verifier.code 0} true; + $i127 := $i122; + assume {:branchcond $i126} true; + goto $bb79, $bb80; +$bb79: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 9} true; + assume {:verifier.code 0} true; + assume ($i126 == 1); + goto $bb77; +$bb80: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 9} true; + assume {:verifier.code 0} true; + assume !(($i126 == 1)); + goto $bb81; +$bb81: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 153, 3} true; + assume {:verifier.code 0} true; + $i124 := $i127; + goto $bb75; +$bb82: + assume ($i138 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 11} true; + assume {:verifier.code 0} true; + $i140 := $slt.i32($i136, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i140} true; + goto $bb85, $bb87; +$bb83: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 160, 7} true; + assume {:verifier.code 0} true; + assume !(($i138 == 1)); + goto $bb84; +$bb84: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 165, 7} true; + assume {:verifier.code 0} true; + $i144 := $sext.i32.i64($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 165, 9} true; + assume {:verifier.code 0} true; + $i145 := $srem.i64($i144, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 165, 7} true; + assume {:verifier.code 0} true; + $i146 := $trunc.i64.i32($i145); + call {:cexpr "a"} boogie_si_record_i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 166, 5} true; + assume {:verifier.code 0} true; + $i147 := $add.i32($i146, $i146); + call {:cexpr "a"} boogie_si_record_i32($i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 167, 7} true; + assume {:verifier.code 0} true; + $i148 := $sext.i32.i64($i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 167, 9} true; + assume {:verifier.code 0} true; + $i149 := $srem.i64($i148, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 167, 7} true; + assume {:verifier.code 0} true; + $i150 := $trunc.i64.i32($i149); + call {:cexpr "b"} boogie_si_record_i32($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 168, 5} true; + assume {:verifier.code 0} true; + $i151 := $add.i32($i150, $i150); + call {:cexpr "b"} boogie_si_record_i32($i151); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 170, 5} true; + assume {:verifier.code 0} true; + $i152 := $add.i32($i139, $i139); + call {:cexpr "c"} boogie_si_record_i32($i152); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 171, 9} true; + assume {:verifier.code 0} true; + $i153 := $slt.i32($i147, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 171, 7} true; + assume {:verifier.code 0} true; + $i154 := $i152; + assume {:branchcond $i153} true; + goto $bb91, $bb92; +$bb85: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 15} true; + assume {:verifier.code 0} true; + assume ($i140 == 1); + goto $bb86; +$bb86: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 162, 9} true; + assume {:verifier.code 0} true; + $i143 := $add.i32($i137, 1); + call {:cexpr "c"} boogie_si_record_i32($i143); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 163, 5} true; + assume {:verifier.code 0} true; + $i142 := $i143; + goto $bb90; +$bb87: + assume !(($i140 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 20} true; + assume {:verifier.code 0} true; + $i141 := $sgt.i32($i136, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 9} true; + assume {:verifier.code 0} true; + $i142 := $i137; + assume {:branchcond $i141} true; + goto $bb88, $bb89; +$bb88: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 9} true; + assume {:verifier.code 0} true; + assume ($i141 == 1); + goto $bb86; +$bb89: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 9} true; + assume {:verifier.code 0} true; + assume !(($i141 == 1)); + goto $bb90; +$bb90: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 164, 3} true; + assume {:verifier.code 0} true; + $i139 := $i142; + goto $bb84; +$bb91: + assume ($i153 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 11} true; + assume {:verifier.code 0} true; + $i155 := $slt.i32($i151, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i155} true; + goto $bb94, $bb96; +$bb92: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 171, 7} true; + assume {:verifier.code 0} true; + assume !(($i153 == 1)); + goto $bb93; +$bb93: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 176, 7} true; + assume {:verifier.code 0} true; + $i159 := $sext.i32.i64($i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 176, 9} true; + assume {:verifier.code 0} true; + $i160 := $srem.i64($i159, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 176, 7} true; + assume {:verifier.code 0} true; + $i161 := $trunc.i64.i32($i160); + call {:cexpr "a"} boogie_si_record_i32($i161); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 177, 5} true; + assume {:verifier.code 0} true; + $i162 := $add.i32($i161, $i161); + call {:cexpr "a"} boogie_si_record_i32($i162); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 178, 7} true; + assume {:verifier.code 0} true; + $i163 := $sext.i32.i64($i151); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 178, 9} true; + assume {:verifier.code 0} true; + $i164 := $srem.i64($i163, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 178, 7} true; + assume {:verifier.code 0} true; + $i165 := $trunc.i64.i32($i164); + call {:cexpr "b"} boogie_si_record_i32($i165); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 179, 5} true; + assume {:verifier.code 0} true; + $i166 := $add.i32($i165, $i165); + call {:cexpr "b"} boogie_si_record_i32($i166); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 181, 5} true; + assume {:verifier.code 0} true; + $i167 := $add.i32($i154, $i154); + call {:cexpr "c"} boogie_si_record_i32($i167); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 182, 9} true; + assume {:verifier.code 0} true; + $i168 := $slt.i32($i162, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 182, 7} true; + assume {:verifier.code 0} true; + $i169 := $i167; + assume {:branchcond $i168} true; + goto $bb100, $bb101; +$bb94: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 15} true; + assume {:verifier.code 0} true; + assume ($i155 == 1); + goto $bb95; +$bb95: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 173, 9} true; + assume {:verifier.code 0} true; + $i158 := $add.i32($i152, 1); + call {:cexpr "c"} boogie_si_record_i32($i158); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 174, 5} true; + assume {:verifier.code 0} true; + $i157 := $i158; + goto $bb99; +$bb96: + assume !(($i155 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 20} true; + assume {:verifier.code 0} true; + $i156 := $sgt.i32($i151, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 9} true; + assume {:verifier.code 0} true; + $i157 := $i152; + assume {:branchcond $i156} true; + goto $bb97, $bb98; +$bb97: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 9} true; + assume {:verifier.code 0} true; + assume ($i156 == 1); + goto $bb95; +$bb98: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 9} true; + assume {:verifier.code 0} true; + assume !(($i156 == 1)); + goto $bb99; +$bb99: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 175, 3} true; + assume {:verifier.code 0} true; + $i154 := $i157; + goto $bb93; +$bb100: + assume ($i168 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 11} true; + assume {:verifier.code 0} true; + $i170 := $slt.i32($i166, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i170} true; + goto $bb103, $bb105; +$bb101: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 182, 7} true; + assume {:verifier.code 0} true; + assume !(($i168 == 1)); + goto $bb102; +$bb102: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 187, 7} true; + assume {:verifier.code 0} true; + $i174 := $sext.i32.i64($i162); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 187, 9} true; + assume {:verifier.code 0} true; + $i175 := $srem.i64($i174, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 187, 7} true; + assume {:verifier.code 0} true; + $i176 := $trunc.i64.i32($i175); + call {:cexpr "a"} boogie_si_record_i32($i176); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 188, 5} true; + assume {:verifier.code 0} true; + $i177 := $add.i32($i176, $i176); + call {:cexpr "a"} boogie_si_record_i32($i177); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 189, 7} true; + assume {:verifier.code 0} true; + $i178 := $sext.i32.i64($i166); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 189, 9} true; + assume {:verifier.code 0} true; + $i179 := $srem.i64($i178, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 189, 7} true; + assume {:verifier.code 0} true; + $i180 := $trunc.i64.i32($i179); + call {:cexpr "b"} boogie_si_record_i32($i180); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 190, 5} true; + assume {:verifier.code 0} true; + $i181 := $add.i32($i180, $i180); + call {:cexpr "b"} boogie_si_record_i32($i181); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 192, 5} true; + assume {:verifier.code 0} true; + $i182 := $add.i32($i169, $i169); + call {:cexpr "c"} boogie_si_record_i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 193, 9} true; + assume {:verifier.code 0} true; + $i183 := $slt.i32($i177, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 193, 7} true; + assume {:verifier.code 0} true; + $i184 := $i182; + assume {:branchcond $i183} true; + goto $bb109, $bb110; +$bb103: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 15} true; + assume {:verifier.code 0} true; + assume ($i170 == 1); + goto $bb104; +$bb104: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 184, 9} true; + assume {:verifier.code 0} true; + $i173 := $add.i32($i167, 1); + call {:cexpr "c"} boogie_si_record_i32($i173); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 185, 5} true; + assume {:verifier.code 0} true; + $i172 := $i173; + goto $bb108; +$bb105: + assume !(($i170 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 20} true; + assume {:verifier.code 0} true; + $i171 := $sgt.i32($i166, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 9} true; + assume {:verifier.code 0} true; + $i172 := $i167; + assume {:branchcond $i171} true; + goto $bb106, $bb107; +$bb106: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 9} true; + assume {:verifier.code 0} true; + assume ($i171 == 1); + goto $bb104; +$bb107: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 9} true; + assume {:verifier.code 0} true; + assume !(($i171 == 1)); + goto $bb108; +$bb108: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 186, 3} true; + assume {:verifier.code 0} true; + $i169 := $i172; + goto $bb102; +$bb109: + assume ($i183 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 11} true; + assume {:verifier.code 0} true; + $i185 := $slt.i32($i181, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i185} true; + goto $bb112, $bb114; +$bb110: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 193, 7} true; + assume {:verifier.code 0} true; + assume !(($i183 == 1)); + goto $bb111; +$bb111: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 198, 7} true; + assume {:verifier.code 0} true; + $i189 := $sext.i32.i64($i177); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 198, 9} true; + assume {:verifier.code 0} true; + $i190 := $srem.i64($i189, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 198, 7} true; + assume {:verifier.code 0} true; + $i191 := $trunc.i64.i32($i190); + call {:cexpr "a"} boogie_si_record_i32($i191); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 199, 5} true; + assume {:verifier.code 0} true; + $i192 := $add.i32($i191, $i191); + call {:cexpr "a"} boogie_si_record_i32($i192); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 200, 7} true; + assume {:verifier.code 0} true; + $i193 := $sext.i32.i64($i181); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 200, 9} true; + assume {:verifier.code 0} true; + $i194 := $srem.i64($i193, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 200, 7} true; + assume {:verifier.code 0} true; + $i195 := $trunc.i64.i32($i194); + call {:cexpr "b"} boogie_si_record_i32($i195); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 201, 5} true; + assume {:verifier.code 0} true; + $i196 := $add.i32($i195, $i195); + call {:cexpr "b"} boogie_si_record_i32($i196); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 203, 5} true; + assume {:verifier.code 0} true; + $i197 := $add.i32($i184, $i184); + call {:cexpr "c"} boogie_si_record_i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 204, 9} true; + assume {:verifier.code 0} true; + $i198 := $slt.i32($i192, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 204, 7} true; + assume {:verifier.code 0} true; + $i199 := $i197; + assume {:branchcond $i198} true; + goto $bb118, $bb119; +$bb112: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 15} true; + assume {:verifier.code 0} true; + assume ($i185 == 1); + goto $bb113; +$bb113: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 195, 9} true; + assume {:verifier.code 0} true; + $i188 := $add.i32($i182, 1); + call {:cexpr "c"} boogie_si_record_i32($i188); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 196, 5} true; + assume {:verifier.code 0} true; + $i187 := $i188; + goto $bb117; +$bb114: + assume !(($i185 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 20} true; + assume {:verifier.code 0} true; + $i186 := $sgt.i32($i181, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 9} true; + assume {:verifier.code 0} true; + $i187 := $i182; + assume {:branchcond $i186} true; + goto $bb115, $bb116; +$bb115: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 9} true; + assume {:verifier.code 0} true; + assume ($i186 == 1); + goto $bb113; +$bb116: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 9} true; + assume {:verifier.code 0} true; + assume !(($i186 == 1)); + goto $bb117; +$bb117: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 197, 3} true; + assume {:verifier.code 0} true; + $i184 := $i187; + goto $bb111; +$bb118: + assume ($i198 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 11} true; + assume {:verifier.code 0} true; + $i200 := $slt.i32($i196, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i200} true; + goto $bb121, $bb123; +$bb119: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 204, 7} true; + assume {:verifier.code 0} true; + assume !(($i198 == 1)); + goto $bb120; +$bb120: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 209, 7} true; + assume {:verifier.code 0} true; + $i204 := $sext.i32.i64($i192); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 209, 9} true; + assume {:verifier.code 0} true; + $i205 := $srem.i64($i204, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 209, 7} true; + assume {:verifier.code 0} true; + $i206 := $trunc.i64.i32($i205); + call {:cexpr "a"} boogie_si_record_i32($i206); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 210, 5} true; + assume {:verifier.code 0} true; + $i207 := $add.i32($i206, $i206); + call {:cexpr "a"} boogie_si_record_i32($i207); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 211, 7} true; + assume {:verifier.code 0} true; + $i208 := $sext.i32.i64($i196); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 211, 9} true; + assume {:verifier.code 0} true; + $i209 := $srem.i64($i208, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 211, 7} true; + assume {:verifier.code 0} true; + $i210 := $trunc.i64.i32($i209); + call {:cexpr "b"} boogie_si_record_i32($i210); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 212, 5} true; + assume {:verifier.code 0} true; + $i211 := $add.i32($i210, $i210); + call {:cexpr "b"} boogie_si_record_i32($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 214, 5} true; + assume {:verifier.code 0} true; + $i212 := $add.i32($i199, $i199); + call {:cexpr "c"} boogie_si_record_i32($i212); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 215, 9} true; + assume {:verifier.code 0} true; + $i213 := $slt.i32($i207, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 215, 7} true; + assume {:verifier.code 0} true; + $i214 := $i212; + assume {:branchcond $i213} true; + goto $bb127, $bb128; +$bb121: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 15} true; + assume {:verifier.code 0} true; + assume ($i200 == 1); + goto $bb122; +$bb122: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 206, 9} true; + assume {:verifier.code 0} true; + $i203 := $add.i32($i197, 1); + call {:cexpr "c"} boogie_si_record_i32($i203); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 207, 5} true; + assume {:verifier.code 0} true; + $i202 := $i203; + goto $bb126; +$bb123: + assume !(($i200 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 20} true; + assume {:verifier.code 0} true; + $i201 := $sgt.i32($i196, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 9} true; + assume {:verifier.code 0} true; + $i202 := $i197; + assume {:branchcond $i201} true; + goto $bb124, $bb125; +$bb124: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 9} true; + assume {:verifier.code 0} true; + assume ($i201 == 1); + goto $bb122; +$bb125: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 9} true; + assume {:verifier.code 0} true; + assume !(($i201 == 1)); + goto $bb126; +$bb126: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 208, 3} true; + assume {:verifier.code 0} true; + $i199 := $i202; + goto $bb120; +$bb127: + assume ($i213 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 11} true; + assume {:verifier.code 0} true; + $i215 := $slt.i32($i211, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i215} true; + goto $bb130, $bb132; +$bb128: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 215, 7} true; + assume {:verifier.code 0} true; + assume !(($i213 == 1)); + goto $bb129; +$bb129: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 220, 7} true; + assume {:verifier.code 0} true; + $i219 := $sext.i32.i64($i207); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 220, 9} true; + assume {:verifier.code 0} true; + $i220 := $srem.i64($i219, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 220, 7} true; + assume {:verifier.code 0} true; + $i221 := $trunc.i64.i32($i220); + call {:cexpr "a"} boogie_si_record_i32($i221); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 221, 5} true; + assume {:verifier.code 0} true; + $i222 := $add.i32($i221, $i221); + call {:cexpr "a"} boogie_si_record_i32($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 222, 7} true; + assume {:verifier.code 0} true; + $i223 := $sext.i32.i64($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 222, 9} true; + assume {:verifier.code 0} true; + $i224 := $srem.i64($i223, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 222, 7} true; + assume {:verifier.code 0} true; + $i225 := $trunc.i64.i32($i224); + call {:cexpr "b"} boogie_si_record_i32($i225); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 223, 5} true; + assume {:verifier.code 0} true; + $i226 := $add.i32($i225, $i225); + call {:cexpr "b"} boogie_si_record_i32($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 225, 5} true; + assume {:verifier.code 0} true; + $i227 := $add.i32($i214, $i214); + call {:cexpr "c"} boogie_si_record_i32($i227); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 226, 9} true; + assume {:verifier.code 0} true; + $i228 := $slt.i32($i222, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 226, 7} true; + assume {:verifier.code 0} true; + $i229 := $i227; + assume {:branchcond $i228} true; + goto $bb136, $bb137; +$bb130: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 15} true; + assume {:verifier.code 0} true; + assume ($i215 == 1); + goto $bb131; +$bb131: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 217, 9} true; + assume {:verifier.code 0} true; + $i218 := $add.i32($i212, 1); + call {:cexpr "c"} boogie_si_record_i32($i218); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 218, 5} true; + assume {:verifier.code 0} true; + $i217 := $i218; + goto $bb135; +$bb132: + assume !(($i215 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 20} true; + assume {:verifier.code 0} true; + $i216 := $sgt.i32($i211, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 9} true; + assume {:verifier.code 0} true; + $i217 := $i212; + assume {:branchcond $i216} true; + goto $bb133, $bb134; +$bb133: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 9} true; + assume {:verifier.code 0} true; + assume ($i216 == 1); + goto $bb131; +$bb134: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 9} true; + assume {:verifier.code 0} true; + assume !(($i216 == 1)); + goto $bb135; +$bb135: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 219, 3} true; + assume {:verifier.code 0} true; + $i214 := $i217; + goto $bb129; +$bb136: + assume ($i228 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 11} true; + assume {:verifier.code 0} true; + $i230 := $slt.i32($i226, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i230} true; + goto $bb139, $bb141; +$bb137: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 226, 7} true; + assume {:verifier.code 0} true; + assume !(($i228 == 1)); + goto $bb138; +$bb138: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 231, 7} true; + assume {:verifier.code 0} true; + $i234 := $sext.i32.i64($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 231, 9} true; + assume {:verifier.code 0} true; + $i235 := $srem.i64($i234, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 231, 7} true; + assume {:verifier.code 0} true; + $i236 := $trunc.i64.i32($i235); + call {:cexpr "a"} boogie_si_record_i32($i236); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 232, 5} true; + assume {:verifier.code 0} true; + $i237 := $add.i32($i236, $i236); + call {:cexpr "a"} boogie_si_record_i32($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 233, 7} true; + assume {:verifier.code 0} true; + $i238 := $sext.i32.i64($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 233, 9} true; + assume {:verifier.code 0} true; + $i239 := $srem.i64($i238, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 233, 7} true; + assume {:verifier.code 0} true; + $i240 := $trunc.i64.i32($i239); + call {:cexpr "b"} boogie_si_record_i32($i240); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 234, 5} true; + assume {:verifier.code 0} true; + $i241 := $add.i32($i240, $i240); + call {:cexpr "b"} boogie_si_record_i32($i241); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 236, 5} true; + assume {:verifier.code 0} true; + $i242 := $add.i32($i229, $i229); + call {:cexpr "c"} boogie_si_record_i32($i242); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 237, 9} true; + assume {:verifier.code 0} true; + $i243 := $slt.i32($i237, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 237, 7} true; + assume {:verifier.code 0} true; + $i244 := $i242; + assume {:branchcond $i243} true; + goto $bb145, $bb146; +$bb139: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 15} true; + assume {:verifier.code 0} true; + assume ($i230 == 1); + goto $bb140; +$bb140: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 228, 9} true; + assume {:verifier.code 0} true; + $i233 := $add.i32($i227, 1); + call {:cexpr "c"} boogie_si_record_i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 229, 5} true; + assume {:verifier.code 0} true; + $i232 := $i233; + goto $bb144; +$bb141: + assume !(($i230 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 20} true; + assume {:verifier.code 0} true; + $i231 := $sgt.i32($i226, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 9} true; + assume {:verifier.code 0} true; + $i232 := $i227; + assume {:branchcond $i231} true; + goto $bb142, $bb143; +$bb142: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 9} true; + assume {:verifier.code 0} true; + assume ($i231 == 1); + goto $bb140; +$bb143: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 9} true; + assume {:verifier.code 0} true; + assume !(($i231 == 1)); + goto $bb144; +$bb144: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 230, 3} true; + assume {:verifier.code 0} true; + $i229 := $i232; + goto $bb138; +$bb145: + assume ($i243 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 11} true; + assume {:verifier.code 0} true; + $i245 := $slt.i32($i241, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i245} true; + goto $bb148, $bb150; +$bb146: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 237, 7} true; + assume {:verifier.code 0} true; + assume !(($i243 == 1)); + goto $bb147; +$bb147: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 242, 7} true; + assume {:verifier.code 0} true; + $i249 := $sext.i32.i64($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 242, 9} true; + assume {:verifier.code 0} true; + $i250 := $srem.i64($i249, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 242, 7} true; + assume {:verifier.code 0} true; + $i251 := $trunc.i64.i32($i250); + call {:cexpr "a"} boogie_si_record_i32($i251); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 243, 5} true; + assume {:verifier.code 0} true; + $i252 := $add.i32($i251, $i251); + call {:cexpr "a"} boogie_si_record_i32($i252); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 244, 7} true; + assume {:verifier.code 0} true; + $i253 := $sext.i32.i64($i241); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 244, 9} true; + assume {:verifier.code 0} true; + $i254 := $srem.i64($i253, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 244, 7} true; + assume {:verifier.code 0} true; + $i255 := $trunc.i64.i32($i254); + call {:cexpr "b"} boogie_si_record_i32($i255); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 245, 5} true; + assume {:verifier.code 0} true; + $i256 := $add.i32($i255, $i255); + call {:cexpr "b"} boogie_si_record_i32($i256); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 247, 5} true; + assume {:verifier.code 0} true; + $i257 := $add.i32($i244, $i244); + call {:cexpr "c"} boogie_si_record_i32($i257); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 248, 9} true; + assume {:verifier.code 0} true; + $i258 := $slt.i32($i252, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 248, 7} true; + assume {:verifier.code 0} true; + $i259 := $i257; + assume {:branchcond $i258} true; + goto $bb154, $bb155; +$bb148: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 15} true; + assume {:verifier.code 0} true; + assume ($i245 == 1); + goto $bb149; +$bb149: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 239, 9} true; + assume {:verifier.code 0} true; + $i248 := $add.i32($i242, 1); + call {:cexpr "c"} boogie_si_record_i32($i248); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 240, 5} true; + assume {:verifier.code 0} true; + $i247 := $i248; + goto $bb153; +$bb150: + assume !(($i245 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 20} true; + assume {:verifier.code 0} true; + $i246 := $sgt.i32($i241, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 9} true; + assume {:verifier.code 0} true; + $i247 := $i242; + assume {:branchcond $i246} true; + goto $bb151, $bb152; +$bb151: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 9} true; + assume {:verifier.code 0} true; + assume ($i246 == 1); + goto $bb149; +$bb152: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 9} true; + assume {:verifier.code 0} true; + assume !(($i246 == 1)); + goto $bb153; +$bb153: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 241, 3} true; + assume {:verifier.code 0} true; + $i244 := $i247; + goto $bb147; +$bb154: + assume ($i258 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 11} true; + assume {:verifier.code 0} true; + $i260 := $slt.i32($i256, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i260} true; + goto $bb157, $bb159; +$bb155: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 248, 7} true; + assume {:verifier.code 0} true; + assume !(($i258 == 1)); + goto $bb156; +$bb156: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 253, 7} true; + assume {:verifier.code 0} true; + $i264 := $sext.i32.i64($i252); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 253, 9} true; + assume {:verifier.code 0} true; + $i265 := $srem.i64($i264, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 253, 7} true; + assume {:verifier.code 0} true; + $i266 := $trunc.i64.i32($i265); + call {:cexpr "a"} boogie_si_record_i32($i266); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 254, 5} true; + assume {:verifier.code 0} true; + $i267 := $add.i32($i266, $i266); + call {:cexpr "a"} boogie_si_record_i32($i267); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 255, 7} true; + assume {:verifier.code 0} true; + $i268 := $sext.i32.i64($i256); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 255, 9} true; + assume {:verifier.code 0} true; + $i269 := $srem.i64($i268, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 255, 7} true; + assume {:verifier.code 0} true; + $i270 := $trunc.i64.i32($i269); + call {:cexpr "b"} boogie_si_record_i32($i270); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 256, 5} true; + assume {:verifier.code 0} true; + $i271 := $add.i32($i270, $i270); + call {:cexpr "b"} boogie_si_record_i32($i271); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 258, 5} true; + assume {:verifier.code 0} true; + $i272 := $add.i32($i259, $i259); + call {:cexpr "c"} boogie_si_record_i32($i272); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 259, 9} true; + assume {:verifier.code 0} true; + $i273 := $slt.i32($i267, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 259, 7} true; + assume {:verifier.code 0} true; + $i274 := $i272; + assume {:branchcond $i273} true; + goto $bb163, $bb164; +$bb157: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 15} true; + assume {:verifier.code 0} true; + assume ($i260 == 1); + goto $bb158; +$bb158: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 250, 9} true; + assume {:verifier.code 0} true; + $i263 := $add.i32($i257, 1); + call {:cexpr "c"} boogie_si_record_i32($i263); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 251, 5} true; + assume {:verifier.code 0} true; + $i262 := $i263; + goto $bb162; +$bb159: + assume !(($i260 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 20} true; + assume {:verifier.code 0} true; + $i261 := $sgt.i32($i256, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 9} true; + assume {:verifier.code 0} true; + $i262 := $i257; + assume {:branchcond $i261} true; + goto $bb160, $bb161; +$bb160: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 9} true; + assume {:verifier.code 0} true; + assume ($i261 == 1); + goto $bb158; +$bb161: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 9} true; + assume {:verifier.code 0} true; + assume !(($i261 == 1)); + goto $bb162; +$bb162: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 252, 3} true; + assume {:verifier.code 0} true; + $i259 := $i262; + goto $bb156; +$bb163: + assume ($i273 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 11} true; + assume {:verifier.code 0} true; + $i275 := $slt.i32($i271, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i275} true; + goto $bb166, $bb168; +$bb164: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 259, 7} true; + assume {:verifier.code 0} true; + assume !(($i273 == 1)); + goto $bb165; +$bb165: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 264, 7} true; + assume {:verifier.code 0} true; + $i279 := $sext.i32.i64($i267); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 264, 9} true; + assume {:verifier.code 0} true; + $i280 := $srem.i64($i279, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 264, 7} true; + assume {:verifier.code 0} true; + $i281 := $trunc.i64.i32($i280); + call {:cexpr "a"} boogie_si_record_i32($i281); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 265, 5} true; + assume {:verifier.code 0} true; + $i282 := $add.i32($i281, $i281); + call {:cexpr "a"} boogie_si_record_i32($i282); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 266, 7} true; + assume {:verifier.code 0} true; + $i283 := $sext.i32.i64($i271); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 266, 9} true; + assume {:verifier.code 0} true; + $i284 := $srem.i64($i283, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 266, 7} true; + assume {:verifier.code 0} true; + $i285 := $trunc.i64.i32($i284); + call {:cexpr "b"} boogie_si_record_i32($i285); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 267, 5} true; + assume {:verifier.code 0} true; + $i286 := $add.i32($i285, $i285); + call {:cexpr "b"} boogie_si_record_i32($i286); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 269, 5} true; + assume {:verifier.code 0} true; + $i287 := $add.i32($i274, $i274); + call {:cexpr "c"} boogie_si_record_i32($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 270, 9} true; + assume {:verifier.code 0} true; + $i288 := $slt.i32($i282, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 270, 7} true; + assume {:verifier.code 0} true; + $i289 := $i287; + assume {:branchcond $i288} true; + goto $bb172, $bb173; +$bb166: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 15} true; + assume {:verifier.code 0} true; + assume ($i275 == 1); + goto $bb167; +$bb167: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 261, 9} true; + assume {:verifier.code 0} true; + $i278 := $add.i32($i272, 1); + call {:cexpr "c"} boogie_si_record_i32($i278); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 262, 5} true; + assume {:verifier.code 0} true; + $i277 := $i278; + goto $bb171; +$bb168: + assume !(($i275 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 20} true; + assume {:verifier.code 0} true; + $i276 := $sgt.i32($i271, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 9} true; + assume {:verifier.code 0} true; + $i277 := $i272; + assume {:branchcond $i276} true; + goto $bb169, $bb170; +$bb169: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 9} true; + assume {:verifier.code 0} true; + assume ($i276 == 1); + goto $bb167; +$bb170: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 9} true; + assume {:verifier.code 0} true; + assume !(($i276 == 1)); + goto $bb171; +$bb171: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 263, 3} true; + assume {:verifier.code 0} true; + $i274 := $i277; + goto $bb165; +$bb172: + assume ($i288 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 11} true; + assume {:verifier.code 0} true; + $i290 := $slt.i32($i286, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i290} true; + goto $bb175, $bb177; +$bb173: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 270, 7} true; + assume {:verifier.code 0} true; + assume !(($i288 == 1)); + goto $bb174; +$bb174: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 275, 7} true; + assume {:verifier.code 0} true; + $i294 := $sext.i32.i64($i282); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 275, 9} true; + assume {:verifier.code 0} true; + $i295 := $srem.i64($i294, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 275, 7} true; + assume {:verifier.code 0} true; + $i296 := $trunc.i64.i32($i295); + call {:cexpr "a"} boogie_si_record_i32($i296); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 276, 5} true; + assume {:verifier.code 0} true; + $i297 := $add.i32($i296, $i296); + call {:cexpr "a"} boogie_si_record_i32($i297); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 277, 7} true; + assume {:verifier.code 0} true; + $i298 := $sext.i32.i64($i286); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 277, 9} true; + assume {:verifier.code 0} true; + $i299 := $srem.i64($i298, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 277, 7} true; + assume {:verifier.code 0} true; + $i300 := $trunc.i64.i32($i299); + call {:cexpr "b"} boogie_si_record_i32($i300); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 278, 5} true; + assume {:verifier.code 0} true; + $i301 := $add.i32($i300, $i300); + call {:cexpr "b"} boogie_si_record_i32($i301); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 280, 5} true; + assume {:verifier.code 0} true; + $i302 := $add.i32($i289, $i289); + call {:cexpr "c"} boogie_si_record_i32($i302); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 281, 9} true; + assume {:verifier.code 0} true; + $i303 := $slt.i32($i297, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 281, 7} true; + assume {:verifier.code 0} true; + $i304 := $i302; + assume {:branchcond $i303} true; + goto $bb181, $bb182; +$bb175: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 15} true; + assume {:verifier.code 0} true; + assume ($i290 == 1); + goto $bb176; +$bb176: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 272, 9} true; + assume {:verifier.code 0} true; + $i293 := $add.i32($i287, 1); + call {:cexpr "c"} boogie_si_record_i32($i293); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 273, 5} true; + assume {:verifier.code 0} true; + $i292 := $i293; + goto $bb180; +$bb177: + assume !(($i290 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 20} true; + assume {:verifier.code 0} true; + $i291 := $sgt.i32($i286, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 9} true; + assume {:verifier.code 0} true; + $i292 := $i287; + assume {:branchcond $i291} true; + goto $bb178, $bb179; +$bb178: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 9} true; + assume {:verifier.code 0} true; + assume ($i291 == 1); + goto $bb176; +$bb179: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 9} true; + assume {:verifier.code 0} true; + assume !(($i291 == 1)); + goto $bb180; +$bb180: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 274, 3} true; + assume {:verifier.code 0} true; + $i289 := $i292; + goto $bb174; +$bb181: + assume ($i303 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 11} true; + assume {:verifier.code 0} true; + $i305 := $slt.i32($i301, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i305} true; + goto $bb184, $bb186; +$bb182: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 281, 7} true; + assume {:verifier.code 0} true; + assume !(($i303 == 1)); + goto $bb183; +$bb183: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 286, 7} true; + assume {:verifier.code 0} true; + $i309 := $sext.i32.i64($i297); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 286, 9} true; + assume {:verifier.code 0} true; + $i310 := $srem.i64($i309, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 286, 7} true; + assume {:verifier.code 0} true; + $i311 := $trunc.i64.i32($i310); + call {:cexpr "a"} boogie_si_record_i32($i311); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 287, 5} true; + assume {:verifier.code 0} true; + $i312 := $add.i32($i311, $i311); + call {:cexpr "a"} boogie_si_record_i32($i312); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 288, 7} true; + assume {:verifier.code 0} true; + $i313 := $sext.i32.i64($i301); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 288, 9} true; + assume {:verifier.code 0} true; + $i314 := $srem.i64($i313, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 288, 7} true; + assume {:verifier.code 0} true; + $i315 := $trunc.i64.i32($i314); + call {:cexpr "b"} boogie_si_record_i32($i315); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 289, 5} true; + assume {:verifier.code 0} true; + $i316 := $add.i32($i315, $i315); + call {:cexpr "b"} boogie_si_record_i32($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 291, 5} true; + assume {:verifier.code 0} true; + $i317 := $add.i32($i304, $i304); + call {:cexpr "c"} boogie_si_record_i32($i317); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 292, 9} true; + assume {:verifier.code 0} true; + $i318 := $slt.i32($i312, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 292, 7} true; + assume {:verifier.code 0} true; + $i319 := $i317; + assume {:branchcond $i318} true; + goto $bb190, $bb191; +$bb184: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 15} true; + assume {:verifier.code 0} true; + assume ($i305 == 1); + goto $bb185; +$bb185: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 283, 9} true; + assume {:verifier.code 0} true; + $i308 := $add.i32($i302, 1); + call {:cexpr "c"} boogie_si_record_i32($i308); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 284, 5} true; + assume {:verifier.code 0} true; + $i307 := $i308; + goto $bb189; +$bb186: + assume !(($i305 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 20} true; + assume {:verifier.code 0} true; + $i306 := $sgt.i32($i301, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 9} true; + assume {:verifier.code 0} true; + $i307 := $i302; + assume {:branchcond $i306} true; + goto $bb187, $bb188; +$bb187: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 9} true; + assume {:verifier.code 0} true; + assume ($i306 == 1); + goto $bb185; +$bb188: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 9} true; + assume {:verifier.code 0} true; + assume !(($i306 == 1)); + goto $bb189; +$bb189: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 285, 3} true; + assume {:verifier.code 0} true; + $i304 := $i307; + goto $bb183; +$bb190: + assume ($i318 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 11} true; + assume {:verifier.code 0} true; + $i320 := $slt.i32($i316, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i320} true; + goto $bb193, $bb195; +$bb191: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 292, 7} true; + assume {:verifier.code 0} true; + assume !(($i318 == 1)); + goto $bb192; +$bb192: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 297, 7} true; + assume {:verifier.code 0} true; + $i324 := $sext.i32.i64($i312); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 297, 9} true; + assume {:verifier.code 0} true; + $i325 := $srem.i64($i324, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 297, 7} true; + assume {:verifier.code 0} true; + $i326 := $trunc.i64.i32($i325); + call {:cexpr "a"} boogie_si_record_i32($i326); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 298, 5} true; + assume {:verifier.code 0} true; + $i327 := $add.i32($i326, $i326); + call {:cexpr "a"} boogie_si_record_i32($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 299, 7} true; + assume {:verifier.code 0} true; + $i328 := $sext.i32.i64($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 299, 9} true; + assume {:verifier.code 0} true; + $i329 := $srem.i64($i328, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 299, 7} true; + assume {:verifier.code 0} true; + $i330 := $trunc.i64.i32($i329); + call {:cexpr "b"} boogie_si_record_i32($i330); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 300, 5} true; + assume {:verifier.code 0} true; + $i331 := $add.i32($i330, $i330); + call {:cexpr "b"} boogie_si_record_i32($i331); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 302, 5} true; + assume {:verifier.code 0} true; + $i332 := $add.i32($i319, $i319); + call {:cexpr "c"} boogie_si_record_i32($i332); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 303, 9} true; + assume {:verifier.code 0} true; + $i333 := $slt.i32($i327, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 303, 7} true; + assume {:verifier.code 0} true; + $i334 := $i332; + assume {:branchcond $i333} true; + goto $bb199, $bb200; +$bb193: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 15} true; + assume {:verifier.code 0} true; + assume ($i320 == 1); + goto $bb194; +$bb194: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 294, 9} true; + assume {:verifier.code 0} true; + $i323 := $add.i32($i317, 1); + call {:cexpr "c"} boogie_si_record_i32($i323); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 295, 5} true; + assume {:verifier.code 0} true; + $i322 := $i323; + goto $bb198; +$bb195: + assume !(($i320 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 20} true; + assume {:verifier.code 0} true; + $i321 := $sgt.i32($i316, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 9} true; + assume {:verifier.code 0} true; + $i322 := $i317; + assume {:branchcond $i321} true; + goto $bb196, $bb197; +$bb196: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 9} true; + assume {:verifier.code 0} true; + assume ($i321 == 1); + goto $bb194; +$bb197: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 9} true; + assume {:verifier.code 0} true; + assume !(($i321 == 1)); + goto $bb198; +$bb198: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 296, 3} true; + assume {:verifier.code 0} true; + $i319 := $i322; + goto $bb192; +$bb199: + assume ($i333 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 11} true; + assume {:verifier.code 0} true; + $i335 := $slt.i32($i331, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i335} true; + goto $bb202, $bb204; +$bb200: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 303, 7} true; + assume {:verifier.code 0} true; + assume !(($i333 == 1)); + goto $bb201; +$bb201: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 308, 7} true; + assume {:verifier.code 0} true; + $i339 := $sext.i32.i64($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 308, 9} true; + assume {:verifier.code 0} true; + $i340 := $srem.i64($i339, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 308, 7} true; + assume {:verifier.code 0} true; + $i341 := $trunc.i64.i32($i340); + call {:cexpr "a"} boogie_si_record_i32($i341); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 309, 5} true; + assume {:verifier.code 0} true; + $i342 := $add.i32($i341, $i341); + call {:cexpr "a"} boogie_si_record_i32($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 310, 7} true; + assume {:verifier.code 0} true; + $i343 := $sext.i32.i64($i331); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 310, 9} true; + assume {:verifier.code 0} true; + $i344 := $srem.i64($i343, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 310, 7} true; + assume {:verifier.code 0} true; + $i345 := $trunc.i64.i32($i344); + call {:cexpr "b"} boogie_si_record_i32($i345); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 311, 5} true; + assume {:verifier.code 0} true; + $i346 := $add.i32($i345, $i345); + call {:cexpr "b"} boogie_si_record_i32($i346); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 313, 5} true; + assume {:verifier.code 0} true; + $i347 := $add.i32($i334, $i334); + call {:cexpr "c"} boogie_si_record_i32($i347); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 314, 9} true; + assume {:verifier.code 0} true; + $i348 := $slt.i32($i342, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 314, 7} true; + assume {:verifier.code 0} true; + $i349 := $i347; + assume {:branchcond $i348} true; + goto $bb208, $bb209; +$bb202: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 15} true; + assume {:verifier.code 0} true; + assume ($i335 == 1); + goto $bb203; +$bb203: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 305, 9} true; + assume {:verifier.code 0} true; + $i338 := $add.i32($i332, 1); + call {:cexpr "c"} boogie_si_record_i32($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 306, 5} true; + assume {:verifier.code 0} true; + $i337 := $i338; + goto $bb207; +$bb204: + assume !(($i335 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 20} true; + assume {:verifier.code 0} true; + $i336 := $sgt.i32($i331, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 9} true; + assume {:verifier.code 0} true; + $i337 := $i332; + assume {:branchcond $i336} true; + goto $bb205, $bb206; +$bb205: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 9} true; + assume {:verifier.code 0} true; + assume ($i336 == 1); + goto $bb203; +$bb206: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 9} true; + assume {:verifier.code 0} true; + assume !(($i336 == 1)); + goto $bb207; +$bb207: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 307, 3} true; + assume {:verifier.code 0} true; + $i334 := $i337; + goto $bb201; +$bb208: + assume ($i348 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 11} true; + assume {:verifier.code 0} true; + $i350 := $slt.i32($i346, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i350} true; + goto $bb211, $bb213; +$bb209: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 314, 7} true; + assume {:verifier.code 0} true; + assume !(($i348 == 1)); + goto $bb210; +$bb210: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 319, 7} true; + assume {:verifier.code 0} true; + $i354 := $sext.i32.i64($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 319, 9} true; + assume {:verifier.code 0} true; + $i355 := $srem.i64($i354, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 319, 7} true; + assume {:verifier.code 0} true; + $i356 := $trunc.i64.i32($i355); + call {:cexpr "a"} boogie_si_record_i32($i356); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 320, 5} true; + assume {:verifier.code 0} true; + $i357 := $add.i32($i356, $i356); + call {:cexpr "a"} boogie_si_record_i32($i357); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 321, 7} true; + assume {:verifier.code 0} true; + $i358 := $sext.i32.i64($i346); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 321, 9} true; + assume {:verifier.code 0} true; + $i359 := $srem.i64($i358, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 321, 7} true; + assume {:verifier.code 0} true; + $i360 := $trunc.i64.i32($i359); + call {:cexpr "b"} boogie_si_record_i32($i360); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 322, 5} true; + assume {:verifier.code 0} true; + $i361 := $add.i32($i360, $i360); + call {:cexpr "b"} boogie_si_record_i32($i361); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 324, 5} true; + assume {:verifier.code 0} true; + $i362 := $add.i32($i349, $i349); + call {:cexpr "c"} boogie_si_record_i32($i362); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 325, 9} true; + assume {:verifier.code 0} true; + $i363 := $slt.i32($i357, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 325, 7} true; + assume {:verifier.code 0} true; + $i364 := $i362; + assume {:branchcond $i363} true; + goto $bb217, $bb218; +$bb211: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 15} true; + assume {:verifier.code 0} true; + assume ($i350 == 1); + goto $bb212; +$bb212: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 316, 9} true; + assume {:verifier.code 0} true; + $i353 := $add.i32($i347, 1); + call {:cexpr "c"} boogie_si_record_i32($i353); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 317, 5} true; + assume {:verifier.code 0} true; + $i352 := $i353; + goto $bb216; +$bb213: + assume !(($i350 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 20} true; + assume {:verifier.code 0} true; + $i351 := $sgt.i32($i346, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 9} true; + assume {:verifier.code 0} true; + $i352 := $i347; + assume {:branchcond $i351} true; + goto $bb214, $bb215; +$bb214: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 9} true; + assume {:verifier.code 0} true; + assume ($i351 == 1); + goto $bb212; +$bb215: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 9} true; + assume {:verifier.code 0} true; + assume !(($i351 == 1)); + goto $bb216; +$bb216: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 318, 3} true; + assume {:verifier.code 0} true; + $i349 := $i352; + goto $bb210; +$bb217: + assume ($i363 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 11} true; + assume {:verifier.code 0} true; + $i365 := $slt.i32($i361, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i365} true; + goto $bb220, $bb222; +$bb218: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 325, 7} true; + assume {:verifier.code 0} true; + assume !(($i363 == 1)); + goto $bb219; +$bb219: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 330, 7} true; + assume {:verifier.code 0} true; + $i369 := $sext.i32.i64($i357); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 330, 9} true; + assume {:verifier.code 0} true; + $i370 := $srem.i64($i369, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 330, 7} true; + assume {:verifier.code 0} true; + $i371 := $trunc.i64.i32($i370); + call {:cexpr "a"} boogie_si_record_i32($i371); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 331, 5} true; + assume {:verifier.code 0} true; + $i372 := $add.i32($i371, $i371); + call {:cexpr "a"} boogie_si_record_i32($i372); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 332, 7} true; + assume {:verifier.code 0} true; + $i373 := $sext.i32.i64($i361); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 332, 9} true; + assume {:verifier.code 0} true; + $i374 := $srem.i64($i373, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 332, 7} true; + assume {:verifier.code 0} true; + $i375 := $trunc.i64.i32($i374); + call {:cexpr "b"} boogie_si_record_i32($i375); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 333, 5} true; + assume {:verifier.code 0} true; + $i376 := $add.i32($i375, $i375); + call {:cexpr "b"} boogie_si_record_i32($i376); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 335, 5} true; + assume {:verifier.code 0} true; + $i377 := $add.i32($i364, $i364); + call {:cexpr "c"} boogie_si_record_i32($i377); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 336, 9} true; + assume {:verifier.code 0} true; + $i378 := $slt.i32($i372, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 336, 7} true; + assume {:verifier.code 0} true; + $i379 := $i377; + assume {:branchcond $i378} true; + goto $bb226, $bb227; +$bb220: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 15} true; + assume {:verifier.code 0} true; + assume ($i365 == 1); + goto $bb221; +$bb221: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 327, 9} true; + assume {:verifier.code 0} true; + $i368 := $add.i32($i362, 1); + call {:cexpr "c"} boogie_si_record_i32($i368); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 328, 5} true; + assume {:verifier.code 0} true; + $i367 := $i368; + goto $bb225; +$bb222: + assume !(($i365 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 20} true; + assume {:verifier.code 0} true; + $i366 := $sgt.i32($i361, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 9} true; + assume {:verifier.code 0} true; + $i367 := $i362; + assume {:branchcond $i366} true; + goto $bb223, $bb224; +$bb223: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 9} true; + assume {:verifier.code 0} true; + assume ($i366 == 1); + goto $bb221; +$bb224: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 9} true; + assume {:verifier.code 0} true; + assume !(($i366 == 1)); + goto $bb225; +$bb225: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 329, 3} true; + assume {:verifier.code 0} true; + $i364 := $i367; + goto $bb219; +$bb226: + assume ($i378 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 11} true; + assume {:verifier.code 0} true; + $i380 := $slt.i32($i376, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i380} true; + goto $bb229, $bb231; +$bb227: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 336, 7} true; + assume {:verifier.code 0} true; + assume !(($i378 == 1)); + goto $bb228; +$bb228: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 341, 7} true; + assume {:verifier.code 0} true; + $i384 := $sext.i32.i64($i372); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 341, 9} true; + assume {:verifier.code 0} true; + $i385 := $srem.i64($i384, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 341, 7} true; + assume {:verifier.code 0} true; + $i386 := $trunc.i64.i32($i385); + call {:cexpr "a"} boogie_si_record_i32($i386); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 342, 5} true; + assume {:verifier.code 0} true; + $i387 := $add.i32($i386, $i386); + call {:cexpr "a"} boogie_si_record_i32($i387); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 343, 7} true; + assume {:verifier.code 0} true; + $i388 := $sext.i32.i64($i376); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 343, 9} true; + assume {:verifier.code 0} true; + $i389 := $srem.i64($i388, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 343, 7} true; + assume {:verifier.code 0} true; + $i390 := $trunc.i64.i32($i389); + call {:cexpr "b"} boogie_si_record_i32($i390); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 344, 5} true; + assume {:verifier.code 0} true; + $i391 := $add.i32($i390, $i390); + call {:cexpr "b"} boogie_si_record_i32($i391); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 346, 5} true; + assume {:verifier.code 0} true; + $i392 := $add.i32($i379, $i379); + call {:cexpr "c"} boogie_si_record_i32($i392); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 347, 9} true; + assume {:verifier.code 0} true; + $i393 := $slt.i32($i387, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 347, 7} true; + assume {:verifier.code 0} true; + $i394 := $i392; + assume {:branchcond $i393} true; + goto $bb235, $bb236; +$bb229: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 15} true; + assume {:verifier.code 0} true; + assume ($i380 == 1); + goto $bb230; +$bb230: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 338, 9} true; + assume {:verifier.code 0} true; + $i383 := $add.i32($i377, 1); + call {:cexpr "c"} boogie_si_record_i32($i383); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 339, 5} true; + assume {:verifier.code 0} true; + $i382 := $i383; + goto $bb234; +$bb231: + assume !(($i380 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 20} true; + assume {:verifier.code 0} true; + $i381 := $sgt.i32($i376, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 9} true; + assume {:verifier.code 0} true; + $i382 := $i377; + assume {:branchcond $i381} true; + goto $bb232, $bb233; +$bb232: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 9} true; + assume {:verifier.code 0} true; + assume ($i381 == 1); + goto $bb230; +$bb233: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 9} true; + assume {:verifier.code 0} true; + assume !(($i381 == 1)); + goto $bb234; +$bb234: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 340, 3} true; + assume {:verifier.code 0} true; + $i379 := $i382; + goto $bb228; +$bb235: + assume ($i393 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 11} true; + assume {:verifier.code 0} true; + $i395 := $slt.i32($i391, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i395} true; + goto $bb238, $bb240; +$bb236: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 347, 7} true; + assume {:verifier.code 0} true; + assume !(($i393 == 1)); + goto $bb237; +$bb237: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 352, 7} true; + assume {:verifier.code 0} true; + $i399 := $sext.i32.i64($i387); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 352, 9} true; + assume {:verifier.code 0} true; + $i400 := $srem.i64($i399, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 352, 7} true; + assume {:verifier.code 0} true; + $i401 := $trunc.i64.i32($i400); + call {:cexpr "a"} boogie_si_record_i32($i401); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 353, 5} true; + assume {:verifier.code 0} true; + $i402 := $add.i32($i401, $i401); + call {:cexpr "a"} boogie_si_record_i32($i402); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 354, 7} true; + assume {:verifier.code 0} true; + $i403 := $sext.i32.i64($i391); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 354, 9} true; + assume {:verifier.code 0} true; + $i404 := $srem.i64($i403, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 354, 7} true; + assume {:verifier.code 0} true; + $i405 := $trunc.i64.i32($i404); + call {:cexpr "b"} boogie_si_record_i32($i405); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 355, 5} true; + assume {:verifier.code 0} true; + $i406 := $add.i32($i405, $i405); + call {:cexpr "b"} boogie_si_record_i32($i406); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 357, 5} true; + assume {:verifier.code 0} true; + $i407 := $add.i32($i394, $i394); + call {:cexpr "c"} boogie_si_record_i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 358, 9} true; + assume {:verifier.code 0} true; + $i408 := $slt.i32($i402, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 358, 7} true; + assume {:verifier.code 0} true; + $i409 := $i407; + assume {:branchcond $i408} true; + goto $bb244, $bb245; +$bb238: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 15} true; + assume {:verifier.code 0} true; + assume ($i395 == 1); + goto $bb239; +$bb239: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 349, 9} true; + assume {:verifier.code 0} true; + $i398 := $add.i32($i392, 1); + call {:cexpr "c"} boogie_si_record_i32($i398); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 350, 5} true; + assume {:verifier.code 0} true; + $i397 := $i398; + goto $bb243; +$bb240: + assume !(($i395 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 20} true; + assume {:verifier.code 0} true; + $i396 := $sgt.i32($i391, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 9} true; + assume {:verifier.code 0} true; + $i397 := $i392; + assume {:branchcond $i396} true; + goto $bb241, $bb242; +$bb241: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 9} true; + assume {:verifier.code 0} true; + assume ($i396 == 1); + goto $bb239; +$bb242: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 9} true; + assume {:verifier.code 0} true; + assume !(($i396 == 1)); + goto $bb243; +$bb243: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 351, 3} true; + assume {:verifier.code 0} true; + $i394 := $i397; + goto $bb237; +$bb244: + assume ($i408 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 11} true; + assume {:verifier.code 0} true; + $i410 := $slt.i32($i406, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i410} true; + goto $bb247, $bb249; +$bb245: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 358, 7} true; + assume {:verifier.code 0} true; + assume !(($i408 == 1)); + goto $bb246; +$bb246: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 363, 7} true; + assume {:verifier.code 0} true; + $i414 := $sext.i32.i64($i402); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 363, 9} true; + assume {:verifier.code 0} true; + $i415 := $srem.i64($i414, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 363, 7} true; + assume {:verifier.code 0} true; + $i416 := $trunc.i64.i32($i415); + call {:cexpr "a"} boogie_si_record_i32($i416); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 364, 5} true; + assume {:verifier.code 0} true; + $i417 := $add.i32($i416, $i416); + call {:cexpr "a"} boogie_si_record_i32($i417); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 365, 7} true; + assume {:verifier.code 0} true; + $i418 := $sext.i32.i64($i406); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 365, 9} true; + assume {:verifier.code 0} true; + $i419 := $srem.i64($i418, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 365, 7} true; + assume {:verifier.code 0} true; + $i420 := $trunc.i64.i32($i419); + call {:cexpr "b"} boogie_si_record_i32($i420); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 366, 5} true; + assume {:verifier.code 0} true; + $i421 := $add.i32($i420, $i420); + call {:cexpr "b"} boogie_si_record_i32($i421); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 368, 5} true; + assume {:verifier.code 0} true; + $i422 := $add.i32($i409, $i409); + call {:cexpr "c"} boogie_si_record_i32($i422); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 369, 9} true; + assume {:verifier.code 0} true; + $i423 := $slt.i32($i417, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 369, 7} true; + assume {:verifier.code 0} true; + $i424 := $i422; + assume {:branchcond $i423} true; + goto $bb253, $bb254; +$bb247: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 15} true; + assume {:verifier.code 0} true; + assume ($i410 == 1); + goto $bb248; +$bb248: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 360, 9} true; + assume {:verifier.code 0} true; + $i413 := $add.i32($i407, 1); + call {:cexpr "c"} boogie_si_record_i32($i413); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 361, 5} true; + assume {:verifier.code 0} true; + $i412 := $i413; + goto $bb252; +$bb249: + assume !(($i410 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 20} true; + assume {:verifier.code 0} true; + $i411 := $sgt.i32($i406, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 9} true; + assume {:verifier.code 0} true; + $i412 := $i407; + assume {:branchcond $i411} true; + goto $bb250, $bb251; +$bb250: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 9} true; + assume {:verifier.code 0} true; + assume ($i411 == 1); + goto $bb248; +$bb251: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 9} true; + assume {:verifier.code 0} true; + assume !(($i411 == 1)); + goto $bb252; +$bb252: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 362, 3} true; + assume {:verifier.code 0} true; + $i409 := $i412; + goto $bb246; +$bb253: + assume ($i423 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 11} true; + assume {:verifier.code 0} true; + $i425 := $slt.i32($i421, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i425} true; + goto $bb256, $bb258; +$bb254: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 369, 7} true; + assume {:verifier.code 0} true; + assume !(($i423 == 1)); + goto $bb255; +$bb255: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 374, 7} true; + assume {:verifier.code 0} true; + $i429 := $sext.i32.i64($i417); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 374, 9} true; + assume {:verifier.code 0} true; + $i430 := $srem.i64($i429, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 374, 7} true; + assume {:verifier.code 0} true; + $i431 := $trunc.i64.i32($i430); + call {:cexpr "a"} boogie_si_record_i32($i431); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 375, 5} true; + assume {:verifier.code 0} true; + $i432 := $add.i32($i431, $i431); + call {:cexpr "a"} boogie_si_record_i32($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 376, 7} true; + assume {:verifier.code 0} true; + $i433 := $sext.i32.i64($i421); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 376, 9} true; + assume {:verifier.code 0} true; + $i434 := $srem.i64($i433, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 376, 7} true; + assume {:verifier.code 0} true; + $i435 := $trunc.i64.i32($i434); + call {:cexpr "b"} boogie_si_record_i32($i435); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 377, 5} true; + assume {:verifier.code 0} true; + $i436 := $add.i32($i435, $i435); + call {:cexpr "b"} boogie_si_record_i32($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 379, 5} true; + assume {:verifier.code 0} true; + $i437 := $add.i32($i424, $i424); + call {:cexpr "c"} boogie_si_record_i32($i437); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 380, 9} true; + assume {:verifier.code 0} true; + $i438 := $slt.i32($i432, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 380, 7} true; + assume {:verifier.code 0} true; + $i439 := $i437; + assume {:branchcond $i438} true; + goto $bb262, $bb263; +$bb256: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 15} true; + assume {:verifier.code 0} true; + assume ($i425 == 1); + goto $bb257; +$bb257: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 371, 9} true; + assume {:verifier.code 0} true; + $i428 := $add.i32($i422, 1); + call {:cexpr "c"} boogie_si_record_i32($i428); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 372, 5} true; + assume {:verifier.code 0} true; + $i427 := $i428; + goto $bb261; +$bb258: + assume !(($i425 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 20} true; + assume {:verifier.code 0} true; + $i426 := $sgt.i32($i421, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 9} true; + assume {:verifier.code 0} true; + $i427 := $i422; + assume {:branchcond $i426} true; + goto $bb259, $bb260; +$bb259: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 9} true; + assume {:verifier.code 0} true; + assume ($i426 == 1); + goto $bb257; +$bb260: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 9} true; + assume {:verifier.code 0} true; + assume !(($i426 == 1)); + goto $bb261; +$bb261: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 373, 3} true; + assume {:verifier.code 0} true; + $i424 := $i427; + goto $bb255; +$bb262: + assume ($i438 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 11} true; + assume {:verifier.code 0} true; + $i440 := $slt.i32($i436, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i440} true; + goto $bb265, $bb267; +$bb263: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 380, 7} true; + assume {:verifier.code 0} true; + assume !(($i438 == 1)); + goto $bb264; +$bb264: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 385, 7} true; + assume {:verifier.code 0} true; + $i444 := $sext.i32.i64($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 385, 9} true; + assume {:verifier.code 0} true; + $i445 := $srem.i64($i444, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 385, 7} true; + assume {:verifier.code 0} true; + $i446 := $trunc.i64.i32($i445); + call {:cexpr "a"} boogie_si_record_i32($i446); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 386, 5} true; + assume {:verifier.code 0} true; + $i447 := $add.i32($i446, $i446); + call {:cexpr "a"} boogie_si_record_i32($i447); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 387, 7} true; + assume {:verifier.code 0} true; + $i448 := $sext.i32.i64($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 387, 9} true; + assume {:verifier.code 0} true; + $i449 := $srem.i64($i448, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 387, 7} true; + assume {:verifier.code 0} true; + $i450 := $trunc.i64.i32($i449); + call {:cexpr "b"} boogie_si_record_i32($i450); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 388, 5} true; + assume {:verifier.code 0} true; + $i451 := $add.i32($i450, $i450); + call {:cexpr "b"} boogie_si_record_i32($i451); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 390, 5} true; + assume {:verifier.code 0} true; + $i452 := $add.i32($i439, $i439); + call {:cexpr "c"} boogie_si_record_i32($i452); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 391, 9} true; + assume {:verifier.code 0} true; + $i453 := $slt.i32($i447, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 391, 7} true; + assume {:verifier.code 0} true; + $i454 := $i452; + assume {:branchcond $i453} true; + goto $bb271, $bb272; +$bb265: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 15} true; + assume {:verifier.code 0} true; + assume ($i440 == 1); + goto $bb266; +$bb266: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 382, 9} true; + assume {:verifier.code 0} true; + $i443 := $add.i32($i437, 1); + call {:cexpr "c"} boogie_si_record_i32($i443); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 383, 5} true; + assume {:verifier.code 0} true; + $i442 := $i443; + goto $bb270; +$bb267: + assume !(($i440 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 20} true; + assume {:verifier.code 0} true; + $i441 := $sgt.i32($i436, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 9} true; + assume {:verifier.code 0} true; + $i442 := $i437; + assume {:branchcond $i441} true; + goto $bb268, $bb269; +$bb268: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 9} true; + assume {:verifier.code 0} true; + assume ($i441 == 1); + goto $bb266; +$bb269: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 9} true; + assume {:verifier.code 0} true; + assume !(($i441 == 1)); + goto $bb270; +$bb270: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 384, 3} true; + assume {:verifier.code 0} true; + $i439 := $i442; + goto $bb264; +$bb271: + assume ($i453 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 11} true; + assume {:verifier.code 0} true; + $i455 := $slt.i32($i451, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i455} true; + goto $bb274, $bb276; +$bb272: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 391, 7} true; + assume {:verifier.code 0} true; + assume !(($i453 == 1)); + goto $bb273; +$bb273: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 396, 7} true; + assume {:verifier.code 0} true; + $i459 := $sext.i32.i64($i447); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 396, 9} true; + assume {:verifier.code 0} true; + $i460 := $srem.i64($i459, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 396, 7} true; + assume {:verifier.code 0} true; + $i461 := $trunc.i64.i32($i460); + call {:cexpr "a"} boogie_si_record_i32($i461); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 397, 5} true; + assume {:verifier.code 0} true; + $i462 := $add.i32($i461, $i461); + call {:cexpr "a"} boogie_si_record_i32($i462); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 398, 7} true; + assume {:verifier.code 0} true; + $i463 := $sext.i32.i64($i451); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 398, 9} true; + assume {:verifier.code 0} true; + $i464 := $srem.i64($i463, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 398, 7} true; + assume {:verifier.code 0} true; + $i465 := $trunc.i64.i32($i464); + call {:cexpr "b"} boogie_si_record_i32($i465); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 399, 5} true; + assume {:verifier.code 0} true; + $i466 := $add.i32($i465, $i465); + call {:cexpr "b"} boogie_si_record_i32($i466); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 401, 5} true; + assume {:verifier.code 0} true; + $i467 := $add.i32($i454, $i454); + call {:cexpr "c"} boogie_si_record_i32($i467); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 402, 9} true; + assume {:verifier.code 0} true; + $i468 := $slt.i32($i462, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 402, 7} true; + assume {:verifier.code 0} true; + $i469 := $i467; + assume {:branchcond $i468} true; + goto $bb280, $bb281; +$bb274: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 15} true; + assume {:verifier.code 0} true; + assume ($i455 == 1); + goto $bb275; +$bb275: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 393, 9} true; + assume {:verifier.code 0} true; + $i458 := $add.i32($i452, 1); + call {:cexpr "c"} boogie_si_record_i32($i458); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 394, 5} true; + assume {:verifier.code 0} true; + $i457 := $i458; + goto $bb279; +$bb276: + assume !(($i455 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 20} true; + assume {:verifier.code 0} true; + $i456 := $sgt.i32($i451, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 9} true; + assume {:verifier.code 0} true; + $i457 := $i452; + assume {:branchcond $i456} true; + goto $bb277, $bb278; +$bb277: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 9} true; + assume {:verifier.code 0} true; + assume ($i456 == 1); + goto $bb275; +$bb278: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 9} true; + assume {:verifier.code 0} true; + assume !(($i456 == 1)); + goto $bb279; +$bb279: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 395, 3} true; + assume {:verifier.code 0} true; + $i454 := $i457; + goto $bb273; +$bb280: + assume ($i468 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 11} true; + assume {:verifier.code 0} true; + $i470 := $slt.i32($i466, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i470} true; + goto $bb283, $bb285; +$bb281: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 402, 7} true; + assume {:verifier.code 0} true; + assume !(($i468 == 1)); + goto $bb282; +$bb282: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 407, 7} true; + assume {:verifier.code 0} true; + $i474 := $sext.i32.i64($i462); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 407, 9} true; + assume {:verifier.code 0} true; + $i475 := $srem.i64($i474, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 407, 7} true; + assume {:verifier.code 0} true; + $i476 := $trunc.i64.i32($i475); + call {:cexpr "a"} boogie_si_record_i32($i476); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 408, 5} true; + assume {:verifier.code 0} true; + $i477 := $add.i32($i476, $i476); + call {:cexpr "a"} boogie_si_record_i32($i477); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 409, 7} true; + assume {:verifier.code 0} true; + $i478 := $sext.i32.i64($i466); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 409, 9} true; + assume {:verifier.code 0} true; + $i479 := $srem.i64($i478, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 409, 7} true; + assume {:verifier.code 0} true; + $i480 := $trunc.i64.i32($i479); + call {:cexpr "b"} boogie_si_record_i32($i480); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 410, 5} true; + assume {:verifier.code 0} true; + $i481 := $add.i32($i480, $i480); + call {:cexpr "b"} boogie_si_record_i32($i481); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 412, 5} true; + assume {:verifier.code 0} true; + $i482 := $add.i32($i469, $i469); + call {:cexpr "c"} boogie_si_record_i32($i482); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 413, 9} true; + assume {:verifier.code 0} true; + $i483 := $slt.i32($i477, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 413, 7} true; + assume {:verifier.code 0} true; + $i484 := $i482; + assume {:branchcond $i483} true; + goto $bb289, $bb290; +$bb283: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 15} true; + assume {:verifier.code 0} true; + assume ($i470 == 1); + goto $bb284; +$bb284: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 404, 9} true; + assume {:verifier.code 0} true; + $i473 := $add.i32($i467, 1); + call {:cexpr "c"} boogie_si_record_i32($i473); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 405, 5} true; + assume {:verifier.code 0} true; + $i472 := $i473; + goto $bb288; +$bb285: + assume !(($i470 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 20} true; + assume {:verifier.code 0} true; + $i471 := $sgt.i32($i466, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 9} true; + assume {:verifier.code 0} true; + $i472 := $i467; + assume {:branchcond $i471} true; + goto $bb286, $bb287; +$bb286: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 9} true; + assume {:verifier.code 0} true; + assume ($i471 == 1); + goto $bb284; +$bb287: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 9} true; + assume {:verifier.code 0} true; + assume !(($i471 == 1)); + goto $bb288; +$bb288: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 406, 3} true; + assume {:verifier.code 0} true; + $i469 := $i472; + goto $bb282; +$bb289: + assume ($i483 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 11} true; + assume {:verifier.code 0} true; + $i485 := $slt.i32($i481, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i485} true; + goto $bb292, $bb294; +$bb290: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 413, 7} true; + assume {:verifier.code 0} true; + assume !(($i483 == 1)); + goto $bb291; +$bb291: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 418, 7} true; + assume {:verifier.code 0} true; + $i489 := $sext.i32.i64($i477); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 418, 9} true; + assume {:verifier.code 0} true; + $i490 := $srem.i64($i489, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 418, 7} true; + assume {:verifier.code 0} true; + $i491 := $trunc.i64.i32($i490); + call {:cexpr "a"} boogie_si_record_i32($i491); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 419, 5} true; + assume {:verifier.code 0} true; + $i492 := $add.i32($i491, $i491); + call {:cexpr "a"} boogie_si_record_i32($i492); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 420, 7} true; + assume {:verifier.code 0} true; + $i493 := $sext.i32.i64($i481); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 420, 9} true; + assume {:verifier.code 0} true; + $i494 := $srem.i64($i493, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 420, 7} true; + assume {:verifier.code 0} true; + $i495 := $trunc.i64.i32($i494); + call {:cexpr "b"} boogie_si_record_i32($i495); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 421, 5} true; + assume {:verifier.code 0} true; + $i496 := $add.i32($i495, $i495); + call {:cexpr "b"} boogie_si_record_i32($i496); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 423, 5} true; + assume {:verifier.code 0} true; + $i497 := $add.i32($i484, $i484); + call {:cexpr "c"} boogie_si_record_i32($i497); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 424, 9} true; + assume {:verifier.code 0} true; + $i498 := $slt.i32($i492, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 424, 7} true; + assume {:verifier.code 0} true; + $i499 := $i497; + assume {:branchcond $i498} true; + goto $bb298, $bb299; +$bb292: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 15} true; + assume {:verifier.code 0} true; + assume ($i485 == 1); + goto $bb293; +$bb293: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 415, 9} true; + assume {:verifier.code 0} true; + $i488 := $add.i32($i482, 1); + call {:cexpr "c"} boogie_si_record_i32($i488); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 416, 5} true; + assume {:verifier.code 0} true; + $i487 := $i488; + goto $bb297; +$bb294: + assume !(($i485 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 20} true; + assume {:verifier.code 0} true; + $i486 := $sgt.i32($i481, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 9} true; + assume {:verifier.code 0} true; + $i487 := $i482; + assume {:branchcond $i486} true; + goto $bb295, $bb296; +$bb295: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 9} true; + assume {:verifier.code 0} true; + assume ($i486 == 1); + goto $bb293; +$bb296: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 9} true; + assume {:verifier.code 0} true; + assume !(($i486 == 1)); + goto $bb297; +$bb297: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 417, 3} true; + assume {:verifier.code 0} true; + $i484 := $i487; + goto $bb291; +$bb298: + assume ($i498 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 11} true; + assume {:verifier.code 0} true; + $i500 := $slt.i32($i496, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i500} true; + goto $bb301, $bb303; +$bb299: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 424, 7} true; + assume {:verifier.code 0} true; + assume !(($i498 == 1)); + goto $bb300; +$bb300: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 429, 7} true; + assume {:verifier.code 0} true; + $i504 := $sext.i32.i64($i492); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 429, 9} true; + assume {:verifier.code 0} true; + $i505 := $srem.i64($i504, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 429, 7} true; + assume {:verifier.code 0} true; + $i506 := $trunc.i64.i32($i505); + call {:cexpr "a"} boogie_si_record_i32($i506); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 430, 5} true; + assume {:verifier.code 0} true; + $i507 := $add.i32($i506, $i506); + call {:cexpr "a"} boogie_si_record_i32($i507); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 431, 7} true; + assume {:verifier.code 0} true; + $i508 := $sext.i32.i64($i496); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 431, 9} true; + assume {:verifier.code 0} true; + $i509 := $srem.i64($i508, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 431, 7} true; + assume {:verifier.code 0} true; + $i510 := $trunc.i64.i32($i509); + call {:cexpr "b"} boogie_si_record_i32($i510); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 432, 5} true; + assume {:verifier.code 0} true; + $i511 := $add.i32($i510, $i510); + call {:cexpr "b"} boogie_si_record_i32($i511); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 434, 5} true; + assume {:verifier.code 0} true; + $i512 := $add.i32($i499, $i499); + call {:cexpr "c"} boogie_si_record_i32($i512); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 435, 9} true; + assume {:verifier.code 0} true; + $i513 := $slt.i32($i507, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 435, 7} true; + assume {:verifier.code 0} true; + $i514 := $i512; + assume {:branchcond $i513} true; + goto $bb307, $bb308; +$bb301: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 15} true; + assume {:verifier.code 0} true; + assume ($i500 == 1); + goto $bb302; +$bb302: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 426, 9} true; + assume {:verifier.code 0} true; + $i503 := $add.i32($i497, 1); + call {:cexpr "c"} boogie_si_record_i32($i503); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 427, 5} true; + assume {:verifier.code 0} true; + $i502 := $i503; + goto $bb306; +$bb303: + assume !(($i500 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 20} true; + assume {:verifier.code 0} true; + $i501 := $sgt.i32($i496, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 9} true; + assume {:verifier.code 0} true; + $i502 := $i497; + assume {:branchcond $i501} true; + goto $bb304, $bb305; +$bb304: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 9} true; + assume {:verifier.code 0} true; + assume ($i501 == 1); + goto $bb302; +$bb305: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 9} true; + assume {:verifier.code 0} true; + assume !(($i501 == 1)); + goto $bb306; +$bb306: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 428, 3} true; + assume {:verifier.code 0} true; + $i499 := $i502; + goto $bb300; +$bb307: + assume ($i513 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 11} true; + assume {:verifier.code 0} true; + $i515 := $slt.i32($i511, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i515} true; + goto $bb310, $bb312; +$bb308: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 435, 7} true; + assume {:verifier.code 0} true; + assume !(($i513 == 1)); + goto $bb309; +$bb309: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 440, 7} true; + assume {:verifier.code 0} true; + $i519 := $sext.i32.i64($i507); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 440, 9} true; + assume {:verifier.code 0} true; + $i520 := $srem.i64($i519, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 440, 7} true; + assume {:verifier.code 0} true; + $i521 := $trunc.i64.i32($i520); + call {:cexpr "a"} boogie_si_record_i32($i521); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 441, 5} true; + assume {:verifier.code 0} true; + $i522 := $add.i32($i521, $i521); + call {:cexpr "a"} boogie_si_record_i32($i522); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 442, 7} true; + assume {:verifier.code 0} true; + $i523 := $sext.i32.i64($i511); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 442, 9} true; + assume {:verifier.code 0} true; + $i524 := $srem.i64($i523, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 442, 7} true; + assume {:verifier.code 0} true; + $i525 := $trunc.i64.i32($i524); + call {:cexpr "b"} boogie_si_record_i32($i525); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 443, 5} true; + assume {:verifier.code 0} true; + $i526 := $add.i32($i525, $i525); + call {:cexpr "b"} boogie_si_record_i32($i526); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 445, 5} true; + assume {:verifier.code 0} true; + $i527 := $add.i32($i514, $i514); + call {:cexpr "c"} boogie_si_record_i32($i527); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 446, 9} true; + assume {:verifier.code 0} true; + $i528 := $slt.i32($i522, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 446, 7} true; + assume {:verifier.code 0} true; + $i529 := $i527; + assume {:branchcond $i528} true; + goto $bb316, $bb317; +$bb310: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 15} true; + assume {:verifier.code 0} true; + assume ($i515 == 1); + goto $bb311; +$bb311: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 437, 9} true; + assume {:verifier.code 0} true; + $i518 := $add.i32($i512, 1); + call {:cexpr "c"} boogie_si_record_i32($i518); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 438, 5} true; + assume {:verifier.code 0} true; + $i517 := $i518; + goto $bb315; +$bb312: + assume !(($i515 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 20} true; + assume {:verifier.code 0} true; + $i516 := $sgt.i32($i511, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 9} true; + assume {:verifier.code 0} true; + $i517 := $i512; + assume {:branchcond $i516} true; + goto $bb313, $bb314; +$bb313: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 9} true; + assume {:verifier.code 0} true; + assume ($i516 == 1); + goto $bb311; +$bb314: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 9} true; + assume {:verifier.code 0} true; + assume !(($i516 == 1)); + goto $bb315; +$bb315: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 439, 3} true; + assume {:verifier.code 0} true; + $i514 := $i517; + goto $bb309; +$bb316: + assume ($i528 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 11} true; + assume {:verifier.code 0} true; + $i530 := $slt.i32($i526, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i530} true; + goto $bb319, $bb321; +$bb317: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 446, 7} true; + assume {:verifier.code 0} true; + assume !(($i528 == 1)); + goto $bb318; +$bb318: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 451, 7} true; + assume {:verifier.code 0} true; + $i534 := $sext.i32.i64($i522); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 451, 9} true; + assume {:verifier.code 0} true; + $i535 := $srem.i64($i534, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 451, 7} true; + assume {:verifier.code 0} true; + $i536 := $trunc.i64.i32($i535); + call {:cexpr "a"} boogie_si_record_i32($i536); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 452, 5} true; + assume {:verifier.code 0} true; + $i537 := $add.i32($i536, $i536); + call {:cexpr "a"} boogie_si_record_i32($i537); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 453, 7} true; + assume {:verifier.code 0} true; + $i538 := $sext.i32.i64($i526); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 453, 9} true; + assume {:verifier.code 0} true; + $i539 := $srem.i64($i538, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 453, 7} true; + assume {:verifier.code 0} true; + $i540 := $trunc.i64.i32($i539); + call {:cexpr "b"} boogie_si_record_i32($i540); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 454, 5} true; + assume {:verifier.code 0} true; + $i541 := $add.i32($i540, $i540); + call {:cexpr "b"} boogie_si_record_i32($i541); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 456, 5} true; + assume {:verifier.code 0} true; + $i542 := $add.i32($i529, $i529); + call {:cexpr "c"} boogie_si_record_i32($i542); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 457, 9} true; + assume {:verifier.code 0} true; + $i543 := $slt.i32($i537, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 457, 7} true; + assume {:verifier.code 0} true; + $i544 := $i542; + assume {:branchcond $i543} true; + goto $bb325, $bb326; +$bb319: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 15} true; + assume {:verifier.code 0} true; + assume ($i530 == 1); + goto $bb320; +$bb320: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 448, 9} true; + assume {:verifier.code 0} true; + $i533 := $add.i32($i527, 1); + call {:cexpr "c"} boogie_si_record_i32($i533); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 449, 5} true; + assume {:verifier.code 0} true; + $i532 := $i533; + goto $bb324; +$bb321: + assume !(($i530 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 20} true; + assume {:verifier.code 0} true; + $i531 := $sgt.i32($i526, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 9} true; + assume {:verifier.code 0} true; + $i532 := $i527; + assume {:branchcond $i531} true; + goto $bb322, $bb323; +$bb322: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 9} true; + assume {:verifier.code 0} true; + assume ($i531 == 1); + goto $bb320; +$bb323: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 9} true; + assume {:verifier.code 0} true; + assume !(($i531 == 1)); + goto $bb324; +$bb324: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 450, 3} true; + assume {:verifier.code 0} true; + $i529 := $i532; + goto $bb318; +$bb325: + assume ($i543 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 11} true; + assume {:verifier.code 0} true; + $i545 := $slt.i32($i541, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i545} true; + goto $bb328, $bb330; +$bb326: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 457, 7} true; + assume {:verifier.code 0} true; + assume !(($i543 == 1)); + goto $bb327; +$bb327: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 462, 7} true; + assume {:verifier.code 0} true; + $i549 := $sext.i32.i64($i537); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 462, 9} true; + assume {:verifier.code 0} true; + $i550 := $srem.i64($i549, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 462, 7} true; + assume {:verifier.code 0} true; + $i551 := $trunc.i64.i32($i550); + call {:cexpr "a"} boogie_si_record_i32($i551); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 463, 5} true; + assume {:verifier.code 0} true; + $i552 := $add.i32($i551, $i551); + call {:cexpr "a"} boogie_si_record_i32($i552); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 464, 7} true; + assume {:verifier.code 0} true; + $i553 := $sext.i32.i64($i541); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 464, 9} true; + assume {:verifier.code 0} true; + $i554 := $srem.i64($i553, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 464, 7} true; + assume {:verifier.code 0} true; + $i555 := $trunc.i64.i32($i554); + call {:cexpr "b"} boogie_si_record_i32($i555); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 465, 5} true; + assume {:verifier.code 0} true; + $i556 := $add.i32($i555, $i555); + call {:cexpr "b"} boogie_si_record_i32($i556); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 467, 5} true; + assume {:verifier.code 0} true; + $i557 := $add.i32($i544, $i544); + call {:cexpr "c"} boogie_si_record_i32($i557); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 468, 9} true; + assume {:verifier.code 0} true; + $i558 := $slt.i32($i552, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 468, 7} true; + assume {:verifier.code 0} true; + $i559 := $i557; + assume {:branchcond $i558} true; + goto $bb334, $bb335; +$bb328: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 15} true; + assume {:verifier.code 0} true; + assume ($i545 == 1); + goto $bb329; +$bb329: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 459, 9} true; + assume {:verifier.code 0} true; + $i548 := $add.i32($i542, 1); + call {:cexpr "c"} boogie_si_record_i32($i548); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 460, 5} true; + assume {:verifier.code 0} true; + $i547 := $i548; + goto $bb333; +$bb330: + assume !(($i545 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 20} true; + assume {:verifier.code 0} true; + $i546 := $sgt.i32($i541, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 9} true; + assume {:verifier.code 0} true; + $i547 := $i542; + assume {:branchcond $i546} true; + goto $bb331, $bb332; +$bb331: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 9} true; + assume {:verifier.code 0} true; + assume ($i546 == 1); + goto $bb329; +$bb332: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 9} true; + assume {:verifier.code 0} true; + assume !(($i546 == 1)); + goto $bb333; +$bb333: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 461, 3} true; + assume {:verifier.code 0} true; + $i544 := $i547; + goto $bb327; +$bb334: + assume ($i558 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 11} true; + assume {:verifier.code 0} true; + $i560 := $slt.i32($i556, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i560} true; + goto $bb337, $bb339; +$bb335: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 468, 7} true; + assume {:verifier.code 0} true; + assume !(($i558 == 1)); + goto $bb336; +$bb336: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 473, 7} true; + assume {:verifier.code 0} true; + $i564 := $sext.i32.i64($i552); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 473, 9} true; + assume {:verifier.code 0} true; + $i565 := $srem.i64($i564, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 473, 7} true; + assume {:verifier.code 0} true; + $i566 := $trunc.i64.i32($i565); + call {:cexpr "a"} boogie_si_record_i32($i566); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 474, 5} true; + assume {:verifier.code 0} true; + $i567 := $add.i32($i566, $i566); + call {:cexpr "a"} boogie_si_record_i32($i567); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 475, 7} true; + assume {:verifier.code 0} true; + $i568 := $sext.i32.i64($i556); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 475, 9} true; + assume {:verifier.code 0} true; + $i569 := $srem.i64($i568, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 475, 7} true; + assume {:verifier.code 0} true; + $i570 := $trunc.i64.i32($i569); + call {:cexpr "b"} boogie_si_record_i32($i570); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 476, 5} true; + assume {:verifier.code 0} true; + $i571 := $add.i32($i570, $i570); + call {:cexpr "b"} boogie_si_record_i32($i571); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 478, 5} true; + assume {:verifier.code 0} true; + $i572 := $add.i32($i559, $i559); + call {:cexpr "c"} boogie_si_record_i32($i572); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 479, 9} true; + assume {:verifier.code 0} true; + $i573 := $slt.i32($i567, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 479, 7} true; + assume {:verifier.code 0} true; + $i574 := $i572; + assume {:branchcond $i573} true; + goto $bb343, $bb344; +$bb337: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 15} true; + assume {:verifier.code 0} true; + assume ($i560 == 1); + goto $bb338; +$bb338: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 470, 9} true; + assume {:verifier.code 0} true; + $i563 := $add.i32($i557, 1); + call {:cexpr "c"} boogie_si_record_i32($i563); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 471, 5} true; + assume {:verifier.code 0} true; + $i562 := $i563; + goto $bb342; +$bb339: + assume !(($i560 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 20} true; + assume {:verifier.code 0} true; + $i561 := $sgt.i32($i556, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 9} true; + assume {:verifier.code 0} true; + $i562 := $i557; + assume {:branchcond $i561} true; + goto $bb340, $bb341; +$bb340: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 9} true; + assume {:verifier.code 0} true; + assume ($i561 == 1); + goto $bb338; +$bb341: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 9} true; + assume {:verifier.code 0} true; + assume !(($i561 == 1)); + goto $bb342; +$bb342: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 472, 3} true; + assume {:verifier.code 0} true; + $i559 := $i562; + goto $bb336; +$bb343: + assume ($i573 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 11} true; + assume {:verifier.code 0} true; + $i575 := $slt.i32($i571, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i575} true; + goto $bb346, $bb348; +$bb344: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 479, 7} true; + assume {:verifier.code 0} true; + assume !(($i573 == 1)); + goto $bb345; +$bb345: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 484, 7} true; + assume {:verifier.code 0} true; + $i579 := $sext.i32.i64($i567); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 484, 9} true; + assume {:verifier.code 0} true; + $i580 := $srem.i64($i579, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 484, 7} true; + assume {:verifier.code 0} true; + $i581 := $trunc.i64.i32($i580); + call {:cexpr "a"} boogie_si_record_i32($i581); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 485, 5} true; + assume {:verifier.code 0} true; + $i582 := $add.i32($i581, $i581); + call {:cexpr "a"} boogie_si_record_i32($i582); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 486, 7} true; + assume {:verifier.code 0} true; + $i583 := $sext.i32.i64($i571); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 486, 9} true; + assume {:verifier.code 0} true; + $i584 := $srem.i64($i583, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 486, 7} true; + assume {:verifier.code 0} true; + $i585 := $trunc.i64.i32($i584); + call {:cexpr "b"} boogie_si_record_i32($i585); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 487, 5} true; + assume {:verifier.code 0} true; + $i586 := $add.i32($i585, $i585); + call {:cexpr "b"} boogie_si_record_i32($i586); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 489, 5} true; + assume {:verifier.code 0} true; + $i587 := $add.i32($i574, $i574); + call {:cexpr "c"} boogie_si_record_i32($i587); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 490, 9} true; + assume {:verifier.code 0} true; + $i588 := $slt.i32($i582, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 490, 7} true; + assume {:verifier.code 0} true; + $i589 := $i587; + assume {:branchcond $i588} true; + goto $bb352, $bb353; +$bb346: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 15} true; + assume {:verifier.code 0} true; + assume ($i575 == 1); + goto $bb347; +$bb347: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 481, 9} true; + assume {:verifier.code 0} true; + $i578 := $add.i32($i572, 1); + call {:cexpr "c"} boogie_si_record_i32($i578); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 482, 5} true; + assume {:verifier.code 0} true; + $i577 := $i578; + goto $bb351; +$bb348: + assume !(($i575 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 20} true; + assume {:verifier.code 0} true; + $i576 := $sgt.i32($i571, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 9} true; + assume {:verifier.code 0} true; + $i577 := $i572; + assume {:branchcond $i576} true; + goto $bb349, $bb350; +$bb349: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 9} true; + assume {:verifier.code 0} true; + assume ($i576 == 1); + goto $bb347; +$bb350: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 9} true; + assume {:verifier.code 0} true; + assume !(($i576 == 1)); + goto $bb351; +$bb351: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 483, 3} true; + assume {:verifier.code 0} true; + $i574 := $i577; + goto $bb345; +$bb352: + assume ($i588 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 11} true; + assume {:verifier.code 0} true; + $i590 := $slt.i32($i586, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i590} true; + goto $bb355, $bb357; +$bb353: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 490, 7} true; + assume {:verifier.code 0} true; + assume !(($i588 == 1)); + goto $bb354; +$bb354: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 495, 7} true; + assume {:verifier.code 0} true; + $i594 := $sext.i32.i64($i582); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 495, 9} true; + assume {:verifier.code 0} true; + $i595 := $srem.i64($i594, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 495, 7} true; + assume {:verifier.code 0} true; + $i596 := $trunc.i64.i32($i595); + call {:cexpr "a"} boogie_si_record_i32($i596); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 496, 5} true; + assume {:verifier.code 0} true; + $i597 := $add.i32($i596, $i596); + call {:cexpr "a"} boogie_si_record_i32($i597); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 497, 7} true; + assume {:verifier.code 0} true; + $i598 := $sext.i32.i64($i586); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 497, 9} true; + assume {:verifier.code 0} true; + $i599 := $srem.i64($i598, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 497, 7} true; + assume {:verifier.code 0} true; + $i600 := $trunc.i64.i32($i599); + call {:cexpr "b"} boogie_si_record_i32($i600); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 498, 5} true; + assume {:verifier.code 0} true; + $i601 := $add.i32($i600, $i600); + call {:cexpr "b"} boogie_si_record_i32($i601); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 500, 5} true; + assume {:verifier.code 0} true; + $i602 := $add.i32($i589, $i589); + call {:cexpr "c"} boogie_si_record_i32($i602); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 501, 9} true; + assume {:verifier.code 0} true; + $i603 := $slt.i32($i597, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 501, 7} true; + assume {:verifier.code 0} true; + $i604 := $i602; + assume {:branchcond $i603} true; + goto $bb361, $bb362; +$bb355: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 15} true; + assume {:verifier.code 0} true; + assume ($i590 == 1); + goto $bb356; +$bb356: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 492, 9} true; + assume {:verifier.code 0} true; + $i593 := $add.i32($i587, 1); + call {:cexpr "c"} boogie_si_record_i32($i593); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 493, 5} true; + assume {:verifier.code 0} true; + $i592 := $i593; + goto $bb360; +$bb357: + assume !(($i590 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 20} true; + assume {:verifier.code 0} true; + $i591 := $sgt.i32($i586, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 9} true; + assume {:verifier.code 0} true; + $i592 := $i587; + assume {:branchcond $i591} true; + goto $bb358, $bb359; +$bb358: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 9} true; + assume {:verifier.code 0} true; + assume ($i591 == 1); + goto $bb356; +$bb359: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 9} true; + assume {:verifier.code 0} true; + assume !(($i591 == 1)); + goto $bb360; +$bb360: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 494, 3} true; + assume {:verifier.code 0} true; + $i589 := $i592; + goto $bb354; +$bb361: + assume ($i603 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 11} true; + assume {:verifier.code 0} true; + $i605 := $slt.i32($i601, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i605} true; + goto $bb364, $bb366; +$bb362: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 501, 7} true; + assume {:verifier.code 0} true; + assume !(($i603 == 1)); + goto $bb363; +$bb363: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 506, 7} true; + assume {:verifier.code 0} true; + $i609 := $sext.i32.i64($i597); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 506, 9} true; + assume {:verifier.code 0} true; + $i610 := $srem.i64($i609, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 506, 7} true; + assume {:verifier.code 0} true; + $i611 := $trunc.i64.i32($i610); + call {:cexpr "a"} boogie_si_record_i32($i611); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 507, 5} true; + assume {:verifier.code 0} true; + $i612 := $add.i32($i611, $i611); + call {:cexpr "a"} boogie_si_record_i32($i612); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 508, 7} true; + assume {:verifier.code 0} true; + $i613 := $sext.i32.i64($i601); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 508, 9} true; + assume {:verifier.code 0} true; + $i614 := $srem.i64($i613, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 508, 7} true; + assume {:verifier.code 0} true; + $i615 := $trunc.i64.i32($i614); + call {:cexpr "b"} boogie_si_record_i32($i615); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 509, 5} true; + assume {:verifier.code 0} true; + $i616 := $add.i32($i615, $i615); + call {:cexpr "b"} boogie_si_record_i32($i616); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 511, 5} true; + assume {:verifier.code 0} true; + $i617 := $add.i32($i604, $i604); + call {:cexpr "c"} boogie_si_record_i32($i617); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 512, 9} true; + assume {:verifier.code 0} true; + $i618 := $slt.i32($i612, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 512, 7} true; + assume {:verifier.code 0} true; + $i619 := $i617; + assume {:branchcond $i618} true; + goto $bb370, $bb371; +$bb364: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 15} true; + assume {:verifier.code 0} true; + assume ($i605 == 1); + goto $bb365; +$bb365: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 503, 9} true; + assume {:verifier.code 0} true; + $i608 := $add.i32($i602, 1); + call {:cexpr "c"} boogie_si_record_i32($i608); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 504, 5} true; + assume {:verifier.code 0} true; + $i607 := $i608; + goto $bb369; +$bb366: + assume !(($i605 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 20} true; + assume {:verifier.code 0} true; + $i606 := $sgt.i32($i601, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 9} true; + assume {:verifier.code 0} true; + $i607 := $i602; + assume {:branchcond $i606} true; + goto $bb367, $bb368; +$bb367: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 9} true; + assume {:verifier.code 0} true; + assume ($i606 == 1); + goto $bb365; +$bb368: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 9} true; + assume {:verifier.code 0} true; + assume !(($i606 == 1)); + goto $bb369; +$bb369: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 505, 3} true; + assume {:verifier.code 0} true; + $i604 := $i607; + goto $bb363; +$bb370: + assume ($i618 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 11} true; + assume {:verifier.code 0} true; + $i620 := $slt.i32($i616, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i620} true; + goto $bb373, $bb375; +$bb371: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 512, 7} true; + assume {:verifier.code 0} true; + assume !(($i618 == 1)); + goto $bb372; +$bb372: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 517, 7} true; + assume {:verifier.code 0} true; + $i624 := $sext.i32.i64($i612); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 517, 9} true; + assume {:verifier.code 0} true; + $i625 := $srem.i64($i624, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 517, 7} true; + assume {:verifier.code 0} true; + $i626 := $trunc.i64.i32($i625); + call {:cexpr "a"} boogie_si_record_i32($i626); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 518, 5} true; + assume {:verifier.code 0} true; + $i627 := $add.i32($i626, $i626); + call {:cexpr "a"} boogie_si_record_i32($i627); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 519, 7} true; + assume {:verifier.code 0} true; + $i628 := $sext.i32.i64($i616); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 519, 9} true; + assume {:verifier.code 0} true; + $i629 := $srem.i64($i628, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 519, 7} true; + assume {:verifier.code 0} true; + $i630 := $trunc.i64.i32($i629); + call {:cexpr "b"} boogie_si_record_i32($i630); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 520, 5} true; + assume {:verifier.code 0} true; + $i631 := $add.i32($i630, $i630); + call {:cexpr "b"} boogie_si_record_i32($i631); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 522, 5} true; + assume {:verifier.code 0} true; + $i632 := $add.i32($i619, $i619); + call {:cexpr "c"} boogie_si_record_i32($i632); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 523, 9} true; + assume {:verifier.code 0} true; + $i633 := $slt.i32($i627, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 523, 7} true; + assume {:verifier.code 0} true; + $i634 := $i632; + assume {:branchcond $i633} true; + goto $bb379, $bb380; +$bb373: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 15} true; + assume {:verifier.code 0} true; + assume ($i620 == 1); + goto $bb374; +$bb374: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 514, 9} true; + assume {:verifier.code 0} true; + $i623 := $add.i32($i617, 1); + call {:cexpr "c"} boogie_si_record_i32($i623); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 515, 5} true; + assume {:verifier.code 0} true; + $i622 := $i623; + goto $bb378; +$bb375: + assume !(($i620 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 20} true; + assume {:verifier.code 0} true; + $i621 := $sgt.i32($i616, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 9} true; + assume {:verifier.code 0} true; + $i622 := $i617; + assume {:branchcond $i621} true; + goto $bb376, $bb377; +$bb376: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 9} true; + assume {:verifier.code 0} true; + assume ($i621 == 1); + goto $bb374; +$bb377: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 9} true; + assume {:verifier.code 0} true; + assume !(($i621 == 1)); + goto $bb378; +$bb378: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 516, 3} true; + assume {:verifier.code 0} true; + $i619 := $i622; + goto $bb372; +$bb379: + assume ($i633 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 11} true; + assume {:verifier.code 0} true; + $i635 := $slt.i32($i631, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i635} true; + goto $bb382, $bb384; +$bb380: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 523, 7} true; + assume {:verifier.code 0} true; + assume !(($i633 == 1)); + goto $bb381; +$bb381: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 528, 7} true; + assume {:verifier.code 0} true; + $i639 := $sext.i32.i64($i627); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 528, 9} true; + assume {:verifier.code 0} true; + $i640 := $srem.i64($i639, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 528, 7} true; + assume {:verifier.code 0} true; + $i641 := $trunc.i64.i32($i640); + call {:cexpr "a"} boogie_si_record_i32($i641); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 529, 5} true; + assume {:verifier.code 0} true; + $i642 := $add.i32($i641, $i641); + call {:cexpr "a"} boogie_si_record_i32($i642); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 530, 7} true; + assume {:verifier.code 0} true; + $i643 := $sext.i32.i64($i631); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 530, 9} true; + assume {:verifier.code 0} true; + $i644 := $srem.i64($i643, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 530, 7} true; + assume {:verifier.code 0} true; + $i645 := $trunc.i64.i32($i644); + call {:cexpr "b"} boogie_si_record_i32($i645); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 531, 5} true; + assume {:verifier.code 0} true; + $i646 := $add.i32($i645, $i645); + call {:cexpr "b"} boogie_si_record_i32($i646); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 533, 5} true; + assume {:verifier.code 0} true; + $i647 := $add.i32($i634, $i634); + call {:cexpr "c"} boogie_si_record_i32($i647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 534, 9} true; + assume {:verifier.code 0} true; + $i648 := $slt.i32($i642, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 534, 7} true; + assume {:verifier.code 0} true; + $i649 := $i647; + assume {:branchcond $i648} true; + goto $bb388, $bb389; +$bb382: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 15} true; + assume {:verifier.code 0} true; + assume ($i635 == 1); + goto $bb383; +$bb383: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 525, 9} true; + assume {:verifier.code 0} true; + $i638 := $add.i32($i632, 1); + call {:cexpr "c"} boogie_si_record_i32($i638); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 526, 5} true; + assume {:verifier.code 0} true; + $i637 := $i638; + goto $bb387; +$bb384: + assume !(($i635 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 20} true; + assume {:verifier.code 0} true; + $i636 := $sgt.i32($i631, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 9} true; + assume {:verifier.code 0} true; + $i637 := $i632; + assume {:branchcond $i636} true; + goto $bb385, $bb386; +$bb385: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 9} true; + assume {:verifier.code 0} true; + assume ($i636 == 1); + goto $bb383; +$bb386: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 9} true; + assume {:verifier.code 0} true; + assume !(($i636 == 1)); + goto $bb387; +$bb387: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 527, 3} true; + assume {:verifier.code 0} true; + $i634 := $i637; + goto $bb381; +$bb388: + assume ($i648 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 11} true; + assume {:verifier.code 0} true; + $i650 := $slt.i32($i646, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i650} true; + goto $bb391, $bb393; +$bb389: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 534, 7} true; + assume {:verifier.code 0} true; + assume !(($i648 == 1)); + goto $bb390; +$bb390: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 539, 7} true; + assume {:verifier.code 0} true; + $i654 := $sext.i32.i64($i642); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 539, 9} true; + assume {:verifier.code 0} true; + $i655 := $srem.i64($i654, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 539, 7} true; + assume {:verifier.code 0} true; + $i656 := $trunc.i64.i32($i655); + call {:cexpr "a"} boogie_si_record_i32($i656); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 540, 5} true; + assume {:verifier.code 0} true; + $i657 := $add.i32($i656, $i656); + call {:cexpr "a"} boogie_si_record_i32($i657); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 541, 7} true; + assume {:verifier.code 0} true; + $i658 := $sext.i32.i64($i646); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 541, 9} true; + assume {:verifier.code 0} true; + $i659 := $srem.i64($i658, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 541, 7} true; + assume {:verifier.code 0} true; + $i660 := $trunc.i64.i32($i659); + call {:cexpr "b"} boogie_si_record_i32($i660); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 542, 5} true; + assume {:verifier.code 0} true; + $i661 := $add.i32($i660, $i660); + call {:cexpr "b"} boogie_si_record_i32($i661); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 544, 5} true; + assume {:verifier.code 0} true; + $i662 := $add.i32($i649, $i649); + call {:cexpr "c"} boogie_si_record_i32($i662); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 545, 9} true; + assume {:verifier.code 0} true; + $i663 := $slt.i32($i657, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 545, 7} true; + assume {:verifier.code 0} true; + $i664 := $i662; + assume {:branchcond $i663} true; + goto $bb397, $bb398; +$bb391: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 15} true; + assume {:verifier.code 0} true; + assume ($i650 == 1); + goto $bb392; +$bb392: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 536, 9} true; + assume {:verifier.code 0} true; + $i653 := $add.i32($i647, 1); + call {:cexpr "c"} boogie_si_record_i32($i653); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 537, 5} true; + assume {:verifier.code 0} true; + $i652 := $i653; + goto $bb396; +$bb393: + assume !(($i650 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 20} true; + assume {:verifier.code 0} true; + $i651 := $sgt.i32($i646, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 9} true; + assume {:verifier.code 0} true; + $i652 := $i647; + assume {:branchcond $i651} true; + goto $bb394, $bb395; +$bb394: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 9} true; + assume {:verifier.code 0} true; + assume ($i651 == 1); + goto $bb392; +$bb395: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 9} true; + assume {:verifier.code 0} true; + assume !(($i651 == 1)); + goto $bb396; +$bb396: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 538, 3} true; + assume {:verifier.code 0} true; + $i649 := $i652; + goto $bb390; +$bb397: + assume ($i663 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 11} true; + assume {:verifier.code 0} true; + $i665 := $slt.i32($i661, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i665} true; + goto $bb400, $bb402; +$bb398: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 545, 7} true; + assume {:verifier.code 0} true; + assume !(($i663 == 1)); + goto $bb399; +$bb399: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 550, 7} true; + assume {:verifier.code 0} true; + $i669 := $sext.i32.i64($i657); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 550, 9} true; + assume {:verifier.code 0} true; + $i670 := $srem.i64($i669, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 550, 7} true; + assume {:verifier.code 0} true; + $i671 := $trunc.i64.i32($i670); + call {:cexpr "a"} boogie_si_record_i32($i671); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 551, 5} true; + assume {:verifier.code 0} true; + $i672 := $add.i32($i671, $i671); + call {:cexpr "a"} boogie_si_record_i32($i672); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 552, 7} true; + assume {:verifier.code 0} true; + $i673 := $sext.i32.i64($i661); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 552, 9} true; + assume {:verifier.code 0} true; + $i674 := $srem.i64($i673, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 552, 7} true; + assume {:verifier.code 0} true; + $i675 := $trunc.i64.i32($i674); + call {:cexpr "b"} boogie_si_record_i32($i675); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 553, 5} true; + assume {:verifier.code 0} true; + $i676 := $add.i32($i675, $i675); + call {:cexpr "b"} boogie_si_record_i32($i676); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 555, 5} true; + assume {:verifier.code 0} true; + $i677 := $add.i32($i664, $i664); + call {:cexpr "c"} boogie_si_record_i32($i677); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 556, 9} true; + assume {:verifier.code 0} true; + $i678 := $slt.i32($i672, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 556, 7} true; + assume {:verifier.code 0} true; + $i679 := $i677; + assume {:branchcond $i678} true; + goto $bb406, $bb407; +$bb400: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 15} true; + assume {:verifier.code 0} true; + assume ($i665 == 1); + goto $bb401; +$bb401: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 547, 9} true; + assume {:verifier.code 0} true; + $i668 := $add.i32($i662, 1); + call {:cexpr "c"} boogie_si_record_i32($i668); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 548, 5} true; + assume {:verifier.code 0} true; + $i667 := $i668; + goto $bb405; +$bb402: + assume !(($i665 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 20} true; + assume {:verifier.code 0} true; + $i666 := $sgt.i32($i661, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 9} true; + assume {:verifier.code 0} true; + $i667 := $i662; + assume {:branchcond $i666} true; + goto $bb403, $bb404; +$bb403: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 9} true; + assume {:verifier.code 0} true; + assume ($i666 == 1); + goto $bb401; +$bb404: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 9} true; + assume {:verifier.code 0} true; + assume !(($i666 == 1)); + goto $bb405; +$bb405: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 549, 3} true; + assume {:verifier.code 0} true; + $i664 := $i667; + goto $bb399; +$bb406: + assume ($i678 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 11} true; + assume {:verifier.code 0} true; + $i680 := $slt.i32($i676, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i680} true; + goto $bb409, $bb411; +$bb407: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 556, 7} true; + assume {:verifier.code 0} true; + assume !(($i678 == 1)); + goto $bb408; +$bb408: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 561, 7} true; + assume {:verifier.code 0} true; + $i684 := $sext.i32.i64($i672); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 561, 9} true; + assume {:verifier.code 0} true; + $i685 := $srem.i64($i684, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 561, 7} true; + assume {:verifier.code 0} true; + $i686 := $trunc.i64.i32($i685); + call {:cexpr "a"} boogie_si_record_i32($i686); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 562, 5} true; + assume {:verifier.code 0} true; + $i687 := $add.i32($i686, $i686); + call {:cexpr "a"} boogie_si_record_i32($i687); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 563, 7} true; + assume {:verifier.code 0} true; + $i688 := $sext.i32.i64($i676); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 563, 9} true; + assume {:verifier.code 0} true; + $i689 := $srem.i64($i688, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 563, 7} true; + assume {:verifier.code 0} true; + $i690 := $trunc.i64.i32($i689); + call {:cexpr "b"} boogie_si_record_i32($i690); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 564, 5} true; + assume {:verifier.code 0} true; + $i691 := $add.i32($i690, $i690); + call {:cexpr "b"} boogie_si_record_i32($i691); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 566, 5} true; + assume {:verifier.code 0} true; + $i692 := $add.i32($i679, $i679); + call {:cexpr "c"} boogie_si_record_i32($i692); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 567, 9} true; + assume {:verifier.code 0} true; + $i693 := $slt.i32($i687, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 567, 7} true; + assume {:verifier.code 0} true; + $i694 := $i692; + assume {:branchcond $i693} true; + goto $bb415, $bb416; +$bb409: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 15} true; + assume {:verifier.code 0} true; + assume ($i680 == 1); + goto $bb410; +$bb410: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 558, 9} true; + assume {:verifier.code 0} true; + $i683 := $add.i32($i677, 1); + call {:cexpr "c"} boogie_si_record_i32($i683); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 559, 5} true; + assume {:verifier.code 0} true; + $i682 := $i683; + goto $bb414; +$bb411: + assume !(($i680 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 20} true; + assume {:verifier.code 0} true; + $i681 := $sgt.i32($i676, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 9} true; + assume {:verifier.code 0} true; + $i682 := $i677; + assume {:branchcond $i681} true; + goto $bb412, $bb413; +$bb412: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 9} true; + assume {:verifier.code 0} true; + assume ($i681 == 1); + goto $bb410; +$bb413: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 9} true; + assume {:verifier.code 0} true; + assume !(($i681 == 1)); + goto $bb414; +$bb414: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 560, 3} true; + assume {:verifier.code 0} true; + $i679 := $i682; + goto $bb408; +$bb415: + assume ($i693 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 11} true; + assume {:verifier.code 0} true; + $i695 := $slt.i32($i691, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i695} true; + goto $bb418, $bb420; +$bb416: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 567, 7} true; + assume {:verifier.code 0} true; + assume !(($i693 == 1)); + goto $bb417; +$bb417: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 572, 7} true; + assume {:verifier.code 0} true; + $i699 := $sext.i32.i64($i687); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 572, 9} true; + assume {:verifier.code 0} true; + $i700 := $srem.i64($i699, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 572, 7} true; + assume {:verifier.code 0} true; + $i701 := $trunc.i64.i32($i700); + call {:cexpr "a"} boogie_si_record_i32($i701); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 573, 5} true; + assume {:verifier.code 0} true; + $i702 := $add.i32($i701, $i701); + call {:cexpr "a"} boogie_si_record_i32($i702); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 574, 7} true; + assume {:verifier.code 0} true; + $i703 := $sext.i32.i64($i691); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 574, 9} true; + assume {:verifier.code 0} true; + $i704 := $srem.i64($i703, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 574, 7} true; + assume {:verifier.code 0} true; + $i705 := $trunc.i64.i32($i704); + call {:cexpr "b"} boogie_si_record_i32($i705); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 575, 5} true; + assume {:verifier.code 0} true; + $i706 := $add.i32($i705, $i705); + call {:cexpr "b"} boogie_si_record_i32($i706); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 577, 5} true; + assume {:verifier.code 0} true; + $i707 := $add.i32($i694, $i694); + call {:cexpr "c"} boogie_si_record_i32($i707); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 578, 9} true; + assume {:verifier.code 0} true; + $i708 := $slt.i32($i702, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 578, 7} true; + assume {:verifier.code 0} true; + $i709 := $i707; + assume {:branchcond $i708} true; + goto $bb424, $bb425; +$bb418: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 15} true; + assume {:verifier.code 0} true; + assume ($i695 == 1); + goto $bb419; +$bb419: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 569, 9} true; + assume {:verifier.code 0} true; + $i698 := $add.i32($i692, 1); + call {:cexpr "c"} boogie_si_record_i32($i698); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 570, 5} true; + assume {:verifier.code 0} true; + $i697 := $i698; + goto $bb423; +$bb420: + assume !(($i695 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 20} true; + assume {:verifier.code 0} true; + $i696 := $sgt.i32($i691, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 9} true; + assume {:verifier.code 0} true; + $i697 := $i692; + assume {:branchcond $i696} true; + goto $bb421, $bb422; +$bb421: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 9} true; + assume {:verifier.code 0} true; + assume ($i696 == 1); + goto $bb419; +$bb422: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 9} true; + assume {:verifier.code 0} true; + assume !(($i696 == 1)); + goto $bb423; +$bb423: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 571, 3} true; + assume {:verifier.code 0} true; + $i694 := $i697; + goto $bb417; +$bb424: + assume ($i708 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 11} true; + assume {:verifier.code 0} true; + $i710 := $slt.i32($i706, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i710} true; + goto $bb427, $bb429; +$bb425: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 578, 7} true; + assume {:verifier.code 0} true; + assume !(($i708 == 1)); + goto $bb426; +$bb426: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 583, 7} true; + assume {:verifier.code 0} true; + $i714 := $sext.i32.i64($i702); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 583, 9} true; + assume {:verifier.code 0} true; + $i715 := $srem.i64($i714, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 583, 7} true; + assume {:verifier.code 0} true; + $i716 := $trunc.i64.i32($i715); + call {:cexpr "a"} boogie_si_record_i32($i716); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 584, 5} true; + assume {:verifier.code 0} true; + $i717 := $add.i32($i716, $i716); + call {:cexpr "a"} boogie_si_record_i32($i717); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 585, 7} true; + assume {:verifier.code 0} true; + $i718 := $sext.i32.i64($i706); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 585, 9} true; + assume {:verifier.code 0} true; + $i719 := $srem.i64($i718, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 585, 7} true; + assume {:verifier.code 0} true; + $i720 := $trunc.i64.i32($i719); + call {:cexpr "b"} boogie_si_record_i32($i720); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 586, 5} true; + assume {:verifier.code 0} true; + $i721 := $add.i32($i720, $i720); + call {:cexpr "b"} boogie_si_record_i32($i721); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 588, 5} true; + assume {:verifier.code 0} true; + $i722 := $add.i32($i709, $i709); + call {:cexpr "c"} boogie_si_record_i32($i722); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 589, 9} true; + assume {:verifier.code 0} true; + $i723 := $slt.i32($i717, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 589, 7} true; + assume {:verifier.code 0} true; + $i724 := $i722; + assume {:branchcond $i723} true; + goto $bb433, $bb434; +$bb427: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 15} true; + assume {:verifier.code 0} true; + assume ($i710 == 1); + goto $bb428; +$bb428: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 580, 9} true; + assume {:verifier.code 0} true; + $i713 := $add.i32($i707, 1); + call {:cexpr "c"} boogie_si_record_i32($i713); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 581, 5} true; + assume {:verifier.code 0} true; + $i712 := $i713; + goto $bb432; +$bb429: + assume !(($i710 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 20} true; + assume {:verifier.code 0} true; + $i711 := $sgt.i32($i706, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 9} true; + assume {:verifier.code 0} true; + $i712 := $i707; + assume {:branchcond $i711} true; + goto $bb430, $bb431; +$bb430: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 9} true; + assume {:verifier.code 0} true; + assume ($i711 == 1); + goto $bb428; +$bb431: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 9} true; + assume {:verifier.code 0} true; + assume !(($i711 == 1)); + goto $bb432; +$bb432: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 582, 3} true; + assume {:verifier.code 0} true; + $i709 := $i712; + goto $bb426; +$bb433: + assume ($i723 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 11} true; + assume {:verifier.code 0} true; + $i725 := $slt.i32($i721, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i725} true; + goto $bb436, $bb438; +$bb434: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 589, 7} true; + assume {:verifier.code 0} true; + assume !(($i723 == 1)); + goto $bb435; +$bb435: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 594, 7} true; + assume {:verifier.code 0} true; + $i729 := $sext.i32.i64($i717); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 594, 9} true; + assume {:verifier.code 0} true; + $i730 := $srem.i64($i729, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 594, 7} true; + assume {:verifier.code 0} true; + $i731 := $trunc.i64.i32($i730); + call {:cexpr "a"} boogie_si_record_i32($i731); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 595, 5} true; + assume {:verifier.code 0} true; + $i732 := $add.i32($i731, $i731); + call {:cexpr "a"} boogie_si_record_i32($i732); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 596, 7} true; + assume {:verifier.code 0} true; + $i733 := $sext.i32.i64($i721); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 596, 9} true; + assume {:verifier.code 0} true; + $i734 := $srem.i64($i733, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 596, 7} true; + assume {:verifier.code 0} true; + $i735 := $trunc.i64.i32($i734); + call {:cexpr "b"} boogie_si_record_i32($i735); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 597, 5} true; + assume {:verifier.code 0} true; + $i736 := $add.i32($i735, $i735); + call {:cexpr "b"} boogie_si_record_i32($i736); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 599, 5} true; + assume {:verifier.code 0} true; + $i737 := $add.i32($i724, $i724); + call {:cexpr "c"} boogie_si_record_i32($i737); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 600, 9} true; + assume {:verifier.code 0} true; + $i738 := $slt.i32($i732, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 600, 7} true; + assume {:verifier.code 0} true; + $i739 := $i737; + assume {:branchcond $i738} true; + goto $bb442, $bb443; +$bb436: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 15} true; + assume {:verifier.code 0} true; + assume ($i725 == 1); + goto $bb437; +$bb437: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 591, 9} true; + assume {:verifier.code 0} true; + $i728 := $add.i32($i722, 1); + call {:cexpr "c"} boogie_si_record_i32($i728); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 592, 5} true; + assume {:verifier.code 0} true; + $i727 := $i728; + goto $bb441; +$bb438: + assume !(($i725 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 20} true; + assume {:verifier.code 0} true; + $i726 := $sgt.i32($i721, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 9} true; + assume {:verifier.code 0} true; + $i727 := $i722; + assume {:branchcond $i726} true; + goto $bb439, $bb440; +$bb439: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 9} true; + assume {:verifier.code 0} true; + assume ($i726 == 1); + goto $bb437; +$bb440: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 9} true; + assume {:verifier.code 0} true; + assume !(($i726 == 1)); + goto $bb441; +$bb441: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 593, 3} true; + assume {:verifier.code 0} true; + $i724 := $i727; + goto $bb435; +$bb442: + assume ($i738 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 11} true; + assume {:verifier.code 0} true; + $i740 := $slt.i32($i736, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i740} true; + goto $bb445, $bb447; +$bb443: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 600, 7} true; + assume {:verifier.code 0} true; + assume !(($i738 == 1)); + goto $bb444; +$bb444: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 605, 7} true; + assume {:verifier.code 0} true; + $i744 := $sext.i32.i64($i732); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 605, 9} true; + assume {:verifier.code 0} true; + $i745 := $srem.i64($i744, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 605, 7} true; + assume {:verifier.code 0} true; + $i746 := $trunc.i64.i32($i745); + call {:cexpr "a"} boogie_si_record_i32($i746); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 606, 5} true; + assume {:verifier.code 0} true; + $i747 := $add.i32($i746, $i746); + call {:cexpr "a"} boogie_si_record_i32($i747); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 607, 7} true; + assume {:verifier.code 0} true; + $i748 := $sext.i32.i64($i736); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 607, 9} true; + assume {:verifier.code 0} true; + $i749 := $srem.i64($i748, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 607, 7} true; + assume {:verifier.code 0} true; + $i750 := $trunc.i64.i32($i749); + call {:cexpr "b"} boogie_si_record_i32($i750); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 608, 5} true; + assume {:verifier.code 0} true; + $i751 := $add.i32($i750, $i750); + call {:cexpr "b"} boogie_si_record_i32($i751); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 610, 5} true; + assume {:verifier.code 0} true; + $i752 := $add.i32($i739, $i739); + call {:cexpr "c"} boogie_si_record_i32($i752); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 611, 9} true; + assume {:verifier.code 0} true; + $i753 := $slt.i32($i747, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 611, 7} true; + assume {:verifier.code 0} true; + $i754 := $i752; + assume {:branchcond $i753} true; + goto $bb451, $bb452; +$bb445: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 15} true; + assume {:verifier.code 0} true; + assume ($i740 == 1); + goto $bb446; +$bb446: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 602, 9} true; + assume {:verifier.code 0} true; + $i743 := $add.i32($i737, 1); + call {:cexpr "c"} boogie_si_record_i32($i743); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 603, 5} true; + assume {:verifier.code 0} true; + $i742 := $i743; + goto $bb450; +$bb447: + assume !(($i740 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 20} true; + assume {:verifier.code 0} true; + $i741 := $sgt.i32($i736, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 9} true; + assume {:verifier.code 0} true; + $i742 := $i737; + assume {:branchcond $i741} true; + goto $bb448, $bb449; +$bb448: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 9} true; + assume {:verifier.code 0} true; + assume ($i741 == 1); + goto $bb446; +$bb449: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 9} true; + assume {:verifier.code 0} true; + assume !(($i741 == 1)); + goto $bb450; +$bb450: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 604, 3} true; + assume {:verifier.code 0} true; + $i739 := $i742; + goto $bb444; +$bb451: + assume ($i753 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 11} true; + assume {:verifier.code 0} true; + $i755 := $slt.i32($i751, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i755} true; + goto $bb454, $bb456; +$bb452: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 611, 7} true; + assume {:verifier.code 0} true; + assume !(($i753 == 1)); + goto $bb453; +$bb453: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 616, 7} true; + assume {:verifier.code 0} true; + $i759 := $sext.i32.i64($i747); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 616, 9} true; + assume {:verifier.code 0} true; + $i760 := $srem.i64($i759, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 616, 7} true; + assume {:verifier.code 0} true; + $i761 := $trunc.i64.i32($i760); + call {:cexpr "a"} boogie_si_record_i32($i761); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 617, 5} true; + assume {:verifier.code 0} true; + $i762 := $add.i32($i761, $i761); + call {:cexpr "a"} boogie_si_record_i32($i762); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 618, 7} true; + assume {:verifier.code 0} true; + $i763 := $sext.i32.i64($i751); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 618, 9} true; + assume {:verifier.code 0} true; + $i764 := $srem.i64($i763, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 618, 7} true; + assume {:verifier.code 0} true; + $i765 := $trunc.i64.i32($i764); + call {:cexpr "b"} boogie_si_record_i32($i765); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 619, 5} true; + assume {:verifier.code 0} true; + $i766 := $add.i32($i765, $i765); + call {:cexpr "b"} boogie_si_record_i32($i766); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 621, 5} true; + assume {:verifier.code 0} true; + $i767 := $add.i32($i754, $i754); + call {:cexpr "c"} boogie_si_record_i32($i767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 622, 9} true; + assume {:verifier.code 0} true; + $i768 := $slt.i32($i762, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 622, 7} true; + assume {:verifier.code 0} true; + $i769 := $i767; + assume {:branchcond $i768} true; + goto $bb460, $bb461; +$bb454: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 15} true; + assume {:verifier.code 0} true; + assume ($i755 == 1); + goto $bb455; +$bb455: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 613, 9} true; + assume {:verifier.code 0} true; + $i758 := $add.i32($i752, 1); + call {:cexpr "c"} boogie_si_record_i32($i758); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 614, 5} true; + assume {:verifier.code 0} true; + $i757 := $i758; + goto $bb459; +$bb456: + assume !(($i755 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 20} true; + assume {:verifier.code 0} true; + $i756 := $sgt.i32($i751, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 9} true; + assume {:verifier.code 0} true; + $i757 := $i752; + assume {:branchcond $i756} true; + goto $bb457, $bb458; +$bb457: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 9} true; + assume {:verifier.code 0} true; + assume ($i756 == 1); + goto $bb455; +$bb458: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 9} true; + assume {:verifier.code 0} true; + assume !(($i756 == 1)); + goto $bb459; +$bb459: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 615, 3} true; + assume {:verifier.code 0} true; + $i754 := $i757; + goto $bb453; +$bb460: + assume ($i768 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 11} true; + assume {:verifier.code 0} true; + $i770 := $slt.i32($i766, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i770} true; + goto $bb463, $bb465; +$bb461: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 622, 7} true; + assume {:verifier.code 0} true; + assume !(($i768 == 1)); + goto $bb462; +$bb462: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 627, 7} true; + assume {:verifier.code 0} true; + $i774 := $sext.i32.i64($i762); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 627, 9} true; + assume {:verifier.code 0} true; + $i775 := $srem.i64($i774, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 627, 7} true; + assume {:verifier.code 0} true; + $i776 := $trunc.i64.i32($i775); + call {:cexpr "a"} boogie_si_record_i32($i776); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 628, 5} true; + assume {:verifier.code 0} true; + $i777 := $add.i32($i776, $i776); + call {:cexpr "a"} boogie_si_record_i32($i777); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 629, 7} true; + assume {:verifier.code 0} true; + $i778 := $sext.i32.i64($i766); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 629, 9} true; + assume {:verifier.code 0} true; + $i779 := $srem.i64($i778, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 629, 7} true; + assume {:verifier.code 0} true; + $i780 := $trunc.i64.i32($i779); + call {:cexpr "b"} boogie_si_record_i32($i780); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 630, 5} true; + assume {:verifier.code 0} true; + $i781 := $add.i32($i780, $i780); + call {:cexpr "b"} boogie_si_record_i32($i781); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 632, 5} true; + assume {:verifier.code 0} true; + $i782 := $add.i32($i769, $i769); + call {:cexpr "c"} boogie_si_record_i32($i782); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 633, 9} true; + assume {:verifier.code 0} true; + $i783 := $slt.i32($i777, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 633, 7} true; + assume {:verifier.code 0} true; + $i784 := $i782; + assume {:branchcond $i783} true; + goto $bb469, $bb470; +$bb463: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 15} true; + assume {:verifier.code 0} true; + assume ($i770 == 1); + goto $bb464; +$bb464: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 624, 9} true; + assume {:verifier.code 0} true; + $i773 := $add.i32($i767, 1); + call {:cexpr "c"} boogie_si_record_i32($i773); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 625, 5} true; + assume {:verifier.code 0} true; + $i772 := $i773; + goto $bb468; +$bb465: + assume !(($i770 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 20} true; + assume {:verifier.code 0} true; + $i771 := $sgt.i32($i766, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 9} true; + assume {:verifier.code 0} true; + $i772 := $i767; + assume {:branchcond $i771} true; + goto $bb466, $bb467; +$bb466: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 9} true; + assume {:verifier.code 0} true; + assume ($i771 == 1); + goto $bb464; +$bb467: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 9} true; + assume {:verifier.code 0} true; + assume !(($i771 == 1)); + goto $bb468; +$bb468: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 626, 3} true; + assume {:verifier.code 0} true; + $i769 := $i772; + goto $bb462; +$bb469: + assume ($i783 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 11} true; + assume {:verifier.code 0} true; + $i785 := $slt.i32($i781, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i785} true; + goto $bb472, $bb474; +$bb470: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 633, 7} true; + assume {:verifier.code 0} true; + assume !(($i783 == 1)); + goto $bb471; +$bb471: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 638, 7} true; + assume {:verifier.code 0} true; + $i789 := $sext.i32.i64($i777); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 638, 9} true; + assume {:verifier.code 0} true; + $i790 := $srem.i64($i789, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 638, 7} true; + assume {:verifier.code 0} true; + $i791 := $trunc.i64.i32($i790); + call {:cexpr "a"} boogie_si_record_i32($i791); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 639, 5} true; + assume {:verifier.code 0} true; + $i792 := $add.i32($i791, $i791); + call {:cexpr "a"} boogie_si_record_i32($i792); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 640, 7} true; + assume {:verifier.code 0} true; + $i793 := $sext.i32.i64($i781); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 640, 9} true; + assume {:verifier.code 0} true; + $i794 := $srem.i64($i793, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 640, 7} true; + assume {:verifier.code 0} true; + $i795 := $trunc.i64.i32($i794); + call {:cexpr "b"} boogie_si_record_i32($i795); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 641, 5} true; + assume {:verifier.code 0} true; + $i796 := $add.i32($i795, $i795); + call {:cexpr "b"} boogie_si_record_i32($i796); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 643, 5} true; + assume {:verifier.code 0} true; + $i797 := $add.i32($i784, $i784); + call {:cexpr "c"} boogie_si_record_i32($i797); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 644, 9} true; + assume {:verifier.code 0} true; + $i798 := $slt.i32($i792, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 644, 7} true; + assume {:verifier.code 0} true; + $i799 := $i797; + assume {:branchcond $i798} true; + goto $bb478, $bb479; +$bb472: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 15} true; + assume {:verifier.code 0} true; + assume ($i785 == 1); + goto $bb473; +$bb473: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 635, 9} true; + assume {:verifier.code 0} true; + $i788 := $add.i32($i782, 1); + call {:cexpr "c"} boogie_si_record_i32($i788); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 636, 5} true; + assume {:verifier.code 0} true; + $i787 := $i788; + goto $bb477; +$bb474: + assume !(($i785 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 20} true; + assume {:verifier.code 0} true; + $i786 := $sgt.i32($i781, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 9} true; + assume {:verifier.code 0} true; + $i787 := $i782; + assume {:branchcond $i786} true; + goto $bb475, $bb476; +$bb475: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 9} true; + assume {:verifier.code 0} true; + assume ($i786 == 1); + goto $bb473; +$bb476: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 9} true; + assume {:verifier.code 0} true; + assume !(($i786 == 1)); + goto $bb477; +$bb477: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 637, 3} true; + assume {:verifier.code 0} true; + $i784 := $i787; + goto $bb471; +$bb478: + assume ($i798 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 11} true; + assume {:verifier.code 0} true; + $i800 := $slt.i32($i796, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i800} true; + goto $bb481, $bb483; +$bb479: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 644, 7} true; + assume {:verifier.code 0} true; + assume !(($i798 == 1)); + goto $bb480; +$bb480: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 649, 7} true; + assume {:verifier.code 0} true; + $i804 := $sext.i32.i64($i792); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 649, 9} true; + assume {:verifier.code 0} true; + $i805 := $srem.i64($i804, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 649, 7} true; + assume {:verifier.code 0} true; + $i806 := $trunc.i64.i32($i805); + call {:cexpr "a"} boogie_si_record_i32($i806); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 650, 5} true; + assume {:verifier.code 0} true; + $i807 := $add.i32($i806, $i806); + call {:cexpr "a"} boogie_si_record_i32($i807); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 651, 7} true; + assume {:verifier.code 0} true; + $i808 := $sext.i32.i64($i796); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 651, 9} true; + assume {:verifier.code 0} true; + $i809 := $srem.i64($i808, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 651, 7} true; + assume {:verifier.code 0} true; + $i810 := $trunc.i64.i32($i809); + call {:cexpr "b"} boogie_si_record_i32($i810); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 652, 5} true; + assume {:verifier.code 0} true; + $i811 := $add.i32($i810, $i810); + call {:cexpr "b"} boogie_si_record_i32($i811); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 654, 5} true; + assume {:verifier.code 0} true; + $i812 := $add.i32($i799, $i799); + call {:cexpr "c"} boogie_si_record_i32($i812); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 655, 9} true; + assume {:verifier.code 0} true; + $i813 := $slt.i32($i807, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 655, 7} true; + assume {:verifier.code 0} true; + $i814 := $i812; + assume {:branchcond $i813} true; + goto $bb487, $bb488; +$bb481: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 15} true; + assume {:verifier.code 0} true; + assume ($i800 == 1); + goto $bb482; +$bb482: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 646, 9} true; + assume {:verifier.code 0} true; + $i803 := $add.i32($i797, 1); + call {:cexpr "c"} boogie_si_record_i32($i803); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 647, 5} true; + assume {:verifier.code 0} true; + $i802 := $i803; + goto $bb486; +$bb483: + assume !(($i800 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 20} true; + assume {:verifier.code 0} true; + $i801 := $sgt.i32($i796, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 9} true; + assume {:verifier.code 0} true; + $i802 := $i797; + assume {:branchcond $i801} true; + goto $bb484, $bb485; +$bb484: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 9} true; + assume {:verifier.code 0} true; + assume ($i801 == 1); + goto $bb482; +$bb485: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 9} true; + assume {:verifier.code 0} true; + assume !(($i801 == 1)); + goto $bb486; +$bb486: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 648, 3} true; + assume {:verifier.code 0} true; + $i799 := $i802; + goto $bb480; +$bb487: + assume ($i813 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 11} true; + assume {:verifier.code 0} true; + $i815 := $slt.i32($i811, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i815} true; + goto $bb490, $bb492; +$bb488: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 655, 7} true; + assume {:verifier.code 0} true; + assume !(($i813 == 1)); + goto $bb489; +$bb489: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 660, 7} true; + assume {:verifier.code 0} true; + $i819 := $sext.i32.i64($i807); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 660, 9} true; + assume {:verifier.code 0} true; + $i820 := $srem.i64($i819, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 660, 7} true; + assume {:verifier.code 0} true; + $i821 := $trunc.i64.i32($i820); + call {:cexpr "a"} boogie_si_record_i32($i821); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 661, 5} true; + assume {:verifier.code 0} true; + $i822 := $add.i32($i821, $i821); + call {:cexpr "a"} boogie_si_record_i32($i822); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 662, 7} true; + assume {:verifier.code 0} true; + $i823 := $sext.i32.i64($i811); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 662, 9} true; + assume {:verifier.code 0} true; + $i824 := $srem.i64($i823, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 662, 7} true; + assume {:verifier.code 0} true; + $i825 := $trunc.i64.i32($i824); + call {:cexpr "b"} boogie_si_record_i32($i825); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 663, 5} true; + assume {:verifier.code 0} true; + $i826 := $add.i32($i825, $i825); + call {:cexpr "b"} boogie_si_record_i32($i826); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 665, 5} true; + assume {:verifier.code 0} true; + $i827 := $add.i32($i814, $i814); + call {:cexpr "c"} boogie_si_record_i32($i827); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 666, 9} true; + assume {:verifier.code 0} true; + $i828 := $slt.i32($i822, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 666, 7} true; + assume {:verifier.code 0} true; + $i829 := $i827; + assume {:branchcond $i828} true; + goto $bb496, $bb497; +$bb490: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 15} true; + assume {:verifier.code 0} true; + assume ($i815 == 1); + goto $bb491; +$bb491: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 657, 9} true; + assume {:verifier.code 0} true; + $i818 := $add.i32($i812, 1); + call {:cexpr "c"} boogie_si_record_i32($i818); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 658, 5} true; + assume {:verifier.code 0} true; + $i817 := $i818; + goto $bb495; +$bb492: + assume !(($i815 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 20} true; + assume {:verifier.code 0} true; + $i816 := $sgt.i32($i811, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 9} true; + assume {:verifier.code 0} true; + $i817 := $i812; + assume {:branchcond $i816} true; + goto $bb493, $bb494; +$bb493: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 9} true; + assume {:verifier.code 0} true; + assume ($i816 == 1); + goto $bb491; +$bb494: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 9} true; + assume {:verifier.code 0} true; + assume !(($i816 == 1)); + goto $bb495; +$bb495: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 659, 3} true; + assume {:verifier.code 0} true; + $i814 := $i817; + goto $bb489; +$bb496: + assume ($i828 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 11} true; + assume {:verifier.code 0} true; + $i830 := $slt.i32($i826, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i830} true; + goto $bb499, $bb501; +$bb497: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 666, 7} true; + assume {:verifier.code 0} true; + assume !(($i828 == 1)); + goto $bb498; +$bb498: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 671, 7} true; + assume {:verifier.code 0} true; + $i834 := $sext.i32.i64($i822); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 671, 9} true; + assume {:verifier.code 0} true; + $i835 := $srem.i64($i834, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 671, 7} true; + assume {:verifier.code 0} true; + $i836 := $trunc.i64.i32($i835); + call {:cexpr "a"} boogie_si_record_i32($i836); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 672, 5} true; + assume {:verifier.code 0} true; + $i837 := $add.i32($i836, $i836); + call {:cexpr "a"} boogie_si_record_i32($i837); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 673, 7} true; + assume {:verifier.code 0} true; + $i838 := $sext.i32.i64($i826); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 673, 9} true; + assume {:verifier.code 0} true; + $i839 := $srem.i64($i838, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 673, 7} true; + assume {:verifier.code 0} true; + $i840 := $trunc.i64.i32($i839); + call {:cexpr "b"} boogie_si_record_i32($i840); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 674, 5} true; + assume {:verifier.code 0} true; + $i841 := $add.i32($i840, $i840); + call {:cexpr "b"} boogie_si_record_i32($i841); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 676, 5} true; + assume {:verifier.code 0} true; + $i842 := $add.i32($i829, $i829); + call {:cexpr "c"} boogie_si_record_i32($i842); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 677, 9} true; + assume {:verifier.code 0} true; + $i843 := $slt.i32($i837, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 677, 7} true; + assume {:verifier.code 0} true; + $i844 := $i842; + assume {:branchcond $i843} true; + goto $bb505, $bb506; +$bb499: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 15} true; + assume {:verifier.code 0} true; + assume ($i830 == 1); + goto $bb500; +$bb500: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 668, 9} true; + assume {:verifier.code 0} true; + $i833 := $add.i32($i827, 1); + call {:cexpr "c"} boogie_si_record_i32($i833); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 669, 5} true; + assume {:verifier.code 0} true; + $i832 := $i833; + goto $bb504; +$bb501: + assume !(($i830 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 20} true; + assume {:verifier.code 0} true; + $i831 := $sgt.i32($i826, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 9} true; + assume {:verifier.code 0} true; + $i832 := $i827; + assume {:branchcond $i831} true; + goto $bb502, $bb503; +$bb502: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 9} true; + assume {:verifier.code 0} true; + assume ($i831 == 1); + goto $bb500; +$bb503: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 9} true; + assume {:verifier.code 0} true; + assume !(($i831 == 1)); + goto $bb504; +$bb504: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 670, 3} true; + assume {:verifier.code 0} true; + $i829 := $i832; + goto $bb498; +$bb505: + assume ($i843 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 11} true; + assume {:verifier.code 0} true; + $i845 := $slt.i32($i841, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i845} true; + goto $bb508, $bb510; +$bb506: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 677, 7} true; + assume {:verifier.code 0} true; + assume !(($i843 == 1)); + goto $bb507; +$bb507: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 682, 7} true; + assume {:verifier.code 0} true; + $i849 := $sext.i32.i64($i837); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 682, 9} true; + assume {:verifier.code 0} true; + $i850 := $srem.i64($i849, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 682, 7} true; + assume {:verifier.code 0} true; + $i851 := $trunc.i64.i32($i850); + call {:cexpr "a"} boogie_si_record_i32($i851); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 683, 5} true; + assume {:verifier.code 0} true; + $i852 := $add.i32($i851, $i851); + call {:cexpr "a"} boogie_si_record_i32($i852); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 684, 7} true; + assume {:verifier.code 0} true; + $i853 := $sext.i32.i64($i841); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 684, 9} true; + assume {:verifier.code 0} true; + $i854 := $srem.i64($i853, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 684, 7} true; + assume {:verifier.code 0} true; + $i855 := $trunc.i64.i32($i854); + call {:cexpr "b"} boogie_si_record_i32($i855); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 685, 5} true; + assume {:verifier.code 0} true; + $i856 := $add.i32($i855, $i855); + call {:cexpr "b"} boogie_si_record_i32($i856); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 687, 5} true; + assume {:verifier.code 0} true; + $i857 := $add.i32($i844, $i844); + call {:cexpr "c"} boogie_si_record_i32($i857); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 688, 9} true; + assume {:verifier.code 0} true; + $i858 := $slt.i32($i852, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 688, 7} true; + assume {:verifier.code 0} true; + $i859 := $i857; + assume {:branchcond $i858} true; + goto $bb514, $bb515; +$bb508: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 15} true; + assume {:verifier.code 0} true; + assume ($i845 == 1); + goto $bb509; +$bb509: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 679, 9} true; + assume {:verifier.code 0} true; + $i848 := $add.i32($i842, 1); + call {:cexpr "c"} boogie_si_record_i32($i848); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 680, 5} true; + assume {:verifier.code 0} true; + $i847 := $i848; + goto $bb513; +$bb510: + assume !(($i845 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 20} true; + assume {:verifier.code 0} true; + $i846 := $sgt.i32($i841, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 9} true; + assume {:verifier.code 0} true; + $i847 := $i842; + assume {:branchcond $i846} true; + goto $bb511, $bb512; +$bb511: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 9} true; + assume {:verifier.code 0} true; + assume ($i846 == 1); + goto $bb509; +$bb512: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 9} true; + assume {:verifier.code 0} true; + assume !(($i846 == 1)); + goto $bb513; +$bb513: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 681, 3} true; + assume {:verifier.code 0} true; + $i844 := $i847; + goto $bb507; +$bb514: + assume ($i858 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 11} true; + assume {:verifier.code 0} true; + $i860 := $slt.i32($i856, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i860} true; + goto $bb517, $bb519; +$bb515: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 688, 7} true; + assume {:verifier.code 0} true; + assume !(($i858 == 1)); + goto $bb516; +$bb516: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 693, 7} true; + assume {:verifier.code 0} true; + $i864 := $sext.i32.i64($i852); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 693, 9} true; + assume {:verifier.code 0} true; + $i865 := $srem.i64($i864, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 693, 7} true; + assume {:verifier.code 0} true; + $i866 := $trunc.i64.i32($i865); + call {:cexpr "a"} boogie_si_record_i32($i866); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 694, 5} true; + assume {:verifier.code 0} true; + $i867 := $add.i32($i866, $i866); + call {:cexpr "a"} boogie_si_record_i32($i867); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 695, 7} true; + assume {:verifier.code 0} true; + $i868 := $sext.i32.i64($i856); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 695, 9} true; + assume {:verifier.code 0} true; + $i869 := $srem.i64($i868, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 695, 7} true; + assume {:verifier.code 0} true; + $i870 := $trunc.i64.i32($i869); + call {:cexpr "b"} boogie_si_record_i32($i870); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 696, 5} true; + assume {:verifier.code 0} true; + $i871 := $add.i32($i870, $i870); + call {:cexpr "b"} boogie_si_record_i32($i871); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 698, 5} true; + assume {:verifier.code 0} true; + $i872 := $add.i32($i859, $i859); + call {:cexpr "c"} boogie_si_record_i32($i872); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 699, 9} true; + assume {:verifier.code 0} true; + $i873 := $slt.i32($i867, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 699, 7} true; + assume {:verifier.code 0} true; + $i874 := $i872; + assume {:branchcond $i873} true; + goto $bb523, $bb524; +$bb517: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 15} true; + assume {:verifier.code 0} true; + assume ($i860 == 1); + goto $bb518; +$bb518: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 690, 9} true; + assume {:verifier.code 0} true; + $i863 := $add.i32($i857, 1); + call {:cexpr "c"} boogie_si_record_i32($i863); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 691, 5} true; + assume {:verifier.code 0} true; + $i862 := $i863; + goto $bb522; +$bb519: + assume !(($i860 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 20} true; + assume {:verifier.code 0} true; + $i861 := $sgt.i32($i856, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 9} true; + assume {:verifier.code 0} true; + $i862 := $i857; + assume {:branchcond $i861} true; + goto $bb520, $bb521; +$bb520: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 9} true; + assume {:verifier.code 0} true; + assume ($i861 == 1); + goto $bb518; +$bb521: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 9} true; + assume {:verifier.code 0} true; + assume !(($i861 == 1)); + goto $bb522; +$bb522: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 692, 3} true; + assume {:verifier.code 0} true; + $i859 := $i862; + goto $bb516; +$bb523: + assume ($i873 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 11} true; + assume {:verifier.code 0} true; + $i875 := $slt.i32($i871, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i875} true; + goto $bb526, $bb528; +$bb524: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 699, 7} true; + assume {:verifier.code 0} true; + assume !(($i873 == 1)); + goto $bb525; +$bb525: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 704, 7} true; + assume {:verifier.code 0} true; + $i879 := $sext.i32.i64($i867); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 704, 9} true; + assume {:verifier.code 0} true; + $i880 := $srem.i64($i879, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 704, 7} true; + assume {:verifier.code 0} true; + $i881 := $trunc.i64.i32($i880); + call {:cexpr "a"} boogie_si_record_i32($i881); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 705, 5} true; + assume {:verifier.code 0} true; + $i882 := $add.i32($i881, $i881); + call {:cexpr "a"} boogie_si_record_i32($i882); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 706, 7} true; + assume {:verifier.code 0} true; + $i883 := $sext.i32.i64($i871); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 706, 9} true; + assume {:verifier.code 0} true; + $i884 := $srem.i64($i883, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 706, 7} true; + assume {:verifier.code 0} true; + $i885 := $trunc.i64.i32($i884); + call {:cexpr "b"} boogie_si_record_i32($i885); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 707, 5} true; + assume {:verifier.code 0} true; + $i886 := $add.i32($i885, $i885); + call {:cexpr "b"} boogie_si_record_i32($i886); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 709, 5} true; + assume {:verifier.code 0} true; + $i887 := $add.i32($i874, $i874); + call {:cexpr "c"} boogie_si_record_i32($i887); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 710, 9} true; + assume {:verifier.code 0} true; + $i888 := $slt.i32($i882, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 710, 7} true; + assume {:verifier.code 0} true; + $i889 := $i887; + assume {:branchcond $i888} true; + goto $bb532, $bb533; +$bb526: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 15} true; + assume {:verifier.code 0} true; + assume ($i875 == 1); + goto $bb527; +$bb527: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 701, 9} true; + assume {:verifier.code 0} true; + $i878 := $add.i32($i872, 1); + call {:cexpr "c"} boogie_si_record_i32($i878); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 702, 5} true; + assume {:verifier.code 0} true; + $i877 := $i878; + goto $bb531; +$bb528: + assume !(($i875 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 20} true; + assume {:verifier.code 0} true; + $i876 := $sgt.i32($i871, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 9} true; + assume {:verifier.code 0} true; + $i877 := $i872; + assume {:branchcond $i876} true; + goto $bb529, $bb530; +$bb529: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 9} true; + assume {:verifier.code 0} true; + assume ($i876 == 1); + goto $bb527; +$bb530: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 9} true; + assume {:verifier.code 0} true; + assume !(($i876 == 1)); + goto $bb531; +$bb531: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 703, 3} true; + assume {:verifier.code 0} true; + $i874 := $i877; + goto $bb525; +$bb532: + assume ($i888 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 11} true; + assume {:verifier.code 0} true; + $i890 := $slt.i32($i886, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i890} true; + goto $bb535, $bb537; +$bb533: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 710, 7} true; + assume {:verifier.code 0} true; + assume !(($i888 == 1)); + goto $bb534; +$bb534: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 715, 7} true; + assume {:verifier.code 0} true; + $i894 := $sext.i32.i64($i882); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 715, 9} true; + assume {:verifier.code 0} true; + $i895 := $srem.i64($i894, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 715, 7} true; + assume {:verifier.code 0} true; + $i896 := $trunc.i64.i32($i895); + call {:cexpr "a"} boogie_si_record_i32($i896); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 716, 5} true; + assume {:verifier.code 0} true; + $i897 := $add.i32($i896, $i896); + call {:cexpr "a"} boogie_si_record_i32($i897); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 717, 7} true; + assume {:verifier.code 0} true; + $i898 := $sext.i32.i64($i886); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 717, 9} true; + assume {:verifier.code 0} true; + $i899 := $srem.i64($i898, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 717, 7} true; + assume {:verifier.code 0} true; + $i900 := $trunc.i64.i32($i899); + call {:cexpr "b"} boogie_si_record_i32($i900); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 718, 5} true; + assume {:verifier.code 0} true; + $i901 := $add.i32($i900, $i900); + call {:cexpr "b"} boogie_si_record_i32($i901); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 720, 5} true; + assume {:verifier.code 0} true; + $i902 := $add.i32($i889, $i889); + call {:cexpr "c"} boogie_si_record_i32($i902); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 721, 9} true; + assume {:verifier.code 0} true; + $i903 := $slt.i32($i897, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 721, 7} true; + assume {:verifier.code 0} true; + $i904 := $i902; + assume {:branchcond $i903} true; + goto $bb541, $bb542; +$bb535: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 15} true; + assume {:verifier.code 0} true; + assume ($i890 == 1); + goto $bb536; +$bb536: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 712, 9} true; + assume {:verifier.code 0} true; + $i893 := $add.i32($i887, 1); + call {:cexpr "c"} boogie_si_record_i32($i893); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 713, 5} true; + assume {:verifier.code 0} true; + $i892 := $i893; + goto $bb540; +$bb537: + assume !(($i890 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 20} true; + assume {:verifier.code 0} true; + $i891 := $sgt.i32($i886, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 9} true; + assume {:verifier.code 0} true; + $i892 := $i887; + assume {:branchcond $i891} true; + goto $bb538, $bb539; +$bb538: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 9} true; + assume {:verifier.code 0} true; + assume ($i891 == 1); + goto $bb536; +$bb539: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 9} true; + assume {:verifier.code 0} true; + assume !(($i891 == 1)); + goto $bb540; +$bb540: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 714, 3} true; + assume {:verifier.code 0} true; + $i889 := $i892; + goto $bb534; +$bb541: + assume ($i903 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 11} true; + assume {:verifier.code 0} true; + $i905 := $slt.i32($i901, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i905} true; + goto $bb544, $bb546; +$bb542: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 721, 7} true; + assume {:verifier.code 0} true; + assume !(($i903 == 1)); + goto $bb543; +$bb543: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 726, 7} true; + assume {:verifier.code 0} true; + $i909 := $sext.i32.i64($i897); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 726, 9} true; + assume {:verifier.code 0} true; + $i910 := $srem.i64($i909, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 726, 7} true; + assume {:verifier.code 0} true; + $i911 := $trunc.i64.i32($i910); + call {:cexpr "a"} boogie_si_record_i32($i911); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 727, 5} true; + assume {:verifier.code 0} true; + $i912 := $add.i32($i911, $i911); + call {:cexpr "a"} boogie_si_record_i32($i912); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 728, 7} true; + assume {:verifier.code 0} true; + $i913 := $sext.i32.i64($i901); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 728, 9} true; + assume {:verifier.code 0} true; + $i914 := $srem.i64($i913, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 728, 7} true; + assume {:verifier.code 0} true; + $i915 := $trunc.i64.i32($i914); + call {:cexpr "b"} boogie_si_record_i32($i915); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 729, 5} true; + assume {:verifier.code 0} true; + $i916 := $add.i32($i915, $i915); + call {:cexpr "b"} boogie_si_record_i32($i916); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 731, 5} true; + assume {:verifier.code 0} true; + $i917 := $add.i32($i904, $i904); + call {:cexpr "c"} boogie_si_record_i32($i917); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 732, 9} true; + assume {:verifier.code 0} true; + $i918 := $slt.i32($i912, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 732, 7} true; + assume {:verifier.code 0} true; + $i919 := $i917; + assume {:branchcond $i918} true; + goto $bb550, $bb551; +$bb544: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 15} true; + assume {:verifier.code 0} true; + assume ($i905 == 1); + goto $bb545; +$bb545: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 723, 9} true; + assume {:verifier.code 0} true; + $i908 := $add.i32($i902, 1); + call {:cexpr "c"} boogie_si_record_i32($i908); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 724, 5} true; + assume {:verifier.code 0} true; + $i907 := $i908; + goto $bb549; +$bb546: + assume !(($i905 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 20} true; + assume {:verifier.code 0} true; + $i906 := $sgt.i32($i901, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 9} true; + assume {:verifier.code 0} true; + $i907 := $i902; + assume {:branchcond $i906} true; + goto $bb547, $bb548; +$bb547: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 9} true; + assume {:verifier.code 0} true; + assume ($i906 == 1); + goto $bb545; +$bb548: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 9} true; + assume {:verifier.code 0} true; + assume !(($i906 == 1)); + goto $bb549; +$bb549: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 725, 3} true; + assume {:verifier.code 0} true; + $i904 := $i907; + goto $bb543; +$bb550: + assume ($i918 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 11} true; + assume {:verifier.code 0} true; + $i920 := $slt.i32($i916, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i920} true; + goto $bb553, $bb555; +$bb551: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 732, 7} true; + assume {:verifier.code 0} true; + assume !(($i918 == 1)); + goto $bb552; +$bb552: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 737, 7} true; + assume {:verifier.code 0} true; + $i924 := $sext.i32.i64($i912); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 737, 9} true; + assume {:verifier.code 0} true; + $i925 := $srem.i64($i924, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 737, 7} true; + assume {:verifier.code 0} true; + $i926 := $trunc.i64.i32($i925); + call {:cexpr "a"} boogie_si_record_i32($i926); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 738, 5} true; + assume {:verifier.code 0} true; + $i927 := $add.i32($i926, $i926); + call {:cexpr "a"} boogie_si_record_i32($i927); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 739, 7} true; + assume {:verifier.code 0} true; + $i928 := $sext.i32.i64($i916); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 739, 9} true; + assume {:verifier.code 0} true; + $i929 := $srem.i64($i928, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 739, 7} true; + assume {:verifier.code 0} true; + $i930 := $trunc.i64.i32($i929); + call {:cexpr "b"} boogie_si_record_i32($i930); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 740, 5} true; + assume {:verifier.code 0} true; + $i931 := $add.i32($i930, $i930); + call {:cexpr "b"} boogie_si_record_i32($i931); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 742, 5} true; + assume {:verifier.code 0} true; + $i932 := $add.i32($i919, $i919); + call {:cexpr "c"} boogie_si_record_i32($i932); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 743, 9} true; + assume {:verifier.code 0} true; + $i933 := $slt.i32($i927, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 743, 7} true; + assume {:verifier.code 0} true; + $i934 := $i932; + assume {:branchcond $i933} true; + goto $bb559, $bb560; +$bb553: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 15} true; + assume {:verifier.code 0} true; + assume ($i920 == 1); + goto $bb554; +$bb554: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 734, 9} true; + assume {:verifier.code 0} true; + $i923 := $add.i32($i917, 1); + call {:cexpr "c"} boogie_si_record_i32($i923); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 735, 5} true; + assume {:verifier.code 0} true; + $i922 := $i923; + goto $bb558; +$bb555: + assume !(($i920 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 20} true; + assume {:verifier.code 0} true; + $i921 := $sgt.i32($i916, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 9} true; + assume {:verifier.code 0} true; + $i922 := $i917; + assume {:branchcond $i921} true; + goto $bb556, $bb557; +$bb556: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 9} true; + assume {:verifier.code 0} true; + assume ($i921 == 1); + goto $bb554; +$bb557: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 9} true; + assume {:verifier.code 0} true; + assume !(($i921 == 1)); + goto $bb558; +$bb558: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 736, 3} true; + assume {:verifier.code 0} true; + $i919 := $i922; + goto $bb552; +$bb559: + assume ($i933 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 11} true; + assume {:verifier.code 0} true; + $i935 := $slt.i32($i931, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i935} true; + goto $bb562, $bb564; +$bb560: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 743, 7} true; + assume {:verifier.code 0} true; + assume !(($i933 == 1)); + goto $bb561; +$bb561: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 748, 7} true; + assume {:verifier.code 0} true; + $i939 := $sext.i32.i64($i927); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 748, 9} true; + assume {:verifier.code 0} true; + $i940 := $srem.i64($i939, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 748, 7} true; + assume {:verifier.code 0} true; + $i941 := $trunc.i64.i32($i940); + call {:cexpr "a"} boogie_si_record_i32($i941); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 749, 5} true; + assume {:verifier.code 0} true; + $i942 := $add.i32($i941, $i941); + call {:cexpr "a"} boogie_si_record_i32($i942); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 750, 7} true; + assume {:verifier.code 0} true; + $i943 := $sext.i32.i64($i931); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 750, 9} true; + assume {:verifier.code 0} true; + $i944 := $srem.i64($i943, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 750, 7} true; + assume {:verifier.code 0} true; + $i945 := $trunc.i64.i32($i944); + call {:cexpr "b"} boogie_si_record_i32($i945); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 751, 5} true; + assume {:verifier.code 0} true; + $i946 := $add.i32($i945, $i945); + call {:cexpr "b"} boogie_si_record_i32($i946); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 753, 5} true; + assume {:verifier.code 0} true; + $i947 := $add.i32($i934, $i934); + call {:cexpr "c"} boogie_si_record_i32($i947); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 754, 9} true; + assume {:verifier.code 0} true; + $i948 := $slt.i32($i942, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 754, 7} true; + assume {:verifier.code 0} true; + $i949 := $i947; + assume {:branchcond $i948} true; + goto $bb568, $bb569; +$bb562: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 15} true; + assume {:verifier.code 0} true; + assume ($i935 == 1); + goto $bb563; +$bb563: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 745, 9} true; + assume {:verifier.code 0} true; + $i938 := $add.i32($i932, 1); + call {:cexpr "c"} boogie_si_record_i32($i938); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 746, 5} true; + assume {:verifier.code 0} true; + $i937 := $i938; + goto $bb567; +$bb564: + assume !(($i935 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 20} true; + assume {:verifier.code 0} true; + $i936 := $sgt.i32($i931, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 9} true; + assume {:verifier.code 0} true; + $i937 := $i932; + assume {:branchcond $i936} true; + goto $bb565, $bb566; +$bb565: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 9} true; + assume {:verifier.code 0} true; + assume ($i936 == 1); + goto $bb563; +$bb566: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 9} true; + assume {:verifier.code 0} true; + assume !(($i936 == 1)); + goto $bb567; +$bb567: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 747, 3} true; + assume {:verifier.code 0} true; + $i934 := $i937; + goto $bb561; +$bb568: + assume ($i948 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 11} true; + assume {:verifier.code 0} true; + $i950 := $slt.i32($i946, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i950} true; + goto $bb571, $bb573; +$bb569: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 754, 7} true; + assume {:verifier.code 0} true; + assume !(($i948 == 1)); + goto $bb570; +$bb570: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 764, 3} true; + assume {:verifier.code 0} true; + $r := $i949; + $exn := false; + return; +$bb571: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 15} true; + assume {:verifier.code 0} true; + assume ($i950 == 1); + goto $bb572; +$bb572: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 756, 9} true; + assume {:verifier.code 0} true; + $i953 := $add.i32($i947, 1); + call {:cexpr "c"} boogie_si_record_i32($i953); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 757, 5} true; + assume {:verifier.code 0} true; + $i952 := $i953; + goto $bb576; +$bb573: + assume !(($i950 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 20} true; + assume {:verifier.code 0} true; + $i951 := $sgt.i32($i946, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 9} true; + assume {:verifier.code 0} true; + $i952 := $i947; + assume {:branchcond $i951} true; + goto $bb574, $bb575; +$bb574: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 9} true; + assume {:verifier.code 0} true; + assume ($i951 == 1); + goto $bb572; +$bb575: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 9} true; + assume {:verifier.code 0} true; + assume !(($i951 == 1)); + goto $bb576; +$bb576: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 758, 3} true; + assume {:verifier.code 0} true; + $i949 := $i952; + goto $bb570; +} +const __SMACK_and64: ref; +axiom (__SMACK_and64 == $sub.ref(0, 16508)); +procedure __SMACK_and64($i0: i64, $i1: i64) + returns ($r: i64) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i64; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 65} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_and64:arg:a"} boogie_si_record_i64($i0); + call {:cexpr "__SMACK_and64:arg:b"} boogie_si_record_i64($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 65} true; + assume {:verifier.code 1} true; + $i2 := $trunc.i64.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 68} true; + assume {:verifier.code 1} true; + $i3 := $trunc.i64.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 51} true; + assume {:verifier.code 1} true; + call $i4 := __SMACK_and32($i2, $i3); + call {:cexpr "smack:ext:__SMACK_and32"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 45} true; + assume {:verifier.code 0} true; + $i5 := $sext.i32.i64($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 38} true; + assume {:verifier.code 0} true; + $r := $i5; + $exn := false; + return; +} +const __SMACK_and16: ref; +axiom (__SMACK_and16 == $sub.ref(0, 17540)); +procedure __SMACK_and16($i0: i16, $i1: i16) + returns ($r: i16) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i16; + var $i6: i32; + var $i7: i1; + var $i9: i32; + var $i10: i1; + var $i11: i32; + var $i12: i1; + var $i14: i32; + var $i15: i32; + var $i16: i16; + var $i13: i16; + var $i8: i16; + var $i17: i32; + var $i18: i32; + var $i19: i16; + var $i20: i32; + var $i21: i32; + var $i22: i32; + var $i23: i16; + var $i24: i32; + var $i25: i32; + var $i26: i16; + var $i27: i32; + var $i28: i32; + var $i29: i32; + var $i30: i16; + var $i31: i32; + var $i32: i32; + var $i33: i32; + var $i34: i16; + var $i35: i32; + var $i36: i1; + var $i38: i32; + var $i39: i1; + var $i40: i32; + var $i41: i1; + var $i43: i32; + var $i44: i32; + var $i45: i16; + var $i42: i16; + var $i37: i16; + var $i46: i32; + var $i47: i32; + var $i48: i16; + var $i49: i32; + var $i50: i32; + var $i51: i32; + var $i52: i16; + var $i53: i32; + var $i54: i32; + var $i55: i16; + var $i56: i32; + var $i57: i32; + var $i58: i32; + var $i59: i16; + var $i60: i32; + var $i61: i32; + var $i62: i32; + var $i63: i16; + var $i64: i32; + var $i65: i1; + var $i67: i32; + var $i68: i1; + var $i69: i32; + var $i70: i1; + var $i72: i32; + var $i73: i32; + var $i74: i16; + var $i71: i16; + var $i66: i16; + var $i75: i32; + var $i76: i32; + var $i77: i16; + var $i78: i32; + var $i79: i32; + var $i80: i32; + var $i81: i16; + var $i82: i32; + var $i83: i32; + var $i84: i16; + var $i85: i32; + var $i86: i32; + var $i87: i32; + var $i88: i16; + var $i89: i32; + var $i90: i32; + var $i91: i32; + var $i92: i16; + var $i93: i32; + var $i94: i1; + var $i96: i32; + var $i97: i1; + var $i98: i32; + var $i99: i1; + var $i101: i32; + var $i102: i32; + var $i103: i16; + var $i100: i16; + var $i95: i16; + var $i104: i32; + var $i105: i32; + var $i106: i16; + var $i107: i32; + var $i108: i32; + var $i109: i32; + var $i110: i16; + var $i111: i32; + var $i112: i32; + var $i113: i16; + var $i114: i32; + var $i115: i32; + var $i116: i32; + var $i117: i16; + var $i118: i32; + var $i119: i32; + var $i120: i32; + var $i121: i16; + var $i122: i32; + var $i123: i1; + var $i125: i32; + var $i126: i1; + var $i127: i32; + var $i128: i1; + var $i130: i32; + var $i131: i32; + var $i132: i16; + var $i129: i16; + var $i124: i16; + var $i133: i32; + var $i134: i32; + var $i135: i16; + var $i136: i32; + var $i137: i32; + var $i138: i32; + var $i139: i16; + var $i140: i32; + var $i141: i32; + var $i142: i16; + var $i143: i32; + var $i144: i32; + var $i145: i32; + var $i146: i16; + var $i147: i32; + var $i148: i32; + var $i149: i32; + var $i150: i16; + var $i151: i32; + var $i152: i1; + var $i154: i32; + var $i155: i1; + var $i156: i32; + var $i157: i1; + var $i159: i32; + var $i160: i32; + var $i161: i16; + var $i158: i16; + var $i153: i16; + var $i162: i32; + var $i163: i32; + var $i164: i16; + var $i165: i32; + var $i166: i32; + var $i167: i32; + var $i168: i16; + var $i169: i32; + var $i170: i32; + var $i171: i16; + var $i172: i32; + var $i173: i32; + var $i174: i32; + var $i175: i16; + var $i176: i32; + var $i177: i32; + var $i178: i32; + var $i179: i16; + var $i180: i32; + var $i181: i1; + var $i183: i32; + var $i184: i1; + var $i185: i32; + var $i186: i1; + var $i188: i32; + var $i189: i32; + var $i190: i16; + var $i187: i16; + var $i182: i16; + var $i191: i32; + var $i192: i32; + var $i193: i16; + var $i194: i32; + var $i195: i32; + var $i196: i32; + var $i197: i16; + var $i198: i32; + var $i199: i32; + var $i200: i16; + var $i201: i32; + var $i202: i32; + var $i203: i32; + var $i204: i16; + var $i205: i32; + var $i206: i32; + var $i207: i32; + var $i208: i16; + var $i209: i32; + var $i210: i1; + var $i212: i32; + var $i213: i1; + var $i214: i32; + var $i215: i1; + var $i217: i32; + var $i218: i32; + var $i219: i16; + var $i216: i16; + var $i211: i16; + var $i220: i32; + var $i221: i32; + var $i222: i16; + var $i223: i32; + var $i224: i32; + var $i225: i32; + var $i226: i16; + var $i227: i32; + var $i228: i32; + var $i229: i16; + var $i230: i32; + var $i231: i32; + var $i232: i32; + var $i233: i16; + var $i234: i32; + var $i235: i32; + var $i236: i32; + var $i237: i16; + var $i238: i32; + var $i239: i1; + var $i241: i32; + var $i242: i1; + var $i243: i32; + var $i244: i1; + var $i246: i32; + var $i247: i32; + var $i248: i16; + var $i245: i16; + var $i240: i16; + var $i249: i32; + var $i250: i32; + var $i251: i16; + var $i252: i32; + var $i253: i32; + var $i254: i32; + var $i255: i16; + var $i256: i32; + var $i257: i32; + var $i258: i16; + var $i259: i32; + var $i260: i32; + var $i261: i32; + var $i262: i16; + var $i263: i32; + var $i264: i32; + var $i265: i32; + var $i266: i16; + var $i267: i32; + var $i268: i1; + var $i270: i32; + var $i271: i1; + var $i272: i32; + var $i273: i1; + var $i275: i32; + var $i276: i32; + var $i277: i16; + var $i274: i16; + var $i269: i16; + var $i278: i32; + var $i279: i32; + var $i280: i16; + var $i281: i32; + var $i282: i32; + var $i283: i32; + var $i284: i16; + var $i285: i32; + var $i286: i32; + var $i287: i16; + var $i288: i32; + var $i289: i32; + var $i290: i32; + var $i291: i16; + var $i292: i32; + var $i293: i32; + var $i294: i32; + var $i295: i16; + var $i296: i32; + var $i297: i1; + var $i299: i32; + var $i300: i1; + var $i301: i32; + var $i302: i1; + var $i304: i32; + var $i305: i32; + var $i306: i16; + var $i303: i16; + var $i298: i16; + var $i307: i32; + var $i308: i32; + var $i309: i16; + var $i310: i32; + var $i311: i32; + var $i312: i32; + var $i313: i16; + var $i314: i32; + var $i315: i32; + var $i316: i16; + var $i317: i32; + var $i318: i32; + var $i319: i32; + var $i320: i16; + var $i321: i32; + var $i322: i32; + var $i323: i32; + var $i324: i16; + var $i325: i32; + var $i326: i1; + var $i328: i32; + var $i329: i1; + var $i330: i32; + var $i331: i1; + var $i333: i32; + var $i334: i32; + var $i335: i16; + var $i332: i16; + var $i327: i16; + var $i336: i32; + var $i337: i32; + var $i338: i16; + var $i339: i32; + var $i340: i32; + var $i341: i32; + var $i342: i16; + var $i343: i32; + var $i344: i32; + var $i345: i16; + var $i346: i32; + var $i347: i32; + var $i348: i32; + var $i349: i16; + var $i350: i32; + var $i351: i32; + var $i352: i32; + var $i353: i16; + var $i354: i32; + var $i355: i1; + var $i357: i32; + var $i358: i1; + var $i359: i32; + var $i360: i1; + var $i362: i32; + var $i363: i32; + var $i364: i16; + var $i361: i16; + var $i356: i16; + var $i365: i32; + var $i366: i32; + var $i367: i16; + var $i368: i32; + var $i369: i32; + var $i370: i32; + var $i371: i16; + var $i372: i32; + var $i373: i32; + var $i374: i16; + var $i375: i32; + var $i376: i32; + var $i377: i32; + var $i378: i16; + var $i379: i32; + var $i380: i32; + var $i381: i32; + var $i382: i16; + var $i383: i32; + var $i384: i1; + var $i386: i32; + var $i387: i1; + var $i388: i32; + var $i389: i1; + var $i391: i32; + var $i392: i32; + var $i393: i16; + var $i390: i16; + var $i385: i16; + var $i394: i32; + var $i395: i32; + var $i396: i16; + var $i397: i32; + var $i398: i32; + var $i399: i32; + var $i400: i16; + var $i401: i32; + var $i402: i32; + var $i403: i16; + var $i404: i32; + var $i405: i32; + var $i406: i32; + var $i407: i16; + var $i408: i32; + var $i409: i32; + var $i410: i32; + var $i411: i16; + var $i412: i32; + var $i413: i1; + var $i415: i32; + var $i416: i1; + var $i417: i32; + var $i418: i1; + var $i420: i32; + var $i421: i32; + var $i422: i16; + var $i419: i16; + var $i414: i16; + var $i423: i32; + var $i424: i32; + var $i425: i16; + var $i426: i32; + var $i427: i32; + var $i428: i32; + var $i429: i16; + var $i430: i32; + var $i431: i32; + var $i432: i16; + var $i433: i32; + var $i434: i32; + var $i435: i32; + var $i436: i16; + var $i437: i32; + var $i438: i32; + var $i439: i32; + var $i440: i16; + var $i441: i32; + var $i442: i1; + var $i444: i32; + var $i445: i1; + var $i446: i32; + var $i447: i1; + var $i449: i32; + var $i450: i32; + var $i451: i16; + var $i448: i16; + var $i443: i16; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 8} true; + assume {:verifier.code 0} true; + call {:cexpr "__SMACK_and16:arg:a"} boogie_si_record_i16($i0); + call {:cexpr "__SMACK_and16:arg:b"} boogie_si_record_i16($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 8} true; + assume {:verifier.code 0} true; + $i2 := $sext.i16.i32(0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 5} true; + assume {:verifier.code 0} true; + $i3 := $sext.i16.i32(0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 5} true; + assume {:verifier.code 0} true; + $i4 := $add.i32($i3, $i2); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 5} true; + assume {:verifier.code 0} true; + $i5 := $trunc.i32.i16($i4); + call {:cexpr "c"} boogie_si_record_i16($i5); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 773, 7} true; + assume {:verifier.code 0} true; + $i6 := $sext.i16.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 773, 9} true; + assume {:verifier.code 0} true; + $i7 := $slt.i32($i6, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 773, 7} true; + assume {:verifier.code 0} true; + $i8 := $i5; + assume {:branchcond $i7} true; + goto $bb1, $bb2; +$bb1: + assume ($i7 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 9} true; + assume {:verifier.code 0} true; + $i9 := $sext.i16.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 11} true; + assume {:verifier.code 0} true; + $i10 := $slt.i32($i9, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i10} true; + goto $bb4, $bb6; +$bb2: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 773, 7} true; + assume {:verifier.code 0} true; + assume !(($i7 == 1)); + goto $bb3; +$bb3: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 778, 7} true; + assume {:verifier.code 0} true; + $i17 := $sext.i16.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 778, 9} true; + assume {:verifier.code 0} true; + $i18 := $srem.i32($i17, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 778, 7} true; + assume {:verifier.code 0} true; + $i19 := $trunc.i32.i16($i18); + call {:cexpr "a"} boogie_si_record_i16($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 779, 8} true; + assume {:verifier.code 0} true; + $i20 := $sext.i16.i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 779, 5} true; + assume {:verifier.code 0} true; + $i21 := $sext.i16.i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 779, 5} true; + assume {:verifier.code 0} true; + $i22 := $add.i32($i21, $i20); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 779, 5} true; + assume {:verifier.code 0} true; + $i23 := $trunc.i32.i16($i22); + call {:cexpr "a"} boogie_si_record_i16($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 780, 7} true; + assume {:verifier.code 0} true; + $i24 := $sext.i16.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 780, 9} true; + assume {:verifier.code 0} true; + $i25 := $srem.i32($i24, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 780, 7} true; + assume {:verifier.code 0} true; + $i26 := $trunc.i32.i16($i25); + call {:cexpr "b"} boogie_si_record_i16($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 781, 8} true; + assume {:verifier.code 0} true; + $i27 := $sext.i16.i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 781, 5} true; + assume {:verifier.code 0} true; + $i28 := $sext.i16.i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 781, 5} true; + assume {:verifier.code 0} true; + $i29 := $add.i32($i28, $i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 781, 5} true; + assume {:verifier.code 0} true; + $i30 := $trunc.i32.i16($i29); + call {:cexpr "b"} boogie_si_record_i16($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 783, 8} true; + assume {:verifier.code 0} true; + $i31 := $sext.i16.i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 783, 5} true; + assume {:verifier.code 0} true; + $i32 := $sext.i16.i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 783, 5} true; + assume {:verifier.code 0} true; + $i33 := $add.i32($i32, $i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 783, 5} true; + assume {:verifier.code 0} true; + $i34 := $trunc.i32.i16($i33); + call {:cexpr "c"} boogie_si_record_i16($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 784, 7} true; + assume {:verifier.code 0} true; + $i35 := $sext.i16.i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 784, 9} true; + assume {:verifier.code 0} true; + $i36 := $slt.i32($i35, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 784, 7} true; + assume {:verifier.code 0} true; + $i37 := $i34; + assume {:branchcond $i36} true; + goto $bb10, $bb11; +$bb4: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 15} true; + assume {:verifier.code 0} true; + assume ($i10 == 1); + goto $bb5; +$bb5: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 775, 9} true; + assume {:verifier.code 0} true; + $i14 := $sext.i16.i32($i5); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 775, 9} true; + assume {:verifier.code 0} true; + $i15 := $add.i32($i14, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 775, 9} true; + assume {:verifier.code 0} true; + $i16 := $trunc.i32.i16($i15); + call {:cexpr "c"} boogie_si_record_i16($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 776, 5} true; + assume {:verifier.code 0} true; + $i13 := $i16; + goto $bb9; +$bb6: + assume !(($i10 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 18} true; + assume {:verifier.code 0} true; + $i11 := $sext.i16.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 20} true; + assume {:verifier.code 0} true; + $i12 := $sgt.i32($i11, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 9} true; + assume {:verifier.code 0} true; + $i13 := $i5; + assume {:branchcond $i12} true; + goto $bb7, $bb8; +$bb7: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 9} true; + assume {:verifier.code 0} true; + assume ($i12 == 1); + goto $bb5; +$bb8: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 9} true; + assume {:verifier.code 0} true; + assume !(($i12 == 1)); + goto $bb9; +$bb9: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 777, 3} true; + assume {:verifier.code 0} true; + $i8 := $i13; + goto $bb3; +$bb10: + assume ($i36 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 9} true; + assume {:verifier.code 0} true; + $i38 := $sext.i16.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 11} true; + assume {:verifier.code 0} true; + $i39 := $slt.i32($i38, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i39} true; + goto $bb13, $bb15; +$bb11: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 784, 7} true; + assume {:verifier.code 0} true; + assume !(($i36 == 1)); + goto $bb12; +$bb12: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 789, 7} true; + assume {:verifier.code 0} true; + $i46 := $sext.i16.i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 789, 9} true; + assume {:verifier.code 0} true; + $i47 := $srem.i32($i46, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 789, 7} true; + assume {:verifier.code 0} true; + $i48 := $trunc.i32.i16($i47); + call {:cexpr "a"} boogie_si_record_i16($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 790, 8} true; + assume {:verifier.code 0} true; + $i49 := $sext.i16.i32($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 790, 5} true; + assume {:verifier.code 0} true; + $i50 := $sext.i16.i32($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 790, 5} true; + assume {:verifier.code 0} true; + $i51 := $add.i32($i50, $i49); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 790, 5} true; + assume {:verifier.code 0} true; + $i52 := $trunc.i32.i16($i51); + call {:cexpr "a"} boogie_si_record_i16($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 791, 7} true; + assume {:verifier.code 0} true; + $i53 := $sext.i16.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 791, 9} true; + assume {:verifier.code 0} true; + $i54 := $srem.i32($i53, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 791, 7} true; + assume {:verifier.code 0} true; + $i55 := $trunc.i32.i16($i54); + call {:cexpr "b"} boogie_si_record_i16($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 792, 8} true; + assume {:verifier.code 0} true; + $i56 := $sext.i16.i32($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 792, 5} true; + assume {:verifier.code 0} true; + $i57 := $sext.i16.i32($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 792, 5} true; + assume {:verifier.code 0} true; + $i58 := $add.i32($i57, $i56); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 792, 5} true; + assume {:verifier.code 0} true; + $i59 := $trunc.i32.i16($i58); + call {:cexpr "b"} boogie_si_record_i16($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 794, 8} true; + assume {:verifier.code 0} true; + $i60 := $sext.i16.i32($i37); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 794, 5} true; + assume {:verifier.code 0} true; + $i61 := $sext.i16.i32($i37); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 794, 5} true; + assume {:verifier.code 0} true; + $i62 := $add.i32($i61, $i60); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 794, 5} true; + assume {:verifier.code 0} true; + $i63 := $trunc.i32.i16($i62); + call {:cexpr "c"} boogie_si_record_i16($i63); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 795, 7} true; + assume {:verifier.code 0} true; + $i64 := $sext.i16.i32($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 795, 9} true; + assume {:verifier.code 0} true; + $i65 := $slt.i32($i64, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 795, 7} true; + assume {:verifier.code 0} true; + $i66 := $i63; + assume {:branchcond $i65} true; + goto $bb19, $bb20; +$bb13: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 15} true; + assume {:verifier.code 0} true; + assume ($i39 == 1); + goto $bb14; +$bb14: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 786, 9} true; + assume {:verifier.code 0} true; + $i43 := $sext.i16.i32($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 786, 9} true; + assume {:verifier.code 0} true; + $i44 := $add.i32($i43, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 786, 9} true; + assume {:verifier.code 0} true; + $i45 := $trunc.i32.i16($i44); + call {:cexpr "c"} boogie_si_record_i16($i45); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 787, 5} true; + assume {:verifier.code 0} true; + $i42 := $i45; + goto $bb18; +$bb15: + assume !(($i39 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 18} true; + assume {:verifier.code 0} true; + $i40 := $sext.i16.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 20} true; + assume {:verifier.code 0} true; + $i41 := $sgt.i32($i40, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 9} true; + assume {:verifier.code 0} true; + $i42 := $i34; + assume {:branchcond $i41} true; + goto $bb16, $bb17; +$bb16: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 9} true; + assume {:verifier.code 0} true; + assume ($i41 == 1); + goto $bb14; +$bb17: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 9} true; + assume {:verifier.code 0} true; + assume !(($i41 == 1)); + goto $bb18; +$bb18: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 788, 3} true; + assume {:verifier.code 0} true; + $i37 := $i42; + goto $bb12; +$bb19: + assume ($i65 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 9} true; + assume {:verifier.code 0} true; + $i67 := $sext.i16.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 11} true; + assume {:verifier.code 0} true; + $i68 := $slt.i32($i67, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i68} true; + goto $bb22, $bb24; +$bb20: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 795, 7} true; + assume {:verifier.code 0} true; + assume !(($i65 == 1)); + goto $bb21; +$bb21: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 800, 7} true; + assume {:verifier.code 0} true; + $i75 := $sext.i16.i32($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 800, 9} true; + assume {:verifier.code 0} true; + $i76 := $srem.i32($i75, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 800, 7} true; + assume {:verifier.code 0} true; + $i77 := $trunc.i32.i16($i76); + call {:cexpr "a"} boogie_si_record_i16($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 801, 8} true; + assume {:verifier.code 0} true; + $i78 := $sext.i16.i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 801, 5} true; + assume {:verifier.code 0} true; + $i79 := $sext.i16.i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 801, 5} true; + assume {:verifier.code 0} true; + $i80 := $add.i32($i79, $i78); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 801, 5} true; + assume {:verifier.code 0} true; + $i81 := $trunc.i32.i16($i80); + call {:cexpr "a"} boogie_si_record_i16($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 802, 7} true; + assume {:verifier.code 0} true; + $i82 := $sext.i16.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 802, 9} true; + assume {:verifier.code 0} true; + $i83 := $srem.i32($i82, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 802, 7} true; + assume {:verifier.code 0} true; + $i84 := $trunc.i32.i16($i83); + call {:cexpr "b"} boogie_si_record_i16($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 803, 8} true; + assume {:verifier.code 0} true; + $i85 := $sext.i16.i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 803, 5} true; + assume {:verifier.code 0} true; + $i86 := $sext.i16.i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 803, 5} true; + assume {:verifier.code 0} true; + $i87 := $add.i32($i86, $i85); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 803, 5} true; + assume {:verifier.code 0} true; + $i88 := $trunc.i32.i16($i87); + call {:cexpr "b"} boogie_si_record_i16($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 805, 8} true; + assume {:verifier.code 0} true; + $i89 := $sext.i16.i32($i66); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 805, 5} true; + assume {:verifier.code 0} true; + $i90 := $sext.i16.i32($i66); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 805, 5} true; + assume {:verifier.code 0} true; + $i91 := $add.i32($i90, $i89); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 805, 5} true; + assume {:verifier.code 0} true; + $i92 := $trunc.i32.i16($i91); + call {:cexpr "c"} boogie_si_record_i16($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 806, 7} true; + assume {:verifier.code 0} true; + $i93 := $sext.i16.i32($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 806, 9} true; + assume {:verifier.code 0} true; + $i94 := $slt.i32($i93, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 806, 7} true; + assume {:verifier.code 0} true; + $i95 := $i92; + assume {:branchcond $i94} true; + goto $bb28, $bb29; +$bb22: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 15} true; + assume {:verifier.code 0} true; + assume ($i68 == 1); + goto $bb23; +$bb23: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 797, 9} true; + assume {:verifier.code 0} true; + $i72 := $sext.i16.i32($i63); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 797, 9} true; + assume {:verifier.code 0} true; + $i73 := $add.i32($i72, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 797, 9} true; + assume {:verifier.code 0} true; + $i74 := $trunc.i32.i16($i73); + call {:cexpr "c"} boogie_si_record_i16($i74); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 798, 5} true; + assume {:verifier.code 0} true; + $i71 := $i74; + goto $bb27; +$bb24: + assume !(($i68 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 18} true; + assume {:verifier.code 0} true; + $i69 := $sext.i16.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 20} true; + assume {:verifier.code 0} true; + $i70 := $sgt.i32($i69, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 9} true; + assume {:verifier.code 0} true; + $i71 := $i63; + assume {:branchcond $i70} true; + goto $bb25, $bb26; +$bb25: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 9} true; + assume {:verifier.code 0} true; + assume ($i70 == 1); + goto $bb23; +$bb26: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 9} true; + assume {:verifier.code 0} true; + assume !(($i70 == 1)); + goto $bb27; +$bb27: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 799, 3} true; + assume {:verifier.code 0} true; + $i66 := $i71; + goto $bb21; +$bb28: + assume ($i94 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 9} true; + assume {:verifier.code 0} true; + $i96 := $sext.i16.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 11} true; + assume {:verifier.code 0} true; + $i97 := $slt.i32($i96, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i97} true; + goto $bb31, $bb33; +$bb29: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 806, 7} true; + assume {:verifier.code 0} true; + assume !(($i94 == 1)); + goto $bb30; +$bb30: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 811, 7} true; + assume {:verifier.code 0} true; + $i104 := $sext.i16.i32($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 811, 9} true; + assume {:verifier.code 0} true; + $i105 := $srem.i32($i104, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 811, 7} true; + assume {:verifier.code 0} true; + $i106 := $trunc.i32.i16($i105); + call {:cexpr "a"} boogie_si_record_i16($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 812, 8} true; + assume {:verifier.code 0} true; + $i107 := $sext.i16.i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 812, 5} true; + assume {:verifier.code 0} true; + $i108 := $sext.i16.i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 812, 5} true; + assume {:verifier.code 0} true; + $i109 := $add.i32($i108, $i107); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 812, 5} true; + assume {:verifier.code 0} true; + $i110 := $trunc.i32.i16($i109); + call {:cexpr "a"} boogie_si_record_i16($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 813, 7} true; + assume {:verifier.code 0} true; + $i111 := $sext.i16.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 813, 9} true; + assume {:verifier.code 0} true; + $i112 := $srem.i32($i111, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 813, 7} true; + assume {:verifier.code 0} true; + $i113 := $trunc.i32.i16($i112); + call {:cexpr "b"} boogie_si_record_i16($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 814, 8} true; + assume {:verifier.code 0} true; + $i114 := $sext.i16.i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 814, 5} true; + assume {:verifier.code 0} true; + $i115 := $sext.i16.i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 814, 5} true; + assume {:verifier.code 0} true; + $i116 := $add.i32($i115, $i114); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 814, 5} true; + assume {:verifier.code 0} true; + $i117 := $trunc.i32.i16($i116); + call {:cexpr "b"} boogie_si_record_i16($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 816, 8} true; + assume {:verifier.code 0} true; + $i118 := $sext.i16.i32($i95); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 816, 5} true; + assume {:verifier.code 0} true; + $i119 := $sext.i16.i32($i95); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 816, 5} true; + assume {:verifier.code 0} true; + $i120 := $add.i32($i119, $i118); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 816, 5} true; + assume {:verifier.code 0} true; + $i121 := $trunc.i32.i16($i120); + call {:cexpr "c"} boogie_si_record_i16($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 817, 7} true; + assume {:verifier.code 0} true; + $i122 := $sext.i16.i32($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 817, 9} true; + assume {:verifier.code 0} true; + $i123 := $slt.i32($i122, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 817, 7} true; + assume {:verifier.code 0} true; + $i124 := $i121; + assume {:branchcond $i123} true; + goto $bb37, $bb38; +$bb31: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 15} true; + assume {:verifier.code 0} true; + assume ($i97 == 1); + goto $bb32; +$bb32: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 808, 9} true; + assume {:verifier.code 0} true; + $i101 := $sext.i16.i32($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 808, 9} true; + assume {:verifier.code 0} true; + $i102 := $add.i32($i101, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 808, 9} true; + assume {:verifier.code 0} true; + $i103 := $trunc.i32.i16($i102); + call {:cexpr "c"} boogie_si_record_i16($i103); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 809, 5} true; + assume {:verifier.code 0} true; + $i100 := $i103; + goto $bb36; +$bb33: + assume !(($i97 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 18} true; + assume {:verifier.code 0} true; + $i98 := $sext.i16.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 20} true; + assume {:verifier.code 0} true; + $i99 := $sgt.i32($i98, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 9} true; + assume {:verifier.code 0} true; + $i100 := $i92; + assume {:branchcond $i99} true; + goto $bb34, $bb35; +$bb34: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 9} true; + assume {:verifier.code 0} true; + assume ($i99 == 1); + goto $bb32; +$bb35: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 9} true; + assume {:verifier.code 0} true; + assume !(($i99 == 1)); + goto $bb36; +$bb36: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 810, 3} true; + assume {:verifier.code 0} true; + $i95 := $i100; + goto $bb30; +$bb37: + assume ($i123 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 9} true; + assume {:verifier.code 0} true; + $i125 := $sext.i16.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 11} true; + assume {:verifier.code 0} true; + $i126 := $slt.i32($i125, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i126} true; + goto $bb40, $bb42; +$bb38: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 817, 7} true; + assume {:verifier.code 0} true; + assume !(($i123 == 1)); + goto $bb39; +$bb39: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 822, 7} true; + assume {:verifier.code 0} true; + $i133 := $sext.i16.i32($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 822, 9} true; + assume {:verifier.code 0} true; + $i134 := $srem.i32($i133, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 822, 7} true; + assume {:verifier.code 0} true; + $i135 := $trunc.i32.i16($i134); + call {:cexpr "a"} boogie_si_record_i16($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 823, 8} true; + assume {:verifier.code 0} true; + $i136 := $sext.i16.i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 823, 5} true; + assume {:verifier.code 0} true; + $i137 := $sext.i16.i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 823, 5} true; + assume {:verifier.code 0} true; + $i138 := $add.i32($i137, $i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 823, 5} true; + assume {:verifier.code 0} true; + $i139 := $trunc.i32.i16($i138); + call {:cexpr "a"} boogie_si_record_i16($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 824, 7} true; + assume {:verifier.code 0} true; + $i140 := $sext.i16.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 824, 9} true; + assume {:verifier.code 0} true; + $i141 := $srem.i32($i140, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 824, 7} true; + assume {:verifier.code 0} true; + $i142 := $trunc.i32.i16($i141); + call {:cexpr "b"} boogie_si_record_i16($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 825, 8} true; + assume {:verifier.code 0} true; + $i143 := $sext.i16.i32($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 825, 5} true; + assume {:verifier.code 0} true; + $i144 := $sext.i16.i32($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 825, 5} true; + assume {:verifier.code 0} true; + $i145 := $add.i32($i144, $i143); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 825, 5} true; + assume {:verifier.code 0} true; + $i146 := $trunc.i32.i16($i145); + call {:cexpr "b"} boogie_si_record_i16($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 827, 8} true; + assume {:verifier.code 0} true; + $i147 := $sext.i16.i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 827, 5} true; + assume {:verifier.code 0} true; + $i148 := $sext.i16.i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 827, 5} true; + assume {:verifier.code 0} true; + $i149 := $add.i32($i148, $i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 827, 5} true; + assume {:verifier.code 0} true; + $i150 := $trunc.i32.i16($i149); + call {:cexpr "c"} boogie_si_record_i16($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 828, 7} true; + assume {:verifier.code 0} true; + $i151 := $sext.i16.i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 828, 9} true; + assume {:verifier.code 0} true; + $i152 := $slt.i32($i151, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 828, 7} true; + assume {:verifier.code 0} true; + $i153 := $i150; + assume {:branchcond $i152} true; + goto $bb46, $bb47; +$bb40: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 15} true; + assume {:verifier.code 0} true; + assume ($i126 == 1); + goto $bb41; +$bb41: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 819, 9} true; + assume {:verifier.code 0} true; + $i130 := $sext.i16.i32($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 819, 9} true; + assume {:verifier.code 0} true; + $i131 := $add.i32($i130, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 819, 9} true; + assume {:verifier.code 0} true; + $i132 := $trunc.i32.i16($i131); + call {:cexpr "c"} boogie_si_record_i16($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 820, 5} true; + assume {:verifier.code 0} true; + $i129 := $i132; + goto $bb45; +$bb42: + assume !(($i126 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 18} true; + assume {:verifier.code 0} true; + $i127 := $sext.i16.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 20} true; + assume {:verifier.code 0} true; + $i128 := $sgt.i32($i127, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 9} true; + assume {:verifier.code 0} true; + $i129 := $i121; + assume {:branchcond $i128} true; + goto $bb43, $bb44; +$bb43: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 9} true; + assume {:verifier.code 0} true; + assume ($i128 == 1); + goto $bb41; +$bb44: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 9} true; + assume {:verifier.code 0} true; + assume !(($i128 == 1)); + goto $bb45; +$bb45: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 821, 3} true; + assume {:verifier.code 0} true; + $i124 := $i129; + goto $bb39; +$bb46: + assume ($i152 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 9} true; + assume {:verifier.code 0} true; + $i154 := $sext.i16.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 11} true; + assume {:verifier.code 0} true; + $i155 := $slt.i32($i154, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i155} true; + goto $bb49, $bb51; +$bb47: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 828, 7} true; + assume {:verifier.code 0} true; + assume !(($i152 == 1)); + goto $bb48; +$bb48: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 833, 7} true; + assume {:verifier.code 0} true; + $i162 := $sext.i16.i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 833, 9} true; + assume {:verifier.code 0} true; + $i163 := $srem.i32($i162, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 833, 7} true; + assume {:verifier.code 0} true; + $i164 := $trunc.i32.i16($i163); + call {:cexpr "a"} boogie_si_record_i16($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 834, 8} true; + assume {:verifier.code 0} true; + $i165 := $sext.i16.i32($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 834, 5} true; + assume {:verifier.code 0} true; + $i166 := $sext.i16.i32($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 834, 5} true; + assume {:verifier.code 0} true; + $i167 := $add.i32($i166, $i165); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 834, 5} true; + assume {:verifier.code 0} true; + $i168 := $trunc.i32.i16($i167); + call {:cexpr "a"} boogie_si_record_i16($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 835, 7} true; + assume {:verifier.code 0} true; + $i169 := $sext.i16.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 835, 9} true; + assume {:verifier.code 0} true; + $i170 := $srem.i32($i169, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 835, 7} true; + assume {:verifier.code 0} true; + $i171 := $trunc.i32.i16($i170); + call {:cexpr "b"} boogie_si_record_i16($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 836, 8} true; + assume {:verifier.code 0} true; + $i172 := $sext.i16.i32($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 836, 5} true; + assume {:verifier.code 0} true; + $i173 := $sext.i16.i32($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 836, 5} true; + assume {:verifier.code 0} true; + $i174 := $add.i32($i173, $i172); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 836, 5} true; + assume {:verifier.code 0} true; + $i175 := $trunc.i32.i16($i174); + call {:cexpr "b"} boogie_si_record_i16($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 838, 8} true; + assume {:verifier.code 0} true; + $i176 := $sext.i16.i32($i153); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 838, 5} true; + assume {:verifier.code 0} true; + $i177 := $sext.i16.i32($i153); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 838, 5} true; + assume {:verifier.code 0} true; + $i178 := $add.i32($i177, $i176); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 838, 5} true; + assume {:verifier.code 0} true; + $i179 := $trunc.i32.i16($i178); + call {:cexpr "c"} boogie_si_record_i16($i179); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 839, 7} true; + assume {:verifier.code 0} true; + $i180 := $sext.i16.i32($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 839, 9} true; + assume {:verifier.code 0} true; + $i181 := $slt.i32($i180, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 839, 7} true; + assume {:verifier.code 0} true; + $i182 := $i179; + assume {:branchcond $i181} true; + goto $bb55, $bb56; +$bb49: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 15} true; + assume {:verifier.code 0} true; + assume ($i155 == 1); + goto $bb50; +$bb50: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 830, 9} true; + assume {:verifier.code 0} true; + $i159 := $sext.i16.i32($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 830, 9} true; + assume {:verifier.code 0} true; + $i160 := $add.i32($i159, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 830, 9} true; + assume {:verifier.code 0} true; + $i161 := $trunc.i32.i16($i160); + call {:cexpr "c"} boogie_si_record_i16($i161); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 831, 5} true; + assume {:verifier.code 0} true; + $i158 := $i161; + goto $bb54; +$bb51: + assume !(($i155 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 18} true; + assume {:verifier.code 0} true; + $i156 := $sext.i16.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 20} true; + assume {:verifier.code 0} true; + $i157 := $sgt.i32($i156, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 9} true; + assume {:verifier.code 0} true; + $i158 := $i150; + assume {:branchcond $i157} true; + goto $bb52, $bb53; +$bb52: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 9} true; + assume {:verifier.code 0} true; + assume ($i157 == 1); + goto $bb50; +$bb53: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 9} true; + assume {:verifier.code 0} true; + assume !(($i157 == 1)); + goto $bb54; +$bb54: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 832, 3} true; + assume {:verifier.code 0} true; + $i153 := $i158; + goto $bb48; +$bb55: + assume ($i181 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 9} true; + assume {:verifier.code 0} true; + $i183 := $sext.i16.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 11} true; + assume {:verifier.code 0} true; + $i184 := $slt.i32($i183, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i184} true; + goto $bb58, $bb60; +$bb56: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 839, 7} true; + assume {:verifier.code 0} true; + assume !(($i181 == 1)); + goto $bb57; +$bb57: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 844, 7} true; + assume {:verifier.code 0} true; + $i191 := $sext.i16.i32($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 844, 9} true; + assume {:verifier.code 0} true; + $i192 := $srem.i32($i191, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 844, 7} true; + assume {:verifier.code 0} true; + $i193 := $trunc.i32.i16($i192); + call {:cexpr "a"} boogie_si_record_i16($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 845, 8} true; + assume {:verifier.code 0} true; + $i194 := $sext.i16.i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 845, 5} true; + assume {:verifier.code 0} true; + $i195 := $sext.i16.i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 845, 5} true; + assume {:verifier.code 0} true; + $i196 := $add.i32($i195, $i194); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 845, 5} true; + assume {:verifier.code 0} true; + $i197 := $trunc.i32.i16($i196); + call {:cexpr "a"} boogie_si_record_i16($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 846, 7} true; + assume {:verifier.code 0} true; + $i198 := $sext.i16.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 846, 9} true; + assume {:verifier.code 0} true; + $i199 := $srem.i32($i198, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 846, 7} true; + assume {:verifier.code 0} true; + $i200 := $trunc.i32.i16($i199); + call {:cexpr "b"} boogie_si_record_i16($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 847, 8} true; + assume {:verifier.code 0} true; + $i201 := $sext.i16.i32($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 847, 5} true; + assume {:verifier.code 0} true; + $i202 := $sext.i16.i32($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 847, 5} true; + assume {:verifier.code 0} true; + $i203 := $add.i32($i202, $i201); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 847, 5} true; + assume {:verifier.code 0} true; + $i204 := $trunc.i32.i16($i203); + call {:cexpr "b"} boogie_si_record_i16($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 849, 8} true; + assume {:verifier.code 0} true; + $i205 := $sext.i16.i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 849, 5} true; + assume {:verifier.code 0} true; + $i206 := $sext.i16.i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 849, 5} true; + assume {:verifier.code 0} true; + $i207 := $add.i32($i206, $i205); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 849, 5} true; + assume {:verifier.code 0} true; + $i208 := $trunc.i32.i16($i207); + call {:cexpr "c"} boogie_si_record_i16($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 850, 7} true; + assume {:verifier.code 0} true; + $i209 := $sext.i16.i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 850, 9} true; + assume {:verifier.code 0} true; + $i210 := $slt.i32($i209, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 850, 7} true; + assume {:verifier.code 0} true; + $i211 := $i208; + assume {:branchcond $i210} true; + goto $bb64, $bb65; +$bb58: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 15} true; + assume {:verifier.code 0} true; + assume ($i184 == 1); + goto $bb59; +$bb59: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 841, 9} true; + assume {:verifier.code 0} true; + $i188 := $sext.i16.i32($i179); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 841, 9} true; + assume {:verifier.code 0} true; + $i189 := $add.i32($i188, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 841, 9} true; + assume {:verifier.code 0} true; + $i190 := $trunc.i32.i16($i189); + call {:cexpr "c"} boogie_si_record_i16($i190); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 842, 5} true; + assume {:verifier.code 0} true; + $i187 := $i190; + goto $bb63; +$bb60: + assume !(($i184 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 18} true; + assume {:verifier.code 0} true; + $i185 := $sext.i16.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 20} true; + assume {:verifier.code 0} true; + $i186 := $sgt.i32($i185, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 9} true; + assume {:verifier.code 0} true; + $i187 := $i179; + assume {:branchcond $i186} true; + goto $bb61, $bb62; +$bb61: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 9} true; + assume {:verifier.code 0} true; + assume ($i186 == 1); + goto $bb59; +$bb62: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 9} true; + assume {:verifier.code 0} true; + assume !(($i186 == 1)); + goto $bb63; +$bb63: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 843, 3} true; + assume {:verifier.code 0} true; + $i182 := $i187; + goto $bb57; +$bb64: + assume ($i210 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 9} true; + assume {:verifier.code 0} true; + $i212 := $sext.i16.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 11} true; + assume {:verifier.code 0} true; + $i213 := $slt.i32($i212, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i213} true; + goto $bb67, $bb69; +$bb65: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 850, 7} true; + assume {:verifier.code 0} true; + assume !(($i210 == 1)); + goto $bb66; +$bb66: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 855, 7} true; + assume {:verifier.code 0} true; + $i220 := $sext.i16.i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 855, 9} true; + assume {:verifier.code 0} true; + $i221 := $srem.i32($i220, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 855, 7} true; + assume {:verifier.code 0} true; + $i222 := $trunc.i32.i16($i221); + call {:cexpr "a"} boogie_si_record_i16($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 856, 8} true; + assume {:verifier.code 0} true; + $i223 := $sext.i16.i32($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 856, 5} true; + assume {:verifier.code 0} true; + $i224 := $sext.i16.i32($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 856, 5} true; + assume {:verifier.code 0} true; + $i225 := $add.i32($i224, $i223); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 856, 5} true; + assume {:verifier.code 0} true; + $i226 := $trunc.i32.i16($i225); + call {:cexpr "a"} boogie_si_record_i16($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 857, 7} true; + assume {:verifier.code 0} true; + $i227 := $sext.i16.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 857, 9} true; + assume {:verifier.code 0} true; + $i228 := $srem.i32($i227, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 857, 7} true; + assume {:verifier.code 0} true; + $i229 := $trunc.i32.i16($i228); + call {:cexpr "b"} boogie_si_record_i16($i229); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 858, 8} true; + assume {:verifier.code 0} true; + $i230 := $sext.i16.i32($i229); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 858, 5} true; + assume {:verifier.code 0} true; + $i231 := $sext.i16.i32($i229); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 858, 5} true; + assume {:verifier.code 0} true; + $i232 := $add.i32($i231, $i230); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 858, 5} true; + assume {:verifier.code 0} true; + $i233 := $trunc.i32.i16($i232); + call {:cexpr "b"} boogie_si_record_i16($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 860, 8} true; + assume {:verifier.code 0} true; + $i234 := $sext.i16.i32($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 860, 5} true; + assume {:verifier.code 0} true; + $i235 := $sext.i16.i32($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 860, 5} true; + assume {:verifier.code 0} true; + $i236 := $add.i32($i235, $i234); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 860, 5} true; + assume {:verifier.code 0} true; + $i237 := $trunc.i32.i16($i236); + call {:cexpr "c"} boogie_si_record_i16($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 861, 7} true; + assume {:verifier.code 0} true; + $i238 := $sext.i16.i32($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 861, 9} true; + assume {:verifier.code 0} true; + $i239 := $slt.i32($i238, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 861, 7} true; + assume {:verifier.code 0} true; + $i240 := $i237; + assume {:branchcond $i239} true; + goto $bb73, $bb74; +$bb67: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 15} true; + assume {:verifier.code 0} true; + assume ($i213 == 1); + goto $bb68; +$bb68: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 852, 9} true; + assume {:verifier.code 0} true; + $i217 := $sext.i16.i32($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 852, 9} true; + assume {:verifier.code 0} true; + $i218 := $add.i32($i217, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 852, 9} true; + assume {:verifier.code 0} true; + $i219 := $trunc.i32.i16($i218); + call {:cexpr "c"} boogie_si_record_i16($i219); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 853, 5} true; + assume {:verifier.code 0} true; + $i216 := $i219; + goto $bb72; +$bb69: + assume !(($i213 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 18} true; + assume {:verifier.code 0} true; + $i214 := $sext.i16.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 20} true; + assume {:verifier.code 0} true; + $i215 := $sgt.i32($i214, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 9} true; + assume {:verifier.code 0} true; + $i216 := $i208; + assume {:branchcond $i215} true; + goto $bb70, $bb71; +$bb70: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 9} true; + assume {:verifier.code 0} true; + assume ($i215 == 1); + goto $bb68; +$bb71: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 9} true; + assume {:verifier.code 0} true; + assume !(($i215 == 1)); + goto $bb72; +$bb72: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 854, 3} true; + assume {:verifier.code 0} true; + $i211 := $i216; + goto $bb66; +$bb73: + assume ($i239 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 9} true; + assume {:verifier.code 0} true; + $i241 := $sext.i16.i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 11} true; + assume {:verifier.code 0} true; + $i242 := $slt.i32($i241, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i242} true; + goto $bb76, $bb78; +$bb74: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 861, 7} true; + assume {:verifier.code 0} true; + assume !(($i239 == 1)); + goto $bb75; +$bb75: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 866, 7} true; + assume {:verifier.code 0} true; + $i249 := $sext.i16.i32($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 866, 9} true; + assume {:verifier.code 0} true; + $i250 := $srem.i32($i249, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 866, 7} true; + assume {:verifier.code 0} true; + $i251 := $trunc.i32.i16($i250); + call {:cexpr "a"} boogie_si_record_i16($i251); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 867, 8} true; + assume {:verifier.code 0} true; + $i252 := $sext.i16.i32($i251); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 867, 5} true; + assume {:verifier.code 0} true; + $i253 := $sext.i16.i32($i251); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 867, 5} true; + assume {:verifier.code 0} true; + $i254 := $add.i32($i253, $i252); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 867, 5} true; + assume {:verifier.code 0} true; + $i255 := $trunc.i32.i16($i254); + call {:cexpr "a"} boogie_si_record_i16($i255); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 868, 7} true; + assume {:verifier.code 0} true; + $i256 := $sext.i16.i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 868, 9} true; + assume {:verifier.code 0} true; + $i257 := $srem.i32($i256, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 868, 7} true; + assume {:verifier.code 0} true; + $i258 := $trunc.i32.i16($i257); + call {:cexpr "b"} boogie_si_record_i16($i258); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 869, 8} true; + assume {:verifier.code 0} true; + $i259 := $sext.i16.i32($i258); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 869, 5} true; + assume {:verifier.code 0} true; + $i260 := $sext.i16.i32($i258); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 869, 5} true; + assume {:verifier.code 0} true; + $i261 := $add.i32($i260, $i259); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 869, 5} true; + assume {:verifier.code 0} true; + $i262 := $trunc.i32.i16($i261); + call {:cexpr "b"} boogie_si_record_i16($i262); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 871, 8} true; + assume {:verifier.code 0} true; + $i263 := $sext.i16.i32($i240); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 871, 5} true; + assume {:verifier.code 0} true; + $i264 := $sext.i16.i32($i240); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 871, 5} true; + assume {:verifier.code 0} true; + $i265 := $add.i32($i264, $i263); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 871, 5} true; + assume {:verifier.code 0} true; + $i266 := $trunc.i32.i16($i265); + call {:cexpr "c"} boogie_si_record_i16($i266); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 872, 7} true; + assume {:verifier.code 0} true; + $i267 := $sext.i16.i32($i255); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 872, 9} true; + assume {:verifier.code 0} true; + $i268 := $slt.i32($i267, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 872, 7} true; + assume {:verifier.code 0} true; + $i269 := $i266; + assume {:branchcond $i268} true; + goto $bb82, $bb83; +$bb76: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 15} true; + assume {:verifier.code 0} true; + assume ($i242 == 1); + goto $bb77; +$bb77: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 863, 9} true; + assume {:verifier.code 0} true; + $i246 := $sext.i16.i32($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 863, 9} true; + assume {:verifier.code 0} true; + $i247 := $add.i32($i246, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 863, 9} true; + assume {:verifier.code 0} true; + $i248 := $trunc.i32.i16($i247); + call {:cexpr "c"} boogie_si_record_i16($i248); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 864, 5} true; + assume {:verifier.code 0} true; + $i245 := $i248; + goto $bb81; +$bb78: + assume !(($i242 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 18} true; + assume {:verifier.code 0} true; + $i243 := $sext.i16.i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 20} true; + assume {:verifier.code 0} true; + $i244 := $sgt.i32($i243, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 9} true; + assume {:verifier.code 0} true; + $i245 := $i237; + assume {:branchcond $i244} true; + goto $bb79, $bb80; +$bb79: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 9} true; + assume {:verifier.code 0} true; + assume ($i244 == 1); + goto $bb77; +$bb80: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 9} true; + assume {:verifier.code 0} true; + assume !(($i244 == 1)); + goto $bb81; +$bb81: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 865, 3} true; + assume {:verifier.code 0} true; + $i240 := $i245; + goto $bb75; +$bb82: + assume ($i268 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 9} true; + assume {:verifier.code 0} true; + $i270 := $sext.i16.i32($i262); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 11} true; + assume {:verifier.code 0} true; + $i271 := $slt.i32($i270, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i271} true; + goto $bb85, $bb87; +$bb83: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 872, 7} true; + assume {:verifier.code 0} true; + assume !(($i268 == 1)); + goto $bb84; +$bb84: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 877, 7} true; + assume {:verifier.code 0} true; + $i278 := $sext.i16.i32($i255); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 877, 9} true; + assume {:verifier.code 0} true; + $i279 := $srem.i32($i278, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 877, 7} true; + assume {:verifier.code 0} true; + $i280 := $trunc.i32.i16($i279); + call {:cexpr "a"} boogie_si_record_i16($i280); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 878, 8} true; + assume {:verifier.code 0} true; + $i281 := $sext.i16.i32($i280); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 878, 5} true; + assume {:verifier.code 0} true; + $i282 := $sext.i16.i32($i280); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 878, 5} true; + assume {:verifier.code 0} true; + $i283 := $add.i32($i282, $i281); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 878, 5} true; + assume {:verifier.code 0} true; + $i284 := $trunc.i32.i16($i283); + call {:cexpr "a"} boogie_si_record_i16($i284); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 879, 7} true; + assume {:verifier.code 0} true; + $i285 := $sext.i16.i32($i262); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 879, 9} true; + assume {:verifier.code 0} true; + $i286 := $srem.i32($i285, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 879, 7} true; + assume {:verifier.code 0} true; + $i287 := $trunc.i32.i16($i286); + call {:cexpr "b"} boogie_si_record_i16($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 880, 8} true; + assume {:verifier.code 0} true; + $i288 := $sext.i16.i32($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 880, 5} true; + assume {:verifier.code 0} true; + $i289 := $sext.i16.i32($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 880, 5} true; + assume {:verifier.code 0} true; + $i290 := $add.i32($i289, $i288); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 880, 5} true; + assume {:verifier.code 0} true; + $i291 := $trunc.i32.i16($i290); + call {:cexpr "b"} boogie_si_record_i16($i291); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 882, 8} true; + assume {:verifier.code 0} true; + $i292 := $sext.i16.i32($i269); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 882, 5} true; + assume {:verifier.code 0} true; + $i293 := $sext.i16.i32($i269); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 882, 5} true; + assume {:verifier.code 0} true; + $i294 := $add.i32($i293, $i292); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 882, 5} true; + assume {:verifier.code 0} true; + $i295 := $trunc.i32.i16($i294); + call {:cexpr "c"} boogie_si_record_i16($i295); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 883, 7} true; + assume {:verifier.code 0} true; + $i296 := $sext.i16.i32($i284); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 883, 9} true; + assume {:verifier.code 0} true; + $i297 := $slt.i32($i296, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 883, 7} true; + assume {:verifier.code 0} true; + $i298 := $i295; + assume {:branchcond $i297} true; + goto $bb91, $bb92; +$bb85: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 15} true; + assume {:verifier.code 0} true; + assume ($i271 == 1); + goto $bb86; +$bb86: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 874, 9} true; + assume {:verifier.code 0} true; + $i275 := $sext.i16.i32($i266); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 874, 9} true; + assume {:verifier.code 0} true; + $i276 := $add.i32($i275, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 874, 9} true; + assume {:verifier.code 0} true; + $i277 := $trunc.i32.i16($i276); + call {:cexpr "c"} boogie_si_record_i16($i277); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 875, 5} true; + assume {:verifier.code 0} true; + $i274 := $i277; + goto $bb90; +$bb87: + assume !(($i271 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 18} true; + assume {:verifier.code 0} true; + $i272 := $sext.i16.i32($i262); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 20} true; + assume {:verifier.code 0} true; + $i273 := $sgt.i32($i272, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 9} true; + assume {:verifier.code 0} true; + $i274 := $i266; + assume {:branchcond $i273} true; + goto $bb88, $bb89; +$bb88: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 9} true; + assume {:verifier.code 0} true; + assume ($i273 == 1); + goto $bb86; +$bb89: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 9} true; + assume {:verifier.code 0} true; + assume !(($i273 == 1)); + goto $bb90; +$bb90: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 876, 3} true; + assume {:verifier.code 0} true; + $i269 := $i274; + goto $bb84; +$bb91: + assume ($i297 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 9} true; + assume {:verifier.code 0} true; + $i299 := $sext.i16.i32($i291); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 11} true; + assume {:verifier.code 0} true; + $i300 := $slt.i32($i299, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i300} true; + goto $bb94, $bb96; +$bb92: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 883, 7} true; + assume {:verifier.code 0} true; + assume !(($i297 == 1)); + goto $bb93; +$bb93: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 888, 7} true; + assume {:verifier.code 0} true; + $i307 := $sext.i16.i32($i284); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 888, 9} true; + assume {:verifier.code 0} true; + $i308 := $srem.i32($i307, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 888, 7} true; + assume {:verifier.code 0} true; + $i309 := $trunc.i32.i16($i308); + call {:cexpr "a"} boogie_si_record_i16($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 889, 8} true; + assume {:verifier.code 0} true; + $i310 := $sext.i16.i32($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 889, 5} true; + assume {:verifier.code 0} true; + $i311 := $sext.i16.i32($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 889, 5} true; + assume {:verifier.code 0} true; + $i312 := $add.i32($i311, $i310); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 889, 5} true; + assume {:verifier.code 0} true; + $i313 := $trunc.i32.i16($i312); + call {:cexpr "a"} boogie_si_record_i16($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 890, 7} true; + assume {:verifier.code 0} true; + $i314 := $sext.i16.i32($i291); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 890, 9} true; + assume {:verifier.code 0} true; + $i315 := $srem.i32($i314, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 890, 7} true; + assume {:verifier.code 0} true; + $i316 := $trunc.i32.i16($i315); + call {:cexpr "b"} boogie_si_record_i16($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 891, 8} true; + assume {:verifier.code 0} true; + $i317 := $sext.i16.i32($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 891, 5} true; + assume {:verifier.code 0} true; + $i318 := $sext.i16.i32($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 891, 5} true; + assume {:verifier.code 0} true; + $i319 := $add.i32($i318, $i317); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 891, 5} true; + assume {:verifier.code 0} true; + $i320 := $trunc.i32.i16($i319); + call {:cexpr "b"} boogie_si_record_i16($i320); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 893, 8} true; + assume {:verifier.code 0} true; + $i321 := $sext.i16.i32($i298); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 893, 5} true; + assume {:verifier.code 0} true; + $i322 := $sext.i16.i32($i298); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 893, 5} true; + assume {:verifier.code 0} true; + $i323 := $add.i32($i322, $i321); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 893, 5} true; + assume {:verifier.code 0} true; + $i324 := $trunc.i32.i16($i323); + call {:cexpr "c"} boogie_si_record_i16($i324); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 894, 7} true; + assume {:verifier.code 0} true; + $i325 := $sext.i16.i32($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 894, 9} true; + assume {:verifier.code 0} true; + $i326 := $slt.i32($i325, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 894, 7} true; + assume {:verifier.code 0} true; + $i327 := $i324; + assume {:branchcond $i326} true; + goto $bb100, $bb101; +$bb94: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 15} true; + assume {:verifier.code 0} true; + assume ($i300 == 1); + goto $bb95; +$bb95: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 885, 9} true; + assume {:verifier.code 0} true; + $i304 := $sext.i16.i32($i295); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 885, 9} true; + assume {:verifier.code 0} true; + $i305 := $add.i32($i304, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 885, 9} true; + assume {:verifier.code 0} true; + $i306 := $trunc.i32.i16($i305); + call {:cexpr "c"} boogie_si_record_i16($i306); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 886, 5} true; + assume {:verifier.code 0} true; + $i303 := $i306; + goto $bb99; +$bb96: + assume !(($i300 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 18} true; + assume {:verifier.code 0} true; + $i301 := $sext.i16.i32($i291); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 20} true; + assume {:verifier.code 0} true; + $i302 := $sgt.i32($i301, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 9} true; + assume {:verifier.code 0} true; + $i303 := $i295; + assume {:branchcond $i302} true; + goto $bb97, $bb98; +$bb97: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 9} true; + assume {:verifier.code 0} true; + assume ($i302 == 1); + goto $bb95; +$bb98: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 9} true; + assume {:verifier.code 0} true; + assume !(($i302 == 1)); + goto $bb99; +$bb99: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 887, 3} true; + assume {:verifier.code 0} true; + $i298 := $i303; + goto $bb93; +$bb100: + assume ($i326 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 9} true; + assume {:verifier.code 0} true; + $i328 := $sext.i16.i32($i320); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 11} true; + assume {:verifier.code 0} true; + $i329 := $slt.i32($i328, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i329} true; + goto $bb103, $bb105; +$bb101: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 894, 7} true; + assume {:verifier.code 0} true; + assume !(($i326 == 1)); + goto $bb102; +$bb102: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 899, 7} true; + assume {:verifier.code 0} true; + $i336 := $sext.i16.i32($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 899, 9} true; + assume {:verifier.code 0} true; + $i337 := $srem.i32($i336, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 899, 7} true; + assume {:verifier.code 0} true; + $i338 := $trunc.i32.i16($i337); + call {:cexpr "a"} boogie_si_record_i16($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 900, 8} true; + assume {:verifier.code 0} true; + $i339 := $sext.i16.i32($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 900, 5} true; + assume {:verifier.code 0} true; + $i340 := $sext.i16.i32($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 900, 5} true; + assume {:verifier.code 0} true; + $i341 := $add.i32($i340, $i339); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 900, 5} true; + assume {:verifier.code 0} true; + $i342 := $trunc.i32.i16($i341); + call {:cexpr "a"} boogie_si_record_i16($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 901, 7} true; + assume {:verifier.code 0} true; + $i343 := $sext.i16.i32($i320); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 901, 9} true; + assume {:verifier.code 0} true; + $i344 := $srem.i32($i343, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 901, 7} true; + assume {:verifier.code 0} true; + $i345 := $trunc.i32.i16($i344); + call {:cexpr "b"} boogie_si_record_i16($i345); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 902, 8} true; + assume {:verifier.code 0} true; + $i346 := $sext.i16.i32($i345); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 902, 5} true; + assume {:verifier.code 0} true; + $i347 := $sext.i16.i32($i345); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 902, 5} true; + assume {:verifier.code 0} true; + $i348 := $add.i32($i347, $i346); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 902, 5} true; + assume {:verifier.code 0} true; + $i349 := $trunc.i32.i16($i348); + call {:cexpr "b"} boogie_si_record_i16($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 904, 8} true; + assume {:verifier.code 0} true; + $i350 := $sext.i16.i32($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 904, 5} true; + assume {:verifier.code 0} true; + $i351 := $sext.i16.i32($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 904, 5} true; + assume {:verifier.code 0} true; + $i352 := $add.i32($i351, $i350); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 904, 5} true; + assume {:verifier.code 0} true; + $i353 := $trunc.i32.i16($i352); + call {:cexpr "c"} boogie_si_record_i16($i353); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 905, 7} true; + assume {:verifier.code 0} true; + $i354 := $sext.i16.i32($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 905, 9} true; + assume {:verifier.code 0} true; + $i355 := $slt.i32($i354, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 905, 7} true; + assume {:verifier.code 0} true; + $i356 := $i353; + assume {:branchcond $i355} true; + goto $bb109, $bb110; +$bb103: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 15} true; + assume {:verifier.code 0} true; + assume ($i329 == 1); + goto $bb104; +$bb104: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 896, 9} true; + assume {:verifier.code 0} true; + $i333 := $sext.i16.i32($i324); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 896, 9} true; + assume {:verifier.code 0} true; + $i334 := $add.i32($i333, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 896, 9} true; + assume {:verifier.code 0} true; + $i335 := $trunc.i32.i16($i334); + call {:cexpr "c"} boogie_si_record_i16($i335); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 897, 5} true; + assume {:verifier.code 0} true; + $i332 := $i335; + goto $bb108; +$bb105: + assume !(($i329 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 18} true; + assume {:verifier.code 0} true; + $i330 := $sext.i16.i32($i320); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 20} true; + assume {:verifier.code 0} true; + $i331 := $sgt.i32($i330, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 9} true; + assume {:verifier.code 0} true; + $i332 := $i324; + assume {:branchcond $i331} true; + goto $bb106, $bb107; +$bb106: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 9} true; + assume {:verifier.code 0} true; + assume ($i331 == 1); + goto $bb104; +$bb107: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 9} true; + assume {:verifier.code 0} true; + assume !(($i331 == 1)); + goto $bb108; +$bb108: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 898, 3} true; + assume {:verifier.code 0} true; + $i327 := $i332; + goto $bb102; +$bb109: + assume ($i355 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 9} true; + assume {:verifier.code 0} true; + $i357 := $sext.i16.i32($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 11} true; + assume {:verifier.code 0} true; + $i358 := $slt.i32($i357, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i358} true; + goto $bb112, $bb114; +$bb110: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 905, 7} true; + assume {:verifier.code 0} true; + assume !(($i355 == 1)); + goto $bb111; +$bb111: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 910, 7} true; + assume {:verifier.code 0} true; + $i365 := $sext.i16.i32($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 910, 9} true; + assume {:verifier.code 0} true; + $i366 := $srem.i32($i365, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 910, 7} true; + assume {:verifier.code 0} true; + $i367 := $trunc.i32.i16($i366); + call {:cexpr "a"} boogie_si_record_i16($i367); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 911, 8} true; + assume {:verifier.code 0} true; + $i368 := $sext.i16.i32($i367); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 911, 5} true; + assume {:verifier.code 0} true; + $i369 := $sext.i16.i32($i367); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 911, 5} true; + assume {:verifier.code 0} true; + $i370 := $add.i32($i369, $i368); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 911, 5} true; + assume {:verifier.code 0} true; + $i371 := $trunc.i32.i16($i370); + call {:cexpr "a"} boogie_si_record_i16($i371); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 912, 7} true; + assume {:verifier.code 0} true; + $i372 := $sext.i16.i32($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 912, 9} true; + assume {:verifier.code 0} true; + $i373 := $srem.i32($i372, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 912, 7} true; + assume {:verifier.code 0} true; + $i374 := $trunc.i32.i16($i373); + call {:cexpr "b"} boogie_si_record_i16($i374); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 913, 8} true; + assume {:verifier.code 0} true; + $i375 := $sext.i16.i32($i374); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 913, 5} true; + assume {:verifier.code 0} true; + $i376 := $sext.i16.i32($i374); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 913, 5} true; + assume {:verifier.code 0} true; + $i377 := $add.i32($i376, $i375); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 913, 5} true; + assume {:verifier.code 0} true; + $i378 := $trunc.i32.i16($i377); + call {:cexpr "b"} boogie_si_record_i16($i378); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 915, 8} true; + assume {:verifier.code 0} true; + $i379 := $sext.i16.i32($i356); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 915, 5} true; + assume {:verifier.code 0} true; + $i380 := $sext.i16.i32($i356); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 915, 5} true; + assume {:verifier.code 0} true; + $i381 := $add.i32($i380, $i379); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 915, 5} true; + assume {:verifier.code 0} true; + $i382 := $trunc.i32.i16($i381); + call {:cexpr "c"} boogie_si_record_i16($i382); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 916, 7} true; + assume {:verifier.code 0} true; + $i383 := $sext.i16.i32($i371); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 916, 9} true; + assume {:verifier.code 0} true; + $i384 := $slt.i32($i383, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 916, 7} true; + assume {:verifier.code 0} true; + $i385 := $i382; + assume {:branchcond $i384} true; + goto $bb118, $bb119; +$bb112: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 15} true; + assume {:verifier.code 0} true; + assume ($i358 == 1); + goto $bb113; +$bb113: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 907, 9} true; + assume {:verifier.code 0} true; + $i362 := $sext.i16.i32($i353); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 907, 9} true; + assume {:verifier.code 0} true; + $i363 := $add.i32($i362, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 907, 9} true; + assume {:verifier.code 0} true; + $i364 := $trunc.i32.i16($i363); + call {:cexpr "c"} boogie_si_record_i16($i364); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 908, 5} true; + assume {:verifier.code 0} true; + $i361 := $i364; + goto $bb117; +$bb114: + assume !(($i358 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 18} true; + assume {:verifier.code 0} true; + $i359 := $sext.i16.i32($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 20} true; + assume {:verifier.code 0} true; + $i360 := $sgt.i32($i359, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 9} true; + assume {:verifier.code 0} true; + $i361 := $i353; + assume {:branchcond $i360} true; + goto $bb115, $bb116; +$bb115: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 9} true; + assume {:verifier.code 0} true; + assume ($i360 == 1); + goto $bb113; +$bb116: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 9} true; + assume {:verifier.code 0} true; + assume !(($i360 == 1)); + goto $bb117; +$bb117: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 909, 3} true; + assume {:verifier.code 0} true; + $i356 := $i361; + goto $bb111; +$bb118: + assume ($i384 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 9} true; + assume {:verifier.code 0} true; + $i386 := $sext.i16.i32($i378); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 11} true; + assume {:verifier.code 0} true; + $i387 := $slt.i32($i386, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i387} true; + goto $bb121, $bb123; +$bb119: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 916, 7} true; + assume {:verifier.code 0} true; + assume !(($i384 == 1)); + goto $bb120; +$bb120: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 921, 7} true; + assume {:verifier.code 0} true; + $i394 := $sext.i16.i32($i371); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 921, 9} true; + assume {:verifier.code 0} true; + $i395 := $srem.i32($i394, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 921, 7} true; + assume {:verifier.code 0} true; + $i396 := $trunc.i32.i16($i395); + call {:cexpr "a"} boogie_si_record_i16($i396); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 922, 8} true; + assume {:verifier.code 0} true; + $i397 := $sext.i16.i32($i396); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 922, 5} true; + assume {:verifier.code 0} true; + $i398 := $sext.i16.i32($i396); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 922, 5} true; + assume {:verifier.code 0} true; + $i399 := $add.i32($i398, $i397); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 922, 5} true; + assume {:verifier.code 0} true; + $i400 := $trunc.i32.i16($i399); + call {:cexpr "a"} boogie_si_record_i16($i400); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 923, 7} true; + assume {:verifier.code 0} true; + $i401 := $sext.i16.i32($i378); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 923, 9} true; + assume {:verifier.code 0} true; + $i402 := $srem.i32($i401, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 923, 7} true; + assume {:verifier.code 0} true; + $i403 := $trunc.i32.i16($i402); + call {:cexpr "b"} boogie_si_record_i16($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 924, 8} true; + assume {:verifier.code 0} true; + $i404 := $sext.i16.i32($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 924, 5} true; + assume {:verifier.code 0} true; + $i405 := $sext.i16.i32($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 924, 5} true; + assume {:verifier.code 0} true; + $i406 := $add.i32($i405, $i404); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 924, 5} true; + assume {:verifier.code 0} true; + $i407 := $trunc.i32.i16($i406); + call {:cexpr "b"} boogie_si_record_i16($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 926, 8} true; + assume {:verifier.code 0} true; + $i408 := $sext.i16.i32($i385); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 926, 5} true; + assume {:verifier.code 0} true; + $i409 := $sext.i16.i32($i385); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 926, 5} true; + assume {:verifier.code 0} true; + $i410 := $add.i32($i409, $i408); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 926, 5} true; + assume {:verifier.code 0} true; + $i411 := $trunc.i32.i16($i410); + call {:cexpr "c"} boogie_si_record_i16($i411); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 927, 7} true; + assume {:verifier.code 0} true; + $i412 := $sext.i16.i32($i400); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 927, 9} true; + assume {:verifier.code 0} true; + $i413 := $slt.i32($i412, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 927, 7} true; + assume {:verifier.code 0} true; + $i414 := $i411; + assume {:branchcond $i413} true; + goto $bb127, $bb128; +$bb121: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 15} true; + assume {:verifier.code 0} true; + assume ($i387 == 1); + goto $bb122; +$bb122: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 918, 9} true; + assume {:verifier.code 0} true; + $i391 := $sext.i16.i32($i382); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 918, 9} true; + assume {:verifier.code 0} true; + $i392 := $add.i32($i391, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 918, 9} true; + assume {:verifier.code 0} true; + $i393 := $trunc.i32.i16($i392); + call {:cexpr "c"} boogie_si_record_i16($i393); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 919, 5} true; + assume {:verifier.code 0} true; + $i390 := $i393; + goto $bb126; +$bb123: + assume !(($i387 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 18} true; + assume {:verifier.code 0} true; + $i388 := $sext.i16.i32($i378); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 20} true; + assume {:verifier.code 0} true; + $i389 := $sgt.i32($i388, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 9} true; + assume {:verifier.code 0} true; + $i390 := $i382; + assume {:branchcond $i389} true; + goto $bb124, $bb125; +$bb124: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 9} true; + assume {:verifier.code 0} true; + assume ($i389 == 1); + goto $bb122; +$bb125: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 9} true; + assume {:verifier.code 0} true; + assume !(($i389 == 1)); + goto $bb126; +$bb126: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 920, 3} true; + assume {:verifier.code 0} true; + $i385 := $i390; + goto $bb120; +$bb127: + assume ($i413 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 9} true; + assume {:verifier.code 0} true; + $i415 := $sext.i16.i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 11} true; + assume {:verifier.code 0} true; + $i416 := $slt.i32($i415, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i416} true; + goto $bb130, $bb132; +$bb128: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 927, 7} true; + assume {:verifier.code 0} true; + assume !(($i413 == 1)); + goto $bb129; +$bb129: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 932, 7} true; + assume {:verifier.code 0} true; + $i423 := $sext.i16.i32($i400); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 932, 9} true; + assume {:verifier.code 0} true; + $i424 := $srem.i32($i423, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 932, 7} true; + assume {:verifier.code 0} true; + $i425 := $trunc.i32.i16($i424); + call {:cexpr "a"} boogie_si_record_i16($i425); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 933, 8} true; + assume {:verifier.code 0} true; + $i426 := $sext.i16.i32($i425); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 933, 5} true; + assume {:verifier.code 0} true; + $i427 := $sext.i16.i32($i425); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 933, 5} true; + assume {:verifier.code 0} true; + $i428 := $add.i32($i427, $i426); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 933, 5} true; + assume {:verifier.code 0} true; + $i429 := $trunc.i32.i16($i428); + call {:cexpr "a"} boogie_si_record_i16($i429); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 934, 7} true; + assume {:verifier.code 0} true; + $i430 := $sext.i16.i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 934, 9} true; + assume {:verifier.code 0} true; + $i431 := $srem.i32($i430, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 934, 7} true; + assume {:verifier.code 0} true; + $i432 := $trunc.i32.i16($i431); + call {:cexpr "b"} boogie_si_record_i16($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 935, 8} true; + assume {:verifier.code 0} true; + $i433 := $sext.i16.i32($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 935, 5} true; + assume {:verifier.code 0} true; + $i434 := $sext.i16.i32($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 935, 5} true; + assume {:verifier.code 0} true; + $i435 := $add.i32($i434, $i433); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 935, 5} true; + assume {:verifier.code 0} true; + $i436 := $trunc.i32.i16($i435); + call {:cexpr "b"} boogie_si_record_i16($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 937, 8} true; + assume {:verifier.code 0} true; + $i437 := $sext.i16.i32($i414); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 937, 5} true; + assume {:verifier.code 0} true; + $i438 := $sext.i16.i32($i414); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 937, 5} true; + assume {:verifier.code 0} true; + $i439 := $add.i32($i438, $i437); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 937, 5} true; + assume {:verifier.code 0} true; + $i440 := $trunc.i32.i16($i439); + call {:cexpr "c"} boogie_si_record_i16($i440); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 938, 7} true; + assume {:verifier.code 0} true; + $i441 := $sext.i16.i32($i429); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 938, 9} true; + assume {:verifier.code 0} true; + $i442 := $slt.i32($i441, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 938, 7} true; + assume {:verifier.code 0} true; + $i443 := $i440; + assume {:branchcond $i442} true; + goto $bb136, $bb137; +$bb130: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 15} true; + assume {:verifier.code 0} true; + assume ($i416 == 1); + goto $bb131; +$bb131: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 929, 9} true; + assume {:verifier.code 0} true; + $i420 := $sext.i16.i32($i411); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 929, 9} true; + assume {:verifier.code 0} true; + $i421 := $add.i32($i420, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 929, 9} true; + assume {:verifier.code 0} true; + $i422 := $trunc.i32.i16($i421); + call {:cexpr "c"} boogie_si_record_i16($i422); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 930, 5} true; + assume {:verifier.code 0} true; + $i419 := $i422; + goto $bb135; +$bb132: + assume !(($i416 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 18} true; + assume {:verifier.code 0} true; + $i417 := $sext.i16.i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 20} true; + assume {:verifier.code 0} true; + $i418 := $sgt.i32($i417, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 9} true; + assume {:verifier.code 0} true; + $i419 := $i411; + assume {:branchcond $i418} true; + goto $bb133, $bb134; +$bb133: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 9} true; + assume {:verifier.code 0} true; + assume ($i418 == 1); + goto $bb131; +$bb134: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 9} true; + assume {:verifier.code 0} true; + assume !(($i418 == 1)); + goto $bb135; +$bb135: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 931, 3} true; + assume {:verifier.code 0} true; + $i414 := $i419; + goto $bb129; +$bb136: + assume ($i442 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 9} true; + assume {:verifier.code 0} true; + $i444 := $sext.i16.i32($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 11} true; + assume {:verifier.code 0} true; + $i445 := $slt.i32($i444, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i445} true; + goto $bb139, $bb141; +$bb137: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 938, 7} true; + assume {:verifier.code 0} true; + assume !(($i442 == 1)); + goto $bb138; +$bb138: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 948, 3} true; + assume {:verifier.code 0} true; + $r := $i443; + $exn := false; + return; +$bb139: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 15} true; + assume {:verifier.code 0} true; + assume ($i445 == 1); + goto $bb140; +$bb140: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 940, 9} true; + assume {:verifier.code 0} true; + $i449 := $sext.i16.i32($i440); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 940, 9} true; + assume {:verifier.code 0} true; + $i450 := $add.i32($i449, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 940, 9} true; + assume {:verifier.code 0} true; + $i451 := $trunc.i32.i16($i450); + call {:cexpr "c"} boogie_si_record_i16($i451); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 941, 5} true; + assume {:verifier.code 0} true; + $i448 := $i451; + goto $bb144; +$bb141: + assume !(($i445 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 18} true; + assume {:verifier.code 0} true; + $i446 := $sext.i16.i32($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 20} true; + assume {:verifier.code 0} true; + $i447 := $sgt.i32($i446, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 9} true; + assume {:verifier.code 0} true; + $i448 := $i440; + assume {:branchcond $i447} true; + goto $bb142, $bb143; +$bb142: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 9} true; + assume {:verifier.code 0} true; + assume ($i447 == 1); + goto $bb140; +$bb143: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 9} true; + assume {:verifier.code 0} true; + assume !(($i447 == 1)); + goto $bb144; +$bb144: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 942, 3} true; + assume {:verifier.code 0} true; + $i443 := $i448; + goto $bb138; +} +const __SMACK_and8: ref; +axiom (__SMACK_and8 == $sub.ref(0, 18572)); +procedure __SMACK_and8($i0: i8, $i1: i8) + returns ($r: i8) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i8; + var $i6: i32; + var $i7: i1; + var $i9: i32; + var $i10: i1; + var $i11: i32; + var $i12: i1; + var $i14: i32; + var $i15: i32; + var $i16: i8; + var $i13: i8; + var $i8: i8; + var $i17: i32; + var $i18: i32; + var $i19: i8; + var $i20: i32; + var $i21: i32; + var $i22: i32; + var $i23: i8; + var $i24: i32; + var $i25: i32; + var $i26: i8; + var $i27: i32; + var $i28: i32; + var $i29: i32; + var $i30: i8; + var $i31: i32; + var $i32: i32; + var $i33: i32; + var $i34: i8; + var $i35: i32; + var $i36: i1; + var $i38: i32; + var $i39: i1; + var $i40: i32; + var $i41: i1; + var $i43: i32; + var $i44: i32; + var $i45: i8; + var $i42: i8; + var $i37: i8; + var $i46: i32; + var $i47: i32; + var $i48: i8; + var $i49: i32; + var $i50: i32; + var $i51: i32; + var $i52: i8; + var $i53: i32; + var $i54: i32; + var $i55: i8; + var $i56: i32; + var $i57: i32; + var $i58: i32; + var $i59: i8; + var $i60: i32; + var $i61: i32; + var $i62: i32; + var $i63: i8; + var $i64: i32; + var $i65: i1; + var $i67: i32; + var $i68: i1; + var $i69: i32; + var $i70: i1; + var $i72: i32; + var $i73: i32; + var $i74: i8; + var $i71: i8; + var $i66: i8; + var $i75: i32; + var $i76: i32; + var $i77: i8; + var $i78: i32; + var $i79: i32; + var $i80: i32; + var $i81: i8; + var $i82: i32; + var $i83: i32; + var $i84: i8; + var $i85: i32; + var $i86: i32; + var $i87: i32; + var $i88: i8; + var $i89: i32; + var $i90: i32; + var $i91: i32; + var $i92: i8; + var $i93: i32; + var $i94: i1; + var $i96: i32; + var $i97: i1; + var $i98: i32; + var $i99: i1; + var $i101: i32; + var $i102: i32; + var $i103: i8; + var $i100: i8; + var $i95: i8; + var $i104: i32; + var $i105: i32; + var $i106: i8; + var $i107: i32; + var $i108: i32; + var $i109: i32; + var $i110: i8; + var $i111: i32; + var $i112: i32; + var $i113: i8; + var $i114: i32; + var $i115: i32; + var $i116: i32; + var $i117: i8; + var $i118: i32; + var $i119: i32; + var $i120: i32; + var $i121: i8; + var $i122: i32; + var $i123: i1; + var $i125: i32; + var $i126: i1; + var $i127: i32; + var $i128: i1; + var $i130: i32; + var $i131: i32; + var $i132: i8; + var $i129: i8; + var $i124: i8; + var $i133: i32; + var $i134: i32; + var $i135: i8; + var $i136: i32; + var $i137: i32; + var $i138: i32; + var $i139: i8; + var $i140: i32; + var $i141: i32; + var $i142: i8; + var $i143: i32; + var $i144: i32; + var $i145: i32; + var $i146: i8; + var $i147: i32; + var $i148: i32; + var $i149: i32; + var $i150: i8; + var $i151: i32; + var $i152: i1; + var $i154: i32; + var $i155: i1; + var $i156: i32; + var $i157: i1; + var $i159: i32; + var $i160: i32; + var $i161: i8; + var $i158: i8; + var $i153: i8; + var $i162: i32; + var $i163: i32; + var $i164: i8; + var $i165: i32; + var $i166: i32; + var $i167: i32; + var $i168: i8; + var $i169: i32; + var $i170: i32; + var $i171: i8; + var $i172: i32; + var $i173: i32; + var $i174: i32; + var $i175: i8; + var $i176: i32; + var $i177: i32; + var $i178: i32; + var $i179: i8; + var $i180: i32; + var $i181: i1; + var $i183: i32; + var $i184: i1; + var $i185: i32; + var $i186: i1; + var $i188: i32; + var $i189: i32; + var $i190: i8; + var $i187: i8; + var $i182: i8; + var $i191: i32; + var $i192: i32; + var $i193: i8; + var $i194: i32; + var $i195: i32; + var $i196: i32; + var $i197: i8; + var $i198: i32; + var $i199: i32; + var $i200: i8; + var $i201: i32; + var $i202: i32; + var $i203: i32; + var $i204: i8; + var $i205: i32; + var $i206: i32; + var $i207: i32; + var $i208: i8; + var $i209: i32; + var $i210: i1; + var $i212: i32; + var $i213: i1; + var $i214: i32; + var $i215: i1; + var $i217: i32; + var $i218: i32; + var $i219: i8; + var $i216: i8; + var $i211: i8; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 8} true; + assume {:verifier.code 0} true; + call {:cexpr "__SMACK_and8:arg:a"} boogie_si_record_i8($i0); + call {:cexpr "__SMACK_and8:arg:b"} boogie_si_record_i8($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 8} true; + assume {:verifier.code 0} true; + $i2 := $sext.i8.i32(0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 5} true; + assume {:verifier.code 0} true; + $i3 := $sext.i8.i32(0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 5} true; + assume {:verifier.code 0} true; + $i4 := $add.i32($i3, $i2); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 5} true; + assume {:verifier.code 0} true; + $i5 := $trunc.i32.i8($i4); + call {:cexpr "c"} boogie_si_record_i8($i5); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 955, 7} true; + assume {:verifier.code 0} true; + $i6 := $sext.i8.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 955, 9} true; + assume {:verifier.code 0} true; + $i7 := $slt.i32($i6, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 955, 7} true; + assume {:verifier.code 0} true; + $i8 := $i5; + assume {:branchcond $i7} true; + goto $bb1, $bb2; +$bb1: + assume ($i7 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 9} true; + assume {:verifier.code 0} true; + $i9 := $sext.i8.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 11} true; + assume {:verifier.code 0} true; + $i10 := $slt.i32($i9, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i10} true; + goto $bb4, $bb6; +$bb2: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 955, 7} true; + assume {:verifier.code 0} true; + assume !(($i7 == 1)); + goto $bb3; +$bb3: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 960, 7} true; + assume {:verifier.code 0} true; + $i17 := $sext.i8.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 960, 9} true; + assume {:verifier.code 0} true; + $i18 := $srem.i32($i17, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 960, 7} true; + assume {:verifier.code 0} true; + $i19 := $trunc.i32.i8($i18); + call {:cexpr "a"} boogie_si_record_i8($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 961, 8} true; + assume {:verifier.code 0} true; + $i20 := $sext.i8.i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 961, 5} true; + assume {:verifier.code 0} true; + $i21 := $sext.i8.i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 961, 5} true; + assume {:verifier.code 0} true; + $i22 := $add.i32($i21, $i20); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 961, 5} true; + assume {:verifier.code 0} true; + $i23 := $trunc.i32.i8($i22); + call {:cexpr "a"} boogie_si_record_i8($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 962, 7} true; + assume {:verifier.code 0} true; + $i24 := $sext.i8.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 962, 9} true; + assume {:verifier.code 0} true; + $i25 := $srem.i32($i24, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 962, 7} true; + assume {:verifier.code 0} true; + $i26 := $trunc.i32.i8($i25); + call {:cexpr "b"} boogie_si_record_i8($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 963, 8} true; + assume {:verifier.code 0} true; + $i27 := $sext.i8.i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 963, 5} true; + assume {:verifier.code 0} true; + $i28 := $sext.i8.i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 963, 5} true; + assume {:verifier.code 0} true; + $i29 := $add.i32($i28, $i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 963, 5} true; + assume {:verifier.code 0} true; + $i30 := $trunc.i32.i8($i29); + call {:cexpr "b"} boogie_si_record_i8($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 965, 8} true; + assume {:verifier.code 0} true; + $i31 := $sext.i8.i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 965, 5} true; + assume {:verifier.code 0} true; + $i32 := $sext.i8.i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 965, 5} true; + assume {:verifier.code 0} true; + $i33 := $add.i32($i32, $i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 965, 5} true; + assume {:verifier.code 0} true; + $i34 := $trunc.i32.i8($i33); + call {:cexpr "c"} boogie_si_record_i8($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 966, 7} true; + assume {:verifier.code 0} true; + $i35 := $sext.i8.i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 966, 9} true; + assume {:verifier.code 0} true; + $i36 := $slt.i32($i35, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 966, 7} true; + assume {:verifier.code 0} true; + $i37 := $i34; + assume {:branchcond $i36} true; + goto $bb10, $bb11; +$bb4: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 15} true; + assume {:verifier.code 0} true; + assume ($i10 == 1); + goto $bb5; +$bb5: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 957, 9} true; + assume {:verifier.code 0} true; + $i14 := $sext.i8.i32($i5); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 957, 9} true; + assume {:verifier.code 0} true; + $i15 := $add.i32($i14, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 957, 9} true; + assume {:verifier.code 0} true; + $i16 := $trunc.i32.i8($i15); + call {:cexpr "c"} boogie_si_record_i8($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 958, 5} true; + assume {:verifier.code 0} true; + $i13 := $i16; + goto $bb9; +$bb6: + assume !(($i10 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 18} true; + assume {:verifier.code 0} true; + $i11 := $sext.i8.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 20} true; + assume {:verifier.code 0} true; + $i12 := $sgt.i32($i11, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 9} true; + assume {:verifier.code 0} true; + $i13 := $i5; + assume {:branchcond $i12} true; + goto $bb7, $bb8; +$bb7: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 9} true; + assume {:verifier.code 0} true; + assume ($i12 == 1); + goto $bb5; +$bb8: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 9} true; + assume {:verifier.code 0} true; + assume !(($i12 == 1)); + goto $bb9; +$bb9: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 959, 3} true; + assume {:verifier.code 0} true; + $i8 := $i13; + goto $bb3; +$bb10: + assume ($i36 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 9} true; + assume {:verifier.code 0} true; + $i38 := $sext.i8.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 11} true; + assume {:verifier.code 0} true; + $i39 := $slt.i32($i38, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i39} true; + goto $bb13, $bb15; +$bb11: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 966, 7} true; + assume {:verifier.code 0} true; + assume !(($i36 == 1)); + goto $bb12; +$bb12: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 971, 7} true; + assume {:verifier.code 0} true; + $i46 := $sext.i8.i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 971, 9} true; + assume {:verifier.code 0} true; + $i47 := $srem.i32($i46, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 971, 7} true; + assume {:verifier.code 0} true; + $i48 := $trunc.i32.i8($i47); + call {:cexpr "a"} boogie_si_record_i8($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 972, 8} true; + assume {:verifier.code 0} true; + $i49 := $sext.i8.i32($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 972, 5} true; + assume {:verifier.code 0} true; + $i50 := $sext.i8.i32($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 972, 5} true; + assume {:verifier.code 0} true; + $i51 := $add.i32($i50, $i49); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 972, 5} true; + assume {:verifier.code 0} true; + $i52 := $trunc.i32.i8($i51); + call {:cexpr "a"} boogie_si_record_i8($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 973, 7} true; + assume {:verifier.code 0} true; + $i53 := $sext.i8.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 973, 9} true; + assume {:verifier.code 0} true; + $i54 := $srem.i32($i53, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 973, 7} true; + assume {:verifier.code 0} true; + $i55 := $trunc.i32.i8($i54); + call {:cexpr "b"} boogie_si_record_i8($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 974, 8} true; + assume {:verifier.code 0} true; + $i56 := $sext.i8.i32($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 974, 5} true; + assume {:verifier.code 0} true; + $i57 := $sext.i8.i32($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 974, 5} true; + assume {:verifier.code 0} true; + $i58 := $add.i32($i57, $i56); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 974, 5} true; + assume {:verifier.code 0} true; + $i59 := $trunc.i32.i8($i58); + call {:cexpr "b"} boogie_si_record_i8($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 976, 8} true; + assume {:verifier.code 0} true; + $i60 := $sext.i8.i32($i37); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 976, 5} true; + assume {:verifier.code 0} true; + $i61 := $sext.i8.i32($i37); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 976, 5} true; + assume {:verifier.code 0} true; + $i62 := $add.i32($i61, $i60); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 976, 5} true; + assume {:verifier.code 0} true; + $i63 := $trunc.i32.i8($i62); + call {:cexpr "c"} boogie_si_record_i8($i63); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 977, 7} true; + assume {:verifier.code 0} true; + $i64 := $sext.i8.i32($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 977, 9} true; + assume {:verifier.code 0} true; + $i65 := $slt.i32($i64, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 977, 7} true; + assume {:verifier.code 0} true; + $i66 := $i63; + assume {:branchcond $i65} true; + goto $bb19, $bb20; +$bb13: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 15} true; + assume {:verifier.code 0} true; + assume ($i39 == 1); + goto $bb14; +$bb14: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 968, 9} true; + assume {:verifier.code 0} true; + $i43 := $sext.i8.i32($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 968, 9} true; + assume {:verifier.code 0} true; + $i44 := $add.i32($i43, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 968, 9} true; + assume {:verifier.code 0} true; + $i45 := $trunc.i32.i8($i44); + call {:cexpr "c"} boogie_si_record_i8($i45); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 969, 5} true; + assume {:verifier.code 0} true; + $i42 := $i45; + goto $bb18; +$bb15: + assume !(($i39 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 18} true; + assume {:verifier.code 0} true; + $i40 := $sext.i8.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 20} true; + assume {:verifier.code 0} true; + $i41 := $sgt.i32($i40, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 9} true; + assume {:verifier.code 0} true; + $i42 := $i34; + assume {:branchcond $i41} true; + goto $bb16, $bb17; +$bb16: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 9} true; + assume {:verifier.code 0} true; + assume ($i41 == 1); + goto $bb14; +$bb17: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 9} true; + assume {:verifier.code 0} true; + assume !(($i41 == 1)); + goto $bb18; +$bb18: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 970, 3} true; + assume {:verifier.code 0} true; + $i37 := $i42; + goto $bb12; +$bb19: + assume ($i65 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 9} true; + assume {:verifier.code 0} true; + $i67 := $sext.i8.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 11} true; + assume {:verifier.code 0} true; + $i68 := $slt.i32($i67, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i68} true; + goto $bb22, $bb24; +$bb20: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 977, 7} true; + assume {:verifier.code 0} true; + assume !(($i65 == 1)); + goto $bb21; +$bb21: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 982, 7} true; + assume {:verifier.code 0} true; + $i75 := $sext.i8.i32($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 982, 9} true; + assume {:verifier.code 0} true; + $i76 := $srem.i32($i75, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 982, 7} true; + assume {:verifier.code 0} true; + $i77 := $trunc.i32.i8($i76); + call {:cexpr "a"} boogie_si_record_i8($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 983, 8} true; + assume {:verifier.code 0} true; + $i78 := $sext.i8.i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 983, 5} true; + assume {:verifier.code 0} true; + $i79 := $sext.i8.i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 983, 5} true; + assume {:verifier.code 0} true; + $i80 := $add.i32($i79, $i78); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 983, 5} true; + assume {:verifier.code 0} true; + $i81 := $trunc.i32.i8($i80); + call {:cexpr "a"} boogie_si_record_i8($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 984, 7} true; + assume {:verifier.code 0} true; + $i82 := $sext.i8.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 984, 9} true; + assume {:verifier.code 0} true; + $i83 := $srem.i32($i82, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 984, 7} true; + assume {:verifier.code 0} true; + $i84 := $trunc.i32.i8($i83); + call {:cexpr "b"} boogie_si_record_i8($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 985, 8} true; + assume {:verifier.code 0} true; + $i85 := $sext.i8.i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 985, 5} true; + assume {:verifier.code 0} true; + $i86 := $sext.i8.i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 985, 5} true; + assume {:verifier.code 0} true; + $i87 := $add.i32($i86, $i85); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 985, 5} true; + assume {:verifier.code 0} true; + $i88 := $trunc.i32.i8($i87); + call {:cexpr "b"} boogie_si_record_i8($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 987, 8} true; + assume {:verifier.code 0} true; + $i89 := $sext.i8.i32($i66); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 987, 5} true; + assume {:verifier.code 0} true; + $i90 := $sext.i8.i32($i66); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 987, 5} true; + assume {:verifier.code 0} true; + $i91 := $add.i32($i90, $i89); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 987, 5} true; + assume {:verifier.code 0} true; + $i92 := $trunc.i32.i8($i91); + call {:cexpr "c"} boogie_si_record_i8($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 988, 7} true; + assume {:verifier.code 0} true; + $i93 := $sext.i8.i32($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 988, 9} true; + assume {:verifier.code 0} true; + $i94 := $slt.i32($i93, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 988, 7} true; + assume {:verifier.code 0} true; + $i95 := $i92; + assume {:branchcond $i94} true; + goto $bb28, $bb29; +$bb22: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 15} true; + assume {:verifier.code 0} true; + assume ($i68 == 1); + goto $bb23; +$bb23: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 979, 9} true; + assume {:verifier.code 0} true; + $i72 := $sext.i8.i32($i63); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 979, 9} true; + assume {:verifier.code 0} true; + $i73 := $add.i32($i72, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 979, 9} true; + assume {:verifier.code 0} true; + $i74 := $trunc.i32.i8($i73); + call {:cexpr "c"} boogie_si_record_i8($i74); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 980, 5} true; + assume {:verifier.code 0} true; + $i71 := $i74; + goto $bb27; +$bb24: + assume !(($i68 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 18} true; + assume {:verifier.code 0} true; + $i69 := $sext.i8.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 20} true; + assume {:verifier.code 0} true; + $i70 := $sgt.i32($i69, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 9} true; + assume {:verifier.code 0} true; + $i71 := $i63; + assume {:branchcond $i70} true; + goto $bb25, $bb26; +$bb25: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 9} true; + assume {:verifier.code 0} true; + assume ($i70 == 1); + goto $bb23; +$bb26: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 9} true; + assume {:verifier.code 0} true; + assume !(($i70 == 1)); + goto $bb27; +$bb27: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 981, 3} true; + assume {:verifier.code 0} true; + $i66 := $i71; + goto $bb21; +$bb28: + assume ($i94 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 9} true; + assume {:verifier.code 0} true; + $i96 := $sext.i8.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 11} true; + assume {:verifier.code 0} true; + $i97 := $slt.i32($i96, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i97} true; + goto $bb31, $bb33; +$bb29: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 988, 7} true; + assume {:verifier.code 0} true; + assume !(($i94 == 1)); + goto $bb30; +$bb30: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 993, 7} true; + assume {:verifier.code 0} true; + $i104 := $sext.i8.i32($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 993, 9} true; + assume {:verifier.code 0} true; + $i105 := $srem.i32($i104, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 993, 7} true; + assume {:verifier.code 0} true; + $i106 := $trunc.i32.i8($i105); + call {:cexpr "a"} boogie_si_record_i8($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 994, 8} true; + assume {:verifier.code 0} true; + $i107 := $sext.i8.i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 994, 5} true; + assume {:verifier.code 0} true; + $i108 := $sext.i8.i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 994, 5} true; + assume {:verifier.code 0} true; + $i109 := $add.i32($i108, $i107); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 994, 5} true; + assume {:verifier.code 0} true; + $i110 := $trunc.i32.i8($i109); + call {:cexpr "a"} boogie_si_record_i8($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 995, 7} true; + assume {:verifier.code 0} true; + $i111 := $sext.i8.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 995, 9} true; + assume {:verifier.code 0} true; + $i112 := $srem.i32($i111, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 995, 7} true; + assume {:verifier.code 0} true; + $i113 := $trunc.i32.i8($i112); + call {:cexpr "b"} boogie_si_record_i8($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 996, 8} true; + assume {:verifier.code 0} true; + $i114 := $sext.i8.i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 996, 5} true; + assume {:verifier.code 0} true; + $i115 := $sext.i8.i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 996, 5} true; + assume {:verifier.code 0} true; + $i116 := $add.i32($i115, $i114); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 996, 5} true; + assume {:verifier.code 0} true; + $i117 := $trunc.i32.i8($i116); + call {:cexpr "b"} boogie_si_record_i8($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 998, 8} true; + assume {:verifier.code 0} true; + $i118 := $sext.i8.i32($i95); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 998, 5} true; + assume {:verifier.code 0} true; + $i119 := $sext.i8.i32($i95); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 998, 5} true; + assume {:verifier.code 0} true; + $i120 := $add.i32($i119, $i118); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 998, 5} true; + assume {:verifier.code 0} true; + $i121 := $trunc.i32.i8($i120); + call {:cexpr "c"} boogie_si_record_i8($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 999, 7} true; + assume {:verifier.code 0} true; + $i122 := $sext.i8.i32($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 999, 9} true; + assume {:verifier.code 0} true; + $i123 := $slt.i32($i122, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 999, 7} true; + assume {:verifier.code 0} true; + $i124 := $i121; + assume {:branchcond $i123} true; + goto $bb37, $bb38; +$bb31: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 15} true; + assume {:verifier.code 0} true; + assume ($i97 == 1); + goto $bb32; +$bb32: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 990, 9} true; + assume {:verifier.code 0} true; + $i101 := $sext.i8.i32($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 990, 9} true; + assume {:verifier.code 0} true; + $i102 := $add.i32($i101, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 990, 9} true; + assume {:verifier.code 0} true; + $i103 := $trunc.i32.i8($i102); + call {:cexpr "c"} boogie_si_record_i8($i103); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 991, 5} true; + assume {:verifier.code 0} true; + $i100 := $i103; + goto $bb36; +$bb33: + assume !(($i97 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 18} true; + assume {:verifier.code 0} true; + $i98 := $sext.i8.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 20} true; + assume {:verifier.code 0} true; + $i99 := $sgt.i32($i98, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 9} true; + assume {:verifier.code 0} true; + $i100 := $i92; + assume {:branchcond $i99} true; + goto $bb34, $bb35; +$bb34: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 9} true; + assume {:verifier.code 0} true; + assume ($i99 == 1); + goto $bb32; +$bb35: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 9} true; + assume {:verifier.code 0} true; + assume !(($i99 == 1)); + goto $bb36; +$bb36: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 992, 3} true; + assume {:verifier.code 0} true; + $i95 := $i100; + goto $bb30; +$bb37: + assume ($i123 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 9} true; + assume {:verifier.code 0} true; + $i125 := $sext.i8.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 11} true; + assume {:verifier.code 0} true; + $i126 := $slt.i32($i125, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i126} true; + goto $bb40, $bb42; +$bb38: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 999, 7} true; + assume {:verifier.code 0} true; + assume !(($i123 == 1)); + goto $bb39; +$bb39: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1004, 7} true; + assume {:verifier.code 0} true; + $i133 := $sext.i8.i32($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1004, 9} true; + assume {:verifier.code 0} true; + $i134 := $srem.i32($i133, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1004, 7} true; + assume {:verifier.code 0} true; + $i135 := $trunc.i32.i8($i134); + call {:cexpr "a"} boogie_si_record_i8($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1005, 8} true; + assume {:verifier.code 0} true; + $i136 := $sext.i8.i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1005, 5} true; + assume {:verifier.code 0} true; + $i137 := $sext.i8.i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1005, 5} true; + assume {:verifier.code 0} true; + $i138 := $add.i32($i137, $i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1005, 5} true; + assume {:verifier.code 0} true; + $i139 := $trunc.i32.i8($i138); + call {:cexpr "a"} boogie_si_record_i8($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1006, 7} true; + assume {:verifier.code 0} true; + $i140 := $sext.i8.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1006, 9} true; + assume {:verifier.code 0} true; + $i141 := $srem.i32($i140, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1006, 7} true; + assume {:verifier.code 0} true; + $i142 := $trunc.i32.i8($i141); + call {:cexpr "b"} boogie_si_record_i8($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1007, 8} true; + assume {:verifier.code 0} true; + $i143 := $sext.i8.i32($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1007, 5} true; + assume {:verifier.code 0} true; + $i144 := $sext.i8.i32($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1007, 5} true; + assume {:verifier.code 0} true; + $i145 := $add.i32($i144, $i143); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1007, 5} true; + assume {:verifier.code 0} true; + $i146 := $trunc.i32.i8($i145); + call {:cexpr "b"} boogie_si_record_i8($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1009, 8} true; + assume {:verifier.code 0} true; + $i147 := $sext.i8.i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1009, 5} true; + assume {:verifier.code 0} true; + $i148 := $sext.i8.i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1009, 5} true; + assume {:verifier.code 0} true; + $i149 := $add.i32($i148, $i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1009, 5} true; + assume {:verifier.code 0} true; + $i150 := $trunc.i32.i8($i149); + call {:cexpr "c"} boogie_si_record_i8($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1010, 7} true; + assume {:verifier.code 0} true; + $i151 := $sext.i8.i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1010, 9} true; + assume {:verifier.code 0} true; + $i152 := $slt.i32($i151, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1010, 7} true; + assume {:verifier.code 0} true; + $i153 := $i150; + assume {:branchcond $i152} true; + goto $bb46, $bb47; +$bb40: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 15} true; + assume {:verifier.code 0} true; + assume ($i126 == 1); + goto $bb41; +$bb41: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1001, 9} true; + assume {:verifier.code 0} true; + $i130 := $sext.i8.i32($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1001, 9} true; + assume {:verifier.code 0} true; + $i131 := $add.i32($i130, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1001, 9} true; + assume {:verifier.code 0} true; + $i132 := $trunc.i32.i8($i131); + call {:cexpr "c"} boogie_si_record_i8($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1002, 5} true; + assume {:verifier.code 0} true; + $i129 := $i132; + goto $bb45; +$bb42: + assume !(($i126 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 18} true; + assume {:verifier.code 0} true; + $i127 := $sext.i8.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 20} true; + assume {:verifier.code 0} true; + $i128 := $sgt.i32($i127, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 9} true; + assume {:verifier.code 0} true; + $i129 := $i121; + assume {:branchcond $i128} true; + goto $bb43, $bb44; +$bb43: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 9} true; + assume {:verifier.code 0} true; + assume ($i128 == 1); + goto $bb41; +$bb44: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 9} true; + assume {:verifier.code 0} true; + assume !(($i128 == 1)); + goto $bb45; +$bb45: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1003, 3} true; + assume {:verifier.code 0} true; + $i124 := $i129; + goto $bb39; +$bb46: + assume ($i152 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 9} true; + assume {:verifier.code 0} true; + $i154 := $sext.i8.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 11} true; + assume {:verifier.code 0} true; + $i155 := $slt.i32($i154, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i155} true; + goto $bb49, $bb51; +$bb47: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1010, 7} true; + assume {:verifier.code 0} true; + assume !(($i152 == 1)); + goto $bb48; +$bb48: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1015, 7} true; + assume {:verifier.code 0} true; + $i162 := $sext.i8.i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1015, 9} true; + assume {:verifier.code 0} true; + $i163 := $srem.i32($i162, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1015, 7} true; + assume {:verifier.code 0} true; + $i164 := $trunc.i32.i8($i163); + call {:cexpr "a"} boogie_si_record_i8($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1016, 8} true; + assume {:verifier.code 0} true; + $i165 := $sext.i8.i32($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1016, 5} true; + assume {:verifier.code 0} true; + $i166 := $sext.i8.i32($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1016, 5} true; + assume {:verifier.code 0} true; + $i167 := $add.i32($i166, $i165); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1016, 5} true; + assume {:verifier.code 0} true; + $i168 := $trunc.i32.i8($i167); + call {:cexpr "a"} boogie_si_record_i8($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1017, 7} true; + assume {:verifier.code 0} true; + $i169 := $sext.i8.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1017, 9} true; + assume {:verifier.code 0} true; + $i170 := $srem.i32($i169, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1017, 7} true; + assume {:verifier.code 0} true; + $i171 := $trunc.i32.i8($i170); + call {:cexpr "b"} boogie_si_record_i8($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1018, 8} true; + assume {:verifier.code 0} true; + $i172 := $sext.i8.i32($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1018, 5} true; + assume {:verifier.code 0} true; + $i173 := $sext.i8.i32($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1018, 5} true; + assume {:verifier.code 0} true; + $i174 := $add.i32($i173, $i172); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1018, 5} true; + assume {:verifier.code 0} true; + $i175 := $trunc.i32.i8($i174); + call {:cexpr "b"} boogie_si_record_i8($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1020, 8} true; + assume {:verifier.code 0} true; + $i176 := $sext.i8.i32($i153); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1020, 5} true; + assume {:verifier.code 0} true; + $i177 := $sext.i8.i32($i153); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1020, 5} true; + assume {:verifier.code 0} true; + $i178 := $add.i32($i177, $i176); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1020, 5} true; + assume {:verifier.code 0} true; + $i179 := $trunc.i32.i8($i178); + call {:cexpr "c"} boogie_si_record_i8($i179); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1021, 7} true; + assume {:verifier.code 0} true; + $i180 := $sext.i8.i32($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1021, 9} true; + assume {:verifier.code 0} true; + $i181 := $slt.i32($i180, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1021, 7} true; + assume {:verifier.code 0} true; + $i182 := $i179; + assume {:branchcond $i181} true; + goto $bb55, $bb56; +$bb49: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 15} true; + assume {:verifier.code 0} true; + assume ($i155 == 1); + goto $bb50; +$bb50: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1012, 9} true; + assume {:verifier.code 0} true; + $i159 := $sext.i8.i32($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1012, 9} true; + assume {:verifier.code 0} true; + $i160 := $add.i32($i159, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1012, 9} true; + assume {:verifier.code 0} true; + $i161 := $trunc.i32.i8($i160); + call {:cexpr "c"} boogie_si_record_i8($i161); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1013, 5} true; + assume {:verifier.code 0} true; + $i158 := $i161; + goto $bb54; +$bb51: + assume !(($i155 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 18} true; + assume {:verifier.code 0} true; + $i156 := $sext.i8.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 20} true; + assume {:verifier.code 0} true; + $i157 := $sgt.i32($i156, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 9} true; + assume {:verifier.code 0} true; + $i158 := $i150; + assume {:branchcond $i157} true; + goto $bb52, $bb53; +$bb52: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 9} true; + assume {:verifier.code 0} true; + assume ($i157 == 1); + goto $bb50; +$bb53: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 9} true; + assume {:verifier.code 0} true; + assume !(($i157 == 1)); + goto $bb54; +$bb54: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1014, 3} true; + assume {:verifier.code 0} true; + $i153 := $i158; + goto $bb48; +$bb55: + assume ($i181 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 9} true; + assume {:verifier.code 0} true; + $i183 := $sext.i8.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 11} true; + assume {:verifier.code 0} true; + $i184 := $slt.i32($i183, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i184} true; + goto $bb58, $bb60; +$bb56: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1021, 7} true; + assume {:verifier.code 0} true; + assume !(($i181 == 1)); + goto $bb57; +$bb57: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1026, 7} true; + assume {:verifier.code 0} true; + $i191 := $sext.i8.i32($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1026, 9} true; + assume {:verifier.code 0} true; + $i192 := $srem.i32($i191, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1026, 7} true; + assume {:verifier.code 0} true; + $i193 := $trunc.i32.i8($i192); + call {:cexpr "a"} boogie_si_record_i8($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1027, 8} true; + assume {:verifier.code 0} true; + $i194 := $sext.i8.i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1027, 5} true; + assume {:verifier.code 0} true; + $i195 := $sext.i8.i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1027, 5} true; + assume {:verifier.code 0} true; + $i196 := $add.i32($i195, $i194); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1027, 5} true; + assume {:verifier.code 0} true; + $i197 := $trunc.i32.i8($i196); + call {:cexpr "a"} boogie_si_record_i8($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1028, 7} true; + assume {:verifier.code 0} true; + $i198 := $sext.i8.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1028, 9} true; + assume {:verifier.code 0} true; + $i199 := $srem.i32($i198, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1028, 7} true; + assume {:verifier.code 0} true; + $i200 := $trunc.i32.i8($i199); + call {:cexpr "b"} boogie_si_record_i8($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1029, 8} true; + assume {:verifier.code 0} true; + $i201 := $sext.i8.i32($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1029, 5} true; + assume {:verifier.code 0} true; + $i202 := $sext.i8.i32($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1029, 5} true; + assume {:verifier.code 0} true; + $i203 := $add.i32($i202, $i201); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1029, 5} true; + assume {:verifier.code 0} true; + $i204 := $trunc.i32.i8($i203); + call {:cexpr "b"} boogie_si_record_i8($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1031, 8} true; + assume {:verifier.code 0} true; + $i205 := $sext.i8.i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1031, 5} true; + assume {:verifier.code 0} true; + $i206 := $sext.i8.i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1031, 5} true; + assume {:verifier.code 0} true; + $i207 := $add.i32($i206, $i205); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1031, 5} true; + assume {:verifier.code 0} true; + $i208 := $trunc.i32.i8($i207); + call {:cexpr "c"} boogie_si_record_i8($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1032, 7} true; + assume {:verifier.code 0} true; + $i209 := $sext.i8.i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1032, 9} true; + assume {:verifier.code 0} true; + $i210 := $slt.i32($i209, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1032, 7} true; + assume {:verifier.code 0} true; + $i211 := $i208; + assume {:branchcond $i210} true; + goto $bb64, $bb65; +$bb58: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 15} true; + assume {:verifier.code 0} true; + assume ($i184 == 1); + goto $bb59; +$bb59: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1023, 9} true; + assume {:verifier.code 0} true; + $i188 := $sext.i8.i32($i179); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1023, 9} true; + assume {:verifier.code 0} true; + $i189 := $add.i32($i188, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1023, 9} true; + assume {:verifier.code 0} true; + $i190 := $trunc.i32.i8($i189); + call {:cexpr "c"} boogie_si_record_i8($i190); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1024, 5} true; + assume {:verifier.code 0} true; + $i187 := $i190; + goto $bb63; +$bb60: + assume !(($i184 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 18} true; + assume {:verifier.code 0} true; + $i185 := $sext.i8.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 20} true; + assume {:verifier.code 0} true; + $i186 := $sgt.i32($i185, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 9} true; + assume {:verifier.code 0} true; + $i187 := $i179; + assume {:branchcond $i186} true; + goto $bb61, $bb62; +$bb61: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 9} true; + assume {:verifier.code 0} true; + assume ($i186 == 1); + goto $bb59; +$bb62: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 9} true; + assume {:verifier.code 0} true; + assume !(($i186 == 1)); + goto $bb63; +$bb63: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1025, 3} true; + assume {:verifier.code 0} true; + $i182 := $i187; + goto $bb57; +$bb64: + assume ($i210 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 9} true; + assume {:verifier.code 0} true; + $i212 := $sext.i8.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 11} true; + assume {:verifier.code 0} true; + $i213 := $slt.i32($i212, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i213} true; + goto $bb67, $bb69; +$bb65: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1032, 7} true; + assume {:verifier.code 0} true; + assume !(($i210 == 1)); + goto $bb66; +$bb66: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1042, 3} true; + assume {:verifier.code 0} true; + $r := $i211; + $exn := false; + return; +$bb67: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 15} true; + assume {:verifier.code 0} true; + assume ($i213 == 1); + goto $bb68; +$bb68: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1034, 9} true; + assume {:verifier.code 0} true; + $i217 := $sext.i8.i32($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1034, 9} true; + assume {:verifier.code 0} true; + $i218 := $add.i32($i217, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1034, 9} true; + assume {:verifier.code 0} true; + $i219 := $trunc.i32.i8($i218); + call {:cexpr "c"} boogie_si_record_i8($i219); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1035, 5} true; + assume {:verifier.code 0} true; + $i216 := $i219; + goto $bb72; +$bb69: + assume !(($i213 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 18} true; + assume {:verifier.code 0} true; + $i214 := $sext.i8.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 20} true; + assume {:verifier.code 0} true; + $i215 := $sgt.i32($i214, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 9} true; + assume {:verifier.code 0} true; + $i216 := $i208; + assume {:branchcond $i215} true; + goto $bb70, $bb71; +$bb70: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 9} true; + assume {:verifier.code 0} true; + assume ($i215 == 1); + goto $bb68; +$bb71: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 9} true; + assume {:verifier.code 0} true; + assume !(($i215 == 1)); + goto $bb72; +$bb72: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1036, 3} true; + assume {:verifier.code 0} true; + $i211 := $i216; + goto $bb66; +} +const __SMACK_or32: ref; +axiom (__SMACK_or32 == $sub.ref(0, 19604)); +procedure __SMACK_or32($i0: i32, $i1: i32) + returns ($r: i32) +{ + var $i2: i32; + var $i3: i1; + var $i4: i32; + var $i6: i1; + var $i8: i32; + var $i7: i32; + var $i5: i32; + var $i9: i32; + var $i10: i64; + var $i11: i64; + var $i12: i32; + var $i13: i32; + var $i14: i64; + var $i15: i64; + var $i16: i32; + var $i17: i32; + var $i18: i1; + var $i19: i32; + var $i21: i1; + var $i23: i32; + var $i22: i32; + var $i20: i32; + var $i24: i32; + var $i25: i64; + var $i26: i64; + var $i27: i32; + var $i28: i32; + var $i29: i64; + var $i30: i64; + var $i31: i32; + var $i32: i32; + var $i33: i1; + var $i34: i32; + var $i36: i1; + var $i38: i32; + var $i37: i32; + var $i35: i32; + var $i39: i32; + var $i40: i64; + var $i41: i64; + var $i42: i32; + var $i43: i32; + var $i44: i64; + var $i45: i64; + var $i46: i32; + var $i47: i32; + var $i48: i1; + var $i49: i32; + var $i51: i1; + var $i53: i32; + var $i52: i32; + var $i50: i32; + var $i54: i32; + var $i55: i64; + var $i56: i64; + var $i57: i32; + var $i58: i32; + var $i59: i64; + var $i60: i64; + var $i61: i32; + var $i62: i32; + var $i63: i1; + var $i64: i32; + var $i66: i1; + var $i68: i32; + var $i67: i32; + var $i65: i32; + var $i69: i32; + var $i70: i64; + var $i71: i64; + var $i72: i32; + var $i73: i32; + var $i74: i64; + var $i75: i64; + var $i76: i32; + var $i77: i32; + var $i78: i1; + var $i79: i32; + var $i81: i1; + var $i83: i32; + var $i82: i32; + var $i80: i32; + var $i84: i32; + var $i85: i64; + var $i86: i64; + var $i87: i32; + var $i88: i32; + var $i89: i64; + var $i90: i64; + var $i91: i32; + var $i92: i32; + var $i93: i1; + var $i94: i32; + var $i96: i1; + var $i98: i32; + var $i97: i32; + var $i95: i32; + var $i99: i32; + var $i100: i64; + var $i101: i64; + var $i102: i32; + var $i103: i32; + var $i104: i64; + var $i105: i64; + var $i106: i32; + var $i107: i32; + var $i108: i1; + var $i109: i32; + var $i111: i1; + var $i113: i32; + var $i112: i32; + var $i110: i32; + var $i114: i32; + var $i115: i64; + var $i116: i64; + var $i117: i32; + var $i118: i32; + var $i119: i64; + var $i120: i64; + var $i121: i32; + var $i122: i32; + var $i123: i1; + var $i124: i32; + var $i126: i1; + var $i128: i32; + var $i127: i32; + var $i125: i32; + var $i129: i32; + var $i130: i64; + var $i131: i64; + var $i132: i32; + var $i133: i32; + var $i134: i64; + var $i135: i64; + var $i136: i32; + var $i137: i32; + var $i138: i1; + var $i139: i32; + var $i141: i1; + var $i143: i32; + var $i142: i32; + var $i140: i32; + var $i144: i32; + var $i145: i64; + var $i146: i64; + var $i147: i32; + var $i148: i32; + var $i149: i64; + var $i150: i64; + var $i151: i32; + var $i152: i32; + var $i153: i1; + var $i154: i32; + var $i156: i1; + var $i158: i32; + var $i157: i32; + var $i155: i32; + var $i159: i32; + var $i160: i64; + var $i161: i64; + var $i162: i32; + var $i163: i32; + var $i164: i64; + var $i165: i64; + var $i166: i32; + var $i167: i32; + var $i168: i1; + var $i169: i32; + var $i171: i1; + var $i173: i32; + var $i172: i32; + var $i170: i32; + var $i174: i32; + var $i175: i64; + var $i176: i64; + var $i177: i32; + var $i178: i32; + var $i179: i64; + var $i180: i64; + var $i181: i32; + var $i182: i32; + var $i183: i1; + var $i184: i32; + var $i186: i1; + var $i188: i32; + var $i187: i32; + var $i185: i32; + var $i189: i32; + var $i190: i64; + var $i191: i64; + var $i192: i32; + var $i193: i32; + var $i194: i64; + var $i195: i64; + var $i196: i32; + var $i197: i32; + var $i198: i1; + var $i199: i32; + var $i201: i1; + var $i203: i32; + var $i202: i32; + var $i200: i32; + var $i204: i32; + var $i205: i64; + var $i206: i64; + var $i207: i32; + var $i208: i32; + var $i209: i64; + var $i210: i64; + var $i211: i32; + var $i212: i32; + var $i213: i1; + var $i214: i32; + var $i216: i1; + var $i218: i32; + var $i217: i32; + var $i215: i32; + var $i219: i32; + var $i220: i64; + var $i221: i64; + var $i222: i32; + var $i223: i32; + var $i224: i64; + var $i225: i64; + var $i226: i32; + var $i227: i32; + var $i228: i1; + var $i229: i32; + var $i231: i1; + var $i233: i32; + var $i232: i32; + var $i230: i32; + var $i234: i32; + var $i235: i64; + var $i236: i64; + var $i237: i32; + var $i238: i32; + var $i239: i64; + var $i240: i64; + var $i241: i32; + var $i242: i32; + var $i243: i1; + var $i244: i32; + var $i246: i1; + var $i248: i32; + var $i247: i32; + var $i245: i32; + var $i249: i32; + var $i250: i64; + var $i251: i64; + var $i252: i32; + var $i253: i32; + var $i254: i64; + var $i255: i64; + var $i256: i32; + var $i257: i32; + var $i258: i1; + var $i259: i32; + var $i261: i1; + var $i263: i32; + var $i262: i32; + var $i260: i32; + var $i264: i32; + var $i265: i64; + var $i266: i64; + var $i267: i32; + var $i268: i32; + var $i269: i64; + var $i270: i64; + var $i271: i32; + var $i272: i32; + var $i273: i1; + var $i274: i32; + var $i276: i1; + var $i278: i32; + var $i277: i32; + var $i275: i32; + var $i279: i32; + var $i280: i64; + var $i281: i64; + var $i282: i32; + var $i283: i32; + var $i284: i64; + var $i285: i64; + var $i286: i32; + var $i287: i32; + var $i288: i1; + var $i289: i32; + var $i291: i1; + var $i293: i32; + var $i292: i32; + var $i290: i32; + var $i294: i32; + var $i295: i64; + var $i296: i64; + var $i297: i32; + var $i298: i32; + var $i299: i64; + var $i300: i64; + var $i301: i32; + var $i302: i32; + var $i303: i1; + var $i304: i32; + var $i306: i1; + var $i308: i32; + var $i307: i32; + var $i305: i32; + var $i309: i32; + var $i310: i64; + var $i311: i64; + var $i312: i32; + var $i313: i32; + var $i314: i64; + var $i315: i64; + var $i316: i32; + var $i317: i32; + var $i318: i1; + var $i319: i32; + var $i321: i1; + var $i323: i32; + var $i322: i32; + var $i320: i32; + var $i324: i32; + var $i325: i64; + var $i326: i64; + var $i327: i32; + var $i328: i32; + var $i329: i64; + var $i330: i64; + var $i331: i32; + var $i332: i32; + var $i333: i1; + var $i334: i32; + var $i336: i1; + var $i338: i32; + var $i337: i32; + var $i335: i32; + var $i339: i32; + var $i340: i64; + var $i341: i64; + var $i342: i32; + var $i343: i32; + var $i344: i64; + var $i345: i64; + var $i346: i32; + var $i347: i32; + var $i348: i1; + var $i349: i32; + var $i351: i1; + var $i353: i32; + var $i352: i32; + var $i350: i32; + var $i354: i32; + var $i355: i64; + var $i356: i64; + var $i357: i32; + var $i358: i32; + var $i359: i64; + var $i360: i64; + var $i361: i32; + var $i362: i32; + var $i363: i1; + var $i364: i32; + var $i366: i1; + var $i368: i32; + var $i367: i32; + var $i365: i32; + var $i369: i32; + var $i370: i64; + var $i371: i64; + var $i372: i32; + var $i373: i32; + var $i374: i64; + var $i375: i64; + var $i376: i32; + var $i377: i32; + var $i378: i1; + var $i379: i32; + var $i381: i1; + var $i383: i32; + var $i382: i32; + var $i380: i32; + var $i384: i32; + var $i385: i64; + var $i386: i64; + var $i387: i32; + var $i388: i32; + var $i389: i64; + var $i390: i64; + var $i391: i32; + var $i392: i32; + var $i393: i1; + var $i394: i32; + var $i396: i1; + var $i398: i32; + var $i397: i32; + var $i395: i32; + var $i399: i32; + var $i400: i64; + var $i401: i64; + var $i402: i32; + var $i403: i32; + var $i404: i64; + var $i405: i64; + var $i406: i32; + var $i407: i32; + var $i408: i1; + var $i409: i32; + var $i411: i1; + var $i413: i32; + var $i412: i32; + var $i410: i32; + var $i414: i32; + var $i415: i64; + var $i416: i64; + var $i417: i32; + var $i418: i32; + var $i419: i64; + var $i420: i64; + var $i421: i32; + var $i422: i32; + var $i423: i1; + var $i424: i32; + var $i426: i1; + var $i428: i32; + var $i427: i32; + var $i425: i32; + var $i429: i32; + var $i430: i64; + var $i431: i64; + var $i432: i32; + var $i433: i32; + var $i434: i64; + var $i435: i64; + var $i436: i32; + var $i437: i32; + var $i438: i1; + var $i439: i32; + var $i441: i1; + var $i443: i32; + var $i442: i32; + var $i440: i32; + var $i444: i32; + var $i445: i64; + var $i446: i64; + var $i447: i32; + var $i448: i32; + var $i449: i64; + var $i450: i64; + var $i451: i32; + var $i452: i32; + var $i453: i1; + var $i454: i32; + var $i456: i1; + var $i458: i32; + var $i457: i32; + var $i455: i32; + var $i459: i32; + var $i460: i64; + var $i461: i64; + var $i462: i32; + var $i463: i32; + var $i464: i64; + var $i465: i64; + var $i466: i32; + var $i467: i32; + var $i468: i1; + var $i469: i32; + var $i471: i1; + var $i473: i32; + var $i472: i32; + var $i470: i32; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1048, 5} true; + assume {:verifier.code 0} true; + call {:cexpr "__SMACK_or32:arg:a"} boogie_si_record_i32($i0); + call {:cexpr "__SMACK_or32:arg:b"} boogie_si_record_i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1048, 5} true; + assume {:verifier.code 0} true; + $i2 := $add.i32(0, 0); + call {:cexpr "c"} boogie_si_record_i32($i2); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1049, 9} true; + assume {:verifier.code 0} true; + $i3 := $slt.i32($i0, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1049, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i3} true; + goto $bb1, $bb2; +$bb1: + assume ($i3 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1050, 7} true; + assume {:verifier.code 0} true; + $i4 := $add.i32($i2, 1); + call {:cexpr "c"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1051, 3} true; + assume {:verifier.code 0} true; + $i5 := $i4; + goto $bb3; +$bb2: + assume !(($i3 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1051, 16} true; + assume {:verifier.code 0} true; + $i6 := $slt.i32($i1, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1051, 14} true; + assume {:verifier.code 0} true; + $i7 := $i2; + assume {:branchcond $i6} true; + goto $bb4, $bb5; +$bb3: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1054, 5} true; + assume {:verifier.code 0} true; + $i9 := $add.i32($i0, $i0); + call {:cexpr "a"} boogie_si_record_i32($i9); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1055, 7} true; + assume {:verifier.code 0} true; + $i10 := $sext.i32.i64($i9); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1055, 9} true; + assume {:verifier.code 0} true; + $i11 := $srem.i64($i10, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1055, 7} true; + assume {:verifier.code 0} true; + $i12 := $trunc.i64.i32($i11); + call {:cexpr "a"} boogie_si_record_i32($i12); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1056, 5} true; + assume {:verifier.code 0} true; + $i13 := $add.i32($i1, $i1); + call {:cexpr "b"} boogie_si_record_i32($i13); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1057, 7} true; + assume {:verifier.code 0} true; + $i14 := $sext.i32.i64($i13); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1057, 9} true; + assume {:verifier.code 0} true; + $i15 := $srem.i64($i14, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1057, 7} true; + assume {:verifier.code 0} true; + $i16 := $trunc.i64.i32($i15); + call {:cexpr "b"} boogie_si_record_i32($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1059, 5} true; + assume {:verifier.code 0} true; + $i17 := $add.i32($i5, $i5); + call {:cexpr "c"} boogie_si_record_i32($i17); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1060, 9} true; + assume {:verifier.code 0} true; + $i18 := $slt.i32($i12, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1060, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i18} true; + goto $bb7, $bb8; +$bb4: + assume ($i6 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1052, 7} true; + assume {:verifier.code 0} true; + $i8 := $add.i32($i2, 1); + call {:cexpr "c"} boogie_si_record_i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1053, 3} true; + assume {:verifier.code 0} true; + $i7 := $i8; + goto $bb6; +$bb5: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1051, 14} true; + assume {:verifier.code 0} true; + assume !(($i6 == 1)); + goto $bb6; +$bb6: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i5 := $i7; + goto $bb3; +$bb7: + assume ($i18 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1061, 7} true; + assume {:verifier.code 0} true; + $i19 := $add.i32($i17, 1); + call {:cexpr "c"} boogie_si_record_i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1062, 3} true; + assume {:verifier.code 0} true; + $i20 := $i19; + goto $bb9; +$bb8: + assume !(($i18 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1062, 16} true; + assume {:verifier.code 0} true; + $i21 := $slt.i32($i16, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1062, 14} true; + assume {:verifier.code 0} true; + $i22 := $i17; + assume {:branchcond $i21} true; + goto $bb10, $bb11; +$bb9: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1065, 5} true; + assume {:verifier.code 0} true; + $i24 := $add.i32($i12, $i12); + call {:cexpr "a"} boogie_si_record_i32($i24); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1066, 7} true; + assume {:verifier.code 0} true; + $i25 := $sext.i32.i64($i24); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1066, 9} true; + assume {:verifier.code 0} true; + $i26 := $srem.i64($i25, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1066, 7} true; + assume {:verifier.code 0} true; + $i27 := $trunc.i64.i32($i26); + call {:cexpr "a"} boogie_si_record_i32($i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1067, 5} true; + assume {:verifier.code 0} true; + $i28 := $add.i32($i16, $i16); + call {:cexpr "b"} boogie_si_record_i32($i28); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1068, 7} true; + assume {:verifier.code 0} true; + $i29 := $sext.i32.i64($i28); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1068, 9} true; + assume {:verifier.code 0} true; + $i30 := $srem.i64($i29, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1068, 7} true; + assume {:verifier.code 0} true; + $i31 := $trunc.i64.i32($i30); + call {:cexpr "b"} boogie_si_record_i32($i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1070, 5} true; + assume {:verifier.code 0} true; + $i32 := $add.i32($i20, $i20); + call {:cexpr "c"} boogie_si_record_i32($i32); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1071, 9} true; + assume {:verifier.code 0} true; + $i33 := $slt.i32($i27, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1071, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i33} true; + goto $bb13, $bb14; +$bb10: + assume ($i21 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1063, 7} true; + assume {:verifier.code 0} true; + $i23 := $add.i32($i17, 1); + call {:cexpr "c"} boogie_si_record_i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1064, 3} true; + assume {:verifier.code 0} true; + $i22 := $i23; + goto $bb12; +$bb11: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1062, 14} true; + assume {:verifier.code 0} true; + assume !(($i21 == 1)); + goto $bb12; +$bb12: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i20 := $i22; + goto $bb9; +$bb13: + assume ($i33 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1072, 7} true; + assume {:verifier.code 0} true; + $i34 := $add.i32($i32, 1); + call {:cexpr "c"} boogie_si_record_i32($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1073, 3} true; + assume {:verifier.code 0} true; + $i35 := $i34; + goto $bb15; +$bb14: + assume !(($i33 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1073, 16} true; + assume {:verifier.code 0} true; + $i36 := $slt.i32($i31, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1073, 14} true; + assume {:verifier.code 0} true; + $i37 := $i32; + assume {:branchcond $i36} true; + goto $bb16, $bb17; +$bb15: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1076, 5} true; + assume {:verifier.code 0} true; + $i39 := $add.i32($i27, $i27); + call {:cexpr "a"} boogie_si_record_i32($i39); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1077, 7} true; + assume {:verifier.code 0} true; + $i40 := $sext.i32.i64($i39); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1077, 9} true; + assume {:verifier.code 0} true; + $i41 := $srem.i64($i40, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1077, 7} true; + assume {:verifier.code 0} true; + $i42 := $trunc.i64.i32($i41); + call {:cexpr "a"} boogie_si_record_i32($i42); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1078, 5} true; + assume {:verifier.code 0} true; + $i43 := $add.i32($i31, $i31); + call {:cexpr "b"} boogie_si_record_i32($i43); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1079, 7} true; + assume {:verifier.code 0} true; + $i44 := $sext.i32.i64($i43); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1079, 9} true; + assume {:verifier.code 0} true; + $i45 := $srem.i64($i44, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1079, 7} true; + assume {:verifier.code 0} true; + $i46 := $trunc.i64.i32($i45); + call {:cexpr "b"} boogie_si_record_i32($i46); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1081, 5} true; + assume {:verifier.code 0} true; + $i47 := $add.i32($i35, $i35); + call {:cexpr "c"} boogie_si_record_i32($i47); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1082, 9} true; + assume {:verifier.code 0} true; + $i48 := $slt.i32($i42, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1082, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i48} true; + goto $bb19, $bb20; +$bb16: + assume ($i36 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1074, 7} true; + assume {:verifier.code 0} true; + $i38 := $add.i32($i32, 1); + call {:cexpr "c"} boogie_si_record_i32($i38); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1075, 3} true; + assume {:verifier.code 0} true; + $i37 := $i38; + goto $bb18; +$bb17: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1073, 14} true; + assume {:verifier.code 0} true; + assume !(($i36 == 1)); + goto $bb18; +$bb18: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i35 := $i37; + goto $bb15; +$bb19: + assume ($i48 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1083, 7} true; + assume {:verifier.code 0} true; + $i49 := $add.i32($i47, 1); + call {:cexpr "c"} boogie_si_record_i32($i49); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1084, 3} true; + assume {:verifier.code 0} true; + $i50 := $i49; + goto $bb21; +$bb20: + assume !(($i48 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1084, 16} true; + assume {:verifier.code 0} true; + $i51 := $slt.i32($i46, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1084, 14} true; + assume {:verifier.code 0} true; + $i52 := $i47; + assume {:branchcond $i51} true; + goto $bb22, $bb23; +$bb21: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1087, 5} true; + assume {:verifier.code 0} true; + $i54 := $add.i32($i42, $i42); + call {:cexpr "a"} boogie_si_record_i32($i54); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1088, 7} true; + assume {:verifier.code 0} true; + $i55 := $sext.i32.i64($i54); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1088, 9} true; + assume {:verifier.code 0} true; + $i56 := $srem.i64($i55, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1088, 7} true; + assume {:verifier.code 0} true; + $i57 := $trunc.i64.i32($i56); + call {:cexpr "a"} boogie_si_record_i32($i57); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1089, 5} true; + assume {:verifier.code 0} true; + $i58 := $add.i32($i46, $i46); + call {:cexpr "b"} boogie_si_record_i32($i58); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1090, 7} true; + assume {:verifier.code 0} true; + $i59 := $sext.i32.i64($i58); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1090, 9} true; + assume {:verifier.code 0} true; + $i60 := $srem.i64($i59, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1090, 7} true; + assume {:verifier.code 0} true; + $i61 := $trunc.i64.i32($i60); + call {:cexpr "b"} boogie_si_record_i32($i61); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1092, 5} true; + assume {:verifier.code 0} true; + $i62 := $add.i32($i50, $i50); + call {:cexpr "c"} boogie_si_record_i32($i62); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1093, 9} true; + assume {:verifier.code 0} true; + $i63 := $slt.i32($i57, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1093, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i63} true; + goto $bb25, $bb26; +$bb22: + assume ($i51 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1085, 7} true; + assume {:verifier.code 0} true; + $i53 := $add.i32($i47, 1); + call {:cexpr "c"} boogie_si_record_i32($i53); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1086, 3} true; + assume {:verifier.code 0} true; + $i52 := $i53; + goto $bb24; +$bb23: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1084, 14} true; + assume {:verifier.code 0} true; + assume !(($i51 == 1)); + goto $bb24; +$bb24: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i50 := $i52; + goto $bb21; +$bb25: + assume ($i63 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1094, 7} true; + assume {:verifier.code 0} true; + $i64 := $add.i32($i62, 1); + call {:cexpr "c"} boogie_si_record_i32($i64); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1095, 3} true; + assume {:verifier.code 0} true; + $i65 := $i64; + goto $bb27; +$bb26: + assume !(($i63 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1095, 16} true; + assume {:verifier.code 0} true; + $i66 := $slt.i32($i61, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1095, 14} true; + assume {:verifier.code 0} true; + $i67 := $i62; + assume {:branchcond $i66} true; + goto $bb28, $bb29; +$bb27: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1098, 5} true; + assume {:verifier.code 0} true; + $i69 := $add.i32($i57, $i57); + call {:cexpr "a"} boogie_si_record_i32($i69); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1099, 7} true; + assume {:verifier.code 0} true; + $i70 := $sext.i32.i64($i69); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1099, 9} true; + assume {:verifier.code 0} true; + $i71 := $srem.i64($i70, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1099, 7} true; + assume {:verifier.code 0} true; + $i72 := $trunc.i64.i32($i71); + call {:cexpr "a"} boogie_si_record_i32($i72); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1100, 5} true; + assume {:verifier.code 0} true; + $i73 := $add.i32($i61, $i61); + call {:cexpr "b"} boogie_si_record_i32($i73); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1101, 7} true; + assume {:verifier.code 0} true; + $i74 := $sext.i32.i64($i73); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1101, 9} true; + assume {:verifier.code 0} true; + $i75 := $srem.i64($i74, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1101, 7} true; + assume {:verifier.code 0} true; + $i76 := $trunc.i64.i32($i75); + call {:cexpr "b"} boogie_si_record_i32($i76); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1103, 5} true; + assume {:verifier.code 0} true; + $i77 := $add.i32($i65, $i65); + call {:cexpr "c"} boogie_si_record_i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1104, 9} true; + assume {:verifier.code 0} true; + $i78 := $slt.i32($i72, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1104, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i78} true; + goto $bb31, $bb32; +$bb28: + assume ($i66 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1096, 7} true; + assume {:verifier.code 0} true; + $i68 := $add.i32($i62, 1); + call {:cexpr "c"} boogie_si_record_i32($i68); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1097, 3} true; + assume {:verifier.code 0} true; + $i67 := $i68; + goto $bb30; +$bb29: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1095, 14} true; + assume {:verifier.code 0} true; + assume !(($i66 == 1)); + goto $bb30; +$bb30: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i65 := $i67; + goto $bb27; +$bb31: + assume ($i78 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1105, 7} true; + assume {:verifier.code 0} true; + $i79 := $add.i32($i77, 1); + call {:cexpr "c"} boogie_si_record_i32($i79); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1106, 3} true; + assume {:verifier.code 0} true; + $i80 := $i79; + goto $bb33; +$bb32: + assume !(($i78 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1106, 16} true; + assume {:verifier.code 0} true; + $i81 := $slt.i32($i76, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1106, 14} true; + assume {:verifier.code 0} true; + $i82 := $i77; + assume {:branchcond $i81} true; + goto $bb34, $bb35; +$bb33: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1109, 5} true; + assume {:verifier.code 0} true; + $i84 := $add.i32($i72, $i72); + call {:cexpr "a"} boogie_si_record_i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1110, 7} true; + assume {:verifier.code 0} true; + $i85 := $sext.i32.i64($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1110, 9} true; + assume {:verifier.code 0} true; + $i86 := $srem.i64($i85, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1110, 7} true; + assume {:verifier.code 0} true; + $i87 := $trunc.i64.i32($i86); + call {:cexpr "a"} boogie_si_record_i32($i87); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1111, 5} true; + assume {:verifier.code 0} true; + $i88 := $add.i32($i76, $i76); + call {:cexpr "b"} boogie_si_record_i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1112, 7} true; + assume {:verifier.code 0} true; + $i89 := $sext.i32.i64($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1112, 9} true; + assume {:verifier.code 0} true; + $i90 := $srem.i64($i89, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1112, 7} true; + assume {:verifier.code 0} true; + $i91 := $trunc.i64.i32($i90); + call {:cexpr "b"} boogie_si_record_i32($i91); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1114, 5} true; + assume {:verifier.code 0} true; + $i92 := $add.i32($i80, $i80); + call {:cexpr "c"} boogie_si_record_i32($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1115, 9} true; + assume {:verifier.code 0} true; + $i93 := $slt.i32($i87, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1115, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i93} true; + goto $bb37, $bb38; +$bb34: + assume ($i81 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1107, 7} true; + assume {:verifier.code 0} true; + $i83 := $add.i32($i77, 1); + call {:cexpr "c"} boogie_si_record_i32($i83); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1108, 3} true; + assume {:verifier.code 0} true; + $i82 := $i83; + goto $bb36; +$bb35: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1106, 14} true; + assume {:verifier.code 0} true; + assume !(($i81 == 1)); + goto $bb36; +$bb36: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i80 := $i82; + goto $bb33; +$bb37: + assume ($i93 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1116, 7} true; + assume {:verifier.code 0} true; + $i94 := $add.i32($i92, 1); + call {:cexpr "c"} boogie_si_record_i32($i94); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1117, 3} true; + assume {:verifier.code 0} true; + $i95 := $i94; + goto $bb39; +$bb38: + assume !(($i93 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1117, 16} true; + assume {:verifier.code 0} true; + $i96 := $slt.i32($i91, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1117, 14} true; + assume {:verifier.code 0} true; + $i97 := $i92; + assume {:branchcond $i96} true; + goto $bb40, $bb41; +$bb39: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1120, 5} true; + assume {:verifier.code 0} true; + $i99 := $add.i32($i87, $i87); + call {:cexpr "a"} boogie_si_record_i32($i99); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1121, 7} true; + assume {:verifier.code 0} true; + $i100 := $sext.i32.i64($i99); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1121, 9} true; + assume {:verifier.code 0} true; + $i101 := $srem.i64($i100, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1121, 7} true; + assume {:verifier.code 0} true; + $i102 := $trunc.i64.i32($i101); + call {:cexpr "a"} boogie_si_record_i32($i102); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1122, 5} true; + assume {:verifier.code 0} true; + $i103 := $add.i32($i91, $i91); + call {:cexpr "b"} boogie_si_record_i32($i103); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1123, 7} true; + assume {:verifier.code 0} true; + $i104 := $sext.i32.i64($i103); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1123, 9} true; + assume {:verifier.code 0} true; + $i105 := $srem.i64($i104, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1123, 7} true; + assume {:verifier.code 0} true; + $i106 := $trunc.i64.i32($i105); + call {:cexpr "b"} boogie_si_record_i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1125, 5} true; + assume {:verifier.code 0} true; + $i107 := $add.i32($i95, $i95); + call {:cexpr "c"} boogie_si_record_i32($i107); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1126, 9} true; + assume {:verifier.code 0} true; + $i108 := $slt.i32($i102, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1126, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i108} true; + goto $bb43, $bb44; +$bb40: + assume ($i96 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1118, 7} true; + assume {:verifier.code 0} true; + $i98 := $add.i32($i92, 1); + call {:cexpr "c"} boogie_si_record_i32($i98); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1119, 3} true; + assume {:verifier.code 0} true; + $i97 := $i98; + goto $bb42; +$bb41: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1117, 14} true; + assume {:verifier.code 0} true; + assume !(($i96 == 1)); + goto $bb42; +$bb42: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i95 := $i97; + goto $bb39; +$bb43: + assume ($i108 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1127, 7} true; + assume {:verifier.code 0} true; + $i109 := $add.i32($i107, 1); + call {:cexpr "c"} boogie_si_record_i32($i109); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1128, 3} true; + assume {:verifier.code 0} true; + $i110 := $i109; + goto $bb45; +$bb44: + assume !(($i108 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1128, 16} true; + assume {:verifier.code 0} true; + $i111 := $slt.i32($i106, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1128, 14} true; + assume {:verifier.code 0} true; + $i112 := $i107; + assume {:branchcond $i111} true; + goto $bb46, $bb47; +$bb45: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1131, 5} true; + assume {:verifier.code 0} true; + $i114 := $add.i32($i102, $i102); + call {:cexpr "a"} boogie_si_record_i32($i114); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1132, 7} true; + assume {:verifier.code 0} true; + $i115 := $sext.i32.i64($i114); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1132, 9} true; + assume {:verifier.code 0} true; + $i116 := $srem.i64($i115, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1132, 7} true; + assume {:verifier.code 0} true; + $i117 := $trunc.i64.i32($i116); + call {:cexpr "a"} boogie_si_record_i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1133, 5} true; + assume {:verifier.code 0} true; + $i118 := $add.i32($i106, $i106); + call {:cexpr "b"} boogie_si_record_i32($i118); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1134, 7} true; + assume {:verifier.code 0} true; + $i119 := $sext.i32.i64($i118); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1134, 9} true; + assume {:verifier.code 0} true; + $i120 := $srem.i64($i119, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1134, 7} true; + assume {:verifier.code 0} true; + $i121 := $trunc.i64.i32($i120); + call {:cexpr "b"} boogie_si_record_i32($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1136, 5} true; + assume {:verifier.code 0} true; + $i122 := $add.i32($i110, $i110); + call {:cexpr "c"} boogie_si_record_i32($i122); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1137, 9} true; + assume {:verifier.code 0} true; + $i123 := $slt.i32($i117, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1137, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i123} true; + goto $bb49, $bb50; +$bb46: + assume ($i111 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1129, 7} true; + assume {:verifier.code 0} true; + $i113 := $add.i32($i107, 1); + call {:cexpr "c"} boogie_si_record_i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1130, 3} true; + assume {:verifier.code 0} true; + $i112 := $i113; + goto $bb48; +$bb47: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1128, 14} true; + assume {:verifier.code 0} true; + assume !(($i111 == 1)); + goto $bb48; +$bb48: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i110 := $i112; + goto $bb45; +$bb49: + assume ($i123 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1138, 7} true; + assume {:verifier.code 0} true; + $i124 := $add.i32($i122, 1); + call {:cexpr "c"} boogie_si_record_i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1139, 3} true; + assume {:verifier.code 0} true; + $i125 := $i124; + goto $bb51; +$bb50: + assume !(($i123 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1139, 16} true; + assume {:verifier.code 0} true; + $i126 := $slt.i32($i121, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1139, 14} true; + assume {:verifier.code 0} true; + $i127 := $i122; + assume {:branchcond $i126} true; + goto $bb52, $bb53; +$bb51: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1142, 5} true; + assume {:verifier.code 0} true; + $i129 := $add.i32($i117, $i117); + call {:cexpr "a"} boogie_si_record_i32($i129); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1143, 7} true; + assume {:verifier.code 0} true; + $i130 := $sext.i32.i64($i129); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1143, 9} true; + assume {:verifier.code 0} true; + $i131 := $srem.i64($i130, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1143, 7} true; + assume {:verifier.code 0} true; + $i132 := $trunc.i64.i32($i131); + call {:cexpr "a"} boogie_si_record_i32($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1144, 5} true; + assume {:verifier.code 0} true; + $i133 := $add.i32($i121, $i121); + call {:cexpr "b"} boogie_si_record_i32($i133); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1145, 7} true; + assume {:verifier.code 0} true; + $i134 := $sext.i32.i64($i133); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1145, 9} true; + assume {:verifier.code 0} true; + $i135 := $srem.i64($i134, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1145, 7} true; + assume {:verifier.code 0} true; + $i136 := $trunc.i64.i32($i135); + call {:cexpr "b"} boogie_si_record_i32($i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1147, 5} true; + assume {:verifier.code 0} true; + $i137 := $add.i32($i125, $i125); + call {:cexpr "c"} boogie_si_record_i32($i137); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1148, 9} true; + assume {:verifier.code 0} true; + $i138 := $slt.i32($i132, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1148, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i138} true; + goto $bb55, $bb56; +$bb52: + assume ($i126 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1140, 7} true; + assume {:verifier.code 0} true; + $i128 := $add.i32($i122, 1); + call {:cexpr "c"} boogie_si_record_i32($i128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1141, 3} true; + assume {:verifier.code 0} true; + $i127 := $i128; + goto $bb54; +$bb53: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1139, 14} true; + assume {:verifier.code 0} true; + assume !(($i126 == 1)); + goto $bb54; +$bb54: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i125 := $i127; + goto $bb51; +$bb55: + assume ($i138 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1149, 7} true; + assume {:verifier.code 0} true; + $i139 := $add.i32($i137, 1); + call {:cexpr "c"} boogie_si_record_i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1150, 3} true; + assume {:verifier.code 0} true; + $i140 := $i139; + goto $bb57; +$bb56: + assume !(($i138 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1150, 16} true; + assume {:verifier.code 0} true; + $i141 := $slt.i32($i136, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1150, 14} true; + assume {:verifier.code 0} true; + $i142 := $i137; + assume {:branchcond $i141} true; + goto $bb58, $bb59; +$bb57: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1153, 5} true; + assume {:verifier.code 0} true; + $i144 := $add.i32($i132, $i132); + call {:cexpr "a"} boogie_si_record_i32($i144); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1154, 7} true; + assume {:verifier.code 0} true; + $i145 := $sext.i32.i64($i144); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1154, 9} true; + assume {:verifier.code 0} true; + $i146 := $srem.i64($i145, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1154, 7} true; + assume {:verifier.code 0} true; + $i147 := $trunc.i64.i32($i146); + call {:cexpr "a"} boogie_si_record_i32($i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1155, 5} true; + assume {:verifier.code 0} true; + $i148 := $add.i32($i136, $i136); + call {:cexpr "b"} boogie_si_record_i32($i148); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1156, 7} true; + assume {:verifier.code 0} true; + $i149 := $sext.i32.i64($i148); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1156, 9} true; + assume {:verifier.code 0} true; + $i150 := $srem.i64($i149, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1156, 7} true; + assume {:verifier.code 0} true; + $i151 := $trunc.i64.i32($i150); + call {:cexpr "b"} boogie_si_record_i32($i151); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1158, 5} true; + assume {:verifier.code 0} true; + $i152 := $add.i32($i140, $i140); + call {:cexpr "c"} boogie_si_record_i32($i152); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1159, 9} true; + assume {:verifier.code 0} true; + $i153 := $slt.i32($i147, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1159, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i153} true; + goto $bb61, $bb62; +$bb58: + assume ($i141 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1151, 7} true; + assume {:verifier.code 0} true; + $i143 := $add.i32($i137, 1); + call {:cexpr "c"} boogie_si_record_i32($i143); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1152, 3} true; + assume {:verifier.code 0} true; + $i142 := $i143; + goto $bb60; +$bb59: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1150, 14} true; + assume {:verifier.code 0} true; + assume !(($i141 == 1)); + goto $bb60; +$bb60: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i140 := $i142; + goto $bb57; +$bb61: + assume ($i153 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1160, 7} true; + assume {:verifier.code 0} true; + $i154 := $add.i32($i152, 1); + call {:cexpr "c"} boogie_si_record_i32($i154); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1161, 3} true; + assume {:verifier.code 0} true; + $i155 := $i154; + goto $bb63; +$bb62: + assume !(($i153 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1161, 16} true; + assume {:verifier.code 0} true; + $i156 := $slt.i32($i151, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1161, 14} true; + assume {:verifier.code 0} true; + $i157 := $i152; + assume {:branchcond $i156} true; + goto $bb64, $bb65; +$bb63: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1164, 5} true; + assume {:verifier.code 0} true; + $i159 := $add.i32($i147, $i147); + call {:cexpr "a"} boogie_si_record_i32($i159); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1165, 7} true; + assume {:verifier.code 0} true; + $i160 := $sext.i32.i64($i159); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1165, 9} true; + assume {:verifier.code 0} true; + $i161 := $srem.i64($i160, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1165, 7} true; + assume {:verifier.code 0} true; + $i162 := $trunc.i64.i32($i161); + call {:cexpr "a"} boogie_si_record_i32($i162); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1166, 5} true; + assume {:verifier.code 0} true; + $i163 := $add.i32($i151, $i151); + call {:cexpr "b"} boogie_si_record_i32($i163); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1167, 7} true; + assume {:verifier.code 0} true; + $i164 := $sext.i32.i64($i163); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1167, 9} true; + assume {:verifier.code 0} true; + $i165 := $srem.i64($i164, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1167, 7} true; + assume {:verifier.code 0} true; + $i166 := $trunc.i64.i32($i165); + call {:cexpr "b"} boogie_si_record_i32($i166); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1169, 5} true; + assume {:verifier.code 0} true; + $i167 := $add.i32($i155, $i155); + call {:cexpr "c"} boogie_si_record_i32($i167); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1170, 9} true; + assume {:verifier.code 0} true; + $i168 := $slt.i32($i162, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1170, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i168} true; + goto $bb67, $bb68; +$bb64: + assume ($i156 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1162, 7} true; + assume {:verifier.code 0} true; + $i158 := $add.i32($i152, 1); + call {:cexpr "c"} boogie_si_record_i32($i158); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1163, 3} true; + assume {:verifier.code 0} true; + $i157 := $i158; + goto $bb66; +$bb65: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1161, 14} true; + assume {:verifier.code 0} true; + assume !(($i156 == 1)); + goto $bb66; +$bb66: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i155 := $i157; + goto $bb63; +$bb67: + assume ($i168 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1171, 7} true; + assume {:verifier.code 0} true; + $i169 := $add.i32($i167, 1); + call {:cexpr "c"} boogie_si_record_i32($i169); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1172, 3} true; + assume {:verifier.code 0} true; + $i170 := $i169; + goto $bb69; +$bb68: + assume !(($i168 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1172, 16} true; + assume {:verifier.code 0} true; + $i171 := $slt.i32($i166, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1172, 14} true; + assume {:verifier.code 0} true; + $i172 := $i167; + assume {:branchcond $i171} true; + goto $bb70, $bb71; +$bb69: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1175, 5} true; + assume {:verifier.code 0} true; + $i174 := $add.i32($i162, $i162); + call {:cexpr "a"} boogie_si_record_i32($i174); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1176, 7} true; + assume {:verifier.code 0} true; + $i175 := $sext.i32.i64($i174); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1176, 9} true; + assume {:verifier.code 0} true; + $i176 := $srem.i64($i175, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1176, 7} true; + assume {:verifier.code 0} true; + $i177 := $trunc.i64.i32($i176); + call {:cexpr "a"} boogie_si_record_i32($i177); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1177, 5} true; + assume {:verifier.code 0} true; + $i178 := $add.i32($i166, $i166); + call {:cexpr "b"} boogie_si_record_i32($i178); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1178, 7} true; + assume {:verifier.code 0} true; + $i179 := $sext.i32.i64($i178); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1178, 9} true; + assume {:verifier.code 0} true; + $i180 := $srem.i64($i179, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1178, 7} true; + assume {:verifier.code 0} true; + $i181 := $trunc.i64.i32($i180); + call {:cexpr "b"} boogie_si_record_i32($i181); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1180, 5} true; + assume {:verifier.code 0} true; + $i182 := $add.i32($i170, $i170); + call {:cexpr "c"} boogie_si_record_i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1181, 9} true; + assume {:verifier.code 0} true; + $i183 := $slt.i32($i177, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1181, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i183} true; + goto $bb73, $bb74; +$bb70: + assume ($i171 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1173, 7} true; + assume {:verifier.code 0} true; + $i173 := $add.i32($i167, 1); + call {:cexpr "c"} boogie_si_record_i32($i173); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1174, 3} true; + assume {:verifier.code 0} true; + $i172 := $i173; + goto $bb72; +$bb71: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1172, 14} true; + assume {:verifier.code 0} true; + assume !(($i171 == 1)); + goto $bb72; +$bb72: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i170 := $i172; + goto $bb69; +$bb73: + assume ($i183 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1182, 7} true; + assume {:verifier.code 0} true; + $i184 := $add.i32($i182, 1); + call {:cexpr "c"} boogie_si_record_i32($i184); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1183, 3} true; + assume {:verifier.code 0} true; + $i185 := $i184; + goto $bb75; +$bb74: + assume !(($i183 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1183, 16} true; + assume {:verifier.code 0} true; + $i186 := $slt.i32($i181, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1183, 14} true; + assume {:verifier.code 0} true; + $i187 := $i182; + assume {:branchcond $i186} true; + goto $bb76, $bb77; +$bb75: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1186, 5} true; + assume {:verifier.code 0} true; + $i189 := $add.i32($i177, $i177); + call {:cexpr "a"} boogie_si_record_i32($i189); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1187, 7} true; + assume {:verifier.code 0} true; + $i190 := $sext.i32.i64($i189); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1187, 9} true; + assume {:verifier.code 0} true; + $i191 := $srem.i64($i190, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1187, 7} true; + assume {:verifier.code 0} true; + $i192 := $trunc.i64.i32($i191); + call {:cexpr "a"} boogie_si_record_i32($i192); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1188, 5} true; + assume {:verifier.code 0} true; + $i193 := $add.i32($i181, $i181); + call {:cexpr "b"} boogie_si_record_i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1189, 7} true; + assume {:verifier.code 0} true; + $i194 := $sext.i32.i64($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1189, 9} true; + assume {:verifier.code 0} true; + $i195 := $srem.i64($i194, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1189, 7} true; + assume {:verifier.code 0} true; + $i196 := $trunc.i64.i32($i195); + call {:cexpr "b"} boogie_si_record_i32($i196); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1191, 5} true; + assume {:verifier.code 0} true; + $i197 := $add.i32($i185, $i185); + call {:cexpr "c"} boogie_si_record_i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1192, 9} true; + assume {:verifier.code 0} true; + $i198 := $slt.i32($i192, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1192, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i198} true; + goto $bb79, $bb80; +$bb76: + assume ($i186 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1184, 7} true; + assume {:verifier.code 0} true; + $i188 := $add.i32($i182, 1); + call {:cexpr "c"} boogie_si_record_i32($i188); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1185, 3} true; + assume {:verifier.code 0} true; + $i187 := $i188; + goto $bb78; +$bb77: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1183, 14} true; + assume {:verifier.code 0} true; + assume !(($i186 == 1)); + goto $bb78; +$bb78: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i185 := $i187; + goto $bb75; +$bb79: + assume ($i198 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1193, 7} true; + assume {:verifier.code 0} true; + $i199 := $add.i32($i197, 1); + call {:cexpr "c"} boogie_si_record_i32($i199); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1194, 3} true; + assume {:verifier.code 0} true; + $i200 := $i199; + goto $bb81; +$bb80: + assume !(($i198 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1194, 16} true; + assume {:verifier.code 0} true; + $i201 := $slt.i32($i196, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1194, 14} true; + assume {:verifier.code 0} true; + $i202 := $i197; + assume {:branchcond $i201} true; + goto $bb82, $bb83; +$bb81: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1197, 5} true; + assume {:verifier.code 0} true; + $i204 := $add.i32($i192, $i192); + call {:cexpr "a"} boogie_si_record_i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1198, 7} true; + assume {:verifier.code 0} true; + $i205 := $sext.i32.i64($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1198, 9} true; + assume {:verifier.code 0} true; + $i206 := $srem.i64($i205, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1198, 7} true; + assume {:verifier.code 0} true; + $i207 := $trunc.i64.i32($i206); + call {:cexpr "a"} boogie_si_record_i32($i207); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1199, 5} true; + assume {:verifier.code 0} true; + $i208 := $add.i32($i196, $i196); + call {:cexpr "b"} boogie_si_record_i32($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1200, 7} true; + assume {:verifier.code 0} true; + $i209 := $sext.i32.i64($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1200, 9} true; + assume {:verifier.code 0} true; + $i210 := $srem.i64($i209, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1200, 7} true; + assume {:verifier.code 0} true; + $i211 := $trunc.i64.i32($i210); + call {:cexpr "b"} boogie_si_record_i32($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1202, 5} true; + assume {:verifier.code 0} true; + $i212 := $add.i32($i200, $i200); + call {:cexpr "c"} boogie_si_record_i32($i212); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1203, 9} true; + assume {:verifier.code 0} true; + $i213 := $slt.i32($i207, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1203, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i213} true; + goto $bb85, $bb86; +$bb82: + assume ($i201 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1195, 7} true; + assume {:verifier.code 0} true; + $i203 := $add.i32($i197, 1); + call {:cexpr "c"} boogie_si_record_i32($i203); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1196, 3} true; + assume {:verifier.code 0} true; + $i202 := $i203; + goto $bb84; +$bb83: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1194, 14} true; + assume {:verifier.code 0} true; + assume !(($i201 == 1)); + goto $bb84; +$bb84: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i200 := $i202; + goto $bb81; +$bb85: + assume ($i213 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1204, 7} true; + assume {:verifier.code 0} true; + $i214 := $add.i32($i212, 1); + call {:cexpr "c"} boogie_si_record_i32($i214); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1205, 3} true; + assume {:verifier.code 0} true; + $i215 := $i214; + goto $bb87; +$bb86: + assume !(($i213 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1205, 16} true; + assume {:verifier.code 0} true; + $i216 := $slt.i32($i211, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1205, 14} true; + assume {:verifier.code 0} true; + $i217 := $i212; + assume {:branchcond $i216} true; + goto $bb88, $bb89; +$bb87: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1208, 5} true; + assume {:verifier.code 0} true; + $i219 := $add.i32($i207, $i207); + call {:cexpr "a"} boogie_si_record_i32($i219); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1209, 7} true; + assume {:verifier.code 0} true; + $i220 := $sext.i32.i64($i219); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1209, 9} true; + assume {:verifier.code 0} true; + $i221 := $srem.i64($i220, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1209, 7} true; + assume {:verifier.code 0} true; + $i222 := $trunc.i64.i32($i221); + call {:cexpr "a"} boogie_si_record_i32($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1210, 5} true; + assume {:verifier.code 0} true; + $i223 := $add.i32($i211, $i211); + call {:cexpr "b"} boogie_si_record_i32($i223); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1211, 7} true; + assume {:verifier.code 0} true; + $i224 := $sext.i32.i64($i223); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1211, 9} true; + assume {:verifier.code 0} true; + $i225 := $srem.i64($i224, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1211, 7} true; + assume {:verifier.code 0} true; + $i226 := $trunc.i64.i32($i225); + call {:cexpr "b"} boogie_si_record_i32($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1213, 5} true; + assume {:verifier.code 0} true; + $i227 := $add.i32($i215, $i215); + call {:cexpr "c"} boogie_si_record_i32($i227); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1214, 9} true; + assume {:verifier.code 0} true; + $i228 := $slt.i32($i222, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1214, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i228} true; + goto $bb91, $bb92; +$bb88: + assume ($i216 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1206, 7} true; + assume {:verifier.code 0} true; + $i218 := $add.i32($i212, 1); + call {:cexpr "c"} boogie_si_record_i32($i218); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1207, 3} true; + assume {:verifier.code 0} true; + $i217 := $i218; + goto $bb90; +$bb89: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1205, 14} true; + assume {:verifier.code 0} true; + assume !(($i216 == 1)); + goto $bb90; +$bb90: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i215 := $i217; + goto $bb87; +$bb91: + assume ($i228 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1215, 7} true; + assume {:verifier.code 0} true; + $i229 := $add.i32($i227, 1); + call {:cexpr "c"} boogie_si_record_i32($i229); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1216, 3} true; + assume {:verifier.code 0} true; + $i230 := $i229; + goto $bb93; +$bb92: + assume !(($i228 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1216, 16} true; + assume {:verifier.code 0} true; + $i231 := $slt.i32($i226, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1216, 14} true; + assume {:verifier.code 0} true; + $i232 := $i227; + assume {:branchcond $i231} true; + goto $bb94, $bb95; +$bb93: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1219, 5} true; + assume {:verifier.code 0} true; + $i234 := $add.i32($i222, $i222); + call {:cexpr "a"} boogie_si_record_i32($i234); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1220, 7} true; + assume {:verifier.code 0} true; + $i235 := $sext.i32.i64($i234); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1220, 9} true; + assume {:verifier.code 0} true; + $i236 := $srem.i64($i235, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1220, 7} true; + assume {:verifier.code 0} true; + $i237 := $trunc.i64.i32($i236); + call {:cexpr "a"} boogie_si_record_i32($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1221, 5} true; + assume {:verifier.code 0} true; + $i238 := $add.i32($i226, $i226); + call {:cexpr "b"} boogie_si_record_i32($i238); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1222, 7} true; + assume {:verifier.code 0} true; + $i239 := $sext.i32.i64($i238); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1222, 9} true; + assume {:verifier.code 0} true; + $i240 := $srem.i64($i239, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1222, 7} true; + assume {:verifier.code 0} true; + $i241 := $trunc.i64.i32($i240); + call {:cexpr "b"} boogie_si_record_i32($i241); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1224, 5} true; + assume {:verifier.code 0} true; + $i242 := $add.i32($i230, $i230); + call {:cexpr "c"} boogie_si_record_i32($i242); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1225, 9} true; + assume {:verifier.code 0} true; + $i243 := $slt.i32($i237, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1225, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i243} true; + goto $bb97, $bb98; +$bb94: + assume ($i231 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1217, 7} true; + assume {:verifier.code 0} true; + $i233 := $add.i32($i227, 1); + call {:cexpr "c"} boogie_si_record_i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1218, 3} true; + assume {:verifier.code 0} true; + $i232 := $i233; + goto $bb96; +$bb95: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1216, 14} true; + assume {:verifier.code 0} true; + assume !(($i231 == 1)); + goto $bb96; +$bb96: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i230 := $i232; + goto $bb93; +$bb97: + assume ($i243 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1226, 7} true; + assume {:verifier.code 0} true; + $i244 := $add.i32($i242, 1); + call {:cexpr "c"} boogie_si_record_i32($i244); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1227, 3} true; + assume {:verifier.code 0} true; + $i245 := $i244; + goto $bb99; +$bb98: + assume !(($i243 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1227, 16} true; + assume {:verifier.code 0} true; + $i246 := $slt.i32($i241, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1227, 14} true; + assume {:verifier.code 0} true; + $i247 := $i242; + assume {:branchcond $i246} true; + goto $bb100, $bb101; +$bb99: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1230, 5} true; + assume {:verifier.code 0} true; + $i249 := $add.i32($i237, $i237); + call {:cexpr "a"} boogie_si_record_i32($i249); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1231, 7} true; + assume {:verifier.code 0} true; + $i250 := $sext.i32.i64($i249); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1231, 9} true; + assume {:verifier.code 0} true; + $i251 := $srem.i64($i250, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1231, 7} true; + assume {:verifier.code 0} true; + $i252 := $trunc.i64.i32($i251); + call {:cexpr "a"} boogie_si_record_i32($i252); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1232, 5} true; + assume {:verifier.code 0} true; + $i253 := $add.i32($i241, $i241); + call {:cexpr "b"} boogie_si_record_i32($i253); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1233, 7} true; + assume {:verifier.code 0} true; + $i254 := $sext.i32.i64($i253); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1233, 9} true; + assume {:verifier.code 0} true; + $i255 := $srem.i64($i254, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1233, 7} true; + assume {:verifier.code 0} true; + $i256 := $trunc.i64.i32($i255); + call {:cexpr "b"} boogie_si_record_i32($i256); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1235, 5} true; + assume {:verifier.code 0} true; + $i257 := $add.i32($i245, $i245); + call {:cexpr "c"} boogie_si_record_i32($i257); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1236, 9} true; + assume {:verifier.code 0} true; + $i258 := $slt.i32($i252, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1236, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i258} true; + goto $bb103, $bb104; +$bb100: + assume ($i246 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1228, 7} true; + assume {:verifier.code 0} true; + $i248 := $add.i32($i242, 1); + call {:cexpr "c"} boogie_si_record_i32($i248); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1229, 3} true; + assume {:verifier.code 0} true; + $i247 := $i248; + goto $bb102; +$bb101: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1227, 14} true; + assume {:verifier.code 0} true; + assume !(($i246 == 1)); + goto $bb102; +$bb102: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i245 := $i247; + goto $bb99; +$bb103: + assume ($i258 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1237, 7} true; + assume {:verifier.code 0} true; + $i259 := $add.i32($i257, 1); + call {:cexpr "c"} boogie_si_record_i32($i259); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1238, 3} true; + assume {:verifier.code 0} true; + $i260 := $i259; + goto $bb105; +$bb104: + assume !(($i258 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1238, 16} true; + assume {:verifier.code 0} true; + $i261 := $slt.i32($i256, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1238, 14} true; + assume {:verifier.code 0} true; + $i262 := $i257; + assume {:branchcond $i261} true; + goto $bb106, $bb107; +$bb105: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1241, 5} true; + assume {:verifier.code 0} true; + $i264 := $add.i32($i252, $i252); + call {:cexpr "a"} boogie_si_record_i32($i264); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1242, 7} true; + assume {:verifier.code 0} true; + $i265 := $sext.i32.i64($i264); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1242, 9} true; + assume {:verifier.code 0} true; + $i266 := $srem.i64($i265, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1242, 7} true; + assume {:verifier.code 0} true; + $i267 := $trunc.i64.i32($i266); + call {:cexpr "a"} boogie_si_record_i32($i267); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1243, 5} true; + assume {:verifier.code 0} true; + $i268 := $add.i32($i256, $i256); + call {:cexpr "b"} boogie_si_record_i32($i268); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1244, 7} true; + assume {:verifier.code 0} true; + $i269 := $sext.i32.i64($i268); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1244, 9} true; + assume {:verifier.code 0} true; + $i270 := $srem.i64($i269, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1244, 7} true; + assume {:verifier.code 0} true; + $i271 := $trunc.i64.i32($i270); + call {:cexpr "b"} boogie_si_record_i32($i271); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1246, 5} true; + assume {:verifier.code 0} true; + $i272 := $add.i32($i260, $i260); + call {:cexpr "c"} boogie_si_record_i32($i272); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1247, 9} true; + assume {:verifier.code 0} true; + $i273 := $slt.i32($i267, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1247, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i273} true; + goto $bb109, $bb110; +$bb106: + assume ($i261 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1239, 7} true; + assume {:verifier.code 0} true; + $i263 := $add.i32($i257, 1); + call {:cexpr "c"} boogie_si_record_i32($i263); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1240, 3} true; + assume {:verifier.code 0} true; + $i262 := $i263; + goto $bb108; +$bb107: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1238, 14} true; + assume {:verifier.code 0} true; + assume !(($i261 == 1)); + goto $bb108; +$bb108: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i260 := $i262; + goto $bb105; +$bb109: + assume ($i273 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1248, 7} true; + assume {:verifier.code 0} true; + $i274 := $add.i32($i272, 1); + call {:cexpr "c"} boogie_si_record_i32($i274); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1249, 3} true; + assume {:verifier.code 0} true; + $i275 := $i274; + goto $bb111; +$bb110: + assume !(($i273 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1249, 16} true; + assume {:verifier.code 0} true; + $i276 := $slt.i32($i271, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1249, 14} true; + assume {:verifier.code 0} true; + $i277 := $i272; + assume {:branchcond $i276} true; + goto $bb112, $bb113; +$bb111: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1252, 5} true; + assume {:verifier.code 0} true; + $i279 := $add.i32($i267, $i267); + call {:cexpr "a"} boogie_si_record_i32($i279); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1253, 7} true; + assume {:verifier.code 0} true; + $i280 := $sext.i32.i64($i279); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1253, 9} true; + assume {:verifier.code 0} true; + $i281 := $srem.i64($i280, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1253, 7} true; + assume {:verifier.code 0} true; + $i282 := $trunc.i64.i32($i281); + call {:cexpr "a"} boogie_si_record_i32($i282); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1254, 5} true; + assume {:verifier.code 0} true; + $i283 := $add.i32($i271, $i271); + call {:cexpr "b"} boogie_si_record_i32($i283); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1255, 7} true; + assume {:verifier.code 0} true; + $i284 := $sext.i32.i64($i283); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1255, 9} true; + assume {:verifier.code 0} true; + $i285 := $srem.i64($i284, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1255, 7} true; + assume {:verifier.code 0} true; + $i286 := $trunc.i64.i32($i285); + call {:cexpr "b"} boogie_si_record_i32($i286); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1257, 5} true; + assume {:verifier.code 0} true; + $i287 := $add.i32($i275, $i275); + call {:cexpr "c"} boogie_si_record_i32($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1258, 9} true; + assume {:verifier.code 0} true; + $i288 := $slt.i32($i282, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1258, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i288} true; + goto $bb115, $bb116; +$bb112: + assume ($i276 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1250, 7} true; + assume {:verifier.code 0} true; + $i278 := $add.i32($i272, 1); + call {:cexpr "c"} boogie_si_record_i32($i278); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1251, 3} true; + assume {:verifier.code 0} true; + $i277 := $i278; + goto $bb114; +$bb113: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1249, 14} true; + assume {:verifier.code 0} true; + assume !(($i276 == 1)); + goto $bb114; +$bb114: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i275 := $i277; + goto $bb111; +$bb115: + assume ($i288 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1259, 7} true; + assume {:verifier.code 0} true; + $i289 := $add.i32($i287, 1); + call {:cexpr "c"} boogie_si_record_i32($i289); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1260, 3} true; + assume {:verifier.code 0} true; + $i290 := $i289; + goto $bb117; +$bb116: + assume !(($i288 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1260, 16} true; + assume {:verifier.code 0} true; + $i291 := $slt.i32($i286, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1260, 14} true; + assume {:verifier.code 0} true; + $i292 := $i287; + assume {:branchcond $i291} true; + goto $bb118, $bb119; +$bb117: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1263, 5} true; + assume {:verifier.code 0} true; + $i294 := $add.i32($i282, $i282); + call {:cexpr "a"} boogie_si_record_i32($i294); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1264, 7} true; + assume {:verifier.code 0} true; + $i295 := $sext.i32.i64($i294); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1264, 9} true; + assume {:verifier.code 0} true; + $i296 := $srem.i64($i295, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1264, 7} true; + assume {:verifier.code 0} true; + $i297 := $trunc.i64.i32($i296); + call {:cexpr "a"} boogie_si_record_i32($i297); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1265, 5} true; + assume {:verifier.code 0} true; + $i298 := $add.i32($i286, $i286); + call {:cexpr "b"} boogie_si_record_i32($i298); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1266, 7} true; + assume {:verifier.code 0} true; + $i299 := $sext.i32.i64($i298); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1266, 9} true; + assume {:verifier.code 0} true; + $i300 := $srem.i64($i299, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1266, 7} true; + assume {:verifier.code 0} true; + $i301 := $trunc.i64.i32($i300); + call {:cexpr "b"} boogie_si_record_i32($i301); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1268, 5} true; + assume {:verifier.code 0} true; + $i302 := $add.i32($i290, $i290); + call {:cexpr "c"} boogie_si_record_i32($i302); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1269, 9} true; + assume {:verifier.code 0} true; + $i303 := $slt.i32($i297, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1269, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i303} true; + goto $bb121, $bb122; +$bb118: + assume ($i291 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1261, 7} true; + assume {:verifier.code 0} true; + $i293 := $add.i32($i287, 1); + call {:cexpr "c"} boogie_si_record_i32($i293); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1262, 3} true; + assume {:verifier.code 0} true; + $i292 := $i293; + goto $bb120; +$bb119: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1260, 14} true; + assume {:verifier.code 0} true; + assume !(($i291 == 1)); + goto $bb120; +$bb120: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i290 := $i292; + goto $bb117; +$bb121: + assume ($i303 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1270, 7} true; + assume {:verifier.code 0} true; + $i304 := $add.i32($i302, 1); + call {:cexpr "c"} boogie_si_record_i32($i304); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1271, 3} true; + assume {:verifier.code 0} true; + $i305 := $i304; + goto $bb123; +$bb122: + assume !(($i303 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1271, 16} true; + assume {:verifier.code 0} true; + $i306 := $slt.i32($i301, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1271, 14} true; + assume {:verifier.code 0} true; + $i307 := $i302; + assume {:branchcond $i306} true; + goto $bb124, $bb125; +$bb123: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1274, 5} true; + assume {:verifier.code 0} true; + $i309 := $add.i32($i297, $i297); + call {:cexpr "a"} boogie_si_record_i32($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1275, 7} true; + assume {:verifier.code 0} true; + $i310 := $sext.i32.i64($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1275, 9} true; + assume {:verifier.code 0} true; + $i311 := $srem.i64($i310, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1275, 7} true; + assume {:verifier.code 0} true; + $i312 := $trunc.i64.i32($i311); + call {:cexpr "a"} boogie_si_record_i32($i312); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1276, 5} true; + assume {:verifier.code 0} true; + $i313 := $add.i32($i301, $i301); + call {:cexpr "b"} boogie_si_record_i32($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1277, 7} true; + assume {:verifier.code 0} true; + $i314 := $sext.i32.i64($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1277, 9} true; + assume {:verifier.code 0} true; + $i315 := $srem.i64($i314, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1277, 7} true; + assume {:verifier.code 0} true; + $i316 := $trunc.i64.i32($i315); + call {:cexpr "b"} boogie_si_record_i32($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1279, 5} true; + assume {:verifier.code 0} true; + $i317 := $add.i32($i305, $i305); + call {:cexpr "c"} boogie_si_record_i32($i317); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1280, 9} true; + assume {:verifier.code 0} true; + $i318 := $slt.i32($i312, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1280, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i318} true; + goto $bb127, $bb128; +$bb124: + assume ($i306 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1272, 7} true; + assume {:verifier.code 0} true; + $i308 := $add.i32($i302, 1); + call {:cexpr "c"} boogie_si_record_i32($i308); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1273, 3} true; + assume {:verifier.code 0} true; + $i307 := $i308; + goto $bb126; +$bb125: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1271, 14} true; + assume {:verifier.code 0} true; + assume !(($i306 == 1)); + goto $bb126; +$bb126: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i305 := $i307; + goto $bb123; +$bb127: + assume ($i318 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1281, 7} true; + assume {:verifier.code 0} true; + $i319 := $add.i32($i317, 1); + call {:cexpr "c"} boogie_si_record_i32($i319); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1282, 3} true; + assume {:verifier.code 0} true; + $i320 := $i319; + goto $bb129; +$bb128: + assume !(($i318 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1282, 16} true; + assume {:verifier.code 0} true; + $i321 := $slt.i32($i316, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1282, 14} true; + assume {:verifier.code 0} true; + $i322 := $i317; + assume {:branchcond $i321} true; + goto $bb130, $bb131; +$bb129: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1285, 5} true; + assume {:verifier.code 0} true; + $i324 := $add.i32($i312, $i312); + call {:cexpr "a"} boogie_si_record_i32($i324); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1286, 7} true; + assume {:verifier.code 0} true; + $i325 := $sext.i32.i64($i324); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1286, 9} true; + assume {:verifier.code 0} true; + $i326 := $srem.i64($i325, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1286, 7} true; + assume {:verifier.code 0} true; + $i327 := $trunc.i64.i32($i326); + call {:cexpr "a"} boogie_si_record_i32($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1287, 5} true; + assume {:verifier.code 0} true; + $i328 := $add.i32($i316, $i316); + call {:cexpr "b"} boogie_si_record_i32($i328); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1288, 7} true; + assume {:verifier.code 0} true; + $i329 := $sext.i32.i64($i328); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1288, 9} true; + assume {:verifier.code 0} true; + $i330 := $srem.i64($i329, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1288, 7} true; + assume {:verifier.code 0} true; + $i331 := $trunc.i64.i32($i330); + call {:cexpr "b"} boogie_si_record_i32($i331); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1290, 5} true; + assume {:verifier.code 0} true; + $i332 := $add.i32($i320, $i320); + call {:cexpr "c"} boogie_si_record_i32($i332); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1291, 9} true; + assume {:verifier.code 0} true; + $i333 := $slt.i32($i327, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1291, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i333} true; + goto $bb133, $bb134; +$bb130: + assume ($i321 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1283, 7} true; + assume {:verifier.code 0} true; + $i323 := $add.i32($i317, 1); + call {:cexpr "c"} boogie_si_record_i32($i323); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1284, 3} true; + assume {:verifier.code 0} true; + $i322 := $i323; + goto $bb132; +$bb131: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1282, 14} true; + assume {:verifier.code 0} true; + assume !(($i321 == 1)); + goto $bb132; +$bb132: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i320 := $i322; + goto $bb129; +$bb133: + assume ($i333 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1292, 7} true; + assume {:verifier.code 0} true; + $i334 := $add.i32($i332, 1); + call {:cexpr "c"} boogie_si_record_i32($i334); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1293, 3} true; + assume {:verifier.code 0} true; + $i335 := $i334; + goto $bb135; +$bb134: + assume !(($i333 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1293, 16} true; + assume {:verifier.code 0} true; + $i336 := $slt.i32($i331, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1293, 14} true; + assume {:verifier.code 0} true; + $i337 := $i332; + assume {:branchcond $i336} true; + goto $bb136, $bb137; +$bb135: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1296, 5} true; + assume {:verifier.code 0} true; + $i339 := $add.i32($i327, $i327); + call {:cexpr "a"} boogie_si_record_i32($i339); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1297, 7} true; + assume {:verifier.code 0} true; + $i340 := $sext.i32.i64($i339); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1297, 9} true; + assume {:verifier.code 0} true; + $i341 := $srem.i64($i340, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1297, 7} true; + assume {:verifier.code 0} true; + $i342 := $trunc.i64.i32($i341); + call {:cexpr "a"} boogie_si_record_i32($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1298, 5} true; + assume {:verifier.code 0} true; + $i343 := $add.i32($i331, $i331); + call {:cexpr "b"} boogie_si_record_i32($i343); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1299, 7} true; + assume {:verifier.code 0} true; + $i344 := $sext.i32.i64($i343); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1299, 9} true; + assume {:verifier.code 0} true; + $i345 := $srem.i64($i344, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1299, 7} true; + assume {:verifier.code 0} true; + $i346 := $trunc.i64.i32($i345); + call {:cexpr "b"} boogie_si_record_i32($i346); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1301, 5} true; + assume {:verifier.code 0} true; + $i347 := $add.i32($i335, $i335); + call {:cexpr "c"} boogie_si_record_i32($i347); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1302, 9} true; + assume {:verifier.code 0} true; + $i348 := $slt.i32($i342, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1302, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i348} true; + goto $bb139, $bb140; +$bb136: + assume ($i336 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1294, 7} true; + assume {:verifier.code 0} true; + $i338 := $add.i32($i332, 1); + call {:cexpr "c"} boogie_si_record_i32($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1295, 3} true; + assume {:verifier.code 0} true; + $i337 := $i338; + goto $bb138; +$bb137: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1293, 14} true; + assume {:verifier.code 0} true; + assume !(($i336 == 1)); + goto $bb138; +$bb138: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i335 := $i337; + goto $bb135; +$bb139: + assume ($i348 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1303, 7} true; + assume {:verifier.code 0} true; + $i349 := $add.i32($i347, 1); + call {:cexpr "c"} boogie_si_record_i32($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1304, 3} true; + assume {:verifier.code 0} true; + $i350 := $i349; + goto $bb141; +$bb140: + assume !(($i348 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1304, 16} true; + assume {:verifier.code 0} true; + $i351 := $slt.i32($i346, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1304, 14} true; + assume {:verifier.code 0} true; + $i352 := $i347; + assume {:branchcond $i351} true; + goto $bb142, $bb143; +$bb141: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1307, 5} true; + assume {:verifier.code 0} true; + $i354 := $add.i32($i342, $i342); + call {:cexpr "a"} boogie_si_record_i32($i354); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1308, 7} true; + assume {:verifier.code 0} true; + $i355 := $sext.i32.i64($i354); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1308, 9} true; + assume {:verifier.code 0} true; + $i356 := $srem.i64($i355, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1308, 7} true; + assume {:verifier.code 0} true; + $i357 := $trunc.i64.i32($i356); + call {:cexpr "a"} boogie_si_record_i32($i357); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1309, 5} true; + assume {:verifier.code 0} true; + $i358 := $add.i32($i346, $i346); + call {:cexpr "b"} boogie_si_record_i32($i358); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1310, 7} true; + assume {:verifier.code 0} true; + $i359 := $sext.i32.i64($i358); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1310, 9} true; + assume {:verifier.code 0} true; + $i360 := $srem.i64($i359, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1310, 7} true; + assume {:verifier.code 0} true; + $i361 := $trunc.i64.i32($i360); + call {:cexpr "b"} boogie_si_record_i32($i361); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1312, 5} true; + assume {:verifier.code 0} true; + $i362 := $add.i32($i350, $i350); + call {:cexpr "c"} boogie_si_record_i32($i362); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1313, 9} true; + assume {:verifier.code 0} true; + $i363 := $slt.i32($i357, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1313, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i363} true; + goto $bb145, $bb146; +$bb142: + assume ($i351 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1305, 7} true; + assume {:verifier.code 0} true; + $i353 := $add.i32($i347, 1); + call {:cexpr "c"} boogie_si_record_i32($i353); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1306, 3} true; + assume {:verifier.code 0} true; + $i352 := $i353; + goto $bb144; +$bb143: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1304, 14} true; + assume {:verifier.code 0} true; + assume !(($i351 == 1)); + goto $bb144; +$bb144: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i350 := $i352; + goto $bb141; +$bb145: + assume ($i363 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1314, 7} true; + assume {:verifier.code 0} true; + $i364 := $add.i32($i362, 1); + call {:cexpr "c"} boogie_si_record_i32($i364); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1315, 3} true; + assume {:verifier.code 0} true; + $i365 := $i364; + goto $bb147; +$bb146: + assume !(($i363 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1315, 16} true; + assume {:verifier.code 0} true; + $i366 := $slt.i32($i361, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1315, 14} true; + assume {:verifier.code 0} true; + $i367 := $i362; + assume {:branchcond $i366} true; + goto $bb148, $bb149; +$bb147: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1318, 5} true; + assume {:verifier.code 0} true; + $i369 := $add.i32($i357, $i357); + call {:cexpr "a"} boogie_si_record_i32($i369); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1319, 7} true; + assume {:verifier.code 0} true; + $i370 := $sext.i32.i64($i369); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1319, 9} true; + assume {:verifier.code 0} true; + $i371 := $srem.i64($i370, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1319, 7} true; + assume {:verifier.code 0} true; + $i372 := $trunc.i64.i32($i371); + call {:cexpr "a"} boogie_si_record_i32($i372); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1320, 5} true; + assume {:verifier.code 0} true; + $i373 := $add.i32($i361, $i361); + call {:cexpr "b"} boogie_si_record_i32($i373); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1321, 7} true; + assume {:verifier.code 0} true; + $i374 := $sext.i32.i64($i373); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1321, 9} true; + assume {:verifier.code 0} true; + $i375 := $srem.i64($i374, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1321, 7} true; + assume {:verifier.code 0} true; + $i376 := $trunc.i64.i32($i375); + call {:cexpr "b"} boogie_si_record_i32($i376); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1323, 5} true; + assume {:verifier.code 0} true; + $i377 := $add.i32($i365, $i365); + call {:cexpr "c"} boogie_si_record_i32($i377); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1324, 9} true; + assume {:verifier.code 0} true; + $i378 := $slt.i32($i372, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1324, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i378} true; + goto $bb151, $bb152; +$bb148: + assume ($i366 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1316, 7} true; + assume {:verifier.code 0} true; + $i368 := $add.i32($i362, 1); + call {:cexpr "c"} boogie_si_record_i32($i368); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1317, 3} true; + assume {:verifier.code 0} true; + $i367 := $i368; + goto $bb150; +$bb149: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1315, 14} true; + assume {:verifier.code 0} true; + assume !(($i366 == 1)); + goto $bb150; +$bb150: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i365 := $i367; + goto $bb147; +$bb151: + assume ($i378 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1325, 7} true; + assume {:verifier.code 0} true; + $i379 := $add.i32($i377, 1); + call {:cexpr "c"} boogie_si_record_i32($i379); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1326, 3} true; + assume {:verifier.code 0} true; + $i380 := $i379; + goto $bb153; +$bb152: + assume !(($i378 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1326, 16} true; + assume {:verifier.code 0} true; + $i381 := $slt.i32($i376, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1326, 14} true; + assume {:verifier.code 0} true; + $i382 := $i377; + assume {:branchcond $i381} true; + goto $bb154, $bb155; +$bb153: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1329, 5} true; + assume {:verifier.code 0} true; + $i384 := $add.i32($i372, $i372); + call {:cexpr "a"} boogie_si_record_i32($i384); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1330, 7} true; + assume {:verifier.code 0} true; + $i385 := $sext.i32.i64($i384); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1330, 9} true; + assume {:verifier.code 0} true; + $i386 := $srem.i64($i385, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1330, 7} true; + assume {:verifier.code 0} true; + $i387 := $trunc.i64.i32($i386); + call {:cexpr "a"} boogie_si_record_i32($i387); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1331, 5} true; + assume {:verifier.code 0} true; + $i388 := $add.i32($i376, $i376); + call {:cexpr "b"} boogie_si_record_i32($i388); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1332, 7} true; + assume {:verifier.code 0} true; + $i389 := $sext.i32.i64($i388); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1332, 9} true; + assume {:verifier.code 0} true; + $i390 := $srem.i64($i389, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1332, 7} true; + assume {:verifier.code 0} true; + $i391 := $trunc.i64.i32($i390); + call {:cexpr "b"} boogie_si_record_i32($i391); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1334, 5} true; + assume {:verifier.code 0} true; + $i392 := $add.i32($i380, $i380); + call {:cexpr "c"} boogie_si_record_i32($i392); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1335, 9} true; + assume {:verifier.code 0} true; + $i393 := $slt.i32($i387, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1335, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i393} true; + goto $bb157, $bb158; +$bb154: + assume ($i381 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1327, 7} true; + assume {:verifier.code 0} true; + $i383 := $add.i32($i377, 1); + call {:cexpr "c"} boogie_si_record_i32($i383); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1328, 3} true; + assume {:verifier.code 0} true; + $i382 := $i383; + goto $bb156; +$bb155: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1326, 14} true; + assume {:verifier.code 0} true; + assume !(($i381 == 1)); + goto $bb156; +$bb156: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i380 := $i382; + goto $bb153; +$bb157: + assume ($i393 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1336, 7} true; + assume {:verifier.code 0} true; + $i394 := $add.i32($i392, 1); + call {:cexpr "c"} boogie_si_record_i32($i394); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1337, 3} true; + assume {:verifier.code 0} true; + $i395 := $i394; + goto $bb159; +$bb158: + assume !(($i393 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1337, 16} true; + assume {:verifier.code 0} true; + $i396 := $slt.i32($i391, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1337, 14} true; + assume {:verifier.code 0} true; + $i397 := $i392; + assume {:branchcond $i396} true; + goto $bb160, $bb161; +$bb159: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1340, 5} true; + assume {:verifier.code 0} true; + $i399 := $add.i32($i387, $i387); + call {:cexpr "a"} boogie_si_record_i32($i399); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1341, 7} true; + assume {:verifier.code 0} true; + $i400 := $sext.i32.i64($i399); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1341, 9} true; + assume {:verifier.code 0} true; + $i401 := $srem.i64($i400, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1341, 7} true; + assume {:verifier.code 0} true; + $i402 := $trunc.i64.i32($i401); + call {:cexpr "a"} boogie_si_record_i32($i402); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1342, 5} true; + assume {:verifier.code 0} true; + $i403 := $add.i32($i391, $i391); + call {:cexpr "b"} boogie_si_record_i32($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1343, 7} true; + assume {:verifier.code 0} true; + $i404 := $sext.i32.i64($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1343, 9} true; + assume {:verifier.code 0} true; + $i405 := $srem.i64($i404, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1343, 7} true; + assume {:verifier.code 0} true; + $i406 := $trunc.i64.i32($i405); + call {:cexpr "b"} boogie_si_record_i32($i406); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1345, 5} true; + assume {:verifier.code 0} true; + $i407 := $add.i32($i395, $i395); + call {:cexpr "c"} boogie_si_record_i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1346, 9} true; + assume {:verifier.code 0} true; + $i408 := $slt.i32($i402, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1346, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i408} true; + goto $bb163, $bb164; +$bb160: + assume ($i396 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1338, 7} true; + assume {:verifier.code 0} true; + $i398 := $add.i32($i392, 1); + call {:cexpr "c"} boogie_si_record_i32($i398); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1339, 3} true; + assume {:verifier.code 0} true; + $i397 := $i398; + goto $bb162; +$bb161: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1337, 14} true; + assume {:verifier.code 0} true; + assume !(($i396 == 1)); + goto $bb162; +$bb162: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i395 := $i397; + goto $bb159; +$bb163: + assume ($i408 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1347, 7} true; + assume {:verifier.code 0} true; + $i409 := $add.i32($i407, 1); + call {:cexpr "c"} boogie_si_record_i32($i409); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1348, 3} true; + assume {:verifier.code 0} true; + $i410 := $i409; + goto $bb165; +$bb164: + assume !(($i408 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1348, 16} true; + assume {:verifier.code 0} true; + $i411 := $slt.i32($i406, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1348, 14} true; + assume {:verifier.code 0} true; + $i412 := $i407; + assume {:branchcond $i411} true; + goto $bb166, $bb167; +$bb165: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1351, 5} true; + assume {:verifier.code 0} true; + $i414 := $add.i32($i402, $i402); + call {:cexpr "a"} boogie_si_record_i32($i414); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1352, 7} true; + assume {:verifier.code 0} true; + $i415 := $sext.i32.i64($i414); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1352, 9} true; + assume {:verifier.code 0} true; + $i416 := $srem.i64($i415, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1352, 7} true; + assume {:verifier.code 0} true; + $i417 := $trunc.i64.i32($i416); + call {:cexpr "a"} boogie_si_record_i32($i417); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1353, 5} true; + assume {:verifier.code 0} true; + $i418 := $add.i32($i406, $i406); + call {:cexpr "b"} boogie_si_record_i32($i418); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1354, 7} true; + assume {:verifier.code 0} true; + $i419 := $sext.i32.i64($i418); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1354, 9} true; + assume {:verifier.code 0} true; + $i420 := $srem.i64($i419, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1354, 7} true; + assume {:verifier.code 0} true; + $i421 := $trunc.i64.i32($i420); + call {:cexpr "b"} boogie_si_record_i32($i421); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1356, 5} true; + assume {:verifier.code 0} true; + $i422 := $add.i32($i410, $i410); + call {:cexpr "c"} boogie_si_record_i32($i422); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1357, 9} true; + assume {:verifier.code 0} true; + $i423 := $slt.i32($i417, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1357, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i423} true; + goto $bb169, $bb170; +$bb166: + assume ($i411 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1349, 7} true; + assume {:verifier.code 0} true; + $i413 := $add.i32($i407, 1); + call {:cexpr "c"} boogie_si_record_i32($i413); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1350, 3} true; + assume {:verifier.code 0} true; + $i412 := $i413; + goto $bb168; +$bb167: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1348, 14} true; + assume {:verifier.code 0} true; + assume !(($i411 == 1)); + goto $bb168; +$bb168: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i410 := $i412; + goto $bb165; +$bb169: + assume ($i423 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1358, 7} true; + assume {:verifier.code 0} true; + $i424 := $add.i32($i422, 1); + call {:cexpr "c"} boogie_si_record_i32($i424); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1359, 3} true; + assume {:verifier.code 0} true; + $i425 := $i424; + goto $bb171; +$bb170: + assume !(($i423 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1359, 16} true; + assume {:verifier.code 0} true; + $i426 := $slt.i32($i421, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1359, 14} true; + assume {:verifier.code 0} true; + $i427 := $i422; + assume {:branchcond $i426} true; + goto $bb172, $bb173; +$bb171: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1362, 5} true; + assume {:verifier.code 0} true; + $i429 := $add.i32($i417, $i417); + call {:cexpr "a"} boogie_si_record_i32($i429); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1363, 7} true; + assume {:verifier.code 0} true; + $i430 := $sext.i32.i64($i429); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1363, 9} true; + assume {:verifier.code 0} true; + $i431 := $srem.i64($i430, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1363, 7} true; + assume {:verifier.code 0} true; + $i432 := $trunc.i64.i32($i431); + call {:cexpr "a"} boogie_si_record_i32($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1364, 5} true; + assume {:verifier.code 0} true; + $i433 := $add.i32($i421, $i421); + call {:cexpr "b"} boogie_si_record_i32($i433); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1365, 7} true; + assume {:verifier.code 0} true; + $i434 := $sext.i32.i64($i433); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1365, 9} true; + assume {:verifier.code 0} true; + $i435 := $srem.i64($i434, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1365, 7} true; + assume {:verifier.code 0} true; + $i436 := $trunc.i64.i32($i435); + call {:cexpr "b"} boogie_si_record_i32($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1367, 5} true; + assume {:verifier.code 0} true; + $i437 := $add.i32($i425, $i425); + call {:cexpr "c"} boogie_si_record_i32($i437); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1368, 9} true; + assume {:verifier.code 0} true; + $i438 := $slt.i32($i432, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1368, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i438} true; + goto $bb175, $bb176; +$bb172: + assume ($i426 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1360, 7} true; + assume {:verifier.code 0} true; + $i428 := $add.i32($i422, 1); + call {:cexpr "c"} boogie_si_record_i32($i428); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1361, 3} true; + assume {:verifier.code 0} true; + $i427 := $i428; + goto $bb174; +$bb173: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1359, 14} true; + assume {:verifier.code 0} true; + assume !(($i426 == 1)); + goto $bb174; +$bb174: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i425 := $i427; + goto $bb171; +$bb175: + assume ($i438 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1369, 7} true; + assume {:verifier.code 0} true; + $i439 := $add.i32($i437, 1); + call {:cexpr "c"} boogie_si_record_i32($i439); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1370, 3} true; + assume {:verifier.code 0} true; + $i440 := $i439; + goto $bb177; +$bb176: + assume !(($i438 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1370, 16} true; + assume {:verifier.code 0} true; + $i441 := $slt.i32($i436, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1370, 14} true; + assume {:verifier.code 0} true; + $i442 := $i437; + assume {:branchcond $i441} true; + goto $bb178, $bb179; +$bb177: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1373, 5} true; + assume {:verifier.code 0} true; + $i444 := $add.i32($i432, $i432); + call {:cexpr "a"} boogie_si_record_i32($i444); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1374, 7} true; + assume {:verifier.code 0} true; + $i445 := $sext.i32.i64($i444); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1374, 9} true; + assume {:verifier.code 0} true; + $i446 := $srem.i64($i445, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1374, 7} true; + assume {:verifier.code 0} true; + $i447 := $trunc.i64.i32($i446); + call {:cexpr "a"} boogie_si_record_i32($i447); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1375, 5} true; + assume {:verifier.code 0} true; + $i448 := $add.i32($i436, $i436); + call {:cexpr "b"} boogie_si_record_i32($i448); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1376, 7} true; + assume {:verifier.code 0} true; + $i449 := $sext.i32.i64($i448); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1376, 9} true; + assume {:verifier.code 0} true; + $i450 := $srem.i64($i449, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1376, 7} true; + assume {:verifier.code 0} true; + $i451 := $trunc.i64.i32($i450); + call {:cexpr "b"} boogie_si_record_i32($i451); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1378, 5} true; + assume {:verifier.code 0} true; + $i452 := $add.i32($i440, $i440); + call {:cexpr "c"} boogie_si_record_i32($i452); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1379, 9} true; + assume {:verifier.code 0} true; + $i453 := $slt.i32($i447, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1379, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i453} true; + goto $bb181, $bb182; +$bb178: + assume ($i441 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1371, 7} true; + assume {:verifier.code 0} true; + $i443 := $add.i32($i437, 1); + call {:cexpr "c"} boogie_si_record_i32($i443); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1372, 3} true; + assume {:verifier.code 0} true; + $i442 := $i443; + goto $bb180; +$bb179: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1370, 14} true; + assume {:verifier.code 0} true; + assume !(($i441 == 1)); + goto $bb180; +$bb180: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i440 := $i442; + goto $bb177; +$bb181: + assume ($i453 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1380, 7} true; + assume {:verifier.code 0} true; + $i454 := $add.i32($i452, 1); + call {:cexpr "c"} boogie_si_record_i32($i454); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1381, 3} true; + assume {:verifier.code 0} true; + $i455 := $i454; + goto $bb183; +$bb182: + assume !(($i453 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1381, 16} true; + assume {:verifier.code 0} true; + $i456 := $slt.i32($i451, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1381, 14} true; + assume {:verifier.code 0} true; + $i457 := $i452; + assume {:branchcond $i456} true; + goto $bb184, $bb185; +$bb183: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1384, 5} true; + assume {:verifier.code 0} true; + $i459 := $add.i32($i447, $i447); + call {:cexpr "a"} boogie_si_record_i32($i459); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1385, 7} true; + assume {:verifier.code 0} true; + $i460 := $sext.i32.i64($i459); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1385, 9} true; + assume {:verifier.code 0} true; + $i461 := $srem.i64($i460, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1385, 7} true; + assume {:verifier.code 0} true; + $i462 := $trunc.i64.i32($i461); + call {:cexpr "a"} boogie_si_record_i32($i462); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1386, 5} true; + assume {:verifier.code 0} true; + $i463 := $add.i32($i451, $i451); + call {:cexpr "b"} boogie_si_record_i32($i463); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1387, 7} true; + assume {:verifier.code 0} true; + $i464 := $sext.i32.i64($i463); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1387, 9} true; + assume {:verifier.code 0} true; + $i465 := $srem.i64($i464, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1387, 7} true; + assume {:verifier.code 0} true; + $i466 := $trunc.i64.i32($i465); + call {:cexpr "b"} boogie_si_record_i32($i466); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1389, 5} true; + assume {:verifier.code 0} true; + $i467 := $add.i32($i455, $i455); + call {:cexpr "c"} boogie_si_record_i32($i467); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1390, 9} true; + assume {:verifier.code 0} true; + $i468 := $slt.i32($i462, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1390, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i468} true; + goto $bb187, $bb188; +$bb184: + assume ($i456 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1382, 7} true; + assume {:verifier.code 0} true; + $i458 := $add.i32($i452, 1); + call {:cexpr "c"} boogie_si_record_i32($i458); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1383, 3} true; + assume {:verifier.code 0} true; + $i457 := $i458; + goto $bb186; +$bb185: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1381, 14} true; + assume {:verifier.code 0} true; + assume !(($i456 == 1)); + goto $bb186; +$bb186: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i455 := $i457; + goto $bb183; +$bb187: + assume ($i468 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1391, 7} true; + assume {:verifier.code 0} true; + $i469 := $add.i32($i467, 1); + call {:cexpr "c"} boogie_si_record_i32($i469); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1392, 3} true; + assume {:verifier.code 0} true; + $i470 := $i469; + goto $bb189; +$bb188: + assume !(($i468 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1392, 16} true; + assume {:verifier.code 0} true; + $i471 := $slt.i32($i466, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1392, 14} true; + assume {:verifier.code 0} true; + $i472 := $i467; + assume {:branchcond $i471} true; + goto $bb190, $bb191; +$bb189: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1400, 3} true; + assume {:verifier.code 0} true; + $r := $i470; + $exn := false; + return; +$bb190: + assume ($i471 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1393, 7} true; + assume {:verifier.code 0} true; + $i473 := $add.i32($i467, 1); + call {:cexpr "c"} boogie_si_record_i32($i473); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1394, 3} true; + assume {:verifier.code 0} true; + $i472 := $i473; + goto $bb192; +$bb191: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1392, 14} true; + assume {:verifier.code 0} true; + assume !(($i471 == 1)); + goto $bb192; +$bb192: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i470 := $i472; + goto $bb189; +} +const __SMACK_or64: ref; +axiom (__SMACK_or64 == $sub.ref(0, 20636)); +procedure __SMACK_or64($i0: i64, $i1: i64) + returns ($r: i64) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i64; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 63} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_or64:arg:a"} boogie_si_record_i64($i0); + call {:cexpr "__SMACK_or64:arg:b"} boogie_si_record_i64($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 63} true; + assume {:verifier.code 1} true; + $i2 := $trunc.i64.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 66} true; + assume {:verifier.code 1} true; + $i3 := $trunc.i64.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 50} true; + assume {:verifier.code 1} true; + call $i4 := __SMACK_or32($i2, $i3); + call {:cexpr "smack:ext:__SMACK_or32"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 44} true; + assume {:verifier.code 0} true; + $i5 := $sext.i32.i64($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 37} true; + assume {:verifier.code 0} true; + $r := $i5; + $exn := false; + return; +} +const __SMACK_or16: ref; +axiom (__SMACK_or16 == $sub.ref(0, 21668)); +procedure __SMACK_or16($i0: i16, $i1: i16) + returns ($r: i16) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i16; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 67} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_or16:arg:a"} boogie_si_record_i16($i0); + call {:cexpr "__SMACK_or16:arg:b"} boogie_si_record_i16($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 67} true; + assume {:verifier.code 1} true; + $i2 := $sext.i16.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 70} true; + assume {:verifier.code 1} true; + $i3 := $sext.i16.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 54} true; + assume {:verifier.code 1} true; + call $i4 := __SMACK_or32($i2, $i3); + call {:cexpr "smack:ext:__SMACK_or32"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 47} true; + assume {:verifier.code 0} true; + $i5 := $trunc.i32.i16($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 40} true; + assume {:verifier.code 0} true; + $r := $i5; + $exn := false; + return; +} +const __SMACK_or8: ref; +axiom (__SMACK_or8 == $sub.ref(0, 22700)); +procedure __SMACK_or8($i0: i8, $i1: i8) + returns ($r: i8) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i8; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 62} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_or8:arg:a"} boogie_si_record_i8($i0); + call {:cexpr "__SMACK_or8:arg:b"} boogie_si_record_i8($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 62} true; + assume {:verifier.code 1} true; + $i2 := $sext.i8.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 65} true; + assume {:verifier.code 1} true; + $i3 := $sext.i8.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 49} true; + assume {:verifier.code 1} true; + call $i4 := __SMACK_or32($i2, $i3); + call {:cexpr "smack:ext:__SMACK_or32"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 43} true; + assume {:verifier.code 0} true; + $i5 := $trunc.i32.i8($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 36} true; + assume {:verifier.code 0} true; + $r := $i5; + $exn := false; + return; +} +const __SMACK_check_overflow: ref; +axiom (__SMACK_check_overflow == $sub.ref(0, 23732)); +procedure __SMACK_check_overflow($i0: i32) +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_check_overflow:arg:flag"} boogie_si_record_i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + assume true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1409, 3} true; + assume {:verifier.code 1} true; + assert {:overflow} $i0 == $0; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1410, 1} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_loop_exit: ref; +axiom (__SMACK_loop_exit == $sub.ref(0, 24764)); +procedure __SMACK_loop_exit() +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1412, 32} true; + assume {:verifier.code 1} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1412, 32} true; + assume {:verifier.code 1} true; + assert {:loopexit} false; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1412, 75} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_decls: ref; +axiom (__SMACK_decls == $sub.ref(0, 25796)); +type $mop; +procedure boogie_si_record_mop(m: $mop); +const $MOP: $mop; +var $exn: bool; +var $exnv: int; +procedure corral_atomic_begin(); +procedure corral_atomic_end(); +procedure $alloc(n: ref) returns (p: ref) +{ + call corral_atomic_begin(); + call p := $$alloc(n); + call corral_atomic_end(); +} + +procedure $malloc(n: ref) returns (p: ref) +{ + call corral_atomic_begin(); + call p := $$alloc(n); + call corral_atomic_end(); +} + +var $CurrAddr:ref; + +procedure {:inline 1} $$alloc(n: ref) returns (p: ref) +modifies $CurrAddr; +{ + assume $sge.ref.bool(n, $0.ref); + if ($sgt.ref.bool(n, $0.ref)) { + p := $CurrAddr; + havoc $CurrAddr; + assume $sge.ref.bool($sub.ref($CurrAddr, n), p); + assume $sgt.ref.bool($CurrAddr, $0.ref) && $slt.ref.bool($CurrAddr, $MALLOC_TOP); + } +} + +procedure $free(p: ref); + +const __SMACK_top_decl: ref; +axiom (__SMACK_top_decl == $sub.ref(0, 26828)); +procedure __SMACK_top_decl.ref($p0: ref); +const __SMACK_init_func_memory_model: ref; +axiom (__SMACK_init_func_memory_model == $sub.ref(0, 27860)); +procedure __SMACK_init_func_memory_model() +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1885, 3} true; + assume {:verifier.code 1} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1885, 3} true; + assume {:verifier.code 1} true; + $CurrAddr := $1024.ref; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1890, 1} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_static_init: ref; +axiom (__SMACK_static_init == $sub.ref(0, 28892)); +procedure __SMACK_static_init() +{ +$bb0: + $exn := false; + return; +} +const $u0: ref; +procedure boogie_si_record_i16(x: i16); +procedure boogie_si_record_i32(x: i32); +procedure boogie_si_record_i64(x: i64); +procedure boogie_si_record_i8(x: i8); +procedure boogie_si_record_ref(x: ref); +procedure $initialize() +{ + call __SMACK_static_init(); + call __SMACK_init_func_memory_model(); + return; +} diff --git a/dartagnan/src/test/resources/miscellaneous/thread_inlining.bpl b/dartagnan/src/test/resources/miscellaneous/thread_inlining.bpl new file mode 100644 index 0000000000..cbbee905b3 --- /dev/null +++ b/dartagnan/src/test/resources/miscellaneous/thread_inlining.bpl @@ -0,0 +1,16204 @@ +// generated by SMACK version 2.8.0 for corral +// via /usr/local/bin/smack -q -t --no-memory-splitting --clang-options= -bpl /Users/thomashaas/IdeaProjects/Dat3M/output/thread_inlining-opt.bpl /Users/thomashaas/IdeaProjects/Dat3M/output/thread_inlining-opt.ll + +// Basic types +type i1 = int; +type i5 = int; +type i6 = int; +type i8 = int; +type i16 = int; +type i24 = int; +type i32 = int; +type i33 = int; +type i40 = int; +type i48 = int; +type i56 = int; +type i64 = int; +type i80 = int; +type i88 = int; +type i96 = int; +type i128 = int; +type i160 = int; +type i256 = int; +type ref = i64; +type float; + +// Basic constants +const $0: i32; +axiom ($0 == 0); +const $1: i32; +axiom ($1 == 1); +const $0.ref: ref; +axiom ($0.ref == 0); +const $1.ref: ref; +axiom ($1.ref == 1); +const $1024.ref: ref; +axiom ($1024.ref == 1024); +// Memory model constants +const $GLOBALS_BOTTOM: ref; +const $EXTERNS_BOTTOM: ref; +const $MALLOC_TOP: ref; + +// Memory maps (1 regions) +var $M.0: [ref] ref; + +// Memory address bounds +axiom ($GLOBALS_BOTTOM == $sub.ref(0, 29924)); +axiom ($EXTERNS_BOTTOM == $add.ref($GLOBALS_BOTTOM, $sub.ref(0, 32768))); +axiom ($MALLOC_TOP == 9223372036854775807); +function {:inline} $isExternal(p: ref) returns (bool) { $slt.ref.bool(p, $EXTERNS_BOTTOM) } + +// SMT bit-vector/integer conversion +function {:builtin "(_ int2bv 64)"} $int2bv.64(i: i64) returns (bv64); +function {:builtin "bv2nat"} $bv2int.64(i: bv64) returns (i64); + +// Integer arithmetic operations +function {:inline} $add.i1(i1: i1, i2: i1) returns (i1) { (i1 + i2) } +function {:inline} $add.i5(i1: i5, i2: i5) returns (i5) { (i1 + i2) } +function {:inline} $add.i6(i1: i6, i2: i6) returns (i6) { (i1 + i2) } +function {:inline} $add.i8(i1: i8, i2: i8) returns (i8) { (i1 + i2) } +function {:inline} $add.i16(i1: i16, i2: i16) returns (i16) { (i1 + i2) } +function {:inline} $add.i24(i1: i24, i2: i24) returns (i24) { (i1 + i2) } +function {:inline} $add.i32(i1: i32, i2: i32) returns (i32) { (i1 + i2) } +function {:inline} $add.i33(i1: i33, i2: i33) returns (i33) { (i1 + i2) } +function {:inline} $add.i40(i1: i40, i2: i40) returns (i40) { (i1 + i2) } +function {:inline} $add.i48(i1: i48, i2: i48) returns (i48) { (i1 + i2) } +function {:inline} $add.i56(i1: i56, i2: i56) returns (i56) { (i1 + i2) } +function {:inline} $add.i64(i1: i64, i2: i64) returns (i64) { (i1 + i2) } +function {:inline} $add.i80(i1: i80, i2: i80) returns (i80) { (i1 + i2) } +function {:inline} $add.i88(i1: i88, i2: i88) returns (i88) { (i1 + i2) } +function {:inline} $add.i96(i1: i96, i2: i96) returns (i96) { (i1 + i2) } +function {:inline} $add.i128(i1: i128, i2: i128) returns (i128) { (i1 + i2) } +function {:inline} $add.i160(i1: i160, i2: i160) returns (i160) { (i1 + i2) } +function {:inline} $add.i256(i1: i256, i2: i256) returns (i256) { (i1 + i2) } +function {:inline} $sub.i1(i1: i1, i2: i1) returns (i1) { (i1 - i2) } +function {:inline} $sub.i5(i1: i5, i2: i5) returns (i5) { (i1 - i2) } +function {:inline} $sub.i6(i1: i6, i2: i6) returns (i6) { (i1 - i2) } +function {:inline} $sub.i8(i1: i8, i2: i8) returns (i8) { (i1 - i2) } +function {:inline} $sub.i16(i1: i16, i2: i16) returns (i16) { (i1 - i2) } +function {:inline} $sub.i24(i1: i24, i2: i24) returns (i24) { (i1 - i2) } +function {:inline} $sub.i32(i1: i32, i2: i32) returns (i32) { (i1 - i2) } +function {:inline} $sub.i33(i1: i33, i2: i33) returns (i33) { (i1 - i2) } +function {:inline} $sub.i40(i1: i40, i2: i40) returns (i40) { (i1 - i2) } +function {:inline} $sub.i48(i1: i48, i2: i48) returns (i48) { (i1 - i2) } +function {:inline} $sub.i56(i1: i56, i2: i56) returns (i56) { (i1 - i2) } +function {:inline} $sub.i64(i1: i64, i2: i64) returns (i64) { (i1 - i2) } +function {:inline} $sub.i80(i1: i80, i2: i80) returns (i80) { (i1 - i2) } +function {:inline} $sub.i88(i1: i88, i2: i88) returns (i88) { (i1 - i2) } +function {:inline} $sub.i96(i1: i96, i2: i96) returns (i96) { (i1 - i2) } +function {:inline} $sub.i128(i1: i128, i2: i128) returns (i128) { (i1 - i2) } +function {:inline} $sub.i160(i1: i160, i2: i160) returns (i160) { (i1 - i2) } +function {:inline} $sub.i256(i1: i256, i2: i256) returns (i256) { (i1 - i2) } +function {:inline} $mul.i1(i1: i1, i2: i1) returns (i1) { (i1 * i2) } +function {:inline} $mul.i5(i1: i5, i2: i5) returns (i5) { (i1 * i2) } +function {:inline} $mul.i6(i1: i6, i2: i6) returns (i6) { (i1 * i2) } +function {:inline} $mul.i8(i1: i8, i2: i8) returns (i8) { (i1 * i2) } +function {:inline} $mul.i16(i1: i16, i2: i16) returns (i16) { (i1 * i2) } +function {:inline} $mul.i24(i1: i24, i2: i24) returns (i24) { (i1 * i2) } +function {:inline} $mul.i32(i1: i32, i2: i32) returns (i32) { (i1 * i2) } +function {:inline} $mul.i33(i1: i33, i2: i33) returns (i33) { (i1 * i2) } +function {:inline} $mul.i40(i1: i40, i2: i40) returns (i40) { (i1 * i2) } +function {:inline} $mul.i48(i1: i48, i2: i48) returns (i48) { (i1 * i2) } +function {:inline} $mul.i56(i1: i56, i2: i56) returns (i56) { (i1 * i2) } +function {:inline} $mul.i64(i1: i64, i2: i64) returns (i64) { (i1 * i2) } +function {:inline} $mul.i80(i1: i80, i2: i80) returns (i80) { (i1 * i2) } +function {:inline} $mul.i88(i1: i88, i2: i88) returns (i88) { (i1 * i2) } +function {:inline} $mul.i96(i1: i96, i2: i96) returns (i96) { (i1 * i2) } +function {:inline} $mul.i128(i1: i128, i2: i128) returns (i128) { (i1 * i2) } +function {:inline} $mul.i160(i1: i160, i2: i160) returns (i160) { (i1 * i2) } +function {:inline} $mul.i256(i1: i256, i2: i256) returns (i256) { (i1 * i2) } +function {:builtin "div"} $idiv.i1(i1: i1, i2: i1) returns (i1); +function {:builtin "div"} $idiv.i5(i1: i5, i2: i5) returns (i5); +function {:builtin "div"} $idiv.i6(i1: i6, i2: i6) returns (i6); +function {:builtin "div"} $idiv.i8(i1: i8, i2: i8) returns (i8); +function {:builtin "div"} $idiv.i16(i1: i16, i2: i16) returns (i16); +function {:builtin "div"} $idiv.i24(i1: i24, i2: i24) returns (i24); +function {:builtin "div"} $idiv.i32(i1: i32, i2: i32) returns (i32); +function {:builtin "div"} $idiv.i33(i1: i33, i2: i33) returns (i33); +function {:builtin "div"} $idiv.i40(i1: i40, i2: i40) returns (i40); +function {:builtin "div"} $idiv.i48(i1: i48, i2: i48) returns (i48); +function {:builtin "div"} $idiv.i56(i1: i56, i2: i56) returns (i56); +function {:builtin "div"} $idiv.i64(i1: i64, i2: i64) returns (i64); +function {:builtin "div"} $idiv.i80(i1: i80, i2: i80) returns (i80); +function {:builtin "div"} $idiv.i88(i1: i88, i2: i88) returns (i88); +function {:builtin "div"} $idiv.i96(i1: i96, i2: i96) returns (i96); +function {:builtin "div"} $idiv.i128(i1: i128, i2: i128) returns (i128); +function {:builtin "div"} $idiv.i160(i1: i160, i2: i160) returns (i160); +function {:builtin "div"} $idiv.i256(i1: i256, i2: i256) returns (i256); +function {:inline} $sdiv.i1(i1: i1, i2: i1) returns (i1) { $idiv.i1(i1, i2) } +function {:inline} $sdiv.i5(i1: i5, i2: i5) returns (i5) { $idiv.i5(i1, i2) } +function {:inline} $sdiv.i6(i1: i6, i2: i6) returns (i6) { $idiv.i6(i1, i2) } +function {:inline} $sdiv.i8(i1: i8, i2: i8) returns (i8) { $idiv.i8(i1, i2) } +function {:inline} $sdiv.i16(i1: i16, i2: i16) returns (i16) { $idiv.i16(i1, i2) } +function {:inline} $sdiv.i24(i1: i24, i2: i24) returns (i24) { $idiv.i24(i1, i2) } +function {:inline} $sdiv.i32(i1: i32, i2: i32) returns (i32) { $idiv.i32(i1, i2) } +function {:inline} $sdiv.i33(i1: i33, i2: i33) returns (i33) { $idiv.i33(i1, i2) } +function {:inline} $sdiv.i40(i1: i40, i2: i40) returns (i40) { $idiv.i40(i1, i2) } +function {:inline} $sdiv.i48(i1: i48, i2: i48) returns (i48) { $idiv.i48(i1, i2) } +function {:inline} $sdiv.i56(i1: i56, i2: i56) returns (i56) { $idiv.i56(i1, i2) } +function {:inline} $sdiv.i64(i1: i64, i2: i64) returns (i64) { $idiv.i64(i1, i2) } +function {:inline} $sdiv.i80(i1: i80, i2: i80) returns (i80) { $idiv.i80(i1, i2) } +function {:inline} $sdiv.i88(i1: i88, i2: i88) returns (i88) { $idiv.i88(i1, i2) } +function {:inline} $sdiv.i96(i1: i96, i2: i96) returns (i96) { $idiv.i96(i1, i2) } +function {:inline} $sdiv.i128(i1: i128, i2: i128) returns (i128) { $idiv.i128(i1, i2) } +function {:inline} $sdiv.i160(i1: i160, i2: i160) returns (i160) { $idiv.i160(i1, i2) } +function {:inline} $sdiv.i256(i1: i256, i2: i256) returns (i256) { $idiv.i256(i1, i2) } +function {:inline} $udiv.i1(i1: i1, i2: i1) returns (i1) { $idiv.i1(i1, i2) } +function {:inline} $udiv.i5(i1: i5, i2: i5) returns (i5) { $idiv.i5(i1, i2) } +function {:inline} $udiv.i6(i1: i6, i2: i6) returns (i6) { $idiv.i6(i1, i2) } +function {:inline} $udiv.i8(i1: i8, i2: i8) returns (i8) { $idiv.i8(i1, i2) } +function {:inline} $udiv.i16(i1: i16, i2: i16) returns (i16) { $idiv.i16(i1, i2) } +function {:inline} $udiv.i24(i1: i24, i2: i24) returns (i24) { $idiv.i24(i1, i2) } +function {:inline} $udiv.i32(i1: i32, i2: i32) returns (i32) { $idiv.i32(i1, i2) } +function {:inline} $udiv.i33(i1: i33, i2: i33) returns (i33) { $idiv.i33(i1, i2) } +function {:inline} $udiv.i40(i1: i40, i2: i40) returns (i40) { $idiv.i40(i1, i2) } +function {:inline} $udiv.i48(i1: i48, i2: i48) returns (i48) { $idiv.i48(i1, i2) } +function {:inline} $udiv.i56(i1: i56, i2: i56) returns (i56) { $idiv.i56(i1, i2) } +function {:inline} $udiv.i64(i1: i64, i2: i64) returns (i64) { $idiv.i64(i1, i2) } +function {:inline} $udiv.i80(i1: i80, i2: i80) returns (i80) { $idiv.i80(i1, i2) } +function {:inline} $udiv.i88(i1: i88, i2: i88) returns (i88) { $idiv.i88(i1, i2) } +function {:inline} $udiv.i96(i1: i96, i2: i96) returns (i96) { $idiv.i96(i1, i2) } +function {:inline} $udiv.i128(i1: i128, i2: i128) returns (i128) { $idiv.i128(i1, i2) } +function {:inline} $udiv.i160(i1: i160, i2: i160) returns (i160) { $idiv.i160(i1, i2) } +function {:inline} $udiv.i256(i1: i256, i2: i256) returns (i256) { $idiv.i256(i1, i2) } +function {:builtin "mod"} $smod.i1(i1: i1, i2: i1) returns (i1); +function {:builtin "mod"} $smod.i5(i1: i5, i2: i5) returns (i5); +function {:builtin "mod"} $smod.i6(i1: i6, i2: i6) returns (i6); +function {:builtin "mod"} $smod.i8(i1: i8, i2: i8) returns (i8); +function {:builtin "mod"} $smod.i16(i1: i16, i2: i16) returns (i16); +function {:builtin "mod"} $smod.i24(i1: i24, i2: i24) returns (i24); +function {:builtin "mod"} $smod.i32(i1: i32, i2: i32) returns (i32); +function {:builtin "mod"} $smod.i33(i1: i33, i2: i33) returns (i33); +function {:builtin "mod"} $smod.i40(i1: i40, i2: i40) returns (i40); +function {:builtin "mod"} $smod.i48(i1: i48, i2: i48) returns (i48); +function {:builtin "mod"} $smod.i56(i1: i56, i2: i56) returns (i56); +function {:builtin "mod"} $smod.i64(i1: i64, i2: i64) returns (i64); +function {:builtin "mod"} $smod.i80(i1: i80, i2: i80) returns (i80); +function {:builtin "mod"} $smod.i88(i1: i88, i2: i88) returns (i88); +function {:builtin "mod"} $smod.i96(i1: i96, i2: i96) returns (i96); +function {:builtin "mod"} $smod.i128(i1: i128, i2: i128) returns (i128); +function {:builtin "mod"} $smod.i160(i1: i160, i2: i160) returns (i160); +function {:builtin "mod"} $smod.i256(i1: i256, i2: i256) returns (i256); +function {:inline} $srem.i1(i1: i1, i2: i1) returns (i1) { (if ($ne.i1.bool($smod.i1(i1, i2), 0) && $slt.i1.bool(i1, 0)) then $sub.i1($smod.i1(i1, i2), $smax.i1(i2, $sub.i1(0, i2))) else $smod.i1(i1, i2)) } +function {:inline} $srem.i5(i1: i5, i2: i5) returns (i5) { (if ($ne.i5.bool($smod.i5(i1, i2), 0) && $slt.i5.bool(i1, 0)) then $sub.i5($smod.i5(i1, i2), $smax.i5(i2, $sub.i5(0, i2))) else $smod.i5(i1, i2)) } +function {:inline} $srem.i6(i1: i6, i2: i6) returns (i6) { (if ($ne.i6.bool($smod.i6(i1, i2), 0) && $slt.i6.bool(i1, 0)) then $sub.i6($smod.i6(i1, i2), $smax.i6(i2, $sub.i6(0, i2))) else $smod.i6(i1, i2)) } +function {:inline} $srem.i8(i1: i8, i2: i8) returns (i8) { (if ($ne.i8.bool($smod.i8(i1, i2), 0) && $slt.i8.bool(i1, 0)) then $sub.i8($smod.i8(i1, i2), $smax.i8(i2, $sub.i8(0, i2))) else $smod.i8(i1, i2)) } +function {:inline} $srem.i16(i1: i16, i2: i16) returns (i16) { (if ($ne.i16.bool($smod.i16(i1, i2), 0) && $slt.i16.bool(i1, 0)) then $sub.i16($smod.i16(i1, i2), $smax.i16(i2, $sub.i16(0, i2))) else $smod.i16(i1, i2)) } +function {:inline} $srem.i24(i1: i24, i2: i24) returns (i24) { (if ($ne.i24.bool($smod.i24(i1, i2), 0) && $slt.i24.bool(i1, 0)) then $sub.i24($smod.i24(i1, i2), $smax.i24(i2, $sub.i24(0, i2))) else $smod.i24(i1, i2)) } +function {:inline} $srem.i32(i1: i32, i2: i32) returns (i32) { (if ($ne.i32.bool($smod.i32(i1, i2), 0) && $slt.i32.bool(i1, 0)) then $sub.i32($smod.i32(i1, i2), $smax.i32(i2, $sub.i32(0, i2))) else $smod.i32(i1, i2)) } +function {:inline} $srem.i33(i1: i33, i2: i33) returns (i33) { (if ($ne.i33.bool($smod.i33(i1, i2), 0) && $slt.i33.bool(i1, 0)) then $sub.i33($smod.i33(i1, i2), $smax.i33(i2, $sub.i33(0, i2))) else $smod.i33(i1, i2)) } +function {:inline} $srem.i40(i1: i40, i2: i40) returns (i40) { (if ($ne.i40.bool($smod.i40(i1, i2), 0) && $slt.i40.bool(i1, 0)) then $sub.i40($smod.i40(i1, i2), $smax.i40(i2, $sub.i40(0, i2))) else $smod.i40(i1, i2)) } +function {:inline} $srem.i48(i1: i48, i2: i48) returns (i48) { (if ($ne.i48.bool($smod.i48(i1, i2), 0) && $slt.i48.bool(i1, 0)) then $sub.i48($smod.i48(i1, i2), $smax.i48(i2, $sub.i48(0, i2))) else $smod.i48(i1, i2)) } +function {:inline} $srem.i56(i1: i56, i2: i56) returns (i56) { (if ($ne.i56.bool($smod.i56(i1, i2), 0) && $slt.i56.bool(i1, 0)) then $sub.i56($smod.i56(i1, i2), $smax.i56(i2, $sub.i56(0, i2))) else $smod.i56(i1, i2)) } +function {:inline} $srem.i64(i1: i64, i2: i64) returns (i64) { (if ($ne.i64.bool($smod.i64(i1, i2), 0) && $slt.i64.bool(i1, 0)) then $sub.i64($smod.i64(i1, i2), $smax.i64(i2, $sub.i64(0, i2))) else $smod.i64(i1, i2)) } +function {:inline} $srem.i80(i1: i80, i2: i80) returns (i80) { (if ($ne.i80.bool($smod.i80(i1, i2), 0) && $slt.i80.bool(i1, 0)) then $sub.i80($smod.i80(i1, i2), $smax.i80(i2, $sub.i80(0, i2))) else $smod.i80(i1, i2)) } +function {:inline} $srem.i88(i1: i88, i2: i88) returns (i88) { (if ($ne.i88.bool($smod.i88(i1, i2), 0) && $slt.i88.bool(i1, 0)) then $sub.i88($smod.i88(i1, i2), $smax.i88(i2, $sub.i88(0, i2))) else $smod.i88(i1, i2)) } +function {:inline} $srem.i96(i1: i96, i2: i96) returns (i96) { (if ($ne.i96.bool($smod.i96(i1, i2), 0) && $slt.i96.bool(i1, 0)) then $sub.i96($smod.i96(i1, i2), $smax.i96(i2, $sub.i96(0, i2))) else $smod.i96(i1, i2)) } +function {:inline} $srem.i128(i1: i128, i2: i128) returns (i128) { (if ($ne.i128.bool($smod.i128(i1, i2), 0) && $slt.i128.bool(i1, 0)) then $sub.i128($smod.i128(i1, i2), $smax.i128(i2, $sub.i128(0, i2))) else $smod.i128(i1, i2)) } +function {:inline} $srem.i160(i1: i160, i2: i160) returns (i160) { (if ($ne.i160.bool($smod.i160(i1, i2), 0) && $slt.i160.bool(i1, 0)) then $sub.i160($smod.i160(i1, i2), $smax.i160(i2, $sub.i160(0, i2))) else $smod.i160(i1, i2)) } +function {:inline} $srem.i256(i1: i256, i2: i256) returns (i256) { (if ($ne.i256.bool($smod.i256(i1, i2), 0) && $slt.i256.bool(i1, 0)) then $sub.i256($smod.i256(i1, i2), $smax.i256(i2, $sub.i256(0, i2))) else $smod.i256(i1, i2)) } +function {:inline} $urem.i1(i1: i1, i2: i1) returns (i1) { $smod.i1(i1, i2) } +function {:inline} $urem.i5(i1: i5, i2: i5) returns (i5) { $smod.i5(i1, i2) } +function {:inline} $urem.i6(i1: i6, i2: i6) returns (i6) { $smod.i6(i1, i2) } +function {:inline} $urem.i8(i1: i8, i2: i8) returns (i8) { $smod.i8(i1, i2) } +function {:inline} $urem.i16(i1: i16, i2: i16) returns (i16) { $smod.i16(i1, i2) } +function {:inline} $urem.i24(i1: i24, i2: i24) returns (i24) { $smod.i24(i1, i2) } +function {:inline} $urem.i32(i1: i32, i2: i32) returns (i32) { $smod.i32(i1, i2) } +function {:inline} $urem.i33(i1: i33, i2: i33) returns (i33) { $smod.i33(i1, i2) } +function {:inline} $urem.i40(i1: i40, i2: i40) returns (i40) { $smod.i40(i1, i2) } +function {:inline} $urem.i48(i1: i48, i2: i48) returns (i48) { $smod.i48(i1, i2) } +function {:inline} $urem.i56(i1: i56, i2: i56) returns (i56) { $smod.i56(i1, i2) } +function {:inline} $urem.i64(i1: i64, i2: i64) returns (i64) { $smod.i64(i1, i2) } +function {:inline} $urem.i80(i1: i80, i2: i80) returns (i80) { $smod.i80(i1, i2) } +function {:inline} $urem.i88(i1: i88, i2: i88) returns (i88) { $smod.i88(i1, i2) } +function {:inline} $urem.i96(i1: i96, i2: i96) returns (i96) { $smod.i96(i1, i2) } +function {:inline} $urem.i128(i1: i128, i2: i128) returns (i128) { $smod.i128(i1, i2) } +function {:inline} $urem.i160(i1: i160, i2: i160) returns (i160) { $smod.i160(i1, i2) } +function {:inline} $urem.i256(i1: i256, i2: i256) returns (i256) { $smod.i256(i1, i2) } +function $shl.i1(i1: i1, i2: i1) returns (i1); +function $shl.i5(i1: i5, i2: i5) returns (i5); +function $shl.i6(i1: i6, i2: i6) returns (i6); +function $shl.i8(i1: i8, i2: i8) returns (i8); +function $shl.i16(i1: i16, i2: i16) returns (i16); +function $shl.i24(i1: i24, i2: i24) returns (i24); +function $shl.i32(i1: i32, i2: i32) returns (i32); +function $shl.i33(i1: i33, i2: i33) returns (i33); +function $shl.i40(i1: i40, i2: i40) returns (i40); +function $shl.i48(i1: i48, i2: i48) returns (i48); +function $shl.i56(i1: i56, i2: i56) returns (i56); +function $shl.i64(i1: i64, i2: i64) returns (i64); +function $shl.i80(i1: i80, i2: i80) returns (i80); +function $shl.i88(i1: i88, i2: i88) returns (i88); +function $shl.i96(i1: i96, i2: i96) returns (i96); +function $shl.i128(i1: i128, i2: i128) returns (i128); +function $shl.i160(i1: i160, i2: i160) returns (i160); +function $shl.i256(i1: i256, i2: i256) returns (i256); +function $lshr.i1(i1: i1, i2: i1) returns (i1); +function $lshr.i5(i1: i5, i2: i5) returns (i5); +function $lshr.i6(i1: i6, i2: i6) returns (i6); +function $lshr.i8(i1: i8, i2: i8) returns (i8); +function $lshr.i16(i1: i16, i2: i16) returns (i16); +function $lshr.i24(i1: i24, i2: i24) returns (i24); +function $lshr.i32(i1: i32, i2: i32) returns (i32); +function $lshr.i33(i1: i33, i2: i33) returns (i33); +function $lshr.i40(i1: i40, i2: i40) returns (i40); +function $lshr.i48(i1: i48, i2: i48) returns (i48); +function $lshr.i56(i1: i56, i2: i56) returns (i56); +function $lshr.i64(i1: i64, i2: i64) returns (i64); +function $lshr.i80(i1: i80, i2: i80) returns (i80); +function $lshr.i88(i1: i88, i2: i88) returns (i88); +function $lshr.i96(i1: i96, i2: i96) returns (i96); +function $lshr.i128(i1: i128, i2: i128) returns (i128); +function $lshr.i160(i1: i160, i2: i160) returns (i160); +function $lshr.i256(i1: i256, i2: i256) returns (i256); +function $ashr.i1(i1: i1, i2: i1) returns (i1); +function $ashr.i5(i1: i5, i2: i5) returns (i5); +function $ashr.i6(i1: i6, i2: i6) returns (i6); +function $ashr.i8(i1: i8, i2: i8) returns (i8); +function $ashr.i16(i1: i16, i2: i16) returns (i16); +function $ashr.i24(i1: i24, i2: i24) returns (i24); +function $ashr.i32(i1: i32, i2: i32) returns (i32); +function $ashr.i33(i1: i33, i2: i33) returns (i33); +function $ashr.i40(i1: i40, i2: i40) returns (i40); +function $ashr.i48(i1: i48, i2: i48) returns (i48); +function $ashr.i56(i1: i56, i2: i56) returns (i56); +function $ashr.i64(i1: i64, i2: i64) returns (i64); +function $ashr.i80(i1: i80, i2: i80) returns (i80); +function $ashr.i88(i1: i88, i2: i88) returns (i88); +function $ashr.i96(i1: i96, i2: i96) returns (i96); +function $ashr.i128(i1: i128, i2: i128) returns (i128); +function $ashr.i160(i1: i160, i2: i160) returns (i160); +function $ashr.i256(i1: i256, i2: i256) returns (i256); +function $and.i1(i1: i1, i2: i1) returns (i1); +function $and.i5(i1: i5, i2: i5) returns (i5); +function $and.i6(i1: i6, i2: i6) returns (i6); +function $and.i8(i1: i8, i2: i8) returns (i8); +function $and.i16(i1: i16, i2: i16) returns (i16); +function $and.i24(i1: i24, i2: i24) returns (i24); +function $and.i32(i1: i32, i2: i32) returns (i32); +function $and.i33(i1: i33, i2: i33) returns (i33); +function $and.i40(i1: i40, i2: i40) returns (i40); +function $and.i48(i1: i48, i2: i48) returns (i48); +function $and.i56(i1: i56, i2: i56) returns (i56); +function $and.i64(i1: i64, i2: i64) returns (i64); +function $and.i80(i1: i80, i2: i80) returns (i80); +function $and.i88(i1: i88, i2: i88) returns (i88); +function $and.i96(i1: i96, i2: i96) returns (i96); +function $and.i128(i1: i128, i2: i128) returns (i128); +function $and.i160(i1: i160, i2: i160) returns (i160); +function $and.i256(i1: i256, i2: i256) returns (i256); +function $or.i1(i1: i1, i2: i1) returns (i1); +function $or.i5(i1: i5, i2: i5) returns (i5); +function $or.i6(i1: i6, i2: i6) returns (i6); +function $or.i8(i1: i8, i2: i8) returns (i8); +function $or.i16(i1: i16, i2: i16) returns (i16); +function $or.i24(i1: i24, i2: i24) returns (i24); +function $or.i32(i1: i32, i2: i32) returns (i32); +function $or.i33(i1: i33, i2: i33) returns (i33); +function $or.i40(i1: i40, i2: i40) returns (i40); +function $or.i48(i1: i48, i2: i48) returns (i48); +function $or.i56(i1: i56, i2: i56) returns (i56); +function $or.i64(i1: i64, i2: i64) returns (i64); +function $or.i80(i1: i80, i2: i80) returns (i80); +function $or.i88(i1: i88, i2: i88) returns (i88); +function $or.i96(i1: i96, i2: i96) returns (i96); +function $or.i128(i1: i128, i2: i128) returns (i128); +function $or.i160(i1: i160, i2: i160) returns (i160); +function $or.i256(i1: i256, i2: i256) returns (i256); +function $xor.i1(i1: i1, i2: i1) returns (i1); +function $xor.i5(i1: i5, i2: i5) returns (i5); +function $xor.i6(i1: i6, i2: i6) returns (i6); +function $xor.i8(i1: i8, i2: i8) returns (i8); +function $xor.i16(i1: i16, i2: i16) returns (i16); +function $xor.i24(i1: i24, i2: i24) returns (i24); +function $xor.i32(i1: i32, i2: i32) returns (i32); +function $xor.i33(i1: i33, i2: i33) returns (i33); +function $xor.i40(i1: i40, i2: i40) returns (i40); +function $xor.i48(i1: i48, i2: i48) returns (i48); +function $xor.i56(i1: i56, i2: i56) returns (i56); +function $xor.i64(i1: i64, i2: i64) returns (i64); +function $xor.i80(i1: i80, i2: i80) returns (i80); +function $xor.i88(i1: i88, i2: i88) returns (i88); +function $xor.i96(i1: i96, i2: i96) returns (i96); +function $xor.i128(i1: i128, i2: i128) returns (i128); +function $xor.i160(i1: i160, i2: i160) returns (i160); +function $xor.i256(i1: i256, i2: i256) returns (i256); +function $nand.i1(i1: i1, i2: i1) returns (i1); +function $nand.i5(i1: i5, i2: i5) returns (i5); +function $nand.i6(i1: i6, i2: i6) returns (i6); +function $nand.i8(i1: i8, i2: i8) returns (i8); +function $nand.i16(i1: i16, i2: i16) returns (i16); +function $nand.i24(i1: i24, i2: i24) returns (i24); +function $nand.i32(i1: i32, i2: i32) returns (i32); +function $nand.i33(i1: i33, i2: i33) returns (i33); +function $nand.i40(i1: i40, i2: i40) returns (i40); +function $nand.i48(i1: i48, i2: i48) returns (i48); +function $nand.i56(i1: i56, i2: i56) returns (i56); +function $nand.i64(i1: i64, i2: i64) returns (i64); +function $nand.i80(i1: i80, i2: i80) returns (i80); +function $nand.i88(i1: i88, i2: i88) returns (i88); +function $nand.i96(i1: i96, i2: i96) returns (i96); +function $nand.i128(i1: i128, i2: i128) returns (i128); +function $nand.i160(i1: i160, i2: i160) returns (i160); +function $nand.i256(i1: i256, i2: i256) returns (i256); +function $not.i1(i: i1) returns (i1); +function $not.i5(i: i5) returns (i5); +function $not.i6(i: i6) returns (i6); +function $not.i8(i: i8) returns (i8); +function $not.i16(i: i16) returns (i16); +function $not.i24(i: i24) returns (i24); +function $not.i32(i: i32) returns (i32); +function $not.i33(i: i33) returns (i33); +function $not.i40(i: i40) returns (i40); +function $not.i48(i: i48) returns (i48); +function $not.i56(i: i56) returns (i56); +function $not.i64(i: i64) returns (i64); +function $not.i80(i: i80) returns (i80); +function $not.i88(i: i88) returns (i88); +function $not.i96(i: i96) returns (i96); +function $not.i128(i: i128) returns (i128); +function $not.i160(i: i160) returns (i160); +function $not.i256(i: i256) returns (i256); +function {:inline} $smin.i1(i1: i1, i2: i1) returns (i1) { (if $slt.i1.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i5(i1: i5, i2: i5) returns (i5) { (if $slt.i5.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i6(i1: i6, i2: i6) returns (i6) { (if $slt.i6.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i8(i1: i8, i2: i8) returns (i8) { (if $slt.i8.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i16(i1: i16, i2: i16) returns (i16) { (if $slt.i16.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i24(i1: i24, i2: i24) returns (i24) { (if $slt.i24.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i32(i1: i32, i2: i32) returns (i32) { (if $slt.i32.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i33(i1: i33, i2: i33) returns (i33) { (if $slt.i33.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i40(i1: i40, i2: i40) returns (i40) { (if $slt.i40.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i48(i1: i48, i2: i48) returns (i48) { (if $slt.i48.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i56(i1: i56, i2: i56) returns (i56) { (if $slt.i56.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i64(i1: i64, i2: i64) returns (i64) { (if $slt.i64.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i80(i1: i80, i2: i80) returns (i80) { (if $slt.i80.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i88(i1: i88, i2: i88) returns (i88) { (if $slt.i88.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i96(i1: i96, i2: i96) returns (i96) { (if $slt.i96.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i128(i1: i128, i2: i128) returns (i128) { (if $slt.i128.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i160(i1: i160, i2: i160) returns (i160) { (if $slt.i160.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i256(i1: i256, i2: i256) returns (i256) { (if $slt.i256.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i1(i1: i1, i2: i1) returns (i1) { (if $sgt.i1.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i5(i1: i5, i2: i5) returns (i5) { (if $sgt.i5.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i6(i1: i6, i2: i6) returns (i6) { (if $sgt.i6.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i8(i1: i8, i2: i8) returns (i8) { (if $sgt.i8.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i16(i1: i16, i2: i16) returns (i16) { (if $sgt.i16.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i24(i1: i24, i2: i24) returns (i24) { (if $sgt.i24.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i32(i1: i32, i2: i32) returns (i32) { (if $sgt.i32.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i33(i1: i33, i2: i33) returns (i33) { (if $sgt.i33.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i40(i1: i40, i2: i40) returns (i40) { (if $sgt.i40.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i48(i1: i48, i2: i48) returns (i48) { (if $sgt.i48.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i56(i1: i56, i2: i56) returns (i56) { (if $sgt.i56.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i64(i1: i64, i2: i64) returns (i64) { (if $sgt.i64.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i80(i1: i80, i2: i80) returns (i80) { (if $sgt.i80.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i88(i1: i88, i2: i88) returns (i88) { (if $sgt.i88.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i96(i1: i96, i2: i96) returns (i96) { (if $sgt.i96.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i128(i1: i128, i2: i128) returns (i128) { (if $sgt.i128.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i160(i1: i160, i2: i160) returns (i160) { (if $sgt.i160.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i256(i1: i256, i2: i256) returns (i256) { (if $sgt.i256.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i1(i1: i1, i2: i1) returns (i1) { (if $ult.i1.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i5(i1: i5, i2: i5) returns (i5) { (if $ult.i5.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i6(i1: i6, i2: i6) returns (i6) { (if $ult.i6.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i8(i1: i8, i2: i8) returns (i8) { (if $ult.i8.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i16(i1: i16, i2: i16) returns (i16) { (if $ult.i16.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i24(i1: i24, i2: i24) returns (i24) { (if $ult.i24.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i32(i1: i32, i2: i32) returns (i32) { (if $ult.i32.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i33(i1: i33, i2: i33) returns (i33) { (if $ult.i33.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i40(i1: i40, i2: i40) returns (i40) { (if $ult.i40.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i48(i1: i48, i2: i48) returns (i48) { (if $ult.i48.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i56(i1: i56, i2: i56) returns (i56) { (if $ult.i56.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i64(i1: i64, i2: i64) returns (i64) { (if $ult.i64.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i80(i1: i80, i2: i80) returns (i80) { (if $ult.i80.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i88(i1: i88, i2: i88) returns (i88) { (if $ult.i88.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i96(i1: i96, i2: i96) returns (i96) { (if $ult.i96.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i128(i1: i128, i2: i128) returns (i128) { (if $ult.i128.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i160(i1: i160, i2: i160) returns (i160) { (if $ult.i160.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i256(i1: i256, i2: i256) returns (i256) { (if $ult.i256.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i1(i1: i1, i2: i1) returns (i1) { (if $ugt.i1.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i5(i1: i5, i2: i5) returns (i5) { (if $ugt.i5.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i6(i1: i6, i2: i6) returns (i6) { (if $ugt.i6.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i8(i1: i8, i2: i8) returns (i8) { (if $ugt.i8.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i16(i1: i16, i2: i16) returns (i16) { (if $ugt.i16.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i24(i1: i24, i2: i24) returns (i24) { (if $ugt.i24.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i32(i1: i32, i2: i32) returns (i32) { (if $ugt.i32.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i33(i1: i33, i2: i33) returns (i33) { (if $ugt.i33.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i40(i1: i40, i2: i40) returns (i40) { (if $ugt.i40.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i48(i1: i48, i2: i48) returns (i48) { (if $ugt.i48.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i56(i1: i56, i2: i56) returns (i56) { (if $ugt.i56.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i64(i1: i64, i2: i64) returns (i64) { (if $ugt.i64.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i80(i1: i80, i2: i80) returns (i80) { (if $ugt.i80.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i88(i1: i88, i2: i88) returns (i88) { (if $ugt.i88.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i96(i1: i96, i2: i96) returns (i96) { (if $ugt.i96.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i128(i1: i128, i2: i128) returns (i128) { (if $ugt.i128.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i160(i1: i160, i2: i160) returns (i160) { (if $ugt.i160.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i256(i1: i256, i2: i256) returns (i256) { (if $ugt.i256.bool(i1, i2) then i1 else i2) } +axiom ($and.i1(0, 0) == 0); +axiom ($or.i1(0, 0) == 0); +axiom ($xor.i1(0, 0) == 0); +axiom ($and.i1(0, 1) == 0); +axiom ($or.i1(0, 1) == 1); +axiom ($xor.i1(0, 1) == 1); +axiom ($and.i1(1, 0) == 0); +axiom ($or.i1(1, 0) == 1); +axiom ($xor.i1(1, 0) == 1); +axiom ($and.i1(1, 1) == 1); +axiom ($or.i1(1, 1) == 1); +axiom ($xor.i1(1, 1) == 0); +axiom ($and.i32(32, 16) == 0); +// Integer predicates +function {:inline} $ule.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i1(i1: i1, i2: i1) returns (i1) { (if $ule.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i5(i1: i5, i2: i5) returns (i1) { (if $ule.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i6(i1: i6, i2: i6) returns (i1) { (if $ule.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i8(i1: i8, i2: i8) returns (i1) { (if $ule.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i16(i1: i16, i2: i16) returns (i1) { (if $ule.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i24(i1: i24, i2: i24) returns (i1) { (if $ule.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i32(i1: i32, i2: i32) returns (i1) { (if $ule.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i33(i1: i33, i2: i33) returns (i1) { (if $ule.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i40(i1: i40, i2: i40) returns (i1) { (if $ule.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i48(i1: i48, i2: i48) returns (i1) { (if $ule.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i56(i1: i56, i2: i56) returns (i1) { (if $ule.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i64(i1: i64, i2: i64) returns (i1) { (if $ule.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i80(i1: i80, i2: i80) returns (i1) { (if $ule.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i88(i1: i88, i2: i88) returns (i1) { (if $ule.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i96(i1: i96, i2: i96) returns (i1) { (if $ule.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i128(i1: i128, i2: i128) returns (i1) { (if $ule.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i160(i1: i160, i2: i160) returns (i1) { (if $ule.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i256(i1: i256, i2: i256) returns (i1) { (if $ule.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 < i2) } +function {:inline} $ult.i1(i1: i1, i2: i1) returns (i1) { (if $ult.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 < i2) } +function {:inline} $ult.i5(i1: i5, i2: i5) returns (i1) { (if $ult.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 < i2) } +function {:inline} $ult.i6(i1: i6, i2: i6) returns (i1) { (if $ult.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 < i2) } +function {:inline} $ult.i8(i1: i8, i2: i8) returns (i1) { (if $ult.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 < i2) } +function {:inline} $ult.i16(i1: i16, i2: i16) returns (i1) { (if $ult.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 < i2) } +function {:inline} $ult.i24(i1: i24, i2: i24) returns (i1) { (if $ult.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 < i2) } +function {:inline} $ult.i32(i1: i32, i2: i32) returns (i1) { (if $ult.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 < i2) } +function {:inline} $ult.i33(i1: i33, i2: i33) returns (i1) { (if $ult.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 < i2) } +function {:inline} $ult.i40(i1: i40, i2: i40) returns (i1) { (if $ult.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 < i2) } +function {:inline} $ult.i48(i1: i48, i2: i48) returns (i1) { (if $ult.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 < i2) } +function {:inline} $ult.i56(i1: i56, i2: i56) returns (i1) { (if $ult.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 < i2) } +function {:inline} $ult.i64(i1: i64, i2: i64) returns (i1) { (if $ult.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 < i2) } +function {:inline} $ult.i80(i1: i80, i2: i80) returns (i1) { (if $ult.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 < i2) } +function {:inline} $ult.i88(i1: i88, i2: i88) returns (i1) { (if $ult.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 < i2) } +function {:inline} $ult.i96(i1: i96, i2: i96) returns (i1) { (if $ult.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 < i2) } +function {:inline} $ult.i128(i1: i128, i2: i128) returns (i1) { (if $ult.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 < i2) } +function {:inline} $ult.i160(i1: i160, i2: i160) returns (i1) { (if $ult.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 < i2) } +function {:inline} $ult.i256(i1: i256, i2: i256) returns (i1) { (if $ult.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i1(i1: i1, i2: i1) returns (i1) { (if $uge.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i5(i1: i5, i2: i5) returns (i1) { (if $uge.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i6(i1: i6, i2: i6) returns (i1) { (if $uge.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i8(i1: i8, i2: i8) returns (i1) { (if $uge.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i16(i1: i16, i2: i16) returns (i1) { (if $uge.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i24(i1: i24, i2: i24) returns (i1) { (if $uge.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i32(i1: i32, i2: i32) returns (i1) { (if $uge.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i33(i1: i33, i2: i33) returns (i1) { (if $uge.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i40(i1: i40, i2: i40) returns (i1) { (if $uge.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i48(i1: i48, i2: i48) returns (i1) { (if $uge.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i56(i1: i56, i2: i56) returns (i1) { (if $uge.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i64(i1: i64, i2: i64) returns (i1) { (if $uge.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i80(i1: i80, i2: i80) returns (i1) { (if $uge.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i88(i1: i88, i2: i88) returns (i1) { (if $uge.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i96(i1: i96, i2: i96) returns (i1) { (if $uge.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i128(i1: i128, i2: i128) returns (i1) { (if $uge.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i160(i1: i160, i2: i160) returns (i1) { (if $uge.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i256(i1: i256, i2: i256) returns (i1) { (if $uge.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i1(i1: i1, i2: i1) returns (i1) { (if $ugt.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i5(i1: i5, i2: i5) returns (i1) { (if $ugt.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i6(i1: i6, i2: i6) returns (i1) { (if $ugt.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i8(i1: i8, i2: i8) returns (i1) { (if $ugt.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i16(i1: i16, i2: i16) returns (i1) { (if $ugt.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i24(i1: i24, i2: i24) returns (i1) { (if $ugt.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i32(i1: i32, i2: i32) returns (i1) { (if $ugt.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i33(i1: i33, i2: i33) returns (i1) { (if $ugt.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i40(i1: i40, i2: i40) returns (i1) { (if $ugt.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i48(i1: i48, i2: i48) returns (i1) { (if $ugt.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i56(i1: i56, i2: i56) returns (i1) { (if $ugt.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i64(i1: i64, i2: i64) returns (i1) { (if $ugt.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i80(i1: i80, i2: i80) returns (i1) { (if $ugt.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i88(i1: i88, i2: i88) returns (i1) { (if $ugt.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i96(i1: i96, i2: i96) returns (i1) { (if $ugt.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i128(i1: i128, i2: i128) returns (i1) { (if $ugt.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i160(i1: i160, i2: i160) returns (i1) { (if $ugt.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i256(i1: i256, i2: i256) returns (i1) { (if $ugt.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i1(i1: i1, i2: i1) returns (i1) { (if $sle.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i5(i1: i5, i2: i5) returns (i1) { (if $sle.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i6(i1: i6, i2: i6) returns (i1) { (if $sle.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i8(i1: i8, i2: i8) returns (i1) { (if $sle.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i16(i1: i16, i2: i16) returns (i1) { (if $sle.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i24(i1: i24, i2: i24) returns (i1) { (if $sle.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i32(i1: i32, i2: i32) returns (i1) { (if $sle.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i33(i1: i33, i2: i33) returns (i1) { (if $sle.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i40(i1: i40, i2: i40) returns (i1) { (if $sle.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i48(i1: i48, i2: i48) returns (i1) { (if $sle.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i56(i1: i56, i2: i56) returns (i1) { (if $sle.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i64(i1: i64, i2: i64) returns (i1) { (if $sle.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i80(i1: i80, i2: i80) returns (i1) { (if $sle.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i88(i1: i88, i2: i88) returns (i1) { (if $sle.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i96(i1: i96, i2: i96) returns (i1) { (if $sle.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i128(i1: i128, i2: i128) returns (i1) { (if $sle.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i160(i1: i160, i2: i160) returns (i1) { (if $sle.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i256(i1: i256, i2: i256) returns (i1) { (if $sle.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 < i2) } +function {:inline} $slt.i1(i1: i1, i2: i1) returns (i1) { (if $slt.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 < i2) } +function {:inline} $slt.i5(i1: i5, i2: i5) returns (i1) { (if $slt.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 < i2) } +function {:inline} $slt.i6(i1: i6, i2: i6) returns (i1) { (if $slt.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 < i2) } +function {:inline} $slt.i8(i1: i8, i2: i8) returns (i1) { (if $slt.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 < i2) } +function {:inline} $slt.i16(i1: i16, i2: i16) returns (i1) { (if $slt.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 < i2) } +function {:inline} $slt.i24(i1: i24, i2: i24) returns (i1) { (if $slt.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 < i2) } +function {:inline} $slt.i32(i1: i32, i2: i32) returns (i1) { (if $slt.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 < i2) } +function {:inline} $slt.i33(i1: i33, i2: i33) returns (i1) { (if $slt.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 < i2) } +function {:inline} $slt.i40(i1: i40, i2: i40) returns (i1) { (if $slt.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 < i2) } +function {:inline} $slt.i48(i1: i48, i2: i48) returns (i1) { (if $slt.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 < i2) } +function {:inline} $slt.i56(i1: i56, i2: i56) returns (i1) { (if $slt.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 < i2) } +function {:inline} $slt.i64(i1: i64, i2: i64) returns (i1) { (if $slt.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 < i2) } +function {:inline} $slt.i80(i1: i80, i2: i80) returns (i1) { (if $slt.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 < i2) } +function {:inline} $slt.i88(i1: i88, i2: i88) returns (i1) { (if $slt.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 < i2) } +function {:inline} $slt.i96(i1: i96, i2: i96) returns (i1) { (if $slt.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 < i2) } +function {:inline} $slt.i128(i1: i128, i2: i128) returns (i1) { (if $slt.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 < i2) } +function {:inline} $slt.i160(i1: i160, i2: i160) returns (i1) { (if $slt.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 < i2) } +function {:inline} $slt.i256(i1: i256, i2: i256) returns (i1) { (if $slt.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i1(i1: i1, i2: i1) returns (i1) { (if $sge.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i5(i1: i5, i2: i5) returns (i1) { (if $sge.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i6(i1: i6, i2: i6) returns (i1) { (if $sge.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i8(i1: i8, i2: i8) returns (i1) { (if $sge.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i16(i1: i16, i2: i16) returns (i1) { (if $sge.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i24(i1: i24, i2: i24) returns (i1) { (if $sge.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i32(i1: i32, i2: i32) returns (i1) { (if $sge.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i33(i1: i33, i2: i33) returns (i1) { (if $sge.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i40(i1: i40, i2: i40) returns (i1) { (if $sge.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i48(i1: i48, i2: i48) returns (i1) { (if $sge.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i56(i1: i56, i2: i56) returns (i1) { (if $sge.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i64(i1: i64, i2: i64) returns (i1) { (if $sge.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i80(i1: i80, i2: i80) returns (i1) { (if $sge.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i88(i1: i88, i2: i88) returns (i1) { (if $sge.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i96(i1: i96, i2: i96) returns (i1) { (if $sge.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i128(i1: i128, i2: i128) returns (i1) { (if $sge.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i160(i1: i160, i2: i160) returns (i1) { (if $sge.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i256(i1: i256, i2: i256) returns (i1) { (if $sge.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i1(i1: i1, i2: i1) returns (i1) { (if $sgt.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i5(i1: i5, i2: i5) returns (i1) { (if $sgt.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i6(i1: i6, i2: i6) returns (i1) { (if $sgt.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i8(i1: i8, i2: i8) returns (i1) { (if $sgt.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i16(i1: i16, i2: i16) returns (i1) { (if $sgt.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i24(i1: i24, i2: i24) returns (i1) { (if $sgt.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i32(i1: i32, i2: i32) returns (i1) { (if $sgt.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i33(i1: i33, i2: i33) returns (i1) { (if $sgt.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i40(i1: i40, i2: i40) returns (i1) { (if $sgt.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i48(i1: i48, i2: i48) returns (i1) { (if $sgt.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i56(i1: i56, i2: i56) returns (i1) { (if $sgt.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i64(i1: i64, i2: i64) returns (i1) { (if $sgt.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i80(i1: i80, i2: i80) returns (i1) { (if $sgt.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i88(i1: i88, i2: i88) returns (i1) { (if $sgt.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i96(i1: i96, i2: i96) returns (i1) { (if $sgt.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i128(i1: i128, i2: i128) returns (i1) { (if $sgt.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i160(i1: i160, i2: i160) returns (i1) { (if $sgt.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i256(i1: i256, i2: i256) returns (i1) { (if $sgt.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 == i2) } +function {:inline} $eq.i1(i1: i1, i2: i1) returns (i1) { (if $eq.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 == i2) } +function {:inline} $eq.i5(i1: i5, i2: i5) returns (i1) { (if $eq.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 == i2) } +function {:inline} $eq.i6(i1: i6, i2: i6) returns (i1) { (if $eq.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 == i2) } +function {:inline} $eq.i8(i1: i8, i2: i8) returns (i1) { (if $eq.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 == i2) } +function {:inline} $eq.i16(i1: i16, i2: i16) returns (i1) { (if $eq.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 == i2) } +function {:inline} $eq.i24(i1: i24, i2: i24) returns (i1) { (if $eq.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 == i2) } +function {:inline} $eq.i32(i1: i32, i2: i32) returns (i1) { (if $eq.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 == i2) } +function {:inline} $eq.i33(i1: i33, i2: i33) returns (i1) { (if $eq.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 == i2) } +function {:inline} $eq.i40(i1: i40, i2: i40) returns (i1) { (if $eq.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 == i2) } +function {:inline} $eq.i48(i1: i48, i2: i48) returns (i1) { (if $eq.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 == i2) } +function {:inline} $eq.i56(i1: i56, i2: i56) returns (i1) { (if $eq.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 == i2) } +function {:inline} $eq.i64(i1: i64, i2: i64) returns (i1) { (if $eq.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 == i2) } +function {:inline} $eq.i80(i1: i80, i2: i80) returns (i1) { (if $eq.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 == i2) } +function {:inline} $eq.i88(i1: i88, i2: i88) returns (i1) { (if $eq.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 == i2) } +function {:inline} $eq.i96(i1: i96, i2: i96) returns (i1) { (if $eq.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 == i2) } +function {:inline} $eq.i128(i1: i128, i2: i128) returns (i1) { (if $eq.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 == i2) } +function {:inline} $eq.i160(i1: i160, i2: i160) returns (i1) { (if $eq.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 == i2) } +function {:inline} $eq.i256(i1: i256, i2: i256) returns (i1) { (if $eq.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 != i2) } +function {:inline} $ne.i1(i1: i1, i2: i1) returns (i1) { (if $ne.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 != i2) } +function {:inline} $ne.i5(i1: i5, i2: i5) returns (i1) { (if $ne.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 != i2) } +function {:inline} $ne.i6(i1: i6, i2: i6) returns (i1) { (if $ne.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 != i2) } +function {:inline} $ne.i8(i1: i8, i2: i8) returns (i1) { (if $ne.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 != i2) } +function {:inline} $ne.i16(i1: i16, i2: i16) returns (i1) { (if $ne.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 != i2) } +function {:inline} $ne.i24(i1: i24, i2: i24) returns (i1) { (if $ne.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 != i2) } +function {:inline} $ne.i32(i1: i32, i2: i32) returns (i1) { (if $ne.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 != i2) } +function {:inline} $ne.i33(i1: i33, i2: i33) returns (i1) { (if $ne.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 != i2) } +function {:inline} $ne.i40(i1: i40, i2: i40) returns (i1) { (if $ne.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 != i2) } +function {:inline} $ne.i48(i1: i48, i2: i48) returns (i1) { (if $ne.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 != i2) } +function {:inline} $ne.i56(i1: i56, i2: i56) returns (i1) { (if $ne.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 != i2) } +function {:inline} $ne.i64(i1: i64, i2: i64) returns (i1) { (if $ne.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 != i2) } +function {:inline} $ne.i80(i1: i80, i2: i80) returns (i1) { (if $ne.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 != i2) } +function {:inline} $ne.i88(i1: i88, i2: i88) returns (i1) { (if $ne.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 != i2) } +function {:inline} $ne.i96(i1: i96, i2: i96) returns (i1) { (if $ne.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 != i2) } +function {:inline} $ne.i128(i1: i128, i2: i128) returns (i1) { (if $ne.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 != i2) } +function {:inline} $ne.i160(i1: i160, i2: i160) returns (i1) { (if $ne.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 != i2) } +function {:inline} $ne.i256(i1: i256, i2: i256) returns (i1) { (if $ne.i256.bool(i1, i2) then 1 else 0) } +// Integer load/store operations +function {:inline} $load.i1(M: [ref] i1, p: ref) returns (i1) { M[p] } +function {:inline} $store.i1(M: [ref] i1, p: ref, i: i1) returns ([ref] i1) { M[p := i] } +function {:inline} $load.i5(M: [ref] i5, p: ref) returns (i5) { M[p] } +function {:inline} $store.i5(M: [ref] i5, p: ref, i: i5) returns ([ref] i5) { M[p := i] } +function {:inline} $load.i6(M: [ref] i6, p: ref) returns (i6) { M[p] } +function {:inline} $store.i6(M: [ref] i6, p: ref, i: i6) returns ([ref] i6) { M[p := i] } +function {:inline} $load.i8(M: [ref] i8, p: ref) returns (i8) { M[p] } +function {:inline} $store.i8(M: [ref] i8, p: ref, i: i8) returns ([ref] i8) { M[p := i] } +function {:inline} $load.i16(M: [ref] i16, p: ref) returns (i16) { M[p] } +function {:inline} $store.i16(M: [ref] i16, p: ref, i: i16) returns ([ref] i16) { M[p := i] } +function {:inline} $load.i24(M: [ref] i24, p: ref) returns (i24) { M[p] } +function {:inline} $store.i24(M: [ref] i24, p: ref, i: i24) returns ([ref] i24) { M[p := i] } +function {:inline} $load.i32(M: [ref] i32, p: ref) returns (i32) { M[p] } +function {:inline} $store.i32(M: [ref] i32, p: ref, i: i32) returns ([ref] i32) { M[p := i] } +function {:inline} $load.i33(M: [ref] i33, p: ref) returns (i33) { M[p] } +function {:inline} $store.i33(M: [ref] i33, p: ref, i: i33) returns ([ref] i33) { M[p := i] } +function {:inline} $load.i40(M: [ref] i40, p: ref) returns (i40) { M[p] } +function {:inline} $store.i40(M: [ref] i40, p: ref, i: i40) returns ([ref] i40) { M[p := i] } +function {:inline} $load.i48(M: [ref] i48, p: ref) returns (i48) { M[p] } +function {:inline} $store.i48(M: [ref] i48, p: ref, i: i48) returns ([ref] i48) { M[p := i] } +function {:inline} $load.i56(M: [ref] i56, p: ref) returns (i56) { M[p] } +function {:inline} $store.i56(M: [ref] i56, p: ref, i: i56) returns ([ref] i56) { M[p := i] } +function {:inline} $load.i64(M: [ref] i64, p: ref) returns (i64) { M[p] } +function {:inline} $store.i64(M: [ref] i64, p: ref, i: i64) returns ([ref] i64) { M[p := i] } +function {:inline} $load.i80(M: [ref] i80, p: ref) returns (i80) { M[p] } +function {:inline} $store.i80(M: [ref] i80, p: ref, i: i80) returns ([ref] i80) { M[p := i] } +function {:inline} $load.i88(M: [ref] i88, p: ref) returns (i88) { M[p] } +function {:inline} $store.i88(M: [ref] i88, p: ref, i: i88) returns ([ref] i88) { M[p := i] } +function {:inline} $load.i96(M: [ref] i96, p: ref) returns (i96) { M[p] } +function {:inline} $store.i96(M: [ref] i96, p: ref, i: i96) returns ([ref] i96) { M[p := i] } +function {:inline} $load.i128(M: [ref] i128, p: ref) returns (i128) { M[p] } +function {:inline} $store.i128(M: [ref] i128, p: ref, i: i128) returns ([ref] i128) { M[p := i] } +function {:inline} $load.i160(M: [ref] i160, p: ref) returns (i160) { M[p] } +function {:inline} $store.i160(M: [ref] i160, p: ref, i: i160) returns ([ref] i160) { M[p := i] } +function {:inline} $load.i256(M: [ref] i256, p: ref) returns (i256) { M[p] } +function {:inline} $store.i256(M: [ref] i256, p: ref, i: i256) returns ([ref] i256) { M[p := i] } +// Conversion between integer types +function {:inline} $trunc.i5.i1(i: i5) returns (i1) { i } +function {:inline} $trunc.i6.i1(i: i6) returns (i1) { i } +function {:inline} $trunc.i8.i1(i: i8) returns (i1) { i } +function {:inline} $trunc.i16.i1(i: i16) returns (i1) { i } +function {:inline} $trunc.i24.i1(i: i24) returns (i1) { i } +function {:inline} $trunc.i32.i1(i: i32) returns (i1) { i } +function {:inline} $trunc.i33.i1(i: i33) returns (i1) { i } +function {:inline} $trunc.i40.i1(i: i40) returns (i1) { i } +function {:inline} $trunc.i48.i1(i: i48) returns (i1) { i } +function {:inline} $trunc.i56.i1(i: i56) returns (i1) { i } +function {:inline} $trunc.i64.i1(i: i64) returns (i1) { i } +function {:inline} $trunc.i80.i1(i: i80) returns (i1) { i } +function {:inline} $trunc.i88.i1(i: i88) returns (i1) { i } +function {:inline} $trunc.i96.i1(i: i96) returns (i1) { i } +function {:inline} $trunc.i128.i1(i: i128) returns (i1) { i } +function {:inline} $trunc.i160.i1(i: i160) returns (i1) { i } +function {:inline} $trunc.i256.i1(i: i256) returns (i1) { i } +function {:inline} $trunc.i6.i5(i: i6) returns (i5) { i } +function {:inline} $trunc.i8.i5(i: i8) returns (i5) { i } +function {:inline} $trunc.i16.i5(i: i16) returns (i5) { i } +function {:inline} $trunc.i24.i5(i: i24) returns (i5) { i } +function {:inline} $trunc.i32.i5(i: i32) returns (i5) { i } +function {:inline} $trunc.i33.i5(i: i33) returns (i5) { i } +function {:inline} $trunc.i40.i5(i: i40) returns (i5) { i } +function {:inline} $trunc.i48.i5(i: i48) returns (i5) { i } +function {:inline} $trunc.i56.i5(i: i56) returns (i5) { i } +function {:inline} $trunc.i64.i5(i: i64) returns (i5) { i } +function {:inline} $trunc.i80.i5(i: i80) returns (i5) { i } +function {:inline} $trunc.i88.i5(i: i88) returns (i5) { i } +function {:inline} $trunc.i96.i5(i: i96) returns (i5) { i } +function {:inline} $trunc.i128.i5(i: i128) returns (i5) { i } +function {:inline} $trunc.i160.i5(i: i160) returns (i5) { i } +function {:inline} $trunc.i256.i5(i: i256) returns (i5) { i } +function {:inline} $trunc.i8.i6(i: i8) returns (i6) { i } +function {:inline} $trunc.i16.i6(i: i16) returns (i6) { i } +function {:inline} $trunc.i24.i6(i: i24) returns (i6) { i } +function {:inline} $trunc.i32.i6(i: i32) returns (i6) { i } +function {:inline} $trunc.i33.i6(i: i33) returns (i6) { i } +function {:inline} $trunc.i40.i6(i: i40) returns (i6) { i } +function {:inline} $trunc.i48.i6(i: i48) returns (i6) { i } +function {:inline} $trunc.i56.i6(i: i56) returns (i6) { i } +function {:inline} $trunc.i64.i6(i: i64) returns (i6) { i } +function {:inline} $trunc.i80.i6(i: i80) returns (i6) { i } +function {:inline} $trunc.i88.i6(i: i88) returns (i6) { i } +function {:inline} $trunc.i96.i6(i: i96) returns (i6) { i } +function {:inline} $trunc.i128.i6(i: i128) returns (i6) { i } +function {:inline} $trunc.i160.i6(i: i160) returns (i6) { i } +function {:inline} $trunc.i256.i6(i: i256) returns (i6) { i } +function {:inline} $trunc.i16.i8(i: i16) returns (i8) { i } +function {:inline} $trunc.i24.i8(i: i24) returns (i8) { i } +function {:inline} $trunc.i32.i8(i: i32) returns (i8) { i } +function {:inline} $trunc.i33.i8(i: i33) returns (i8) { i } +function {:inline} $trunc.i40.i8(i: i40) returns (i8) { i } +function {:inline} $trunc.i48.i8(i: i48) returns (i8) { i } +function {:inline} $trunc.i56.i8(i: i56) returns (i8) { i } +function {:inline} $trunc.i64.i8(i: i64) returns (i8) { i } +function {:inline} $trunc.i80.i8(i: i80) returns (i8) { i } +function {:inline} $trunc.i88.i8(i: i88) returns (i8) { i } +function {:inline} $trunc.i96.i8(i: i96) returns (i8) { i } +function {:inline} $trunc.i128.i8(i: i128) returns (i8) { i } +function {:inline} $trunc.i160.i8(i: i160) returns (i8) { i } +function {:inline} $trunc.i256.i8(i: i256) returns (i8) { i } +function {:inline} $trunc.i24.i16(i: i24) returns (i16) { i } +function {:inline} $trunc.i32.i16(i: i32) returns (i16) { i } +function {:inline} $trunc.i33.i16(i: i33) returns (i16) { i } +function {:inline} $trunc.i40.i16(i: i40) returns (i16) { i } +function {:inline} $trunc.i48.i16(i: i48) returns (i16) { i } +function {:inline} $trunc.i56.i16(i: i56) returns (i16) { i } +function {:inline} $trunc.i64.i16(i: i64) returns (i16) { i } +function {:inline} $trunc.i80.i16(i: i80) returns (i16) { i } +function {:inline} $trunc.i88.i16(i: i88) returns (i16) { i } +function {:inline} $trunc.i96.i16(i: i96) returns (i16) { i } +function {:inline} $trunc.i128.i16(i: i128) returns (i16) { i } +function {:inline} $trunc.i160.i16(i: i160) returns (i16) { i } +function {:inline} $trunc.i256.i16(i: i256) returns (i16) { i } +function {:inline} $trunc.i32.i24(i: i32) returns (i24) { i } +function {:inline} $trunc.i33.i24(i: i33) returns (i24) { i } +function {:inline} $trunc.i40.i24(i: i40) returns (i24) { i } +function {:inline} $trunc.i48.i24(i: i48) returns (i24) { i } +function {:inline} $trunc.i56.i24(i: i56) returns (i24) { i } +function {:inline} $trunc.i64.i24(i: i64) returns (i24) { i } +function {:inline} $trunc.i80.i24(i: i80) returns (i24) { i } +function {:inline} $trunc.i88.i24(i: i88) returns (i24) { i } +function {:inline} $trunc.i96.i24(i: i96) returns (i24) { i } +function {:inline} $trunc.i128.i24(i: i128) returns (i24) { i } +function {:inline} $trunc.i160.i24(i: i160) returns (i24) { i } +function {:inline} $trunc.i256.i24(i: i256) returns (i24) { i } +function {:inline} $trunc.i33.i32(i: i33) returns (i32) { i } +function {:inline} $trunc.i40.i32(i: i40) returns (i32) { i } +function {:inline} $trunc.i48.i32(i: i48) returns (i32) { i } +function {:inline} $trunc.i56.i32(i: i56) returns (i32) { i } +function {:inline} $trunc.i64.i32(i: i64) returns (i32) { i } +function {:inline} $trunc.i80.i32(i: i80) returns (i32) { i } +function {:inline} $trunc.i88.i32(i: i88) returns (i32) { i } +function {:inline} $trunc.i96.i32(i: i96) returns (i32) { i } +function {:inline} $trunc.i128.i32(i: i128) returns (i32) { i } +function {:inline} $trunc.i160.i32(i: i160) returns (i32) { i } +function {:inline} $trunc.i256.i32(i: i256) returns (i32) { i } +function {:inline} $trunc.i40.i33(i: i40) returns (i33) { i } +function {:inline} $trunc.i48.i33(i: i48) returns (i33) { i } +function {:inline} $trunc.i56.i33(i: i56) returns (i33) { i } +function {:inline} $trunc.i64.i33(i: i64) returns (i33) { i } +function {:inline} $trunc.i80.i33(i: i80) returns (i33) { i } +function {:inline} $trunc.i88.i33(i: i88) returns (i33) { i } +function {:inline} $trunc.i96.i33(i: i96) returns (i33) { i } +function {:inline} $trunc.i128.i33(i: i128) returns (i33) { i } +function {:inline} $trunc.i160.i33(i: i160) returns (i33) { i } +function {:inline} $trunc.i256.i33(i: i256) returns (i33) { i } +function {:inline} $trunc.i48.i40(i: i48) returns (i40) { i } +function {:inline} $trunc.i56.i40(i: i56) returns (i40) { i } +function {:inline} $trunc.i64.i40(i: i64) returns (i40) { i } +function {:inline} $trunc.i80.i40(i: i80) returns (i40) { i } +function {:inline} $trunc.i88.i40(i: i88) returns (i40) { i } +function {:inline} $trunc.i96.i40(i: i96) returns (i40) { i } +function {:inline} $trunc.i128.i40(i: i128) returns (i40) { i } +function {:inline} $trunc.i160.i40(i: i160) returns (i40) { i } +function {:inline} $trunc.i256.i40(i: i256) returns (i40) { i } +function {:inline} $trunc.i56.i48(i: i56) returns (i48) { i } +function {:inline} $trunc.i64.i48(i: i64) returns (i48) { i } +function {:inline} $trunc.i80.i48(i: i80) returns (i48) { i } +function {:inline} $trunc.i88.i48(i: i88) returns (i48) { i } +function {:inline} $trunc.i96.i48(i: i96) returns (i48) { i } +function {:inline} $trunc.i128.i48(i: i128) returns (i48) { i } +function {:inline} $trunc.i160.i48(i: i160) returns (i48) { i } +function {:inline} $trunc.i256.i48(i: i256) returns (i48) { i } +function {:inline} $trunc.i64.i56(i: i64) returns (i56) { i } +function {:inline} $trunc.i80.i56(i: i80) returns (i56) { i } +function {:inline} $trunc.i88.i56(i: i88) returns (i56) { i } +function {:inline} $trunc.i96.i56(i: i96) returns (i56) { i } +function {:inline} $trunc.i128.i56(i: i128) returns (i56) { i } +function {:inline} $trunc.i160.i56(i: i160) returns (i56) { i } +function {:inline} $trunc.i256.i56(i: i256) returns (i56) { i } +function {:inline} $trunc.i80.i64(i: i80) returns (i64) { i } +function {:inline} $trunc.i88.i64(i: i88) returns (i64) { i } +function {:inline} $trunc.i96.i64(i: i96) returns (i64) { i } +function {:inline} $trunc.i128.i64(i: i128) returns (i64) { i } +function {:inline} $trunc.i160.i64(i: i160) returns (i64) { i } +function {:inline} $trunc.i256.i64(i: i256) returns (i64) { i } +function {:inline} $trunc.i88.i80(i: i88) returns (i80) { i } +function {:inline} $trunc.i96.i80(i: i96) returns (i80) { i } +function {:inline} $trunc.i128.i80(i: i128) returns (i80) { i } +function {:inline} $trunc.i160.i80(i: i160) returns (i80) { i } +function {:inline} $trunc.i256.i80(i: i256) returns (i80) { i } +function {:inline} $trunc.i96.i88(i: i96) returns (i88) { i } +function {:inline} $trunc.i128.i88(i: i128) returns (i88) { i } +function {:inline} $trunc.i160.i88(i: i160) returns (i88) { i } +function {:inline} $trunc.i256.i88(i: i256) returns (i88) { i } +function {:inline} $trunc.i128.i96(i: i128) returns (i96) { i } +function {:inline} $trunc.i160.i96(i: i160) returns (i96) { i } +function {:inline} $trunc.i256.i96(i: i256) returns (i96) { i } +function {:inline} $trunc.i160.i128(i: i160) returns (i128) { i } +function {:inline} $trunc.i256.i128(i: i256) returns (i128) { i } +function {:inline} $trunc.i256.i160(i: i256) returns (i160) { i } +function {:inline} $sext.i1.i5(i: i1) returns (i5) { i } +function {:inline} $sext.i1.i6(i: i1) returns (i6) { i } +function {:inline} $sext.i1.i8(i: i1) returns (i8) { i } +function {:inline} $sext.i1.i16(i: i1) returns (i16) { i } +function {:inline} $sext.i1.i24(i: i1) returns (i24) { i } +function {:inline} $sext.i1.i32(i: i1) returns (i32) { i } +function {:inline} $sext.i1.i33(i: i1) returns (i33) { i } +function {:inline} $sext.i1.i40(i: i1) returns (i40) { i } +function {:inline} $sext.i1.i48(i: i1) returns (i48) { i } +function {:inline} $sext.i1.i56(i: i1) returns (i56) { i } +function {:inline} $sext.i1.i64(i: i1) returns (i64) { i } +function {:inline} $sext.i1.i80(i: i1) returns (i80) { i } +function {:inline} $sext.i1.i88(i: i1) returns (i88) { i } +function {:inline} $sext.i1.i96(i: i1) returns (i96) { i } +function {:inline} $sext.i1.i128(i: i1) returns (i128) { i } +function {:inline} $sext.i1.i160(i: i1) returns (i160) { i } +function {:inline} $sext.i1.i256(i: i1) returns (i256) { i } +function {:inline} $sext.i5.i6(i: i5) returns (i6) { i } +function {:inline} $sext.i5.i8(i: i5) returns (i8) { i } +function {:inline} $sext.i5.i16(i: i5) returns (i16) { i } +function {:inline} $sext.i5.i24(i: i5) returns (i24) { i } +function {:inline} $sext.i5.i32(i: i5) returns (i32) { i } +function {:inline} $sext.i5.i33(i: i5) returns (i33) { i } +function {:inline} $sext.i5.i40(i: i5) returns (i40) { i } +function {:inline} $sext.i5.i48(i: i5) returns (i48) { i } +function {:inline} $sext.i5.i56(i: i5) returns (i56) { i } +function {:inline} $sext.i5.i64(i: i5) returns (i64) { i } +function {:inline} $sext.i5.i80(i: i5) returns (i80) { i } +function {:inline} $sext.i5.i88(i: i5) returns (i88) { i } +function {:inline} $sext.i5.i96(i: i5) returns (i96) { i } +function {:inline} $sext.i5.i128(i: i5) returns (i128) { i } +function {:inline} $sext.i5.i160(i: i5) returns (i160) { i } +function {:inline} $sext.i5.i256(i: i5) returns (i256) { i } +function {:inline} $sext.i6.i8(i: i6) returns (i8) { i } +function {:inline} $sext.i6.i16(i: i6) returns (i16) { i } +function {:inline} $sext.i6.i24(i: i6) returns (i24) { i } +function {:inline} $sext.i6.i32(i: i6) returns (i32) { i } +function {:inline} $sext.i6.i33(i: i6) returns (i33) { i } +function {:inline} $sext.i6.i40(i: i6) returns (i40) { i } +function {:inline} $sext.i6.i48(i: i6) returns (i48) { i } +function {:inline} $sext.i6.i56(i: i6) returns (i56) { i } +function {:inline} $sext.i6.i64(i: i6) returns (i64) { i } +function {:inline} $sext.i6.i80(i: i6) returns (i80) { i } +function {:inline} $sext.i6.i88(i: i6) returns (i88) { i } +function {:inline} $sext.i6.i96(i: i6) returns (i96) { i } +function {:inline} $sext.i6.i128(i: i6) returns (i128) { i } +function {:inline} $sext.i6.i160(i: i6) returns (i160) { i } +function {:inline} $sext.i6.i256(i: i6) returns (i256) { i } +function {:inline} $sext.i8.i16(i: i8) returns (i16) { i } +function {:inline} $sext.i8.i24(i: i8) returns (i24) { i } +function {:inline} $sext.i8.i32(i: i8) returns (i32) { i } +function {:inline} $sext.i8.i33(i: i8) returns (i33) { i } +function {:inline} $sext.i8.i40(i: i8) returns (i40) { i } +function {:inline} $sext.i8.i48(i: i8) returns (i48) { i } +function {:inline} $sext.i8.i56(i: i8) returns (i56) { i } +function {:inline} $sext.i8.i64(i: i8) returns (i64) { i } +function {:inline} $sext.i8.i80(i: i8) returns (i80) { i } +function {:inline} $sext.i8.i88(i: i8) returns (i88) { i } +function {:inline} $sext.i8.i96(i: i8) returns (i96) { i } +function {:inline} $sext.i8.i128(i: i8) returns (i128) { i } +function {:inline} $sext.i8.i160(i: i8) returns (i160) { i } +function {:inline} $sext.i8.i256(i: i8) returns (i256) { i } +function {:inline} $sext.i16.i24(i: i16) returns (i24) { i } +function {:inline} $sext.i16.i32(i: i16) returns (i32) { i } +function {:inline} $sext.i16.i33(i: i16) returns (i33) { i } +function {:inline} $sext.i16.i40(i: i16) returns (i40) { i } +function {:inline} $sext.i16.i48(i: i16) returns (i48) { i } +function {:inline} $sext.i16.i56(i: i16) returns (i56) { i } +function {:inline} $sext.i16.i64(i: i16) returns (i64) { i } +function {:inline} $sext.i16.i80(i: i16) returns (i80) { i } +function {:inline} $sext.i16.i88(i: i16) returns (i88) { i } +function {:inline} $sext.i16.i96(i: i16) returns (i96) { i } +function {:inline} $sext.i16.i128(i: i16) returns (i128) { i } +function {:inline} $sext.i16.i160(i: i16) returns (i160) { i } +function {:inline} $sext.i16.i256(i: i16) returns (i256) { i } +function {:inline} $sext.i24.i32(i: i24) returns (i32) { i } +function {:inline} $sext.i24.i33(i: i24) returns (i33) { i } +function {:inline} $sext.i24.i40(i: i24) returns (i40) { i } +function {:inline} $sext.i24.i48(i: i24) returns (i48) { i } +function {:inline} $sext.i24.i56(i: i24) returns (i56) { i } +function {:inline} $sext.i24.i64(i: i24) returns (i64) { i } +function {:inline} $sext.i24.i80(i: i24) returns (i80) { i } +function {:inline} $sext.i24.i88(i: i24) returns (i88) { i } +function {:inline} $sext.i24.i96(i: i24) returns (i96) { i } +function {:inline} $sext.i24.i128(i: i24) returns (i128) { i } +function {:inline} $sext.i24.i160(i: i24) returns (i160) { i } +function {:inline} $sext.i24.i256(i: i24) returns (i256) { i } +function {:inline} $sext.i32.i33(i: i32) returns (i33) { i } +function {:inline} $sext.i32.i40(i: i32) returns (i40) { i } +function {:inline} $sext.i32.i48(i: i32) returns (i48) { i } +function {:inline} $sext.i32.i56(i: i32) returns (i56) { i } +function {:inline} $sext.i32.i64(i: i32) returns (i64) { i } +function {:inline} $sext.i32.i80(i: i32) returns (i80) { i } +function {:inline} $sext.i32.i88(i: i32) returns (i88) { i } +function {:inline} $sext.i32.i96(i: i32) returns (i96) { i } +function {:inline} $sext.i32.i128(i: i32) returns (i128) { i } +function {:inline} $sext.i32.i160(i: i32) returns (i160) { i } +function {:inline} $sext.i32.i256(i: i32) returns (i256) { i } +function {:inline} $sext.i33.i40(i: i33) returns (i40) { i } +function {:inline} $sext.i33.i48(i: i33) returns (i48) { i } +function {:inline} $sext.i33.i56(i: i33) returns (i56) { i } +function {:inline} $sext.i33.i64(i: i33) returns (i64) { i } +function {:inline} $sext.i33.i80(i: i33) returns (i80) { i } +function {:inline} $sext.i33.i88(i: i33) returns (i88) { i } +function {:inline} $sext.i33.i96(i: i33) returns (i96) { i } +function {:inline} $sext.i33.i128(i: i33) returns (i128) { i } +function {:inline} $sext.i33.i160(i: i33) returns (i160) { i } +function {:inline} $sext.i33.i256(i: i33) returns (i256) { i } +function {:inline} $sext.i40.i48(i: i40) returns (i48) { i } +function {:inline} $sext.i40.i56(i: i40) returns (i56) { i } +function {:inline} $sext.i40.i64(i: i40) returns (i64) { i } +function {:inline} $sext.i40.i80(i: i40) returns (i80) { i } +function {:inline} $sext.i40.i88(i: i40) returns (i88) { i } +function {:inline} $sext.i40.i96(i: i40) returns (i96) { i } +function {:inline} $sext.i40.i128(i: i40) returns (i128) { i } +function {:inline} $sext.i40.i160(i: i40) returns (i160) { i } +function {:inline} $sext.i40.i256(i: i40) returns (i256) { i } +function {:inline} $sext.i48.i56(i: i48) returns (i56) { i } +function {:inline} $sext.i48.i64(i: i48) returns (i64) { i } +function {:inline} $sext.i48.i80(i: i48) returns (i80) { i } +function {:inline} $sext.i48.i88(i: i48) returns (i88) { i } +function {:inline} $sext.i48.i96(i: i48) returns (i96) { i } +function {:inline} $sext.i48.i128(i: i48) returns (i128) { i } +function {:inline} $sext.i48.i160(i: i48) returns (i160) { i } +function {:inline} $sext.i48.i256(i: i48) returns (i256) { i } +function {:inline} $sext.i56.i64(i: i56) returns (i64) { i } +function {:inline} $sext.i56.i80(i: i56) returns (i80) { i } +function {:inline} $sext.i56.i88(i: i56) returns (i88) { i } +function {:inline} $sext.i56.i96(i: i56) returns (i96) { i } +function {:inline} $sext.i56.i128(i: i56) returns (i128) { i } +function {:inline} $sext.i56.i160(i: i56) returns (i160) { i } +function {:inline} $sext.i56.i256(i: i56) returns (i256) { i } +function {:inline} $sext.i64.i80(i: i64) returns (i80) { i } +function {:inline} $sext.i64.i88(i: i64) returns (i88) { i } +function {:inline} $sext.i64.i96(i: i64) returns (i96) { i } +function {:inline} $sext.i64.i128(i: i64) returns (i128) { i } +function {:inline} $sext.i64.i160(i: i64) returns (i160) { i } +function {:inline} $sext.i64.i256(i: i64) returns (i256) { i } +function {:inline} $sext.i80.i88(i: i80) returns (i88) { i } +function {:inline} $sext.i80.i96(i: i80) returns (i96) { i } +function {:inline} $sext.i80.i128(i: i80) returns (i128) { i } +function {:inline} $sext.i80.i160(i: i80) returns (i160) { i } +function {:inline} $sext.i80.i256(i: i80) returns (i256) { i } +function {:inline} $sext.i88.i96(i: i88) returns (i96) { i } +function {:inline} $sext.i88.i128(i: i88) returns (i128) { i } +function {:inline} $sext.i88.i160(i: i88) returns (i160) { i } +function {:inline} $sext.i88.i256(i: i88) returns (i256) { i } +function {:inline} $sext.i96.i128(i: i96) returns (i128) { i } +function {:inline} $sext.i96.i160(i: i96) returns (i160) { i } +function {:inline} $sext.i96.i256(i: i96) returns (i256) { i } +function {:inline} $sext.i128.i160(i: i128) returns (i160) { i } +function {:inline} $sext.i128.i256(i: i128) returns (i256) { i } +function {:inline} $sext.i160.i256(i: i160) returns (i256) { i } +function {:inline} $zext.i1.i5(i: i1) returns (i5) { i } +function {:inline} $zext.i1.i6(i: i1) returns (i6) { i } +function {:inline} $zext.i1.i8(i: i1) returns (i8) { i } +function {:inline} $zext.i1.i16(i: i1) returns (i16) { i } +function {:inline} $zext.i1.i24(i: i1) returns (i24) { i } +function {:inline} $zext.i1.i32(i: i1) returns (i32) { i } +function {:inline} $zext.i1.i33(i: i1) returns (i33) { i } +function {:inline} $zext.i1.i40(i: i1) returns (i40) { i } +function {:inline} $zext.i1.i48(i: i1) returns (i48) { i } +function {:inline} $zext.i1.i56(i: i1) returns (i56) { i } +function {:inline} $zext.i1.i64(i: i1) returns (i64) { i } +function {:inline} $zext.i1.i80(i: i1) returns (i80) { i } +function {:inline} $zext.i1.i88(i: i1) returns (i88) { i } +function {:inline} $zext.i1.i96(i: i1) returns (i96) { i } +function {:inline} $zext.i1.i128(i: i1) returns (i128) { i } +function {:inline} $zext.i1.i160(i: i1) returns (i160) { i } +function {:inline} $zext.i1.i256(i: i1) returns (i256) { i } +function {:inline} $zext.i5.i6(i: i5) returns (i6) { i } +function {:inline} $zext.i5.i8(i: i5) returns (i8) { i } +function {:inline} $zext.i5.i16(i: i5) returns (i16) { i } +function {:inline} $zext.i5.i24(i: i5) returns (i24) { i } +function {:inline} $zext.i5.i32(i: i5) returns (i32) { i } +function {:inline} $zext.i5.i33(i: i5) returns (i33) { i } +function {:inline} $zext.i5.i40(i: i5) returns (i40) { i } +function {:inline} $zext.i5.i48(i: i5) returns (i48) { i } +function {:inline} $zext.i5.i56(i: i5) returns (i56) { i } +function {:inline} $zext.i5.i64(i: i5) returns (i64) { i } +function {:inline} $zext.i5.i80(i: i5) returns (i80) { i } +function {:inline} $zext.i5.i88(i: i5) returns (i88) { i } +function {:inline} $zext.i5.i96(i: i5) returns (i96) { i } +function {:inline} $zext.i5.i128(i: i5) returns (i128) { i } +function {:inline} $zext.i5.i160(i: i5) returns (i160) { i } +function {:inline} $zext.i5.i256(i: i5) returns (i256) { i } +function {:inline} $zext.i6.i8(i: i6) returns (i8) { i } +function {:inline} $zext.i6.i16(i: i6) returns (i16) { i } +function {:inline} $zext.i6.i24(i: i6) returns (i24) { i } +function {:inline} $zext.i6.i32(i: i6) returns (i32) { i } +function {:inline} $zext.i6.i33(i: i6) returns (i33) { i } +function {:inline} $zext.i6.i40(i: i6) returns (i40) { i } +function {:inline} $zext.i6.i48(i: i6) returns (i48) { i } +function {:inline} $zext.i6.i56(i: i6) returns (i56) { i } +function {:inline} $zext.i6.i64(i: i6) returns (i64) { i } +function {:inline} $zext.i6.i80(i: i6) returns (i80) { i } +function {:inline} $zext.i6.i88(i: i6) returns (i88) { i } +function {:inline} $zext.i6.i96(i: i6) returns (i96) { i } +function {:inline} $zext.i6.i128(i: i6) returns (i128) { i } +function {:inline} $zext.i6.i160(i: i6) returns (i160) { i } +function {:inline} $zext.i6.i256(i: i6) returns (i256) { i } +function {:inline} $zext.i8.i16(i: i8) returns (i16) { i } +function {:inline} $zext.i8.i24(i: i8) returns (i24) { i } +function {:inline} $zext.i8.i32(i: i8) returns (i32) { i } +function {:inline} $zext.i8.i33(i: i8) returns (i33) { i } +function {:inline} $zext.i8.i40(i: i8) returns (i40) { i } +function {:inline} $zext.i8.i48(i: i8) returns (i48) { i } +function {:inline} $zext.i8.i56(i: i8) returns (i56) { i } +function {:inline} $zext.i8.i64(i: i8) returns (i64) { i } +function {:inline} $zext.i8.i80(i: i8) returns (i80) { i } +function {:inline} $zext.i8.i88(i: i8) returns (i88) { i } +function {:inline} $zext.i8.i96(i: i8) returns (i96) { i } +function {:inline} $zext.i8.i128(i: i8) returns (i128) { i } +function {:inline} $zext.i8.i160(i: i8) returns (i160) { i } +function {:inline} $zext.i8.i256(i: i8) returns (i256) { i } +function {:inline} $zext.i16.i24(i: i16) returns (i24) { i } +function {:inline} $zext.i16.i32(i: i16) returns (i32) { i } +function {:inline} $zext.i16.i33(i: i16) returns (i33) { i } +function {:inline} $zext.i16.i40(i: i16) returns (i40) { i } +function {:inline} $zext.i16.i48(i: i16) returns (i48) { i } +function {:inline} $zext.i16.i56(i: i16) returns (i56) { i } +function {:inline} $zext.i16.i64(i: i16) returns (i64) { i } +function {:inline} $zext.i16.i80(i: i16) returns (i80) { i } +function {:inline} $zext.i16.i88(i: i16) returns (i88) { i } +function {:inline} $zext.i16.i96(i: i16) returns (i96) { i } +function {:inline} $zext.i16.i128(i: i16) returns (i128) { i } +function {:inline} $zext.i16.i160(i: i16) returns (i160) { i } +function {:inline} $zext.i16.i256(i: i16) returns (i256) { i } +function {:inline} $zext.i24.i32(i: i24) returns (i32) { i } +function {:inline} $zext.i24.i33(i: i24) returns (i33) { i } +function {:inline} $zext.i24.i40(i: i24) returns (i40) { i } +function {:inline} $zext.i24.i48(i: i24) returns (i48) { i } +function {:inline} $zext.i24.i56(i: i24) returns (i56) { i } +function {:inline} $zext.i24.i64(i: i24) returns (i64) { i } +function {:inline} $zext.i24.i80(i: i24) returns (i80) { i } +function {:inline} $zext.i24.i88(i: i24) returns (i88) { i } +function {:inline} $zext.i24.i96(i: i24) returns (i96) { i } +function {:inline} $zext.i24.i128(i: i24) returns (i128) { i } +function {:inline} $zext.i24.i160(i: i24) returns (i160) { i } +function {:inline} $zext.i24.i256(i: i24) returns (i256) { i } +function {:inline} $zext.i32.i33(i: i32) returns (i33) { i } +function {:inline} $zext.i32.i40(i: i32) returns (i40) { i } +function {:inline} $zext.i32.i48(i: i32) returns (i48) { i } +function {:inline} $zext.i32.i56(i: i32) returns (i56) { i } +function {:inline} $zext.i32.i64(i: i32) returns (i64) { i } +function {:inline} $zext.i32.i80(i: i32) returns (i80) { i } +function {:inline} $zext.i32.i88(i: i32) returns (i88) { i } +function {:inline} $zext.i32.i96(i: i32) returns (i96) { i } +function {:inline} $zext.i32.i128(i: i32) returns (i128) { i } +function {:inline} $zext.i32.i160(i: i32) returns (i160) { i } +function {:inline} $zext.i32.i256(i: i32) returns (i256) { i } +function {:inline} $zext.i33.i40(i: i33) returns (i40) { i } +function {:inline} $zext.i33.i48(i: i33) returns (i48) { i } +function {:inline} $zext.i33.i56(i: i33) returns (i56) { i } +function {:inline} $zext.i33.i64(i: i33) returns (i64) { i } +function {:inline} $zext.i33.i80(i: i33) returns (i80) { i } +function {:inline} $zext.i33.i88(i: i33) returns (i88) { i } +function {:inline} $zext.i33.i96(i: i33) returns (i96) { i } +function {:inline} $zext.i33.i128(i: i33) returns (i128) { i } +function {:inline} $zext.i33.i160(i: i33) returns (i160) { i } +function {:inline} $zext.i33.i256(i: i33) returns (i256) { i } +function {:inline} $zext.i40.i48(i: i40) returns (i48) { i } +function {:inline} $zext.i40.i56(i: i40) returns (i56) { i } +function {:inline} $zext.i40.i64(i: i40) returns (i64) { i } +function {:inline} $zext.i40.i80(i: i40) returns (i80) { i } +function {:inline} $zext.i40.i88(i: i40) returns (i88) { i } +function {:inline} $zext.i40.i96(i: i40) returns (i96) { i } +function {:inline} $zext.i40.i128(i: i40) returns (i128) { i } +function {:inline} $zext.i40.i160(i: i40) returns (i160) { i } +function {:inline} $zext.i40.i256(i: i40) returns (i256) { i } +function {:inline} $zext.i48.i56(i: i48) returns (i56) { i } +function {:inline} $zext.i48.i64(i: i48) returns (i64) { i } +function {:inline} $zext.i48.i80(i: i48) returns (i80) { i } +function {:inline} $zext.i48.i88(i: i48) returns (i88) { i } +function {:inline} $zext.i48.i96(i: i48) returns (i96) { i } +function {:inline} $zext.i48.i128(i: i48) returns (i128) { i } +function {:inline} $zext.i48.i160(i: i48) returns (i160) { i } +function {:inline} $zext.i48.i256(i: i48) returns (i256) { i } +function {:inline} $zext.i56.i64(i: i56) returns (i64) { i } +function {:inline} $zext.i56.i80(i: i56) returns (i80) { i } +function {:inline} $zext.i56.i88(i: i56) returns (i88) { i } +function {:inline} $zext.i56.i96(i: i56) returns (i96) { i } +function {:inline} $zext.i56.i128(i: i56) returns (i128) { i } +function {:inline} $zext.i56.i160(i: i56) returns (i160) { i } +function {:inline} $zext.i56.i256(i: i56) returns (i256) { i } +function {:inline} $zext.i64.i80(i: i64) returns (i80) { i } +function {:inline} $zext.i64.i88(i: i64) returns (i88) { i } +function {:inline} $zext.i64.i96(i: i64) returns (i96) { i } +function {:inline} $zext.i64.i128(i: i64) returns (i128) { i } +function {:inline} $zext.i64.i160(i: i64) returns (i160) { i } +function {:inline} $zext.i64.i256(i: i64) returns (i256) { i } +function {:inline} $zext.i80.i88(i: i80) returns (i88) { i } +function {:inline} $zext.i80.i96(i: i80) returns (i96) { i } +function {:inline} $zext.i80.i128(i: i80) returns (i128) { i } +function {:inline} $zext.i80.i160(i: i80) returns (i160) { i } +function {:inline} $zext.i80.i256(i: i80) returns (i256) { i } +function {:inline} $zext.i88.i96(i: i88) returns (i96) { i } +function {:inline} $zext.i88.i128(i: i88) returns (i128) { i } +function {:inline} $zext.i88.i160(i: i88) returns (i160) { i } +function {:inline} $zext.i88.i256(i: i88) returns (i256) { i } +function {:inline} $zext.i96.i128(i: i96) returns (i128) { i } +function {:inline} $zext.i96.i160(i: i96) returns (i160) { i } +function {:inline} $zext.i96.i256(i: i96) returns (i256) { i } +function {:inline} $zext.i128.i160(i: i128) returns (i160) { i } +function {:inline} $zext.i128.i256(i: i128) returns (i256) { i } +function {:inline} $zext.i160.i256(i: i160) returns (i256) { i } +function $extractvalue.i1(p: ref, i: int) returns (i1); +function $extractvalue.i5(p: ref, i: int) returns (i5); +function $extractvalue.i6(p: ref, i: int) returns (i6); +function $extractvalue.i8(p: ref, i: int) returns (i8); +function $extractvalue.i16(p: ref, i: int) returns (i16); +function $extractvalue.i24(p: ref, i: int) returns (i24); +function $extractvalue.i32(p: ref, i: int) returns (i32); +function $extractvalue.i33(p: ref, i: int) returns (i33); +function $extractvalue.i40(p: ref, i: int) returns (i40); +function $extractvalue.i48(p: ref, i: int) returns (i48); +function $extractvalue.i56(p: ref, i: int) returns (i56); +function $extractvalue.i64(p: ref, i: int) returns (i64); +function $extractvalue.i80(p: ref, i: int) returns (i80); +function $extractvalue.i88(p: ref, i: int) returns (i88); +function $extractvalue.i96(p: ref, i: int) returns (i96); +function $extractvalue.i128(p: ref, i: int) returns (i128); +function $extractvalue.i160(p: ref, i: int) returns (i160); +function $extractvalue.i256(p: ref, i: int) returns (i256); +// Pointer arithmetic operations +function {:inline} $add.ref(p1: ref, p2: ref) returns (ref) { $add.i64(p1, p2) } +function {:inline} $sub.ref(p1: ref, p2: ref) returns (ref) { $sub.i64(p1, p2) } +function {:inline} $mul.ref(p1: ref, p2: ref) returns (ref) { $mul.i64(p1, p2) } + +// Pointer predicates +function {:inline} $eq.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 == p2) } +function {:inline} $eq.ref(p1: ref, p2: ref) returns (i1) { (if $eq.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $ne.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 != p2) } +function {:inline} $ne.ref(p1: ref, p2: ref) returns (i1) { (if $ne.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $ugt.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 > p2) } +function {:inline} $ugt.ref(p1: ref, p2: ref) returns (i1) { (if $ugt.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $uge.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 >= p2) } +function {:inline} $uge.ref(p1: ref, p2: ref) returns (i1) { (if $uge.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $ult.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 < p2) } +function {:inline} $ult.ref(p1: ref, p2: ref) returns (i1) { (if $ult.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $ule.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 <= p2) } +function {:inline} $ule.ref(p1: ref, p2: ref) returns (i1) { (if $ule.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $sgt.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 > p2) } +function {:inline} $sgt.ref(p1: ref, p2: ref) returns (i1) { (if $sgt.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $sge.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 >= p2) } +function {:inline} $sge.ref(p1: ref, p2: ref) returns (i1) { (if $sge.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $slt.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 < p2) } +function {:inline} $slt.ref(p1: ref, p2: ref) returns (i1) { (if $slt.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $sle.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 <= p2) } +function {:inline} $sle.ref(p1: ref, p2: ref) returns (i1) { (if $sle.ref.bool(p1, p2) then 1 else 0) } + +// Pointer load/store operations +function {:inline} $load.ref(M: [ref] ref, p: ref) returns (ref) { M[p] } +function {:inline} $store.ref(M: [ref] ref, p: ref, i: ref) returns ([ref] ref) { M[p := i] } + +// Pointer conversion +function {:inline} $bitcast.ref.ref(p: ref) returns (ref) { p } +function $extractvalue.ref(p: ref, i: int) returns (ref); +// Pointer-number conversion +function {:inline} $p2i.ref.i8(p: ref) returns (i8) { $trunc.i64.i8(p) } +function {:inline} $i2p.i8.ref(i: i8) returns (ref) { $zext.i8.i64(i) } +function {:inline} $p2i.ref.i16(p: ref) returns (i16) { $trunc.i64.i16(p) } +function {:inline} $i2p.i16.ref(i: i16) returns (ref) { $zext.i16.i64(i) } +function {:inline} $p2i.ref.i32(p: ref) returns (i32) { $trunc.i64.i32(p) } +function {:inline} $i2p.i32.ref(i: i32) returns (ref) { $zext.i32.i64(i) } +function {:inline} $p2i.ref.i64(p: ref) returns (i64) { p } +function {:inline} $i2p.i64.ref(i: i64) returns (ref) { i } + +function $fp(ipart: int, fpart: int, epart: int) returns (float); +// Floating-point arithmetic operations +function $abs.float(f: float) returns (float); +function $round.float(f: float) returns (float); +function $sqrt.float(f: float) returns (float); +function $fadd.float(f1: float, f2: float) returns (float); +function $fsub.float(f1: float, f2: float) returns (float); +function $fmul.float(f1: float, f2: float) returns (float); +function $fdiv.float(f1: float, f2: float) returns (float); +function $frem.float(f1: float, f2: float) returns (float); +function $min.float(f1: float, f2: float) returns (float); +function $max.float(f1: float, f2: float) returns (float); +function $fma.float(f1: float, f2: float, f3: float) returns (float); +function $fneg.float(f: float) returns (float); +// Floating-point predicates +function $foeq.float.bool(f1: float, f2: float) returns (bool); +function $fole.float.bool(f1: float, f2: float) returns (bool); +function $folt.float.bool(f1: float, f2: float) returns (bool); +function $foge.float.bool(f1: float, f2: float) returns (bool); +function $fogt.float.bool(f1: float, f2: float) returns (bool); +function $fone.float.bool(f1: float, f2: float) returns (bool); +function $ford.float.bool(f1: float, f2: float) returns (bool); +function $fueq.float.bool(f1: float, f2: float) returns (bool); +function $fugt.float.bool(f1: float, f2: float) returns (bool); +function $fuge.float.bool(f1: float, f2: float) returns (bool); +function $fult.float.bool(f1: float, f2: float) returns (bool); +function $fule.float.bool(f1: float, f2: float) returns (bool); +function $fune.float.bool(f1: float, f2: float) returns (bool); +function $funo.float.bool(f1: float, f2: float) returns (bool); +function $ffalse.float.bool(f1: float, f2: float) returns (bool); +function $ftrue.float.bool(f1: float, f2: float) returns (bool); +// Floating-point/integer conversion +function $bitcast.float.i8(f: float) returns (i8); +function $bitcast.float.i16(f: float) returns (i16); +function $bitcast.float.i32(f: float) returns (i32); +function $bitcast.float.i64(f: float) returns (i64); +function $bitcast.float.i80(f: float) returns (i80); +function $bitcast.i8.float(i: i8) returns (float); +function $bitcast.i16.float(i: i16) returns (float); +function $bitcast.i32.float(i: i32) returns (float); +function $bitcast.i64.float(i: i64) returns (float); +function $bitcast.i80.float(i: i80) returns (float); +function $fp2si.float.i1(f: float) returns (i1); +function $fp2si.float.i5(f: float) returns (i5); +function $fp2si.float.i6(f: float) returns (i6); +function $fp2si.float.i8(f: float) returns (i8); +function $fp2si.float.i16(f: float) returns (i16); +function $fp2si.float.i24(f: float) returns (i24); +function $fp2si.float.i32(f: float) returns (i32); +function $fp2si.float.i33(f: float) returns (i33); +function $fp2si.float.i40(f: float) returns (i40); +function $fp2si.float.i48(f: float) returns (i48); +function $fp2si.float.i56(f: float) returns (i56); +function $fp2si.float.i64(f: float) returns (i64); +function $fp2si.float.i80(f: float) returns (i80); +function $fp2si.float.i88(f: float) returns (i88); +function $fp2si.float.i96(f: float) returns (i96); +function $fp2si.float.i128(f: float) returns (i128); +function $fp2si.float.i160(f: float) returns (i160); +function $fp2si.float.i256(f: float) returns (i256); +function $fp2ui.float.i1(f: float) returns (i1); +function $fp2ui.float.i5(f: float) returns (i5); +function $fp2ui.float.i6(f: float) returns (i6); +function $fp2ui.float.i8(f: float) returns (i8); +function $fp2ui.float.i16(f: float) returns (i16); +function $fp2ui.float.i24(f: float) returns (i24); +function $fp2ui.float.i32(f: float) returns (i32); +function $fp2ui.float.i33(f: float) returns (i33); +function $fp2ui.float.i40(f: float) returns (i40); +function $fp2ui.float.i48(f: float) returns (i48); +function $fp2ui.float.i56(f: float) returns (i56); +function $fp2ui.float.i64(f: float) returns (i64); +function $fp2ui.float.i80(f: float) returns (i80); +function $fp2ui.float.i88(f: float) returns (i88); +function $fp2ui.float.i96(f: float) returns (i96); +function $fp2ui.float.i128(f: float) returns (i128); +function $fp2ui.float.i160(f: float) returns (i160); +function $fp2ui.float.i256(f: float) returns (i256); +function $si2fp.i1.float(i: i1) returns (float); +function $si2fp.i5.float(i: i5) returns (float); +function $si2fp.i6.float(i: i6) returns (float); +function $si2fp.i8.float(i: i8) returns (float); +function $si2fp.i16.float(i: i16) returns (float); +function $si2fp.i24.float(i: i24) returns (float); +function $si2fp.i32.float(i: i32) returns (float); +function $si2fp.i33.float(i: i33) returns (float); +function $si2fp.i40.float(i: i40) returns (float); +function $si2fp.i48.float(i: i48) returns (float); +function $si2fp.i56.float(i: i56) returns (float); +function $si2fp.i64.float(i: i64) returns (float); +function $si2fp.i80.float(i: i80) returns (float); +function $si2fp.i88.float(i: i88) returns (float); +function $si2fp.i96.float(i: i96) returns (float); +function $si2fp.i128.float(i: i128) returns (float); +function $si2fp.i160.float(i: i160) returns (float); +function $si2fp.i256.float(i: i256) returns (float); +function $ui2fp.i1.float(i: i1) returns (float); +function $ui2fp.i5.float(i: i5) returns (float); +function $ui2fp.i6.float(i: i6) returns (float); +function $ui2fp.i8.float(i: i8) returns (float); +function $ui2fp.i16.float(i: i16) returns (float); +function $ui2fp.i24.float(i: i24) returns (float); +function $ui2fp.i32.float(i: i32) returns (float); +function $ui2fp.i33.float(i: i33) returns (float); +function $ui2fp.i40.float(i: i40) returns (float); +function $ui2fp.i48.float(i: i48) returns (float); +function $ui2fp.i56.float(i: i56) returns (float); +function $ui2fp.i64.float(i: i64) returns (float); +function $ui2fp.i80.float(i: i80) returns (float); +function $ui2fp.i88.float(i: i88) returns (float); +function $ui2fp.i96.float(i: i96) returns (float); +function $ui2fp.i128.float(i: i128) returns (float); +function $ui2fp.i160.float(i: i160) returns (float); +function $ui2fp.i256.float(i: i256) returns (float); +// Floating-point conversion +function $fpext.float.float(f: float) returns (float); +function $fptrunc.float.float(f: float) returns (float); +// Floating-point load/store operations +function {:inline} $load.float(M: [ref] float, p: ref) returns (float) { M[p] } +function {:inline} $store.float(M: [ref] float, p: ref, f: float) returns ([ref] float) { M[p := f] } +function {:inline} $load.unsafe.float(M: [ref] i8, p: ref) returns (float) { $bitcast.i8.float(M[p]) } +function {:inline} $store.unsafe.float(M: [ref] i8, p: ref, f: float) returns ([ref] i8) { M[p := $bitcast.float.i8(f)] } +function $extractvalue.float(p: ref, i: int) returns (float); +const {:allocSize 4} data: ref; +axiom (data == $sub.ref(0, 1028)); +const thread2: ref; +axiom (thread2 == $sub.ref(0, 2060)); +procedure thread2($p0: ref) + returns ($r: ref) +{ +$bb0: + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining.c", 17, 1} true; + assume {:verifier.code 0} true; + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining.c", 17, 1} true; + assume {:verifier.code 0} true; + call __llvm_atomic32_store(data, 42, 5); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining.c", 17, 1} true; + assume {:verifier.code 0} true; + $r := $u0; + $exn := false; + return; +} +const llvm.dbg.value: ref; +axiom (llvm.dbg.value == $sub.ref(0, 3092)); +procedure llvm.dbg.value($p0: ref, $p1: ref, $p2: ref); +const __llvm_atomic32_store: ref; +axiom (__llvm_atomic32_store == $sub.ref(0, 4124)); +procedure __llvm_atomic32_store($p0: ref, $i1: i32, $i2: i32); +const threadCreator: ref; +axiom (threadCreator == $sub.ref(0, 5156)); +procedure threadCreator($p0: ref) +{ + var $i1: i32; +$bb0: + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining.c", 20, 4} true; + assume {:verifier.code 0} true; + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining.c", 20, 4} true; + assume {:verifier.code 0} true; + call $i1 := pthread_create($p0, $0.ref, thread2, $0.ref); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining.c", 21, 1} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const pthread_create: ref; +axiom (pthread_create == $sub.ref(0, 6188)); +procedure pthread_create($p0: ref, $p1: ref, $p2: ref, $p3: ref) + returns ($r: i32); +const thread1: ref; +axiom (thread1 == $sub.ref(0, 7220)); +procedure thread1($p0: ref) + returns ($r: ref) +{ + var $p1: ref; + var $p2: ref; + var $i3: i32; +$bb0: + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining.c", 26, 5} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + call $p1 := $alloc($mul.ref(8, $zext.i32.i64(1))); + assume true; + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining.c", 26, 5} true; + assume {:verifier.code 0} true; + call threadCreator($p1); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining.c", 27, 18} true; + assume {:verifier.code 0} true; + $p2 := $load.ref($M.0, $p1); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining.c", 27, 5} true; + assume {:verifier.code 0} true; + call $i3 := __pthread_join($p2, $0.ref); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining.c", 28, 1} true; + assume {:verifier.code 0} true; + $r := $u0; + $exn := false; + return; +} +const llvm.dbg.declare: ref; +axiom (llvm.dbg.declare == $sub.ref(0, 8252)); +procedure llvm.dbg.declare($p0: ref, $p1: ref, $p2: ref); +const __pthread_join: ref; +axiom (__pthread_join == $sub.ref(0, 9284)); +procedure __pthread_join($p0: ref, $p1: ref) + returns ($r: i32); +const main: ref; +axiom (main == $sub.ref(0, 10316)); +procedure {:entrypoint} main() + returns ($r: i32) +{ + var $p0: ref; + var $i1: i32; + var $p2: ref; + var $i3: i32; + var $i4: i32; + var $i5: i1; + var $i6: i32; + var $i7: i32; +$bb0: + call $initialize(); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining.c", 33, 5} true; + assume {:verifier.code 0} true; + call {:cexpr "smack:entry:main"} boogie_si_record_ref(main); + assume {:verifier.code 0} true; + call $p0 := $alloc($mul.ref(8, $zext.i32.i64(1))); + assume true; + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining.c", 33, 5} true; + assume {:verifier.code 0} true; + call $i1 := pthread_create($p0, $0.ref, thread1, $0.ref); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining.c", 34, 18} true; + assume {:verifier.code 0} true; + $p2 := $load.ref($M.0, $p0); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining.c", 34, 5} true; + assume {:verifier.code 0} true; + call $i3 := __pthread_join($p2, $0.ref); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining.c", 36, 17} true; + assume {:verifier.code 0} true; + call $i4 := __llvm_atomic32_load(data, 5); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining.c", 36, 17} true; + assume {:verifier.code 0} true; + $i5 := $eq.i32($i4, 42); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining.c", 36, 17} true; + assume {:verifier.code 0} true; + $i6 := $zext.i1.i32($i5); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining.c", 36, 5} true; + assume {:verifier.code 0} true; + call $i7 := assert_.i32($i6); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining.c", 37, 1} true; + assume {:verifier.code 0} true; + $r := 0; + $exn := false; + return; +} +const __llvm_atomic32_load: ref; +axiom (__llvm_atomic32_load == $sub.ref(0, 11348)); +procedure __llvm_atomic32_load($p0: ref, $i1: i32) + returns ($r: i32); +const assert_: ref; +axiom (assert_ == $sub.ref(0, 12380)); +procedure assert_.i32(p.0: i32) + returns ($r: i32); +const __SMACK_code: ref; +axiom (__SMACK_code == $sub.ref(0, 13412)); +procedure __SMACK_code.ref($p0: ref); +procedure __SMACK_code.ref.i32($p0: ref, p.1: i32); +const __VERIFIER_assume: ref; +axiom (__VERIFIER_assume == $sub.ref(0, 14444)); +procedure __VERIFIER_assume($i0: i32) +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + call {:cexpr "__VERIFIER_assume:arg:x"} boogie_si_record_i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + assume true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 45, 3} true; + assume {:verifier.code 1} true; + assume $i0 != $0; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 46, 1} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_dummy: ref; +axiom (__SMACK_dummy == $sub.ref(0, 15476)); +procedure __SMACK_dummy($i0: i32) +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_dummy:arg:v"} boogie_si_record_i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + assume true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 59} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_and32: ref; +axiom (__SMACK_and32 == $sub.ref(0, 16508)); +procedure __SMACK_and32($i0: i32, $i1: i32) + returns ($r: i32) +{ + var $i2: i32; + var $i3: i1; + var $i5: i1; + var $i6: i1; + var $i8: i32; + var $i7: i32; + var $i4: i32; + var $i9: i64; + var $i10: i64; + var $i11: i32; + var $i12: i32; + var $i13: i64; + var $i14: i64; + var $i15: i32; + var $i16: i32; + var $i17: i32; + var $i18: i1; + var $i20: i1; + var $i21: i1; + var $i23: i32; + var $i22: i32; + var $i19: i32; + var $i24: i64; + var $i25: i64; + var $i26: i32; + var $i27: i32; + var $i28: i64; + var $i29: i64; + var $i30: i32; + var $i31: i32; + var $i32: i32; + var $i33: i1; + var $i35: i1; + var $i36: i1; + var $i38: i32; + var $i37: i32; + var $i34: i32; + var $i39: i64; + var $i40: i64; + var $i41: i32; + var $i42: i32; + var $i43: i64; + var $i44: i64; + var $i45: i32; + var $i46: i32; + var $i47: i32; + var $i48: i1; + var $i50: i1; + var $i51: i1; + var $i53: i32; + var $i52: i32; + var $i49: i32; + var $i54: i64; + var $i55: i64; + var $i56: i32; + var $i57: i32; + var $i58: i64; + var $i59: i64; + var $i60: i32; + var $i61: i32; + var $i62: i32; + var $i63: i1; + var $i65: i1; + var $i66: i1; + var $i68: i32; + var $i67: i32; + var $i64: i32; + var $i69: i64; + var $i70: i64; + var $i71: i32; + var $i72: i32; + var $i73: i64; + var $i74: i64; + var $i75: i32; + var $i76: i32; + var $i77: i32; + var $i78: i1; + var $i80: i1; + var $i81: i1; + var $i83: i32; + var $i82: i32; + var $i79: i32; + var $i84: i64; + var $i85: i64; + var $i86: i32; + var $i87: i32; + var $i88: i64; + var $i89: i64; + var $i90: i32; + var $i91: i32; + var $i92: i32; + var $i93: i1; + var $i95: i1; + var $i96: i1; + var $i98: i32; + var $i97: i32; + var $i94: i32; + var $i99: i64; + var $i100: i64; + var $i101: i32; + var $i102: i32; + var $i103: i64; + var $i104: i64; + var $i105: i32; + var $i106: i32; + var $i107: i32; + var $i108: i1; + var $i110: i1; + var $i111: i1; + var $i113: i32; + var $i112: i32; + var $i109: i32; + var $i114: i64; + var $i115: i64; + var $i116: i32; + var $i117: i32; + var $i118: i64; + var $i119: i64; + var $i120: i32; + var $i121: i32; + var $i122: i32; + var $i123: i1; + var $i125: i1; + var $i126: i1; + var $i128: i32; + var $i127: i32; + var $i124: i32; + var $i129: i64; + var $i130: i64; + var $i131: i32; + var $i132: i32; + var $i133: i64; + var $i134: i64; + var $i135: i32; + var $i136: i32; + var $i137: i32; + var $i138: i1; + var $i140: i1; + var $i141: i1; + var $i143: i32; + var $i142: i32; + var $i139: i32; + var $i144: i64; + var $i145: i64; + var $i146: i32; + var $i147: i32; + var $i148: i64; + var $i149: i64; + var $i150: i32; + var $i151: i32; + var $i152: i32; + var $i153: i1; + var $i155: i1; + var $i156: i1; + var $i158: i32; + var $i157: i32; + var $i154: i32; + var $i159: i64; + var $i160: i64; + var $i161: i32; + var $i162: i32; + var $i163: i64; + var $i164: i64; + var $i165: i32; + var $i166: i32; + var $i167: i32; + var $i168: i1; + var $i170: i1; + var $i171: i1; + var $i173: i32; + var $i172: i32; + var $i169: i32; + var $i174: i64; + var $i175: i64; + var $i176: i32; + var $i177: i32; + var $i178: i64; + var $i179: i64; + var $i180: i32; + var $i181: i32; + var $i182: i32; + var $i183: i1; + var $i185: i1; + var $i186: i1; + var $i188: i32; + var $i187: i32; + var $i184: i32; + var $i189: i64; + var $i190: i64; + var $i191: i32; + var $i192: i32; + var $i193: i64; + var $i194: i64; + var $i195: i32; + var $i196: i32; + var $i197: i32; + var $i198: i1; + var $i200: i1; + var $i201: i1; + var $i203: i32; + var $i202: i32; + var $i199: i32; + var $i204: i64; + var $i205: i64; + var $i206: i32; + var $i207: i32; + var $i208: i64; + var $i209: i64; + var $i210: i32; + var $i211: i32; + var $i212: i32; + var $i213: i1; + var $i215: i1; + var $i216: i1; + var $i218: i32; + var $i217: i32; + var $i214: i32; + var $i219: i64; + var $i220: i64; + var $i221: i32; + var $i222: i32; + var $i223: i64; + var $i224: i64; + var $i225: i32; + var $i226: i32; + var $i227: i32; + var $i228: i1; + var $i230: i1; + var $i231: i1; + var $i233: i32; + var $i232: i32; + var $i229: i32; + var $i234: i64; + var $i235: i64; + var $i236: i32; + var $i237: i32; + var $i238: i64; + var $i239: i64; + var $i240: i32; + var $i241: i32; + var $i242: i32; + var $i243: i1; + var $i245: i1; + var $i246: i1; + var $i248: i32; + var $i247: i32; + var $i244: i32; + var $i249: i64; + var $i250: i64; + var $i251: i32; + var $i252: i32; + var $i253: i64; + var $i254: i64; + var $i255: i32; + var $i256: i32; + var $i257: i32; + var $i258: i1; + var $i260: i1; + var $i261: i1; + var $i263: i32; + var $i262: i32; + var $i259: i32; + var $i264: i64; + var $i265: i64; + var $i266: i32; + var $i267: i32; + var $i268: i64; + var $i269: i64; + var $i270: i32; + var $i271: i32; + var $i272: i32; + var $i273: i1; + var $i275: i1; + var $i276: i1; + var $i278: i32; + var $i277: i32; + var $i274: i32; + var $i279: i64; + var $i280: i64; + var $i281: i32; + var $i282: i32; + var $i283: i64; + var $i284: i64; + var $i285: i32; + var $i286: i32; + var $i287: i32; + var $i288: i1; + var $i290: i1; + var $i291: i1; + var $i293: i32; + var $i292: i32; + var $i289: i32; + var $i294: i64; + var $i295: i64; + var $i296: i32; + var $i297: i32; + var $i298: i64; + var $i299: i64; + var $i300: i32; + var $i301: i32; + var $i302: i32; + var $i303: i1; + var $i305: i1; + var $i306: i1; + var $i308: i32; + var $i307: i32; + var $i304: i32; + var $i309: i64; + var $i310: i64; + var $i311: i32; + var $i312: i32; + var $i313: i64; + var $i314: i64; + var $i315: i32; + var $i316: i32; + var $i317: i32; + var $i318: i1; + var $i320: i1; + var $i321: i1; + var $i323: i32; + var $i322: i32; + var $i319: i32; + var $i324: i64; + var $i325: i64; + var $i326: i32; + var $i327: i32; + var $i328: i64; + var $i329: i64; + var $i330: i32; + var $i331: i32; + var $i332: i32; + var $i333: i1; + var $i335: i1; + var $i336: i1; + var $i338: i32; + var $i337: i32; + var $i334: i32; + var $i339: i64; + var $i340: i64; + var $i341: i32; + var $i342: i32; + var $i343: i64; + var $i344: i64; + var $i345: i32; + var $i346: i32; + var $i347: i32; + var $i348: i1; + var $i350: i1; + var $i351: i1; + var $i353: i32; + var $i352: i32; + var $i349: i32; + var $i354: i64; + var $i355: i64; + var $i356: i32; + var $i357: i32; + var $i358: i64; + var $i359: i64; + var $i360: i32; + var $i361: i32; + var $i362: i32; + var $i363: i1; + var $i365: i1; + var $i366: i1; + var $i368: i32; + var $i367: i32; + var $i364: i32; + var $i369: i64; + var $i370: i64; + var $i371: i32; + var $i372: i32; + var $i373: i64; + var $i374: i64; + var $i375: i32; + var $i376: i32; + var $i377: i32; + var $i378: i1; + var $i380: i1; + var $i381: i1; + var $i383: i32; + var $i382: i32; + var $i379: i32; + var $i384: i64; + var $i385: i64; + var $i386: i32; + var $i387: i32; + var $i388: i64; + var $i389: i64; + var $i390: i32; + var $i391: i32; + var $i392: i32; + var $i393: i1; + var $i395: i1; + var $i396: i1; + var $i398: i32; + var $i397: i32; + var $i394: i32; + var $i399: i64; + var $i400: i64; + var $i401: i32; + var $i402: i32; + var $i403: i64; + var $i404: i64; + var $i405: i32; + var $i406: i32; + var $i407: i32; + var $i408: i1; + var $i410: i1; + var $i411: i1; + var $i413: i32; + var $i412: i32; + var $i409: i32; + var $i414: i64; + var $i415: i64; + var $i416: i32; + var $i417: i32; + var $i418: i64; + var $i419: i64; + var $i420: i32; + var $i421: i32; + var $i422: i32; + var $i423: i1; + var $i425: i1; + var $i426: i1; + var $i428: i32; + var $i427: i32; + var $i424: i32; + var $i429: i64; + var $i430: i64; + var $i431: i32; + var $i432: i32; + var $i433: i64; + var $i434: i64; + var $i435: i32; + var $i436: i32; + var $i437: i32; + var $i438: i1; + var $i440: i1; + var $i441: i1; + var $i443: i32; + var $i442: i32; + var $i439: i32; + var $i444: i64; + var $i445: i64; + var $i446: i32; + var $i447: i32; + var $i448: i64; + var $i449: i64; + var $i450: i32; + var $i451: i32; + var $i452: i32; + var $i453: i1; + var $i455: i1; + var $i456: i1; + var $i458: i32; + var $i457: i32; + var $i454: i32; + var $i459: i64; + var $i460: i64; + var $i461: i32; + var $i462: i32; + var $i463: i64; + var $i464: i64; + var $i465: i32; + var $i466: i32; + var $i467: i32; + var $i468: i1; + var $i470: i1; + var $i471: i1; + var $i473: i32; + var $i472: i32; + var $i469: i32; + var $i474: i64; + var $i475: i64; + var $i476: i32; + var $i477: i32; + var $i478: i64; + var $i479: i64; + var $i480: i32; + var $i481: i32; + var $i482: i32; + var $i483: i1; + var $i485: i1; + var $i486: i1; + var $i488: i32; + var $i487: i32; + var $i484: i32; + var $i489: i64; + var $i490: i64; + var $i491: i32; + var $i492: i32; + var $i493: i64; + var $i494: i64; + var $i495: i32; + var $i496: i32; + var $i497: i32; + var $i498: i1; + var $i500: i1; + var $i501: i1; + var $i503: i32; + var $i502: i32; + var $i499: i32; + var $i504: i64; + var $i505: i64; + var $i506: i32; + var $i507: i32; + var $i508: i64; + var $i509: i64; + var $i510: i32; + var $i511: i32; + var $i512: i32; + var $i513: i1; + var $i515: i1; + var $i516: i1; + var $i518: i32; + var $i517: i32; + var $i514: i32; + var $i519: i64; + var $i520: i64; + var $i521: i32; + var $i522: i32; + var $i523: i64; + var $i524: i64; + var $i525: i32; + var $i526: i32; + var $i527: i32; + var $i528: i1; + var $i530: i1; + var $i531: i1; + var $i533: i32; + var $i532: i32; + var $i529: i32; + var $i534: i64; + var $i535: i64; + var $i536: i32; + var $i537: i32; + var $i538: i64; + var $i539: i64; + var $i540: i32; + var $i541: i32; + var $i542: i32; + var $i543: i1; + var $i545: i1; + var $i546: i1; + var $i548: i32; + var $i547: i32; + var $i544: i32; + var $i549: i64; + var $i550: i64; + var $i551: i32; + var $i552: i32; + var $i553: i64; + var $i554: i64; + var $i555: i32; + var $i556: i32; + var $i557: i32; + var $i558: i1; + var $i560: i1; + var $i561: i1; + var $i563: i32; + var $i562: i32; + var $i559: i32; + var $i564: i64; + var $i565: i64; + var $i566: i32; + var $i567: i32; + var $i568: i64; + var $i569: i64; + var $i570: i32; + var $i571: i32; + var $i572: i32; + var $i573: i1; + var $i575: i1; + var $i576: i1; + var $i578: i32; + var $i577: i32; + var $i574: i32; + var $i579: i64; + var $i580: i64; + var $i581: i32; + var $i582: i32; + var $i583: i64; + var $i584: i64; + var $i585: i32; + var $i586: i32; + var $i587: i32; + var $i588: i1; + var $i590: i1; + var $i591: i1; + var $i593: i32; + var $i592: i32; + var $i589: i32; + var $i594: i64; + var $i595: i64; + var $i596: i32; + var $i597: i32; + var $i598: i64; + var $i599: i64; + var $i600: i32; + var $i601: i32; + var $i602: i32; + var $i603: i1; + var $i605: i1; + var $i606: i1; + var $i608: i32; + var $i607: i32; + var $i604: i32; + var $i609: i64; + var $i610: i64; + var $i611: i32; + var $i612: i32; + var $i613: i64; + var $i614: i64; + var $i615: i32; + var $i616: i32; + var $i617: i32; + var $i618: i1; + var $i620: i1; + var $i621: i1; + var $i623: i32; + var $i622: i32; + var $i619: i32; + var $i624: i64; + var $i625: i64; + var $i626: i32; + var $i627: i32; + var $i628: i64; + var $i629: i64; + var $i630: i32; + var $i631: i32; + var $i632: i32; + var $i633: i1; + var $i635: i1; + var $i636: i1; + var $i638: i32; + var $i637: i32; + var $i634: i32; + var $i639: i64; + var $i640: i64; + var $i641: i32; + var $i642: i32; + var $i643: i64; + var $i644: i64; + var $i645: i32; + var $i646: i32; + var $i647: i32; + var $i648: i1; + var $i650: i1; + var $i651: i1; + var $i653: i32; + var $i652: i32; + var $i649: i32; + var $i654: i64; + var $i655: i64; + var $i656: i32; + var $i657: i32; + var $i658: i64; + var $i659: i64; + var $i660: i32; + var $i661: i32; + var $i662: i32; + var $i663: i1; + var $i665: i1; + var $i666: i1; + var $i668: i32; + var $i667: i32; + var $i664: i32; + var $i669: i64; + var $i670: i64; + var $i671: i32; + var $i672: i32; + var $i673: i64; + var $i674: i64; + var $i675: i32; + var $i676: i32; + var $i677: i32; + var $i678: i1; + var $i680: i1; + var $i681: i1; + var $i683: i32; + var $i682: i32; + var $i679: i32; + var $i684: i64; + var $i685: i64; + var $i686: i32; + var $i687: i32; + var $i688: i64; + var $i689: i64; + var $i690: i32; + var $i691: i32; + var $i692: i32; + var $i693: i1; + var $i695: i1; + var $i696: i1; + var $i698: i32; + var $i697: i32; + var $i694: i32; + var $i699: i64; + var $i700: i64; + var $i701: i32; + var $i702: i32; + var $i703: i64; + var $i704: i64; + var $i705: i32; + var $i706: i32; + var $i707: i32; + var $i708: i1; + var $i710: i1; + var $i711: i1; + var $i713: i32; + var $i712: i32; + var $i709: i32; + var $i714: i64; + var $i715: i64; + var $i716: i32; + var $i717: i32; + var $i718: i64; + var $i719: i64; + var $i720: i32; + var $i721: i32; + var $i722: i32; + var $i723: i1; + var $i725: i1; + var $i726: i1; + var $i728: i32; + var $i727: i32; + var $i724: i32; + var $i729: i64; + var $i730: i64; + var $i731: i32; + var $i732: i32; + var $i733: i64; + var $i734: i64; + var $i735: i32; + var $i736: i32; + var $i737: i32; + var $i738: i1; + var $i740: i1; + var $i741: i1; + var $i743: i32; + var $i742: i32; + var $i739: i32; + var $i744: i64; + var $i745: i64; + var $i746: i32; + var $i747: i32; + var $i748: i64; + var $i749: i64; + var $i750: i32; + var $i751: i32; + var $i752: i32; + var $i753: i1; + var $i755: i1; + var $i756: i1; + var $i758: i32; + var $i757: i32; + var $i754: i32; + var $i759: i64; + var $i760: i64; + var $i761: i32; + var $i762: i32; + var $i763: i64; + var $i764: i64; + var $i765: i32; + var $i766: i32; + var $i767: i32; + var $i768: i1; + var $i770: i1; + var $i771: i1; + var $i773: i32; + var $i772: i32; + var $i769: i32; + var $i774: i64; + var $i775: i64; + var $i776: i32; + var $i777: i32; + var $i778: i64; + var $i779: i64; + var $i780: i32; + var $i781: i32; + var $i782: i32; + var $i783: i1; + var $i785: i1; + var $i786: i1; + var $i788: i32; + var $i787: i32; + var $i784: i32; + var $i789: i64; + var $i790: i64; + var $i791: i32; + var $i792: i32; + var $i793: i64; + var $i794: i64; + var $i795: i32; + var $i796: i32; + var $i797: i32; + var $i798: i1; + var $i800: i1; + var $i801: i1; + var $i803: i32; + var $i802: i32; + var $i799: i32; + var $i804: i64; + var $i805: i64; + var $i806: i32; + var $i807: i32; + var $i808: i64; + var $i809: i64; + var $i810: i32; + var $i811: i32; + var $i812: i32; + var $i813: i1; + var $i815: i1; + var $i816: i1; + var $i818: i32; + var $i817: i32; + var $i814: i32; + var $i819: i64; + var $i820: i64; + var $i821: i32; + var $i822: i32; + var $i823: i64; + var $i824: i64; + var $i825: i32; + var $i826: i32; + var $i827: i32; + var $i828: i1; + var $i830: i1; + var $i831: i1; + var $i833: i32; + var $i832: i32; + var $i829: i32; + var $i834: i64; + var $i835: i64; + var $i836: i32; + var $i837: i32; + var $i838: i64; + var $i839: i64; + var $i840: i32; + var $i841: i32; + var $i842: i32; + var $i843: i1; + var $i845: i1; + var $i846: i1; + var $i848: i32; + var $i847: i32; + var $i844: i32; + var $i849: i64; + var $i850: i64; + var $i851: i32; + var $i852: i32; + var $i853: i64; + var $i854: i64; + var $i855: i32; + var $i856: i32; + var $i857: i32; + var $i858: i1; + var $i860: i1; + var $i861: i1; + var $i863: i32; + var $i862: i32; + var $i859: i32; + var $i864: i64; + var $i865: i64; + var $i866: i32; + var $i867: i32; + var $i868: i64; + var $i869: i64; + var $i870: i32; + var $i871: i32; + var $i872: i32; + var $i873: i1; + var $i875: i1; + var $i876: i1; + var $i878: i32; + var $i877: i32; + var $i874: i32; + var $i879: i64; + var $i880: i64; + var $i881: i32; + var $i882: i32; + var $i883: i64; + var $i884: i64; + var $i885: i32; + var $i886: i32; + var $i887: i32; + var $i888: i1; + var $i890: i1; + var $i891: i1; + var $i893: i32; + var $i892: i32; + var $i889: i32; + var $i894: i64; + var $i895: i64; + var $i896: i32; + var $i897: i32; + var $i898: i64; + var $i899: i64; + var $i900: i32; + var $i901: i32; + var $i902: i32; + var $i903: i1; + var $i905: i1; + var $i906: i1; + var $i908: i32; + var $i907: i32; + var $i904: i32; + var $i909: i64; + var $i910: i64; + var $i911: i32; + var $i912: i32; + var $i913: i64; + var $i914: i64; + var $i915: i32; + var $i916: i32; + var $i917: i32; + var $i918: i1; + var $i920: i1; + var $i921: i1; + var $i923: i32; + var $i922: i32; + var $i919: i32; + var $i924: i64; + var $i925: i64; + var $i926: i32; + var $i927: i32; + var $i928: i64; + var $i929: i64; + var $i930: i32; + var $i931: i32; + var $i932: i32; + var $i933: i1; + var $i935: i1; + var $i936: i1; + var $i938: i32; + var $i937: i32; + var $i934: i32; + var $i939: i64; + var $i940: i64; + var $i941: i32; + var $i942: i32; + var $i943: i64; + var $i944: i64; + var $i945: i32; + var $i946: i32; + var $i947: i32; + var $i948: i1; + var $i950: i1; + var $i951: i1; + var $i953: i32; + var $i952: i32; + var $i949: i32; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 60, 5} true; + assume {:verifier.code 0} true; + call {:cexpr "__SMACK_and32:arg:a"} boogie_si_record_i32($i0); + call {:cexpr "__SMACK_and32:arg:b"} boogie_si_record_i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 60, 5} true; + assume {:verifier.code 0} true; + $i2 := $add.i32(0, 0); + call {:cexpr "c"} boogie_si_record_i32($i2); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 61, 9} true; + assume {:verifier.code 0} true; + $i3 := $slt.i32($i0, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 61, 7} true; + assume {:verifier.code 0} true; + $i4 := $i2; + assume {:branchcond $i3} true; + goto $bb1, $bb2; +$bb1: + assume ($i3 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 11} true; + assume {:verifier.code 0} true; + $i5 := $slt.i32($i1, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i5} true; + goto $bb4, $bb6; +$bb2: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 61, 7} true; + assume {:verifier.code 0} true; + assume !(($i3 == 1)); + goto $bb3; +$bb3: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 66, 7} true; + assume {:verifier.code 0} true; + $i9 := $sext.i32.i64($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 66, 9} true; + assume {:verifier.code 0} true; + $i10 := $srem.i64($i9, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 66, 7} true; + assume {:verifier.code 0} true; + $i11 := $trunc.i64.i32($i10); + call {:cexpr "a"} boogie_si_record_i32($i11); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 67, 5} true; + assume {:verifier.code 0} true; + $i12 := $add.i32($i11, $i11); + call {:cexpr "a"} boogie_si_record_i32($i12); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 68, 7} true; + assume {:verifier.code 0} true; + $i13 := $sext.i32.i64($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 68, 9} true; + assume {:verifier.code 0} true; + $i14 := $srem.i64($i13, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 68, 7} true; + assume {:verifier.code 0} true; + $i15 := $trunc.i64.i32($i14); + call {:cexpr "b"} boogie_si_record_i32($i15); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 69, 5} true; + assume {:verifier.code 0} true; + $i16 := $add.i32($i15, $i15); + call {:cexpr "b"} boogie_si_record_i32($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 71, 5} true; + assume {:verifier.code 0} true; + $i17 := $add.i32($i4, $i4); + call {:cexpr "c"} boogie_si_record_i32($i17); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 72, 9} true; + assume {:verifier.code 0} true; + $i18 := $slt.i32($i12, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 72, 7} true; + assume {:verifier.code 0} true; + $i19 := $i17; + assume {:branchcond $i18} true; + goto $bb10, $bb11; +$bb4: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 15} true; + assume {:verifier.code 0} true; + assume ($i5 == 1); + goto $bb5; +$bb5: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 63, 9} true; + assume {:verifier.code 0} true; + $i8 := $add.i32($i2, 1); + call {:cexpr "c"} boogie_si_record_i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 64, 5} true; + assume {:verifier.code 0} true; + $i7 := $i8; + goto $bb9; +$bb6: + assume !(($i5 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 20} true; + assume {:verifier.code 0} true; + $i6 := $sgt.i32($i1, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 9} true; + assume {:verifier.code 0} true; + $i7 := $i2; + assume {:branchcond $i6} true; + goto $bb7, $bb8; +$bb7: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 9} true; + assume {:verifier.code 0} true; + assume ($i6 == 1); + goto $bb5; +$bb8: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 9} true; + assume {:verifier.code 0} true; + assume !(($i6 == 1)); + goto $bb9; +$bb9: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 65, 3} true; + assume {:verifier.code 0} true; + $i4 := $i7; + goto $bb3; +$bb10: + assume ($i18 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 11} true; + assume {:verifier.code 0} true; + $i20 := $slt.i32($i16, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i20} true; + goto $bb13, $bb15; +$bb11: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 72, 7} true; + assume {:verifier.code 0} true; + assume !(($i18 == 1)); + goto $bb12; +$bb12: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 77, 7} true; + assume {:verifier.code 0} true; + $i24 := $sext.i32.i64($i12); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 77, 9} true; + assume {:verifier.code 0} true; + $i25 := $srem.i64($i24, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 77, 7} true; + assume {:verifier.code 0} true; + $i26 := $trunc.i64.i32($i25); + call {:cexpr "a"} boogie_si_record_i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 78, 5} true; + assume {:verifier.code 0} true; + $i27 := $add.i32($i26, $i26); + call {:cexpr "a"} boogie_si_record_i32($i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 79, 7} true; + assume {:verifier.code 0} true; + $i28 := $sext.i32.i64($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 79, 9} true; + assume {:verifier.code 0} true; + $i29 := $srem.i64($i28, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 79, 7} true; + assume {:verifier.code 0} true; + $i30 := $trunc.i64.i32($i29); + call {:cexpr "b"} boogie_si_record_i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 80, 5} true; + assume {:verifier.code 0} true; + $i31 := $add.i32($i30, $i30); + call {:cexpr "b"} boogie_si_record_i32($i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 82, 5} true; + assume {:verifier.code 0} true; + $i32 := $add.i32($i19, $i19); + call {:cexpr "c"} boogie_si_record_i32($i32); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 83, 9} true; + assume {:verifier.code 0} true; + $i33 := $slt.i32($i27, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 83, 7} true; + assume {:verifier.code 0} true; + $i34 := $i32; + assume {:branchcond $i33} true; + goto $bb19, $bb20; +$bb13: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 15} true; + assume {:verifier.code 0} true; + assume ($i20 == 1); + goto $bb14; +$bb14: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 74, 9} true; + assume {:verifier.code 0} true; + $i23 := $add.i32($i17, 1); + call {:cexpr "c"} boogie_si_record_i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 75, 5} true; + assume {:verifier.code 0} true; + $i22 := $i23; + goto $bb18; +$bb15: + assume !(($i20 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 20} true; + assume {:verifier.code 0} true; + $i21 := $sgt.i32($i16, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 9} true; + assume {:verifier.code 0} true; + $i22 := $i17; + assume {:branchcond $i21} true; + goto $bb16, $bb17; +$bb16: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 9} true; + assume {:verifier.code 0} true; + assume ($i21 == 1); + goto $bb14; +$bb17: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 9} true; + assume {:verifier.code 0} true; + assume !(($i21 == 1)); + goto $bb18; +$bb18: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 76, 3} true; + assume {:verifier.code 0} true; + $i19 := $i22; + goto $bb12; +$bb19: + assume ($i33 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 11} true; + assume {:verifier.code 0} true; + $i35 := $slt.i32($i31, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i35} true; + goto $bb22, $bb24; +$bb20: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 83, 7} true; + assume {:verifier.code 0} true; + assume !(($i33 == 1)); + goto $bb21; +$bb21: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 88, 7} true; + assume {:verifier.code 0} true; + $i39 := $sext.i32.i64($i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 88, 9} true; + assume {:verifier.code 0} true; + $i40 := $srem.i64($i39, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 88, 7} true; + assume {:verifier.code 0} true; + $i41 := $trunc.i64.i32($i40); + call {:cexpr "a"} boogie_si_record_i32($i41); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 89, 5} true; + assume {:verifier.code 0} true; + $i42 := $add.i32($i41, $i41); + call {:cexpr "a"} boogie_si_record_i32($i42); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 90, 7} true; + assume {:verifier.code 0} true; + $i43 := $sext.i32.i64($i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 90, 9} true; + assume {:verifier.code 0} true; + $i44 := $srem.i64($i43, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 90, 7} true; + assume {:verifier.code 0} true; + $i45 := $trunc.i64.i32($i44); + call {:cexpr "b"} boogie_si_record_i32($i45); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 91, 5} true; + assume {:verifier.code 0} true; + $i46 := $add.i32($i45, $i45); + call {:cexpr "b"} boogie_si_record_i32($i46); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 93, 5} true; + assume {:verifier.code 0} true; + $i47 := $add.i32($i34, $i34); + call {:cexpr "c"} boogie_si_record_i32($i47); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 94, 9} true; + assume {:verifier.code 0} true; + $i48 := $slt.i32($i42, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 94, 7} true; + assume {:verifier.code 0} true; + $i49 := $i47; + assume {:branchcond $i48} true; + goto $bb28, $bb29; +$bb22: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 15} true; + assume {:verifier.code 0} true; + assume ($i35 == 1); + goto $bb23; +$bb23: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 85, 9} true; + assume {:verifier.code 0} true; + $i38 := $add.i32($i32, 1); + call {:cexpr "c"} boogie_si_record_i32($i38); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 86, 5} true; + assume {:verifier.code 0} true; + $i37 := $i38; + goto $bb27; +$bb24: + assume !(($i35 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 20} true; + assume {:verifier.code 0} true; + $i36 := $sgt.i32($i31, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 9} true; + assume {:verifier.code 0} true; + $i37 := $i32; + assume {:branchcond $i36} true; + goto $bb25, $bb26; +$bb25: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 9} true; + assume {:verifier.code 0} true; + assume ($i36 == 1); + goto $bb23; +$bb26: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 9} true; + assume {:verifier.code 0} true; + assume !(($i36 == 1)); + goto $bb27; +$bb27: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 87, 3} true; + assume {:verifier.code 0} true; + $i34 := $i37; + goto $bb21; +$bb28: + assume ($i48 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 11} true; + assume {:verifier.code 0} true; + $i50 := $slt.i32($i46, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i50} true; + goto $bb31, $bb33; +$bb29: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 94, 7} true; + assume {:verifier.code 0} true; + assume !(($i48 == 1)); + goto $bb30; +$bb30: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 99, 7} true; + assume {:verifier.code 0} true; + $i54 := $sext.i32.i64($i42); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 99, 9} true; + assume {:verifier.code 0} true; + $i55 := $srem.i64($i54, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 99, 7} true; + assume {:verifier.code 0} true; + $i56 := $trunc.i64.i32($i55); + call {:cexpr "a"} boogie_si_record_i32($i56); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 100, 5} true; + assume {:verifier.code 0} true; + $i57 := $add.i32($i56, $i56); + call {:cexpr "a"} boogie_si_record_i32($i57); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 101, 7} true; + assume {:verifier.code 0} true; + $i58 := $sext.i32.i64($i46); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 101, 9} true; + assume {:verifier.code 0} true; + $i59 := $srem.i64($i58, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 101, 7} true; + assume {:verifier.code 0} true; + $i60 := $trunc.i64.i32($i59); + call {:cexpr "b"} boogie_si_record_i32($i60); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 102, 5} true; + assume {:verifier.code 0} true; + $i61 := $add.i32($i60, $i60); + call {:cexpr "b"} boogie_si_record_i32($i61); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 104, 5} true; + assume {:verifier.code 0} true; + $i62 := $add.i32($i49, $i49); + call {:cexpr "c"} boogie_si_record_i32($i62); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 105, 9} true; + assume {:verifier.code 0} true; + $i63 := $slt.i32($i57, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 105, 7} true; + assume {:verifier.code 0} true; + $i64 := $i62; + assume {:branchcond $i63} true; + goto $bb37, $bb38; +$bb31: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 15} true; + assume {:verifier.code 0} true; + assume ($i50 == 1); + goto $bb32; +$bb32: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 96, 9} true; + assume {:verifier.code 0} true; + $i53 := $add.i32($i47, 1); + call {:cexpr "c"} boogie_si_record_i32($i53); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 97, 5} true; + assume {:verifier.code 0} true; + $i52 := $i53; + goto $bb36; +$bb33: + assume !(($i50 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 20} true; + assume {:verifier.code 0} true; + $i51 := $sgt.i32($i46, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 9} true; + assume {:verifier.code 0} true; + $i52 := $i47; + assume {:branchcond $i51} true; + goto $bb34, $bb35; +$bb34: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 9} true; + assume {:verifier.code 0} true; + assume ($i51 == 1); + goto $bb32; +$bb35: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 9} true; + assume {:verifier.code 0} true; + assume !(($i51 == 1)); + goto $bb36; +$bb36: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 98, 3} true; + assume {:verifier.code 0} true; + $i49 := $i52; + goto $bb30; +$bb37: + assume ($i63 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 11} true; + assume {:verifier.code 0} true; + $i65 := $slt.i32($i61, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i65} true; + goto $bb40, $bb42; +$bb38: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 105, 7} true; + assume {:verifier.code 0} true; + assume !(($i63 == 1)); + goto $bb39; +$bb39: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 110, 7} true; + assume {:verifier.code 0} true; + $i69 := $sext.i32.i64($i57); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 110, 9} true; + assume {:verifier.code 0} true; + $i70 := $srem.i64($i69, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 110, 7} true; + assume {:verifier.code 0} true; + $i71 := $trunc.i64.i32($i70); + call {:cexpr "a"} boogie_si_record_i32($i71); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 111, 5} true; + assume {:verifier.code 0} true; + $i72 := $add.i32($i71, $i71); + call {:cexpr "a"} boogie_si_record_i32($i72); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 112, 7} true; + assume {:verifier.code 0} true; + $i73 := $sext.i32.i64($i61); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 112, 9} true; + assume {:verifier.code 0} true; + $i74 := $srem.i64($i73, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 112, 7} true; + assume {:verifier.code 0} true; + $i75 := $trunc.i64.i32($i74); + call {:cexpr "b"} boogie_si_record_i32($i75); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 113, 5} true; + assume {:verifier.code 0} true; + $i76 := $add.i32($i75, $i75); + call {:cexpr "b"} boogie_si_record_i32($i76); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 115, 5} true; + assume {:verifier.code 0} true; + $i77 := $add.i32($i64, $i64); + call {:cexpr "c"} boogie_si_record_i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 116, 9} true; + assume {:verifier.code 0} true; + $i78 := $slt.i32($i72, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 116, 7} true; + assume {:verifier.code 0} true; + $i79 := $i77; + assume {:branchcond $i78} true; + goto $bb46, $bb47; +$bb40: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 15} true; + assume {:verifier.code 0} true; + assume ($i65 == 1); + goto $bb41; +$bb41: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 107, 9} true; + assume {:verifier.code 0} true; + $i68 := $add.i32($i62, 1); + call {:cexpr "c"} boogie_si_record_i32($i68); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 108, 5} true; + assume {:verifier.code 0} true; + $i67 := $i68; + goto $bb45; +$bb42: + assume !(($i65 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 20} true; + assume {:verifier.code 0} true; + $i66 := $sgt.i32($i61, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 9} true; + assume {:verifier.code 0} true; + $i67 := $i62; + assume {:branchcond $i66} true; + goto $bb43, $bb44; +$bb43: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 9} true; + assume {:verifier.code 0} true; + assume ($i66 == 1); + goto $bb41; +$bb44: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 9} true; + assume {:verifier.code 0} true; + assume !(($i66 == 1)); + goto $bb45; +$bb45: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 109, 3} true; + assume {:verifier.code 0} true; + $i64 := $i67; + goto $bb39; +$bb46: + assume ($i78 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 11} true; + assume {:verifier.code 0} true; + $i80 := $slt.i32($i76, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i80} true; + goto $bb49, $bb51; +$bb47: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 116, 7} true; + assume {:verifier.code 0} true; + assume !(($i78 == 1)); + goto $bb48; +$bb48: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 121, 7} true; + assume {:verifier.code 0} true; + $i84 := $sext.i32.i64($i72); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 121, 9} true; + assume {:verifier.code 0} true; + $i85 := $srem.i64($i84, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 121, 7} true; + assume {:verifier.code 0} true; + $i86 := $trunc.i64.i32($i85); + call {:cexpr "a"} boogie_si_record_i32($i86); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 122, 5} true; + assume {:verifier.code 0} true; + $i87 := $add.i32($i86, $i86); + call {:cexpr "a"} boogie_si_record_i32($i87); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 123, 7} true; + assume {:verifier.code 0} true; + $i88 := $sext.i32.i64($i76); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 123, 9} true; + assume {:verifier.code 0} true; + $i89 := $srem.i64($i88, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 123, 7} true; + assume {:verifier.code 0} true; + $i90 := $trunc.i64.i32($i89); + call {:cexpr "b"} boogie_si_record_i32($i90); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 124, 5} true; + assume {:verifier.code 0} true; + $i91 := $add.i32($i90, $i90); + call {:cexpr "b"} boogie_si_record_i32($i91); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 126, 5} true; + assume {:verifier.code 0} true; + $i92 := $add.i32($i79, $i79); + call {:cexpr "c"} boogie_si_record_i32($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 127, 9} true; + assume {:verifier.code 0} true; + $i93 := $slt.i32($i87, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 127, 7} true; + assume {:verifier.code 0} true; + $i94 := $i92; + assume {:branchcond $i93} true; + goto $bb55, $bb56; +$bb49: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 15} true; + assume {:verifier.code 0} true; + assume ($i80 == 1); + goto $bb50; +$bb50: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 118, 9} true; + assume {:verifier.code 0} true; + $i83 := $add.i32($i77, 1); + call {:cexpr "c"} boogie_si_record_i32($i83); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 119, 5} true; + assume {:verifier.code 0} true; + $i82 := $i83; + goto $bb54; +$bb51: + assume !(($i80 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 20} true; + assume {:verifier.code 0} true; + $i81 := $sgt.i32($i76, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 9} true; + assume {:verifier.code 0} true; + $i82 := $i77; + assume {:branchcond $i81} true; + goto $bb52, $bb53; +$bb52: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 9} true; + assume {:verifier.code 0} true; + assume ($i81 == 1); + goto $bb50; +$bb53: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 9} true; + assume {:verifier.code 0} true; + assume !(($i81 == 1)); + goto $bb54; +$bb54: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 120, 3} true; + assume {:verifier.code 0} true; + $i79 := $i82; + goto $bb48; +$bb55: + assume ($i93 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 11} true; + assume {:verifier.code 0} true; + $i95 := $slt.i32($i91, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i95} true; + goto $bb58, $bb60; +$bb56: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 127, 7} true; + assume {:verifier.code 0} true; + assume !(($i93 == 1)); + goto $bb57; +$bb57: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 132, 7} true; + assume {:verifier.code 0} true; + $i99 := $sext.i32.i64($i87); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 132, 9} true; + assume {:verifier.code 0} true; + $i100 := $srem.i64($i99, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 132, 7} true; + assume {:verifier.code 0} true; + $i101 := $trunc.i64.i32($i100); + call {:cexpr "a"} boogie_si_record_i32($i101); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 133, 5} true; + assume {:verifier.code 0} true; + $i102 := $add.i32($i101, $i101); + call {:cexpr "a"} boogie_si_record_i32($i102); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 134, 7} true; + assume {:verifier.code 0} true; + $i103 := $sext.i32.i64($i91); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 134, 9} true; + assume {:verifier.code 0} true; + $i104 := $srem.i64($i103, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 134, 7} true; + assume {:verifier.code 0} true; + $i105 := $trunc.i64.i32($i104); + call {:cexpr "b"} boogie_si_record_i32($i105); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 135, 5} true; + assume {:verifier.code 0} true; + $i106 := $add.i32($i105, $i105); + call {:cexpr "b"} boogie_si_record_i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 137, 5} true; + assume {:verifier.code 0} true; + $i107 := $add.i32($i94, $i94); + call {:cexpr "c"} boogie_si_record_i32($i107); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 138, 9} true; + assume {:verifier.code 0} true; + $i108 := $slt.i32($i102, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 138, 7} true; + assume {:verifier.code 0} true; + $i109 := $i107; + assume {:branchcond $i108} true; + goto $bb64, $bb65; +$bb58: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 15} true; + assume {:verifier.code 0} true; + assume ($i95 == 1); + goto $bb59; +$bb59: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 129, 9} true; + assume {:verifier.code 0} true; + $i98 := $add.i32($i92, 1); + call {:cexpr "c"} boogie_si_record_i32($i98); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 130, 5} true; + assume {:verifier.code 0} true; + $i97 := $i98; + goto $bb63; +$bb60: + assume !(($i95 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 20} true; + assume {:verifier.code 0} true; + $i96 := $sgt.i32($i91, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 9} true; + assume {:verifier.code 0} true; + $i97 := $i92; + assume {:branchcond $i96} true; + goto $bb61, $bb62; +$bb61: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 9} true; + assume {:verifier.code 0} true; + assume ($i96 == 1); + goto $bb59; +$bb62: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 9} true; + assume {:verifier.code 0} true; + assume !(($i96 == 1)); + goto $bb63; +$bb63: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 131, 3} true; + assume {:verifier.code 0} true; + $i94 := $i97; + goto $bb57; +$bb64: + assume ($i108 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 11} true; + assume {:verifier.code 0} true; + $i110 := $slt.i32($i106, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i110} true; + goto $bb67, $bb69; +$bb65: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 138, 7} true; + assume {:verifier.code 0} true; + assume !(($i108 == 1)); + goto $bb66; +$bb66: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 143, 7} true; + assume {:verifier.code 0} true; + $i114 := $sext.i32.i64($i102); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 143, 9} true; + assume {:verifier.code 0} true; + $i115 := $srem.i64($i114, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 143, 7} true; + assume {:verifier.code 0} true; + $i116 := $trunc.i64.i32($i115); + call {:cexpr "a"} boogie_si_record_i32($i116); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 144, 5} true; + assume {:verifier.code 0} true; + $i117 := $add.i32($i116, $i116); + call {:cexpr "a"} boogie_si_record_i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 145, 7} true; + assume {:verifier.code 0} true; + $i118 := $sext.i32.i64($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 145, 9} true; + assume {:verifier.code 0} true; + $i119 := $srem.i64($i118, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 145, 7} true; + assume {:verifier.code 0} true; + $i120 := $trunc.i64.i32($i119); + call {:cexpr "b"} boogie_si_record_i32($i120); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 146, 5} true; + assume {:verifier.code 0} true; + $i121 := $add.i32($i120, $i120); + call {:cexpr "b"} boogie_si_record_i32($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 148, 5} true; + assume {:verifier.code 0} true; + $i122 := $add.i32($i109, $i109); + call {:cexpr "c"} boogie_si_record_i32($i122); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 149, 9} true; + assume {:verifier.code 0} true; + $i123 := $slt.i32($i117, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 149, 7} true; + assume {:verifier.code 0} true; + $i124 := $i122; + assume {:branchcond $i123} true; + goto $bb73, $bb74; +$bb67: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 15} true; + assume {:verifier.code 0} true; + assume ($i110 == 1); + goto $bb68; +$bb68: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 140, 9} true; + assume {:verifier.code 0} true; + $i113 := $add.i32($i107, 1); + call {:cexpr "c"} boogie_si_record_i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 141, 5} true; + assume {:verifier.code 0} true; + $i112 := $i113; + goto $bb72; +$bb69: + assume !(($i110 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 20} true; + assume {:verifier.code 0} true; + $i111 := $sgt.i32($i106, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 9} true; + assume {:verifier.code 0} true; + $i112 := $i107; + assume {:branchcond $i111} true; + goto $bb70, $bb71; +$bb70: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 9} true; + assume {:verifier.code 0} true; + assume ($i111 == 1); + goto $bb68; +$bb71: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 9} true; + assume {:verifier.code 0} true; + assume !(($i111 == 1)); + goto $bb72; +$bb72: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 142, 3} true; + assume {:verifier.code 0} true; + $i109 := $i112; + goto $bb66; +$bb73: + assume ($i123 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 11} true; + assume {:verifier.code 0} true; + $i125 := $slt.i32($i121, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i125} true; + goto $bb76, $bb78; +$bb74: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 149, 7} true; + assume {:verifier.code 0} true; + assume !(($i123 == 1)); + goto $bb75; +$bb75: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 154, 7} true; + assume {:verifier.code 0} true; + $i129 := $sext.i32.i64($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 154, 9} true; + assume {:verifier.code 0} true; + $i130 := $srem.i64($i129, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 154, 7} true; + assume {:verifier.code 0} true; + $i131 := $trunc.i64.i32($i130); + call {:cexpr "a"} boogie_si_record_i32($i131); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 155, 5} true; + assume {:verifier.code 0} true; + $i132 := $add.i32($i131, $i131); + call {:cexpr "a"} boogie_si_record_i32($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 156, 7} true; + assume {:verifier.code 0} true; + $i133 := $sext.i32.i64($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 156, 9} true; + assume {:verifier.code 0} true; + $i134 := $srem.i64($i133, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 156, 7} true; + assume {:verifier.code 0} true; + $i135 := $trunc.i64.i32($i134); + call {:cexpr "b"} boogie_si_record_i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 157, 5} true; + assume {:verifier.code 0} true; + $i136 := $add.i32($i135, $i135); + call {:cexpr "b"} boogie_si_record_i32($i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 159, 5} true; + assume {:verifier.code 0} true; + $i137 := $add.i32($i124, $i124); + call {:cexpr "c"} boogie_si_record_i32($i137); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 160, 9} true; + assume {:verifier.code 0} true; + $i138 := $slt.i32($i132, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 160, 7} true; + assume {:verifier.code 0} true; + $i139 := $i137; + assume {:branchcond $i138} true; + goto $bb82, $bb83; +$bb76: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 15} true; + assume {:verifier.code 0} true; + assume ($i125 == 1); + goto $bb77; +$bb77: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 151, 9} true; + assume {:verifier.code 0} true; + $i128 := $add.i32($i122, 1); + call {:cexpr "c"} boogie_si_record_i32($i128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 152, 5} true; + assume {:verifier.code 0} true; + $i127 := $i128; + goto $bb81; +$bb78: + assume !(($i125 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 20} true; + assume {:verifier.code 0} true; + $i126 := $sgt.i32($i121, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 9} true; + assume {:verifier.code 0} true; + $i127 := $i122; + assume {:branchcond $i126} true; + goto $bb79, $bb80; +$bb79: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 9} true; + assume {:verifier.code 0} true; + assume ($i126 == 1); + goto $bb77; +$bb80: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 9} true; + assume {:verifier.code 0} true; + assume !(($i126 == 1)); + goto $bb81; +$bb81: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 153, 3} true; + assume {:verifier.code 0} true; + $i124 := $i127; + goto $bb75; +$bb82: + assume ($i138 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 11} true; + assume {:verifier.code 0} true; + $i140 := $slt.i32($i136, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i140} true; + goto $bb85, $bb87; +$bb83: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 160, 7} true; + assume {:verifier.code 0} true; + assume !(($i138 == 1)); + goto $bb84; +$bb84: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 165, 7} true; + assume {:verifier.code 0} true; + $i144 := $sext.i32.i64($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 165, 9} true; + assume {:verifier.code 0} true; + $i145 := $srem.i64($i144, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 165, 7} true; + assume {:verifier.code 0} true; + $i146 := $trunc.i64.i32($i145); + call {:cexpr "a"} boogie_si_record_i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 166, 5} true; + assume {:verifier.code 0} true; + $i147 := $add.i32($i146, $i146); + call {:cexpr "a"} boogie_si_record_i32($i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 167, 7} true; + assume {:verifier.code 0} true; + $i148 := $sext.i32.i64($i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 167, 9} true; + assume {:verifier.code 0} true; + $i149 := $srem.i64($i148, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 167, 7} true; + assume {:verifier.code 0} true; + $i150 := $trunc.i64.i32($i149); + call {:cexpr "b"} boogie_si_record_i32($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 168, 5} true; + assume {:verifier.code 0} true; + $i151 := $add.i32($i150, $i150); + call {:cexpr "b"} boogie_si_record_i32($i151); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 170, 5} true; + assume {:verifier.code 0} true; + $i152 := $add.i32($i139, $i139); + call {:cexpr "c"} boogie_si_record_i32($i152); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 171, 9} true; + assume {:verifier.code 0} true; + $i153 := $slt.i32($i147, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 171, 7} true; + assume {:verifier.code 0} true; + $i154 := $i152; + assume {:branchcond $i153} true; + goto $bb91, $bb92; +$bb85: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 15} true; + assume {:verifier.code 0} true; + assume ($i140 == 1); + goto $bb86; +$bb86: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 162, 9} true; + assume {:verifier.code 0} true; + $i143 := $add.i32($i137, 1); + call {:cexpr "c"} boogie_si_record_i32($i143); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 163, 5} true; + assume {:verifier.code 0} true; + $i142 := $i143; + goto $bb90; +$bb87: + assume !(($i140 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 20} true; + assume {:verifier.code 0} true; + $i141 := $sgt.i32($i136, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 9} true; + assume {:verifier.code 0} true; + $i142 := $i137; + assume {:branchcond $i141} true; + goto $bb88, $bb89; +$bb88: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 9} true; + assume {:verifier.code 0} true; + assume ($i141 == 1); + goto $bb86; +$bb89: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 9} true; + assume {:verifier.code 0} true; + assume !(($i141 == 1)); + goto $bb90; +$bb90: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 164, 3} true; + assume {:verifier.code 0} true; + $i139 := $i142; + goto $bb84; +$bb91: + assume ($i153 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 11} true; + assume {:verifier.code 0} true; + $i155 := $slt.i32($i151, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i155} true; + goto $bb94, $bb96; +$bb92: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 171, 7} true; + assume {:verifier.code 0} true; + assume !(($i153 == 1)); + goto $bb93; +$bb93: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 176, 7} true; + assume {:verifier.code 0} true; + $i159 := $sext.i32.i64($i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 176, 9} true; + assume {:verifier.code 0} true; + $i160 := $srem.i64($i159, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 176, 7} true; + assume {:verifier.code 0} true; + $i161 := $trunc.i64.i32($i160); + call {:cexpr "a"} boogie_si_record_i32($i161); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 177, 5} true; + assume {:verifier.code 0} true; + $i162 := $add.i32($i161, $i161); + call {:cexpr "a"} boogie_si_record_i32($i162); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 178, 7} true; + assume {:verifier.code 0} true; + $i163 := $sext.i32.i64($i151); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 178, 9} true; + assume {:verifier.code 0} true; + $i164 := $srem.i64($i163, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 178, 7} true; + assume {:verifier.code 0} true; + $i165 := $trunc.i64.i32($i164); + call {:cexpr "b"} boogie_si_record_i32($i165); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 179, 5} true; + assume {:verifier.code 0} true; + $i166 := $add.i32($i165, $i165); + call {:cexpr "b"} boogie_si_record_i32($i166); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 181, 5} true; + assume {:verifier.code 0} true; + $i167 := $add.i32($i154, $i154); + call {:cexpr "c"} boogie_si_record_i32($i167); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 182, 9} true; + assume {:verifier.code 0} true; + $i168 := $slt.i32($i162, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 182, 7} true; + assume {:verifier.code 0} true; + $i169 := $i167; + assume {:branchcond $i168} true; + goto $bb100, $bb101; +$bb94: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 15} true; + assume {:verifier.code 0} true; + assume ($i155 == 1); + goto $bb95; +$bb95: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 173, 9} true; + assume {:verifier.code 0} true; + $i158 := $add.i32($i152, 1); + call {:cexpr "c"} boogie_si_record_i32($i158); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 174, 5} true; + assume {:verifier.code 0} true; + $i157 := $i158; + goto $bb99; +$bb96: + assume !(($i155 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 20} true; + assume {:verifier.code 0} true; + $i156 := $sgt.i32($i151, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 9} true; + assume {:verifier.code 0} true; + $i157 := $i152; + assume {:branchcond $i156} true; + goto $bb97, $bb98; +$bb97: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 9} true; + assume {:verifier.code 0} true; + assume ($i156 == 1); + goto $bb95; +$bb98: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 9} true; + assume {:verifier.code 0} true; + assume !(($i156 == 1)); + goto $bb99; +$bb99: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 175, 3} true; + assume {:verifier.code 0} true; + $i154 := $i157; + goto $bb93; +$bb100: + assume ($i168 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 11} true; + assume {:verifier.code 0} true; + $i170 := $slt.i32($i166, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i170} true; + goto $bb103, $bb105; +$bb101: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 182, 7} true; + assume {:verifier.code 0} true; + assume !(($i168 == 1)); + goto $bb102; +$bb102: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 187, 7} true; + assume {:verifier.code 0} true; + $i174 := $sext.i32.i64($i162); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 187, 9} true; + assume {:verifier.code 0} true; + $i175 := $srem.i64($i174, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 187, 7} true; + assume {:verifier.code 0} true; + $i176 := $trunc.i64.i32($i175); + call {:cexpr "a"} boogie_si_record_i32($i176); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 188, 5} true; + assume {:verifier.code 0} true; + $i177 := $add.i32($i176, $i176); + call {:cexpr "a"} boogie_si_record_i32($i177); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 189, 7} true; + assume {:verifier.code 0} true; + $i178 := $sext.i32.i64($i166); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 189, 9} true; + assume {:verifier.code 0} true; + $i179 := $srem.i64($i178, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 189, 7} true; + assume {:verifier.code 0} true; + $i180 := $trunc.i64.i32($i179); + call {:cexpr "b"} boogie_si_record_i32($i180); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 190, 5} true; + assume {:verifier.code 0} true; + $i181 := $add.i32($i180, $i180); + call {:cexpr "b"} boogie_si_record_i32($i181); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 192, 5} true; + assume {:verifier.code 0} true; + $i182 := $add.i32($i169, $i169); + call {:cexpr "c"} boogie_si_record_i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 193, 9} true; + assume {:verifier.code 0} true; + $i183 := $slt.i32($i177, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 193, 7} true; + assume {:verifier.code 0} true; + $i184 := $i182; + assume {:branchcond $i183} true; + goto $bb109, $bb110; +$bb103: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 15} true; + assume {:verifier.code 0} true; + assume ($i170 == 1); + goto $bb104; +$bb104: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 184, 9} true; + assume {:verifier.code 0} true; + $i173 := $add.i32($i167, 1); + call {:cexpr "c"} boogie_si_record_i32($i173); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 185, 5} true; + assume {:verifier.code 0} true; + $i172 := $i173; + goto $bb108; +$bb105: + assume !(($i170 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 20} true; + assume {:verifier.code 0} true; + $i171 := $sgt.i32($i166, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 9} true; + assume {:verifier.code 0} true; + $i172 := $i167; + assume {:branchcond $i171} true; + goto $bb106, $bb107; +$bb106: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 9} true; + assume {:verifier.code 0} true; + assume ($i171 == 1); + goto $bb104; +$bb107: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 9} true; + assume {:verifier.code 0} true; + assume !(($i171 == 1)); + goto $bb108; +$bb108: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 186, 3} true; + assume {:verifier.code 0} true; + $i169 := $i172; + goto $bb102; +$bb109: + assume ($i183 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 11} true; + assume {:verifier.code 0} true; + $i185 := $slt.i32($i181, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i185} true; + goto $bb112, $bb114; +$bb110: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 193, 7} true; + assume {:verifier.code 0} true; + assume !(($i183 == 1)); + goto $bb111; +$bb111: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 198, 7} true; + assume {:verifier.code 0} true; + $i189 := $sext.i32.i64($i177); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 198, 9} true; + assume {:verifier.code 0} true; + $i190 := $srem.i64($i189, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 198, 7} true; + assume {:verifier.code 0} true; + $i191 := $trunc.i64.i32($i190); + call {:cexpr "a"} boogie_si_record_i32($i191); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 199, 5} true; + assume {:verifier.code 0} true; + $i192 := $add.i32($i191, $i191); + call {:cexpr "a"} boogie_si_record_i32($i192); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 200, 7} true; + assume {:verifier.code 0} true; + $i193 := $sext.i32.i64($i181); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 200, 9} true; + assume {:verifier.code 0} true; + $i194 := $srem.i64($i193, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 200, 7} true; + assume {:verifier.code 0} true; + $i195 := $trunc.i64.i32($i194); + call {:cexpr "b"} boogie_si_record_i32($i195); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 201, 5} true; + assume {:verifier.code 0} true; + $i196 := $add.i32($i195, $i195); + call {:cexpr "b"} boogie_si_record_i32($i196); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 203, 5} true; + assume {:verifier.code 0} true; + $i197 := $add.i32($i184, $i184); + call {:cexpr "c"} boogie_si_record_i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 204, 9} true; + assume {:verifier.code 0} true; + $i198 := $slt.i32($i192, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 204, 7} true; + assume {:verifier.code 0} true; + $i199 := $i197; + assume {:branchcond $i198} true; + goto $bb118, $bb119; +$bb112: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 15} true; + assume {:verifier.code 0} true; + assume ($i185 == 1); + goto $bb113; +$bb113: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 195, 9} true; + assume {:verifier.code 0} true; + $i188 := $add.i32($i182, 1); + call {:cexpr "c"} boogie_si_record_i32($i188); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 196, 5} true; + assume {:verifier.code 0} true; + $i187 := $i188; + goto $bb117; +$bb114: + assume !(($i185 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 20} true; + assume {:verifier.code 0} true; + $i186 := $sgt.i32($i181, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 9} true; + assume {:verifier.code 0} true; + $i187 := $i182; + assume {:branchcond $i186} true; + goto $bb115, $bb116; +$bb115: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 9} true; + assume {:verifier.code 0} true; + assume ($i186 == 1); + goto $bb113; +$bb116: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 9} true; + assume {:verifier.code 0} true; + assume !(($i186 == 1)); + goto $bb117; +$bb117: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 197, 3} true; + assume {:verifier.code 0} true; + $i184 := $i187; + goto $bb111; +$bb118: + assume ($i198 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 11} true; + assume {:verifier.code 0} true; + $i200 := $slt.i32($i196, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i200} true; + goto $bb121, $bb123; +$bb119: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 204, 7} true; + assume {:verifier.code 0} true; + assume !(($i198 == 1)); + goto $bb120; +$bb120: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 209, 7} true; + assume {:verifier.code 0} true; + $i204 := $sext.i32.i64($i192); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 209, 9} true; + assume {:verifier.code 0} true; + $i205 := $srem.i64($i204, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 209, 7} true; + assume {:verifier.code 0} true; + $i206 := $trunc.i64.i32($i205); + call {:cexpr "a"} boogie_si_record_i32($i206); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 210, 5} true; + assume {:verifier.code 0} true; + $i207 := $add.i32($i206, $i206); + call {:cexpr "a"} boogie_si_record_i32($i207); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 211, 7} true; + assume {:verifier.code 0} true; + $i208 := $sext.i32.i64($i196); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 211, 9} true; + assume {:verifier.code 0} true; + $i209 := $srem.i64($i208, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 211, 7} true; + assume {:verifier.code 0} true; + $i210 := $trunc.i64.i32($i209); + call {:cexpr "b"} boogie_si_record_i32($i210); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 212, 5} true; + assume {:verifier.code 0} true; + $i211 := $add.i32($i210, $i210); + call {:cexpr "b"} boogie_si_record_i32($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 214, 5} true; + assume {:verifier.code 0} true; + $i212 := $add.i32($i199, $i199); + call {:cexpr "c"} boogie_si_record_i32($i212); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 215, 9} true; + assume {:verifier.code 0} true; + $i213 := $slt.i32($i207, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 215, 7} true; + assume {:verifier.code 0} true; + $i214 := $i212; + assume {:branchcond $i213} true; + goto $bb127, $bb128; +$bb121: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 15} true; + assume {:verifier.code 0} true; + assume ($i200 == 1); + goto $bb122; +$bb122: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 206, 9} true; + assume {:verifier.code 0} true; + $i203 := $add.i32($i197, 1); + call {:cexpr "c"} boogie_si_record_i32($i203); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 207, 5} true; + assume {:verifier.code 0} true; + $i202 := $i203; + goto $bb126; +$bb123: + assume !(($i200 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 20} true; + assume {:verifier.code 0} true; + $i201 := $sgt.i32($i196, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 9} true; + assume {:verifier.code 0} true; + $i202 := $i197; + assume {:branchcond $i201} true; + goto $bb124, $bb125; +$bb124: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 9} true; + assume {:verifier.code 0} true; + assume ($i201 == 1); + goto $bb122; +$bb125: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 9} true; + assume {:verifier.code 0} true; + assume !(($i201 == 1)); + goto $bb126; +$bb126: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 208, 3} true; + assume {:verifier.code 0} true; + $i199 := $i202; + goto $bb120; +$bb127: + assume ($i213 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 11} true; + assume {:verifier.code 0} true; + $i215 := $slt.i32($i211, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i215} true; + goto $bb130, $bb132; +$bb128: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 215, 7} true; + assume {:verifier.code 0} true; + assume !(($i213 == 1)); + goto $bb129; +$bb129: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 220, 7} true; + assume {:verifier.code 0} true; + $i219 := $sext.i32.i64($i207); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 220, 9} true; + assume {:verifier.code 0} true; + $i220 := $srem.i64($i219, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 220, 7} true; + assume {:verifier.code 0} true; + $i221 := $trunc.i64.i32($i220); + call {:cexpr "a"} boogie_si_record_i32($i221); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 221, 5} true; + assume {:verifier.code 0} true; + $i222 := $add.i32($i221, $i221); + call {:cexpr "a"} boogie_si_record_i32($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 222, 7} true; + assume {:verifier.code 0} true; + $i223 := $sext.i32.i64($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 222, 9} true; + assume {:verifier.code 0} true; + $i224 := $srem.i64($i223, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 222, 7} true; + assume {:verifier.code 0} true; + $i225 := $trunc.i64.i32($i224); + call {:cexpr "b"} boogie_si_record_i32($i225); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 223, 5} true; + assume {:verifier.code 0} true; + $i226 := $add.i32($i225, $i225); + call {:cexpr "b"} boogie_si_record_i32($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 225, 5} true; + assume {:verifier.code 0} true; + $i227 := $add.i32($i214, $i214); + call {:cexpr "c"} boogie_si_record_i32($i227); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 226, 9} true; + assume {:verifier.code 0} true; + $i228 := $slt.i32($i222, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 226, 7} true; + assume {:verifier.code 0} true; + $i229 := $i227; + assume {:branchcond $i228} true; + goto $bb136, $bb137; +$bb130: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 15} true; + assume {:verifier.code 0} true; + assume ($i215 == 1); + goto $bb131; +$bb131: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 217, 9} true; + assume {:verifier.code 0} true; + $i218 := $add.i32($i212, 1); + call {:cexpr "c"} boogie_si_record_i32($i218); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 218, 5} true; + assume {:verifier.code 0} true; + $i217 := $i218; + goto $bb135; +$bb132: + assume !(($i215 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 20} true; + assume {:verifier.code 0} true; + $i216 := $sgt.i32($i211, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 9} true; + assume {:verifier.code 0} true; + $i217 := $i212; + assume {:branchcond $i216} true; + goto $bb133, $bb134; +$bb133: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 9} true; + assume {:verifier.code 0} true; + assume ($i216 == 1); + goto $bb131; +$bb134: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 9} true; + assume {:verifier.code 0} true; + assume !(($i216 == 1)); + goto $bb135; +$bb135: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 219, 3} true; + assume {:verifier.code 0} true; + $i214 := $i217; + goto $bb129; +$bb136: + assume ($i228 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 11} true; + assume {:verifier.code 0} true; + $i230 := $slt.i32($i226, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i230} true; + goto $bb139, $bb141; +$bb137: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 226, 7} true; + assume {:verifier.code 0} true; + assume !(($i228 == 1)); + goto $bb138; +$bb138: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 231, 7} true; + assume {:verifier.code 0} true; + $i234 := $sext.i32.i64($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 231, 9} true; + assume {:verifier.code 0} true; + $i235 := $srem.i64($i234, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 231, 7} true; + assume {:verifier.code 0} true; + $i236 := $trunc.i64.i32($i235); + call {:cexpr "a"} boogie_si_record_i32($i236); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 232, 5} true; + assume {:verifier.code 0} true; + $i237 := $add.i32($i236, $i236); + call {:cexpr "a"} boogie_si_record_i32($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 233, 7} true; + assume {:verifier.code 0} true; + $i238 := $sext.i32.i64($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 233, 9} true; + assume {:verifier.code 0} true; + $i239 := $srem.i64($i238, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 233, 7} true; + assume {:verifier.code 0} true; + $i240 := $trunc.i64.i32($i239); + call {:cexpr "b"} boogie_si_record_i32($i240); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 234, 5} true; + assume {:verifier.code 0} true; + $i241 := $add.i32($i240, $i240); + call {:cexpr "b"} boogie_si_record_i32($i241); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 236, 5} true; + assume {:verifier.code 0} true; + $i242 := $add.i32($i229, $i229); + call {:cexpr "c"} boogie_si_record_i32($i242); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 237, 9} true; + assume {:verifier.code 0} true; + $i243 := $slt.i32($i237, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 237, 7} true; + assume {:verifier.code 0} true; + $i244 := $i242; + assume {:branchcond $i243} true; + goto $bb145, $bb146; +$bb139: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 15} true; + assume {:verifier.code 0} true; + assume ($i230 == 1); + goto $bb140; +$bb140: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 228, 9} true; + assume {:verifier.code 0} true; + $i233 := $add.i32($i227, 1); + call {:cexpr "c"} boogie_si_record_i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 229, 5} true; + assume {:verifier.code 0} true; + $i232 := $i233; + goto $bb144; +$bb141: + assume !(($i230 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 20} true; + assume {:verifier.code 0} true; + $i231 := $sgt.i32($i226, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 9} true; + assume {:verifier.code 0} true; + $i232 := $i227; + assume {:branchcond $i231} true; + goto $bb142, $bb143; +$bb142: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 9} true; + assume {:verifier.code 0} true; + assume ($i231 == 1); + goto $bb140; +$bb143: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 9} true; + assume {:verifier.code 0} true; + assume !(($i231 == 1)); + goto $bb144; +$bb144: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 230, 3} true; + assume {:verifier.code 0} true; + $i229 := $i232; + goto $bb138; +$bb145: + assume ($i243 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 11} true; + assume {:verifier.code 0} true; + $i245 := $slt.i32($i241, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i245} true; + goto $bb148, $bb150; +$bb146: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 237, 7} true; + assume {:verifier.code 0} true; + assume !(($i243 == 1)); + goto $bb147; +$bb147: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 242, 7} true; + assume {:verifier.code 0} true; + $i249 := $sext.i32.i64($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 242, 9} true; + assume {:verifier.code 0} true; + $i250 := $srem.i64($i249, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 242, 7} true; + assume {:verifier.code 0} true; + $i251 := $trunc.i64.i32($i250); + call {:cexpr "a"} boogie_si_record_i32($i251); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 243, 5} true; + assume {:verifier.code 0} true; + $i252 := $add.i32($i251, $i251); + call {:cexpr "a"} boogie_si_record_i32($i252); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 244, 7} true; + assume {:verifier.code 0} true; + $i253 := $sext.i32.i64($i241); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 244, 9} true; + assume {:verifier.code 0} true; + $i254 := $srem.i64($i253, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 244, 7} true; + assume {:verifier.code 0} true; + $i255 := $trunc.i64.i32($i254); + call {:cexpr "b"} boogie_si_record_i32($i255); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 245, 5} true; + assume {:verifier.code 0} true; + $i256 := $add.i32($i255, $i255); + call {:cexpr "b"} boogie_si_record_i32($i256); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 247, 5} true; + assume {:verifier.code 0} true; + $i257 := $add.i32($i244, $i244); + call {:cexpr "c"} boogie_si_record_i32($i257); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 248, 9} true; + assume {:verifier.code 0} true; + $i258 := $slt.i32($i252, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 248, 7} true; + assume {:verifier.code 0} true; + $i259 := $i257; + assume {:branchcond $i258} true; + goto $bb154, $bb155; +$bb148: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 15} true; + assume {:verifier.code 0} true; + assume ($i245 == 1); + goto $bb149; +$bb149: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 239, 9} true; + assume {:verifier.code 0} true; + $i248 := $add.i32($i242, 1); + call {:cexpr "c"} boogie_si_record_i32($i248); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 240, 5} true; + assume {:verifier.code 0} true; + $i247 := $i248; + goto $bb153; +$bb150: + assume !(($i245 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 20} true; + assume {:verifier.code 0} true; + $i246 := $sgt.i32($i241, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 9} true; + assume {:verifier.code 0} true; + $i247 := $i242; + assume {:branchcond $i246} true; + goto $bb151, $bb152; +$bb151: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 9} true; + assume {:verifier.code 0} true; + assume ($i246 == 1); + goto $bb149; +$bb152: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 9} true; + assume {:verifier.code 0} true; + assume !(($i246 == 1)); + goto $bb153; +$bb153: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 241, 3} true; + assume {:verifier.code 0} true; + $i244 := $i247; + goto $bb147; +$bb154: + assume ($i258 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 11} true; + assume {:verifier.code 0} true; + $i260 := $slt.i32($i256, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i260} true; + goto $bb157, $bb159; +$bb155: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 248, 7} true; + assume {:verifier.code 0} true; + assume !(($i258 == 1)); + goto $bb156; +$bb156: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 253, 7} true; + assume {:verifier.code 0} true; + $i264 := $sext.i32.i64($i252); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 253, 9} true; + assume {:verifier.code 0} true; + $i265 := $srem.i64($i264, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 253, 7} true; + assume {:verifier.code 0} true; + $i266 := $trunc.i64.i32($i265); + call {:cexpr "a"} boogie_si_record_i32($i266); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 254, 5} true; + assume {:verifier.code 0} true; + $i267 := $add.i32($i266, $i266); + call {:cexpr "a"} boogie_si_record_i32($i267); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 255, 7} true; + assume {:verifier.code 0} true; + $i268 := $sext.i32.i64($i256); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 255, 9} true; + assume {:verifier.code 0} true; + $i269 := $srem.i64($i268, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 255, 7} true; + assume {:verifier.code 0} true; + $i270 := $trunc.i64.i32($i269); + call {:cexpr "b"} boogie_si_record_i32($i270); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 256, 5} true; + assume {:verifier.code 0} true; + $i271 := $add.i32($i270, $i270); + call {:cexpr "b"} boogie_si_record_i32($i271); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 258, 5} true; + assume {:verifier.code 0} true; + $i272 := $add.i32($i259, $i259); + call {:cexpr "c"} boogie_si_record_i32($i272); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 259, 9} true; + assume {:verifier.code 0} true; + $i273 := $slt.i32($i267, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 259, 7} true; + assume {:verifier.code 0} true; + $i274 := $i272; + assume {:branchcond $i273} true; + goto $bb163, $bb164; +$bb157: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 15} true; + assume {:verifier.code 0} true; + assume ($i260 == 1); + goto $bb158; +$bb158: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 250, 9} true; + assume {:verifier.code 0} true; + $i263 := $add.i32($i257, 1); + call {:cexpr "c"} boogie_si_record_i32($i263); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 251, 5} true; + assume {:verifier.code 0} true; + $i262 := $i263; + goto $bb162; +$bb159: + assume !(($i260 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 20} true; + assume {:verifier.code 0} true; + $i261 := $sgt.i32($i256, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 9} true; + assume {:verifier.code 0} true; + $i262 := $i257; + assume {:branchcond $i261} true; + goto $bb160, $bb161; +$bb160: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 9} true; + assume {:verifier.code 0} true; + assume ($i261 == 1); + goto $bb158; +$bb161: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 9} true; + assume {:verifier.code 0} true; + assume !(($i261 == 1)); + goto $bb162; +$bb162: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 252, 3} true; + assume {:verifier.code 0} true; + $i259 := $i262; + goto $bb156; +$bb163: + assume ($i273 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 11} true; + assume {:verifier.code 0} true; + $i275 := $slt.i32($i271, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i275} true; + goto $bb166, $bb168; +$bb164: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 259, 7} true; + assume {:verifier.code 0} true; + assume !(($i273 == 1)); + goto $bb165; +$bb165: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 264, 7} true; + assume {:verifier.code 0} true; + $i279 := $sext.i32.i64($i267); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 264, 9} true; + assume {:verifier.code 0} true; + $i280 := $srem.i64($i279, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 264, 7} true; + assume {:verifier.code 0} true; + $i281 := $trunc.i64.i32($i280); + call {:cexpr "a"} boogie_si_record_i32($i281); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 265, 5} true; + assume {:verifier.code 0} true; + $i282 := $add.i32($i281, $i281); + call {:cexpr "a"} boogie_si_record_i32($i282); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 266, 7} true; + assume {:verifier.code 0} true; + $i283 := $sext.i32.i64($i271); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 266, 9} true; + assume {:verifier.code 0} true; + $i284 := $srem.i64($i283, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 266, 7} true; + assume {:verifier.code 0} true; + $i285 := $trunc.i64.i32($i284); + call {:cexpr "b"} boogie_si_record_i32($i285); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 267, 5} true; + assume {:verifier.code 0} true; + $i286 := $add.i32($i285, $i285); + call {:cexpr "b"} boogie_si_record_i32($i286); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 269, 5} true; + assume {:verifier.code 0} true; + $i287 := $add.i32($i274, $i274); + call {:cexpr "c"} boogie_si_record_i32($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 270, 9} true; + assume {:verifier.code 0} true; + $i288 := $slt.i32($i282, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 270, 7} true; + assume {:verifier.code 0} true; + $i289 := $i287; + assume {:branchcond $i288} true; + goto $bb172, $bb173; +$bb166: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 15} true; + assume {:verifier.code 0} true; + assume ($i275 == 1); + goto $bb167; +$bb167: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 261, 9} true; + assume {:verifier.code 0} true; + $i278 := $add.i32($i272, 1); + call {:cexpr "c"} boogie_si_record_i32($i278); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 262, 5} true; + assume {:verifier.code 0} true; + $i277 := $i278; + goto $bb171; +$bb168: + assume !(($i275 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 20} true; + assume {:verifier.code 0} true; + $i276 := $sgt.i32($i271, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 9} true; + assume {:verifier.code 0} true; + $i277 := $i272; + assume {:branchcond $i276} true; + goto $bb169, $bb170; +$bb169: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 9} true; + assume {:verifier.code 0} true; + assume ($i276 == 1); + goto $bb167; +$bb170: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 9} true; + assume {:verifier.code 0} true; + assume !(($i276 == 1)); + goto $bb171; +$bb171: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 263, 3} true; + assume {:verifier.code 0} true; + $i274 := $i277; + goto $bb165; +$bb172: + assume ($i288 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 11} true; + assume {:verifier.code 0} true; + $i290 := $slt.i32($i286, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i290} true; + goto $bb175, $bb177; +$bb173: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 270, 7} true; + assume {:verifier.code 0} true; + assume !(($i288 == 1)); + goto $bb174; +$bb174: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 275, 7} true; + assume {:verifier.code 0} true; + $i294 := $sext.i32.i64($i282); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 275, 9} true; + assume {:verifier.code 0} true; + $i295 := $srem.i64($i294, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 275, 7} true; + assume {:verifier.code 0} true; + $i296 := $trunc.i64.i32($i295); + call {:cexpr "a"} boogie_si_record_i32($i296); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 276, 5} true; + assume {:verifier.code 0} true; + $i297 := $add.i32($i296, $i296); + call {:cexpr "a"} boogie_si_record_i32($i297); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 277, 7} true; + assume {:verifier.code 0} true; + $i298 := $sext.i32.i64($i286); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 277, 9} true; + assume {:verifier.code 0} true; + $i299 := $srem.i64($i298, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 277, 7} true; + assume {:verifier.code 0} true; + $i300 := $trunc.i64.i32($i299); + call {:cexpr "b"} boogie_si_record_i32($i300); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 278, 5} true; + assume {:verifier.code 0} true; + $i301 := $add.i32($i300, $i300); + call {:cexpr "b"} boogie_si_record_i32($i301); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 280, 5} true; + assume {:verifier.code 0} true; + $i302 := $add.i32($i289, $i289); + call {:cexpr "c"} boogie_si_record_i32($i302); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 281, 9} true; + assume {:verifier.code 0} true; + $i303 := $slt.i32($i297, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 281, 7} true; + assume {:verifier.code 0} true; + $i304 := $i302; + assume {:branchcond $i303} true; + goto $bb181, $bb182; +$bb175: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 15} true; + assume {:verifier.code 0} true; + assume ($i290 == 1); + goto $bb176; +$bb176: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 272, 9} true; + assume {:verifier.code 0} true; + $i293 := $add.i32($i287, 1); + call {:cexpr "c"} boogie_si_record_i32($i293); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 273, 5} true; + assume {:verifier.code 0} true; + $i292 := $i293; + goto $bb180; +$bb177: + assume !(($i290 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 20} true; + assume {:verifier.code 0} true; + $i291 := $sgt.i32($i286, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 9} true; + assume {:verifier.code 0} true; + $i292 := $i287; + assume {:branchcond $i291} true; + goto $bb178, $bb179; +$bb178: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 9} true; + assume {:verifier.code 0} true; + assume ($i291 == 1); + goto $bb176; +$bb179: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 9} true; + assume {:verifier.code 0} true; + assume !(($i291 == 1)); + goto $bb180; +$bb180: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 274, 3} true; + assume {:verifier.code 0} true; + $i289 := $i292; + goto $bb174; +$bb181: + assume ($i303 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 11} true; + assume {:verifier.code 0} true; + $i305 := $slt.i32($i301, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i305} true; + goto $bb184, $bb186; +$bb182: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 281, 7} true; + assume {:verifier.code 0} true; + assume !(($i303 == 1)); + goto $bb183; +$bb183: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 286, 7} true; + assume {:verifier.code 0} true; + $i309 := $sext.i32.i64($i297); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 286, 9} true; + assume {:verifier.code 0} true; + $i310 := $srem.i64($i309, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 286, 7} true; + assume {:verifier.code 0} true; + $i311 := $trunc.i64.i32($i310); + call {:cexpr "a"} boogie_si_record_i32($i311); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 287, 5} true; + assume {:verifier.code 0} true; + $i312 := $add.i32($i311, $i311); + call {:cexpr "a"} boogie_si_record_i32($i312); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 288, 7} true; + assume {:verifier.code 0} true; + $i313 := $sext.i32.i64($i301); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 288, 9} true; + assume {:verifier.code 0} true; + $i314 := $srem.i64($i313, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 288, 7} true; + assume {:verifier.code 0} true; + $i315 := $trunc.i64.i32($i314); + call {:cexpr "b"} boogie_si_record_i32($i315); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 289, 5} true; + assume {:verifier.code 0} true; + $i316 := $add.i32($i315, $i315); + call {:cexpr "b"} boogie_si_record_i32($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 291, 5} true; + assume {:verifier.code 0} true; + $i317 := $add.i32($i304, $i304); + call {:cexpr "c"} boogie_si_record_i32($i317); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 292, 9} true; + assume {:verifier.code 0} true; + $i318 := $slt.i32($i312, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 292, 7} true; + assume {:verifier.code 0} true; + $i319 := $i317; + assume {:branchcond $i318} true; + goto $bb190, $bb191; +$bb184: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 15} true; + assume {:verifier.code 0} true; + assume ($i305 == 1); + goto $bb185; +$bb185: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 283, 9} true; + assume {:verifier.code 0} true; + $i308 := $add.i32($i302, 1); + call {:cexpr "c"} boogie_si_record_i32($i308); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 284, 5} true; + assume {:verifier.code 0} true; + $i307 := $i308; + goto $bb189; +$bb186: + assume !(($i305 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 20} true; + assume {:verifier.code 0} true; + $i306 := $sgt.i32($i301, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 9} true; + assume {:verifier.code 0} true; + $i307 := $i302; + assume {:branchcond $i306} true; + goto $bb187, $bb188; +$bb187: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 9} true; + assume {:verifier.code 0} true; + assume ($i306 == 1); + goto $bb185; +$bb188: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 9} true; + assume {:verifier.code 0} true; + assume !(($i306 == 1)); + goto $bb189; +$bb189: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 285, 3} true; + assume {:verifier.code 0} true; + $i304 := $i307; + goto $bb183; +$bb190: + assume ($i318 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 11} true; + assume {:verifier.code 0} true; + $i320 := $slt.i32($i316, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i320} true; + goto $bb193, $bb195; +$bb191: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 292, 7} true; + assume {:verifier.code 0} true; + assume !(($i318 == 1)); + goto $bb192; +$bb192: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 297, 7} true; + assume {:verifier.code 0} true; + $i324 := $sext.i32.i64($i312); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 297, 9} true; + assume {:verifier.code 0} true; + $i325 := $srem.i64($i324, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 297, 7} true; + assume {:verifier.code 0} true; + $i326 := $trunc.i64.i32($i325); + call {:cexpr "a"} boogie_si_record_i32($i326); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 298, 5} true; + assume {:verifier.code 0} true; + $i327 := $add.i32($i326, $i326); + call {:cexpr "a"} boogie_si_record_i32($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 299, 7} true; + assume {:verifier.code 0} true; + $i328 := $sext.i32.i64($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 299, 9} true; + assume {:verifier.code 0} true; + $i329 := $srem.i64($i328, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 299, 7} true; + assume {:verifier.code 0} true; + $i330 := $trunc.i64.i32($i329); + call {:cexpr "b"} boogie_si_record_i32($i330); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 300, 5} true; + assume {:verifier.code 0} true; + $i331 := $add.i32($i330, $i330); + call {:cexpr "b"} boogie_si_record_i32($i331); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 302, 5} true; + assume {:verifier.code 0} true; + $i332 := $add.i32($i319, $i319); + call {:cexpr "c"} boogie_si_record_i32($i332); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 303, 9} true; + assume {:verifier.code 0} true; + $i333 := $slt.i32($i327, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 303, 7} true; + assume {:verifier.code 0} true; + $i334 := $i332; + assume {:branchcond $i333} true; + goto $bb199, $bb200; +$bb193: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 15} true; + assume {:verifier.code 0} true; + assume ($i320 == 1); + goto $bb194; +$bb194: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 294, 9} true; + assume {:verifier.code 0} true; + $i323 := $add.i32($i317, 1); + call {:cexpr "c"} boogie_si_record_i32($i323); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 295, 5} true; + assume {:verifier.code 0} true; + $i322 := $i323; + goto $bb198; +$bb195: + assume !(($i320 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 20} true; + assume {:verifier.code 0} true; + $i321 := $sgt.i32($i316, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 9} true; + assume {:verifier.code 0} true; + $i322 := $i317; + assume {:branchcond $i321} true; + goto $bb196, $bb197; +$bb196: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 9} true; + assume {:verifier.code 0} true; + assume ($i321 == 1); + goto $bb194; +$bb197: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 9} true; + assume {:verifier.code 0} true; + assume !(($i321 == 1)); + goto $bb198; +$bb198: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 296, 3} true; + assume {:verifier.code 0} true; + $i319 := $i322; + goto $bb192; +$bb199: + assume ($i333 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 11} true; + assume {:verifier.code 0} true; + $i335 := $slt.i32($i331, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i335} true; + goto $bb202, $bb204; +$bb200: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 303, 7} true; + assume {:verifier.code 0} true; + assume !(($i333 == 1)); + goto $bb201; +$bb201: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 308, 7} true; + assume {:verifier.code 0} true; + $i339 := $sext.i32.i64($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 308, 9} true; + assume {:verifier.code 0} true; + $i340 := $srem.i64($i339, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 308, 7} true; + assume {:verifier.code 0} true; + $i341 := $trunc.i64.i32($i340); + call {:cexpr "a"} boogie_si_record_i32($i341); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 309, 5} true; + assume {:verifier.code 0} true; + $i342 := $add.i32($i341, $i341); + call {:cexpr "a"} boogie_si_record_i32($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 310, 7} true; + assume {:verifier.code 0} true; + $i343 := $sext.i32.i64($i331); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 310, 9} true; + assume {:verifier.code 0} true; + $i344 := $srem.i64($i343, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 310, 7} true; + assume {:verifier.code 0} true; + $i345 := $trunc.i64.i32($i344); + call {:cexpr "b"} boogie_si_record_i32($i345); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 311, 5} true; + assume {:verifier.code 0} true; + $i346 := $add.i32($i345, $i345); + call {:cexpr "b"} boogie_si_record_i32($i346); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 313, 5} true; + assume {:verifier.code 0} true; + $i347 := $add.i32($i334, $i334); + call {:cexpr "c"} boogie_si_record_i32($i347); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 314, 9} true; + assume {:verifier.code 0} true; + $i348 := $slt.i32($i342, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 314, 7} true; + assume {:verifier.code 0} true; + $i349 := $i347; + assume {:branchcond $i348} true; + goto $bb208, $bb209; +$bb202: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 15} true; + assume {:verifier.code 0} true; + assume ($i335 == 1); + goto $bb203; +$bb203: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 305, 9} true; + assume {:verifier.code 0} true; + $i338 := $add.i32($i332, 1); + call {:cexpr "c"} boogie_si_record_i32($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 306, 5} true; + assume {:verifier.code 0} true; + $i337 := $i338; + goto $bb207; +$bb204: + assume !(($i335 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 20} true; + assume {:verifier.code 0} true; + $i336 := $sgt.i32($i331, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 9} true; + assume {:verifier.code 0} true; + $i337 := $i332; + assume {:branchcond $i336} true; + goto $bb205, $bb206; +$bb205: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 9} true; + assume {:verifier.code 0} true; + assume ($i336 == 1); + goto $bb203; +$bb206: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 9} true; + assume {:verifier.code 0} true; + assume !(($i336 == 1)); + goto $bb207; +$bb207: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 307, 3} true; + assume {:verifier.code 0} true; + $i334 := $i337; + goto $bb201; +$bb208: + assume ($i348 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 11} true; + assume {:verifier.code 0} true; + $i350 := $slt.i32($i346, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i350} true; + goto $bb211, $bb213; +$bb209: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 314, 7} true; + assume {:verifier.code 0} true; + assume !(($i348 == 1)); + goto $bb210; +$bb210: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 319, 7} true; + assume {:verifier.code 0} true; + $i354 := $sext.i32.i64($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 319, 9} true; + assume {:verifier.code 0} true; + $i355 := $srem.i64($i354, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 319, 7} true; + assume {:verifier.code 0} true; + $i356 := $trunc.i64.i32($i355); + call {:cexpr "a"} boogie_si_record_i32($i356); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 320, 5} true; + assume {:verifier.code 0} true; + $i357 := $add.i32($i356, $i356); + call {:cexpr "a"} boogie_si_record_i32($i357); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 321, 7} true; + assume {:verifier.code 0} true; + $i358 := $sext.i32.i64($i346); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 321, 9} true; + assume {:verifier.code 0} true; + $i359 := $srem.i64($i358, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 321, 7} true; + assume {:verifier.code 0} true; + $i360 := $trunc.i64.i32($i359); + call {:cexpr "b"} boogie_si_record_i32($i360); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 322, 5} true; + assume {:verifier.code 0} true; + $i361 := $add.i32($i360, $i360); + call {:cexpr "b"} boogie_si_record_i32($i361); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 324, 5} true; + assume {:verifier.code 0} true; + $i362 := $add.i32($i349, $i349); + call {:cexpr "c"} boogie_si_record_i32($i362); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 325, 9} true; + assume {:verifier.code 0} true; + $i363 := $slt.i32($i357, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 325, 7} true; + assume {:verifier.code 0} true; + $i364 := $i362; + assume {:branchcond $i363} true; + goto $bb217, $bb218; +$bb211: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 15} true; + assume {:verifier.code 0} true; + assume ($i350 == 1); + goto $bb212; +$bb212: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 316, 9} true; + assume {:verifier.code 0} true; + $i353 := $add.i32($i347, 1); + call {:cexpr "c"} boogie_si_record_i32($i353); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 317, 5} true; + assume {:verifier.code 0} true; + $i352 := $i353; + goto $bb216; +$bb213: + assume !(($i350 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 20} true; + assume {:verifier.code 0} true; + $i351 := $sgt.i32($i346, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 9} true; + assume {:verifier.code 0} true; + $i352 := $i347; + assume {:branchcond $i351} true; + goto $bb214, $bb215; +$bb214: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 9} true; + assume {:verifier.code 0} true; + assume ($i351 == 1); + goto $bb212; +$bb215: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 9} true; + assume {:verifier.code 0} true; + assume !(($i351 == 1)); + goto $bb216; +$bb216: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 318, 3} true; + assume {:verifier.code 0} true; + $i349 := $i352; + goto $bb210; +$bb217: + assume ($i363 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 11} true; + assume {:verifier.code 0} true; + $i365 := $slt.i32($i361, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i365} true; + goto $bb220, $bb222; +$bb218: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 325, 7} true; + assume {:verifier.code 0} true; + assume !(($i363 == 1)); + goto $bb219; +$bb219: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 330, 7} true; + assume {:verifier.code 0} true; + $i369 := $sext.i32.i64($i357); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 330, 9} true; + assume {:verifier.code 0} true; + $i370 := $srem.i64($i369, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 330, 7} true; + assume {:verifier.code 0} true; + $i371 := $trunc.i64.i32($i370); + call {:cexpr "a"} boogie_si_record_i32($i371); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 331, 5} true; + assume {:verifier.code 0} true; + $i372 := $add.i32($i371, $i371); + call {:cexpr "a"} boogie_si_record_i32($i372); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 332, 7} true; + assume {:verifier.code 0} true; + $i373 := $sext.i32.i64($i361); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 332, 9} true; + assume {:verifier.code 0} true; + $i374 := $srem.i64($i373, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 332, 7} true; + assume {:verifier.code 0} true; + $i375 := $trunc.i64.i32($i374); + call {:cexpr "b"} boogie_si_record_i32($i375); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 333, 5} true; + assume {:verifier.code 0} true; + $i376 := $add.i32($i375, $i375); + call {:cexpr "b"} boogie_si_record_i32($i376); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 335, 5} true; + assume {:verifier.code 0} true; + $i377 := $add.i32($i364, $i364); + call {:cexpr "c"} boogie_si_record_i32($i377); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 336, 9} true; + assume {:verifier.code 0} true; + $i378 := $slt.i32($i372, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 336, 7} true; + assume {:verifier.code 0} true; + $i379 := $i377; + assume {:branchcond $i378} true; + goto $bb226, $bb227; +$bb220: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 15} true; + assume {:verifier.code 0} true; + assume ($i365 == 1); + goto $bb221; +$bb221: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 327, 9} true; + assume {:verifier.code 0} true; + $i368 := $add.i32($i362, 1); + call {:cexpr "c"} boogie_si_record_i32($i368); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 328, 5} true; + assume {:verifier.code 0} true; + $i367 := $i368; + goto $bb225; +$bb222: + assume !(($i365 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 20} true; + assume {:verifier.code 0} true; + $i366 := $sgt.i32($i361, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 9} true; + assume {:verifier.code 0} true; + $i367 := $i362; + assume {:branchcond $i366} true; + goto $bb223, $bb224; +$bb223: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 9} true; + assume {:verifier.code 0} true; + assume ($i366 == 1); + goto $bb221; +$bb224: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 9} true; + assume {:verifier.code 0} true; + assume !(($i366 == 1)); + goto $bb225; +$bb225: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 329, 3} true; + assume {:verifier.code 0} true; + $i364 := $i367; + goto $bb219; +$bb226: + assume ($i378 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 11} true; + assume {:verifier.code 0} true; + $i380 := $slt.i32($i376, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i380} true; + goto $bb229, $bb231; +$bb227: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 336, 7} true; + assume {:verifier.code 0} true; + assume !(($i378 == 1)); + goto $bb228; +$bb228: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 341, 7} true; + assume {:verifier.code 0} true; + $i384 := $sext.i32.i64($i372); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 341, 9} true; + assume {:verifier.code 0} true; + $i385 := $srem.i64($i384, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 341, 7} true; + assume {:verifier.code 0} true; + $i386 := $trunc.i64.i32($i385); + call {:cexpr "a"} boogie_si_record_i32($i386); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 342, 5} true; + assume {:verifier.code 0} true; + $i387 := $add.i32($i386, $i386); + call {:cexpr "a"} boogie_si_record_i32($i387); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 343, 7} true; + assume {:verifier.code 0} true; + $i388 := $sext.i32.i64($i376); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 343, 9} true; + assume {:verifier.code 0} true; + $i389 := $srem.i64($i388, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 343, 7} true; + assume {:verifier.code 0} true; + $i390 := $trunc.i64.i32($i389); + call {:cexpr "b"} boogie_si_record_i32($i390); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 344, 5} true; + assume {:verifier.code 0} true; + $i391 := $add.i32($i390, $i390); + call {:cexpr "b"} boogie_si_record_i32($i391); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 346, 5} true; + assume {:verifier.code 0} true; + $i392 := $add.i32($i379, $i379); + call {:cexpr "c"} boogie_si_record_i32($i392); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 347, 9} true; + assume {:verifier.code 0} true; + $i393 := $slt.i32($i387, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 347, 7} true; + assume {:verifier.code 0} true; + $i394 := $i392; + assume {:branchcond $i393} true; + goto $bb235, $bb236; +$bb229: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 15} true; + assume {:verifier.code 0} true; + assume ($i380 == 1); + goto $bb230; +$bb230: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 338, 9} true; + assume {:verifier.code 0} true; + $i383 := $add.i32($i377, 1); + call {:cexpr "c"} boogie_si_record_i32($i383); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 339, 5} true; + assume {:verifier.code 0} true; + $i382 := $i383; + goto $bb234; +$bb231: + assume !(($i380 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 20} true; + assume {:verifier.code 0} true; + $i381 := $sgt.i32($i376, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 9} true; + assume {:verifier.code 0} true; + $i382 := $i377; + assume {:branchcond $i381} true; + goto $bb232, $bb233; +$bb232: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 9} true; + assume {:verifier.code 0} true; + assume ($i381 == 1); + goto $bb230; +$bb233: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 9} true; + assume {:verifier.code 0} true; + assume !(($i381 == 1)); + goto $bb234; +$bb234: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 340, 3} true; + assume {:verifier.code 0} true; + $i379 := $i382; + goto $bb228; +$bb235: + assume ($i393 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 11} true; + assume {:verifier.code 0} true; + $i395 := $slt.i32($i391, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i395} true; + goto $bb238, $bb240; +$bb236: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 347, 7} true; + assume {:verifier.code 0} true; + assume !(($i393 == 1)); + goto $bb237; +$bb237: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 352, 7} true; + assume {:verifier.code 0} true; + $i399 := $sext.i32.i64($i387); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 352, 9} true; + assume {:verifier.code 0} true; + $i400 := $srem.i64($i399, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 352, 7} true; + assume {:verifier.code 0} true; + $i401 := $trunc.i64.i32($i400); + call {:cexpr "a"} boogie_si_record_i32($i401); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 353, 5} true; + assume {:verifier.code 0} true; + $i402 := $add.i32($i401, $i401); + call {:cexpr "a"} boogie_si_record_i32($i402); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 354, 7} true; + assume {:verifier.code 0} true; + $i403 := $sext.i32.i64($i391); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 354, 9} true; + assume {:verifier.code 0} true; + $i404 := $srem.i64($i403, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 354, 7} true; + assume {:verifier.code 0} true; + $i405 := $trunc.i64.i32($i404); + call {:cexpr "b"} boogie_si_record_i32($i405); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 355, 5} true; + assume {:verifier.code 0} true; + $i406 := $add.i32($i405, $i405); + call {:cexpr "b"} boogie_si_record_i32($i406); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 357, 5} true; + assume {:verifier.code 0} true; + $i407 := $add.i32($i394, $i394); + call {:cexpr "c"} boogie_si_record_i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 358, 9} true; + assume {:verifier.code 0} true; + $i408 := $slt.i32($i402, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 358, 7} true; + assume {:verifier.code 0} true; + $i409 := $i407; + assume {:branchcond $i408} true; + goto $bb244, $bb245; +$bb238: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 15} true; + assume {:verifier.code 0} true; + assume ($i395 == 1); + goto $bb239; +$bb239: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 349, 9} true; + assume {:verifier.code 0} true; + $i398 := $add.i32($i392, 1); + call {:cexpr "c"} boogie_si_record_i32($i398); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 350, 5} true; + assume {:verifier.code 0} true; + $i397 := $i398; + goto $bb243; +$bb240: + assume !(($i395 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 20} true; + assume {:verifier.code 0} true; + $i396 := $sgt.i32($i391, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 9} true; + assume {:verifier.code 0} true; + $i397 := $i392; + assume {:branchcond $i396} true; + goto $bb241, $bb242; +$bb241: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 9} true; + assume {:verifier.code 0} true; + assume ($i396 == 1); + goto $bb239; +$bb242: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 9} true; + assume {:verifier.code 0} true; + assume !(($i396 == 1)); + goto $bb243; +$bb243: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 351, 3} true; + assume {:verifier.code 0} true; + $i394 := $i397; + goto $bb237; +$bb244: + assume ($i408 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 11} true; + assume {:verifier.code 0} true; + $i410 := $slt.i32($i406, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i410} true; + goto $bb247, $bb249; +$bb245: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 358, 7} true; + assume {:verifier.code 0} true; + assume !(($i408 == 1)); + goto $bb246; +$bb246: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 363, 7} true; + assume {:verifier.code 0} true; + $i414 := $sext.i32.i64($i402); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 363, 9} true; + assume {:verifier.code 0} true; + $i415 := $srem.i64($i414, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 363, 7} true; + assume {:verifier.code 0} true; + $i416 := $trunc.i64.i32($i415); + call {:cexpr "a"} boogie_si_record_i32($i416); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 364, 5} true; + assume {:verifier.code 0} true; + $i417 := $add.i32($i416, $i416); + call {:cexpr "a"} boogie_si_record_i32($i417); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 365, 7} true; + assume {:verifier.code 0} true; + $i418 := $sext.i32.i64($i406); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 365, 9} true; + assume {:verifier.code 0} true; + $i419 := $srem.i64($i418, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 365, 7} true; + assume {:verifier.code 0} true; + $i420 := $trunc.i64.i32($i419); + call {:cexpr "b"} boogie_si_record_i32($i420); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 366, 5} true; + assume {:verifier.code 0} true; + $i421 := $add.i32($i420, $i420); + call {:cexpr "b"} boogie_si_record_i32($i421); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 368, 5} true; + assume {:verifier.code 0} true; + $i422 := $add.i32($i409, $i409); + call {:cexpr "c"} boogie_si_record_i32($i422); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 369, 9} true; + assume {:verifier.code 0} true; + $i423 := $slt.i32($i417, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 369, 7} true; + assume {:verifier.code 0} true; + $i424 := $i422; + assume {:branchcond $i423} true; + goto $bb253, $bb254; +$bb247: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 15} true; + assume {:verifier.code 0} true; + assume ($i410 == 1); + goto $bb248; +$bb248: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 360, 9} true; + assume {:verifier.code 0} true; + $i413 := $add.i32($i407, 1); + call {:cexpr "c"} boogie_si_record_i32($i413); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 361, 5} true; + assume {:verifier.code 0} true; + $i412 := $i413; + goto $bb252; +$bb249: + assume !(($i410 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 20} true; + assume {:verifier.code 0} true; + $i411 := $sgt.i32($i406, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 9} true; + assume {:verifier.code 0} true; + $i412 := $i407; + assume {:branchcond $i411} true; + goto $bb250, $bb251; +$bb250: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 9} true; + assume {:verifier.code 0} true; + assume ($i411 == 1); + goto $bb248; +$bb251: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 9} true; + assume {:verifier.code 0} true; + assume !(($i411 == 1)); + goto $bb252; +$bb252: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 362, 3} true; + assume {:verifier.code 0} true; + $i409 := $i412; + goto $bb246; +$bb253: + assume ($i423 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 11} true; + assume {:verifier.code 0} true; + $i425 := $slt.i32($i421, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i425} true; + goto $bb256, $bb258; +$bb254: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 369, 7} true; + assume {:verifier.code 0} true; + assume !(($i423 == 1)); + goto $bb255; +$bb255: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 374, 7} true; + assume {:verifier.code 0} true; + $i429 := $sext.i32.i64($i417); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 374, 9} true; + assume {:verifier.code 0} true; + $i430 := $srem.i64($i429, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 374, 7} true; + assume {:verifier.code 0} true; + $i431 := $trunc.i64.i32($i430); + call {:cexpr "a"} boogie_si_record_i32($i431); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 375, 5} true; + assume {:verifier.code 0} true; + $i432 := $add.i32($i431, $i431); + call {:cexpr "a"} boogie_si_record_i32($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 376, 7} true; + assume {:verifier.code 0} true; + $i433 := $sext.i32.i64($i421); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 376, 9} true; + assume {:verifier.code 0} true; + $i434 := $srem.i64($i433, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 376, 7} true; + assume {:verifier.code 0} true; + $i435 := $trunc.i64.i32($i434); + call {:cexpr "b"} boogie_si_record_i32($i435); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 377, 5} true; + assume {:verifier.code 0} true; + $i436 := $add.i32($i435, $i435); + call {:cexpr "b"} boogie_si_record_i32($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 379, 5} true; + assume {:verifier.code 0} true; + $i437 := $add.i32($i424, $i424); + call {:cexpr "c"} boogie_si_record_i32($i437); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 380, 9} true; + assume {:verifier.code 0} true; + $i438 := $slt.i32($i432, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 380, 7} true; + assume {:verifier.code 0} true; + $i439 := $i437; + assume {:branchcond $i438} true; + goto $bb262, $bb263; +$bb256: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 15} true; + assume {:verifier.code 0} true; + assume ($i425 == 1); + goto $bb257; +$bb257: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 371, 9} true; + assume {:verifier.code 0} true; + $i428 := $add.i32($i422, 1); + call {:cexpr "c"} boogie_si_record_i32($i428); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 372, 5} true; + assume {:verifier.code 0} true; + $i427 := $i428; + goto $bb261; +$bb258: + assume !(($i425 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 20} true; + assume {:verifier.code 0} true; + $i426 := $sgt.i32($i421, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 9} true; + assume {:verifier.code 0} true; + $i427 := $i422; + assume {:branchcond $i426} true; + goto $bb259, $bb260; +$bb259: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 9} true; + assume {:verifier.code 0} true; + assume ($i426 == 1); + goto $bb257; +$bb260: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 9} true; + assume {:verifier.code 0} true; + assume !(($i426 == 1)); + goto $bb261; +$bb261: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 373, 3} true; + assume {:verifier.code 0} true; + $i424 := $i427; + goto $bb255; +$bb262: + assume ($i438 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 11} true; + assume {:verifier.code 0} true; + $i440 := $slt.i32($i436, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i440} true; + goto $bb265, $bb267; +$bb263: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 380, 7} true; + assume {:verifier.code 0} true; + assume !(($i438 == 1)); + goto $bb264; +$bb264: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 385, 7} true; + assume {:verifier.code 0} true; + $i444 := $sext.i32.i64($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 385, 9} true; + assume {:verifier.code 0} true; + $i445 := $srem.i64($i444, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 385, 7} true; + assume {:verifier.code 0} true; + $i446 := $trunc.i64.i32($i445); + call {:cexpr "a"} boogie_si_record_i32($i446); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 386, 5} true; + assume {:verifier.code 0} true; + $i447 := $add.i32($i446, $i446); + call {:cexpr "a"} boogie_si_record_i32($i447); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 387, 7} true; + assume {:verifier.code 0} true; + $i448 := $sext.i32.i64($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 387, 9} true; + assume {:verifier.code 0} true; + $i449 := $srem.i64($i448, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 387, 7} true; + assume {:verifier.code 0} true; + $i450 := $trunc.i64.i32($i449); + call {:cexpr "b"} boogie_si_record_i32($i450); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 388, 5} true; + assume {:verifier.code 0} true; + $i451 := $add.i32($i450, $i450); + call {:cexpr "b"} boogie_si_record_i32($i451); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 390, 5} true; + assume {:verifier.code 0} true; + $i452 := $add.i32($i439, $i439); + call {:cexpr "c"} boogie_si_record_i32($i452); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 391, 9} true; + assume {:verifier.code 0} true; + $i453 := $slt.i32($i447, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 391, 7} true; + assume {:verifier.code 0} true; + $i454 := $i452; + assume {:branchcond $i453} true; + goto $bb271, $bb272; +$bb265: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 15} true; + assume {:verifier.code 0} true; + assume ($i440 == 1); + goto $bb266; +$bb266: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 382, 9} true; + assume {:verifier.code 0} true; + $i443 := $add.i32($i437, 1); + call {:cexpr "c"} boogie_si_record_i32($i443); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 383, 5} true; + assume {:verifier.code 0} true; + $i442 := $i443; + goto $bb270; +$bb267: + assume !(($i440 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 20} true; + assume {:verifier.code 0} true; + $i441 := $sgt.i32($i436, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 9} true; + assume {:verifier.code 0} true; + $i442 := $i437; + assume {:branchcond $i441} true; + goto $bb268, $bb269; +$bb268: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 9} true; + assume {:verifier.code 0} true; + assume ($i441 == 1); + goto $bb266; +$bb269: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 9} true; + assume {:verifier.code 0} true; + assume !(($i441 == 1)); + goto $bb270; +$bb270: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 384, 3} true; + assume {:verifier.code 0} true; + $i439 := $i442; + goto $bb264; +$bb271: + assume ($i453 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 11} true; + assume {:verifier.code 0} true; + $i455 := $slt.i32($i451, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i455} true; + goto $bb274, $bb276; +$bb272: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 391, 7} true; + assume {:verifier.code 0} true; + assume !(($i453 == 1)); + goto $bb273; +$bb273: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 396, 7} true; + assume {:verifier.code 0} true; + $i459 := $sext.i32.i64($i447); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 396, 9} true; + assume {:verifier.code 0} true; + $i460 := $srem.i64($i459, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 396, 7} true; + assume {:verifier.code 0} true; + $i461 := $trunc.i64.i32($i460); + call {:cexpr "a"} boogie_si_record_i32($i461); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 397, 5} true; + assume {:verifier.code 0} true; + $i462 := $add.i32($i461, $i461); + call {:cexpr "a"} boogie_si_record_i32($i462); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 398, 7} true; + assume {:verifier.code 0} true; + $i463 := $sext.i32.i64($i451); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 398, 9} true; + assume {:verifier.code 0} true; + $i464 := $srem.i64($i463, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 398, 7} true; + assume {:verifier.code 0} true; + $i465 := $trunc.i64.i32($i464); + call {:cexpr "b"} boogie_si_record_i32($i465); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 399, 5} true; + assume {:verifier.code 0} true; + $i466 := $add.i32($i465, $i465); + call {:cexpr "b"} boogie_si_record_i32($i466); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 401, 5} true; + assume {:verifier.code 0} true; + $i467 := $add.i32($i454, $i454); + call {:cexpr "c"} boogie_si_record_i32($i467); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 402, 9} true; + assume {:verifier.code 0} true; + $i468 := $slt.i32($i462, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 402, 7} true; + assume {:verifier.code 0} true; + $i469 := $i467; + assume {:branchcond $i468} true; + goto $bb280, $bb281; +$bb274: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 15} true; + assume {:verifier.code 0} true; + assume ($i455 == 1); + goto $bb275; +$bb275: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 393, 9} true; + assume {:verifier.code 0} true; + $i458 := $add.i32($i452, 1); + call {:cexpr "c"} boogie_si_record_i32($i458); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 394, 5} true; + assume {:verifier.code 0} true; + $i457 := $i458; + goto $bb279; +$bb276: + assume !(($i455 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 20} true; + assume {:verifier.code 0} true; + $i456 := $sgt.i32($i451, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 9} true; + assume {:verifier.code 0} true; + $i457 := $i452; + assume {:branchcond $i456} true; + goto $bb277, $bb278; +$bb277: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 9} true; + assume {:verifier.code 0} true; + assume ($i456 == 1); + goto $bb275; +$bb278: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 9} true; + assume {:verifier.code 0} true; + assume !(($i456 == 1)); + goto $bb279; +$bb279: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 395, 3} true; + assume {:verifier.code 0} true; + $i454 := $i457; + goto $bb273; +$bb280: + assume ($i468 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 11} true; + assume {:verifier.code 0} true; + $i470 := $slt.i32($i466, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i470} true; + goto $bb283, $bb285; +$bb281: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 402, 7} true; + assume {:verifier.code 0} true; + assume !(($i468 == 1)); + goto $bb282; +$bb282: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 407, 7} true; + assume {:verifier.code 0} true; + $i474 := $sext.i32.i64($i462); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 407, 9} true; + assume {:verifier.code 0} true; + $i475 := $srem.i64($i474, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 407, 7} true; + assume {:verifier.code 0} true; + $i476 := $trunc.i64.i32($i475); + call {:cexpr "a"} boogie_si_record_i32($i476); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 408, 5} true; + assume {:verifier.code 0} true; + $i477 := $add.i32($i476, $i476); + call {:cexpr "a"} boogie_si_record_i32($i477); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 409, 7} true; + assume {:verifier.code 0} true; + $i478 := $sext.i32.i64($i466); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 409, 9} true; + assume {:verifier.code 0} true; + $i479 := $srem.i64($i478, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 409, 7} true; + assume {:verifier.code 0} true; + $i480 := $trunc.i64.i32($i479); + call {:cexpr "b"} boogie_si_record_i32($i480); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 410, 5} true; + assume {:verifier.code 0} true; + $i481 := $add.i32($i480, $i480); + call {:cexpr "b"} boogie_si_record_i32($i481); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 412, 5} true; + assume {:verifier.code 0} true; + $i482 := $add.i32($i469, $i469); + call {:cexpr "c"} boogie_si_record_i32($i482); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 413, 9} true; + assume {:verifier.code 0} true; + $i483 := $slt.i32($i477, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 413, 7} true; + assume {:verifier.code 0} true; + $i484 := $i482; + assume {:branchcond $i483} true; + goto $bb289, $bb290; +$bb283: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 15} true; + assume {:verifier.code 0} true; + assume ($i470 == 1); + goto $bb284; +$bb284: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 404, 9} true; + assume {:verifier.code 0} true; + $i473 := $add.i32($i467, 1); + call {:cexpr "c"} boogie_si_record_i32($i473); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 405, 5} true; + assume {:verifier.code 0} true; + $i472 := $i473; + goto $bb288; +$bb285: + assume !(($i470 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 20} true; + assume {:verifier.code 0} true; + $i471 := $sgt.i32($i466, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 9} true; + assume {:verifier.code 0} true; + $i472 := $i467; + assume {:branchcond $i471} true; + goto $bb286, $bb287; +$bb286: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 9} true; + assume {:verifier.code 0} true; + assume ($i471 == 1); + goto $bb284; +$bb287: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 9} true; + assume {:verifier.code 0} true; + assume !(($i471 == 1)); + goto $bb288; +$bb288: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 406, 3} true; + assume {:verifier.code 0} true; + $i469 := $i472; + goto $bb282; +$bb289: + assume ($i483 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 11} true; + assume {:verifier.code 0} true; + $i485 := $slt.i32($i481, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i485} true; + goto $bb292, $bb294; +$bb290: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 413, 7} true; + assume {:verifier.code 0} true; + assume !(($i483 == 1)); + goto $bb291; +$bb291: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 418, 7} true; + assume {:verifier.code 0} true; + $i489 := $sext.i32.i64($i477); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 418, 9} true; + assume {:verifier.code 0} true; + $i490 := $srem.i64($i489, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 418, 7} true; + assume {:verifier.code 0} true; + $i491 := $trunc.i64.i32($i490); + call {:cexpr "a"} boogie_si_record_i32($i491); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 419, 5} true; + assume {:verifier.code 0} true; + $i492 := $add.i32($i491, $i491); + call {:cexpr "a"} boogie_si_record_i32($i492); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 420, 7} true; + assume {:verifier.code 0} true; + $i493 := $sext.i32.i64($i481); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 420, 9} true; + assume {:verifier.code 0} true; + $i494 := $srem.i64($i493, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 420, 7} true; + assume {:verifier.code 0} true; + $i495 := $trunc.i64.i32($i494); + call {:cexpr "b"} boogie_si_record_i32($i495); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 421, 5} true; + assume {:verifier.code 0} true; + $i496 := $add.i32($i495, $i495); + call {:cexpr "b"} boogie_si_record_i32($i496); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 423, 5} true; + assume {:verifier.code 0} true; + $i497 := $add.i32($i484, $i484); + call {:cexpr "c"} boogie_si_record_i32($i497); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 424, 9} true; + assume {:verifier.code 0} true; + $i498 := $slt.i32($i492, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 424, 7} true; + assume {:verifier.code 0} true; + $i499 := $i497; + assume {:branchcond $i498} true; + goto $bb298, $bb299; +$bb292: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 15} true; + assume {:verifier.code 0} true; + assume ($i485 == 1); + goto $bb293; +$bb293: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 415, 9} true; + assume {:verifier.code 0} true; + $i488 := $add.i32($i482, 1); + call {:cexpr "c"} boogie_si_record_i32($i488); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 416, 5} true; + assume {:verifier.code 0} true; + $i487 := $i488; + goto $bb297; +$bb294: + assume !(($i485 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 20} true; + assume {:verifier.code 0} true; + $i486 := $sgt.i32($i481, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 9} true; + assume {:verifier.code 0} true; + $i487 := $i482; + assume {:branchcond $i486} true; + goto $bb295, $bb296; +$bb295: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 9} true; + assume {:verifier.code 0} true; + assume ($i486 == 1); + goto $bb293; +$bb296: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 9} true; + assume {:verifier.code 0} true; + assume !(($i486 == 1)); + goto $bb297; +$bb297: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 417, 3} true; + assume {:verifier.code 0} true; + $i484 := $i487; + goto $bb291; +$bb298: + assume ($i498 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 11} true; + assume {:verifier.code 0} true; + $i500 := $slt.i32($i496, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i500} true; + goto $bb301, $bb303; +$bb299: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 424, 7} true; + assume {:verifier.code 0} true; + assume !(($i498 == 1)); + goto $bb300; +$bb300: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 429, 7} true; + assume {:verifier.code 0} true; + $i504 := $sext.i32.i64($i492); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 429, 9} true; + assume {:verifier.code 0} true; + $i505 := $srem.i64($i504, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 429, 7} true; + assume {:verifier.code 0} true; + $i506 := $trunc.i64.i32($i505); + call {:cexpr "a"} boogie_si_record_i32($i506); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 430, 5} true; + assume {:verifier.code 0} true; + $i507 := $add.i32($i506, $i506); + call {:cexpr "a"} boogie_si_record_i32($i507); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 431, 7} true; + assume {:verifier.code 0} true; + $i508 := $sext.i32.i64($i496); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 431, 9} true; + assume {:verifier.code 0} true; + $i509 := $srem.i64($i508, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 431, 7} true; + assume {:verifier.code 0} true; + $i510 := $trunc.i64.i32($i509); + call {:cexpr "b"} boogie_si_record_i32($i510); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 432, 5} true; + assume {:verifier.code 0} true; + $i511 := $add.i32($i510, $i510); + call {:cexpr "b"} boogie_si_record_i32($i511); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 434, 5} true; + assume {:verifier.code 0} true; + $i512 := $add.i32($i499, $i499); + call {:cexpr "c"} boogie_si_record_i32($i512); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 435, 9} true; + assume {:verifier.code 0} true; + $i513 := $slt.i32($i507, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 435, 7} true; + assume {:verifier.code 0} true; + $i514 := $i512; + assume {:branchcond $i513} true; + goto $bb307, $bb308; +$bb301: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 15} true; + assume {:verifier.code 0} true; + assume ($i500 == 1); + goto $bb302; +$bb302: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 426, 9} true; + assume {:verifier.code 0} true; + $i503 := $add.i32($i497, 1); + call {:cexpr "c"} boogie_si_record_i32($i503); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 427, 5} true; + assume {:verifier.code 0} true; + $i502 := $i503; + goto $bb306; +$bb303: + assume !(($i500 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 20} true; + assume {:verifier.code 0} true; + $i501 := $sgt.i32($i496, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 9} true; + assume {:verifier.code 0} true; + $i502 := $i497; + assume {:branchcond $i501} true; + goto $bb304, $bb305; +$bb304: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 9} true; + assume {:verifier.code 0} true; + assume ($i501 == 1); + goto $bb302; +$bb305: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 9} true; + assume {:verifier.code 0} true; + assume !(($i501 == 1)); + goto $bb306; +$bb306: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 428, 3} true; + assume {:verifier.code 0} true; + $i499 := $i502; + goto $bb300; +$bb307: + assume ($i513 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 11} true; + assume {:verifier.code 0} true; + $i515 := $slt.i32($i511, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i515} true; + goto $bb310, $bb312; +$bb308: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 435, 7} true; + assume {:verifier.code 0} true; + assume !(($i513 == 1)); + goto $bb309; +$bb309: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 440, 7} true; + assume {:verifier.code 0} true; + $i519 := $sext.i32.i64($i507); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 440, 9} true; + assume {:verifier.code 0} true; + $i520 := $srem.i64($i519, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 440, 7} true; + assume {:verifier.code 0} true; + $i521 := $trunc.i64.i32($i520); + call {:cexpr "a"} boogie_si_record_i32($i521); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 441, 5} true; + assume {:verifier.code 0} true; + $i522 := $add.i32($i521, $i521); + call {:cexpr "a"} boogie_si_record_i32($i522); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 442, 7} true; + assume {:verifier.code 0} true; + $i523 := $sext.i32.i64($i511); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 442, 9} true; + assume {:verifier.code 0} true; + $i524 := $srem.i64($i523, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 442, 7} true; + assume {:verifier.code 0} true; + $i525 := $trunc.i64.i32($i524); + call {:cexpr "b"} boogie_si_record_i32($i525); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 443, 5} true; + assume {:verifier.code 0} true; + $i526 := $add.i32($i525, $i525); + call {:cexpr "b"} boogie_si_record_i32($i526); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 445, 5} true; + assume {:verifier.code 0} true; + $i527 := $add.i32($i514, $i514); + call {:cexpr "c"} boogie_si_record_i32($i527); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 446, 9} true; + assume {:verifier.code 0} true; + $i528 := $slt.i32($i522, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 446, 7} true; + assume {:verifier.code 0} true; + $i529 := $i527; + assume {:branchcond $i528} true; + goto $bb316, $bb317; +$bb310: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 15} true; + assume {:verifier.code 0} true; + assume ($i515 == 1); + goto $bb311; +$bb311: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 437, 9} true; + assume {:verifier.code 0} true; + $i518 := $add.i32($i512, 1); + call {:cexpr "c"} boogie_si_record_i32($i518); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 438, 5} true; + assume {:verifier.code 0} true; + $i517 := $i518; + goto $bb315; +$bb312: + assume !(($i515 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 20} true; + assume {:verifier.code 0} true; + $i516 := $sgt.i32($i511, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 9} true; + assume {:verifier.code 0} true; + $i517 := $i512; + assume {:branchcond $i516} true; + goto $bb313, $bb314; +$bb313: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 9} true; + assume {:verifier.code 0} true; + assume ($i516 == 1); + goto $bb311; +$bb314: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 9} true; + assume {:verifier.code 0} true; + assume !(($i516 == 1)); + goto $bb315; +$bb315: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 439, 3} true; + assume {:verifier.code 0} true; + $i514 := $i517; + goto $bb309; +$bb316: + assume ($i528 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 11} true; + assume {:verifier.code 0} true; + $i530 := $slt.i32($i526, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i530} true; + goto $bb319, $bb321; +$bb317: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 446, 7} true; + assume {:verifier.code 0} true; + assume !(($i528 == 1)); + goto $bb318; +$bb318: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 451, 7} true; + assume {:verifier.code 0} true; + $i534 := $sext.i32.i64($i522); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 451, 9} true; + assume {:verifier.code 0} true; + $i535 := $srem.i64($i534, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 451, 7} true; + assume {:verifier.code 0} true; + $i536 := $trunc.i64.i32($i535); + call {:cexpr "a"} boogie_si_record_i32($i536); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 452, 5} true; + assume {:verifier.code 0} true; + $i537 := $add.i32($i536, $i536); + call {:cexpr "a"} boogie_si_record_i32($i537); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 453, 7} true; + assume {:verifier.code 0} true; + $i538 := $sext.i32.i64($i526); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 453, 9} true; + assume {:verifier.code 0} true; + $i539 := $srem.i64($i538, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 453, 7} true; + assume {:verifier.code 0} true; + $i540 := $trunc.i64.i32($i539); + call {:cexpr "b"} boogie_si_record_i32($i540); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 454, 5} true; + assume {:verifier.code 0} true; + $i541 := $add.i32($i540, $i540); + call {:cexpr "b"} boogie_si_record_i32($i541); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 456, 5} true; + assume {:verifier.code 0} true; + $i542 := $add.i32($i529, $i529); + call {:cexpr "c"} boogie_si_record_i32($i542); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 457, 9} true; + assume {:verifier.code 0} true; + $i543 := $slt.i32($i537, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 457, 7} true; + assume {:verifier.code 0} true; + $i544 := $i542; + assume {:branchcond $i543} true; + goto $bb325, $bb326; +$bb319: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 15} true; + assume {:verifier.code 0} true; + assume ($i530 == 1); + goto $bb320; +$bb320: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 448, 9} true; + assume {:verifier.code 0} true; + $i533 := $add.i32($i527, 1); + call {:cexpr "c"} boogie_si_record_i32($i533); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 449, 5} true; + assume {:verifier.code 0} true; + $i532 := $i533; + goto $bb324; +$bb321: + assume !(($i530 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 20} true; + assume {:verifier.code 0} true; + $i531 := $sgt.i32($i526, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 9} true; + assume {:verifier.code 0} true; + $i532 := $i527; + assume {:branchcond $i531} true; + goto $bb322, $bb323; +$bb322: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 9} true; + assume {:verifier.code 0} true; + assume ($i531 == 1); + goto $bb320; +$bb323: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 9} true; + assume {:verifier.code 0} true; + assume !(($i531 == 1)); + goto $bb324; +$bb324: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 450, 3} true; + assume {:verifier.code 0} true; + $i529 := $i532; + goto $bb318; +$bb325: + assume ($i543 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 11} true; + assume {:verifier.code 0} true; + $i545 := $slt.i32($i541, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i545} true; + goto $bb328, $bb330; +$bb326: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 457, 7} true; + assume {:verifier.code 0} true; + assume !(($i543 == 1)); + goto $bb327; +$bb327: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 462, 7} true; + assume {:verifier.code 0} true; + $i549 := $sext.i32.i64($i537); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 462, 9} true; + assume {:verifier.code 0} true; + $i550 := $srem.i64($i549, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 462, 7} true; + assume {:verifier.code 0} true; + $i551 := $trunc.i64.i32($i550); + call {:cexpr "a"} boogie_si_record_i32($i551); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 463, 5} true; + assume {:verifier.code 0} true; + $i552 := $add.i32($i551, $i551); + call {:cexpr "a"} boogie_si_record_i32($i552); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 464, 7} true; + assume {:verifier.code 0} true; + $i553 := $sext.i32.i64($i541); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 464, 9} true; + assume {:verifier.code 0} true; + $i554 := $srem.i64($i553, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 464, 7} true; + assume {:verifier.code 0} true; + $i555 := $trunc.i64.i32($i554); + call {:cexpr "b"} boogie_si_record_i32($i555); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 465, 5} true; + assume {:verifier.code 0} true; + $i556 := $add.i32($i555, $i555); + call {:cexpr "b"} boogie_si_record_i32($i556); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 467, 5} true; + assume {:verifier.code 0} true; + $i557 := $add.i32($i544, $i544); + call {:cexpr "c"} boogie_si_record_i32($i557); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 468, 9} true; + assume {:verifier.code 0} true; + $i558 := $slt.i32($i552, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 468, 7} true; + assume {:verifier.code 0} true; + $i559 := $i557; + assume {:branchcond $i558} true; + goto $bb334, $bb335; +$bb328: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 15} true; + assume {:verifier.code 0} true; + assume ($i545 == 1); + goto $bb329; +$bb329: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 459, 9} true; + assume {:verifier.code 0} true; + $i548 := $add.i32($i542, 1); + call {:cexpr "c"} boogie_si_record_i32($i548); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 460, 5} true; + assume {:verifier.code 0} true; + $i547 := $i548; + goto $bb333; +$bb330: + assume !(($i545 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 20} true; + assume {:verifier.code 0} true; + $i546 := $sgt.i32($i541, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 9} true; + assume {:verifier.code 0} true; + $i547 := $i542; + assume {:branchcond $i546} true; + goto $bb331, $bb332; +$bb331: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 9} true; + assume {:verifier.code 0} true; + assume ($i546 == 1); + goto $bb329; +$bb332: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 9} true; + assume {:verifier.code 0} true; + assume !(($i546 == 1)); + goto $bb333; +$bb333: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 461, 3} true; + assume {:verifier.code 0} true; + $i544 := $i547; + goto $bb327; +$bb334: + assume ($i558 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 11} true; + assume {:verifier.code 0} true; + $i560 := $slt.i32($i556, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i560} true; + goto $bb337, $bb339; +$bb335: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 468, 7} true; + assume {:verifier.code 0} true; + assume !(($i558 == 1)); + goto $bb336; +$bb336: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 473, 7} true; + assume {:verifier.code 0} true; + $i564 := $sext.i32.i64($i552); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 473, 9} true; + assume {:verifier.code 0} true; + $i565 := $srem.i64($i564, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 473, 7} true; + assume {:verifier.code 0} true; + $i566 := $trunc.i64.i32($i565); + call {:cexpr "a"} boogie_si_record_i32($i566); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 474, 5} true; + assume {:verifier.code 0} true; + $i567 := $add.i32($i566, $i566); + call {:cexpr "a"} boogie_si_record_i32($i567); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 475, 7} true; + assume {:verifier.code 0} true; + $i568 := $sext.i32.i64($i556); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 475, 9} true; + assume {:verifier.code 0} true; + $i569 := $srem.i64($i568, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 475, 7} true; + assume {:verifier.code 0} true; + $i570 := $trunc.i64.i32($i569); + call {:cexpr "b"} boogie_si_record_i32($i570); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 476, 5} true; + assume {:verifier.code 0} true; + $i571 := $add.i32($i570, $i570); + call {:cexpr "b"} boogie_si_record_i32($i571); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 478, 5} true; + assume {:verifier.code 0} true; + $i572 := $add.i32($i559, $i559); + call {:cexpr "c"} boogie_si_record_i32($i572); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 479, 9} true; + assume {:verifier.code 0} true; + $i573 := $slt.i32($i567, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 479, 7} true; + assume {:verifier.code 0} true; + $i574 := $i572; + assume {:branchcond $i573} true; + goto $bb343, $bb344; +$bb337: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 15} true; + assume {:verifier.code 0} true; + assume ($i560 == 1); + goto $bb338; +$bb338: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 470, 9} true; + assume {:verifier.code 0} true; + $i563 := $add.i32($i557, 1); + call {:cexpr "c"} boogie_si_record_i32($i563); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 471, 5} true; + assume {:verifier.code 0} true; + $i562 := $i563; + goto $bb342; +$bb339: + assume !(($i560 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 20} true; + assume {:verifier.code 0} true; + $i561 := $sgt.i32($i556, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 9} true; + assume {:verifier.code 0} true; + $i562 := $i557; + assume {:branchcond $i561} true; + goto $bb340, $bb341; +$bb340: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 9} true; + assume {:verifier.code 0} true; + assume ($i561 == 1); + goto $bb338; +$bb341: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 9} true; + assume {:verifier.code 0} true; + assume !(($i561 == 1)); + goto $bb342; +$bb342: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 472, 3} true; + assume {:verifier.code 0} true; + $i559 := $i562; + goto $bb336; +$bb343: + assume ($i573 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 11} true; + assume {:verifier.code 0} true; + $i575 := $slt.i32($i571, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i575} true; + goto $bb346, $bb348; +$bb344: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 479, 7} true; + assume {:verifier.code 0} true; + assume !(($i573 == 1)); + goto $bb345; +$bb345: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 484, 7} true; + assume {:verifier.code 0} true; + $i579 := $sext.i32.i64($i567); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 484, 9} true; + assume {:verifier.code 0} true; + $i580 := $srem.i64($i579, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 484, 7} true; + assume {:verifier.code 0} true; + $i581 := $trunc.i64.i32($i580); + call {:cexpr "a"} boogie_si_record_i32($i581); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 485, 5} true; + assume {:verifier.code 0} true; + $i582 := $add.i32($i581, $i581); + call {:cexpr "a"} boogie_si_record_i32($i582); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 486, 7} true; + assume {:verifier.code 0} true; + $i583 := $sext.i32.i64($i571); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 486, 9} true; + assume {:verifier.code 0} true; + $i584 := $srem.i64($i583, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 486, 7} true; + assume {:verifier.code 0} true; + $i585 := $trunc.i64.i32($i584); + call {:cexpr "b"} boogie_si_record_i32($i585); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 487, 5} true; + assume {:verifier.code 0} true; + $i586 := $add.i32($i585, $i585); + call {:cexpr "b"} boogie_si_record_i32($i586); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 489, 5} true; + assume {:verifier.code 0} true; + $i587 := $add.i32($i574, $i574); + call {:cexpr "c"} boogie_si_record_i32($i587); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 490, 9} true; + assume {:verifier.code 0} true; + $i588 := $slt.i32($i582, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 490, 7} true; + assume {:verifier.code 0} true; + $i589 := $i587; + assume {:branchcond $i588} true; + goto $bb352, $bb353; +$bb346: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 15} true; + assume {:verifier.code 0} true; + assume ($i575 == 1); + goto $bb347; +$bb347: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 481, 9} true; + assume {:verifier.code 0} true; + $i578 := $add.i32($i572, 1); + call {:cexpr "c"} boogie_si_record_i32($i578); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 482, 5} true; + assume {:verifier.code 0} true; + $i577 := $i578; + goto $bb351; +$bb348: + assume !(($i575 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 20} true; + assume {:verifier.code 0} true; + $i576 := $sgt.i32($i571, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 9} true; + assume {:verifier.code 0} true; + $i577 := $i572; + assume {:branchcond $i576} true; + goto $bb349, $bb350; +$bb349: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 9} true; + assume {:verifier.code 0} true; + assume ($i576 == 1); + goto $bb347; +$bb350: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 9} true; + assume {:verifier.code 0} true; + assume !(($i576 == 1)); + goto $bb351; +$bb351: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 483, 3} true; + assume {:verifier.code 0} true; + $i574 := $i577; + goto $bb345; +$bb352: + assume ($i588 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 11} true; + assume {:verifier.code 0} true; + $i590 := $slt.i32($i586, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i590} true; + goto $bb355, $bb357; +$bb353: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 490, 7} true; + assume {:verifier.code 0} true; + assume !(($i588 == 1)); + goto $bb354; +$bb354: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 495, 7} true; + assume {:verifier.code 0} true; + $i594 := $sext.i32.i64($i582); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 495, 9} true; + assume {:verifier.code 0} true; + $i595 := $srem.i64($i594, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 495, 7} true; + assume {:verifier.code 0} true; + $i596 := $trunc.i64.i32($i595); + call {:cexpr "a"} boogie_si_record_i32($i596); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 496, 5} true; + assume {:verifier.code 0} true; + $i597 := $add.i32($i596, $i596); + call {:cexpr "a"} boogie_si_record_i32($i597); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 497, 7} true; + assume {:verifier.code 0} true; + $i598 := $sext.i32.i64($i586); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 497, 9} true; + assume {:verifier.code 0} true; + $i599 := $srem.i64($i598, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 497, 7} true; + assume {:verifier.code 0} true; + $i600 := $trunc.i64.i32($i599); + call {:cexpr "b"} boogie_si_record_i32($i600); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 498, 5} true; + assume {:verifier.code 0} true; + $i601 := $add.i32($i600, $i600); + call {:cexpr "b"} boogie_si_record_i32($i601); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 500, 5} true; + assume {:verifier.code 0} true; + $i602 := $add.i32($i589, $i589); + call {:cexpr "c"} boogie_si_record_i32($i602); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 501, 9} true; + assume {:verifier.code 0} true; + $i603 := $slt.i32($i597, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 501, 7} true; + assume {:verifier.code 0} true; + $i604 := $i602; + assume {:branchcond $i603} true; + goto $bb361, $bb362; +$bb355: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 15} true; + assume {:verifier.code 0} true; + assume ($i590 == 1); + goto $bb356; +$bb356: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 492, 9} true; + assume {:verifier.code 0} true; + $i593 := $add.i32($i587, 1); + call {:cexpr "c"} boogie_si_record_i32($i593); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 493, 5} true; + assume {:verifier.code 0} true; + $i592 := $i593; + goto $bb360; +$bb357: + assume !(($i590 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 20} true; + assume {:verifier.code 0} true; + $i591 := $sgt.i32($i586, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 9} true; + assume {:verifier.code 0} true; + $i592 := $i587; + assume {:branchcond $i591} true; + goto $bb358, $bb359; +$bb358: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 9} true; + assume {:verifier.code 0} true; + assume ($i591 == 1); + goto $bb356; +$bb359: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 9} true; + assume {:verifier.code 0} true; + assume !(($i591 == 1)); + goto $bb360; +$bb360: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 494, 3} true; + assume {:verifier.code 0} true; + $i589 := $i592; + goto $bb354; +$bb361: + assume ($i603 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 11} true; + assume {:verifier.code 0} true; + $i605 := $slt.i32($i601, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i605} true; + goto $bb364, $bb366; +$bb362: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 501, 7} true; + assume {:verifier.code 0} true; + assume !(($i603 == 1)); + goto $bb363; +$bb363: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 506, 7} true; + assume {:verifier.code 0} true; + $i609 := $sext.i32.i64($i597); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 506, 9} true; + assume {:verifier.code 0} true; + $i610 := $srem.i64($i609, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 506, 7} true; + assume {:verifier.code 0} true; + $i611 := $trunc.i64.i32($i610); + call {:cexpr "a"} boogie_si_record_i32($i611); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 507, 5} true; + assume {:verifier.code 0} true; + $i612 := $add.i32($i611, $i611); + call {:cexpr "a"} boogie_si_record_i32($i612); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 508, 7} true; + assume {:verifier.code 0} true; + $i613 := $sext.i32.i64($i601); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 508, 9} true; + assume {:verifier.code 0} true; + $i614 := $srem.i64($i613, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 508, 7} true; + assume {:verifier.code 0} true; + $i615 := $trunc.i64.i32($i614); + call {:cexpr "b"} boogie_si_record_i32($i615); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 509, 5} true; + assume {:verifier.code 0} true; + $i616 := $add.i32($i615, $i615); + call {:cexpr "b"} boogie_si_record_i32($i616); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 511, 5} true; + assume {:verifier.code 0} true; + $i617 := $add.i32($i604, $i604); + call {:cexpr "c"} boogie_si_record_i32($i617); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 512, 9} true; + assume {:verifier.code 0} true; + $i618 := $slt.i32($i612, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 512, 7} true; + assume {:verifier.code 0} true; + $i619 := $i617; + assume {:branchcond $i618} true; + goto $bb370, $bb371; +$bb364: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 15} true; + assume {:verifier.code 0} true; + assume ($i605 == 1); + goto $bb365; +$bb365: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 503, 9} true; + assume {:verifier.code 0} true; + $i608 := $add.i32($i602, 1); + call {:cexpr "c"} boogie_si_record_i32($i608); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 504, 5} true; + assume {:verifier.code 0} true; + $i607 := $i608; + goto $bb369; +$bb366: + assume !(($i605 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 20} true; + assume {:verifier.code 0} true; + $i606 := $sgt.i32($i601, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 9} true; + assume {:verifier.code 0} true; + $i607 := $i602; + assume {:branchcond $i606} true; + goto $bb367, $bb368; +$bb367: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 9} true; + assume {:verifier.code 0} true; + assume ($i606 == 1); + goto $bb365; +$bb368: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 9} true; + assume {:verifier.code 0} true; + assume !(($i606 == 1)); + goto $bb369; +$bb369: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 505, 3} true; + assume {:verifier.code 0} true; + $i604 := $i607; + goto $bb363; +$bb370: + assume ($i618 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 11} true; + assume {:verifier.code 0} true; + $i620 := $slt.i32($i616, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i620} true; + goto $bb373, $bb375; +$bb371: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 512, 7} true; + assume {:verifier.code 0} true; + assume !(($i618 == 1)); + goto $bb372; +$bb372: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 517, 7} true; + assume {:verifier.code 0} true; + $i624 := $sext.i32.i64($i612); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 517, 9} true; + assume {:verifier.code 0} true; + $i625 := $srem.i64($i624, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 517, 7} true; + assume {:verifier.code 0} true; + $i626 := $trunc.i64.i32($i625); + call {:cexpr "a"} boogie_si_record_i32($i626); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 518, 5} true; + assume {:verifier.code 0} true; + $i627 := $add.i32($i626, $i626); + call {:cexpr "a"} boogie_si_record_i32($i627); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 519, 7} true; + assume {:verifier.code 0} true; + $i628 := $sext.i32.i64($i616); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 519, 9} true; + assume {:verifier.code 0} true; + $i629 := $srem.i64($i628, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 519, 7} true; + assume {:verifier.code 0} true; + $i630 := $trunc.i64.i32($i629); + call {:cexpr "b"} boogie_si_record_i32($i630); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 520, 5} true; + assume {:verifier.code 0} true; + $i631 := $add.i32($i630, $i630); + call {:cexpr "b"} boogie_si_record_i32($i631); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 522, 5} true; + assume {:verifier.code 0} true; + $i632 := $add.i32($i619, $i619); + call {:cexpr "c"} boogie_si_record_i32($i632); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 523, 9} true; + assume {:verifier.code 0} true; + $i633 := $slt.i32($i627, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 523, 7} true; + assume {:verifier.code 0} true; + $i634 := $i632; + assume {:branchcond $i633} true; + goto $bb379, $bb380; +$bb373: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 15} true; + assume {:verifier.code 0} true; + assume ($i620 == 1); + goto $bb374; +$bb374: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 514, 9} true; + assume {:verifier.code 0} true; + $i623 := $add.i32($i617, 1); + call {:cexpr "c"} boogie_si_record_i32($i623); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 515, 5} true; + assume {:verifier.code 0} true; + $i622 := $i623; + goto $bb378; +$bb375: + assume !(($i620 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 20} true; + assume {:verifier.code 0} true; + $i621 := $sgt.i32($i616, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 9} true; + assume {:verifier.code 0} true; + $i622 := $i617; + assume {:branchcond $i621} true; + goto $bb376, $bb377; +$bb376: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 9} true; + assume {:verifier.code 0} true; + assume ($i621 == 1); + goto $bb374; +$bb377: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 9} true; + assume {:verifier.code 0} true; + assume !(($i621 == 1)); + goto $bb378; +$bb378: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 516, 3} true; + assume {:verifier.code 0} true; + $i619 := $i622; + goto $bb372; +$bb379: + assume ($i633 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 11} true; + assume {:verifier.code 0} true; + $i635 := $slt.i32($i631, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i635} true; + goto $bb382, $bb384; +$bb380: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 523, 7} true; + assume {:verifier.code 0} true; + assume !(($i633 == 1)); + goto $bb381; +$bb381: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 528, 7} true; + assume {:verifier.code 0} true; + $i639 := $sext.i32.i64($i627); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 528, 9} true; + assume {:verifier.code 0} true; + $i640 := $srem.i64($i639, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 528, 7} true; + assume {:verifier.code 0} true; + $i641 := $trunc.i64.i32($i640); + call {:cexpr "a"} boogie_si_record_i32($i641); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 529, 5} true; + assume {:verifier.code 0} true; + $i642 := $add.i32($i641, $i641); + call {:cexpr "a"} boogie_si_record_i32($i642); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 530, 7} true; + assume {:verifier.code 0} true; + $i643 := $sext.i32.i64($i631); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 530, 9} true; + assume {:verifier.code 0} true; + $i644 := $srem.i64($i643, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 530, 7} true; + assume {:verifier.code 0} true; + $i645 := $trunc.i64.i32($i644); + call {:cexpr "b"} boogie_si_record_i32($i645); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 531, 5} true; + assume {:verifier.code 0} true; + $i646 := $add.i32($i645, $i645); + call {:cexpr "b"} boogie_si_record_i32($i646); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 533, 5} true; + assume {:verifier.code 0} true; + $i647 := $add.i32($i634, $i634); + call {:cexpr "c"} boogie_si_record_i32($i647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 534, 9} true; + assume {:verifier.code 0} true; + $i648 := $slt.i32($i642, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 534, 7} true; + assume {:verifier.code 0} true; + $i649 := $i647; + assume {:branchcond $i648} true; + goto $bb388, $bb389; +$bb382: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 15} true; + assume {:verifier.code 0} true; + assume ($i635 == 1); + goto $bb383; +$bb383: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 525, 9} true; + assume {:verifier.code 0} true; + $i638 := $add.i32($i632, 1); + call {:cexpr "c"} boogie_si_record_i32($i638); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 526, 5} true; + assume {:verifier.code 0} true; + $i637 := $i638; + goto $bb387; +$bb384: + assume !(($i635 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 20} true; + assume {:verifier.code 0} true; + $i636 := $sgt.i32($i631, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 9} true; + assume {:verifier.code 0} true; + $i637 := $i632; + assume {:branchcond $i636} true; + goto $bb385, $bb386; +$bb385: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 9} true; + assume {:verifier.code 0} true; + assume ($i636 == 1); + goto $bb383; +$bb386: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 9} true; + assume {:verifier.code 0} true; + assume !(($i636 == 1)); + goto $bb387; +$bb387: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 527, 3} true; + assume {:verifier.code 0} true; + $i634 := $i637; + goto $bb381; +$bb388: + assume ($i648 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 11} true; + assume {:verifier.code 0} true; + $i650 := $slt.i32($i646, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i650} true; + goto $bb391, $bb393; +$bb389: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 534, 7} true; + assume {:verifier.code 0} true; + assume !(($i648 == 1)); + goto $bb390; +$bb390: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 539, 7} true; + assume {:verifier.code 0} true; + $i654 := $sext.i32.i64($i642); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 539, 9} true; + assume {:verifier.code 0} true; + $i655 := $srem.i64($i654, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 539, 7} true; + assume {:verifier.code 0} true; + $i656 := $trunc.i64.i32($i655); + call {:cexpr "a"} boogie_si_record_i32($i656); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 540, 5} true; + assume {:verifier.code 0} true; + $i657 := $add.i32($i656, $i656); + call {:cexpr "a"} boogie_si_record_i32($i657); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 541, 7} true; + assume {:verifier.code 0} true; + $i658 := $sext.i32.i64($i646); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 541, 9} true; + assume {:verifier.code 0} true; + $i659 := $srem.i64($i658, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 541, 7} true; + assume {:verifier.code 0} true; + $i660 := $trunc.i64.i32($i659); + call {:cexpr "b"} boogie_si_record_i32($i660); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 542, 5} true; + assume {:verifier.code 0} true; + $i661 := $add.i32($i660, $i660); + call {:cexpr "b"} boogie_si_record_i32($i661); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 544, 5} true; + assume {:verifier.code 0} true; + $i662 := $add.i32($i649, $i649); + call {:cexpr "c"} boogie_si_record_i32($i662); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 545, 9} true; + assume {:verifier.code 0} true; + $i663 := $slt.i32($i657, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 545, 7} true; + assume {:verifier.code 0} true; + $i664 := $i662; + assume {:branchcond $i663} true; + goto $bb397, $bb398; +$bb391: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 15} true; + assume {:verifier.code 0} true; + assume ($i650 == 1); + goto $bb392; +$bb392: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 536, 9} true; + assume {:verifier.code 0} true; + $i653 := $add.i32($i647, 1); + call {:cexpr "c"} boogie_si_record_i32($i653); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 537, 5} true; + assume {:verifier.code 0} true; + $i652 := $i653; + goto $bb396; +$bb393: + assume !(($i650 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 20} true; + assume {:verifier.code 0} true; + $i651 := $sgt.i32($i646, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 9} true; + assume {:verifier.code 0} true; + $i652 := $i647; + assume {:branchcond $i651} true; + goto $bb394, $bb395; +$bb394: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 9} true; + assume {:verifier.code 0} true; + assume ($i651 == 1); + goto $bb392; +$bb395: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 9} true; + assume {:verifier.code 0} true; + assume !(($i651 == 1)); + goto $bb396; +$bb396: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 538, 3} true; + assume {:verifier.code 0} true; + $i649 := $i652; + goto $bb390; +$bb397: + assume ($i663 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 11} true; + assume {:verifier.code 0} true; + $i665 := $slt.i32($i661, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i665} true; + goto $bb400, $bb402; +$bb398: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 545, 7} true; + assume {:verifier.code 0} true; + assume !(($i663 == 1)); + goto $bb399; +$bb399: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 550, 7} true; + assume {:verifier.code 0} true; + $i669 := $sext.i32.i64($i657); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 550, 9} true; + assume {:verifier.code 0} true; + $i670 := $srem.i64($i669, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 550, 7} true; + assume {:verifier.code 0} true; + $i671 := $trunc.i64.i32($i670); + call {:cexpr "a"} boogie_si_record_i32($i671); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 551, 5} true; + assume {:verifier.code 0} true; + $i672 := $add.i32($i671, $i671); + call {:cexpr "a"} boogie_si_record_i32($i672); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 552, 7} true; + assume {:verifier.code 0} true; + $i673 := $sext.i32.i64($i661); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 552, 9} true; + assume {:verifier.code 0} true; + $i674 := $srem.i64($i673, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 552, 7} true; + assume {:verifier.code 0} true; + $i675 := $trunc.i64.i32($i674); + call {:cexpr "b"} boogie_si_record_i32($i675); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 553, 5} true; + assume {:verifier.code 0} true; + $i676 := $add.i32($i675, $i675); + call {:cexpr "b"} boogie_si_record_i32($i676); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 555, 5} true; + assume {:verifier.code 0} true; + $i677 := $add.i32($i664, $i664); + call {:cexpr "c"} boogie_si_record_i32($i677); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 556, 9} true; + assume {:verifier.code 0} true; + $i678 := $slt.i32($i672, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 556, 7} true; + assume {:verifier.code 0} true; + $i679 := $i677; + assume {:branchcond $i678} true; + goto $bb406, $bb407; +$bb400: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 15} true; + assume {:verifier.code 0} true; + assume ($i665 == 1); + goto $bb401; +$bb401: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 547, 9} true; + assume {:verifier.code 0} true; + $i668 := $add.i32($i662, 1); + call {:cexpr "c"} boogie_si_record_i32($i668); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 548, 5} true; + assume {:verifier.code 0} true; + $i667 := $i668; + goto $bb405; +$bb402: + assume !(($i665 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 20} true; + assume {:verifier.code 0} true; + $i666 := $sgt.i32($i661, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 9} true; + assume {:verifier.code 0} true; + $i667 := $i662; + assume {:branchcond $i666} true; + goto $bb403, $bb404; +$bb403: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 9} true; + assume {:verifier.code 0} true; + assume ($i666 == 1); + goto $bb401; +$bb404: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 9} true; + assume {:verifier.code 0} true; + assume !(($i666 == 1)); + goto $bb405; +$bb405: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 549, 3} true; + assume {:verifier.code 0} true; + $i664 := $i667; + goto $bb399; +$bb406: + assume ($i678 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 11} true; + assume {:verifier.code 0} true; + $i680 := $slt.i32($i676, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i680} true; + goto $bb409, $bb411; +$bb407: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 556, 7} true; + assume {:verifier.code 0} true; + assume !(($i678 == 1)); + goto $bb408; +$bb408: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 561, 7} true; + assume {:verifier.code 0} true; + $i684 := $sext.i32.i64($i672); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 561, 9} true; + assume {:verifier.code 0} true; + $i685 := $srem.i64($i684, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 561, 7} true; + assume {:verifier.code 0} true; + $i686 := $trunc.i64.i32($i685); + call {:cexpr "a"} boogie_si_record_i32($i686); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 562, 5} true; + assume {:verifier.code 0} true; + $i687 := $add.i32($i686, $i686); + call {:cexpr "a"} boogie_si_record_i32($i687); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 563, 7} true; + assume {:verifier.code 0} true; + $i688 := $sext.i32.i64($i676); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 563, 9} true; + assume {:verifier.code 0} true; + $i689 := $srem.i64($i688, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 563, 7} true; + assume {:verifier.code 0} true; + $i690 := $trunc.i64.i32($i689); + call {:cexpr "b"} boogie_si_record_i32($i690); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 564, 5} true; + assume {:verifier.code 0} true; + $i691 := $add.i32($i690, $i690); + call {:cexpr "b"} boogie_si_record_i32($i691); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 566, 5} true; + assume {:verifier.code 0} true; + $i692 := $add.i32($i679, $i679); + call {:cexpr "c"} boogie_si_record_i32($i692); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 567, 9} true; + assume {:verifier.code 0} true; + $i693 := $slt.i32($i687, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 567, 7} true; + assume {:verifier.code 0} true; + $i694 := $i692; + assume {:branchcond $i693} true; + goto $bb415, $bb416; +$bb409: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 15} true; + assume {:verifier.code 0} true; + assume ($i680 == 1); + goto $bb410; +$bb410: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 558, 9} true; + assume {:verifier.code 0} true; + $i683 := $add.i32($i677, 1); + call {:cexpr "c"} boogie_si_record_i32($i683); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 559, 5} true; + assume {:verifier.code 0} true; + $i682 := $i683; + goto $bb414; +$bb411: + assume !(($i680 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 20} true; + assume {:verifier.code 0} true; + $i681 := $sgt.i32($i676, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 9} true; + assume {:verifier.code 0} true; + $i682 := $i677; + assume {:branchcond $i681} true; + goto $bb412, $bb413; +$bb412: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 9} true; + assume {:verifier.code 0} true; + assume ($i681 == 1); + goto $bb410; +$bb413: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 9} true; + assume {:verifier.code 0} true; + assume !(($i681 == 1)); + goto $bb414; +$bb414: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 560, 3} true; + assume {:verifier.code 0} true; + $i679 := $i682; + goto $bb408; +$bb415: + assume ($i693 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 11} true; + assume {:verifier.code 0} true; + $i695 := $slt.i32($i691, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i695} true; + goto $bb418, $bb420; +$bb416: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 567, 7} true; + assume {:verifier.code 0} true; + assume !(($i693 == 1)); + goto $bb417; +$bb417: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 572, 7} true; + assume {:verifier.code 0} true; + $i699 := $sext.i32.i64($i687); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 572, 9} true; + assume {:verifier.code 0} true; + $i700 := $srem.i64($i699, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 572, 7} true; + assume {:verifier.code 0} true; + $i701 := $trunc.i64.i32($i700); + call {:cexpr "a"} boogie_si_record_i32($i701); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 573, 5} true; + assume {:verifier.code 0} true; + $i702 := $add.i32($i701, $i701); + call {:cexpr "a"} boogie_si_record_i32($i702); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 574, 7} true; + assume {:verifier.code 0} true; + $i703 := $sext.i32.i64($i691); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 574, 9} true; + assume {:verifier.code 0} true; + $i704 := $srem.i64($i703, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 574, 7} true; + assume {:verifier.code 0} true; + $i705 := $trunc.i64.i32($i704); + call {:cexpr "b"} boogie_si_record_i32($i705); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 575, 5} true; + assume {:verifier.code 0} true; + $i706 := $add.i32($i705, $i705); + call {:cexpr "b"} boogie_si_record_i32($i706); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 577, 5} true; + assume {:verifier.code 0} true; + $i707 := $add.i32($i694, $i694); + call {:cexpr "c"} boogie_si_record_i32($i707); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 578, 9} true; + assume {:verifier.code 0} true; + $i708 := $slt.i32($i702, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 578, 7} true; + assume {:verifier.code 0} true; + $i709 := $i707; + assume {:branchcond $i708} true; + goto $bb424, $bb425; +$bb418: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 15} true; + assume {:verifier.code 0} true; + assume ($i695 == 1); + goto $bb419; +$bb419: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 569, 9} true; + assume {:verifier.code 0} true; + $i698 := $add.i32($i692, 1); + call {:cexpr "c"} boogie_si_record_i32($i698); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 570, 5} true; + assume {:verifier.code 0} true; + $i697 := $i698; + goto $bb423; +$bb420: + assume !(($i695 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 20} true; + assume {:verifier.code 0} true; + $i696 := $sgt.i32($i691, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 9} true; + assume {:verifier.code 0} true; + $i697 := $i692; + assume {:branchcond $i696} true; + goto $bb421, $bb422; +$bb421: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 9} true; + assume {:verifier.code 0} true; + assume ($i696 == 1); + goto $bb419; +$bb422: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 9} true; + assume {:verifier.code 0} true; + assume !(($i696 == 1)); + goto $bb423; +$bb423: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 571, 3} true; + assume {:verifier.code 0} true; + $i694 := $i697; + goto $bb417; +$bb424: + assume ($i708 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 11} true; + assume {:verifier.code 0} true; + $i710 := $slt.i32($i706, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i710} true; + goto $bb427, $bb429; +$bb425: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 578, 7} true; + assume {:verifier.code 0} true; + assume !(($i708 == 1)); + goto $bb426; +$bb426: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 583, 7} true; + assume {:verifier.code 0} true; + $i714 := $sext.i32.i64($i702); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 583, 9} true; + assume {:verifier.code 0} true; + $i715 := $srem.i64($i714, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 583, 7} true; + assume {:verifier.code 0} true; + $i716 := $trunc.i64.i32($i715); + call {:cexpr "a"} boogie_si_record_i32($i716); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 584, 5} true; + assume {:verifier.code 0} true; + $i717 := $add.i32($i716, $i716); + call {:cexpr "a"} boogie_si_record_i32($i717); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 585, 7} true; + assume {:verifier.code 0} true; + $i718 := $sext.i32.i64($i706); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 585, 9} true; + assume {:verifier.code 0} true; + $i719 := $srem.i64($i718, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 585, 7} true; + assume {:verifier.code 0} true; + $i720 := $trunc.i64.i32($i719); + call {:cexpr "b"} boogie_si_record_i32($i720); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 586, 5} true; + assume {:verifier.code 0} true; + $i721 := $add.i32($i720, $i720); + call {:cexpr "b"} boogie_si_record_i32($i721); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 588, 5} true; + assume {:verifier.code 0} true; + $i722 := $add.i32($i709, $i709); + call {:cexpr "c"} boogie_si_record_i32($i722); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 589, 9} true; + assume {:verifier.code 0} true; + $i723 := $slt.i32($i717, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 589, 7} true; + assume {:verifier.code 0} true; + $i724 := $i722; + assume {:branchcond $i723} true; + goto $bb433, $bb434; +$bb427: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 15} true; + assume {:verifier.code 0} true; + assume ($i710 == 1); + goto $bb428; +$bb428: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 580, 9} true; + assume {:verifier.code 0} true; + $i713 := $add.i32($i707, 1); + call {:cexpr "c"} boogie_si_record_i32($i713); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 581, 5} true; + assume {:verifier.code 0} true; + $i712 := $i713; + goto $bb432; +$bb429: + assume !(($i710 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 20} true; + assume {:verifier.code 0} true; + $i711 := $sgt.i32($i706, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 9} true; + assume {:verifier.code 0} true; + $i712 := $i707; + assume {:branchcond $i711} true; + goto $bb430, $bb431; +$bb430: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 9} true; + assume {:verifier.code 0} true; + assume ($i711 == 1); + goto $bb428; +$bb431: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 9} true; + assume {:verifier.code 0} true; + assume !(($i711 == 1)); + goto $bb432; +$bb432: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 582, 3} true; + assume {:verifier.code 0} true; + $i709 := $i712; + goto $bb426; +$bb433: + assume ($i723 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 11} true; + assume {:verifier.code 0} true; + $i725 := $slt.i32($i721, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i725} true; + goto $bb436, $bb438; +$bb434: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 589, 7} true; + assume {:verifier.code 0} true; + assume !(($i723 == 1)); + goto $bb435; +$bb435: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 594, 7} true; + assume {:verifier.code 0} true; + $i729 := $sext.i32.i64($i717); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 594, 9} true; + assume {:verifier.code 0} true; + $i730 := $srem.i64($i729, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 594, 7} true; + assume {:verifier.code 0} true; + $i731 := $trunc.i64.i32($i730); + call {:cexpr "a"} boogie_si_record_i32($i731); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 595, 5} true; + assume {:verifier.code 0} true; + $i732 := $add.i32($i731, $i731); + call {:cexpr "a"} boogie_si_record_i32($i732); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 596, 7} true; + assume {:verifier.code 0} true; + $i733 := $sext.i32.i64($i721); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 596, 9} true; + assume {:verifier.code 0} true; + $i734 := $srem.i64($i733, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 596, 7} true; + assume {:verifier.code 0} true; + $i735 := $trunc.i64.i32($i734); + call {:cexpr "b"} boogie_si_record_i32($i735); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 597, 5} true; + assume {:verifier.code 0} true; + $i736 := $add.i32($i735, $i735); + call {:cexpr "b"} boogie_si_record_i32($i736); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 599, 5} true; + assume {:verifier.code 0} true; + $i737 := $add.i32($i724, $i724); + call {:cexpr "c"} boogie_si_record_i32($i737); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 600, 9} true; + assume {:verifier.code 0} true; + $i738 := $slt.i32($i732, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 600, 7} true; + assume {:verifier.code 0} true; + $i739 := $i737; + assume {:branchcond $i738} true; + goto $bb442, $bb443; +$bb436: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 15} true; + assume {:verifier.code 0} true; + assume ($i725 == 1); + goto $bb437; +$bb437: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 591, 9} true; + assume {:verifier.code 0} true; + $i728 := $add.i32($i722, 1); + call {:cexpr "c"} boogie_si_record_i32($i728); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 592, 5} true; + assume {:verifier.code 0} true; + $i727 := $i728; + goto $bb441; +$bb438: + assume !(($i725 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 20} true; + assume {:verifier.code 0} true; + $i726 := $sgt.i32($i721, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 9} true; + assume {:verifier.code 0} true; + $i727 := $i722; + assume {:branchcond $i726} true; + goto $bb439, $bb440; +$bb439: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 9} true; + assume {:verifier.code 0} true; + assume ($i726 == 1); + goto $bb437; +$bb440: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 9} true; + assume {:verifier.code 0} true; + assume !(($i726 == 1)); + goto $bb441; +$bb441: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 593, 3} true; + assume {:verifier.code 0} true; + $i724 := $i727; + goto $bb435; +$bb442: + assume ($i738 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 11} true; + assume {:verifier.code 0} true; + $i740 := $slt.i32($i736, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i740} true; + goto $bb445, $bb447; +$bb443: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 600, 7} true; + assume {:verifier.code 0} true; + assume !(($i738 == 1)); + goto $bb444; +$bb444: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 605, 7} true; + assume {:verifier.code 0} true; + $i744 := $sext.i32.i64($i732); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 605, 9} true; + assume {:verifier.code 0} true; + $i745 := $srem.i64($i744, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 605, 7} true; + assume {:verifier.code 0} true; + $i746 := $trunc.i64.i32($i745); + call {:cexpr "a"} boogie_si_record_i32($i746); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 606, 5} true; + assume {:verifier.code 0} true; + $i747 := $add.i32($i746, $i746); + call {:cexpr "a"} boogie_si_record_i32($i747); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 607, 7} true; + assume {:verifier.code 0} true; + $i748 := $sext.i32.i64($i736); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 607, 9} true; + assume {:verifier.code 0} true; + $i749 := $srem.i64($i748, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 607, 7} true; + assume {:verifier.code 0} true; + $i750 := $trunc.i64.i32($i749); + call {:cexpr "b"} boogie_si_record_i32($i750); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 608, 5} true; + assume {:verifier.code 0} true; + $i751 := $add.i32($i750, $i750); + call {:cexpr "b"} boogie_si_record_i32($i751); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 610, 5} true; + assume {:verifier.code 0} true; + $i752 := $add.i32($i739, $i739); + call {:cexpr "c"} boogie_si_record_i32($i752); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 611, 9} true; + assume {:verifier.code 0} true; + $i753 := $slt.i32($i747, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 611, 7} true; + assume {:verifier.code 0} true; + $i754 := $i752; + assume {:branchcond $i753} true; + goto $bb451, $bb452; +$bb445: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 15} true; + assume {:verifier.code 0} true; + assume ($i740 == 1); + goto $bb446; +$bb446: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 602, 9} true; + assume {:verifier.code 0} true; + $i743 := $add.i32($i737, 1); + call {:cexpr "c"} boogie_si_record_i32($i743); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 603, 5} true; + assume {:verifier.code 0} true; + $i742 := $i743; + goto $bb450; +$bb447: + assume !(($i740 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 20} true; + assume {:verifier.code 0} true; + $i741 := $sgt.i32($i736, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 9} true; + assume {:verifier.code 0} true; + $i742 := $i737; + assume {:branchcond $i741} true; + goto $bb448, $bb449; +$bb448: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 9} true; + assume {:verifier.code 0} true; + assume ($i741 == 1); + goto $bb446; +$bb449: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 9} true; + assume {:verifier.code 0} true; + assume !(($i741 == 1)); + goto $bb450; +$bb450: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 604, 3} true; + assume {:verifier.code 0} true; + $i739 := $i742; + goto $bb444; +$bb451: + assume ($i753 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 11} true; + assume {:verifier.code 0} true; + $i755 := $slt.i32($i751, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i755} true; + goto $bb454, $bb456; +$bb452: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 611, 7} true; + assume {:verifier.code 0} true; + assume !(($i753 == 1)); + goto $bb453; +$bb453: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 616, 7} true; + assume {:verifier.code 0} true; + $i759 := $sext.i32.i64($i747); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 616, 9} true; + assume {:verifier.code 0} true; + $i760 := $srem.i64($i759, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 616, 7} true; + assume {:verifier.code 0} true; + $i761 := $trunc.i64.i32($i760); + call {:cexpr "a"} boogie_si_record_i32($i761); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 617, 5} true; + assume {:verifier.code 0} true; + $i762 := $add.i32($i761, $i761); + call {:cexpr "a"} boogie_si_record_i32($i762); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 618, 7} true; + assume {:verifier.code 0} true; + $i763 := $sext.i32.i64($i751); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 618, 9} true; + assume {:verifier.code 0} true; + $i764 := $srem.i64($i763, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 618, 7} true; + assume {:verifier.code 0} true; + $i765 := $trunc.i64.i32($i764); + call {:cexpr "b"} boogie_si_record_i32($i765); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 619, 5} true; + assume {:verifier.code 0} true; + $i766 := $add.i32($i765, $i765); + call {:cexpr "b"} boogie_si_record_i32($i766); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 621, 5} true; + assume {:verifier.code 0} true; + $i767 := $add.i32($i754, $i754); + call {:cexpr "c"} boogie_si_record_i32($i767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 622, 9} true; + assume {:verifier.code 0} true; + $i768 := $slt.i32($i762, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 622, 7} true; + assume {:verifier.code 0} true; + $i769 := $i767; + assume {:branchcond $i768} true; + goto $bb460, $bb461; +$bb454: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 15} true; + assume {:verifier.code 0} true; + assume ($i755 == 1); + goto $bb455; +$bb455: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 613, 9} true; + assume {:verifier.code 0} true; + $i758 := $add.i32($i752, 1); + call {:cexpr "c"} boogie_si_record_i32($i758); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 614, 5} true; + assume {:verifier.code 0} true; + $i757 := $i758; + goto $bb459; +$bb456: + assume !(($i755 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 20} true; + assume {:verifier.code 0} true; + $i756 := $sgt.i32($i751, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 9} true; + assume {:verifier.code 0} true; + $i757 := $i752; + assume {:branchcond $i756} true; + goto $bb457, $bb458; +$bb457: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 9} true; + assume {:verifier.code 0} true; + assume ($i756 == 1); + goto $bb455; +$bb458: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 9} true; + assume {:verifier.code 0} true; + assume !(($i756 == 1)); + goto $bb459; +$bb459: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 615, 3} true; + assume {:verifier.code 0} true; + $i754 := $i757; + goto $bb453; +$bb460: + assume ($i768 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 11} true; + assume {:verifier.code 0} true; + $i770 := $slt.i32($i766, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i770} true; + goto $bb463, $bb465; +$bb461: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 622, 7} true; + assume {:verifier.code 0} true; + assume !(($i768 == 1)); + goto $bb462; +$bb462: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 627, 7} true; + assume {:verifier.code 0} true; + $i774 := $sext.i32.i64($i762); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 627, 9} true; + assume {:verifier.code 0} true; + $i775 := $srem.i64($i774, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 627, 7} true; + assume {:verifier.code 0} true; + $i776 := $trunc.i64.i32($i775); + call {:cexpr "a"} boogie_si_record_i32($i776); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 628, 5} true; + assume {:verifier.code 0} true; + $i777 := $add.i32($i776, $i776); + call {:cexpr "a"} boogie_si_record_i32($i777); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 629, 7} true; + assume {:verifier.code 0} true; + $i778 := $sext.i32.i64($i766); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 629, 9} true; + assume {:verifier.code 0} true; + $i779 := $srem.i64($i778, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 629, 7} true; + assume {:verifier.code 0} true; + $i780 := $trunc.i64.i32($i779); + call {:cexpr "b"} boogie_si_record_i32($i780); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 630, 5} true; + assume {:verifier.code 0} true; + $i781 := $add.i32($i780, $i780); + call {:cexpr "b"} boogie_si_record_i32($i781); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 632, 5} true; + assume {:verifier.code 0} true; + $i782 := $add.i32($i769, $i769); + call {:cexpr "c"} boogie_si_record_i32($i782); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 633, 9} true; + assume {:verifier.code 0} true; + $i783 := $slt.i32($i777, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 633, 7} true; + assume {:verifier.code 0} true; + $i784 := $i782; + assume {:branchcond $i783} true; + goto $bb469, $bb470; +$bb463: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 15} true; + assume {:verifier.code 0} true; + assume ($i770 == 1); + goto $bb464; +$bb464: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 624, 9} true; + assume {:verifier.code 0} true; + $i773 := $add.i32($i767, 1); + call {:cexpr "c"} boogie_si_record_i32($i773); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 625, 5} true; + assume {:verifier.code 0} true; + $i772 := $i773; + goto $bb468; +$bb465: + assume !(($i770 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 20} true; + assume {:verifier.code 0} true; + $i771 := $sgt.i32($i766, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 9} true; + assume {:verifier.code 0} true; + $i772 := $i767; + assume {:branchcond $i771} true; + goto $bb466, $bb467; +$bb466: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 9} true; + assume {:verifier.code 0} true; + assume ($i771 == 1); + goto $bb464; +$bb467: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 9} true; + assume {:verifier.code 0} true; + assume !(($i771 == 1)); + goto $bb468; +$bb468: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 626, 3} true; + assume {:verifier.code 0} true; + $i769 := $i772; + goto $bb462; +$bb469: + assume ($i783 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 11} true; + assume {:verifier.code 0} true; + $i785 := $slt.i32($i781, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i785} true; + goto $bb472, $bb474; +$bb470: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 633, 7} true; + assume {:verifier.code 0} true; + assume !(($i783 == 1)); + goto $bb471; +$bb471: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 638, 7} true; + assume {:verifier.code 0} true; + $i789 := $sext.i32.i64($i777); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 638, 9} true; + assume {:verifier.code 0} true; + $i790 := $srem.i64($i789, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 638, 7} true; + assume {:verifier.code 0} true; + $i791 := $trunc.i64.i32($i790); + call {:cexpr "a"} boogie_si_record_i32($i791); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 639, 5} true; + assume {:verifier.code 0} true; + $i792 := $add.i32($i791, $i791); + call {:cexpr "a"} boogie_si_record_i32($i792); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 640, 7} true; + assume {:verifier.code 0} true; + $i793 := $sext.i32.i64($i781); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 640, 9} true; + assume {:verifier.code 0} true; + $i794 := $srem.i64($i793, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 640, 7} true; + assume {:verifier.code 0} true; + $i795 := $trunc.i64.i32($i794); + call {:cexpr "b"} boogie_si_record_i32($i795); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 641, 5} true; + assume {:verifier.code 0} true; + $i796 := $add.i32($i795, $i795); + call {:cexpr "b"} boogie_si_record_i32($i796); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 643, 5} true; + assume {:verifier.code 0} true; + $i797 := $add.i32($i784, $i784); + call {:cexpr "c"} boogie_si_record_i32($i797); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 644, 9} true; + assume {:verifier.code 0} true; + $i798 := $slt.i32($i792, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 644, 7} true; + assume {:verifier.code 0} true; + $i799 := $i797; + assume {:branchcond $i798} true; + goto $bb478, $bb479; +$bb472: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 15} true; + assume {:verifier.code 0} true; + assume ($i785 == 1); + goto $bb473; +$bb473: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 635, 9} true; + assume {:verifier.code 0} true; + $i788 := $add.i32($i782, 1); + call {:cexpr "c"} boogie_si_record_i32($i788); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 636, 5} true; + assume {:verifier.code 0} true; + $i787 := $i788; + goto $bb477; +$bb474: + assume !(($i785 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 20} true; + assume {:verifier.code 0} true; + $i786 := $sgt.i32($i781, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 9} true; + assume {:verifier.code 0} true; + $i787 := $i782; + assume {:branchcond $i786} true; + goto $bb475, $bb476; +$bb475: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 9} true; + assume {:verifier.code 0} true; + assume ($i786 == 1); + goto $bb473; +$bb476: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 9} true; + assume {:verifier.code 0} true; + assume !(($i786 == 1)); + goto $bb477; +$bb477: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 637, 3} true; + assume {:verifier.code 0} true; + $i784 := $i787; + goto $bb471; +$bb478: + assume ($i798 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 11} true; + assume {:verifier.code 0} true; + $i800 := $slt.i32($i796, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i800} true; + goto $bb481, $bb483; +$bb479: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 644, 7} true; + assume {:verifier.code 0} true; + assume !(($i798 == 1)); + goto $bb480; +$bb480: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 649, 7} true; + assume {:verifier.code 0} true; + $i804 := $sext.i32.i64($i792); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 649, 9} true; + assume {:verifier.code 0} true; + $i805 := $srem.i64($i804, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 649, 7} true; + assume {:verifier.code 0} true; + $i806 := $trunc.i64.i32($i805); + call {:cexpr "a"} boogie_si_record_i32($i806); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 650, 5} true; + assume {:verifier.code 0} true; + $i807 := $add.i32($i806, $i806); + call {:cexpr "a"} boogie_si_record_i32($i807); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 651, 7} true; + assume {:verifier.code 0} true; + $i808 := $sext.i32.i64($i796); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 651, 9} true; + assume {:verifier.code 0} true; + $i809 := $srem.i64($i808, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 651, 7} true; + assume {:verifier.code 0} true; + $i810 := $trunc.i64.i32($i809); + call {:cexpr "b"} boogie_si_record_i32($i810); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 652, 5} true; + assume {:verifier.code 0} true; + $i811 := $add.i32($i810, $i810); + call {:cexpr "b"} boogie_si_record_i32($i811); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 654, 5} true; + assume {:verifier.code 0} true; + $i812 := $add.i32($i799, $i799); + call {:cexpr "c"} boogie_si_record_i32($i812); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 655, 9} true; + assume {:verifier.code 0} true; + $i813 := $slt.i32($i807, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 655, 7} true; + assume {:verifier.code 0} true; + $i814 := $i812; + assume {:branchcond $i813} true; + goto $bb487, $bb488; +$bb481: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 15} true; + assume {:verifier.code 0} true; + assume ($i800 == 1); + goto $bb482; +$bb482: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 646, 9} true; + assume {:verifier.code 0} true; + $i803 := $add.i32($i797, 1); + call {:cexpr "c"} boogie_si_record_i32($i803); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 647, 5} true; + assume {:verifier.code 0} true; + $i802 := $i803; + goto $bb486; +$bb483: + assume !(($i800 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 20} true; + assume {:verifier.code 0} true; + $i801 := $sgt.i32($i796, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 9} true; + assume {:verifier.code 0} true; + $i802 := $i797; + assume {:branchcond $i801} true; + goto $bb484, $bb485; +$bb484: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 9} true; + assume {:verifier.code 0} true; + assume ($i801 == 1); + goto $bb482; +$bb485: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 9} true; + assume {:verifier.code 0} true; + assume !(($i801 == 1)); + goto $bb486; +$bb486: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 648, 3} true; + assume {:verifier.code 0} true; + $i799 := $i802; + goto $bb480; +$bb487: + assume ($i813 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 11} true; + assume {:verifier.code 0} true; + $i815 := $slt.i32($i811, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i815} true; + goto $bb490, $bb492; +$bb488: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 655, 7} true; + assume {:verifier.code 0} true; + assume !(($i813 == 1)); + goto $bb489; +$bb489: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 660, 7} true; + assume {:verifier.code 0} true; + $i819 := $sext.i32.i64($i807); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 660, 9} true; + assume {:verifier.code 0} true; + $i820 := $srem.i64($i819, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 660, 7} true; + assume {:verifier.code 0} true; + $i821 := $trunc.i64.i32($i820); + call {:cexpr "a"} boogie_si_record_i32($i821); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 661, 5} true; + assume {:verifier.code 0} true; + $i822 := $add.i32($i821, $i821); + call {:cexpr "a"} boogie_si_record_i32($i822); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 662, 7} true; + assume {:verifier.code 0} true; + $i823 := $sext.i32.i64($i811); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 662, 9} true; + assume {:verifier.code 0} true; + $i824 := $srem.i64($i823, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 662, 7} true; + assume {:verifier.code 0} true; + $i825 := $trunc.i64.i32($i824); + call {:cexpr "b"} boogie_si_record_i32($i825); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 663, 5} true; + assume {:verifier.code 0} true; + $i826 := $add.i32($i825, $i825); + call {:cexpr "b"} boogie_si_record_i32($i826); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 665, 5} true; + assume {:verifier.code 0} true; + $i827 := $add.i32($i814, $i814); + call {:cexpr "c"} boogie_si_record_i32($i827); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 666, 9} true; + assume {:verifier.code 0} true; + $i828 := $slt.i32($i822, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 666, 7} true; + assume {:verifier.code 0} true; + $i829 := $i827; + assume {:branchcond $i828} true; + goto $bb496, $bb497; +$bb490: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 15} true; + assume {:verifier.code 0} true; + assume ($i815 == 1); + goto $bb491; +$bb491: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 657, 9} true; + assume {:verifier.code 0} true; + $i818 := $add.i32($i812, 1); + call {:cexpr "c"} boogie_si_record_i32($i818); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 658, 5} true; + assume {:verifier.code 0} true; + $i817 := $i818; + goto $bb495; +$bb492: + assume !(($i815 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 20} true; + assume {:verifier.code 0} true; + $i816 := $sgt.i32($i811, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 9} true; + assume {:verifier.code 0} true; + $i817 := $i812; + assume {:branchcond $i816} true; + goto $bb493, $bb494; +$bb493: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 9} true; + assume {:verifier.code 0} true; + assume ($i816 == 1); + goto $bb491; +$bb494: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 9} true; + assume {:verifier.code 0} true; + assume !(($i816 == 1)); + goto $bb495; +$bb495: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 659, 3} true; + assume {:verifier.code 0} true; + $i814 := $i817; + goto $bb489; +$bb496: + assume ($i828 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 11} true; + assume {:verifier.code 0} true; + $i830 := $slt.i32($i826, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i830} true; + goto $bb499, $bb501; +$bb497: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 666, 7} true; + assume {:verifier.code 0} true; + assume !(($i828 == 1)); + goto $bb498; +$bb498: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 671, 7} true; + assume {:verifier.code 0} true; + $i834 := $sext.i32.i64($i822); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 671, 9} true; + assume {:verifier.code 0} true; + $i835 := $srem.i64($i834, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 671, 7} true; + assume {:verifier.code 0} true; + $i836 := $trunc.i64.i32($i835); + call {:cexpr "a"} boogie_si_record_i32($i836); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 672, 5} true; + assume {:verifier.code 0} true; + $i837 := $add.i32($i836, $i836); + call {:cexpr "a"} boogie_si_record_i32($i837); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 673, 7} true; + assume {:verifier.code 0} true; + $i838 := $sext.i32.i64($i826); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 673, 9} true; + assume {:verifier.code 0} true; + $i839 := $srem.i64($i838, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 673, 7} true; + assume {:verifier.code 0} true; + $i840 := $trunc.i64.i32($i839); + call {:cexpr "b"} boogie_si_record_i32($i840); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 674, 5} true; + assume {:verifier.code 0} true; + $i841 := $add.i32($i840, $i840); + call {:cexpr "b"} boogie_si_record_i32($i841); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 676, 5} true; + assume {:verifier.code 0} true; + $i842 := $add.i32($i829, $i829); + call {:cexpr "c"} boogie_si_record_i32($i842); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 677, 9} true; + assume {:verifier.code 0} true; + $i843 := $slt.i32($i837, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 677, 7} true; + assume {:verifier.code 0} true; + $i844 := $i842; + assume {:branchcond $i843} true; + goto $bb505, $bb506; +$bb499: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 15} true; + assume {:verifier.code 0} true; + assume ($i830 == 1); + goto $bb500; +$bb500: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 668, 9} true; + assume {:verifier.code 0} true; + $i833 := $add.i32($i827, 1); + call {:cexpr "c"} boogie_si_record_i32($i833); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 669, 5} true; + assume {:verifier.code 0} true; + $i832 := $i833; + goto $bb504; +$bb501: + assume !(($i830 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 20} true; + assume {:verifier.code 0} true; + $i831 := $sgt.i32($i826, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 9} true; + assume {:verifier.code 0} true; + $i832 := $i827; + assume {:branchcond $i831} true; + goto $bb502, $bb503; +$bb502: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 9} true; + assume {:verifier.code 0} true; + assume ($i831 == 1); + goto $bb500; +$bb503: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 9} true; + assume {:verifier.code 0} true; + assume !(($i831 == 1)); + goto $bb504; +$bb504: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 670, 3} true; + assume {:verifier.code 0} true; + $i829 := $i832; + goto $bb498; +$bb505: + assume ($i843 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 11} true; + assume {:verifier.code 0} true; + $i845 := $slt.i32($i841, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i845} true; + goto $bb508, $bb510; +$bb506: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 677, 7} true; + assume {:verifier.code 0} true; + assume !(($i843 == 1)); + goto $bb507; +$bb507: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 682, 7} true; + assume {:verifier.code 0} true; + $i849 := $sext.i32.i64($i837); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 682, 9} true; + assume {:verifier.code 0} true; + $i850 := $srem.i64($i849, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 682, 7} true; + assume {:verifier.code 0} true; + $i851 := $trunc.i64.i32($i850); + call {:cexpr "a"} boogie_si_record_i32($i851); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 683, 5} true; + assume {:verifier.code 0} true; + $i852 := $add.i32($i851, $i851); + call {:cexpr "a"} boogie_si_record_i32($i852); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 684, 7} true; + assume {:verifier.code 0} true; + $i853 := $sext.i32.i64($i841); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 684, 9} true; + assume {:verifier.code 0} true; + $i854 := $srem.i64($i853, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 684, 7} true; + assume {:verifier.code 0} true; + $i855 := $trunc.i64.i32($i854); + call {:cexpr "b"} boogie_si_record_i32($i855); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 685, 5} true; + assume {:verifier.code 0} true; + $i856 := $add.i32($i855, $i855); + call {:cexpr "b"} boogie_si_record_i32($i856); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 687, 5} true; + assume {:verifier.code 0} true; + $i857 := $add.i32($i844, $i844); + call {:cexpr "c"} boogie_si_record_i32($i857); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 688, 9} true; + assume {:verifier.code 0} true; + $i858 := $slt.i32($i852, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 688, 7} true; + assume {:verifier.code 0} true; + $i859 := $i857; + assume {:branchcond $i858} true; + goto $bb514, $bb515; +$bb508: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 15} true; + assume {:verifier.code 0} true; + assume ($i845 == 1); + goto $bb509; +$bb509: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 679, 9} true; + assume {:verifier.code 0} true; + $i848 := $add.i32($i842, 1); + call {:cexpr "c"} boogie_si_record_i32($i848); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 680, 5} true; + assume {:verifier.code 0} true; + $i847 := $i848; + goto $bb513; +$bb510: + assume !(($i845 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 20} true; + assume {:verifier.code 0} true; + $i846 := $sgt.i32($i841, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 9} true; + assume {:verifier.code 0} true; + $i847 := $i842; + assume {:branchcond $i846} true; + goto $bb511, $bb512; +$bb511: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 9} true; + assume {:verifier.code 0} true; + assume ($i846 == 1); + goto $bb509; +$bb512: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 9} true; + assume {:verifier.code 0} true; + assume !(($i846 == 1)); + goto $bb513; +$bb513: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 681, 3} true; + assume {:verifier.code 0} true; + $i844 := $i847; + goto $bb507; +$bb514: + assume ($i858 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 11} true; + assume {:verifier.code 0} true; + $i860 := $slt.i32($i856, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i860} true; + goto $bb517, $bb519; +$bb515: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 688, 7} true; + assume {:verifier.code 0} true; + assume !(($i858 == 1)); + goto $bb516; +$bb516: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 693, 7} true; + assume {:verifier.code 0} true; + $i864 := $sext.i32.i64($i852); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 693, 9} true; + assume {:verifier.code 0} true; + $i865 := $srem.i64($i864, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 693, 7} true; + assume {:verifier.code 0} true; + $i866 := $trunc.i64.i32($i865); + call {:cexpr "a"} boogie_si_record_i32($i866); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 694, 5} true; + assume {:verifier.code 0} true; + $i867 := $add.i32($i866, $i866); + call {:cexpr "a"} boogie_si_record_i32($i867); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 695, 7} true; + assume {:verifier.code 0} true; + $i868 := $sext.i32.i64($i856); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 695, 9} true; + assume {:verifier.code 0} true; + $i869 := $srem.i64($i868, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 695, 7} true; + assume {:verifier.code 0} true; + $i870 := $trunc.i64.i32($i869); + call {:cexpr "b"} boogie_si_record_i32($i870); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 696, 5} true; + assume {:verifier.code 0} true; + $i871 := $add.i32($i870, $i870); + call {:cexpr "b"} boogie_si_record_i32($i871); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 698, 5} true; + assume {:verifier.code 0} true; + $i872 := $add.i32($i859, $i859); + call {:cexpr "c"} boogie_si_record_i32($i872); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 699, 9} true; + assume {:verifier.code 0} true; + $i873 := $slt.i32($i867, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 699, 7} true; + assume {:verifier.code 0} true; + $i874 := $i872; + assume {:branchcond $i873} true; + goto $bb523, $bb524; +$bb517: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 15} true; + assume {:verifier.code 0} true; + assume ($i860 == 1); + goto $bb518; +$bb518: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 690, 9} true; + assume {:verifier.code 0} true; + $i863 := $add.i32($i857, 1); + call {:cexpr "c"} boogie_si_record_i32($i863); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 691, 5} true; + assume {:verifier.code 0} true; + $i862 := $i863; + goto $bb522; +$bb519: + assume !(($i860 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 20} true; + assume {:verifier.code 0} true; + $i861 := $sgt.i32($i856, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 9} true; + assume {:verifier.code 0} true; + $i862 := $i857; + assume {:branchcond $i861} true; + goto $bb520, $bb521; +$bb520: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 9} true; + assume {:verifier.code 0} true; + assume ($i861 == 1); + goto $bb518; +$bb521: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 9} true; + assume {:verifier.code 0} true; + assume !(($i861 == 1)); + goto $bb522; +$bb522: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 692, 3} true; + assume {:verifier.code 0} true; + $i859 := $i862; + goto $bb516; +$bb523: + assume ($i873 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 11} true; + assume {:verifier.code 0} true; + $i875 := $slt.i32($i871, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i875} true; + goto $bb526, $bb528; +$bb524: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 699, 7} true; + assume {:verifier.code 0} true; + assume !(($i873 == 1)); + goto $bb525; +$bb525: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 704, 7} true; + assume {:verifier.code 0} true; + $i879 := $sext.i32.i64($i867); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 704, 9} true; + assume {:verifier.code 0} true; + $i880 := $srem.i64($i879, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 704, 7} true; + assume {:verifier.code 0} true; + $i881 := $trunc.i64.i32($i880); + call {:cexpr "a"} boogie_si_record_i32($i881); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 705, 5} true; + assume {:verifier.code 0} true; + $i882 := $add.i32($i881, $i881); + call {:cexpr "a"} boogie_si_record_i32($i882); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 706, 7} true; + assume {:verifier.code 0} true; + $i883 := $sext.i32.i64($i871); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 706, 9} true; + assume {:verifier.code 0} true; + $i884 := $srem.i64($i883, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 706, 7} true; + assume {:verifier.code 0} true; + $i885 := $trunc.i64.i32($i884); + call {:cexpr "b"} boogie_si_record_i32($i885); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 707, 5} true; + assume {:verifier.code 0} true; + $i886 := $add.i32($i885, $i885); + call {:cexpr "b"} boogie_si_record_i32($i886); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 709, 5} true; + assume {:verifier.code 0} true; + $i887 := $add.i32($i874, $i874); + call {:cexpr "c"} boogie_si_record_i32($i887); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 710, 9} true; + assume {:verifier.code 0} true; + $i888 := $slt.i32($i882, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 710, 7} true; + assume {:verifier.code 0} true; + $i889 := $i887; + assume {:branchcond $i888} true; + goto $bb532, $bb533; +$bb526: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 15} true; + assume {:verifier.code 0} true; + assume ($i875 == 1); + goto $bb527; +$bb527: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 701, 9} true; + assume {:verifier.code 0} true; + $i878 := $add.i32($i872, 1); + call {:cexpr "c"} boogie_si_record_i32($i878); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 702, 5} true; + assume {:verifier.code 0} true; + $i877 := $i878; + goto $bb531; +$bb528: + assume !(($i875 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 20} true; + assume {:verifier.code 0} true; + $i876 := $sgt.i32($i871, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 9} true; + assume {:verifier.code 0} true; + $i877 := $i872; + assume {:branchcond $i876} true; + goto $bb529, $bb530; +$bb529: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 9} true; + assume {:verifier.code 0} true; + assume ($i876 == 1); + goto $bb527; +$bb530: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 9} true; + assume {:verifier.code 0} true; + assume !(($i876 == 1)); + goto $bb531; +$bb531: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 703, 3} true; + assume {:verifier.code 0} true; + $i874 := $i877; + goto $bb525; +$bb532: + assume ($i888 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 11} true; + assume {:verifier.code 0} true; + $i890 := $slt.i32($i886, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i890} true; + goto $bb535, $bb537; +$bb533: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 710, 7} true; + assume {:verifier.code 0} true; + assume !(($i888 == 1)); + goto $bb534; +$bb534: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 715, 7} true; + assume {:verifier.code 0} true; + $i894 := $sext.i32.i64($i882); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 715, 9} true; + assume {:verifier.code 0} true; + $i895 := $srem.i64($i894, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 715, 7} true; + assume {:verifier.code 0} true; + $i896 := $trunc.i64.i32($i895); + call {:cexpr "a"} boogie_si_record_i32($i896); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 716, 5} true; + assume {:verifier.code 0} true; + $i897 := $add.i32($i896, $i896); + call {:cexpr "a"} boogie_si_record_i32($i897); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 717, 7} true; + assume {:verifier.code 0} true; + $i898 := $sext.i32.i64($i886); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 717, 9} true; + assume {:verifier.code 0} true; + $i899 := $srem.i64($i898, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 717, 7} true; + assume {:verifier.code 0} true; + $i900 := $trunc.i64.i32($i899); + call {:cexpr "b"} boogie_si_record_i32($i900); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 718, 5} true; + assume {:verifier.code 0} true; + $i901 := $add.i32($i900, $i900); + call {:cexpr "b"} boogie_si_record_i32($i901); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 720, 5} true; + assume {:verifier.code 0} true; + $i902 := $add.i32($i889, $i889); + call {:cexpr "c"} boogie_si_record_i32($i902); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 721, 9} true; + assume {:verifier.code 0} true; + $i903 := $slt.i32($i897, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 721, 7} true; + assume {:verifier.code 0} true; + $i904 := $i902; + assume {:branchcond $i903} true; + goto $bb541, $bb542; +$bb535: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 15} true; + assume {:verifier.code 0} true; + assume ($i890 == 1); + goto $bb536; +$bb536: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 712, 9} true; + assume {:verifier.code 0} true; + $i893 := $add.i32($i887, 1); + call {:cexpr "c"} boogie_si_record_i32($i893); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 713, 5} true; + assume {:verifier.code 0} true; + $i892 := $i893; + goto $bb540; +$bb537: + assume !(($i890 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 20} true; + assume {:verifier.code 0} true; + $i891 := $sgt.i32($i886, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 9} true; + assume {:verifier.code 0} true; + $i892 := $i887; + assume {:branchcond $i891} true; + goto $bb538, $bb539; +$bb538: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 9} true; + assume {:verifier.code 0} true; + assume ($i891 == 1); + goto $bb536; +$bb539: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 9} true; + assume {:verifier.code 0} true; + assume !(($i891 == 1)); + goto $bb540; +$bb540: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 714, 3} true; + assume {:verifier.code 0} true; + $i889 := $i892; + goto $bb534; +$bb541: + assume ($i903 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 11} true; + assume {:verifier.code 0} true; + $i905 := $slt.i32($i901, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i905} true; + goto $bb544, $bb546; +$bb542: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 721, 7} true; + assume {:verifier.code 0} true; + assume !(($i903 == 1)); + goto $bb543; +$bb543: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 726, 7} true; + assume {:verifier.code 0} true; + $i909 := $sext.i32.i64($i897); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 726, 9} true; + assume {:verifier.code 0} true; + $i910 := $srem.i64($i909, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 726, 7} true; + assume {:verifier.code 0} true; + $i911 := $trunc.i64.i32($i910); + call {:cexpr "a"} boogie_si_record_i32($i911); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 727, 5} true; + assume {:verifier.code 0} true; + $i912 := $add.i32($i911, $i911); + call {:cexpr "a"} boogie_si_record_i32($i912); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 728, 7} true; + assume {:verifier.code 0} true; + $i913 := $sext.i32.i64($i901); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 728, 9} true; + assume {:verifier.code 0} true; + $i914 := $srem.i64($i913, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 728, 7} true; + assume {:verifier.code 0} true; + $i915 := $trunc.i64.i32($i914); + call {:cexpr "b"} boogie_si_record_i32($i915); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 729, 5} true; + assume {:verifier.code 0} true; + $i916 := $add.i32($i915, $i915); + call {:cexpr "b"} boogie_si_record_i32($i916); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 731, 5} true; + assume {:verifier.code 0} true; + $i917 := $add.i32($i904, $i904); + call {:cexpr "c"} boogie_si_record_i32($i917); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 732, 9} true; + assume {:verifier.code 0} true; + $i918 := $slt.i32($i912, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 732, 7} true; + assume {:verifier.code 0} true; + $i919 := $i917; + assume {:branchcond $i918} true; + goto $bb550, $bb551; +$bb544: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 15} true; + assume {:verifier.code 0} true; + assume ($i905 == 1); + goto $bb545; +$bb545: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 723, 9} true; + assume {:verifier.code 0} true; + $i908 := $add.i32($i902, 1); + call {:cexpr "c"} boogie_si_record_i32($i908); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 724, 5} true; + assume {:verifier.code 0} true; + $i907 := $i908; + goto $bb549; +$bb546: + assume !(($i905 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 20} true; + assume {:verifier.code 0} true; + $i906 := $sgt.i32($i901, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 9} true; + assume {:verifier.code 0} true; + $i907 := $i902; + assume {:branchcond $i906} true; + goto $bb547, $bb548; +$bb547: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 9} true; + assume {:verifier.code 0} true; + assume ($i906 == 1); + goto $bb545; +$bb548: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 9} true; + assume {:verifier.code 0} true; + assume !(($i906 == 1)); + goto $bb549; +$bb549: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 725, 3} true; + assume {:verifier.code 0} true; + $i904 := $i907; + goto $bb543; +$bb550: + assume ($i918 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 11} true; + assume {:verifier.code 0} true; + $i920 := $slt.i32($i916, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i920} true; + goto $bb553, $bb555; +$bb551: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 732, 7} true; + assume {:verifier.code 0} true; + assume !(($i918 == 1)); + goto $bb552; +$bb552: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 737, 7} true; + assume {:verifier.code 0} true; + $i924 := $sext.i32.i64($i912); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 737, 9} true; + assume {:verifier.code 0} true; + $i925 := $srem.i64($i924, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 737, 7} true; + assume {:verifier.code 0} true; + $i926 := $trunc.i64.i32($i925); + call {:cexpr "a"} boogie_si_record_i32($i926); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 738, 5} true; + assume {:verifier.code 0} true; + $i927 := $add.i32($i926, $i926); + call {:cexpr "a"} boogie_si_record_i32($i927); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 739, 7} true; + assume {:verifier.code 0} true; + $i928 := $sext.i32.i64($i916); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 739, 9} true; + assume {:verifier.code 0} true; + $i929 := $srem.i64($i928, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 739, 7} true; + assume {:verifier.code 0} true; + $i930 := $trunc.i64.i32($i929); + call {:cexpr "b"} boogie_si_record_i32($i930); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 740, 5} true; + assume {:verifier.code 0} true; + $i931 := $add.i32($i930, $i930); + call {:cexpr "b"} boogie_si_record_i32($i931); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 742, 5} true; + assume {:verifier.code 0} true; + $i932 := $add.i32($i919, $i919); + call {:cexpr "c"} boogie_si_record_i32($i932); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 743, 9} true; + assume {:verifier.code 0} true; + $i933 := $slt.i32($i927, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 743, 7} true; + assume {:verifier.code 0} true; + $i934 := $i932; + assume {:branchcond $i933} true; + goto $bb559, $bb560; +$bb553: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 15} true; + assume {:verifier.code 0} true; + assume ($i920 == 1); + goto $bb554; +$bb554: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 734, 9} true; + assume {:verifier.code 0} true; + $i923 := $add.i32($i917, 1); + call {:cexpr "c"} boogie_si_record_i32($i923); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 735, 5} true; + assume {:verifier.code 0} true; + $i922 := $i923; + goto $bb558; +$bb555: + assume !(($i920 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 20} true; + assume {:verifier.code 0} true; + $i921 := $sgt.i32($i916, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 9} true; + assume {:verifier.code 0} true; + $i922 := $i917; + assume {:branchcond $i921} true; + goto $bb556, $bb557; +$bb556: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 9} true; + assume {:verifier.code 0} true; + assume ($i921 == 1); + goto $bb554; +$bb557: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 9} true; + assume {:verifier.code 0} true; + assume !(($i921 == 1)); + goto $bb558; +$bb558: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 736, 3} true; + assume {:verifier.code 0} true; + $i919 := $i922; + goto $bb552; +$bb559: + assume ($i933 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 11} true; + assume {:verifier.code 0} true; + $i935 := $slt.i32($i931, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i935} true; + goto $bb562, $bb564; +$bb560: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 743, 7} true; + assume {:verifier.code 0} true; + assume !(($i933 == 1)); + goto $bb561; +$bb561: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 748, 7} true; + assume {:verifier.code 0} true; + $i939 := $sext.i32.i64($i927); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 748, 9} true; + assume {:verifier.code 0} true; + $i940 := $srem.i64($i939, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 748, 7} true; + assume {:verifier.code 0} true; + $i941 := $trunc.i64.i32($i940); + call {:cexpr "a"} boogie_si_record_i32($i941); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 749, 5} true; + assume {:verifier.code 0} true; + $i942 := $add.i32($i941, $i941); + call {:cexpr "a"} boogie_si_record_i32($i942); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 750, 7} true; + assume {:verifier.code 0} true; + $i943 := $sext.i32.i64($i931); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 750, 9} true; + assume {:verifier.code 0} true; + $i944 := $srem.i64($i943, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 750, 7} true; + assume {:verifier.code 0} true; + $i945 := $trunc.i64.i32($i944); + call {:cexpr "b"} boogie_si_record_i32($i945); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 751, 5} true; + assume {:verifier.code 0} true; + $i946 := $add.i32($i945, $i945); + call {:cexpr "b"} boogie_si_record_i32($i946); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 753, 5} true; + assume {:verifier.code 0} true; + $i947 := $add.i32($i934, $i934); + call {:cexpr "c"} boogie_si_record_i32($i947); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 754, 9} true; + assume {:verifier.code 0} true; + $i948 := $slt.i32($i942, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 754, 7} true; + assume {:verifier.code 0} true; + $i949 := $i947; + assume {:branchcond $i948} true; + goto $bb568, $bb569; +$bb562: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 15} true; + assume {:verifier.code 0} true; + assume ($i935 == 1); + goto $bb563; +$bb563: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 745, 9} true; + assume {:verifier.code 0} true; + $i938 := $add.i32($i932, 1); + call {:cexpr "c"} boogie_si_record_i32($i938); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 746, 5} true; + assume {:verifier.code 0} true; + $i937 := $i938; + goto $bb567; +$bb564: + assume !(($i935 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 20} true; + assume {:verifier.code 0} true; + $i936 := $sgt.i32($i931, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 9} true; + assume {:verifier.code 0} true; + $i937 := $i932; + assume {:branchcond $i936} true; + goto $bb565, $bb566; +$bb565: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 9} true; + assume {:verifier.code 0} true; + assume ($i936 == 1); + goto $bb563; +$bb566: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 9} true; + assume {:verifier.code 0} true; + assume !(($i936 == 1)); + goto $bb567; +$bb567: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 747, 3} true; + assume {:verifier.code 0} true; + $i934 := $i937; + goto $bb561; +$bb568: + assume ($i948 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 11} true; + assume {:verifier.code 0} true; + $i950 := $slt.i32($i946, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i950} true; + goto $bb571, $bb573; +$bb569: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 754, 7} true; + assume {:verifier.code 0} true; + assume !(($i948 == 1)); + goto $bb570; +$bb570: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 764, 3} true; + assume {:verifier.code 0} true; + $r := $i949; + $exn := false; + return; +$bb571: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 15} true; + assume {:verifier.code 0} true; + assume ($i950 == 1); + goto $bb572; +$bb572: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 756, 9} true; + assume {:verifier.code 0} true; + $i953 := $add.i32($i947, 1); + call {:cexpr "c"} boogie_si_record_i32($i953); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 757, 5} true; + assume {:verifier.code 0} true; + $i952 := $i953; + goto $bb576; +$bb573: + assume !(($i950 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 20} true; + assume {:verifier.code 0} true; + $i951 := $sgt.i32($i946, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 9} true; + assume {:verifier.code 0} true; + $i952 := $i947; + assume {:branchcond $i951} true; + goto $bb574, $bb575; +$bb574: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 9} true; + assume {:verifier.code 0} true; + assume ($i951 == 1); + goto $bb572; +$bb575: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 9} true; + assume {:verifier.code 0} true; + assume !(($i951 == 1)); + goto $bb576; +$bb576: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 758, 3} true; + assume {:verifier.code 0} true; + $i949 := $i952; + goto $bb570; +} +const __SMACK_and64: ref; +axiom (__SMACK_and64 == $sub.ref(0, 17540)); +procedure __SMACK_and64($i0: i64, $i1: i64) + returns ($r: i64) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i64; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 65} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_and64:arg:a"} boogie_si_record_i64($i0); + call {:cexpr "__SMACK_and64:arg:b"} boogie_si_record_i64($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 65} true; + assume {:verifier.code 1} true; + $i2 := $trunc.i64.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 68} true; + assume {:verifier.code 1} true; + $i3 := $trunc.i64.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 51} true; + assume {:verifier.code 1} true; + call $i4 := __SMACK_and32($i2, $i3); + call {:cexpr "smack:ext:__SMACK_and32"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 45} true; + assume {:verifier.code 0} true; + $i5 := $sext.i32.i64($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 38} true; + assume {:verifier.code 0} true; + $r := $i5; + $exn := false; + return; +} +const __SMACK_and16: ref; +axiom (__SMACK_and16 == $sub.ref(0, 18572)); +procedure __SMACK_and16($i0: i16, $i1: i16) + returns ($r: i16) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i16; + var $i6: i32; + var $i7: i1; + var $i9: i32; + var $i10: i1; + var $i11: i32; + var $i12: i1; + var $i14: i32; + var $i15: i32; + var $i16: i16; + var $i13: i16; + var $i8: i16; + var $i17: i32; + var $i18: i32; + var $i19: i16; + var $i20: i32; + var $i21: i32; + var $i22: i32; + var $i23: i16; + var $i24: i32; + var $i25: i32; + var $i26: i16; + var $i27: i32; + var $i28: i32; + var $i29: i32; + var $i30: i16; + var $i31: i32; + var $i32: i32; + var $i33: i32; + var $i34: i16; + var $i35: i32; + var $i36: i1; + var $i38: i32; + var $i39: i1; + var $i40: i32; + var $i41: i1; + var $i43: i32; + var $i44: i32; + var $i45: i16; + var $i42: i16; + var $i37: i16; + var $i46: i32; + var $i47: i32; + var $i48: i16; + var $i49: i32; + var $i50: i32; + var $i51: i32; + var $i52: i16; + var $i53: i32; + var $i54: i32; + var $i55: i16; + var $i56: i32; + var $i57: i32; + var $i58: i32; + var $i59: i16; + var $i60: i32; + var $i61: i32; + var $i62: i32; + var $i63: i16; + var $i64: i32; + var $i65: i1; + var $i67: i32; + var $i68: i1; + var $i69: i32; + var $i70: i1; + var $i72: i32; + var $i73: i32; + var $i74: i16; + var $i71: i16; + var $i66: i16; + var $i75: i32; + var $i76: i32; + var $i77: i16; + var $i78: i32; + var $i79: i32; + var $i80: i32; + var $i81: i16; + var $i82: i32; + var $i83: i32; + var $i84: i16; + var $i85: i32; + var $i86: i32; + var $i87: i32; + var $i88: i16; + var $i89: i32; + var $i90: i32; + var $i91: i32; + var $i92: i16; + var $i93: i32; + var $i94: i1; + var $i96: i32; + var $i97: i1; + var $i98: i32; + var $i99: i1; + var $i101: i32; + var $i102: i32; + var $i103: i16; + var $i100: i16; + var $i95: i16; + var $i104: i32; + var $i105: i32; + var $i106: i16; + var $i107: i32; + var $i108: i32; + var $i109: i32; + var $i110: i16; + var $i111: i32; + var $i112: i32; + var $i113: i16; + var $i114: i32; + var $i115: i32; + var $i116: i32; + var $i117: i16; + var $i118: i32; + var $i119: i32; + var $i120: i32; + var $i121: i16; + var $i122: i32; + var $i123: i1; + var $i125: i32; + var $i126: i1; + var $i127: i32; + var $i128: i1; + var $i130: i32; + var $i131: i32; + var $i132: i16; + var $i129: i16; + var $i124: i16; + var $i133: i32; + var $i134: i32; + var $i135: i16; + var $i136: i32; + var $i137: i32; + var $i138: i32; + var $i139: i16; + var $i140: i32; + var $i141: i32; + var $i142: i16; + var $i143: i32; + var $i144: i32; + var $i145: i32; + var $i146: i16; + var $i147: i32; + var $i148: i32; + var $i149: i32; + var $i150: i16; + var $i151: i32; + var $i152: i1; + var $i154: i32; + var $i155: i1; + var $i156: i32; + var $i157: i1; + var $i159: i32; + var $i160: i32; + var $i161: i16; + var $i158: i16; + var $i153: i16; + var $i162: i32; + var $i163: i32; + var $i164: i16; + var $i165: i32; + var $i166: i32; + var $i167: i32; + var $i168: i16; + var $i169: i32; + var $i170: i32; + var $i171: i16; + var $i172: i32; + var $i173: i32; + var $i174: i32; + var $i175: i16; + var $i176: i32; + var $i177: i32; + var $i178: i32; + var $i179: i16; + var $i180: i32; + var $i181: i1; + var $i183: i32; + var $i184: i1; + var $i185: i32; + var $i186: i1; + var $i188: i32; + var $i189: i32; + var $i190: i16; + var $i187: i16; + var $i182: i16; + var $i191: i32; + var $i192: i32; + var $i193: i16; + var $i194: i32; + var $i195: i32; + var $i196: i32; + var $i197: i16; + var $i198: i32; + var $i199: i32; + var $i200: i16; + var $i201: i32; + var $i202: i32; + var $i203: i32; + var $i204: i16; + var $i205: i32; + var $i206: i32; + var $i207: i32; + var $i208: i16; + var $i209: i32; + var $i210: i1; + var $i212: i32; + var $i213: i1; + var $i214: i32; + var $i215: i1; + var $i217: i32; + var $i218: i32; + var $i219: i16; + var $i216: i16; + var $i211: i16; + var $i220: i32; + var $i221: i32; + var $i222: i16; + var $i223: i32; + var $i224: i32; + var $i225: i32; + var $i226: i16; + var $i227: i32; + var $i228: i32; + var $i229: i16; + var $i230: i32; + var $i231: i32; + var $i232: i32; + var $i233: i16; + var $i234: i32; + var $i235: i32; + var $i236: i32; + var $i237: i16; + var $i238: i32; + var $i239: i1; + var $i241: i32; + var $i242: i1; + var $i243: i32; + var $i244: i1; + var $i246: i32; + var $i247: i32; + var $i248: i16; + var $i245: i16; + var $i240: i16; + var $i249: i32; + var $i250: i32; + var $i251: i16; + var $i252: i32; + var $i253: i32; + var $i254: i32; + var $i255: i16; + var $i256: i32; + var $i257: i32; + var $i258: i16; + var $i259: i32; + var $i260: i32; + var $i261: i32; + var $i262: i16; + var $i263: i32; + var $i264: i32; + var $i265: i32; + var $i266: i16; + var $i267: i32; + var $i268: i1; + var $i270: i32; + var $i271: i1; + var $i272: i32; + var $i273: i1; + var $i275: i32; + var $i276: i32; + var $i277: i16; + var $i274: i16; + var $i269: i16; + var $i278: i32; + var $i279: i32; + var $i280: i16; + var $i281: i32; + var $i282: i32; + var $i283: i32; + var $i284: i16; + var $i285: i32; + var $i286: i32; + var $i287: i16; + var $i288: i32; + var $i289: i32; + var $i290: i32; + var $i291: i16; + var $i292: i32; + var $i293: i32; + var $i294: i32; + var $i295: i16; + var $i296: i32; + var $i297: i1; + var $i299: i32; + var $i300: i1; + var $i301: i32; + var $i302: i1; + var $i304: i32; + var $i305: i32; + var $i306: i16; + var $i303: i16; + var $i298: i16; + var $i307: i32; + var $i308: i32; + var $i309: i16; + var $i310: i32; + var $i311: i32; + var $i312: i32; + var $i313: i16; + var $i314: i32; + var $i315: i32; + var $i316: i16; + var $i317: i32; + var $i318: i32; + var $i319: i32; + var $i320: i16; + var $i321: i32; + var $i322: i32; + var $i323: i32; + var $i324: i16; + var $i325: i32; + var $i326: i1; + var $i328: i32; + var $i329: i1; + var $i330: i32; + var $i331: i1; + var $i333: i32; + var $i334: i32; + var $i335: i16; + var $i332: i16; + var $i327: i16; + var $i336: i32; + var $i337: i32; + var $i338: i16; + var $i339: i32; + var $i340: i32; + var $i341: i32; + var $i342: i16; + var $i343: i32; + var $i344: i32; + var $i345: i16; + var $i346: i32; + var $i347: i32; + var $i348: i32; + var $i349: i16; + var $i350: i32; + var $i351: i32; + var $i352: i32; + var $i353: i16; + var $i354: i32; + var $i355: i1; + var $i357: i32; + var $i358: i1; + var $i359: i32; + var $i360: i1; + var $i362: i32; + var $i363: i32; + var $i364: i16; + var $i361: i16; + var $i356: i16; + var $i365: i32; + var $i366: i32; + var $i367: i16; + var $i368: i32; + var $i369: i32; + var $i370: i32; + var $i371: i16; + var $i372: i32; + var $i373: i32; + var $i374: i16; + var $i375: i32; + var $i376: i32; + var $i377: i32; + var $i378: i16; + var $i379: i32; + var $i380: i32; + var $i381: i32; + var $i382: i16; + var $i383: i32; + var $i384: i1; + var $i386: i32; + var $i387: i1; + var $i388: i32; + var $i389: i1; + var $i391: i32; + var $i392: i32; + var $i393: i16; + var $i390: i16; + var $i385: i16; + var $i394: i32; + var $i395: i32; + var $i396: i16; + var $i397: i32; + var $i398: i32; + var $i399: i32; + var $i400: i16; + var $i401: i32; + var $i402: i32; + var $i403: i16; + var $i404: i32; + var $i405: i32; + var $i406: i32; + var $i407: i16; + var $i408: i32; + var $i409: i32; + var $i410: i32; + var $i411: i16; + var $i412: i32; + var $i413: i1; + var $i415: i32; + var $i416: i1; + var $i417: i32; + var $i418: i1; + var $i420: i32; + var $i421: i32; + var $i422: i16; + var $i419: i16; + var $i414: i16; + var $i423: i32; + var $i424: i32; + var $i425: i16; + var $i426: i32; + var $i427: i32; + var $i428: i32; + var $i429: i16; + var $i430: i32; + var $i431: i32; + var $i432: i16; + var $i433: i32; + var $i434: i32; + var $i435: i32; + var $i436: i16; + var $i437: i32; + var $i438: i32; + var $i439: i32; + var $i440: i16; + var $i441: i32; + var $i442: i1; + var $i444: i32; + var $i445: i1; + var $i446: i32; + var $i447: i1; + var $i449: i32; + var $i450: i32; + var $i451: i16; + var $i448: i16; + var $i443: i16; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 8} true; + assume {:verifier.code 0} true; + call {:cexpr "__SMACK_and16:arg:a"} boogie_si_record_i16($i0); + call {:cexpr "__SMACK_and16:arg:b"} boogie_si_record_i16($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 8} true; + assume {:verifier.code 0} true; + $i2 := $sext.i16.i32(0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 5} true; + assume {:verifier.code 0} true; + $i3 := $sext.i16.i32(0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 5} true; + assume {:verifier.code 0} true; + $i4 := $add.i32($i3, $i2); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 5} true; + assume {:verifier.code 0} true; + $i5 := $trunc.i32.i16($i4); + call {:cexpr "c"} boogie_si_record_i16($i5); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 773, 7} true; + assume {:verifier.code 0} true; + $i6 := $sext.i16.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 773, 9} true; + assume {:verifier.code 0} true; + $i7 := $slt.i32($i6, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 773, 7} true; + assume {:verifier.code 0} true; + $i8 := $i5; + assume {:branchcond $i7} true; + goto $bb1, $bb2; +$bb1: + assume ($i7 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 9} true; + assume {:verifier.code 0} true; + $i9 := $sext.i16.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 11} true; + assume {:verifier.code 0} true; + $i10 := $slt.i32($i9, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i10} true; + goto $bb4, $bb6; +$bb2: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 773, 7} true; + assume {:verifier.code 0} true; + assume !(($i7 == 1)); + goto $bb3; +$bb3: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 778, 7} true; + assume {:verifier.code 0} true; + $i17 := $sext.i16.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 778, 9} true; + assume {:verifier.code 0} true; + $i18 := $srem.i32($i17, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 778, 7} true; + assume {:verifier.code 0} true; + $i19 := $trunc.i32.i16($i18); + call {:cexpr "a"} boogie_si_record_i16($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 779, 8} true; + assume {:verifier.code 0} true; + $i20 := $sext.i16.i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 779, 5} true; + assume {:verifier.code 0} true; + $i21 := $sext.i16.i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 779, 5} true; + assume {:verifier.code 0} true; + $i22 := $add.i32($i21, $i20); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 779, 5} true; + assume {:verifier.code 0} true; + $i23 := $trunc.i32.i16($i22); + call {:cexpr "a"} boogie_si_record_i16($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 780, 7} true; + assume {:verifier.code 0} true; + $i24 := $sext.i16.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 780, 9} true; + assume {:verifier.code 0} true; + $i25 := $srem.i32($i24, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 780, 7} true; + assume {:verifier.code 0} true; + $i26 := $trunc.i32.i16($i25); + call {:cexpr "b"} boogie_si_record_i16($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 781, 8} true; + assume {:verifier.code 0} true; + $i27 := $sext.i16.i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 781, 5} true; + assume {:verifier.code 0} true; + $i28 := $sext.i16.i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 781, 5} true; + assume {:verifier.code 0} true; + $i29 := $add.i32($i28, $i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 781, 5} true; + assume {:verifier.code 0} true; + $i30 := $trunc.i32.i16($i29); + call {:cexpr "b"} boogie_si_record_i16($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 783, 8} true; + assume {:verifier.code 0} true; + $i31 := $sext.i16.i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 783, 5} true; + assume {:verifier.code 0} true; + $i32 := $sext.i16.i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 783, 5} true; + assume {:verifier.code 0} true; + $i33 := $add.i32($i32, $i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 783, 5} true; + assume {:verifier.code 0} true; + $i34 := $trunc.i32.i16($i33); + call {:cexpr "c"} boogie_si_record_i16($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 784, 7} true; + assume {:verifier.code 0} true; + $i35 := $sext.i16.i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 784, 9} true; + assume {:verifier.code 0} true; + $i36 := $slt.i32($i35, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 784, 7} true; + assume {:verifier.code 0} true; + $i37 := $i34; + assume {:branchcond $i36} true; + goto $bb10, $bb11; +$bb4: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 15} true; + assume {:verifier.code 0} true; + assume ($i10 == 1); + goto $bb5; +$bb5: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 775, 9} true; + assume {:verifier.code 0} true; + $i14 := $sext.i16.i32($i5); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 775, 9} true; + assume {:verifier.code 0} true; + $i15 := $add.i32($i14, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 775, 9} true; + assume {:verifier.code 0} true; + $i16 := $trunc.i32.i16($i15); + call {:cexpr "c"} boogie_si_record_i16($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 776, 5} true; + assume {:verifier.code 0} true; + $i13 := $i16; + goto $bb9; +$bb6: + assume !(($i10 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 18} true; + assume {:verifier.code 0} true; + $i11 := $sext.i16.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 20} true; + assume {:verifier.code 0} true; + $i12 := $sgt.i32($i11, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 9} true; + assume {:verifier.code 0} true; + $i13 := $i5; + assume {:branchcond $i12} true; + goto $bb7, $bb8; +$bb7: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 9} true; + assume {:verifier.code 0} true; + assume ($i12 == 1); + goto $bb5; +$bb8: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 9} true; + assume {:verifier.code 0} true; + assume !(($i12 == 1)); + goto $bb9; +$bb9: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 777, 3} true; + assume {:verifier.code 0} true; + $i8 := $i13; + goto $bb3; +$bb10: + assume ($i36 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 9} true; + assume {:verifier.code 0} true; + $i38 := $sext.i16.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 11} true; + assume {:verifier.code 0} true; + $i39 := $slt.i32($i38, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i39} true; + goto $bb13, $bb15; +$bb11: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 784, 7} true; + assume {:verifier.code 0} true; + assume !(($i36 == 1)); + goto $bb12; +$bb12: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 789, 7} true; + assume {:verifier.code 0} true; + $i46 := $sext.i16.i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 789, 9} true; + assume {:verifier.code 0} true; + $i47 := $srem.i32($i46, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 789, 7} true; + assume {:verifier.code 0} true; + $i48 := $trunc.i32.i16($i47); + call {:cexpr "a"} boogie_si_record_i16($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 790, 8} true; + assume {:verifier.code 0} true; + $i49 := $sext.i16.i32($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 790, 5} true; + assume {:verifier.code 0} true; + $i50 := $sext.i16.i32($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 790, 5} true; + assume {:verifier.code 0} true; + $i51 := $add.i32($i50, $i49); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 790, 5} true; + assume {:verifier.code 0} true; + $i52 := $trunc.i32.i16($i51); + call {:cexpr "a"} boogie_si_record_i16($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 791, 7} true; + assume {:verifier.code 0} true; + $i53 := $sext.i16.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 791, 9} true; + assume {:verifier.code 0} true; + $i54 := $srem.i32($i53, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 791, 7} true; + assume {:verifier.code 0} true; + $i55 := $trunc.i32.i16($i54); + call {:cexpr "b"} boogie_si_record_i16($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 792, 8} true; + assume {:verifier.code 0} true; + $i56 := $sext.i16.i32($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 792, 5} true; + assume {:verifier.code 0} true; + $i57 := $sext.i16.i32($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 792, 5} true; + assume {:verifier.code 0} true; + $i58 := $add.i32($i57, $i56); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 792, 5} true; + assume {:verifier.code 0} true; + $i59 := $trunc.i32.i16($i58); + call {:cexpr "b"} boogie_si_record_i16($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 794, 8} true; + assume {:verifier.code 0} true; + $i60 := $sext.i16.i32($i37); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 794, 5} true; + assume {:verifier.code 0} true; + $i61 := $sext.i16.i32($i37); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 794, 5} true; + assume {:verifier.code 0} true; + $i62 := $add.i32($i61, $i60); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 794, 5} true; + assume {:verifier.code 0} true; + $i63 := $trunc.i32.i16($i62); + call {:cexpr "c"} boogie_si_record_i16($i63); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 795, 7} true; + assume {:verifier.code 0} true; + $i64 := $sext.i16.i32($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 795, 9} true; + assume {:verifier.code 0} true; + $i65 := $slt.i32($i64, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 795, 7} true; + assume {:verifier.code 0} true; + $i66 := $i63; + assume {:branchcond $i65} true; + goto $bb19, $bb20; +$bb13: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 15} true; + assume {:verifier.code 0} true; + assume ($i39 == 1); + goto $bb14; +$bb14: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 786, 9} true; + assume {:verifier.code 0} true; + $i43 := $sext.i16.i32($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 786, 9} true; + assume {:verifier.code 0} true; + $i44 := $add.i32($i43, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 786, 9} true; + assume {:verifier.code 0} true; + $i45 := $trunc.i32.i16($i44); + call {:cexpr "c"} boogie_si_record_i16($i45); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 787, 5} true; + assume {:verifier.code 0} true; + $i42 := $i45; + goto $bb18; +$bb15: + assume !(($i39 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 18} true; + assume {:verifier.code 0} true; + $i40 := $sext.i16.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 20} true; + assume {:verifier.code 0} true; + $i41 := $sgt.i32($i40, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 9} true; + assume {:verifier.code 0} true; + $i42 := $i34; + assume {:branchcond $i41} true; + goto $bb16, $bb17; +$bb16: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 9} true; + assume {:verifier.code 0} true; + assume ($i41 == 1); + goto $bb14; +$bb17: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 9} true; + assume {:verifier.code 0} true; + assume !(($i41 == 1)); + goto $bb18; +$bb18: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 788, 3} true; + assume {:verifier.code 0} true; + $i37 := $i42; + goto $bb12; +$bb19: + assume ($i65 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 9} true; + assume {:verifier.code 0} true; + $i67 := $sext.i16.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 11} true; + assume {:verifier.code 0} true; + $i68 := $slt.i32($i67, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i68} true; + goto $bb22, $bb24; +$bb20: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 795, 7} true; + assume {:verifier.code 0} true; + assume !(($i65 == 1)); + goto $bb21; +$bb21: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 800, 7} true; + assume {:verifier.code 0} true; + $i75 := $sext.i16.i32($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 800, 9} true; + assume {:verifier.code 0} true; + $i76 := $srem.i32($i75, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 800, 7} true; + assume {:verifier.code 0} true; + $i77 := $trunc.i32.i16($i76); + call {:cexpr "a"} boogie_si_record_i16($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 801, 8} true; + assume {:verifier.code 0} true; + $i78 := $sext.i16.i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 801, 5} true; + assume {:verifier.code 0} true; + $i79 := $sext.i16.i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 801, 5} true; + assume {:verifier.code 0} true; + $i80 := $add.i32($i79, $i78); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 801, 5} true; + assume {:verifier.code 0} true; + $i81 := $trunc.i32.i16($i80); + call {:cexpr "a"} boogie_si_record_i16($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 802, 7} true; + assume {:verifier.code 0} true; + $i82 := $sext.i16.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 802, 9} true; + assume {:verifier.code 0} true; + $i83 := $srem.i32($i82, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 802, 7} true; + assume {:verifier.code 0} true; + $i84 := $trunc.i32.i16($i83); + call {:cexpr "b"} boogie_si_record_i16($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 803, 8} true; + assume {:verifier.code 0} true; + $i85 := $sext.i16.i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 803, 5} true; + assume {:verifier.code 0} true; + $i86 := $sext.i16.i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 803, 5} true; + assume {:verifier.code 0} true; + $i87 := $add.i32($i86, $i85); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 803, 5} true; + assume {:verifier.code 0} true; + $i88 := $trunc.i32.i16($i87); + call {:cexpr "b"} boogie_si_record_i16($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 805, 8} true; + assume {:verifier.code 0} true; + $i89 := $sext.i16.i32($i66); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 805, 5} true; + assume {:verifier.code 0} true; + $i90 := $sext.i16.i32($i66); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 805, 5} true; + assume {:verifier.code 0} true; + $i91 := $add.i32($i90, $i89); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 805, 5} true; + assume {:verifier.code 0} true; + $i92 := $trunc.i32.i16($i91); + call {:cexpr "c"} boogie_si_record_i16($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 806, 7} true; + assume {:verifier.code 0} true; + $i93 := $sext.i16.i32($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 806, 9} true; + assume {:verifier.code 0} true; + $i94 := $slt.i32($i93, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 806, 7} true; + assume {:verifier.code 0} true; + $i95 := $i92; + assume {:branchcond $i94} true; + goto $bb28, $bb29; +$bb22: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 15} true; + assume {:verifier.code 0} true; + assume ($i68 == 1); + goto $bb23; +$bb23: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 797, 9} true; + assume {:verifier.code 0} true; + $i72 := $sext.i16.i32($i63); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 797, 9} true; + assume {:verifier.code 0} true; + $i73 := $add.i32($i72, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 797, 9} true; + assume {:verifier.code 0} true; + $i74 := $trunc.i32.i16($i73); + call {:cexpr "c"} boogie_si_record_i16($i74); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 798, 5} true; + assume {:verifier.code 0} true; + $i71 := $i74; + goto $bb27; +$bb24: + assume !(($i68 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 18} true; + assume {:verifier.code 0} true; + $i69 := $sext.i16.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 20} true; + assume {:verifier.code 0} true; + $i70 := $sgt.i32($i69, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 9} true; + assume {:verifier.code 0} true; + $i71 := $i63; + assume {:branchcond $i70} true; + goto $bb25, $bb26; +$bb25: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 9} true; + assume {:verifier.code 0} true; + assume ($i70 == 1); + goto $bb23; +$bb26: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 9} true; + assume {:verifier.code 0} true; + assume !(($i70 == 1)); + goto $bb27; +$bb27: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 799, 3} true; + assume {:verifier.code 0} true; + $i66 := $i71; + goto $bb21; +$bb28: + assume ($i94 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 9} true; + assume {:verifier.code 0} true; + $i96 := $sext.i16.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 11} true; + assume {:verifier.code 0} true; + $i97 := $slt.i32($i96, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i97} true; + goto $bb31, $bb33; +$bb29: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 806, 7} true; + assume {:verifier.code 0} true; + assume !(($i94 == 1)); + goto $bb30; +$bb30: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 811, 7} true; + assume {:verifier.code 0} true; + $i104 := $sext.i16.i32($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 811, 9} true; + assume {:verifier.code 0} true; + $i105 := $srem.i32($i104, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 811, 7} true; + assume {:verifier.code 0} true; + $i106 := $trunc.i32.i16($i105); + call {:cexpr "a"} boogie_si_record_i16($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 812, 8} true; + assume {:verifier.code 0} true; + $i107 := $sext.i16.i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 812, 5} true; + assume {:verifier.code 0} true; + $i108 := $sext.i16.i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 812, 5} true; + assume {:verifier.code 0} true; + $i109 := $add.i32($i108, $i107); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 812, 5} true; + assume {:verifier.code 0} true; + $i110 := $trunc.i32.i16($i109); + call {:cexpr "a"} boogie_si_record_i16($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 813, 7} true; + assume {:verifier.code 0} true; + $i111 := $sext.i16.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 813, 9} true; + assume {:verifier.code 0} true; + $i112 := $srem.i32($i111, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 813, 7} true; + assume {:verifier.code 0} true; + $i113 := $trunc.i32.i16($i112); + call {:cexpr "b"} boogie_si_record_i16($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 814, 8} true; + assume {:verifier.code 0} true; + $i114 := $sext.i16.i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 814, 5} true; + assume {:verifier.code 0} true; + $i115 := $sext.i16.i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 814, 5} true; + assume {:verifier.code 0} true; + $i116 := $add.i32($i115, $i114); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 814, 5} true; + assume {:verifier.code 0} true; + $i117 := $trunc.i32.i16($i116); + call {:cexpr "b"} boogie_si_record_i16($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 816, 8} true; + assume {:verifier.code 0} true; + $i118 := $sext.i16.i32($i95); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 816, 5} true; + assume {:verifier.code 0} true; + $i119 := $sext.i16.i32($i95); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 816, 5} true; + assume {:verifier.code 0} true; + $i120 := $add.i32($i119, $i118); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 816, 5} true; + assume {:verifier.code 0} true; + $i121 := $trunc.i32.i16($i120); + call {:cexpr "c"} boogie_si_record_i16($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 817, 7} true; + assume {:verifier.code 0} true; + $i122 := $sext.i16.i32($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 817, 9} true; + assume {:verifier.code 0} true; + $i123 := $slt.i32($i122, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 817, 7} true; + assume {:verifier.code 0} true; + $i124 := $i121; + assume {:branchcond $i123} true; + goto $bb37, $bb38; +$bb31: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 15} true; + assume {:verifier.code 0} true; + assume ($i97 == 1); + goto $bb32; +$bb32: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 808, 9} true; + assume {:verifier.code 0} true; + $i101 := $sext.i16.i32($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 808, 9} true; + assume {:verifier.code 0} true; + $i102 := $add.i32($i101, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 808, 9} true; + assume {:verifier.code 0} true; + $i103 := $trunc.i32.i16($i102); + call {:cexpr "c"} boogie_si_record_i16($i103); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 809, 5} true; + assume {:verifier.code 0} true; + $i100 := $i103; + goto $bb36; +$bb33: + assume !(($i97 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 18} true; + assume {:verifier.code 0} true; + $i98 := $sext.i16.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 20} true; + assume {:verifier.code 0} true; + $i99 := $sgt.i32($i98, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 9} true; + assume {:verifier.code 0} true; + $i100 := $i92; + assume {:branchcond $i99} true; + goto $bb34, $bb35; +$bb34: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 9} true; + assume {:verifier.code 0} true; + assume ($i99 == 1); + goto $bb32; +$bb35: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 9} true; + assume {:verifier.code 0} true; + assume !(($i99 == 1)); + goto $bb36; +$bb36: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 810, 3} true; + assume {:verifier.code 0} true; + $i95 := $i100; + goto $bb30; +$bb37: + assume ($i123 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 9} true; + assume {:verifier.code 0} true; + $i125 := $sext.i16.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 11} true; + assume {:verifier.code 0} true; + $i126 := $slt.i32($i125, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i126} true; + goto $bb40, $bb42; +$bb38: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 817, 7} true; + assume {:verifier.code 0} true; + assume !(($i123 == 1)); + goto $bb39; +$bb39: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 822, 7} true; + assume {:verifier.code 0} true; + $i133 := $sext.i16.i32($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 822, 9} true; + assume {:verifier.code 0} true; + $i134 := $srem.i32($i133, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 822, 7} true; + assume {:verifier.code 0} true; + $i135 := $trunc.i32.i16($i134); + call {:cexpr "a"} boogie_si_record_i16($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 823, 8} true; + assume {:verifier.code 0} true; + $i136 := $sext.i16.i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 823, 5} true; + assume {:verifier.code 0} true; + $i137 := $sext.i16.i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 823, 5} true; + assume {:verifier.code 0} true; + $i138 := $add.i32($i137, $i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 823, 5} true; + assume {:verifier.code 0} true; + $i139 := $trunc.i32.i16($i138); + call {:cexpr "a"} boogie_si_record_i16($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 824, 7} true; + assume {:verifier.code 0} true; + $i140 := $sext.i16.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 824, 9} true; + assume {:verifier.code 0} true; + $i141 := $srem.i32($i140, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 824, 7} true; + assume {:verifier.code 0} true; + $i142 := $trunc.i32.i16($i141); + call {:cexpr "b"} boogie_si_record_i16($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 825, 8} true; + assume {:verifier.code 0} true; + $i143 := $sext.i16.i32($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 825, 5} true; + assume {:verifier.code 0} true; + $i144 := $sext.i16.i32($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 825, 5} true; + assume {:verifier.code 0} true; + $i145 := $add.i32($i144, $i143); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 825, 5} true; + assume {:verifier.code 0} true; + $i146 := $trunc.i32.i16($i145); + call {:cexpr "b"} boogie_si_record_i16($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 827, 8} true; + assume {:verifier.code 0} true; + $i147 := $sext.i16.i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 827, 5} true; + assume {:verifier.code 0} true; + $i148 := $sext.i16.i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 827, 5} true; + assume {:verifier.code 0} true; + $i149 := $add.i32($i148, $i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 827, 5} true; + assume {:verifier.code 0} true; + $i150 := $trunc.i32.i16($i149); + call {:cexpr "c"} boogie_si_record_i16($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 828, 7} true; + assume {:verifier.code 0} true; + $i151 := $sext.i16.i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 828, 9} true; + assume {:verifier.code 0} true; + $i152 := $slt.i32($i151, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 828, 7} true; + assume {:verifier.code 0} true; + $i153 := $i150; + assume {:branchcond $i152} true; + goto $bb46, $bb47; +$bb40: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 15} true; + assume {:verifier.code 0} true; + assume ($i126 == 1); + goto $bb41; +$bb41: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 819, 9} true; + assume {:verifier.code 0} true; + $i130 := $sext.i16.i32($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 819, 9} true; + assume {:verifier.code 0} true; + $i131 := $add.i32($i130, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 819, 9} true; + assume {:verifier.code 0} true; + $i132 := $trunc.i32.i16($i131); + call {:cexpr "c"} boogie_si_record_i16($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 820, 5} true; + assume {:verifier.code 0} true; + $i129 := $i132; + goto $bb45; +$bb42: + assume !(($i126 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 18} true; + assume {:verifier.code 0} true; + $i127 := $sext.i16.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 20} true; + assume {:verifier.code 0} true; + $i128 := $sgt.i32($i127, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 9} true; + assume {:verifier.code 0} true; + $i129 := $i121; + assume {:branchcond $i128} true; + goto $bb43, $bb44; +$bb43: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 9} true; + assume {:verifier.code 0} true; + assume ($i128 == 1); + goto $bb41; +$bb44: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 9} true; + assume {:verifier.code 0} true; + assume !(($i128 == 1)); + goto $bb45; +$bb45: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 821, 3} true; + assume {:verifier.code 0} true; + $i124 := $i129; + goto $bb39; +$bb46: + assume ($i152 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 9} true; + assume {:verifier.code 0} true; + $i154 := $sext.i16.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 11} true; + assume {:verifier.code 0} true; + $i155 := $slt.i32($i154, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i155} true; + goto $bb49, $bb51; +$bb47: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 828, 7} true; + assume {:verifier.code 0} true; + assume !(($i152 == 1)); + goto $bb48; +$bb48: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 833, 7} true; + assume {:verifier.code 0} true; + $i162 := $sext.i16.i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 833, 9} true; + assume {:verifier.code 0} true; + $i163 := $srem.i32($i162, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 833, 7} true; + assume {:verifier.code 0} true; + $i164 := $trunc.i32.i16($i163); + call {:cexpr "a"} boogie_si_record_i16($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 834, 8} true; + assume {:verifier.code 0} true; + $i165 := $sext.i16.i32($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 834, 5} true; + assume {:verifier.code 0} true; + $i166 := $sext.i16.i32($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 834, 5} true; + assume {:verifier.code 0} true; + $i167 := $add.i32($i166, $i165); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 834, 5} true; + assume {:verifier.code 0} true; + $i168 := $trunc.i32.i16($i167); + call {:cexpr "a"} boogie_si_record_i16($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 835, 7} true; + assume {:verifier.code 0} true; + $i169 := $sext.i16.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 835, 9} true; + assume {:verifier.code 0} true; + $i170 := $srem.i32($i169, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 835, 7} true; + assume {:verifier.code 0} true; + $i171 := $trunc.i32.i16($i170); + call {:cexpr "b"} boogie_si_record_i16($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 836, 8} true; + assume {:verifier.code 0} true; + $i172 := $sext.i16.i32($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 836, 5} true; + assume {:verifier.code 0} true; + $i173 := $sext.i16.i32($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 836, 5} true; + assume {:verifier.code 0} true; + $i174 := $add.i32($i173, $i172); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 836, 5} true; + assume {:verifier.code 0} true; + $i175 := $trunc.i32.i16($i174); + call {:cexpr "b"} boogie_si_record_i16($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 838, 8} true; + assume {:verifier.code 0} true; + $i176 := $sext.i16.i32($i153); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 838, 5} true; + assume {:verifier.code 0} true; + $i177 := $sext.i16.i32($i153); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 838, 5} true; + assume {:verifier.code 0} true; + $i178 := $add.i32($i177, $i176); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 838, 5} true; + assume {:verifier.code 0} true; + $i179 := $trunc.i32.i16($i178); + call {:cexpr "c"} boogie_si_record_i16($i179); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 839, 7} true; + assume {:verifier.code 0} true; + $i180 := $sext.i16.i32($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 839, 9} true; + assume {:verifier.code 0} true; + $i181 := $slt.i32($i180, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 839, 7} true; + assume {:verifier.code 0} true; + $i182 := $i179; + assume {:branchcond $i181} true; + goto $bb55, $bb56; +$bb49: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 15} true; + assume {:verifier.code 0} true; + assume ($i155 == 1); + goto $bb50; +$bb50: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 830, 9} true; + assume {:verifier.code 0} true; + $i159 := $sext.i16.i32($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 830, 9} true; + assume {:verifier.code 0} true; + $i160 := $add.i32($i159, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 830, 9} true; + assume {:verifier.code 0} true; + $i161 := $trunc.i32.i16($i160); + call {:cexpr "c"} boogie_si_record_i16($i161); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 831, 5} true; + assume {:verifier.code 0} true; + $i158 := $i161; + goto $bb54; +$bb51: + assume !(($i155 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 18} true; + assume {:verifier.code 0} true; + $i156 := $sext.i16.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 20} true; + assume {:verifier.code 0} true; + $i157 := $sgt.i32($i156, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 9} true; + assume {:verifier.code 0} true; + $i158 := $i150; + assume {:branchcond $i157} true; + goto $bb52, $bb53; +$bb52: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 9} true; + assume {:verifier.code 0} true; + assume ($i157 == 1); + goto $bb50; +$bb53: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 9} true; + assume {:verifier.code 0} true; + assume !(($i157 == 1)); + goto $bb54; +$bb54: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 832, 3} true; + assume {:verifier.code 0} true; + $i153 := $i158; + goto $bb48; +$bb55: + assume ($i181 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 9} true; + assume {:verifier.code 0} true; + $i183 := $sext.i16.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 11} true; + assume {:verifier.code 0} true; + $i184 := $slt.i32($i183, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i184} true; + goto $bb58, $bb60; +$bb56: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 839, 7} true; + assume {:verifier.code 0} true; + assume !(($i181 == 1)); + goto $bb57; +$bb57: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 844, 7} true; + assume {:verifier.code 0} true; + $i191 := $sext.i16.i32($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 844, 9} true; + assume {:verifier.code 0} true; + $i192 := $srem.i32($i191, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 844, 7} true; + assume {:verifier.code 0} true; + $i193 := $trunc.i32.i16($i192); + call {:cexpr "a"} boogie_si_record_i16($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 845, 8} true; + assume {:verifier.code 0} true; + $i194 := $sext.i16.i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 845, 5} true; + assume {:verifier.code 0} true; + $i195 := $sext.i16.i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 845, 5} true; + assume {:verifier.code 0} true; + $i196 := $add.i32($i195, $i194); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 845, 5} true; + assume {:verifier.code 0} true; + $i197 := $trunc.i32.i16($i196); + call {:cexpr "a"} boogie_si_record_i16($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 846, 7} true; + assume {:verifier.code 0} true; + $i198 := $sext.i16.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 846, 9} true; + assume {:verifier.code 0} true; + $i199 := $srem.i32($i198, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 846, 7} true; + assume {:verifier.code 0} true; + $i200 := $trunc.i32.i16($i199); + call {:cexpr "b"} boogie_si_record_i16($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 847, 8} true; + assume {:verifier.code 0} true; + $i201 := $sext.i16.i32($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 847, 5} true; + assume {:verifier.code 0} true; + $i202 := $sext.i16.i32($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 847, 5} true; + assume {:verifier.code 0} true; + $i203 := $add.i32($i202, $i201); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 847, 5} true; + assume {:verifier.code 0} true; + $i204 := $trunc.i32.i16($i203); + call {:cexpr "b"} boogie_si_record_i16($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 849, 8} true; + assume {:verifier.code 0} true; + $i205 := $sext.i16.i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 849, 5} true; + assume {:verifier.code 0} true; + $i206 := $sext.i16.i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 849, 5} true; + assume {:verifier.code 0} true; + $i207 := $add.i32($i206, $i205); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 849, 5} true; + assume {:verifier.code 0} true; + $i208 := $trunc.i32.i16($i207); + call {:cexpr "c"} boogie_si_record_i16($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 850, 7} true; + assume {:verifier.code 0} true; + $i209 := $sext.i16.i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 850, 9} true; + assume {:verifier.code 0} true; + $i210 := $slt.i32($i209, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 850, 7} true; + assume {:verifier.code 0} true; + $i211 := $i208; + assume {:branchcond $i210} true; + goto $bb64, $bb65; +$bb58: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 15} true; + assume {:verifier.code 0} true; + assume ($i184 == 1); + goto $bb59; +$bb59: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 841, 9} true; + assume {:verifier.code 0} true; + $i188 := $sext.i16.i32($i179); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 841, 9} true; + assume {:verifier.code 0} true; + $i189 := $add.i32($i188, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 841, 9} true; + assume {:verifier.code 0} true; + $i190 := $trunc.i32.i16($i189); + call {:cexpr "c"} boogie_si_record_i16($i190); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 842, 5} true; + assume {:verifier.code 0} true; + $i187 := $i190; + goto $bb63; +$bb60: + assume !(($i184 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 18} true; + assume {:verifier.code 0} true; + $i185 := $sext.i16.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 20} true; + assume {:verifier.code 0} true; + $i186 := $sgt.i32($i185, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 9} true; + assume {:verifier.code 0} true; + $i187 := $i179; + assume {:branchcond $i186} true; + goto $bb61, $bb62; +$bb61: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 9} true; + assume {:verifier.code 0} true; + assume ($i186 == 1); + goto $bb59; +$bb62: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 9} true; + assume {:verifier.code 0} true; + assume !(($i186 == 1)); + goto $bb63; +$bb63: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 843, 3} true; + assume {:verifier.code 0} true; + $i182 := $i187; + goto $bb57; +$bb64: + assume ($i210 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 9} true; + assume {:verifier.code 0} true; + $i212 := $sext.i16.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 11} true; + assume {:verifier.code 0} true; + $i213 := $slt.i32($i212, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i213} true; + goto $bb67, $bb69; +$bb65: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 850, 7} true; + assume {:verifier.code 0} true; + assume !(($i210 == 1)); + goto $bb66; +$bb66: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 855, 7} true; + assume {:verifier.code 0} true; + $i220 := $sext.i16.i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 855, 9} true; + assume {:verifier.code 0} true; + $i221 := $srem.i32($i220, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 855, 7} true; + assume {:verifier.code 0} true; + $i222 := $trunc.i32.i16($i221); + call {:cexpr "a"} boogie_si_record_i16($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 856, 8} true; + assume {:verifier.code 0} true; + $i223 := $sext.i16.i32($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 856, 5} true; + assume {:verifier.code 0} true; + $i224 := $sext.i16.i32($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 856, 5} true; + assume {:verifier.code 0} true; + $i225 := $add.i32($i224, $i223); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 856, 5} true; + assume {:verifier.code 0} true; + $i226 := $trunc.i32.i16($i225); + call {:cexpr "a"} boogie_si_record_i16($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 857, 7} true; + assume {:verifier.code 0} true; + $i227 := $sext.i16.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 857, 9} true; + assume {:verifier.code 0} true; + $i228 := $srem.i32($i227, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 857, 7} true; + assume {:verifier.code 0} true; + $i229 := $trunc.i32.i16($i228); + call {:cexpr "b"} boogie_si_record_i16($i229); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 858, 8} true; + assume {:verifier.code 0} true; + $i230 := $sext.i16.i32($i229); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 858, 5} true; + assume {:verifier.code 0} true; + $i231 := $sext.i16.i32($i229); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 858, 5} true; + assume {:verifier.code 0} true; + $i232 := $add.i32($i231, $i230); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 858, 5} true; + assume {:verifier.code 0} true; + $i233 := $trunc.i32.i16($i232); + call {:cexpr "b"} boogie_si_record_i16($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 860, 8} true; + assume {:verifier.code 0} true; + $i234 := $sext.i16.i32($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 860, 5} true; + assume {:verifier.code 0} true; + $i235 := $sext.i16.i32($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 860, 5} true; + assume {:verifier.code 0} true; + $i236 := $add.i32($i235, $i234); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 860, 5} true; + assume {:verifier.code 0} true; + $i237 := $trunc.i32.i16($i236); + call {:cexpr "c"} boogie_si_record_i16($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 861, 7} true; + assume {:verifier.code 0} true; + $i238 := $sext.i16.i32($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 861, 9} true; + assume {:verifier.code 0} true; + $i239 := $slt.i32($i238, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 861, 7} true; + assume {:verifier.code 0} true; + $i240 := $i237; + assume {:branchcond $i239} true; + goto $bb73, $bb74; +$bb67: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 15} true; + assume {:verifier.code 0} true; + assume ($i213 == 1); + goto $bb68; +$bb68: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 852, 9} true; + assume {:verifier.code 0} true; + $i217 := $sext.i16.i32($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 852, 9} true; + assume {:verifier.code 0} true; + $i218 := $add.i32($i217, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 852, 9} true; + assume {:verifier.code 0} true; + $i219 := $trunc.i32.i16($i218); + call {:cexpr "c"} boogie_si_record_i16($i219); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 853, 5} true; + assume {:verifier.code 0} true; + $i216 := $i219; + goto $bb72; +$bb69: + assume !(($i213 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 18} true; + assume {:verifier.code 0} true; + $i214 := $sext.i16.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 20} true; + assume {:verifier.code 0} true; + $i215 := $sgt.i32($i214, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 9} true; + assume {:verifier.code 0} true; + $i216 := $i208; + assume {:branchcond $i215} true; + goto $bb70, $bb71; +$bb70: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 9} true; + assume {:verifier.code 0} true; + assume ($i215 == 1); + goto $bb68; +$bb71: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 9} true; + assume {:verifier.code 0} true; + assume !(($i215 == 1)); + goto $bb72; +$bb72: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 854, 3} true; + assume {:verifier.code 0} true; + $i211 := $i216; + goto $bb66; +$bb73: + assume ($i239 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 9} true; + assume {:verifier.code 0} true; + $i241 := $sext.i16.i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 11} true; + assume {:verifier.code 0} true; + $i242 := $slt.i32($i241, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i242} true; + goto $bb76, $bb78; +$bb74: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 861, 7} true; + assume {:verifier.code 0} true; + assume !(($i239 == 1)); + goto $bb75; +$bb75: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 866, 7} true; + assume {:verifier.code 0} true; + $i249 := $sext.i16.i32($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 866, 9} true; + assume {:verifier.code 0} true; + $i250 := $srem.i32($i249, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 866, 7} true; + assume {:verifier.code 0} true; + $i251 := $trunc.i32.i16($i250); + call {:cexpr "a"} boogie_si_record_i16($i251); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 867, 8} true; + assume {:verifier.code 0} true; + $i252 := $sext.i16.i32($i251); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 867, 5} true; + assume {:verifier.code 0} true; + $i253 := $sext.i16.i32($i251); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 867, 5} true; + assume {:verifier.code 0} true; + $i254 := $add.i32($i253, $i252); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 867, 5} true; + assume {:verifier.code 0} true; + $i255 := $trunc.i32.i16($i254); + call {:cexpr "a"} boogie_si_record_i16($i255); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 868, 7} true; + assume {:verifier.code 0} true; + $i256 := $sext.i16.i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 868, 9} true; + assume {:verifier.code 0} true; + $i257 := $srem.i32($i256, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 868, 7} true; + assume {:verifier.code 0} true; + $i258 := $trunc.i32.i16($i257); + call {:cexpr "b"} boogie_si_record_i16($i258); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 869, 8} true; + assume {:verifier.code 0} true; + $i259 := $sext.i16.i32($i258); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 869, 5} true; + assume {:verifier.code 0} true; + $i260 := $sext.i16.i32($i258); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 869, 5} true; + assume {:verifier.code 0} true; + $i261 := $add.i32($i260, $i259); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 869, 5} true; + assume {:verifier.code 0} true; + $i262 := $trunc.i32.i16($i261); + call {:cexpr "b"} boogie_si_record_i16($i262); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 871, 8} true; + assume {:verifier.code 0} true; + $i263 := $sext.i16.i32($i240); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 871, 5} true; + assume {:verifier.code 0} true; + $i264 := $sext.i16.i32($i240); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 871, 5} true; + assume {:verifier.code 0} true; + $i265 := $add.i32($i264, $i263); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 871, 5} true; + assume {:verifier.code 0} true; + $i266 := $trunc.i32.i16($i265); + call {:cexpr "c"} boogie_si_record_i16($i266); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 872, 7} true; + assume {:verifier.code 0} true; + $i267 := $sext.i16.i32($i255); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 872, 9} true; + assume {:verifier.code 0} true; + $i268 := $slt.i32($i267, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 872, 7} true; + assume {:verifier.code 0} true; + $i269 := $i266; + assume {:branchcond $i268} true; + goto $bb82, $bb83; +$bb76: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 15} true; + assume {:verifier.code 0} true; + assume ($i242 == 1); + goto $bb77; +$bb77: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 863, 9} true; + assume {:verifier.code 0} true; + $i246 := $sext.i16.i32($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 863, 9} true; + assume {:verifier.code 0} true; + $i247 := $add.i32($i246, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 863, 9} true; + assume {:verifier.code 0} true; + $i248 := $trunc.i32.i16($i247); + call {:cexpr "c"} boogie_si_record_i16($i248); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 864, 5} true; + assume {:verifier.code 0} true; + $i245 := $i248; + goto $bb81; +$bb78: + assume !(($i242 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 18} true; + assume {:verifier.code 0} true; + $i243 := $sext.i16.i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 20} true; + assume {:verifier.code 0} true; + $i244 := $sgt.i32($i243, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 9} true; + assume {:verifier.code 0} true; + $i245 := $i237; + assume {:branchcond $i244} true; + goto $bb79, $bb80; +$bb79: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 9} true; + assume {:verifier.code 0} true; + assume ($i244 == 1); + goto $bb77; +$bb80: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 9} true; + assume {:verifier.code 0} true; + assume !(($i244 == 1)); + goto $bb81; +$bb81: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 865, 3} true; + assume {:verifier.code 0} true; + $i240 := $i245; + goto $bb75; +$bb82: + assume ($i268 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 9} true; + assume {:verifier.code 0} true; + $i270 := $sext.i16.i32($i262); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 11} true; + assume {:verifier.code 0} true; + $i271 := $slt.i32($i270, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i271} true; + goto $bb85, $bb87; +$bb83: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 872, 7} true; + assume {:verifier.code 0} true; + assume !(($i268 == 1)); + goto $bb84; +$bb84: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 877, 7} true; + assume {:verifier.code 0} true; + $i278 := $sext.i16.i32($i255); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 877, 9} true; + assume {:verifier.code 0} true; + $i279 := $srem.i32($i278, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 877, 7} true; + assume {:verifier.code 0} true; + $i280 := $trunc.i32.i16($i279); + call {:cexpr "a"} boogie_si_record_i16($i280); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 878, 8} true; + assume {:verifier.code 0} true; + $i281 := $sext.i16.i32($i280); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 878, 5} true; + assume {:verifier.code 0} true; + $i282 := $sext.i16.i32($i280); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 878, 5} true; + assume {:verifier.code 0} true; + $i283 := $add.i32($i282, $i281); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 878, 5} true; + assume {:verifier.code 0} true; + $i284 := $trunc.i32.i16($i283); + call {:cexpr "a"} boogie_si_record_i16($i284); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 879, 7} true; + assume {:verifier.code 0} true; + $i285 := $sext.i16.i32($i262); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 879, 9} true; + assume {:verifier.code 0} true; + $i286 := $srem.i32($i285, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 879, 7} true; + assume {:verifier.code 0} true; + $i287 := $trunc.i32.i16($i286); + call {:cexpr "b"} boogie_si_record_i16($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 880, 8} true; + assume {:verifier.code 0} true; + $i288 := $sext.i16.i32($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 880, 5} true; + assume {:verifier.code 0} true; + $i289 := $sext.i16.i32($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 880, 5} true; + assume {:verifier.code 0} true; + $i290 := $add.i32($i289, $i288); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 880, 5} true; + assume {:verifier.code 0} true; + $i291 := $trunc.i32.i16($i290); + call {:cexpr "b"} boogie_si_record_i16($i291); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 882, 8} true; + assume {:verifier.code 0} true; + $i292 := $sext.i16.i32($i269); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 882, 5} true; + assume {:verifier.code 0} true; + $i293 := $sext.i16.i32($i269); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 882, 5} true; + assume {:verifier.code 0} true; + $i294 := $add.i32($i293, $i292); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 882, 5} true; + assume {:verifier.code 0} true; + $i295 := $trunc.i32.i16($i294); + call {:cexpr "c"} boogie_si_record_i16($i295); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 883, 7} true; + assume {:verifier.code 0} true; + $i296 := $sext.i16.i32($i284); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 883, 9} true; + assume {:verifier.code 0} true; + $i297 := $slt.i32($i296, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 883, 7} true; + assume {:verifier.code 0} true; + $i298 := $i295; + assume {:branchcond $i297} true; + goto $bb91, $bb92; +$bb85: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 15} true; + assume {:verifier.code 0} true; + assume ($i271 == 1); + goto $bb86; +$bb86: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 874, 9} true; + assume {:verifier.code 0} true; + $i275 := $sext.i16.i32($i266); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 874, 9} true; + assume {:verifier.code 0} true; + $i276 := $add.i32($i275, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 874, 9} true; + assume {:verifier.code 0} true; + $i277 := $trunc.i32.i16($i276); + call {:cexpr "c"} boogie_si_record_i16($i277); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 875, 5} true; + assume {:verifier.code 0} true; + $i274 := $i277; + goto $bb90; +$bb87: + assume !(($i271 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 18} true; + assume {:verifier.code 0} true; + $i272 := $sext.i16.i32($i262); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 20} true; + assume {:verifier.code 0} true; + $i273 := $sgt.i32($i272, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 9} true; + assume {:verifier.code 0} true; + $i274 := $i266; + assume {:branchcond $i273} true; + goto $bb88, $bb89; +$bb88: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 9} true; + assume {:verifier.code 0} true; + assume ($i273 == 1); + goto $bb86; +$bb89: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 9} true; + assume {:verifier.code 0} true; + assume !(($i273 == 1)); + goto $bb90; +$bb90: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 876, 3} true; + assume {:verifier.code 0} true; + $i269 := $i274; + goto $bb84; +$bb91: + assume ($i297 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 9} true; + assume {:verifier.code 0} true; + $i299 := $sext.i16.i32($i291); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 11} true; + assume {:verifier.code 0} true; + $i300 := $slt.i32($i299, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i300} true; + goto $bb94, $bb96; +$bb92: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 883, 7} true; + assume {:verifier.code 0} true; + assume !(($i297 == 1)); + goto $bb93; +$bb93: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 888, 7} true; + assume {:verifier.code 0} true; + $i307 := $sext.i16.i32($i284); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 888, 9} true; + assume {:verifier.code 0} true; + $i308 := $srem.i32($i307, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 888, 7} true; + assume {:verifier.code 0} true; + $i309 := $trunc.i32.i16($i308); + call {:cexpr "a"} boogie_si_record_i16($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 889, 8} true; + assume {:verifier.code 0} true; + $i310 := $sext.i16.i32($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 889, 5} true; + assume {:verifier.code 0} true; + $i311 := $sext.i16.i32($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 889, 5} true; + assume {:verifier.code 0} true; + $i312 := $add.i32($i311, $i310); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 889, 5} true; + assume {:verifier.code 0} true; + $i313 := $trunc.i32.i16($i312); + call {:cexpr "a"} boogie_si_record_i16($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 890, 7} true; + assume {:verifier.code 0} true; + $i314 := $sext.i16.i32($i291); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 890, 9} true; + assume {:verifier.code 0} true; + $i315 := $srem.i32($i314, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 890, 7} true; + assume {:verifier.code 0} true; + $i316 := $trunc.i32.i16($i315); + call {:cexpr "b"} boogie_si_record_i16($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 891, 8} true; + assume {:verifier.code 0} true; + $i317 := $sext.i16.i32($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 891, 5} true; + assume {:verifier.code 0} true; + $i318 := $sext.i16.i32($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 891, 5} true; + assume {:verifier.code 0} true; + $i319 := $add.i32($i318, $i317); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 891, 5} true; + assume {:verifier.code 0} true; + $i320 := $trunc.i32.i16($i319); + call {:cexpr "b"} boogie_si_record_i16($i320); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 893, 8} true; + assume {:verifier.code 0} true; + $i321 := $sext.i16.i32($i298); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 893, 5} true; + assume {:verifier.code 0} true; + $i322 := $sext.i16.i32($i298); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 893, 5} true; + assume {:verifier.code 0} true; + $i323 := $add.i32($i322, $i321); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 893, 5} true; + assume {:verifier.code 0} true; + $i324 := $trunc.i32.i16($i323); + call {:cexpr "c"} boogie_si_record_i16($i324); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 894, 7} true; + assume {:verifier.code 0} true; + $i325 := $sext.i16.i32($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 894, 9} true; + assume {:verifier.code 0} true; + $i326 := $slt.i32($i325, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 894, 7} true; + assume {:verifier.code 0} true; + $i327 := $i324; + assume {:branchcond $i326} true; + goto $bb100, $bb101; +$bb94: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 15} true; + assume {:verifier.code 0} true; + assume ($i300 == 1); + goto $bb95; +$bb95: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 885, 9} true; + assume {:verifier.code 0} true; + $i304 := $sext.i16.i32($i295); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 885, 9} true; + assume {:verifier.code 0} true; + $i305 := $add.i32($i304, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 885, 9} true; + assume {:verifier.code 0} true; + $i306 := $trunc.i32.i16($i305); + call {:cexpr "c"} boogie_si_record_i16($i306); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 886, 5} true; + assume {:verifier.code 0} true; + $i303 := $i306; + goto $bb99; +$bb96: + assume !(($i300 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 18} true; + assume {:verifier.code 0} true; + $i301 := $sext.i16.i32($i291); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 20} true; + assume {:verifier.code 0} true; + $i302 := $sgt.i32($i301, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 9} true; + assume {:verifier.code 0} true; + $i303 := $i295; + assume {:branchcond $i302} true; + goto $bb97, $bb98; +$bb97: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 9} true; + assume {:verifier.code 0} true; + assume ($i302 == 1); + goto $bb95; +$bb98: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 9} true; + assume {:verifier.code 0} true; + assume !(($i302 == 1)); + goto $bb99; +$bb99: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 887, 3} true; + assume {:verifier.code 0} true; + $i298 := $i303; + goto $bb93; +$bb100: + assume ($i326 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 9} true; + assume {:verifier.code 0} true; + $i328 := $sext.i16.i32($i320); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 11} true; + assume {:verifier.code 0} true; + $i329 := $slt.i32($i328, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i329} true; + goto $bb103, $bb105; +$bb101: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 894, 7} true; + assume {:verifier.code 0} true; + assume !(($i326 == 1)); + goto $bb102; +$bb102: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 899, 7} true; + assume {:verifier.code 0} true; + $i336 := $sext.i16.i32($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 899, 9} true; + assume {:verifier.code 0} true; + $i337 := $srem.i32($i336, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 899, 7} true; + assume {:verifier.code 0} true; + $i338 := $trunc.i32.i16($i337); + call {:cexpr "a"} boogie_si_record_i16($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 900, 8} true; + assume {:verifier.code 0} true; + $i339 := $sext.i16.i32($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 900, 5} true; + assume {:verifier.code 0} true; + $i340 := $sext.i16.i32($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 900, 5} true; + assume {:verifier.code 0} true; + $i341 := $add.i32($i340, $i339); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 900, 5} true; + assume {:verifier.code 0} true; + $i342 := $trunc.i32.i16($i341); + call {:cexpr "a"} boogie_si_record_i16($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 901, 7} true; + assume {:verifier.code 0} true; + $i343 := $sext.i16.i32($i320); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 901, 9} true; + assume {:verifier.code 0} true; + $i344 := $srem.i32($i343, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 901, 7} true; + assume {:verifier.code 0} true; + $i345 := $trunc.i32.i16($i344); + call {:cexpr "b"} boogie_si_record_i16($i345); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 902, 8} true; + assume {:verifier.code 0} true; + $i346 := $sext.i16.i32($i345); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 902, 5} true; + assume {:verifier.code 0} true; + $i347 := $sext.i16.i32($i345); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 902, 5} true; + assume {:verifier.code 0} true; + $i348 := $add.i32($i347, $i346); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 902, 5} true; + assume {:verifier.code 0} true; + $i349 := $trunc.i32.i16($i348); + call {:cexpr "b"} boogie_si_record_i16($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 904, 8} true; + assume {:verifier.code 0} true; + $i350 := $sext.i16.i32($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 904, 5} true; + assume {:verifier.code 0} true; + $i351 := $sext.i16.i32($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 904, 5} true; + assume {:verifier.code 0} true; + $i352 := $add.i32($i351, $i350); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 904, 5} true; + assume {:verifier.code 0} true; + $i353 := $trunc.i32.i16($i352); + call {:cexpr "c"} boogie_si_record_i16($i353); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 905, 7} true; + assume {:verifier.code 0} true; + $i354 := $sext.i16.i32($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 905, 9} true; + assume {:verifier.code 0} true; + $i355 := $slt.i32($i354, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 905, 7} true; + assume {:verifier.code 0} true; + $i356 := $i353; + assume {:branchcond $i355} true; + goto $bb109, $bb110; +$bb103: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 15} true; + assume {:verifier.code 0} true; + assume ($i329 == 1); + goto $bb104; +$bb104: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 896, 9} true; + assume {:verifier.code 0} true; + $i333 := $sext.i16.i32($i324); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 896, 9} true; + assume {:verifier.code 0} true; + $i334 := $add.i32($i333, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 896, 9} true; + assume {:verifier.code 0} true; + $i335 := $trunc.i32.i16($i334); + call {:cexpr "c"} boogie_si_record_i16($i335); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 897, 5} true; + assume {:verifier.code 0} true; + $i332 := $i335; + goto $bb108; +$bb105: + assume !(($i329 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 18} true; + assume {:verifier.code 0} true; + $i330 := $sext.i16.i32($i320); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 20} true; + assume {:verifier.code 0} true; + $i331 := $sgt.i32($i330, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 9} true; + assume {:verifier.code 0} true; + $i332 := $i324; + assume {:branchcond $i331} true; + goto $bb106, $bb107; +$bb106: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 9} true; + assume {:verifier.code 0} true; + assume ($i331 == 1); + goto $bb104; +$bb107: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 9} true; + assume {:verifier.code 0} true; + assume !(($i331 == 1)); + goto $bb108; +$bb108: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 898, 3} true; + assume {:verifier.code 0} true; + $i327 := $i332; + goto $bb102; +$bb109: + assume ($i355 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 9} true; + assume {:verifier.code 0} true; + $i357 := $sext.i16.i32($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 11} true; + assume {:verifier.code 0} true; + $i358 := $slt.i32($i357, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i358} true; + goto $bb112, $bb114; +$bb110: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 905, 7} true; + assume {:verifier.code 0} true; + assume !(($i355 == 1)); + goto $bb111; +$bb111: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 910, 7} true; + assume {:verifier.code 0} true; + $i365 := $sext.i16.i32($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 910, 9} true; + assume {:verifier.code 0} true; + $i366 := $srem.i32($i365, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 910, 7} true; + assume {:verifier.code 0} true; + $i367 := $trunc.i32.i16($i366); + call {:cexpr "a"} boogie_si_record_i16($i367); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 911, 8} true; + assume {:verifier.code 0} true; + $i368 := $sext.i16.i32($i367); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 911, 5} true; + assume {:verifier.code 0} true; + $i369 := $sext.i16.i32($i367); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 911, 5} true; + assume {:verifier.code 0} true; + $i370 := $add.i32($i369, $i368); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 911, 5} true; + assume {:verifier.code 0} true; + $i371 := $trunc.i32.i16($i370); + call {:cexpr "a"} boogie_si_record_i16($i371); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 912, 7} true; + assume {:verifier.code 0} true; + $i372 := $sext.i16.i32($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 912, 9} true; + assume {:verifier.code 0} true; + $i373 := $srem.i32($i372, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 912, 7} true; + assume {:verifier.code 0} true; + $i374 := $trunc.i32.i16($i373); + call {:cexpr "b"} boogie_si_record_i16($i374); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 913, 8} true; + assume {:verifier.code 0} true; + $i375 := $sext.i16.i32($i374); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 913, 5} true; + assume {:verifier.code 0} true; + $i376 := $sext.i16.i32($i374); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 913, 5} true; + assume {:verifier.code 0} true; + $i377 := $add.i32($i376, $i375); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 913, 5} true; + assume {:verifier.code 0} true; + $i378 := $trunc.i32.i16($i377); + call {:cexpr "b"} boogie_si_record_i16($i378); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 915, 8} true; + assume {:verifier.code 0} true; + $i379 := $sext.i16.i32($i356); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 915, 5} true; + assume {:verifier.code 0} true; + $i380 := $sext.i16.i32($i356); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 915, 5} true; + assume {:verifier.code 0} true; + $i381 := $add.i32($i380, $i379); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 915, 5} true; + assume {:verifier.code 0} true; + $i382 := $trunc.i32.i16($i381); + call {:cexpr "c"} boogie_si_record_i16($i382); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 916, 7} true; + assume {:verifier.code 0} true; + $i383 := $sext.i16.i32($i371); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 916, 9} true; + assume {:verifier.code 0} true; + $i384 := $slt.i32($i383, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 916, 7} true; + assume {:verifier.code 0} true; + $i385 := $i382; + assume {:branchcond $i384} true; + goto $bb118, $bb119; +$bb112: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 15} true; + assume {:verifier.code 0} true; + assume ($i358 == 1); + goto $bb113; +$bb113: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 907, 9} true; + assume {:verifier.code 0} true; + $i362 := $sext.i16.i32($i353); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 907, 9} true; + assume {:verifier.code 0} true; + $i363 := $add.i32($i362, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 907, 9} true; + assume {:verifier.code 0} true; + $i364 := $trunc.i32.i16($i363); + call {:cexpr "c"} boogie_si_record_i16($i364); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 908, 5} true; + assume {:verifier.code 0} true; + $i361 := $i364; + goto $bb117; +$bb114: + assume !(($i358 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 18} true; + assume {:verifier.code 0} true; + $i359 := $sext.i16.i32($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 20} true; + assume {:verifier.code 0} true; + $i360 := $sgt.i32($i359, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 9} true; + assume {:verifier.code 0} true; + $i361 := $i353; + assume {:branchcond $i360} true; + goto $bb115, $bb116; +$bb115: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 9} true; + assume {:verifier.code 0} true; + assume ($i360 == 1); + goto $bb113; +$bb116: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 9} true; + assume {:verifier.code 0} true; + assume !(($i360 == 1)); + goto $bb117; +$bb117: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 909, 3} true; + assume {:verifier.code 0} true; + $i356 := $i361; + goto $bb111; +$bb118: + assume ($i384 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 9} true; + assume {:verifier.code 0} true; + $i386 := $sext.i16.i32($i378); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 11} true; + assume {:verifier.code 0} true; + $i387 := $slt.i32($i386, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i387} true; + goto $bb121, $bb123; +$bb119: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 916, 7} true; + assume {:verifier.code 0} true; + assume !(($i384 == 1)); + goto $bb120; +$bb120: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 921, 7} true; + assume {:verifier.code 0} true; + $i394 := $sext.i16.i32($i371); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 921, 9} true; + assume {:verifier.code 0} true; + $i395 := $srem.i32($i394, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 921, 7} true; + assume {:verifier.code 0} true; + $i396 := $trunc.i32.i16($i395); + call {:cexpr "a"} boogie_si_record_i16($i396); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 922, 8} true; + assume {:verifier.code 0} true; + $i397 := $sext.i16.i32($i396); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 922, 5} true; + assume {:verifier.code 0} true; + $i398 := $sext.i16.i32($i396); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 922, 5} true; + assume {:verifier.code 0} true; + $i399 := $add.i32($i398, $i397); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 922, 5} true; + assume {:verifier.code 0} true; + $i400 := $trunc.i32.i16($i399); + call {:cexpr "a"} boogie_si_record_i16($i400); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 923, 7} true; + assume {:verifier.code 0} true; + $i401 := $sext.i16.i32($i378); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 923, 9} true; + assume {:verifier.code 0} true; + $i402 := $srem.i32($i401, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 923, 7} true; + assume {:verifier.code 0} true; + $i403 := $trunc.i32.i16($i402); + call {:cexpr "b"} boogie_si_record_i16($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 924, 8} true; + assume {:verifier.code 0} true; + $i404 := $sext.i16.i32($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 924, 5} true; + assume {:verifier.code 0} true; + $i405 := $sext.i16.i32($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 924, 5} true; + assume {:verifier.code 0} true; + $i406 := $add.i32($i405, $i404); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 924, 5} true; + assume {:verifier.code 0} true; + $i407 := $trunc.i32.i16($i406); + call {:cexpr "b"} boogie_si_record_i16($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 926, 8} true; + assume {:verifier.code 0} true; + $i408 := $sext.i16.i32($i385); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 926, 5} true; + assume {:verifier.code 0} true; + $i409 := $sext.i16.i32($i385); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 926, 5} true; + assume {:verifier.code 0} true; + $i410 := $add.i32($i409, $i408); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 926, 5} true; + assume {:verifier.code 0} true; + $i411 := $trunc.i32.i16($i410); + call {:cexpr "c"} boogie_si_record_i16($i411); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 927, 7} true; + assume {:verifier.code 0} true; + $i412 := $sext.i16.i32($i400); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 927, 9} true; + assume {:verifier.code 0} true; + $i413 := $slt.i32($i412, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 927, 7} true; + assume {:verifier.code 0} true; + $i414 := $i411; + assume {:branchcond $i413} true; + goto $bb127, $bb128; +$bb121: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 15} true; + assume {:verifier.code 0} true; + assume ($i387 == 1); + goto $bb122; +$bb122: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 918, 9} true; + assume {:verifier.code 0} true; + $i391 := $sext.i16.i32($i382); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 918, 9} true; + assume {:verifier.code 0} true; + $i392 := $add.i32($i391, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 918, 9} true; + assume {:verifier.code 0} true; + $i393 := $trunc.i32.i16($i392); + call {:cexpr "c"} boogie_si_record_i16($i393); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 919, 5} true; + assume {:verifier.code 0} true; + $i390 := $i393; + goto $bb126; +$bb123: + assume !(($i387 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 18} true; + assume {:verifier.code 0} true; + $i388 := $sext.i16.i32($i378); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 20} true; + assume {:verifier.code 0} true; + $i389 := $sgt.i32($i388, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 9} true; + assume {:verifier.code 0} true; + $i390 := $i382; + assume {:branchcond $i389} true; + goto $bb124, $bb125; +$bb124: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 9} true; + assume {:verifier.code 0} true; + assume ($i389 == 1); + goto $bb122; +$bb125: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 9} true; + assume {:verifier.code 0} true; + assume !(($i389 == 1)); + goto $bb126; +$bb126: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 920, 3} true; + assume {:verifier.code 0} true; + $i385 := $i390; + goto $bb120; +$bb127: + assume ($i413 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 9} true; + assume {:verifier.code 0} true; + $i415 := $sext.i16.i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 11} true; + assume {:verifier.code 0} true; + $i416 := $slt.i32($i415, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i416} true; + goto $bb130, $bb132; +$bb128: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 927, 7} true; + assume {:verifier.code 0} true; + assume !(($i413 == 1)); + goto $bb129; +$bb129: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 932, 7} true; + assume {:verifier.code 0} true; + $i423 := $sext.i16.i32($i400); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 932, 9} true; + assume {:verifier.code 0} true; + $i424 := $srem.i32($i423, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 932, 7} true; + assume {:verifier.code 0} true; + $i425 := $trunc.i32.i16($i424); + call {:cexpr "a"} boogie_si_record_i16($i425); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 933, 8} true; + assume {:verifier.code 0} true; + $i426 := $sext.i16.i32($i425); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 933, 5} true; + assume {:verifier.code 0} true; + $i427 := $sext.i16.i32($i425); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 933, 5} true; + assume {:verifier.code 0} true; + $i428 := $add.i32($i427, $i426); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 933, 5} true; + assume {:verifier.code 0} true; + $i429 := $trunc.i32.i16($i428); + call {:cexpr "a"} boogie_si_record_i16($i429); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 934, 7} true; + assume {:verifier.code 0} true; + $i430 := $sext.i16.i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 934, 9} true; + assume {:verifier.code 0} true; + $i431 := $srem.i32($i430, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 934, 7} true; + assume {:verifier.code 0} true; + $i432 := $trunc.i32.i16($i431); + call {:cexpr "b"} boogie_si_record_i16($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 935, 8} true; + assume {:verifier.code 0} true; + $i433 := $sext.i16.i32($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 935, 5} true; + assume {:verifier.code 0} true; + $i434 := $sext.i16.i32($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 935, 5} true; + assume {:verifier.code 0} true; + $i435 := $add.i32($i434, $i433); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 935, 5} true; + assume {:verifier.code 0} true; + $i436 := $trunc.i32.i16($i435); + call {:cexpr "b"} boogie_si_record_i16($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 937, 8} true; + assume {:verifier.code 0} true; + $i437 := $sext.i16.i32($i414); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 937, 5} true; + assume {:verifier.code 0} true; + $i438 := $sext.i16.i32($i414); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 937, 5} true; + assume {:verifier.code 0} true; + $i439 := $add.i32($i438, $i437); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 937, 5} true; + assume {:verifier.code 0} true; + $i440 := $trunc.i32.i16($i439); + call {:cexpr "c"} boogie_si_record_i16($i440); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 938, 7} true; + assume {:verifier.code 0} true; + $i441 := $sext.i16.i32($i429); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 938, 9} true; + assume {:verifier.code 0} true; + $i442 := $slt.i32($i441, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 938, 7} true; + assume {:verifier.code 0} true; + $i443 := $i440; + assume {:branchcond $i442} true; + goto $bb136, $bb137; +$bb130: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 15} true; + assume {:verifier.code 0} true; + assume ($i416 == 1); + goto $bb131; +$bb131: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 929, 9} true; + assume {:verifier.code 0} true; + $i420 := $sext.i16.i32($i411); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 929, 9} true; + assume {:verifier.code 0} true; + $i421 := $add.i32($i420, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 929, 9} true; + assume {:verifier.code 0} true; + $i422 := $trunc.i32.i16($i421); + call {:cexpr "c"} boogie_si_record_i16($i422); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 930, 5} true; + assume {:verifier.code 0} true; + $i419 := $i422; + goto $bb135; +$bb132: + assume !(($i416 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 18} true; + assume {:verifier.code 0} true; + $i417 := $sext.i16.i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 20} true; + assume {:verifier.code 0} true; + $i418 := $sgt.i32($i417, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 9} true; + assume {:verifier.code 0} true; + $i419 := $i411; + assume {:branchcond $i418} true; + goto $bb133, $bb134; +$bb133: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 9} true; + assume {:verifier.code 0} true; + assume ($i418 == 1); + goto $bb131; +$bb134: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 9} true; + assume {:verifier.code 0} true; + assume !(($i418 == 1)); + goto $bb135; +$bb135: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 931, 3} true; + assume {:verifier.code 0} true; + $i414 := $i419; + goto $bb129; +$bb136: + assume ($i442 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 9} true; + assume {:verifier.code 0} true; + $i444 := $sext.i16.i32($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 11} true; + assume {:verifier.code 0} true; + $i445 := $slt.i32($i444, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i445} true; + goto $bb139, $bb141; +$bb137: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 938, 7} true; + assume {:verifier.code 0} true; + assume !(($i442 == 1)); + goto $bb138; +$bb138: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 948, 3} true; + assume {:verifier.code 0} true; + $r := $i443; + $exn := false; + return; +$bb139: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 15} true; + assume {:verifier.code 0} true; + assume ($i445 == 1); + goto $bb140; +$bb140: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 940, 9} true; + assume {:verifier.code 0} true; + $i449 := $sext.i16.i32($i440); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 940, 9} true; + assume {:verifier.code 0} true; + $i450 := $add.i32($i449, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 940, 9} true; + assume {:verifier.code 0} true; + $i451 := $trunc.i32.i16($i450); + call {:cexpr "c"} boogie_si_record_i16($i451); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 941, 5} true; + assume {:verifier.code 0} true; + $i448 := $i451; + goto $bb144; +$bb141: + assume !(($i445 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 18} true; + assume {:verifier.code 0} true; + $i446 := $sext.i16.i32($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 20} true; + assume {:verifier.code 0} true; + $i447 := $sgt.i32($i446, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 9} true; + assume {:verifier.code 0} true; + $i448 := $i440; + assume {:branchcond $i447} true; + goto $bb142, $bb143; +$bb142: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 9} true; + assume {:verifier.code 0} true; + assume ($i447 == 1); + goto $bb140; +$bb143: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 9} true; + assume {:verifier.code 0} true; + assume !(($i447 == 1)); + goto $bb144; +$bb144: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 942, 3} true; + assume {:verifier.code 0} true; + $i443 := $i448; + goto $bb138; +} +const __SMACK_and8: ref; +axiom (__SMACK_and8 == $sub.ref(0, 19604)); +procedure __SMACK_and8($i0: i8, $i1: i8) + returns ($r: i8) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i8; + var $i6: i32; + var $i7: i1; + var $i9: i32; + var $i10: i1; + var $i11: i32; + var $i12: i1; + var $i14: i32; + var $i15: i32; + var $i16: i8; + var $i13: i8; + var $i8: i8; + var $i17: i32; + var $i18: i32; + var $i19: i8; + var $i20: i32; + var $i21: i32; + var $i22: i32; + var $i23: i8; + var $i24: i32; + var $i25: i32; + var $i26: i8; + var $i27: i32; + var $i28: i32; + var $i29: i32; + var $i30: i8; + var $i31: i32; + var $i32: i32; + var $i33: i32; + var $i34: i8; + var $i35: i32; + var $i36: i1; + var $i38: i32; + var $i39: i1; + var $i40: i32; + var $i41: i1; + var $i43: i32; + var $i44: i32; + var $i45: i8; + var $i42: i8; + var $i37: i8; + var $i46: i32; + var $i47: i32; + var $i48: i8; + var $i49: i32; + var $i50: i32; + var $i51: i32; + var $i52: i8; + var $i53: i32; + var $i54: i32; + var $i55: i8; + var $i56: i32; + var $i57: i32; + var $i58: i32; + var $i59: i8; + var $i60: i32; + var $i61: i32; + var $i62: i32; + var $i63: i8; + var $i64: i32; + var $i65: i1; + var $i67: i32; + var $i68: i1; + var $i69: i32; + var $i70: i1; + var $i72: i32; + var $i73: i32; + var $i74: i8; + var $i71: i8; + var $i66: i8; + var $i75: i32; + var $i76: i32; + var $i77: i8; + var $i78: i32; + var $i79: i32; + var $i80: i32; + var $i81: i8; + var $i82: i32; + var $i83: i32; + var $i84: i8; + var $i85: i32; + var $i86: i32; + var $i87: i32; + var $i88: i8; + var $i89: i32; + var $i90: i32; + var $i91: i32; + var $i92: i8; + var $i93: i32; + var $i94: i1; + var $i96: i32; + var $i97: i1; + var $i98: i32; + var $i99: i1; + var $i101: i32; + var $i102: i32; + var $i103: i8; + var $i100: i8; + var $i95: i8; + var $i104: i32; + var $i105: i32; + var $i106: i8; + var $i107: i32; + var $i108: i32; + var $i109: i32; + var $i110: i8; + var $i111: i32; + var $i112: i32; + var $i113: i8; + var $i114: i32; + var $i115: i32; + var $i116: i32; + var $i117: i8; + var $i118: i32; + var $i119: i32; + var $i120: i32; + var $i121: i8; + var $i122: i32; + var $i123: i1; + var $i125: i32; + var $i126: i1; + var $i127: i32; + var $i128: i1; + var $i130: i32; + var $i131: i32; + var $i132: i8; + var $i129: i8; + var $i124: i8; + var $i133: i32; + var $i134: i32; + var $i135: i8; + var $i136: i32; + var $i137: i32; + var $i138: i32; + var $i139: i8; + var $i140: i32; + var $i141: i32; + var $i142: i8; + var $i143: i32; + var $i144: i32; + var $i145: i32; + var $i146: i8; + var $i147: i32; + var $i148: i32; + var $i149: i32; + var $i150: i8; + var $i151: i32; + var $i152: i1; + var $i154: i32; + var $i155: i1; + var $i156: i32; + var $i157: i1; + var $i159: i32; + var $i160: i32; + var $i161: i8; + var $i158: i8; + var $i153: i8; + var $i162: i32; + var $i163: i32; + var $i164: i8; + var $i165: i32; + var $i166: i32; + var $i167: i32; + var $i168: i8; + var $i169: i32; + var $i170: i32; + var $i171: i8; + var $i172: i32; + var $i173: i32; + var $i174: i32; + var $i175: i8; + var $i176: i32; + var $i177: i32; + var $i178: i32; + var $i179: i8; + var $i180: i32; + var $i181: i1; + var $i183: i32; + var $i184: i1; + var $i185: i32; + var $i186: i1; + var $i188: i32; + var $i189: i32; + var $i190: i8; + var $i187: i8; + var $i182: i8; + var $i191: i32; + var $i192: i32; + var $i193: i8; + var $i194: i32; + var $i195: i32; + var $i196: i32; + var $i197: i8; + var $i198: i32; + var $i199: i32; + var $i200: i8; + var $i201: i32; + var $i202: i32; + var $i203: i32; + var $i204: i8; + var $i205: i32; + var $i206: i32; + var $i207: i32; + var $i208: i8; + var $i209: i32; + var $i210: i1; + var $i212: i32; + var $i213: i1; + var $i214: i32; + var $i215: i1; + var $i217: i32; + var $i218: i32; + var $i219: i8; + var $i216: i8; + var $i211: i8; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 8} true; + assume {:verifier.code 0} true; + call {:cexpr "__SMACK_and8:arg:a"} boogie_si_record_i8($i0); + call {:cexpr "__SMACK_and8:arg:b"} boogie_si_record_i8($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 8} true; + assume {:verifier.code 0} true; + $i2 := $sext.i8.i32(0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 5} true; + assume {:verifier.code 0} true; + $i3 := $sext.i8.i32(0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 5} true; + assume {:verifier.code 0} true; + $i4 := $add.i32($i3, $i2); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 5} true; + assume {:verifier.code 0} true; + $i5 := $trunc.i32.i8($i4); + call {:cexpr "c"} boogie_si_record_i8($i5); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 955, 7} true; + assume {:verifier.code 0} true; + $i6 := $sext.i8.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 955, 9} true; + assume {:verifier.code 0} true; + $i7 := $slt.i32($i6, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 955, 7} true; + assume {:verifier.code 0} true; + $i8 := $i5; + assume {:branchcond $i7} true; + goto $bb1, $bb2; +$bb1: + assume ($i7 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 9} true; + assume {:verifier.code 0} true; + $i9 := $sext.i8.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 11} true; + assume {:verifier.code 0} true; + $i10 := $slt.i32($i9, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i10} true; + goto $bb4, $bb6; +$bb2: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 955, 7} true; + assume {:verifier.code 0} true; + assume !(($i7 == 1)); + goto $bb3; +$bb3: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 960, 7} true; + assume {:verifier.code 0} true; + $i17 := $sext.i8.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 960, 9} true; + assume {:verifier.code 0} true; + $i18 := $srem.i32($i17, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 960, 7} true; + assume {:verifier.code 0} true; + $i19 := $trunc.i32.i8($i18); + call {:cexpr "a"} boogie_si_record_i8($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 961, 8} true; + assume {:verifier.code 0} true; + $i20 := $sext.i8.i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 961, 5} true; + assume {:verifier.code 0} true; + $i21 := $sext.i8.i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 961, 5} true; + assume {:verifier.code 0} true; + $i22 := $add.i32($i21, $i20); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 961, 5} true; + assume {:verifier.code 0} true; + $i23 := $trunc.i32.i8($i22); + call {:cexpr "a"} boogie_si_record_i8($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 962, 7} true; + assume {:verifier.code 0} true; + $i24 := $sext.i8.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 962, 9} true; + assume {:verifier.code 0} true; + $i25 := $srem.i32($i24, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 962, 7} true; + assume {:verifier.code 0} true; + $i26 := $trunc.i32.i8($i25); + call {:cexpr "b"} boogie_si_record_i8($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 963, 8} true; + assume {:verifier.code 0} true; + $i27 := $sext.i8.i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 963, 5} true; + assume {:verifier.code 0} true; + $i28 := $sext.i8.i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 963, 5} true; + assume {:verifier.code 0} true; + $i29 := $add.i32($i28, $i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 963, 5} true; + assume {:verifier.code 0} true; + $i30 := $trunc.i32.i8($i29); + call {:cexpr "b"} boogie_si_record_i8($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 965, 8} true; + assume {:verifier.code 0} true; + $i31 := $sext.i8.i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 965, 5} true; + assume {:verifier.code 0} true; + $i32 := $sext.i8.i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 965, 5} true; + assume {:verifier.code 0} true; + $i33 := $add.i32($i32, $i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 965, 5} true; + assume {:verifier.code 0} true; + $i34 := $trunc.i32.i8($i33); + call {:cexpr "c"} boogie_si_record_i8($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 966, 7} true; + assume {:verifier.code 0} true; + $i35 := $sext.i8.i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 966, 9} true; + assume {:verifier.code 0} true; + $i36 := $slt.i32($i35, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 966, 7} true; + assume {:verifier.code 0} true; + $i37 := $i34; + assume {:branchcond $i36} true; + goto $bb10, $bb11; +$bb4: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 15} true; + assume {:verifier.code 0} true; + assume ($i10 == 1); + goto $bb5; +$bb5: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 957, 9} true; + assume {:verifier.code 0} true; + $i14 := $sext.i8.i32($i5); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 957, 9} true; + assume {:verifier.code 0} true; + $i15 := $add.i32($i14, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 957, 9} true; + assume {:verifier.code 0} true; + $i16 := $trunc.i32.i8($i15); + call {:cexpr "c"} boogie_si_record_i8($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 958, 5} true; + assume {:verifier.code 0} true; + $i13 := $i16; + goto $bb9; +$bb6: + assume !(($i10 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 18} true; + assume {:verifier.code 0} true; + $i11 := $sext.i8.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 20} true; + assume {:verifier.code 0} true; + $i12 := $sgt.i32($i11, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 9} true; + assume {:verifier.code 0} true; + $i13 := $i5; + assume {:branchcond $i12} true; + goto $bb7, $bb8; +$bb7: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 9} true; + assume {:verifier.code 0} true; + assume ($i12 == 1); + goto $bb5; +$bb8: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 9} true; + assume {:verifier.code 0} true; + assume !(($i12 == 1)); + goto $bb9; +$bb9: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 959, 3} true; + assume {:verifier.code 0} true; + $i8 := $i13; + goto $bb3; +$bb10: + assume ($i36 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 9} true; + assume {:verifier.code 0} true; + $i38 := $sext.i8.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 11} true; + assume {:verifier.code 0} true; + $i39 := $slt.i32($i38, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i39} true; + goto $bb13, $bb15; +$bb11: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 966, 7} true; + assume {:verifier.code 0} true; + assume !(($i36 == 1)); + goto $bb12; +$bb12: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 971, 7} true; + assume {:verifier.code 0} true; + $i46 := $sext.i8.i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 971, 9} true; + assume {:verifier.code 0} true; + $i47 := $srem.i32($i46, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 971, 7} true; + assume {:verifier.code 0} true; + $i48 := $trunc.i32.i8($i47); + call {:cexpr "a"} boogie_si_record_i8($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 972, 8} true; + assume {:verifier.code 0} true; + $i49 := $sext.i8.i32($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 972, 5} true; + assume {:verifier.code 0} true; + $i50 := $sext.i8.i32($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 972, 5} true; + assume {:verifier.code 0} true; + $i51 := $add.i32($i50, $i49); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 972, 5} true; + assume {:verifier.code 0} true; + $i52 := $trunc.i32.i8($i51); + call {:cexpr "a"} boogie_si_record_i8($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 973, 7} true; + assume {:verifier.code 0} true; + $i53 := $sext.i8.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 973, 9} true; + assume {:verifier.code 0} true; + $i54 := $srem.i32($i53, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 973, 7} true; + assume {:verifier.code 0} true; + $i55 := $trunc.i32.i8($i54); + call {:cexpr "b"} boogie_si_record_i8($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 974, 8} true; + assume {:verifier.code 0} true; + $i56 := $sext.i8.i32($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 974, 5} true; + assume {:verifier.code 0} true; + $i57 := $sext.i8.i32($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 974, 5} true; + assume {:verifier.code 0} true; + $i58 := $add.i32($i57, $i56); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 974, 5} true; + assume {:verifier.code 0} true; + $i59 := $trunc.i32.i8($i58); + call {:cexpr "b"} boogie_si_record_i8($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 976, 8} true; + assume {:verifier.code 0} true; + $i60 := $sext.i8.i32($i37); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 976, 5} true; + assume {:verifier.code 0} true; + $i61 := $sext.i8.i32($i37); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 976, 5} true; + assume {:verifier.code 0} true; + $i62 := $add.i32($i61, $i60); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 976, 5} true; + assume {:verifier.code 0} true; + $i63 := $trunc.i32.i8($i62); + call {:cexpr "c"} boogie_si_record_i8($i63); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 977, 7} true; + assume {:verifier.code 0} true; + $i64 := $sext.i8.i32($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 977, 9} true; + assume {:verifier.code 0} true; + $i65 := $slt.i32($i64, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 977, 7} true; + assume {:verifier.code 0} true; + $i66 := $i63; + assume {:branchcond $i65} true; + goto $bb19, $bb20; +$bb13: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 15} true; + assume {:verifier.code 0} true; + assume ($i39 == 1); + goto $bb14; +$bb14: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 968, 9} true; + assume {:verifier.code 0} true; + $i43 := $sext.i8.i32($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 968, 9} true; + assume {:verifier.code 0} true; + $i44 := $add.i32($i43, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 968, 9} true; + assume {:verifier.code 0} true; + $i45 := $trunc.i32.i8($i44); + call {:cexpr "c"} boogie_si_record_i8($i45); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 969, 5} true; + assume {:verifier.code 0} true; + $i42 := $i45; + goto $bb18; +$bb15: + assume !(($i39 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 18} true; + assume {:verifier.code 0} true; + $i40 := $sext.i8.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 20} true; + assume {:verifier.code 0} true; + $i41 := $sgt.i32($i40, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 9} true; + assume {:verifier.code 0} true; + $i42 := $i34; + assume {:branchcond $i41} true; + goto $bb16, $bb17; +$bb16: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 9} true; + assume {:verifier.code 0} true; + assume ($i41 == 1); + goto $bb14; +$bb17: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 9} true; + assume {:verifier.code 0} true; + assume !(($i41 == 1)); + goto $bb18; +$bb18: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 970, 3} true; + assume {:verifier.code 0} true; + $i37 := $i42; + goto $bb12; +$bb19: + assume ($i65 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 9} true; + assume {:verifier.code 0} true; + $i67 := $sext.i8.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 11} true; + assume {:verifier.code 0} true; + $i68 := $slt.i32($i67, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i68} true; + goto $bb22, $bb24; +$bb20: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 977, 7} true; + assume {:verifier.code 0} true; + assume !(($i65 == 1)); + goto $bb21; +$bb21: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 982, 7} true; + assume {:verifier.code 0} true; + $i75 := $sext.i8.i32($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 982, 9} true; + assume {:verifier.code 0} true; + $i76 := $srem.i32($i75, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 982, 7} true; + assume {:verifier.code 0} true; + $i77 := $trunc.i32.i8($i76); + call {:cexpr "a"} boogie_si_record_i8($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 983, 8} true; + assume {:verifier.code 0} true; + $i78 := $sext.i8.i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 983, 5} true; + assume {:verifier.code 0} true; + $i79 := $sext.i8.i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 983, 5} true; + assume {:verifier.code 0} true; + $i80 := $add.i32($i79, $i78); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 983, 5} true; + assume {:verifier.code 0} true; + $i81 := $trunc.i32.i8($i80); + call {:cexpr "a"} boogie_si_record_i8($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 984, 7} true; + assume {:verifier.code 0} true; + $i82 := $sext.i8.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 984, 9} true; + assume {:verifier.code 0} true; + $i83 := $srem.i32($i82, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 984, 7} true; + assume {:verifier.code 0} true; + $i84 := $trunc.i32.i8($i83); + call {:cexpr "b"} boogie_si_record_i8($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 985, 8} true; + assume {:verifier.code 0} true; + $i85 := $sext.i8.i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 985, 5} true; + assume {:verifier.code 0} true; + $i86 := $sext.i8.i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 985, 5} true; + assume {:verifier.code 0} true; + $i87 := $add.i32($i86, $i85); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 985, 5} true; + assume {:verifier.code 0} true; + $i88 := $trunc.i32.i8($i87); + call {:cexpr "b"} boogie_si_record_i8($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 987, 8} true; + assume {:verifier.code 0} true; + $i89 := $sext.i8.i32($i66); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 987, 5} true; + assume {:verifier.code 0} true; + $i90 := $sext.i8.i32($i66); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 987, 5} true; + assume {:verifier.code 0} true; + $i91 := $add.i32($i90, $i89); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 987, 5} true; + assume {:verifier.code 0} true; + $i92 := $trunc.i32.i8($i91); + call {:cexpr "c"} boogie_si_record_i8($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 988, 7} true; + assume {:verifier.code 0} true; + $i93 := $sext.i8.i32($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 988, 9} true; + assume {:verifier.code 0} true; + $i94 := $slt.i32($i93, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 988, 7} true; + assume {:verifier.code 0} true; + $i95 := $i92; + assume {:branchcond $i94} true; + goto $bb28, $bb29; +$bb22: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 15} true; + assume {:verifier.code 0} true; + assume ($i68 == 1); + goto $bb23; +$bb23: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 979, 9} true; + assume {:verifier.code 0} true; + $i72 := $sext.i8.i32($i63); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 979, 9} true; + assume {:verifier.code 0} true; + $i73 := $add.i32($i72, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 979, 9} true; + assume {:verifier.code 0} true; + $i74 := $trunc.i32.i8($i73); + call {:cexpr "c"} boogie_si_record_i8($i74); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 980, 5} true; + assume {:verifier.code 0} true; + $i71 := $i74; + goto $bb27; +$bb24: + assume !(($i68 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 18} true; + assume {:verifier.code 0} true; + $i69 := $sext.i8.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 20} true; + assume {:verifier.code 0} true; + $i70 := $sgt.i32($i69, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 9} true; + assume {:verifier.code 0} true; + $i71 := $i63; + assume {:branchcond $i70} true; + goto $bb25, $bb26; +$bb25: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 9} true; + assume {:verifier.code 0} true; + assume ($i70 == 1); + goto $bb23; +$bb26: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 9} true; + assume {:verifier.code 0} true; + assume !(($i70 == 1)); + goto $bb27; +$bb27: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 981, 3} true; + assume {:verifier.code 0} true; + $i66 := $i71; + goto $bb21; +$bb28: + assume ($i94 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 9} true; + assume {:verifier.code 0} true; + $i96 := $sext.i8.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 11} true; + assume {:verifier.code 0} true; + $i97 := $slt.i32($i96, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i97} true; + goto $bb31, $bb33; +$bb29: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 988, 7} true; + assume {:verifier.code 0} true; + assume !(($i94 == 1)); + goto $bb30; +$bb30: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 993, 7} true; + assume {:verifier.code 0} true; + $i104 := $sext.i8.i32($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 993, 9} true; + assume {:verifier.code 0} true; + $i105 := $srem.i32($i104, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 993, 7} true; + assume {:verifier.code 0} true; + $i106 := $trunc.i32.i8($i105); + call {:cexpr "a"} boogie_si_record_i8($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 994, 8} true; + assume {:verifier.code 0} true; + $i107 := $sext.i8.i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 994, 5} true; + assume {:verifier.code 0} true; + $i108 := $sext.i8.i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 994, 5} true; + assume {:verifier.code 0} true; + $i109 := $add.i32($i108, $i107); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 994, 5} true; + assume {:verifier.code 0} true; + $i110 := $trunc.i32.i8($i109); + call {:cexpr "a"} boogie_si_record_i8($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 995, 7} true; + assume {:verifier.code 0} true; + $i111 := $sext.i8.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 995, 9} true; + assume {:verifier.code 0} true; + $i112 := $srem.i32($i111, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 995, 7} true; + assume {:verifier.code 0} true; + $i113 := $trunc.i32.i8($i112); + call {:cexpr "b"} boogie_si_record_i8($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 996, 8} true; + assume {:verifier.code 0} true; + $i114 := $sext.i8.i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 996, 5} true; + assume {:verifier.code 0} true; + $i115 := $sext.i8.i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 996, 5} true; + assume {:verifier.code 0} true; + $i116 := $add.i32($i115, $i114); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 996, 5} true; + assume {:verifier.code 0} true; + $i117 := $trunc.i32.i8($i116); + call {:cexpr "b"} boogie_si_record_i8($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 998, 8} true; + assume {:verifier.code 0} true; + $i118 := $sext.i8.i32($i95); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 998, 5} true; + assume {:verifier.code 0} true; + $i119 := $sext.i8.i32($i95); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 998, 5} true; + assume {:verifier.code 0} true; + $i120 := $add.i32($i119, $i118); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 998, 5} true; + assume {:verifier.code 0} true; + $i121 := $trunc.i32.i8($i120); + call {:cexpr "c"} boogie_si_record_i8($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 999, 7} true; + assume {:verifier.code 0} true; + $i122 := $sext.i8.i32($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 999, 9} true; + assume {:verifier.code 0} true; + $i123 := $slt.i32($i122, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 999, 7} true; + assume {:verifier.code 0} true; + $i124 := $i121; + assume {:branchcond $i123} true; + goto $bb37, $bb38; +$bb31: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 15} true; + assume {:verifier.code 0} true; + assume ($i97 == 1); + goto $bb32; +$bb32: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 990, 9} true; + assume {:verifier.code 0} true; + $i101 := $sext.i8.i32($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 990, 9} true; + assume {:verifier.code 0} true; + $i102 := $add.i32($i101, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 990, 9} true; + assume {:verifier.code 0} true; + $i103 := $trunc.i32.i8($i102); + call {:cexpr "c"} boogie_si_record_i8($i103); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 991, 5} true; + assume {:verifier.code 0} true; + $i100 := $i103; + goto $bb36; +$bb33: + assume !(($i97 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 18} true; + assume {:verifier.code 0} true; + $i98 := $sext.i8.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 20} true; + assume {:verifier.code 0} true; + $i99 := $sgt.i32($i98, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 9} true; + assume {:verifier.code 0} true; + $i100 := $i92; + assume {:branchcond $i99} true; + goto $bb34, $bb35; +$bb34: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 9} true; + assume {:verifier.code 0} true; + assume ($i99 == 1); + goto $bb32; +$bb35: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 9} true; + assume {:verifier.code 0} true; + assume !(($i99 == 1)); + goto $bb36; +$bb36: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 992, 3} true; + assume {:verifier.code 0} true; + $i95 := $i100; + goto $bb30; +$bb37: + assume ($i123 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 9} true; + assume {:verifier.code 0} true; + $i125 := $sext.i8.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 11} true; + assume {:verifier.code 0} true; + $i126 := $slt.i32($i125, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i126} true; + goto $bb40, $bb42; +$bb38: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 999, 7} true; + assume {:verifier.code 0} true; + assume !(($i123 == 1)); + goto $bb39; +$bb39: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1004, 7} true; + assume {:verifier.code 0} true; + $i133 := $sext.i8.i32($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1004, 9} true; + assume {:verifier.code 0} true; + $i134 := $srem.i32($i133, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1004, 7} true; + assume {:verifier.code 0} true; + $i135 := $trunc.i32.i8($i134); + call {:cexpr "a"} boogie_si_record_i8($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1005, 8} true; + assume {:verifier.code 0} true; + $i136 := $sext.i8.i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1005, 5} true; + assume {:verifier.code 0} true; + $i137 := $sext.i8.i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1005, 5} true; + assume {:verifier.code 0} true; + $i138 := $add.i32($i137, $i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1005, 5} true; + assume {:verifier.code 0} true; + $i139 := $trunc.i32.i8($i138); + call {:cexpr "a"} boogie_si_record_i8($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1006, 7} true; + assume {:verifier.code 0} true; + $i140 := $sext.i8.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1006, 9} true; + assume {:verifier.code 0} true; + $i141 := $srem.i32($i140, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1006, 7} true; + assume {:verifier.code 0} true; + $i142 := $trunc.i32.i8($i141); + call {:cexpr "b"} boogie_si_record_i8($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1007, 8} true; + assume {:verifier.code 0} true; + $i143 := $sext.i8.i32($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1007, 5} true; + assume {:verifier.code 0} true; + $i144 := $sext.i8.i32($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1007, 5} true; + assume {:verifier.code 0} true; + $i145 := $add.i32($i144, $i143); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1007, 5} true; + assume {:verifier.code 0} true; + $i146 := $trunc.i32.i8($i145); + call {:cexpr "b"} boogie_si_record_i8($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1009, 8} true; + assume {:verifier.code 0} true; + $i147 := $sext.i8.i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1009, 5} true; + assume {:verifier.code 0} true; + $i148 := $sext.i8.i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1009, 5} true; + assume {:verifier.code 0} true; + $i149 := $add.i32($i148, $i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1009, 5} true; + assume {:verifier.code 0} true; + $i150 := $trunc.i32.i8($i149); + call {:cexpr "c"} boogie_si_record_i8($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1010, 7} true; + assume {:verifier.code 0} true; + $i151 := $sext.i8.i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1010, 9} true; + assume {:verifier.code 0} true; + $i152 := $slt.i32($i151, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1010, 7} true; + assume {:verifier.code 0} true; + $i153 := $i150; + assume {:branchcond $i152} true; + goto $bb46, $bb47; +$bb40: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 15} true; + assume {:verifier.code 0} true; + assume ($i126 == 1); + goto $bb41; +$bb41: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1001, 9} true; + assume {:verifier.code 0} true; + $i130 := $sext.i8.i32($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1001, 9} true; + assume {:verifier.code 0} true; + $i131 := $add.i32($i130, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1001, 9} true; + assume {:verifier.code 0} true; + $i132 := $trunc.i32.i8($i131); + call {:cexpr "c"} boogie_si_record_i8($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1002, 5} true; + assume {:verifier.code 0} true; + $i129 := $i132; + goto $bb45; +$bb42: + assume !(($i126 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 18} true; + assume {:verifier.code 0} true; + $i127 := $sext.i8.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 20} true; + assume {:verifier.code 0} true; + $i128 := $sgt.i32($i127, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 9} true; + assume {:verifier.code 0} true; + $i129 := $i121; + assume {:branchcond $i128} true; + goto $bb43, $bb44; +$bb43: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 9} true; + assume {:verifier.code 0} true; + assume ($i128 == 1); + goto $bb41; +$bb44: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 9} true; + assume {:verifier.code 0} true; + assume !(($i128 == 1)); + goto $bb45; +$bb45: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1003, 3} true; + assume {:verifier.code 0} true; + $i124 := $i129; + goto $bb39; +$bb46: + assume ($i152 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 9} true; + assume {:verifier.code 0} true; + $i154 := $sext.i8.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 11} true; + assume {:verifier.code 0} true; + $i155 := $slt.i32($i154, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i155} true; + goto $bb49, $bb51; +$bb47: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1010, 7} true; + assume {:verifier.code 0} true; + assume !(($i152 == 1)); + goto $bb48; +$bb48: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1015, 7} true; + assume {:verifier.code 0} true; + $i162 := $sext.i8.i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1015, 9} true; + assume {:verifier.code 0} true; + $i163 := $srem.i32($i162, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1015, 7} true; + assume {:verifier.code 0} true; + $i164 := $trunc.i32.i8($i163); + call {:cexpr "a"} boogie_si_record_i8($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1016, 8} true; + assume {:verifier.code 0} true; + $i165 := $sext.i8.i32($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1016, 5} true; + assume {:verifier.code 0} true; + $i166 := $sext.i8.i32($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1016, 5} true; + assume {:verifier.code 0} true; + $i167 := $add.i32($i166, $i165); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1016, 5} true; + assume {:verifier.code 0} true; + $i168 := $trunc.i32.i8($i167); + call {:cexpr "a"} boogie_si_record_i8($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1017, 7} true; + assume {:verifier.code 0} true; + $i169 := $sext.i8.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1017, 9} true; + assume {:verifier.code 0} true; + $i170 := $srem.i32($i169, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1017, 7} true; + assume {:verifier.code 0} true; + $i171 := $trunc.i32.i8($i170); + call {:cexpr "b"} boogie_si_record_i8($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1018, 8} true; + assume {:verifier.code 0} true; + $i172 := $sext.i8.i32($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1018, 5} true; + assume {:verifier.code 0} true; + $i173 := $sext.i8.i32($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1018, 5} true; + assume {:verifier.code 0} true; + $i174 := $add.i32($i173, $i172); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1018, 5} true; + assume {:verifier.code 0} true; + $i175 := $trunc.i32.i8($i174); + call {:cexpr "b"} boogie_si_record_i8($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1020, 8} true; + assume {:verifier.code 0} true; + $i176 := $sext.i8.i32($i153); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1020, 5} true; + assume {:verifier.code 0} true; + $i177 := $sext.i8.i32($i153); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1020, 5} true; + assume {:verifier.code 0} true; + $i178 := $add.i32($i177, $i176); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1020, 5} true; + assume {:verifier.code 0} true; + $i179 := $trunc.i32.i8($i178); + call {:cexpr "c"} boogie_si_record_i8($i179); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1021, 7} true; + assume {:verifier.code 0} true; + $i180 := $sext.i8.i32($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1021, 9} true; + assume {:verifier.code 0} true; + $i181 := $slt.i32($i180, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1021, 7} true; + assume {:verifier.code 0} true; + $i182 := $i179; + assume {:branchcond $i181} true; + goto $bb55, $bb56; +$bb49: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 15} true; + assume {:verifier.code 0} true; + assume ($i155 == 1); + goto $bb50; +$bb50: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1012, 9} true; + assume {:verifier.code 0} true; + $i159 := $sext.i8.i32($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1012, 9} true; + assume {:verifier.code 0} true; + $i160 := $add.i32($i159, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1012, 9} true; + assume {:verifier.code 0} true; + $i161 := $trunc.i32.i8($i160); + call {:cexpr "c"} boogie_si_record_i8($i161); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1013, 5} true; + assume {:verifier.code 0} true; + $i158 := $i161; + goto $bb54; +$bb51: + assume !(($i155 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 18} true; + assume {:verifier.code 0} true; + $i156 := $sext.i8.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 20} true; + assume {:verifier.code 0} true; + $i157 := $sgt.i32($i156, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 9} true; + assume {:verifier.code 0} true; + $i158 := $i150; + assume {:branchcond $i157} true; + goto $bb52, $bb53; +$bb52: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 9} true; + assume {:verifier.code 0} true; + assume ($i157 == 1); + goto $bb50; +$bb53: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 9} true; + assume {:verifier.code 0} true; + assume !(($i157 == 1)); + goto $bb54; +$bb54: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1014, 3} true; + assume {:verifier.code 0} true; + $i153 := $i158; + goto $bb48; +$bb55: + assume ($i181 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 9} true; + assume {:verifier.code 0} true; + $i183 := $sext.i8.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 11} true; + assume {:verifier.code 0} true; + $i184 := $slt.i32($i183, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i184} true; + goto $bb58, $bb60; +$bb56: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1021, 7} true; + assume {:verifier.code 0} true; + assume !(($i181 == 1)); + goto $bb57; +$bb57: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1026, 7} true; + assume {:verifier.code 0} true; + $i191 := $sext.i8.i32($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1026, 9} true; + assume {:verifier.code 0} true; + $i192 := $srem.i32($i191, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1026, 7} true; + assume {:verifier.code 0} true; + $i193 := $trunc.i32.i8($i192); + call {:cexpr "a"} boogie_si_record_i8($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1027, 8} true; + assume {:verifier.code 0} true; + $i194 := $sext.i8.i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1027, 5} true; + assume {:verifier.code 0} true; + $i195 := $sext.i8.i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1027, 5} true; + assume {:verifier.code 0} true; + $i196 := $add.i32($i195, $i194); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1027, 5} true; + assume {:verifier.code 0} true; + $i197 := $trunc.i32.i8($i196); + call {:cexpr "a"} boogie_si_record_i8($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1028, 7} true; + assume {:verifier.code 0} true; + $i198 := $sext.i8.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1028, 9} true; + assume {:verifier.code 0} true; + $i199 := $srem.i32($i198, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1028, 7} true; + assume {:verifier.code 0} true; + $i200 := $trunc.i32.i8($i199); + call {:cexpr "b"} boogie_si_record_i8($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1029, 8} true; + assume {:verifier.code 0} true; + $i201 := $sext.i8.i32($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1029, 5} true; + assume {:verifier.code 0} true; + $i202 := $sext.i8.i32($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1029, 5} true; + assume {:verifier.code 0} true; + $i203 := $add.i32($i202, $i201); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1029, 5} true; + assume {:verifier.code 0} true; + $i204 := $trunc.i32.i8($i203); + call {:cexpr "b"} boogie_si_record_i8($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1031, 8} true; + assume {:verifier.code 0} true; + $i205 := $sext.i8.i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1031, 5} true; + assume {:verifier.code 0} true; + $i206 := $sext.i8.i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1031, 5} true; + assume {:verifier.code 0} true; + $i207 := $add.i32($i206, $i205); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1031, 5} true; + assume {:verifier.code 0} true; + $i208 := $trunc.i32.i8($i207); + call {:cexpr "c"} boogie_si_record_i8($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1032, 7} true; + assume {:verifier.code 0} true; + $i209 := $sext.i8.i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1032, 9} true; + assume {:verifier.code 0} true; + $i210 := $slt.i32($i209, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1032, 7} true; + assume {:verifier.code 0} true; + $i211 := $i208; + assume {:branchcond $i210} true; + goto $bb64, $bb65; +$bb58: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 15} true; + assume {:verifier.code 0} true; + assume ($i184 == 1); + goto $bb59; +$bb59: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1023, 9} true; + assume {:verifier.code 0} true; + $i188 := $sext.i8.i32($i179); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1023, 9} true; + assume {:verifier.code 0} true; + $i189 := $add.i32($i188, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1023, 9} true; + assume {:verifier.code 0} true; + $i190 := $trunc.i32.i8($i189); + call {:cexpr "c"} boogie_si_record_i8($i190); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1024, 5} true; + assume {:verifier.code 0} true; + $i187 := $i190; + goto $bb63; +$bb60: + assume !(($i184 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 18} true; + assume {:verifier.code 0} true; + $i185 := $sext.i8.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 20} true; + assume {:verifier.code 0} true; + $i186 := $sgt.i32($i185, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 9} true; + assume {:verifier.code 0} true; + $i187 := $i179; + assume {:branchcond $i186} true; + goto $bb61, $bb62; +$bb61: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 9} true; + assume {:verifier.code 0} true; + assume ($i186 == 1); + goto $bb59; +$bb62: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 9} true; + assume {:verifier.code 0} true; + assume !(($i186 == 1)); + goto $bb63; +$bb63: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1025, 3} true; + assume {:verifier.code 0} true; + $i182 := $i187; + goto $bb57; +$bb64: + assume ($i210 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 9} true; + assume {:verifier.code 0} true; + $i212 := $sext.i8.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 11} true; + assume {:verifier.code 0} true; + $i213 := $slt.i32($i212, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i213} true; + goto $bb67, $bb69; +$bb65: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1032, 7} true; + assume {:verifier.code 0} true; + assume !(($i210 == 1)); + goto $bb66; +$bb66: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1042, 3} true; + assume {:verifier.code 0} true; + $r := $i211; + $exn := false; + return; +$bb67: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 15} true; + assume {:verifier.code 0} true; + assume ($i213 == 1); + goto $bb68; +$bb68: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1034, 9} true; + assume {:verifier.code 0} true; + $i217 := $sext.i8.i32($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1034, 9} true; + assume {:verifier.code 0} true; + $i218 := $add.i32($i217, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1034, 9} true; + assume {:verifier.code 0} true; + $i219 := $trunc.i32.i8($i218); + call {:cexpr "c"} boogie_si_record_i8($i219); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1035, 5} true; + assume {:verifier.code 0} true; + $i216 := $i219; + goto $bb72; +$bb69: + assume !(($i213 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 18} true; + assume {:verifier.code 0} true; + $i214 := $sext.i8.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 20} true; + assume {:verifier.code 0} true; + $i215 := $sgt.i32($i214, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 9} true; + assume {:verifier.code 0} true; + $i216 := $i208; + assume {:branchcond $i215} true; + goto $bb70, $bb71; +$bb70: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 9} true; + assume {:verifier.code 0} true; + assume ($i215 == 1); + goto $bb68; +$bb71: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 9} true; + assume {:verifier.code 0} true; + assume !(($i215 == 1)); + goto $bb72; +$bb72: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1036, 3} true; + assume {:verifier.code 0} true; + $i211 := $i216; + goto $bb66; +} +const __SMACK_or32: ref; +axiom (__SMACK_or32 == $sub.ref(0, 20636)); +procedure __SMACK_or32($i0: i32, $i1: i32) + returns ($r: i32) +{ + var $i2: i32; + var $i3: i1; + var $i4: i32; + var $i6: i1; + var $i8: i32; + var $i7: i32; + var $i5: i32; + var $i9: i32; + var $i10: i64; + var $i11: i64; + var $i12: i32; + var $i13: i32; + var $i14: i64; + var $i15: i64; + var $i16: i32; + var $i17: i32; + var $i18: i1; + var $i19: i32; + var $i21: i1; + var $i23: i32; + var $i22: i32; + var $i20: i32; + var $i24: i32; + var $i25: i64; + var $i26: i64; + var $i27: i32; + var $i28: i32; + var $i29: i64; + var $i30: i64; + var $i31: i32; + var $i32: i32; + var $i33: i1; + var $i34: i32; + var $i36: i1; + var $i38: i32; + var $i37: i32; + var $i35: i32; + var $i39: i32; + var $i40: i64; + var $i41: i64; + var $i42: i32; + var $i43: i32; + var $i44: i64; + var $i45: i64; + var $i46: i32; + var $i47: i32; + var $i48: i1; + var $i49: i32; + var $i51: i1; + var $i53: i32; + var $i52: i32; + var $i50: i32; + var $i54: i32; + var $i55: i64; + var $i56: i64; + var $i57: i32; + var $i58: i32; + var $i59: i64; + var $i60: i64; + var $i61: i32; + var $i62: i32; + var $i63: i1; + var $i64: i32; + var $i66: i1; + var $i68: i32; + var $i67: i32; + var $i65: i32; + var $i69: i32; + var $i70: i64; + var $i71: i64; + var $i72: i32; + var $i73: i32; + var $i74: i64; + var $i75: i64; + var $i76: i32; + var $i77: i32; + var $i78: i1; + var $i79: i32; + var $i81: i1; + var $i83: i32; + var $i82: i32; + var $i80: i32; + var $i84: i32; + var $i85: i64; + var $i86: i64; + var $i87: i32; + var $i88: i32; + var $i89: i64; + var $i90: i64; + var $i91: i32; + var $i92: i32; + var $i93: i1; + var $i94: i32; + var $i96: i1; + var $i98: i32; + var $i97: i32; + var $i95: i32; + var $i99: i32; + var $i100: i64; + var $i101: i64; + var $i102: i32; + var $i103: i32; + var $i104: i64; + var $i105: i64; + var $i106: i32; + var $i107: i32; + var $i108: i1; + var $i109: i32; + var $i111: i1; + var $i113: i32; + var $i112: i32; + var $i110: i32; + var $i114: i32; + var $i115: i64; + var $i116: i64; + var $i117: i32; + var $i118: i32; + var $i119: i64; + var $i120: i64; + var $i121: i32; + var $i122: i32; + var $i123: i1; + var $i124: i32; + var $i126: i1; + var $i128: i32; + var $i127: i32; + var $i125: i32; + var $i129: i32; + var $i130: i64; + var $i131: i64; + var $i132: i32; + var $i133: i32; + var $i134: i64; + var $i135: i64; + var $i136: i32; + var $i137: i32; + var $i138: i1; + var $i139: i32; + var $i141: i1; + var $i143: i32; + var $i142: i32; + var $i140: i32; + var $i144: i32; + var $i145: i64; + var $i146: i64; + var $i147: i32; + var $i148: i32; + var $i149: i64; + var $i150: i64; + var $i151: i32; + var $i152: i32; + var $i153: i1; + var $i154: i32; + var $i156: i1; + var $i158: i32; + var $i157: i32; + var $i155: i32; + var $i159: i32; + var $i160: i64; + var $i161: i64; + var $i162: i32; + var $i163: i32; + var $i164: i64; + var $i165: i64; + var $i166: i32; + var $i167: i32; + var $i168: i1; + var $i169: i32; + var $i171: i1; + var $i173: i32; + var $i172: i32; + var $i170: i32; + var $i174: i32; + var $i175: i64; + var $i176: i64; + var $i177: i32; + var $i178: i32; + var $i179: i64; + var $i180: i64; + var $i181: i32; + var $i182: i32; + var $i183: i1; + var $i184: i32; + var $i186: i1; + var $i188: i32; + var $i187: i32; + var $i185: i32; + var $i189: i32; + var $i190: i64; + var $i191: i64; + var $i192: i32; + var $i193: i32; + var $i194: i64; + var $i195: i64; + var $i196: i32; + var $i197: i32; + var $i198: i1; + var $i199: i32; + var $i201: i1; + var $i203: i32; + var $i202: i32; + var $i200: i32; + var $i204: i32; + var $i205: i64; + var $i206: i64; + var $i207: i32; + var $i208: i32; + var $i209: i64; + var $i210: i64; + var $i211: i32; + var $i212: i32; + var $i213: i1; + var $i214: i32; + var $i216: i1; + var $i218: i32; + var $i217: i32; + var $i215: i32; + var $i219: i32; + var $i220: i64; + var $i221: i64; + var $i222: i32; + var $i223: i32; + var $i224: i64; + var $i225: i64; + var $i226: i32; + var $i227: i32; + var $i228: i1; + var $i229: i32; + var $i231: i1; + var $i233: i32; + var $i232: i32; + var $i230: i32; + var $i234: i32; + var $i235: i64; + var $i236: i64; + var $i237: i32; + var $i238: i32; + var $i239: i64; + var $i240: i64; + var $i241: i32; + var $i242: i32; + var $i243: i1; + var $i244: i32; + var $i246: i1; + var $i248: i32; + var $i247: i32; + var $i245: i32; + var $i249: i32; + var $i250: i64; + var $i251: i64; + var $i252: i32; + var $i253: i32; + var $i254: i64; + var $i255: i64; + var $i256: i32; + var $i257: i32; + var $i258: i1; + var $i259: i32; + var $i261: i1; + var $i263: i32; + var $i262: i32; + var $i260: i32; + var $i264: i32; + var $i265: i64; + var $i266: i64; + var $i267: i32; + var $i268: i32; + var $i269: i64; + var $i270: i64; + var $i271: i32; + var $i272: i32; + var $i273: i1; + var $i274: i32; + var $i276: i1; + var $i278: i32; + var $i277: i32; + var $i275: i32; + var $i279: i32; + var $i280: i64; + var $i281: i64; + var $i282: i32; + var $i283: i32; + var $i284: i64; + var $i285: i64; + var $i286: i32; + var $i287: i32; + var $i288: i1; + var $i289: i32; + var $i291: i1; + var $i293: i32; + var $i292: i32; + var $i290: i32; + var $i294: i32; + var $i295: i64; + var $i296: i64; + var $i297: i32; + var $i298: i32; + var $i299: i64; + var $i300: i64; + var $i301: i32; + var $i302: i32; + var $i303: i1; + var $i304: i32; + var $i306: i1; + var $i308: i32; + var $i307: i32; + var $i305: i32; + var $i309: i32; + var $i310: i64; + var $i311: i64; + var $i312: i32; + var $i313: i32; + var $i314: i64; + var $i315: i64; + var $i316: i32; + var $i317: i32; + var $i318: i1; + var $i319: i32; + var $i321: i1; + var $i323: i32; + var $i322: i32; + var $i320: i32; + var $i324: i32; + var $i325: i64; + var $i326: i64; + var $i327: i32; + var $i328: i32; + var $i329: i64; + var $i330: i64; + var $i331: i32; + var $i332: i32; + var $i333: i1; + var $i334: i32; + var $i336: i1; + var $i338: i32; + var $i337: i32; + var $i335: i32; + var $i339: i32; + var $i340: i64; + var $i341: i64; + var $i342: i32; + var $i343: i32; + var $i344: i64; + var $i345: i64; + var $i346: i32; + var $i347: i32; + var $i348: i1; + var $i349: i32; + var $i351: i1; + var $i353: i32; + var $i352: i32; + var $i350: i32; + var $i354: i32; + var $i355: i64; + var $i356: i64; + var $i357: i32; + var $i358: i32; + var $i359: i64; + var $i360: i64; + var $i361: i32; + var $i362: i32; + var $i363: i1; + var $i364: i32; + var $i366: i1; + var $i368: i32; + var $i367: i32; + var $i365: i32; + var $i369: i32; + var $i370: i64; + var $i371: i64; + var $i372: i32; + var $i373: i32; + var $i374: i64; + var $i375: i64; + var $i376: i32; + var $i377: i32; + var $i378: i1; + var $i379: i32; + var $i381: i1; + var $i383: i32; + var $i382: i32; + var $i380: i32; + var $i384: i32; + var $i385: i64; + var $i386: i64; + var $i387: i32; + var $i388: i32; + var $i389: i64; + var $i390: i64; + var $i391: i32; + var $i392: i32; + var $i393: i1; + var $i394: i32; + var $i396: i1; + var $i398: i32; + var $i397: i32; + var $i395: i32; + var $i399: i32; + var $i400: i64; + var $i401: i64; + var $i402: i32; + var $i403: i32; + var $i404: i64; + var $i405: i64; + var $i406: i32; + var $i407: i32; + var $i408: i1; + var $i409: i32; + var $i411: i1; + var $i413: i32; + var $i412: i32; + var $i410: i32; + var $i414: i32; + var $i415: i64; + var $i416: i64; + var $i417: i32; + var $i418: i32; + var $i419: i64; + var $i420: i64; + var $i421: i32; + var $i422: i32; + var $i423: i1; + var $i424: i32; + var $i426: i1; + var $i428: i32; + var $i427: i32; + var $i425: i32; + var $i429: i32; + var $i430: i64; + var $i431: i64; + var $i432: i32; + var $i433: i32; + var $i434: i64; + var $i435: i64; + var $i436: i32; + var $i437: i32; + var $i438: i1; + var $i439: i32; + var $i441: i1; + var $i443: i32; + var $i442: i32; + var $i440: i32; + var $i444: i32; + var $i445: i64; + var $i446: i64; + var $i447: i32; + var $i448: i32; + var $i449: i64; + var $i450: i64; + var $i451: i32; + var $i452: i32; + var $i453: i1; + var $i454: i32; + var $i456: i1; + var $i458: i32; + var $i457: i32; + var $i455: i32; + var $i459: i32; + var $i460: i64; + var $i461: i64; + var $i462: i32; + var $i463: i32; + var $i464: i64; + var $i465: i64; + var $i466: i32; + var $i467: i32; + var $i468: i1; + var $i469: i32; + var $i471: i1; + var $i473: i32; + var $i472: i32; + var $i470: i32; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1048, 5} true; + assume {:verifier.code 0} true; + call {:cexpr "__SMACK_or32:arg:a"} boogie_si_record_i32($i0); + call {:cexpr "__SMACK_or32:arg:b"} boogie_si_record_i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1048, 5} true; + assume {:verifier.code 0} true; + $i2 := $add.i32(0, 0); + call {:cexpr "c"} boogie_si_record_i32($i2); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1049, 9} true; + assume {:verifier.code 0} true; + $i3 := $slt.i32($i0, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1049, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i3} true; + goto $bb1, $bb2; +$bb1: + assume ($i3 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1050, 7} true; + assume {:verifier.code 0} true; + $i4 := $add.i32($i2, 1); + call {:cexpr "c"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1051, 3} true; + assume {:verifier.code 0} true; + $i5 := $i4; + goto $bb3; +$bb2: + assume !(($i3 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1051, 16} true; + assume {:verifier.code 0} true; + $i6 := $slt.i32($i1, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1051, 14} true; + assume {:verifier.code 0} true; + $i7 := $i2; + assume {:branchcond $i6} true; + goto $bb4, $bb5; +$bb3: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1054, 5} true; + assume {:verifier.code 0} true; + $i9 := $add.i32($i0, $i0); + call {:cexpr "a"} boogie_si_record_i32($i9); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1055, 7} true; + assume {:verifier.code 0} true; + $i10 := $sext.i32.i64($i9); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1055, 9} true; + assume {:verifier.code 0} true; + $i11 := $srem.i64($i10, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1055, 7} true; + assume {:verifier.code 0} true; + $i12 := $trunc.i64.i32($i11); + call {:cexpr "a"} boogie_si_record_i32($i12); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1056, 5} true; + assume {:verifier.code 0} true; + $i13 := $add.i32($i1, $i1); + call {:cexpr "b"} boogie_si_record_i32($i13); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1057, 7} true; + assume {:verifier.code 0} true; + $i14 := $sext.i32.i64($i13); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1057, 9} true; + assume {:verifier.code 0} true; + $i15 := $srem.i64($i14, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1057, 7} true; + assume {:verifier.code 0} true; + $i16 := $trunc.i64.i32($i15); + call {:cexpr "b"} boogie_si_record_i32($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1059, 5} true; + assume {:verifier.code 0} true; + $i17 := $add.i32($i5, $i5); + call {:cexpr "c"} boogie_si_record_i32($i17); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1060, 9} true; + assume {:verifier.code 0} true; + $i18 := $slt.i32($i12, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1060, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i18} true; + goto $bb7, $bb8; +$bb4: + assume ($i6 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1052, 7} true; + assume {:verifier.code 0} true; + $i8 := $add.i32($i2, 1); + call {:cexpr "c"} boogie_si_record_i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1053, 3} true; + assume {:verifier.code 0} true; + $i7 := $i8; + goto $bb6; +$bb5: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1051, 14} true; + assume {:verifier.code 0} true; + assume !(($i6 == 1)); + goto $bb6; +$bb6: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i5 := $i7; + goto $bb3; +$bb7: + assume ($i18 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1061, 7} true; + assume {:verifier.code 0} true; + $i19 := $add.i32($i17, 1); + call {:cexpr "c"} boogie_si_record_i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1062, 3} true; + assume {:verifier.code 0} true; + $i20 := $i19; + goto $bb9; +$bb8: + assume !(($i18 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1062, 16} true; + assume {:verifier.code 0} true; + $i21 := $slt.i32($i16, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1062, 14} true; + assume {:verifier.code 0} true; + $i22 := $i17; + assume {:branchcond $i21} true; + goto $bb10, $bb11; +$bb9: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1065, 5} true; + assume {:verifier.code 0} true; + $i24 := $add.i32($i12, $i12); + call {:cexpr "a"} boogie_si_record_i32($i24); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1066, 7} true; + assume {:verifier.code 0} true; + $i25 := $sext.i32.i64($i24); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1066, 9} true; + assume {:verifier.code 0} true; + $i26 := $srem.i64($i25, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1066, 7} true; + assume {:verifier.code 0} true; + $i27 := $trunc.i64.i32($i26); + call {:cexpr "a"} boogie_si_record_i32($i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1067, 5} true; + assume {:verifier.code 0} true; + $i28 := $add.i32($i16, $i16); + call {:cexpr "b"} boogie_si_record_i32($i28); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1068, 7} true; + assume {:verifier.code 0} true; + $i29 := $sext.i32.i64($i28); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1068, 9} true; + assume {:verifier.code 0} true; + $i30 := $srem.i64($i29, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1068, 7} true; + assume {:verifier.code 0} true; + $i31 := $trunc.i64.i32($i30); + call {:cexpr "b"} boogie_si_record_i32($i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1070, 5} true; + assume {:verifier.code 0} true; + $i32 := $add.i32($i20, $i20); + call {:cexpr "c"} boogie_si_record_i32($i32); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1071, 9} true; + assume {:verifier.code 0} true; + $i33 := $slt.i32($i27, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1071, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i33} true; + goto $bb13, $bb14; +$bb10: + assume ($i21 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1063, 7} true; + assume {:verifier.code 0} true; + $i23 := $add.i32($i17, 1); + call {:cexpr "c"} boogie_si_record_i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1064, 3} true; + assume {:verifier.code 0} true; + $i22 := $i23; + goto $bb12; +$bb11: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1062, 14} true; + assume {:verifier.code 0} true; + assume !(($i21 == 1)); + goto $bb12; +$bb12: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i20 := $i22; + goto $bb9; +$bb13: + assume ($i33 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1072, 7} true; + assume {:verifier.code 0} true; + $i34 := $add.i32($i32, 1); + call {:cexpr "c"} boogie_si_record_i32($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1073, 3} true; + assume {:verifier.code 0} true; + $i35 := $i34; + goto $bb15; +$bb14: + assume !(($i33 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1073, 16} true; + assume {:verifier.code 0} true; + $i36 := $slt.i32($i31, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1073, 14} true; + assume {:verifier.code 0} true; + $i37 := $i32; + assume {:branchcond $i36} true; + goto $bb16, $bb17; +$bb15: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1076, 5} true; + assume {:verifier.code 0} true; + $i39 := $add.i32($i27, $i27); + call {:cexpr "a"} boogie_si_record_i32($i39); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1077, 7} true; + assume {:verifier.code 0} true; + $i40 := $sext.i32.i64($i39); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1077, 9} true; + assume {:verifier.code 0} true; + $i41 := $srem.i64($i40, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1077, 7} true; + assume {:verifier.code 0} true; + $i42 := $trunc.i64.i32($i41); + call {:cexpr "a"} boogie_si_record_i32($i42); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1078, 5} true; + assume {:verifier.code 0} true; + $i43 := $add.i32($i31, $i31); + call {:cexpr "b"} boogie_si_record_i32($i43); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1079, 7} true; + assume {:verifier.code 0} true; + $i44 := $sext.i32.i64($i43); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1079, 9} true; + assume {:verifier.code 0} true; + $i45 := $srem.i64($i44, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1079, 7} true; + assume {:verifier.code 0} true; + $i46 := $trunc.i64.i32($i45); + call {:cexpr "b"} boogie_si_record_i32($i46); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1081, 5} true; + assume {:verifier.code 0} true; + $i47 := $add.i32($i35, $i35); + call {:cexpr "c"} boogie_si_record_i32($i47); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1082, 9} true; + assume {:verifier.code 0} true; + $i48 := $slt.i32($i42, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1082, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i48} true; + goto $bb19, $bb20; +$bb16: + assume ($i36 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1074, 7} true; + assume {:verifier.code 0} true; + $i38 := $add.i32($i32, 1); + call {:cexpr "c"} boogie_si_record_i32($i38); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1075, 3} true; + assume {:verifier.code 0} true; + $i37 := $i38; + goto $bb18; +$bb17: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1073, 14} true; + assume {:verifier.code 0} true; + assume !(($i36 == 1)); + goto $bb18; +$bb18: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i35 := $i37; + goto $bb15; +$bb19: + assume ($i48 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1083, 7} true; + assume {:verifier.code 0} true; + $i49 := $add.i32($i47, 1); + call {:cexpr "c"} boogie_si_record_i32($i49); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1084, 3} true; + assume {:verifier.code 0} true; + $i50 := $i49; + goto $bb21; +$bb20: + assume !(($i48 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1084, 16} true; + assume {:verifier.code 0} true; + $i51 := $slt.i32($i46, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1084, 14} true; + assume {:verifier.code 0} true; + $i52 := $i47; + assume {:branchcond $i51} true; + goto $bb22, $bb23; +$bb21: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1087, 5} true; + assume {:verifier.code 0} true; + $i54 := $add.i32($i42, $i42); + call {:cexpr "a"} boogie_si_record_i32($i54); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1088, 7} true; + assume {:verifier.code 0} true; + $i55 := $sext.i32.i64($i54); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1088, 9} true; + assume {:verifier.code 0} true; + $i56 := $srem.i64($i55, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1088, 7} true; + assume {:verifier.code 0} true; + $i57 := $trunc.i64.i32($i56); + call {:cexpr "a"} boogie_si_record_i32($i57); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1089, 5} true; + assume {:verifier.code 0} true; + $i58 := $add.i32($i46, $i46); + call {:cexpr "b"} boogie_si_record_i32($i58); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1090, 7} true; + assume {:verifier.code 0} true; + $i59 := $sext.i32.i64($i58); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1090, 9} true; + assume {:verifier.code 0} true; + $i60 := $srem.i64($i59, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1090, 7} true; + assume {:verifier.code 0} true; + $i61 := $trunc.i64.i32($i60); + call {:cexpr "b"} boogie_si_record_i32($i61); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1092, 5} true; + assume {:verifier.code 0} true; + $i62 := $add.i32($i50, $i50); + call {:cexpr "c"} boogie_si_record_i32($i62); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1093, 9} true; + assume {:verifier.code 0} true; + $i63 := $slt.i32($i57, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1093, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i63} true; + goto $bb25, $bb26; +$bb22: + assume ($i51 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1085, 7} true; + assume {:verifier.code 0} true; + $i53 := $add.i32($i47, 1); + call {:cexpr "c"} boogie_si_record_i32($i53); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1086, 3} true; + assume {:verifier.code 0} true; + $i52 := $i53; + goto $bb24; +$bb23: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1084, 14} true; + assume {:verifier.code 0} true; + assume !(($i51 == 1)); + goto $bb24; +$bb24: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i50 := $i52; + goto $bb21; +$bb25: + assume ($i63 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1094, 7} true; + assume {:verifier.code 0} true; + $i64 := $add.i32($i62, 1); + call {:cexpr "c"} boogie_si_record_i32($i64); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1095, 3} true; + assume {:verifier.code 0} true; + $i65 := $i64; + goto $bb27; +$bb26: + assume !(($i63 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1095, 16} true; + assume {:verifier.code 0} true; + $i66 := $slt.i32($i61, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1095, 14} true; + assume {:verifier.code 0} true; + $i67 := $i62; + assume {:branchcond $i66} true; + goto $bb28, $bb29; +$bb27: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1098, 5} true; + assume {:verifier.code 0} true; + $i69 := $add.i32($i57, $i57); + call {:cexpr "a"} boogie_si_record_i32($i69); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1099, 7} true; + assume {:verifier.code 0} true; + $i70 := $sext.i32.i64($i69); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1099, 9} true; + assume {:verifier.code 0} true; + $i71 := $srem.i64($i70, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1099, 7} true; + assume {:verifier.code 0} true; + $i72 := $trunc.i64.i32($i71); + call {:cexpr "a"} boogie_si_record_i32($i72); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1100, 5} true; + assume {:verifier.code 0} true; + $i73 := $add.i32($i61, $i61); + call {:cexpr "b"} boogie_si_record_i32($i73); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1101, 7} true; + assume {:verifier.code 0} true; + $i74 := $sext.i32.i64($i73); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1101, 9} true; + assume {:verifier.code 0} true; + $i75 := $srem.i64($i74, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1101, 7} true; + assume {:verifier.code 0} true; + $i76 := $trunc.i64.i32($i75); + call {:cexpr "b"} boogie_si_record_i32($i76); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1103, 5} true; + assume {:verifier.code 0} true; + $i77 := $add.i32($i65, $i65); + call {:cexpr "c"} boogie_si_record_i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1104, 9} true; + assume {:verifier.code 0} true; + $i78 := $slt.i32($i72, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1104, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i78} true; + goto $bb31, $bb32; +$bb28: + assume ($i66 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1096, 7} true; + assume {:verifier.code 0} true; + $i68 := $add.i32($i62, 1); + call {:cexpr "c"} boogie_si_record_i32($i68); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1097, 3} true; + assume {:verifier.code 0} true; + $i67 := $i68; + goto $bb30; +$bb29: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1095, 14} true; + assume {:verifier.code 0} true; + assume !(($i66 == 1)); + goto $bb30; +$bb30: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i65 := $i67; + goto $bb27; +$bb31: + assume ($i78 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1105, 7} true; + assume {:verifier.code 0} true; + $i79 := $add.i32($i77, 1); + call {:cexpr "c"} boogie_si_record_i32($i79); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1106, 3} true; + assume {:verifier.code 0} true; + $i80 := $i79; + goto $bb33; +$bb32: + assume !(($i78 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1106, 16} true; + assume {:verifier.code 0} true; + $i81 := $slt.i32($i76, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1106, 14} true; + assume {:verifier.code 0} true; + $i82 := $i77; + assume {:branchcond $i81} true; + goto $bb34, $bb35; +$bb33: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1109, 5} true; + assume {:verifier.code 0} true; + $i84 := $add.i32($i72, $i72); + call {:cexpr "a"} boogie_si_record_i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1110, 7} true; + assume {:verifier.code 0} true; + $i85 := $sext.i32.i64($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1110, 9} true; + assume {:verifier.code 0} true; + $i86 := $srem.i64($i85, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1110, 7} true; + assume {:verifier.code 0} true; + $i87 := $trunc.i64.i32($i86); + call {:cexpr "a"} boogie_si_record_i32($i87); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1111, 5} true; + assume {:verifier.code 0} true; + $i88 := $add.i32($i76, $i76); + call {:cexpr "b"} boogie_si_record_i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1112, 7} true; + assume {:verifier.code 0} true; + $i89 := $sext.i32.i64($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1112, 9} true; + assume {:verifier.code 0} true; + $i90 := $srem.i64($i89, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1112, 7} true; + assume {:verifier.code 0} true; + $i91 := $trunc.i64.i32($i90); + call {:cexpr "b"} boogie_si_record_i32($i91); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1114, 5} true; + assume {:verifier.code 0} true; + $i92 := $add.i32($i80, $i80); + call {:cexpr "c"} boogie_si_record_i32($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1115, 9} true; + assume {:verifier.code 0} true; + $i93 := $slt.i32($i87, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1115, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i93} true; + goto $bb37, $bb38; +$bb34: + assume ($i81 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1107, 7} true; + assume {:verifier.code 0} true; + $i83 := $add.i32($i77, 1); + call {:cexpr "c"} boogie_si_record_i32($i83); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1108, 3} true; + assume {:verifier.code 0} true; + $i82 := $i83; + goto $bb36; +$bb35: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1106, 14} true; + assume {:verifier.code 0} true; + assume !(($i81 == 1)); + goto $bb36; +$bb36: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i80 := $i82; + goto $bb33; +$bb37: + assume ($i93 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1116, 7} true; + assume {:verifier.code 0} true; + $i94 := $add.i32($i92, 1); + call {:cexpr "c"} boogie_si_record_i32($i94); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1117, 3} true; + assume {:verifier.code 0} true; + $i95 := $i94; + goto $bb39; +$bb38: + assume !(($i93 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1117, 16} true; + assume {:verifier.code 0} true; + $i96 := $slt.i32($i91, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1117, 14} true; + assume {:verifier.code 0} true; + $i97 := $i92; + assume {:branchcond $i96} true; + goto $bb40, $bb41; +$bb39: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1120, 5} true; + assume {:verifier.code 0} true; + $i99 := $add.i32($i87, $i87); + call {:cexpr "a"} boogie_si_record_i32($i99); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1121, 7} true; + assume {:verifier.code 0} true; + $i100 := $sext.i32.i64($i99); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1121, 9} true; + assume {:verifier.code 0} true; + $i101 := $srem.i64($i100, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1121, 7} true; + assume {:verifier.code 0} true; + $i102 := $trunc.i64.i32($i101); + call {:cexpr "a"} boogie_si_record_i32($i102); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1122, 5} true; + assume {:verifier.code 0} true; + $i103 := $add.i32($i91, $i91); + call {:cexpr "b"} boogie_si_record_i32($i103); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1123, 7} true; + assume {:verifier.code 0} true; + $i104 := $sext.i32.i64($i103); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1123, 9} true; + assume {:verifier.code 0} true; + $i105 := $srem.i64($i104, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1123, 7} true; + assume {:verifier.code 0} true; + $i106 := $trunc.i64.i32($i105); + call {:cexpr "b"} boogie_si_record_i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1125, 5} true; + assume {:verifier.code 0} true; + $i107 := $add.i32($i95, $i95); + call {:cexpr "c"} boogie_si_record_i32($i107); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1126, 9} true; + assume {:verifier.code 0} true; + $i108 := $slt.i32($i102, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1126, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i108} true; + goto $bb43, $bb44; +$bb40: + assume ($i96 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1118, 7} true; + assume {:verifier.code 0} true; + $i98 := $add.i32($i92, 1); + call {:cexpr "c"} boogie_si_record_i32($i98); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1119, 3} true; + assume {:verifier.code 0} true; + $i97 := $i98; + goto $bb42; +$bb41: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1117, 14} true; + assume {:verifier.code 0} true; + assume !(($i96 == 1)); + goto $bb42; +$bb42: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i95 := $i97; + goto $bb39; +$bb43: + assume ($i108 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1127, 7} true; + assume {:verifier.code 0} true; + $i109 := $add.i32($i107, 1); + call {:cexpr "c"} boogie_si_record_i32($i109); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1128, 3} true; + assume {:verifier.code 0} true; + $i110 := $i109; + goto $bb45; +$bb44: + assume !(($i108 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1128, 16} true; + assume {:verifier.code 0} true; + $i111 := $slt.i32($i106, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1128, 14} true; + assume {:verifier.code 0} true; + $i112 := $i107; + assume {:branchcond $i111} true; + goto $bb46, $bb47; +$bb45: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1131, 5} true; + assume {:verifier.code 0} true; + $i114 := $add.i32($i102, $i102); + call {:cexpr "a"} boogie_si_record_i32($i114); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1132, 7} true; + assume {:verifier.code 0} true; + $i115 := $sext.i32.i64($i114); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1132, 9} true; + assume {:verifier.code 0} true; + $i116 := $srem.i64($i115, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1132, 7} true; + assume {:verifier.code 0} true; + $i117 := $trunc.i64.i32($i116); + call {:cexpr "a"} boogie_si_record_i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1133, 5} true; + assume {:verifier.code 0} true; + $i118 := $add.i32($i106, $i106); + call {:cexpr "b"} boogie_si_record_i32($i118); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1134, 7} true; + assume {:verifier.code 0} true; + $i119 := $sext.i32.i64($i118); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1134, 9} true; + assume {:verifier.code 0} true; + $i120 := $srem.i64($i119, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1134, 7} true; + assume {:verifier.code 0} true; + $i121 := $trunc.i64.i32($i120); + call {:cexpr "b"} boogie_si_record_i32($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1136, 5} true; + assume {:verifier.code 0} true; + $i122 := $add.i32($i110, $i110); + call {:cexpr "c"} boogie_si_record_i32($i122); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1137, 9} true; + assume {:verifier.code 0} true; + $i123 := $slt.i32($i117, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1137, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i123} true; + goto $bb49, $bb50; +$bb46: + assume ($i111 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1129, 7} true; + assume {:verifier.code 0} true; + $i113 := $add.i32($i107, 1); + call {:cexpr "c"} boogie_si_record_i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1130, 3} true; + assume {:verifier.code 0} true; + $i112 := $i113; + goto $bb48; +$bb47: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1128, 14} true; + assume {:verifier.code 0} true; + assume !(($i111 == 1)); + goto $bb48; +$bb48: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i110 := $i112; + goto $bb45; +$bb49: + assume ($i123 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1138, 7} true; + assume {:verifier.code 0} true; + $i124 := $add.i32($i122, 1); + call {:cexpr "c"} boogie_si_record_i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1139, 3} true; + assume {:verifier.code 0} true; + $i125 := $i124; + goto $bb51; +$bb50: + assume !(($i123 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1139, 16} true; + assume {:verifier.code 0} true; + $i126 := $slt.i32($i121, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1139, 14} true; + assume {:verifier.code 0} true; + $i127 := $i122; + assume {:branchcond $i126} true; + goto $bb52, $bb53; +$bb51: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1142, 5} true; + assume {:verifier.code 0} true; + $i129 := $add.i32($i117, $i117); + call {:cexpr "a"} boogie_si_record_i32($i129); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1143, 7} true; + assume {:verifier.code 0} true; + $i130 := $sext.i32.i64($i129); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1143, 9} true; + assume {:verifier.code 0} true; + $i131 := $srem.i64($i130, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1143, 7} true; + assume {:verifier.code 0} true; + $i132 := $trunc.i64.i32($i131); + call {:cexpr "a"} boogie_si_record_i32($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1144, 5} true; + assume {:verifier.code 0} true; + $i133 := $add.i32($i121, $i121); + call {:cexpr "b"} boogie_si_record_i32($i133); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1145, 7} true; + assume {:verifier.code 0} true; + $i134 := $sext.i32.i64($i133); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1145, 9} true; + assume {:verifier.code 0} true; + $i135 := $srem.i64($i134, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1145, 7} true; + assume {:verifier.code 0} true; + $i136 := $trunc.i64.i32($i135); + call {:cexpr "b"} boogie_si_record_i32($i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1147, 5} true; + assume {:verifier.code 0} true; + $i137 := $add.i32($i125, $i125); + call {:cexpr "c"} boogie_si_record_i32($i137); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1148, 9} true; + assume {:verifier.code 0} true; + $i138 := $slt.i32($i132, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1148, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i138} true; + goto $bb55, $bb56; +$bb52: + assume ($i126 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1140, 7} true; + assume {:verifier.code 0} true; + $i128 := $add.i32($i122, 1); + call {:cexpr "c"} boogie_si_record_i32($i128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1141, 3} true; + assume {:verifier.code 0} true; + $i127 := $i128; + goto $bb54; +$bb53: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1139, 14} true; + assume {:verifier.code 0} true; + assume !(($i126 == 1)); + goto $bb54; +$bb54: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i125 := $i127; + goto $bb51; +$bb55: + assume ($i138 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1149, 7} true; + assume {:verifier.code 0} true; + $i139 := $add.i32($i137, 1); + call {:cexpr "c"} boogie_si_record_i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1150, 3} true; + assume {:verifier.code 0} true; + $i140 := $i139; + goto $bb57; +$bb56: + assume !(($i138 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1150, 16} true; + assume {:verifier.code 0} true; + $i141 := $slt.i32($i136, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1150, 14} true; + assume {:verifier.code 0} true; + $i142 := $i137; + assume {:branchcond $i141} true; + goto $bb58, $bb59; +$bb57: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1153, 5} true; + assume {:verifier.code 0} true; + $i144 := $add.i32($i132, $i132); + call {:cexpr "a"} boogie_si_record_i32($i144); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1154, 7} true; + assume {:verifier.code 0} true; + $i145 := $sext.i32.i64($i144); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1154, 9} true; + assume {:verifier.code 0} true; + $i146 := $srem.i64($i145, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1154, 7} true; + assume {:verifier.code 0} true; + $i147 := $trunc.i64.i32($i146); + call {:cexpr "a"} boogie_si_record_i32($i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1155, 5} true; + assume {:verifier.code 0} true; + $i148 := $add.i32($i136, $i136); + call {:cexpr "b"} boogie_si_record_i32($i148); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1156, 7} true; + assume {:verifier.code 0} true; + $i149 := $sext.i32.i64($i148); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1156, 9} true; + assume {:verifier.code 0} true; + $i150 := $srem.i64($i149, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1156, 7} true; + assume {:verifier.code 0} true; + $i151 := $trunc.i64.i32($i150); + call {:cexpr "b"} boogie_si_record_i32($i151); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1158, 5} true; + assume {:verifier.code 0} true; + $i152 := $add.i32($i140, $i140); + call {:cexpr "c"} boogie_si_record_i32($i152); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1159, 9} true; + assume {:verifier.code 0} true; + $i153 := $slt.i32($i147, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1159, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i153} true; + goto $bb61, $bb62; +$bb58: + assume ($i141 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1151, 7} true; + assume {:verifier.code 0} true; + $i143 := $add.i32($i137, 1); + call {:cexpr "c"} boogie_si_record_i32($i143); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1152, 3} true; + assume {:verifier.code 0} true; + $i142 := $i143; + goto $bb60; +$bb59: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1150, 14} true; + assume {:verifier.code 0} true; + assume !(($i141 == 1)); + goto $bb60; +$bb60: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i140 := $i142; + goto $bb57; +$bb61: + assume ($i153 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1160, 7} true; + assume {:verifier.code 0} true; + $i154 := $add.i32($i152, 1); + call {:cexpr "c"} boogie_si_record_i32($i154); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1161, 3} true; + assume {:verifier.code 0} true; + $i155 := $i154; + goto $bb63; +$bb62: + assume !(($i153 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1161, 16} true; + assume {:verifier.code 0} true; + $i156 := $slt.i32($i151, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1161, 14} true; + assume {:verifier.code 0} true; + $i157 := $i152; + assume {:branchcond $i156} true; + goto $bb64, $bb65; +$bb63: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1164, 5} true; + assume {:verifier.code 0} true; + $i159 := $add.i32($i147, $i147); + call {:cexpr "a"} boogie_si_record_i32($i159); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1165, 7} true; + assume {:verifier.code 0} true; + $i160 := $sext.i32.i64($i159); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1165, 9} true; + assume {:verifier.code 0} true; + $i161 := $srem.i64($i160, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1165, 7} true; + assume {:verifier.code 0} true; + $i162 := $trunc.i64.i32($i161); + call {:cexpr "a"} boogie_si_record_i32($i162); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1166, 5} true; + assume {:verifier.code 0} true; + $i163 := $add.i32($i151, $i151); + call {:cexpr "b"} boogie_si_record_i32($i163); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1167, 7} true; + assume {:verifier.code 0} true; + $i164 := $sext.i32.i64($i163); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1167, 9} true; + assume {:verifier.code 0} true; + $i165 := $srem.i64($i164, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1167, 7} true; + assume {:verifier.code 0} true; + $i166 := $trunc.i64.i32($i165); + call {:cexpr "b"} boogie_si_record_i32($i166); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1169, 5} true; + assume {:verifier.code 0} true; + $i167 := $add.i32($i155, $i155); + call {:cexpr "c"} boogie_si_record_i32($i167); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1170, 9} true; + assume {:verifier.code 0} true; + $i168 := $slt.i32($i162, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1170, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i168} true; + goto $bb67, $bb68; +$bb64: + assume ($i156 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1162, 7} true; + assume {:verifier.code 0} true; + $i158 := $add.i32($i152, 1); + call {:cexpr "c"} boogie_si_record_i32($i158); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1163, 3} true; + assume {:verifier.code 0} true; + $i157 := $i158; + goto $bb66; +$bb65: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1161, 14} true; + assume {:verifier.code 0} true; + assume !(($i156 == 1)); + goto $bb66; +$bb66: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i155 := $i157; + goto $bb63; +$bb67: + assume ($i168 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1171, 7} true; + assume {:verifier.code 0} true; + $i169 := $add.i32($i167, 1); + call {:cexpr "c"} boogie_si_record_i32($i169); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1172, 3} true; + assume {:verifier.code 0} true; + $i170 := $i169; + goto $bb69; +$bb68: + assume !(($i168 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1172, 16} true; + assume {:verifier.code 0} true; + $i171 := $slt.i32($i166, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1172, 14} true; + assume {:verifier.code 0} true; + $i172 := $i167; + assume {:branchcond $i171} true; + goto $bb70, $bb71; +$bb69: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1175, 5} true; + assume {:verifier.code 0} true; + $i174 := $add.i32($i162, $i162); + call {:cexpr "a"} boogie_si_record_i32($i174); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1176, 7} true; + assume {:verifier.code 0} true; + $i175 := $sext.i32.i64($i174); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1176, 9} true; + assume {:verifier.code 0} true; + $i176 := $srem.i64($i175, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1176, 7} true; + assume {:verifier.code 0} true; + $i177 := $trunc.i64.i32($i176); + call {:cexpr "a"} boogie_si_record_i32($i177); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1177, 5} true; + assume {:verifier.code 0} true; + $i178 := $add.i32($i166, $i166); + call {:cexpr "b"} boogie_si_record_i32($i178); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1178, 7} true; + assume {:verifier.code 0} true; + $i179 := $sext.i32.i64($i178); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1178, 9} true; + assume {:verifier.code 0} true; + $i180 := $srem.i64($i179, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1178, 7} true; + assume {:verifier.code 0} true; + $i181 := $trunc.i64.i32($i180); + call {:cexpr "b"} boogie_si_record_i32($i181); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1180, 5} true; + assume {:verifier.code 0} true; + $i182 := $add.i32($i170, $i170); + call {:cexpr "c"} boogie_si_record_i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1181, 9} true; + assume {:verifier.code 0} true; + $i183 := $slt.i32($i177, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1181, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i183} true; + goto $bb73, $bb74; +$bb70: + assume ($i171 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1173, 7} true; + assume {:verifier.code 0} true; + $i173 := $add.i32($i167, 1); + call {:cexpr "c"} boogie_si_record_i32($i173); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1174, 3} true; + assume {:verifier.code 0} true; + $i172 := $i173; + goto $bb72; +$bb71: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1172, 14} true; + assume {:verifier.code 0} true; + assume !(($i171 == 1)); + goto $bb72; +$bb72: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i170 := $i172; + goto $bb69; +$bb73: + assume ($i183 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1182, 7} true; + assume {:verifier.code 0} true; + $i184 := $add.i32($i182, 1); + call {:cexpr "c"} boogie_si_record_i32($i184); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1183, 3} true; + assume {:verifier.code 0} true; + $i185 := $i184; + goto $bb75; +$bb74: + assume !(($i183 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1183, 16} true; + assume {:verifier.code 0} true; + $i186 := $slt.i32($i181, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1183, 14} true; + assume {:verifier.code 0} true; + $i187 := $i182; + assume {:branchcond $i186} true; + goto $bb76, $bb77; +$bb75: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1186, 5} true; + assume {:verifier.code 0} true; + $i189 := $add.i32($i177, $i177); + call {:cexpr "a"} boogie_si_record_i32($i189); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1187, 7} true; + assume {:verifier.code 0} true; + $i190 := $sext.i32.i64($i189); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1187, 9} true; + assume {:verifier.code 0} true; + $i191 := $srem.i64($i190, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1187, 7} true; + assume {:verifier.code 0} true; + $i192 := $trunc.i64.i32($i191); + call {:cexpr "a"} boogie_si_record_i32($i192); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1188, 5} true; + assume {:verifier.code 0} true; + $i193 := $add.i32($i181, $i181); + call {:cexpr "b"} boogie_si_record_i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1189, 7} true; + assume {:verifier.code 0} true; + $i194 := $sext.i32.i64($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1189, 9} true; + assume {:verifier.code 0} true; + $i195 := $srem.i64($i194, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1189, 7} true; + assume {:verifier.code 0} true; + $i196 := $trunc.i64.i32($i195); + call {:cexpr "b"} boogie_si_record_i32($i196); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1191, 5} true; + assume {:verifier.code 0} true; + $i197 := $add.i32($i185, $i185); + call {:cexpr "c"} boogie_si_record_i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1192, 9} true; + assume {:verifier.code 0} true; + $i198 := $slt.i32($i192, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1192, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i198} true; + goto $bb79, $bb80; +$bb76: + assume ($i186 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1184, 7} true; + assume {:verifier.code 0} true; + $i188 := $add.i32($i182, 1); + call {:cexpr "c"} boogie_si_record_i32($i188); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1185, 3} true; + assume {:verifier.code 0} true; + $i187 := $i188; + goto $bb78; +$bb77: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1183, 14} true; + assume {:verifier.code 0} true; + assume !(($i186 == 1)); + goto $bb78; +$bb78: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i185 := $i187; + goto $bb75; +$bb79: + assume ($i198 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1193, 7} true; + assume {:verifier.code 0} true; + $i199 := $add.i32($i197, 1); + call {:cexpr "c"} boogie_si_record_i32($i199); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1194, 3} true; + assume {:verifier.code 0} true; + $i200 := $i199; + goto $bb81; +$bb80: + assume !(($i198 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1194, 16} true; + assume {:verifier.code 0} true; + $i201 := $slt.i32($i196, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1194, 14} true; + assume {:verifier.code 0} true; + $i202 := $i197; + assume {:branchcond $i201} true; + goto $bb82, $bb83; +$bb81: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1197, 5} true; + assume {:verifier.code 0} true; + $i204 := $add.i32($i192, $i192); + call {:cexpr "a"} boogie_si_record_i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1198, 7} true; + assume {:verifier.code 0} true; + $i205 := $sext.i32.i64($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1198, 9} true; + assume {:verifier.code 0} true; + $i206 := $srem.i64($i205, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1198, 7} true; + assume {:verifier.code 0} true; + $i207 := $trunc.i64.i32($i206); + call {:cexpr "a"} boogie_si_record_i32($i207); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1199, 5} true; + assume {:verifier.code 0} true; + $i208 := $add.i32($i196, $i196); + call {:cexpr "b"} boogie_si_record_i32($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1200, 7} true; + assume {:verifier.code 0} true; + $i209 := $sext.i32.i64($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1200, 9} true; + assume {:verifier.code 0} true; + $i210 := $srem.i64($i209, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1200, 7} true; + assume {:verifier.code 0} true; + $i211 := $trunc.i64.i32($i210); + call {:cexpr "b"} boogie_si_record_i32($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1202, 5} true; + assume {:verifier.code 0} true; + $i212 := $add.i32($i200, $i200); + call {:cexpr "c"} boogie_si_record_i32($i212); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1203, 9} true; + assume {:verifier.code 0} true; + $i213 := $slt.i32($i207, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1203, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i213} true; + goto $bb85, $bb86; +$bb82: + assume ($i201 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1195, 7} true; + assume {:verifier.code 0} true; + $i203 := $add.i32($i197, 1); + call {:cexpr "c"} boogie_si_record_i32($i203); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1196, 3} true; + assume {:verifier.code 0} true; + $i202 := $i203; + goto $bb84; +$bb83: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1194, 14} true; + assume {:verifier.code 0} true; + assume !(($i201 == 1)); + goto $bb84; +$bb84: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i200 := $i202; + goto $bb81; +$bb85: + assume ($i213 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1204, 7} true; + assume {:verifier.code 0} true; + $i214 := $add.i32($i212, 1); + call {:cexpr "c"} boogie_si_record_i32($i214); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1205, 3} true; + assume {:verifier.code 0} true; + $i215 := $i214; + goto $bb87; +$bb86: + assume !(($i213 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1205, 16} true; + assume {:verifier.code 0} true; + $i216 := $slt.i32($i211, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1205, 14} true; + assume {:verifier.code 0} true; + $i217 := $i212; + assume {:branchcond $i216} true; + goto $bb88, $bb89; +$bb87: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1208, 5} true; + assume {:verifier.code 0} true; + $i219 := $add.i32($i207, $i207); + call {:cexpr "a"} boogie_si_record_i32($i219); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1209, 7} true; + assume {:verifier.code 0} true; + $i220 := $sext.i32.i64($i219); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1209, 9} true; + assume {:verifier.code 0} true; + $i221 := $srem.i64($i220, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1209, 7} true; + assume {:verifier.code 0} true; + $i222 := $trunc.i64.i32($i221); + call {:cexpr "a"} boogie_si_record_i32($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1210, 5} true; + assume {:verifier.code 0} true; + $i223 := $add.i32($i211, $i211); + call {:cexpr "b"} boogie_si_record_i32($i223); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1211, 7} true; + assume {:verifier.code 0} true; + $i224 := $sext.i32.i64($i223); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1211, 9} true; + assume {:verifier.code 0} true; + $i225 := $srem.i64($i224, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1211, 7} true; + assume {:verifier.code 0} true; + $i226 := $trunc.i64.i32($i225); + call {:cexpr "b"} boogie_si_record_i32($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1213, 5} true; + assume {:verifier.code 0} true; + $i227 := $add.i32($i215, $i215); + call {:cexpr "c"} boogie_si_record_i32($i227); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1214, 9} true; + assume {:verifier.code 0} true; + $i228 := $slt.i32($i222, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1214, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i228} true; + goto $bb91, $bb92; +$bb88: + assume ($i216 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1206, 7} true; + assume {:verifier.code 0} true; + $i218 := $add.i32($i212, 1); + call {:cexpr "c"} boogie_si_record_i32($i218); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1207, 3} true; + assume {:verifier.code 0} true; + $i217 := $i218; + goto $bb90; +$bb89: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1205, 14} true; + assume {:verifier.code 0} true; + assume !(($i216 == 1)); + goto $bb90; +$bb90: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i215 := $i217; + goto $bb87; +$bb91: + assume ($i228 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1215, 7} true; + assume {:verifier.code 0} true; + $i229 := $add.i32($i227, 1); + call {:cexpr "c"} boogie_si_record_i32($i229); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1216, 3} true; + assume {:verifier.code 0} true; + $i230 := $i229; + goto $bb93; +$bb92: + assume !(($i228 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1216, 16} true; + assume {:verifier.code 0} true; + $i231 := $slt.i32($i226, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1216, 14} true; + assume {:verifier.code 0} true; + $i232 := $i227; + assume {:branchcond $i231} true; + goto $bb94, $bb95; +$bb93: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1219, 5} true; + assume {:verifier.code 0} true; + $i234 := $add.i32($i222, $i222); + call {:cexpr "a"} boogie_si_record_i32($i234); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1220, 7} true; + assume {:verifier.code 0} true; + $i235 := $sext.i32.i64($i234); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1220, 9} true; + assume {:verifier.code 0} true; + $i236 := $srem.i64($i235, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1220, 7} true; + assume {:verifier.code 0} true; + $i237 := $trunc.i64.i32($i236); + call {:cexpr "a"} boogie_si_record_i32($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1221, 5} true; + assume {:verifier.code 0} true; + $i238 := $add.i32($i226, $i226); + call {:cexpr "b"} boogie_si_record_i32($i238); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1222, 7} true; + assume {:verifier.code 0} true; + $i239 := $sext.i32.i64($i238); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1222, 9} true; + assume {:verifier.code 0} true; + $i240 := $srem.i64($i239, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1222, 7} true; + assume {:verifier.code 0} true; + $i241 := $trunc.i64.i32($i240); + call {:cexpr "b"} boogie_si_record_i32($i241); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1224, 5} true; + assume {:verifier.code 0} true; + $i242 := $add.i32($i230, $i230); + call {:cexpr "c"} boogie_si_record_i32($i242); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1225, 9} true; + assume {:verifier.code 0} true; + $i243 := $slt.i32($i237, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1225, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i243} true; + goto $bb97, $bb98; +$bb94: + assume ($i231 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1217, 7} true; + assume {:verifier.code 0} true; + $i233 := $add.i32($i227, 1); + call {:cexpr "c"} boogie_si_record_i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1218, 3} true; + assume {:verifier.code 0} true; + $i232 := $i233; + goto $bb96; +$bb95: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1216, 14} true; + assume {:verifier.code 0} true; + assume !(($i231 == 1)); + goto $bb96; +$bb96: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i230 := $i232; + goto $bb93; +$bb97: + assume ($i243 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1226, 7} true; + assume {:verifier.code 0} true; + $i244 := $add.i32($i242, 1); + call {:cexpr "c"} boogie_si_record_i32($i244); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1227, 3} true; + assume {:verifier.code 0} true; + $i245 := $i244; + goto $bb99; +$bb98: + assume !(($i243 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1227, 16} true; + assume {:verifier.code 0} true; + $i246 := $slt.i32($i241, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1227, 14} true; + assume {:verifier.code 0} true; + $i247 := $i242; + assume {:branchcond $i246} true; + goto $bb100, $bb101; +$bb99: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1230, 5} true; + assume {:verifier.code 0} true; + $i249 := $add.i32($i237, $i237); + call {:cexpr "a"} boogie_si_record_i32($i249); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1231, 7} true; + assume {:verifier.code 0} true; + $i250 := $sext.i32.i64($i249); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1231, 9} true; + assume {:verifier.code 0} true; + $i251 := $srem.i64($i250, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1231, 7} true; + assume {:verifier.code 0} true; + $i252 := $trunc.i64.i32($i251); + call {:cexpr "a"} boogie_si_record_i32($i252); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1232, 5} true; + assume {:verifier.code 0} true; + $i253 := $add.i32($i241, $i241); + call {:cexpr "b"} boogie_si_record_i32($i253); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1233, 7} true; + assume {:verifier.code 0} true; + $i254 := $sext.i32.i64($i253); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1233, 9} true; + assume {:verifier.code 0} true; + $i255 := $srem.i64($i254, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1233, 7} true; + assume {:verifier.code 0} true; + $i256 := $trunc.i64.i32($i255); + call {:cexpr "b"} boogie_si_record_i32($i256); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1235, 5} true; + assume {:verifier.code 0} true; + $i257 := $add.i32($i245, $i245); + call {:cexpr "c"} boogie_si_record_i32($i257); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1236, 9} true; + assume {:verifier.code 0} true; + $i258 := $slt.i32($i252, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1236, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i258} true; + goto $bb103, $bb104; +$bb100: + assume ($i246 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1228, 7} true; + assume {:verifier.code 0} true; + $i248 := $add.i32($i242, 1); + call {:cexpr "c"} boogie_si_record_i32($i248); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1229, 3} true; + assume {:verifier.code 0} true; + $i247 := $i248; + goto $bb102; +$bb101: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1227, 14} true; + assume {:verifier.code 0} true; + assume !(($i246 == 1)); + goto $bb102; +$bb102: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i245 := $i247; + goto $bb99; +$bb103: + assume ($i258 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1237, 7} true; + assume {:verifier.code 0} true; + $i259 := $add.i32($i257, 1); + call {:cexpr "c"} boogie_si_record_i32($i259); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1238, 3} true; + assume {:verifier.code 0} true; + $i260 := $i259; + goto $bb105; +$bb104: + assume !(($i258 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1238, 16} true; + assume {:verifier.code 0} true; + $i261 := $slt.i32($i256, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1238, 14} true; + assume {:verifier.code 0} true; + $i262 := $i257; + assume {:branchcond $i261} true; + goto $bb106, $bb107; +$bb105: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1241, 5} true; + assume {:verifier.code 0} true; + $i264 := $add.i32($i252, $i252); + call {:cexpr "a"} boogie_si_record_i32($i264); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1242, 7} true; + assume {:verifier.code 0} true; + $i265 := $sext.i32.i64($i264); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1242, 9} true; + assume {:verifier.code 0} true; + $i266 := $srem.i64($i265, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1242, 7} true; + assume {:verifier.code 0} true; + $i267 := $trunc.i64.i32($i266); + call {:cexpr "a"} boogie_si_record_i32($i267); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1243, 5} true; + assume {:verifier.code 0} true; + $i268 := $add.i32($i256, $i256); + call {:cexpr "b"} boogie_si_record_i32($i268); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1244, 7} true; + assume {:verifier.code 0} true; + $i269 := $sext.i32.i64($i268); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1244, 9} true; + assume {:verifier.code 0} true; + $i270 := $srem.i64($i269, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1244, 7} true; + assume {:verifier.code 0} true; + $i271 := $trunc.i64.i32($i270); + call {:cexpr "b"} boogie_si_record_i32($i271); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1246, 5} true; + assume {:verifier.code 0} true; + $i272 := $add.i32($i260, $i260); + call {:cexpr "c"} boogie_si_record_i32($i272); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1247, 9} true; + assume {:verifier.code 0} true; + $i273 := $slt.i32($i267, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1247, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i273} true; + goto $bb109, $bb110; +$bb106: + assume ($i261 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1239, 7} true; + assume {:verifier.code 0} true; + $i263 := $add.i32($i257, 1); + call {:cexpr "c"} boogie_si_record_i32($i263); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1240, 3} true; + assume {:verifier.code 0} true; + $i262 := $i263; + goto $bb108; +$bb107: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1238, 14} true; + assume {:verifier.code 0} true; + assume !(($i261 == 1)); + goto $bb108; +$bb108: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i260 := $i262; + goto $bb105; +$bb109: + assume ($i273 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1248, 7} true; + assume {:verifier.code 0} true; + $i274 := $add.i32($i272, 1); + call {:cexpr "c"} boogie_si_record_i32($i274); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1249, 3} true; + assume {:verifier.code 0} true; + $i275 := $i274; + goto $bb111; +$bb110: + assume !(($i273 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1249, 16} true; + assume {:verifier.code 0} true; + $i276 := $slt.i32($i271, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1249, 14} true; + assume {:verifier.code 0} true; + $i277 := $i272; + assume {:branchcond $i276} true; + goto $bb112, $bb113; +$bb111: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1252, 5} true; + assume {:verifier.code 0} true; + $i279 := $add.i32($i267, $i267); + call {:cexpr "a"} boogie_si_record_i32($i279); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1253, 7} true; + assume {:verifier.code 0} true; + $i280 := $sext.i32.i64($i279); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1253, 9} true; + assume {:verifier.code 0} true; + $i281 := $srem.i64($i280, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1253, 7} true; + assume {:verifier.code 0} true; + $i282 := $trunc.i64.i32($i281); + call {:cexpr "a"} boogie_si_record_i32($i282); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1254, 5} true; + assume {:verifier.code 0} true; + $i283 := $add.i32($i271, $i271); + call {:cexpr "b"} boogie_si_record_i32($i283); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1255, 7} true; + assume {:verifier.code 0} true; + $i284 := $sext.i32.i64($i283); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1255, 9} true; + assume {:verifier.code 0} true; + $i285 := $srem.i64($i284, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1255, 7} true; + assume {:verifier.code 0} true; + $i286 := $trunc.i64.i32($i285); + call {:cexpr "b"} boogie_si_record_i32($i286); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1257, 5} true; + assume {:verifier.code 0} true; + $i287 := $add.i32($i275, $i275); + call {:cexpr "c"} boogie_si_record_i32($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1258, 9} true; + assume {:verifier.code 0} true; + $i288 := $slt.i32($i282, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1258, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i288} true; + goto $bb115, $bb116; +$bb112: + assume ($i276 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1250, 7} true; + assume {:verifier.code 0} true; + $i278 := $add.i32($i272, 1); + call {:cexpr "c"} boogie_si_record_i32($i278); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1251, 3} true; + assume {:verifier.code 0} true; + $i277 := $i278; + goto $bb114; +$bb113: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1249, 14} true; + assume {:verifier.code 0} true; + assume !(($i276 == 1)); + goto $bb114; +$bb114: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i275 := $i277; + goto $bb111; +$bb115: + assume ($i288 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1259, 7} true; + assume {:verifier.code 0} true; + $i289 := $add.i32($i287, 1); + call {:cexpr "c"} boogie_si_record_i32($i289); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1260, 3} true; + assume {:verifier.code 0} true; + $i290 := $i289; + goto $bb117; +$bb116: + assume !(($i288 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1260, 16} true; + assume {:verifier.code 0} true; + $i291 := $slt.i32($i286, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1260, 14} true; + assume {:verifier.code 0} true; + $i292 := $i287; + assume {:branchcond $i291} true; + goto $bb118, $bb119; +$bb117: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1263, 5} true; + assume {:verifier.code 0} true; + $i294 := $add.i32($i282, $i282); + call {:cexpr "a"} boogie_si_record_i32($i294); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1264, 7} true; + assume {:verifier.code 0} true; + $i295 := $sext.i32.i64($i294); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1264, 9} true; + assume {:verifier.code 0} true; + $i296 := $srem.i64($i295, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1264, 7} true; + assume {:verifier.code 0} true; + $i297 := $trunc.i64.i32($i296); + call {:cexpr "a"} boogie_si_record_i32($i297); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1265, 5} true; + assume {:verifier.code 0} true; + $i298 := $add.i32($i286, $i286); + call {:cexpr "b"} boogie_si_record_i32($i298); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1266, 7} true; + assume {:verifier.code 0} true; + $i299 := $sext.i32.i64($i298); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1266, 9} true; + assume {:verifier.code 0} true; + $i300 := $srem.i64($i299, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1266, 7} true; + assume {:verifier.code 0} true; + $i301 := $trunc.i64.i32($i300); + call {:cexpr "b"} boogie_si_record_i32($i301); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1268, 5} true; + assume {:verifier.code 0} true; + $i302 := $add.i32($i290, $i290); + call {:cexpr "c"} boogie_si_record_i32($i302); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1269, 9} true; + assume {:verifier.code 0} true; + $i303 := $slt.i32($i297, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1269, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i303} true; + goto $bb121, $bb122; +$bb118: + assume ($i291 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1261, 7} true; + assume {:verifier.code 0} true; + $i293 := $add.i32($i287, 1); + call {:cexpr "c"} boogie_si_record_i32($i293); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1262, 3} true; + assume {:verifier.code 0} true; + $i292 := $i293; + goto $bb120; +$bb119: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1260, 14} true; + assume {:verifier.code 0} true; + assume !(($i291 == 1)); + goto $bb120; +$bb120: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i290 := $i292; + goto $bb117; +$bb121: + assume ($i303 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1270, 7} true; + assume {:verifier.code 0} true; + $i304 := $add.i32($i302, 1); + call {:cexpr "c"} boogie_si_record_i32($i304); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1271, 3} true; + assume {:verifier.code 0} true; + $i305 := $i304; + goto $bb123; +$bb122: + assume !(($i303 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1271, 16} true; + assume {:verifier.code 0} true; + $i306 := $slt.i32($i301, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1271, 14} true; + assume {:verifier.code 0} true; + $i307 := $i302; + assume {:branchcond $i306} true; + goto $bb124, $bb125; +$bb123: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1274, 5} true; + assume {:verifier.code 0} true; + $i309 := $add.i32($i297, $i297); + call {:cexpr "a"} boogie_si_record_i32($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1275, 7} true; + assume {:verifier.code 0} true; + $i310 := $sext.i32.i64($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1275, 9} true; + assume {:verifier.code 0} true; + $i311 := $srem.i64($i310, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1275, 7} true; + assume {:verifier.code 0} true; + $i312 := $trunc.i64.i32($i311); + call {:cexpr "a"} boogie_si_record_i32($i312); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1276, 5} true; + assume {:verifier.code 0} true; + $i313 := $add.i32($i301, $i301); + call {:cexpr "b"} boogie_si_record_i32($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1277, 7} true; + assume {:verifier.code 0} true; + $i314 := $sext.i32.i64($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1277, 9} true; + assume {:verifier.code 0} true; + $i315 := $srem.i64($i314, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1277, 7} true; + assume {:verifier.code 0} true; + $i316 := $trunc.i64.i32($i315); + call {:cexpr "b"} boogie_si_record_i32($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1279, 5} true; + assume {:verifier.code 0} true; + $i317 := $add.i32($i305, $i305); + call {:cexpr "c"} boogie_si_record_i32($i317); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1280, 9} true; + assume {:verifier.code 0} true; + $i318 := $slt.i32($i312, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1280, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i318} true; + goto $bb127, $bb128; +$bb124: + assume ($i306 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1272, 7} true; + assume {:verifier.code 0} true; + $i308 := $add.i32($i302, 1); + call {:cexpr "c"} boogie_si_record_i32($i308); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1273, 3} true; + assume {:verifier.code 0} true; + $i307 := $i308; + goto $bb126; +$bb125: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1271, 14} true; + assume {:verifier.code 0} true; + assume !(($i306 == 1)); + goto $bb126; +$bb126: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i305 := $i307; + goto $bb123; +$bb127: + assume ($i318 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1281, 7} true; + assume {:verifier.code 0} true; + $i319 := $add.i32($i317, 1); + call {:cexpr "c"} boogie_si_record_i32($i319); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1282, 3} true; + assume {:verifier.code 0} true; + $i320 := $i319; + goto $bb129; +$bb128: + assume !(($i318 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1282, 16} true; + assume {:verifier.code 0} true; + $i321 := $slt.i32($i316, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1282, 14} true; + assume {:verifier.code 0} true; + $i322 := $i317; + assume {:branchcond $i321} true; + goto $bb130, $bb131; +$bb129: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1285, 5} true; + assume {:verifier.code 0} true; + $i324 := $add.i32($i312, $i312); + call {:cexpr "a"} boogie_si_record_i32($i324); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1286, 7} true; + assume {:verifier.code 0} true; + $i325 := $sext.i32.i64($i324); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1286, 9} true; + assume {:verifier.code 0} true; + $i326 := $srem.i64($i325, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1286, 7} true; + assume {:verifier.code 0} true; + $i327 := $trunc.i64.i32($i326); + call {:cexpr "a"} boogie_si_record_i32($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1287, 5} true; + assume {:verifier.code 0} true; + $i328 := $add.i32($i316, $i316); + call {:cexpr "b"} boogie_si_record_i32($i328); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1288, 7} true; + assume {:verifier.code 0} true; + $i329 := $sext.i32.i64($i328); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1288, 9} true; + assume {:verifier.code 0} true; + $i330 := $srem.i64($i329, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1288, 7} true; + assume {:verifier.code 0} true; + $i331 := $trunc.i64.i32($i330); + call {:cexpr "b"} boogie_si_record_i32($i331); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1290, 5} true; + assume {:verifier.code 0} true; + $i332 := $add.i32($i320, $i320); + call {:cexpr "c"} boogie_si_record_i32($i332); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1291, 9} true; + assume {:verifier.code 0} true; + $i333 := $slt.i32($i327, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1291, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i333} true; + goto $bb133, $bb134; +$bb130: + assume ($i321 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1283, 7} true; + assume {:verifier.code 0} true; + $i323 := $add.i32($i317, 1); + call {:cexpr "c"} boogie_si_record_i32($i323); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1284, 3} true; + assume {:verifier.code 0} true; + $i322 := $i323; + goto $bb132; +$bb131: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1282, 14} true; + assume {:verifier.code 0} true; + assume !(($i321 == 1)); + goto $bb132; +$bb132: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i320 := $i322; + goto $bb129; +$bb133: + assume ($i333 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1292, 7} true; + assume {:verifier.code 0} true; + $i334 := $add.i32($i332, 1); + call {:cexpr "c"} boogie_si_record_i32($i334); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1293, 3} true; + assume {:verifier.code 0} true; + $i335 := $i334; + goto $bb135; +$bb134: + assume !(($i333 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1293, 16} true; + assume {:verifier.code 0} true; + $i336 := $slt.i32($i331, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1293, 14} true; + assume {:verifier.code 0} true; + $i337 := $i332; + assume {:branchcond $i336} true; + goto $bb136, $bb137; +$bb135: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1296, 5} true; + assume {:verifier.code 0} true; + $i339 := $add.i32($i327, $i327); + call {:cexpr "a"} boogie_si_record_i32($i339); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1297, 7} true; + assume {:verifier.code 0} true; + $i340 := $sext.i32.i64($i339); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1297, 9} true; + assume {:verifier.code 0} true; + $i341 := $srem.i64($i340, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1297, 7} true; + assume {:verifier.code 0} true; + $i342 := $trunc.i64.i32($i341); + call {:cexpr "a"} boogie_si_record_i32($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1298, 5} true; + assume {:verifier.code 0} true; + $i343 := $add.i32($i331, $i331); + call {:cexpr "b"} boogie_si_record_i32($i343); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1299, 7} true; + assume {:verifier.code 0} true; + $i344 := $sext.i32.i64($i343); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1299, 9} true; + assume {:verifier.code 0} true; + $i345 := $srem.i64($i344, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1299, 7} true; + assume {:verifier.code 0} true; + $i346 := $trunc.i64.i32($i345); + call {:cexpr "b"} boogie_si_record_i32($i346); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1301, 5} true; + assume {:verifier.code 0} true; + $i347 := $add.i32($i335, $i335); + call {:cexpr "c"} boogie_si_record_i32($i347); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1302, 9} true; + assume {:verifier.code 0} true; + $i348 := $slt.i32($i342, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1302, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i348} true; + goto $bb139, $bb140; +$bb136: + assume ($i336 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1294, 7} true; + assume {:verifier.code 0} true; + $i338 := $add.i32($i332, 1); + call {:cexpr "c"} boogie_si_record_i32($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1295, 3} true; + assume {:verifier.code 0} true; + $i337 := $i338; + goto $bb138; +$bb137: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1293, 14} true; + assume {:verifier.code 0} true; + assume !(($i336 == 1)); + goto $bb138; +$bb138: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i335 := $i337; + goto $bb135; +$bb139: + assume ($i348 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1303, 7} true; + assume {:verifier.code 0} true; + $i349 := $add.i32($i347, 1); + call {:cexpr "c"} boogie_si_record_i32($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1304, 3} true; + assume {:verifier.code 0} true; + $i350 := $i349; + goto $bb141; +$bb140: + assume !(($i348 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1304, 16} true; + assume {:verifier.code 0} true; + $i351 := $slt.i32($i346, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1304, 14} true; + assume {:verifier.code 0} true; + $i352 := $i347; + assume {:branchcond $i351} true; + goto $bb142, $bb143; +$bb141: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1307, 5} true; + assume {:verifier.code 0} true; + $i354 := $add.i32($i342, $i342); + call {:cexpr "a"} boogie_si_record_i32($i354); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1308, 7} true; + assume {:verifier.code 0} true; + $i355 := $sext.i32.i64($i354); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1308, 9} true; + assume {:verifier.code 0} true; + $i356 := $srem.i64($i355, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1308, 7} true; + assume {:verifier.code 0} true; + $i357 := $trunc.i64.i32($i356); + call {:cexpr "a"} boogie_si_record_i32($i357); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1309, 5} true; + assume {:verifier.code 0} true; + $i358 := $add.i32($i346, $i346); + call {:cexpr "b"} boogie_si_record_i32($i358); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1310, 7} true; + assume {:verifier.code 0} true; + $i359 := $sext.i32.i64($i358); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1310, 9} true; + assume {:verifier.code 0} true; + $i360 := $srem.i64($i359, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1310, 7} true; + assume {:verifier.code 0} true; + $i361 := $trunc.i64.i32($i360); + call {:cexpr "b"} boogie_si_record_i32($i361); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1312, 5} true; + assume {:verifier.code 0} true; + $i362 := $add.i32($i350, $i350); + call {:cexpr "c"} boogie_si_record_i32($i362); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1313, 9} true; + assume {:verifier.code 0} true; + $i363 := $slt.i32($i357, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1313, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i363} true; + goto $bb145, $bb146; +$bb142: + assume ($i351 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1305, 7} true; + assume {:verifier.code 0} true; + $i353 := $add.i32($i347, 1); + call {:cexpr "c"} boogie_si_record_i32($i353); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1306, 3} true; + assume {:verifier.code 0} true; + $i352 := $i353; + goto $bb144; +$bb143: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1304, 14} true; + assume {:verifier.code 0} true; + assume !(($i351 == 1)); + goto $bb144; +$bb144: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i350 := $i352; + goto $bb141; +$bb145: + assume ($i363 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1314, 7} true; + assume {:verifier.code 0} true; + $i364 := $add.i32($i362, 1); + call {:cexpr "c"} boogie_si_record_i32($i364); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1315, 3} true; + assume {:verifier.code 0} true; + $i365 := $i364; + goto $bb147; +$bb146: + assume !(($i363 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1315, 16} true; + assume {:verifier.code 0} true; + $i366 := $slt.i32($i361, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1315, 14} true; + assume {:verifier.code 0} true; + $i367 := $i362; + assume {:branchcond $i366} true; + goto $bb148, $bb149; +$bb147: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1318, 5} true; + assume {:verifier.code 0} true; + $i369 := $add.i32($i357, $i357); + call {:cexpr "a"} boogie_si_record_i32($i369); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1319, 7} true; + assume {:verifier.code 0} true; + $i370 := $sext.i32.i64($i369); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1319, 9} true; + assume {:verifier.code 0} true; + $i371 := $srem.i64($i370, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1319, 7} true; + assume {:verifier.code 0} true; + $i372 := $trunc.i64.i32($i371); + call {:cexpr "a"} boogie_si_record_i32($i372); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1320, 5} true; + assume {:verifier.code 0} true; + $i373 := $add.i32($i361, $i361); + call {:cexpr "b"} boogie_si_record_i32($i373); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1321, 7} true; + assume {:verifier.code 0} true; + $i374 := $sext.i32.i64($i373); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1321, 9} true; + assume {:verifier.code 0} true; + $i375 := $srem.i64($i374, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1321, 7} true; + assume {:verifier.code 0} true; + $i376 := $trunc.i64.i32($i375); + call {:cexpr "b"} boogie_si_record_i32($i376); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1323, 5} true; + assume {:verifier.code 0} true; + $i377 := $add.i32($i365, $i365); + call {:cexpr "c"} boogie_si_record_i32($i377); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1324, 9} true; + assume {:verifier.code 0} true; + $i378 := $slt.i32($i372, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1324, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i378} true; + goto $bb151, $bb152; +$bb148: + assume ($i366 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1316, 7} true; + assume {:verifier.code 0} true; + $i368 := $add.i32($i362, 1); + call {:cexpr "c"} boogie_si_record_i32($i368); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1317, 3} true; + assume {:verifier.code 0} true; + $i367 := $i368; + goto $bb150; +$bb149: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1315, 14} true; + assume {:verifier.code 0} true; + assume !(($i366 == 1)); + goto $bb150; +$bb150: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i365 := $i367; + goto $bb147; +$bb151: + assume ($i378 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1325, 7} true; + assume {:verifier.code 0} true; + $i379 := $add.i32($i377, 1); + call {:cexpr "c"} boogie_si_record_i32($i379); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1326, 3} true; + assume {:verifier.code 0} true; + $i380 := $i379; + goto $bb153; +$bb152: + assume !(($i378 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1326, 16} true; + assume {:verifier.code 0} true; + $i381 := $slt.i32($i376, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1326, 14} true; + assume {:verifier.code 0} true; + $i382 := $i377; + assume {:branchcond $i381} true; + goto $bb154, $bb155; +$bb153: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1329, 5} true; + assume {:verifier.code 0} true; + $i384 := $add.i32($i372, $i372); + call {:cexpr "a"} boogie_si_record_i32($i384); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1330, 7} true; + assume {:verifier.code 0} true; + $i385 := $sext.i32.i64($i384); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1330, 9} true; + assume {:verifier.code 0} true; + $i386 := $srem.i64($i385, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1330, 7} true; + assume {:verifier.code 0} true; + $i387 := $trunc.i64.i32($i386); + call {:cexpr "a"} boogie_si_record_i32($i387); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1331, 5} true; + assume {:verifier.code 0} true; + $i388 := $add.i32($i376, $i376); + call {:cexpr "b"} boogie_si_record_i32($i388); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1332, 7} true; + assume {:verifier.code 0} true; + $i389 := $sext.i32.i64($i388); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1332, 9} true; + assume {:verifier.code 0} true; + $i390 := $srem.i64($i389, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1332, 7} true; + assume {:verifier.code 0} true; + $i391 := $trunc.i64.i32($i390); + call {:cexpr "b"} boogie_si_record_i32($i391); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1334, 5} true; + assume {:verifier.code 0} true; + $i392 := $add.i32($i380, $i380); + call {:cexpr "c"} boogie_si_record_i32($i392); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1335, 9} true; + assume {:verifier.code 0} true; + $i393 := $slt.i32($i387, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1335, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i393} true; + goto $bb157, $bb158; +$bb154: + assume ($i381 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1327, 7} true; + assume {:verifier.code 0} true; + $i383 := $add.i32($i377, 1); + call {:cexpr "c"} boogie_si_record_i32($i383); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1328, 3} true; + assume {:verifier.code 0} true; + $i382 := $i383; + goto $bb156; +$bb155: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1326, 14} true; + assume {:verifier.code 0} true; + assume !(($i381 == 1)); + goto $bb156; +$bb156: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i380 := $i382; + goto $bb153; +$bb157: + assume ($i393 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1336, 7} true; + assume {:verifier.code 0} true; + $i394 := $add.i32($i392, 1); + call {:cexpr "c"} boogie_si_record_i32($i394); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1337, 3} true; + assume {:verifier.code 0} true; + $i395 := $i394; + goto $bb159; +$bb158: + assume !(($i393 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1337, 16} true; + assume {:verifier.code 0} true; + $i396 := $slt.i32($i391, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1337, 14} true; + assume {:verifier.code 0} true; + $i397 := $i392; + assume {:branchcond $i396} true; + goto $bb160, $bb161; +$bb159: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1340, 5} true; + assume {:verifier.code 0} true; + $i399 := $add.i32($i387, $i387); + call {:cexpr "a"} boogie_si_record_i32($i399); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1341, 7} true; + assume {:verifier.code 0} true; + $i400 := $sext.i32.i64($i399); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1341, 9} true; + assume {:verifier.code 0} true; + $i401 := $srem.i64($i400, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1341, 7} true; + assume {:verifier.code 0} true; + $i402 := $trunc.i64.i32($i401); + call {:cexpr "a"} boogie_si_record_i32($i402); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1342, 5} true; + assume {:verifier.code 0} true; + $i403 := $add.i32($i391, $i391); + call {:cexpr "b"} boogie_si_record_i32($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1343, 7} true; + assume {:verifier.code 0} true; + $i404 := $sext.i32.i64($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1343, 9} true; + assume {:verifier.code 0} true; + $i405 := $srem.i64($i404, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1343, 7} true; + assume {:verifier.code 0} true; + $i406 := $trunc.i64.i32($i405); + call {:cexpr "b"} boogie_si_record_i32($i406); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1345, 5} true; + assume {:verifier.code 0} true; + $i407 := $add.i32($i395, $i395); + call {:cexpr "c"} boogie_si_record_i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1346, 9} true; + assume {:verifier.code 0} true; + $i408 := $slt.i32($i402, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1346, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i408} true; + goto $bb163, $bb164; +$bb160: + assume ($i396 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1338, 7} true; + assume {:verifier.code 0} true; + $i398 := $add.i32($i392, 1); + call {:cexpr "c"} boogie_si_record_i32($i398); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1339, 3} true; + assume {:verifier.code 0} true; + $i397 := $i398; + goto $bb162; +$bb161: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1337, 14} true; + assume {:verifier.code 0} true; + assume !(($i396 == 1)); + goto $bb162; +$bb162: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i395 := $i397; + goto $bb159; +$bb163: + assume ($i408 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1347, 7} true; + assume {:verifier.code 0} true; + $i409 := $add.i32($i407, 1); + call {:cexpr "c"} boogie_si_record_i32($i409); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1348, 3} true; + assume {:verifier.code 0} true; + $i410 := $i409; + goto $bb165; +$bb164: + assume !(($i408 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1348, 16} true; + assume {:verifier.code 0} true; + $i411 := $slt.i32($i406, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1348, 14} true; + assume {:verifier.code 0} true; + $i412 := $i407; + assume {:branchcond $i411} true; + goto $bb166, $bb167; +$bb165: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1351, 5} true; + assume {:verifier.code 0} true; + $i414 := $add.i32($i402, $i402); + call {:cexpr "a"} boogie_si_record_i32($i414); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1352, 7} true; + assume {:verifier.code 0} true; + $i415 := $sext.i32.i64($i414); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1352, 9} true; + assume {:verifier.code 0} true; + $i416 := $srem.i64($i415, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1352, 7} true; + assume {:verifier.code 0} true; + $i417 := $trunc.i64.i32($i416); + call {:cexpr "a"} boogie_si_record_i32($i417); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1353, 5} true; + assume {:verifier.code 0} true; + $i418 := $add.i32($i406, $i406); + call {:cexpr "b"} boogie_si_record_i32($i418); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1354, 7} true; + assume {:verifier.code 0} true; + $i419 := $sext.i32.i64($i418); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1354, 9} true; + assume {:verifier.code 0} true; + $i420 := $srem.i64($i419, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1354, 7} true; + assume {:verifier.code 0} true; + $i421 := $trunc.i64.i32($i420); + call {:cexpr "b"} boogie_si_record_i32($i421); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1356, 5} true; + assume {:verifier.code 0} true; + $i422 := $add.i32($i410, $i410); + call {:cexpr "c"} boogie_si_record_i32($i422); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1357, 9} true; + assume {:verifier.code 0} true; + $i423 := $slt.i32($i417, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1357, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i423} true; + goto $bb169, $bb170; +$bb166: + assume ($i411 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1349, 7} true; + assume {:verifier.code 0} true; + $i413 := $add.i32($i407, 1); + call {:cexpr "c"} boogie_si_record_i32($i413); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1350, 3} true; + assume {:verifier.code 0} true; + $i412 := $i413; + goto $bb168; +$bb167: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1348, 14} true; + assume {:verifier.code 0} true; + assume !(($i411 == 1)); + goto $bb168; +$bb168: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i410 := $i412; + goto $bb165; +$bb169: + assume ($i423 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1358, 7} true; + assume {:verifier.code 0} true; + $i424 := $add.i32($i422, 1); + call {:cexpr "c"} boogie_si_record_i32($i424); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1359, 3} true; + assume {:verifier.code 0} true; + $i425 := $i424; + goto $bb171; +$bb170: + assume !(($i423 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1359, 16} true; + assume {:verifier.code 0} true; + $i426 := $slt.i32($i421, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1359, 14} true; + assume {:verifier.code 0} true; + $i427 := $i422; + assume {:branchcond $i426} true; + goto $bb172, $bb173; +$bb171: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1362, 5} true; + assume {:verifier.code 0} true; + $i429 := $add.i32($i417, $i417); + call {:cexpr "a"} boogie_si_record_i32($i429); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1363, 7} true; + assume {:verifier.code 0} true; + $i430 := $sext.i32.i64($i429); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1363, 9} true; + assume {:verifier.code 0} true; + $i431 := $srem.i64($i430, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1363, 7} true; + assume {:verifier.code 0} true; + $i432 := $trunc.i64.i32($i431); + call {:cexpr "a"} boogie_si_record_i32($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1364, 5} true; + assume {:verifier.code 0} true; + $i433 := $add.i32($i421, $i421); + call {:cexpr "b"} boogie_si_record_i32($i433); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1365, 7} true; + assume {:verifier.code 0} true; + $i434 := $sext.i32.i64($i433); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1365, 9} true; + assume {:verifier.code 0} true; + $i435 := $srem.i64($i434, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1365, 7} true; + assume {:verifier.code 0} true; + $i436 := $trunc.i64.i32($i435); + call {:cexpr "b"} boogie_si_record_i32($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1367, 5} true; + assume {:verifier.code 0} true; + $i437 := $add.i32($i425, $i425); + call {:cexpr "c"} boogie_si_record_i32($i437); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1368, 9} true; + assume {:verifier.code 0} true; + $i438 := $slt.i32($i432, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1368, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i438} true; + goto $bb175, $bb176; +$bb172: + assume ($i426 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1360, 7} true; + assume {:verifier.code 0} true; + $i428 := $add.i32($i422, 1); + call {:cexpr "c"} boogie_si_record_i32($i428); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1361, 3} true; + assume {:verifier.code 0} true; + $i427 := $i428; + goto $bb174; +$bb173: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1359, 14} true; + assume {:verifier.code 0} true; + assume !(($i426 == 1)); + goto $bb174; +$bb174: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i425 := $i427; + goto $bb171; +$bb175: + assume ($i438 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1369, 7} true; + assume {:verifier.code 0} true; + $i439 := $add.i32($i437, 1); + call {:cexpr "c"} boogie_si_record_i32($i439); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1370, 3} true; + assume {:verifier.code 0} true; + $i440 := $i439; + goto $bb177; +$bb176: + assume !(($i438 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1370, 16} true; + assume {:verifier.code 0} true; + $i441 := $slt.i32($i436, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1370, 14} true; + assume {:verifier.code 0} true; + $i442 := $i437; + assume {:branchcond $i441} true; + goto $bb178, $bb179; +$bb177: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1373, 5} true; + assume {:verifier.code 0} true; + $i444 := $add.i32($i432, $i432); + call {:cexpr "a"} boogie_si_record_i32($i444); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1374, 7} true; + assume {:verifier.code 0} true; + $i445 := $sext.i32.i64($i444); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1374, 9} true; + assume {:verifier.code 0} true; + $i446 := $srem.i64($i445, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1374, 7} true; + assume {:verifier.code 0} true; + $i447 := $trunc.i64.i32($i446); + call {:cexpr "a"} boogie_si_record_i32($i447); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1375, 5} true; + assume {:verifier.code 0} true; + $i448 := $add.i32($i436, $i436); + call {:cexpr "b"} boogie_si_record_i32($i448); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1376, 7} true; + assume {:verifier.code 0} true; + $i449 := $sext.i32.i64($i448); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1376, 9} true; + assume {:verifier.code 0} true; + $i450 := $srem.i64($i449, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1376, 7} true; + assume {:verifier.code 0} true; + $i451 := $trunc.i64.i32($i450); + call {:cexpr "b"} boogie_si_record_i32($i451); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1378, 5} true; + assume {:verifier.code 0} true; + $i452 := $add.i32($i440, $i440); + call {:cexpr "c"} boogie_si_record_i32($i452); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1379, 9} true; + assume {:verifier.code 0} true; + $i453 := $slt.i32($i447, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1379, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i453} true; + goto $bb181, $bb182; +$bb178: + assume ($i441 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1371, 7} true; + assume {:verifier.code 0} true; + $i443 := $add.i32($i437, 1); + call {:cexpr "c"} boogie_si_record_i32($i443); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1372, 3} true; + assume {:verifier.code 0} true; + $i442 := $i443; + goto $bb180; +$bb179: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1370, 14} true; + assume {:verifier.code 0} true; + assume !(($i441 == 1)); + goto $bb180; +$bb180: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i440 := $i442; + goto $bb177; +$bb181: + assume ($i453 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1380, 7} true; + assume {:verifier.code 0} true; + $i454 := $add.i32($i452, 1); + call {:cexpr "c"} boogie_si_record_i32($i454); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1381, 3} true; + assume {:verifier.code 0} true; + $i455 := $i454; + goto $bb183; +$bb182: + assume !(($i453 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1381, 16} true; + assume {:verifier.code 0} true; + $i456 := $slt.i32($i451, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1381, 14} true; + assume {:verifier.code 0} true; + $i457 := $i452; + assume {:branchcond $i456} true; + goto $bb184, $bb185; +$bb183: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1384, 5} true; + assume {:verifier.code 0} true; + $i459 := $add.i32($i447, $i447); + call {:cexpr "a"} boogie_si_record_i32($i459); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1385, 7} true; + assume {:verifier.code 0} true; + $i460 := $sext.i32.i64($i459); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1385, 9} true; + assume {:verifier.code 0} true; + $i461 := $srem.i64($i460, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1385, 7} true; + assume {:verifier.code 0} true; + $i462 := $trunc.i64.i32($i461); + call {:cexpr "a"} boogie_si_record_i32($i462); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1386, 5} true; + assume {:verifier.code 0} true; + $i463 := $add.i32($i451, $i451); + call {:cexpr "b"} boogie_si_record_i32($i463); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1387, 7} true; + assume {:verifier.code 0} true; + $i464 := $sext.i32.i64($i463); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1387, 9} true; + assume {:verifier.code 0} true; + $i465 := $srem.i64($i464, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1387, 7} true; + assume {:verifier.code 0} true; + $i466 := $trunc.i64.i32($i465); + call {:cexpr "b"} boogie_si_record_i32($i466); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1389, 5} true; + assume {:verifier.code 0} true; + $i467 := $add.i32($i455, $i455); + call {:cexpr "c"} boogie_si_record_i32($i467); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1390, 9} true; + assume {:verifier.code 0} true; + $i468 := $slt.i32($i462, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1390, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i468} true; + goto $bb187, $bb188; +$bb184: + assume ($i456 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1382, 7} true; + assume {:verifier.code 0} true; + $i458 := $add.i32($i452, 1); + call {:cexpr "c"} boogie_si_record_i32($i458); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1383, 3} true; + assume {:verifier.code 0} true; + $i457 := $i458; + goto $bb186; +$bb185: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1381, 14} true; + assume {:verifier.code 0} true; + assume !(($i456 == 1)); + goto $bb186; +$bb186: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i455 := $i457; + goto $bb183; +$bb187: + assume ($i468 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1391, 7} true; + assume {:verifier.code 0} true; + $i469 := $add.i32($i467, 1); + call {:cexpr "c"} boogie_si_record_i32($i469); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1392, 3} true; + assume {:verifier.code 0} true; + $i470 := $i469; + goto $bb189; +$bb188: + assume !(($i468 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1392, 16} true; + assume {:verifier.code 0} true; + $i471 := $slt.i32($i466, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1392, 14} true; + assume {:verifier.code 0} true; + $i472 := $i467; + assume {:branchcond $i471} true; + goto $bb190, $bb191; +$bb189: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1400, 3} true; + assume {:verifier.code 0} true; + $r := $i470; + $exn := false; + return; +$bb190: + assume ($i471 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1393, 7} true; + assume {:verifier.code 0} true; + $i473 := $add.i32($i467, 1); + call {:cexpr "c"} boogie_si_record_i32($i473); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1394, 3} true; + assume {:verifier.code 0} true; + $i472 := $i473; + goto $bb192; +$bb191: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1392, 14} true; + assume {:verifier.code 0} true; + assume !(($i471 == 1)); + goto $bb192; +$bb192: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i470 := $i472; + goto $bb189; +} +const __SMACK_or64: ref; +axiom (__SMACK_or64 == $sub.ref(0, 21668)); +procedure __SMACK_or64($i0: i64, $i1: i64) + returns ($r: i64) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i64; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 63} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_or64:arg:a"} boogie_si_record_i64($i0); + call {:cexpr "__SMACK_or64:arg:b"} boogie_si_record_i64($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 63} true; + assume {:verifier.code 1} true; + $i2 := $trunc.i64.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 66} true; + assume {:verifier.code 1} true; + $i3 := $trunc.i64.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 50} true; + assume {:verifier.code 1} true; + call $i4 := __SMACK_or32($i2, $i3); + call {:cexpr "smack:ext:__SMACK_or32"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 44} true; + assume {:verifier.code 0} true; + $i5 := $sext.i32.i64($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 37} true; + assume {:verifier.code 0} true; + $r := $i5; + $exn := false; + return; +} +const __SMACK_or16: ref; +axiom (__SMACK_or16 == $sub.ref(0, 22700)); +procedure __SMACK_or16($i0: i16, $i1: i16) + returns ($r: i16) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i16; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 67} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_or16:arg:a"} boogie_si_record_i16($i0); + call {:cexpr "__SMACK_or16:arg:b"} boogie_si_record_i16($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 67} true; + assume {:verifier.code 1} true; + $i2 := $sext.i16.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 70} true; + assume {:verifier.code 1} true; + $i3 := $sext.i16.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 54} true; + assume {:verifier.code 1} true; + call $i4 := __SMACK_or32($i2, $i3); + call {:cexpr "smack:ext:__SMACK_or32"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 47} true; + assume {:verifier.code 0} true; + $i5 := $trunc.i32.i16($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 40} true; + assume {:verifier.code 0} true; + $r := $i5; + $exn := false; + return; +} +const __SMACK_or8: ref; +axiom (__SMACK_or8 == $sub.ref(0, 23732)); +procedure __SMACK_or8($i0: i8, $i1: i8) + returns ($r: i8) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i8; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 62} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_or8:arg:a"} boogie_si_record_i8($i0); + call {:cexpr "__SMACK_or8:arg:b"} boogie_si_record_i8($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 62} true; + assume {:verifier.code 1} true; + $i2 := $sext.i8.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 65} true; + assume {:verifier.code 1} true; + $i3 := $sext.i8.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 49} true; + assume {:verifier.code 1} true; + call $i4 := __SMACK_or32($i2, $i3); + call {:cexpr "smack:ext:__SMACK_or32"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 43} true; + assume {:verifier.code 0} true; + $i5 := $trunc.i32.i8($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 36} true; + assume {:verifier.code 0} true; + $r := $i5; + $exn := false; + return; +} +const __SMACK_check_overflow: ref; +axiom (__SMACK_check_overflow == $sub.ref(0, 24764)); +procedure __SMACK_check_overflow($i0: i32) +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_check_overflow:arg:flag"} boogie_si_record_i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + assume true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1409, 3} true; + assume {:verifier.code 1} true; + assert {:overflow} $i0 == $0; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1410, 1} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_loop_exit: ref; +axiom (__SMACK_loop_exit == $sub.ref(0, 25796)); +procedure __SMACK_loop_exit() +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1412, 32} true; + assume {:verifier.code 1} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1412, 32} true; + assume {:verifier.code 1} true; + assert {:loopexit} false; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1412, 75} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_decls: ref; +axiom (__SMACK_decls == $sub.ref(0, 26828)); +type $mop; +procedure boogie_si_record_mop(m: $mop); +const $MOP: $mop; +var $exn: bool; +var $exnv: int; +procedure corral_atomic_begin(); +procedure corral_atomic_end(); +procedure $alloc(n: ref) returns (p: ref) +{ + call corral_atomic_begin(); + call p := $$alloc(n); + call corral_atomic_end(); +} + +procedure $malloc(n: ref) returns (p: ref) +{ + call corral_atomic_begin(); + call p := $$alloc(n); + call corral_atomic_end(); +} + +var $CurrAddr:ref; + +procedure {:inline 1} $$alloc(n: ref) returns (p: ref) +modifies $CurrAddr; +{ + assume $sge.ref.bool(n, $0.ref); + if ($sgt.ref.bool(n, $0.ref)) { + p := $CurrAddr; + havoc $CurrAddr; + assume $sge.ref.bool($sub.ref($CurrAddr, n), p); + assume $sgt.ref.bool($CurrAddr, $0.ref) && $slt.ref.bool($CurrAddr, $MALLOC_TOP); + } +} + +procedure $free(p: ref); + +const __SMACK_top_decl: ref; +axiom (__SMACK_top_decl == $sub.ref(0, 27860)); +procedure __SMACK_top_decl.ref($p0: ref); +const __SMACK_init_func_memory_model: ref; +axiom (__SMACK_init_func_memory_model == $sub.ref(0, 28892)); +procedure __SMACK_init_func_memory_model() +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1885, 3} true; + assume {:verifier.code 1} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1885, 3} true; + assume {:verifier.code 1} true; + $CurrAddr := $1024.ref; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1890, 1} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_static_init: ref; +axiom (__SMACK_static_init == $sub.ref(0, 29924)); +procedure __SMACK_static_init() +{ +$bb0: + $exn := false; + return; +} +const $u0: ref; +procedure boogie_si_record_i16(x: i16); +procedure boogie_si_record_i32(x: i32); +procedure boogie_si_record_i64(x: i64); +procedure boogie_si_record_i8(x: i8); +procedure boogie_si_record_ref(x: ref); +procedure $initialize() +{ + call __SMACK_static_init(); + call __SMACK_init_func_memory_model(); + return; +} diff --git a/dartagnan/src/test/resources/miscellaneous/thread_inlining_complex.bpl b/dartagnan/src/test/resources/miscellaneous/thread_inlining_complex.bpl new file mode 100644 index 0000000000..10618d6dad --- /dev/null +++ b/dartagnan/src/test/resources/miscellaneous/thread_inlining_complex.bpl @@ -0,0 +1,16207 @@ +// generated by SMACK version 2.8.0 for corral +// via /usr/local/bin/smack -q -t --no-memory-splitting --clang-options= -bpl /Users/thomashaas/IdeaProjects/Dat3M/output/thread_inlining_complex-opt.bpl /Users/thomashaas/IdeaProjects/Dat3M/output/thread_inlining_complex-opt.ll + +// Basic types +type i1 = int; +type i5 = int; +type i6 = int; +type i8 = int; +type i16 = int; +type i24 = int; +type i32 = int; +type i33 = int; +type i40 = int; +type i48 = int; +type i56 = int; +type i64 = int; +type i80 = int; +type i88 = int; +type i96 = int; +type i128 = int; +type i160 = int; +type i256 = int; +type ref = i64; +type float; + +// Basic constants +const $0: i32; +axiom ($0 == 0); +const $1: i32; +axiom ($1 == 1); +const $0.ref: ref; +axiom ($0.ref == 0); +const $1.ref: ref; +axiom ($1.ref == 1); +const $1024.ref: ref; +axiom ($1024.ref == 1024); +// Memory model constants +const $GLOBALS_BOTTOM: ref; +const $EXTERNS_BOTTOM: ref; +const $MALLOC_TOP: ref; + +// Memory maps (1 regions) +var $M.0: [ref] ref; + +// Memory address bounds +axiom ($GLOBALS_BOTTOM == $sub.ref(0, 29924)); +axiom ($EXTERNS_BOTTOM == $add.ref($GLOBALS_BOTTOM, $sub.ref(0, 32768))); +axiom ($MALLOC_TOP == 9223372036854775807); +function {:inline} $isExternal(p: ref) returns (bool) { $slt.ref.bool(p, $EXTERNS_BOTTOM) } + +// SMT bit-vector/integer conversion +function {:builtin "(_ int2bv 64)"} $int2bv.64(i: i64) returns (bv64); +function {:builtin "bv2nat"} $bv2int.64(i: bv64) returns (i64); + +// Integer arithmetic operations +function {:inline} $add.i1(i1: i1, i2: i1) returns (i1) { (i1 + i2) } +function {:inline} $add.i5(i1: i5, i2: i5) returns (i5) { (i1 + i2) } +function {:inline} $add.i6(i1: i6, i2: i6) returns (i6) { (i1 + i2) } +function {:inline} $add.i8(i1: i8, i2: i8) returns (i8) { (i1 + i2) } +function {:inline} $add.i16(i1: i16, i2: i16) returns (i16) { (i1 + i2) } +function {:inline} $add.i24(i1: i24, i2: i24) returns (i24) { (i1 + i2) } +function {:inline} $add.i32(i1: i32, i2: i32) returns (i32) { (i1 + i2) } +function {:inline} $add.i33(i1: i33, i2: i33) returns (i33) { (i1 + i2) } +function {:inline} $add.i40(i1: i40, i2: i40) returns (i40) { (i1 + i2) } +function {:inline} $add.i48(i1: i48, i2: i48) returns (i48) { (i1 + i2) } +function {:inline} $add.i56(i1: i56, i2: i56) returns (i56) { (i1 + i2) } +function {:inline} $add.i64(i1: i64, i2: i64) returns (i64) { (i1 + i2) } +function {:inline} $add.i80(i1: i80, i2: i80) returns (i80) { (i1 + i2) } +function {:inline} $add.i88(i1: i88, i2: i88) returns (i88) { (i1 + i2) } +function {:inline} $add.i96(i1: i96, i2: i96) returns (i96) { (i1 + i2) } +function {:inline} $add.i128(i1: i128, i2: i128) returns (i128) { (i1 + i2) } +function {:inline} $add.i160(i1: i160, i2: i160) returns (i160) { (i1 + i2) } +function {:inline} $add.i256(i1: i256, i2: i256) returns (i256) { (i1 + i2) } +function {:inline} $sub.i1(i1: i1, i2: i1) returns (i1) { (i1 - i2) } +function {:inline} $sub.i5(i1: i5, i2: i5) returns (i5) { (i1 - i2) } +function {:inline} $sub.i6(i1: i6, i2: i6) returns (i6) { (i1 - i2) } +function {:inline} $sub.i8(i1: i8, i2: i8) returns (i8) { (i1 - i2) } +function {:inline} $sub.i16(i1: i16, i2: i16) returns (i16) { (i1 - i2) } +function {:inline} $sub.i24(i1: i24, i2: i24) returns (i24) { (i1 - i2) } +function {:inline} $sub.i32(i1: i32, i2: i32) returns (i32) { (i1 - i2) } +function {:inline} $sub.i33(i1: i33, i2: i33) returns (i33) { (i1 - i2) } +function {:inline} $sub.i40(i1: i40, i2: i40) returns (i40) { (i1 - i2) } +function {:inline} $sub.i48(i1: i48, i2: i48) returns (i48) { (i1 - i2) } +function {:inline} $sub.i56(i1: i56, i2: i56) returns (i56) { (i1 - i2) } +function {:inline} $sub.i64(i1: i64, i2: i64) returns (i64) { (i1 - i2) } +function {:inline} $sub.i80(i1: i80, i2: i80) returns (i80) { (i1 - i2) } +function {:inline} $sub.i88(i1: i88, i2: i88) returns (i88) { (i1 - i2) } +function {:inline} $sub.i96(i1: i96, i2: i96) returns (i96) { (i1 - i2) } +function {:inline} $sub.i128(i1: i128, i2: i128) returns (i128) { (i1 - i2) } +function {:inline} $sub.i160(i1: i160, i2: i160) returns (i160) { (i1 - i2) } +function {:inline} $sub.i256(i1: i256, i2: i256) returns (i256) { (i1 - i2) } +function {:inline} $mul.i1(i1: i1, i2: i1) returns (i1) { (i1 * i2) } +function {:inline} $mul.i5(i1: i5, i2: i5) returns (i5) { (i1 * i2) } +function {:inline} $mul.i6(i1: i6, i2: i6) returns (i6) { (i1 * i2) } +function {:inline} $mul.i8(i1: i8, i2: i8) returns (i8) { (i1 * i2) } +function {:inline} $mul.i16(i1: i16, i2: i16) returns (i16) { (i1 * i2) } +function {:inline} $mul.i24(i1: i24, i2: i24) returns (i24) { (i1 * i2) } +function {:inline} $mul.i32(i1: i32, i2: i32) returns (i32) { (i1 * i2) } +function {:inline} $mul.i33(i1: i33, i2: i33) returns (i33) { (i1 * i2) } +function {:inline} $mul.i40(i1: i40, i2: i40) returns (i40) { (i1 * i2) } +function {:inline} $mul.i48(i1: i48, i2: i48) returns (i48) { (i1 * i2) } +function {:inline} $mul.i56(i1: i56, i2: i56) returns (i56) { (i1 * i2) } +function {:inline} $mul.i64(i1: i64, i2: i64) returns (i64) { (i1 * i2) } +function {:inline} $mul.i80(i1: i80, i2: i80) returns (i80) { (i1 * i2) } +function {:inline} $mul.i88(i1: i88, i2: i88) returns (i88) { (i1 * i2) } +function {:inline} $mul.i96(i1: i96, i2: i96) returns (i96) { (i1 * i2) } +function {:inline} $mul.i128(i1: i128, i2: i128) returns (i128) { (i1 * i2) } +function {:inline} $mul.i160(i1: i160, i2: i160) returns (i160) { (i1 * i2) } +function {:inline} $mul.i256(i1: i256, i2: i256) returns (i256) { (i1 * i2) } +function {:builtin "div"} $idiv.i1(i1: i1, i2: i1) returns (i1); +function {:builtin "div"} $idiv.i5(i1: i5, i2: i5) returns (i5); +function {:builtin "div"} $idiv.i6(i1: i6, i2: i6) returns (i6); +function {:builtin "div"} $idiv.i8(i1: i8, i2: i8) returns (i8); +function {:builtin "div"} $idiv.i16(i1: i16, i2: i16) returns (i16); +function {:builtin "div"} $idiv.i24(i1: i24, i2: i24) returns (i24); +function {:builtin "div"} $idiv.i32(i1: i32, i2: i32) returns (i32); +function {:builtin "div"} $idiv.i33(i1: i33, i2: i33) returns (i33); +function {:builtin "div"} $idiv.i40(i1: i40, i2: i40) returns (i40); +function {:builtin "div"} $idiv.i48(i1: i48, i2: i48) returns (i48); +function {:builtin "div"} $idiv.i56(i1: i56, i2: i56) returns (i56); +function {:builtin "div"} $idiv.i64(i1: i64, i2: i64) returns (i64); +function {:builtin "div"} $idiv.i80(i1: i80, i2: i80) returns (i80); +function {:builtin "div"} $idiv.i88(i1: i88, i2: i88) returns (i88); +function {:builtin "div"} $idiv.i96(i1: i96, i2: i96) returns (i96); +function {:builtin "div"} $idiv.i128(i1: i128, i2: i128) returns (i128); +function {:builtin "div"} $idiv.i160(i1: i160, i2: i160) returns (i160); +function {:builtin "div"} $idiv.i256(i1: i256, i2: i256) returns (i256); +function {:inline} $sdiv.i1(i1: i1, i2: i1) returns (i1) { $idiv.i1(i1, i2) } +function {:inline} $sdiv.i5(i1: i5, i2: i5) returns (i5) { $idiv.i5(i1, i2) } +function {:inline} $sdiv.i6(i1: i6, i2: i6) returns (i6) { $idiv.i6(i1, i2) } +function {:inline} $sdiv.i8(i1: i8, i2: i8) returns (i8) { $idiv.i8(i1, i2) } +function {:inline} $sdiv.i16(i1: i16, i2: i16) returns (i16) { $idiv.i16(i1, i2) } +function {:inline} $sdiv.i24(i1: i24, i2: i24) returns (i24) { $idiv.i24(i1, i2) } +function {:inline} $sdiv.i32(i1: i32, i2: i32) returns (i32) { $idiv.i32(i1, i2) } +function {:inline} $sdiv.i33(i1: i33, i2: i33) returns (i33) { $idiv.i33(i1, i2) } +function {:inline} $sdiv.i40(i1: i40, i2: i40) returns (i40) { $idiv.i40(i1, i2) } +function {:inline} $sdiv.i48(i1: i48, i2: i48) returns (i48) { $idiv.i48(i1, i2) } +function {:inline} $sdiv.i56(i1: i56, i2: i56) returns (i56) { $idiv.i56(i1, i2) } +function {:inline} $sdiv.i64(i1: i64, i2: i64) returns (i64) { $idiv.i64(i1, i2) } +function {:inline} $sdiv.i80(i1: i80, i2: i80) returns (i80) { $idiv.i80(i1, i2) } +function {:inline} $sdiv.i88(i1: i88, i2: i88) returns (i88) { $idiv.i88(i1, i2) } +function {:inline} $sdiv.i96(i1: i96, i2: i96) returns (i96) { $idiv.i96(i1, i2) } +function {:inline} $sdiv.i128(i1: i128, i2: i128) returns (i128) { $idiv.i128(i1, i2) } +function {:inline} $sdiv.i160(i1: i160, i2: i160) returns (i160) { $idiv.i160(i1, i2) } +function {:inline} $sdiv.i256(i1: i256, i2: i256) returns (i256) { $idiv.i256(i1, i2) } +function {:inline} $udiv.i1(i1: i1, i2: i1) returns (i1) { $idiv.i1(i1, i2) } +function {:inline} $udiv.i5(i1: i5, i2: i5) returns (i5) { $idiv.i5(i1, i2) } +function {:inline} $udiv.i6(i1: i6, i2: i6) returns (i6) { $idiv.i6(i1, i2) } +function {:inline} $udiv.i8(i1: i8, i2: i8) returns (i8) { $idiv.i8(i1, i2) } +function {:inline} $udiv.i16(i1: i16, i2: i16) returns (i16) { $idiv.i16(i1, i2) } +function {:inline} $udiv.i24(i1: i24, i2: i24) returns (i24) { $idiv.i24(i1, i2) } +function {:inline} $udiv.i32(i1: i32, i2: i32) returns (i32) { $idiv.i32(i1, i2) } +function {:inline} $udiv.i33(i1: i33, i2: i33) returns (i33) { $idiv.i33(i1, i2) } +function {:inline} $udiv.i40(i1: i40, i2: i40) returns (i40) { $idiv.i40(i1, i2) } +function {:inline} $udiv.i48(i1: i48, i2: i48) returns (i48) { $idiv.i48(i1, i2) } +function {:inline} $udiv.i56(i1: i56, i2: i56) returns (i56) { $idiv.i56(i1, i2) } +function {:inline} $udiv.i64(i1: i64, i2: i64) returns (i64) { $idiv.i64(i1, i2) } +function {:inline} $udiv.i80(i1: i80, i2: i80) returns (i80) { $idiv.i80(i1, i2) } +function {:inline} $udiv.i88(i1: i88, i2: i88) returns (i88) { $idiv.i88(i1, i2) } +function {:inline} $udiv.i96(i1: i96, i2: i96) returns (i96) { $idiv.i96(i1, i2) } +function {:inline} $udiv.i128(i1: i128, i2: i128) returns (i128) { $idiv.i128(i1, i2) } +function {:inline} $udiv.i160(i1: i160, i2: i160) returns (i160) { $idiv.i160(i1, i2) } +function {:inline} $udiv.i256(i1: i256, i2: i256) returns (i256) { $idiv.i256(i1, i2) } +function {:builtin "mod"} $smod.i1(i1: i1, i2: i1) returns (i1); +function {:builtin "mod"} $smod.i5(i1: i5, i2: i5) returns (i5); +function {:builtin "mod"} $smod.i6(i1: i6, i2: i6) returns (i6); +function {:builtin "mod"} $smod.i8(i1: i8, i2: i8) returns (i8); +function {:builtin "mod"} $smod.i16(i1: i16, i2: i16) returns (i16); +function {:builtin "mod"} $smod.i24(i1: i24, i2: i24) returns (i24); +function {:builtin "mod"} $smod.i32(i1: i32, i2: i32) returns (i32); +function {:builtin "mod"} $smod.i33(i1: i33, i2: i33) returns (i33); +function {:builtin "mod"} $smod.i40(i1: i40, i2: i40) returns (i40); +function {:builtin "mod"} $smod.i48(i1: i48, i2: i48) returns (i48); +function {:builtin "mod"} $smod.i56(i1: i56, i2: i56) returns (i56); +function {:builtin "mod"} $smod.i64(i1: i64, i2: i64) returns (i64); +function {:builtin "mod"} $smod.i80(i1: i80, i2: i80) returns (i80); +function {:builtin "mod"} $smod.i88(i1: i88, i2: i88) returns (i88); +function {:builtin "mod"} $smod.i96(i1: i96, i2: i96) returns (i96); +function {:builtin "mod"} $smod.i128(i1: i128, i2: i128) returns (i128); +function {:builtin "mod"} $smod.i160(i1: i160, i2: i160) returns (i160); +function {:builtin "mod"} $smod.i256(i1: i256, i2: i256) returns (i256); +function {:inline} $srem.i1(i1: i1, i2: i1) returns (i1) { (if ($ne.i1.bool($smod.i1(i1, i2), 0) && $slt.i1.bool(i1, 0)) then $sub.i1($smod.i1(i1, i2), $smax.i1(i2, $sub.i1(0, i2))) else $smod.i1(i1, i2)) } +function {:inline} $srem.i5(i1: i5, i2: i5) returns (i5) { (if ($ne.i5.bool($smod.i5(i1, i2), 0) && $slt.i5.bool(i1, 0)) then $sub.i5($smod.i5(i1, i2), $smax.i5(i2, $sub.i5(0, i2))) else $smod.i5(i1, i2)) } +function {:inline} $srem.i6(i1: i6, i2: i6) returns (i6) { (if ($ne.i6.bool($smod.i6(i1, i2), 0) && $slt.i6.bool(i1, 0)) then $sub.i6($smod.i6(i1, i2), $smax.i6(i2, $sub.i6(0, i2))) else $smod.i6(i1, i2)) } +function {:inline} $srem.i8(i1: i8, i2: i8) returns (i8) { (if ($ne.i8.bool($smod.i8(i1, i2), 0) && $slt.i8.bool(i1, 0)) then $sub.i8($smod.i8(i1, i2), $smax.i8(i2, $sub.i8(0, i2))) else $smod.i8(i1, i2)) } +function {:inline} $srem.i16(i1: i16, i2: i16) returns (i16) { (if ($ne.i16.bool($smod.i16(i1, i2), 0) && $slt.i16.bool(i1, 0)) then $sub.i16($smod.i16(i1, i2), $smax.i16(i2, $sub.i16(0, i2))) else $smod.i16(i1, i2)) } +function {:inline} $srem.i24(i1: i24, i2: i24) returns (i24) { (if ($ne.i24.bool($smod.i24(i1, i2), 0) && $slt.i24.bool(i1, 0)) then $sub.i24($smod.i24(i1, i2), $smax.i24(i2, $sub.i24(0, i2))) else $smod.i24(i1, i2)) } +function {:inline} $srem.i32(i1: i32, i2: i32) returns (i32) { (if ($ne.i32.bool($smod.i32(i1, i2), 0) && $slt.i32.bool(i1, 0)) then $sub.i32($smod.i32(i1, i2), $smax.i32(i2, $sub.i32(0, i2))) else $smod.i32(i1, i2)) } +function {:inline} $srem.i33(i1: i33, i2: i33) returns (i33) { (if ($ne.i33.bool($smod.i33(i1, i2), 0) && $slt.i33.bool(i1, 0)) then $sub.i33($smod.i33(i1, i2), $smax.i33(i2, $sub.i33(0, i2))) else $smod.i33(i1, i2)) } +function {:inline} $srem.i40(i1: i40, i2: i40) returns (i40) { (if ($ne.i40.bool($smod.i40(i1, i2), 0) && $slt.i40.bool(i1, 0)) then $sub.i40($smod.i40(i1, i2), $smax.i40(i2, $sub.i40(0, i2))) else $smod.i40(i1, i2)) } +function {:inline} $srem.i48(i1: i48, i2: i48) returns (i48) { (if ($ne.i48.bool($smod.i48(i1, i2), 0) && $slt.i48.bool(i1, 0)) then $sub.i48($smod.i48(i1, i2), $smax.i48(i2, $sub.i48(0, i2))) else $smod.i48(i1, i2)) } +function {:inline} $srem.i56(i1: i56, i2: i56) returns (i56) { (if ($ne.i56.bool($smod.i56(i1, i2), 0) && $slt.i56.bool(i1, 0)) then $sub.i56($smod.i56(i1, i2), $smax.i56(i2, $sub.i56(0, i2))) else $smod.i56(i1, i2)) } +function {:inline} $srem.i64(i1: i64, i2: i64) returns (i64) { (if ($ne.i64.bool($smod.i64(i1, i2), 0) && $slt.i64.bool(i1, 0)) then $sub.i64($smod.i64(i1, i2), $smax.i64(i2, $sub.i64(0, i2))) else $smod.i64(i1, i2)) } +function {:inline} $srem.i80(i1: i80, i2: i80) returns (i80) { (if ($ne.i80.bool($smod.i80(i1, i2), 0) && $slt.i80.bool(i1, 0)) then $sub.i80($smod.i80(i1, i2), $smax.i80(i2, $sub.i80(0, i2))) else $smod.i80(i1, i2)) } +function {:inline} $srem.i88(i1: i88, i2: i88) returns (i88) { (if ($ne.i88.bool($smod.i88(i1, i2), 0) && $slt.i88.bool(i1, 0)) then $sub.i88($smod.i88(i1, i2), $smax.i88(i2, $sub.i88(0, i2))) else $smod.i88(i1, i2)) } +function {:inline} $srem.i96(i1: i96, i2: i96) returns (i96) { (if ($ne.i96.bool($smod.i96(i1, i2), 0) && $slt.i96.bool(i1, 0)) then $sub.i96($smod.i96(i1, i2), $smax.i96(i2, $sub.i96(0, i2))) else $smod.i96(i1, i2)) } +function {:inline} $srem.i128(i1: i128, i2: i128) returns (i128) { (if ($ne.i128.bool($smod.i128(i1, i2), 0) && $slt.i128.bool(i1, 0)) then $sub.i128($smod.i128(i1, i2), $smax.i128(i2, $sub.i128(0, i2))) else $smod.i128(i1, i2)) } +function {:inline} $srem.i160(i1: i160, i2: i160) returns (i160) { (if ($ne.i160.bool($smod.i160(i1, i2), 0) && $slt.i160.bool(i1, 0)) then $sub.i160($smod.i160(i1, i2), $smax.i160(i2, $sub.i160(0, i2))) else $smod.i160(i1, i2)) } +function {:inline} $srem.i256(i1: i256, i2: i256) returns (i256) { (if ($ne.i256.bool($smod.i256(i1, i2), 0) && $slt.i256.bool(i1, 0)) then $sub.i256($smod.i256(i1, i2), $smax.i256(i2, $sub.i256(0, i2))) else $smod.i256(i1, i2)) } +function {:inline} $urem.i1(i1: i1, i2: i1) returns (i1) { $smod.i1(i1, i2) } +function {:inline} $urem.i5(i1: i5, i2: i5) returns (i5) { $smod.i5(i1, i2) } +function {:inline} $urem.i6(i1: i6, i2: i6) returns (i6) { $smod.i6(i1, i2) } +function {:inline} $urem.i8(i1: i8, i2: i8) returns (i8) { $smod.i8(i1, i2) } +function {:inline} $urem.i16(i1: i16, i2: i16) returns (i16) { $smod.i16(i1, i2) } +function {:inline} $urem.i24(i1: i24, i2: i24) returns (i24) { $smod.i24(i1, i2) } +function {:inline} $urem.i32(i1: i32, i2: i32) returns (i32) { $smod.i32(i1, i2) } +function {:inline} $urem.i33(i1: i33, i2: i33) returns (i33) { $smod.i33(i1, i2) } +function {:inline} $urem.i40(i1: i40, i2: i40) returns (i40) { $smod.i40(i1, i2) } +function {:inline} $urem.i48(i1: i48, i2: i48) returns (i48) { $smod.i48(i1, i2) } +function {:inline} $urem.i56(i1: i56, i2: i56) returns (i56) { $smod.i56(i1, i2) } +function {:inline} $urem.i64(i1: i64, i2: i64) returns (i64) { $smod.i64(i1, i2) } +function {:inline} $urem.i80(i1: i80, i2: i80) returns (i80) { $smod.i80(i1, i2) } +function {:inline} $urem.i88(i1: i88, i2: i88) returns (i88) { $smod.i88(i1, i2) } +function {:inline} $urem.i96(i1: i96, i2: i96) returns (i96) { $smod.i96(i1, i2) } +function {:inline} $urem.i128(i1: i128, i2: i128) returns (i128) { $smod.i128(i1, i2) } +function {:inline} $urem.i160(i1: i160, i2: i160) returns (i160) { $smod.i160(i1, i2) } +function {:inline} $urem.i256(i1: i256, i2: i256) returns (i256) { $smod.i256(i1, i2) } +function $shl.i1(i1: i1, i2: i1) returns (i1); +function $shl.i5(i1: i5, i2: i5) returns (i5); +function $shl.i6(i1: i6, i2: i6) returns (i6); +function $shl.i8(i1: i8, i2: i8) returns (i8); +function $shl.i16(i1: i16, i2: i16) returns (i16); +function $shl.i24(i1: i24, i2: i24) returns (i24); +function $shl.i32(i1: i32, i2: i32) returns (i32); +function $shl.i33(i1: i33, i2: i33) returns (i33); +function $shl.i40(i1: i40, i2: i40) returns (i40); +function $shl.i48(i1: i48, i2: i48) returns (i48); +function $shl.i56(i1: i56, i2: i56) returns (i56); +function $shl.i64(i1: i64, i2: i64) returns (i64); +function $shl.i80(i1: i80, i2: i80) returns (i80); +function $shl.i88(i1: i88, i2: i88) returns (i88); +function $shl.i96(i1: i96, i2: i96) returns (i96); +function $shl.i128(i1: i128, i2: i128) returns (i128); +function $shl.i160(i1: i160, i2: i160) returns (i160); +function $shl.i256(i1: i256, i2: i256) returns (i256); +function $lshr.i1(i1: i1, i2: i1) returns (i1); +function $lshr.i5(i1: i5, i2: i5) returns (i5); +function $lshr.i6(i1: i6, i2: i6) returns (i6); +function $lshr.i8(i1: i8, i2: i8) returns (i8); +function $lshr.i16(i1: i16, i2: i16) returns (i16); +function $lshr.i24(i1: i24, i2: i24) returns (i24); +function $lshr.i32(i1: i32, i2: i32) returns (i32); +function $lshr.i33(i1: i33, i2: i33) returns (i33); +function $lshr.i40(i1: i40, i2: i40) returns (i40); +function $lshr.i48(i1: i48, i2: i48) returns (i48); +function $lshr.i56(i1: i56, i2: i56) returns (i56); +function $lshr.i64(i1: i64, i2: i64) returns (i64); +function $lshr.i80(i1: i80, i2: i80) returns (i80); +function $lshr.i88(i1: i88, i2: i88) returns (i88); +function $lshr.i96(i1: i96, i2: i96) returns (i96); +function $lshr.i128(i1: i128, i2: i128) returns (i128); +function $lshr.i160(i1: i160, i2: i160) returns (i160); +function $lshr.i256(i1: i256, i2: i256) returns (i256); +function $ashr.i1(i1: i1, i2: i1) returns (i1); +function $ashr.i5(i1: i5, i2: i5) returns (i5); +function $ashr.i6(i1: i6, i2: i6) returns (i6); +function $ashr.i8(i1: i8, i2: i8) returns (i8); +function $ashr.i16(i1: i16, i2: i16) returns (i16); +function $ashr.i24(i1: i24, i2: i24) returns (i24); +function $ashr.i32(i1: i32, i2: i32) returns (i32); +function $ashr.i33(i1: i33, i2: i33) returns (i33); +function $ashr.i40(i1: i40, i2: i40) returns (i40); +function $ashr.i48(i1: i48, i2: i48) returns (i48); +function $ashr.i56(i1: i56, i2: i56) returns (i56); +function $ashr.i64(i1: i64, i2: i64) returns (i64); +function $ashr.i80(i1: i80, i2: i80) returns (i80); +function $ashr.i88(i1: i88, i2: i88) returns (i88); +function $ashr.i96(i1: i96, i2: i96) returns (i96); +function $ashr.i128(i1: i128, i2: i128) returns (i128); +function $ashr.i160(i1: i160, i2: i160) returns (i160); +function $ashr.i256(i1: i256, i2: i256) returns (i256); +function $and.i1(i1: i1, i2: i1) returns (i1); +function $and.i5(i1: i5, i2: i5) returns (i5); +function $and.i6(i1: i6, i2: i6) returns (i6); +function $and.i8(i1: i8, i2: i8) returns (i8); +function $and.i16(i1: i16, i2: i16) returns (i16); +function $and.i24(i1: i24, i2: i24) returns (i24); +function $and.i32(i1: i32, i2: i32) returns (i32); +function $and.i33(i1: i33, i2: i33) returns (i33); +function $and.i40(i1: i40, i2: i40) returns (i40); +function $and.i48(i1: i48, i2: i48) returns (i48); +function $and.i56(i1: i56, i2: i56) returns (i56); +function $and.i64(i1: i64, i2: i64) returns (i64); +function $and.i80(i1: i80, i2: i80) returns (i80); +function $and.i88(i1: i88, i2: i88) returns (i88); +function $and.i96(i1: i96, i2: i96) returns (i96); +function $and.i128(i1: i128, i2: i128) returns (i128); +function $and.i160(i1: i160, i2: i160) returns (i160); +function $and.i256(i1: i256, i2: i256) returns (i256); +function $or.i1(i1: i1, i2: i1) returns (i1); +function $or.i5(i1: i5, i2: i5) returns (i5); +function $or.i6(i1: i6, i2: i6) returns (i6); +function $or.i8(i1: i8, i2: i8) returns (i8); +function $or.i16(i1: i16, i2: i16) returns (i16); +function $or.i24(i1: i24, i2: i24) returns (i24); +function $or.i32(i1: i32, i2: i32) returns (i32); +function $or.i33(i1: i33, i2: i33) returns (i33); +function $or.i40(i1: i40, i2: i40) returns (i40); +function $or.i48(i1: i48, i2: i48) returns (i48); +function $or.i56(i1: i56, i2: i56) returns (i56); +function $or.i64(i1: i64, i2: i64) returns (i64); +function $or.i80(i1: i80, i2: i80) returns (i80); +function $or.i88(i1: i88, i2: i88) returns (i88); +function $or.i96(i1: i96, i2: i96) returns (i96); +function $or.i128(i1: i128, i2: i128) returns (i128); +function $or.i160(i1: i160, i2: i160) returns (i160); +function $or.i256(i1: i256, i2: i256) returns (i256); +function $xor.i1(i1: i1, i2: i1) returns (i1); +function $xor.i5(i1: i5, i2: i5) returns (i5); +function $xor.i6(i1: i6, i2: i6) returns (i6); +function $xor.i8(i1: i8, i2: i8) returns (i8); +function $xor.i16(i1: i16, i2: i16) returns (i16); +function $xor.i24(i1: i24, i2: i24) returns (i24); +function $xor.i32(i1: i32, i2: i32) returns (i32); +function $xor.i33(i1: i33, i2: i33) returns (i33); +function $xor.i40(i1: i40, i2: i40) returns (i40); +function $xor.i48(i1: i48, i2: i48) returns (i48); +function $xor.i56(i1: i56, i2: i56) returns (i56); +function $xor.i64(i1: i64, i2: i64) returns (i64); +function $xor.i80(i1: i80, i2: i80) returns (i80); +function $xor.i88(i1: i88, i2: i88) returns (i88); +function $xor.i96(i1: i96, i2: i96) returns (i96); +function $xor.i128(i1: i128, i2: i128) returns (i128); +function $xor.i160(i1: i160, i2: i160) returns (i160); +function $xor.i256(i1: i256, i2: i256) returns (i256); +function $nand.i1(i1: i1, i2: i1) returns (i1); +function $nand.i5(i1: i5, i2: i5) returns (i5); +function $nand.i6(i1: i6, i2: i6) returns (i6); +function $nand.i8(i1: i8, i2: i8) returns (i8); +function $nand.i16(i1: i16, i2: i16) returns (i16); +function $nand.i24(i1: i24, i2: i24) returns (i24); +function $nand.i32(i1: i32, i2: i32) returns (i32); +function $nand.i33(i1: i33, i2: i33) returns (i33); +function $nand.i40(i1: i40, i2: i40) returns (i40); +function $nand.i48(i1: i48, i2: i48) returns (i48); +function $nand.i56(i1: i56, i2: i56) returns (i56); +function $nand.i64(i1: i64, i2: i64) returns (i64); +function $nand.i80(i1: i80, i2: i80) returns (i80); +function $nand.i88(i1: i88, i2: i88) returns (i88); +function $nand.i96(i1: i96, i2: i96) returns (i96); +function $nand.i128(i1: i128, i2: i128) returns (i128); +function $nand.i160(i1: i160, i2: i160) returns (i160); +function $nand.i256(i1: i256, i2: i256) returns (i256); +function $not.i1(i: i1) returns (i1); +function $not.i5(i: i5) returns (i5); +function $not.i6(i: i6) returns (i6); +function $not.i8(i: i8) returns (i8); +function $not.i16(i: i16) returns (i16); +function $not.i24(i: i24) returns (i24); +function $not.i32(i: i32) returns (i32); +function $not.i33(i: i33) returns (i33); +function $not.i40(i: i40) returns (i40); +function $not.i48(i: i48) returns (i48); +function $not.i56(i: i56) returns (i56); +function $not.i64(i: i64) returns (i64); +function $not.i80(i: i80) returns (i80); +function $not.i88(i: i88) returns (i88); +function $not.i96(i: i96) returns (i96); +function $not.i128(i: i128) returns (i128); +function $not.i160(i: i160) returns (i160); +function $not.i256(i: i256) returns (i256); +function {:inline} $smin.i1(i1: i1, i2: i1) returns (i1) { (if $slt.i1.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i5(i1: i5, i2: i5) returns (i5) { (if $slt.i5.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i6(i1: i6, i2: i6) returns (i6) { (if $slt.i6.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i8(i1: i8, i2: i8) returns (i8) { (if $slt.i8.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i16(i1: i16, i2: i16) returns (i16) { (if $slt.i16.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i24(i1: i24, i2: i24) returns (i24) { (if $slt.i24.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i32(i1: i32, i2: i32) returns (i32) { (if $slt.i32.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i33(i1: i33, i2: i33) returns (i33) { (if $slt.i33.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i40(i1: i40, i2: i40) returns (i40) { (if $slt.i40.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i48(i1: i48, i2: i48) returns (i48) { (if $slt.i48.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i56(i1: i56, i2: i56) returns (i56) { (if $slt.i56.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i64(i1: i64, i2: i64) returns (i64) { (if $slt.i64.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i80(i1: i80, i2: i80) returns (i80) { (if $slt.i80.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i88(i1: i88, i2: i88) returns (i88) { (if $slt.i88.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i96(i1: i96, i2: i96) returns (i96) { (if $slt.i96.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i128(i1: i128, i2: i128) returns (i128) { (if $slt.i128.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i160(i1: i160, i2: i160) returns (i160) { (if $slt.i160.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i256(i1: i256, i2: i256) returns (i256) { (if $slt.i256.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i1(i1: i1, i2: i1) returns (i1) { (if $sgt.i1.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i5(i1: i5, i2: i5) returns (i5) { (if $sgt.i5.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i6(i1: i6, i2: i6) returns (i6) { (if $sgt.i6.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i8(i1: i8, i2: i8) returns (i8) { (if $sgt.i8.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i16(i1: i16, i2: i16) returns (i16) { (if $sgt.i16.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i24(i1: i24, i2: i24) returns (i24) { (if $sgt.i24.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i32(i1: i32, i2: i32) returns (i32) { (if $sgt.i32.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i33(i1: i33, i2: i33) returns (i33) { (if $sgt.i33.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i40(i1: i40, i2: i40) returns (i40) { (if $sgt.i40.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i48(i1: i48, i2: i48) returns (i48) { (if $sgt.i48.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i56(i1: i56, i2: i56) returns (i56) { (if $sgt.i56.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i64(i1: i64, i2: i64) returns (i64) { (if $sgt.i64.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i80(i1: i80, i2: i80) returns (i80) { (if $sgt.i80.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i88(i1: i88, i2: i88) returns (i88) { (if $sgt.i88.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i96(i1: i96, i2: i96) returns (i96) { (if $sgt.i96.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i128(i1: i128, i2: i128) returns (i128) { (if $sgt.i128.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i160(i1: i160, i2: i160) returns (i160) { (if $sgt.i160.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i256(i1: i256, i2: i256) returns (i256) { (if $sgt.i256.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i1(i1: i1, i2: i1) returns (i1) { (if $ult.i1.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i5(i1: i5, i2: i5) returns (i5) { (if $ult.i5.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i6(i1: i6, i2: i6) returns (i6) { (if $ult.i6.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i8(i1: i8, i2: i8) returns (i8) { (if $ult.i8.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i16(i1: i16, i2: i16) returns (i16) { (if $ult.i16.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i24(i1: i24, i2: i24) returns (i24) { (if $ult.i24.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i32(i1: i32, i2: i32) returns (i32) { (if $ult.i32.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i33(i1: i33, i2: i33) returns (i33) { (if $ult.i33.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i40(i1: i40, i2: i40) returns (i40) { (if $ult.i40.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i48(i1: i48, i2: i48) returns (i48) { (if $ult.i48.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i56(i1: i56, i2: i56) returns (i56) { (if $ult.i56.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i64(i1: i64, i2: i64) returns (i64) { (if $ult.i64.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i80(i1: i80, i2: i80) returns (i80) { (if $ult.i80.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i88(i1: i88, i2: i88) returns (i88) { (if $ult.i88.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i96(i1: i96, i2: i96) returns (i96) { (if $ult.i96.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i128(i1: i128, i2: i128) returns (i128) { (if $ult.i128.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i160(i1: i160, i2: i160) returns (i160) { (if $ult.i160.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i256(i1: i256, i2: i256) returns (i256) { (if $ult.i256.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i1(i1: i1, i2: i1) returns (i1) { (if $ugt.i1.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i5(i1: i5, i2: i5) returns (i5) { (if $ugt.i5.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i6(i1: i6, i2: i6) returns (i6) { (if $ugt.i6.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i8(i1: i8, i2: i8) returns (i8) { (if $ugt.i8.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i16(i1: i16, i2: i16) returns (i16) { (if $ugt.i16.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i24(i1: i24, i2: i24) returns (i24) { (if $ugt.i24.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i32(i1: i32, i2: i32) returns (i32) { (if $ugt.i32.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i33(i1: i33, i2: i33) returns (i33) { (if $ugt.i33.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i40(i1: i40, i2: i40) returns (i40) { (if $ugt.i40.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i48(i1: i48, i2: i48) returns (i48) { (if $ugt.i48.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i56(i1: i56, i2: i56) returns (i56) { (if $ugt.i56.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i64(i1: i64, i2: i64) returns (i64) { (if $ugt.i64.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i80(i1: i80, i2: i80) returns (i80) { (if $ugt.i80.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i88(i1: i88, i2: i88) returns (i88) { (if $ugt.i88.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i96(i1: i96, i2: i96) returns (i96) { (if $ugt.i96.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i128(i1: i128, i2: i128) returns (i128) { (if $ugt.i128.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i160(i1: i160, i2: i160) returns (i160) { (if $ugt.i160.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i256(i1: i256, i2: i256) returns (i256) { (if $ugt.i256.bool(i1, i2) then i1 else i2) } +axiom ($and.i1(0, 0) == 0); +axiom ($or.i1(0, 0) == 0); +axiom ($xor.i1(0, 0) == 0); +axiom ($and.i1(0, 1) == 0); +axiom ($or.i1(0, 1) == 1); +axiom ($xor.i1(0, 1) == 1); +axiom ($and.i1(1, 0) == 0); +axiom ($or.i1(1, 0) == 1); +axiom ($xor.i1(1, 0) == 1); +axiom ($and.i1(1, 1) == 1); +axiom ($or.i1(1, 1) == 1); +axiom ($xor.i1(1, 1) == 0); +axiom ($and.i32(32, 16) == 0); +// Integer predicates +function {:inline} $ule.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i1(i1: i1, i2: i1) returns (i1) { (if $ule.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i5(i1: i5, i2: i5) returns (i1) { (if $ule.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i6(i1: i6, i2: i6) returns (i1) { (if $ule.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i8(i1: i8, i2: i8) returns (i1) { (if $ule.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i16(i1: i16, i2: i16) returns (i1) { (if $ule.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i24(i1: i24, i2: i24) returns (i1) { (if $ule.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i32(i1: i32, i2: i32) returns (i1) { (if $ule.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i33(i1: i33, i2: i33) returns (i1) { (if $ule.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i40(i1: i40, i2: i40) returns (i1) { (if $ule.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i48(i1: i48, i2: i48) returns (i1) { (if $ule.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i56(i1: i56, i2: i56) returns (i1) { (if $ule.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i64(i1: i64, i2: i64) returns (i1) { (if $ule.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i80(i1: i80, i2: i80) returns (i1) { (if $ule.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i88(i1: i88, i2: i88) returns (i1) { (if $ule.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i96(i1: i96, i2: i96) returns (i1) { (if $ule.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i128(i1: i128, i2: i128) returns (i1) { (if $ule.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i160(i1: i160, i2: i160) returns (i1) { (if $ule.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i256(i1: i256, i2: i256) returns (i1) { (if $ule.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 < i2) } +function {:inline} $ult.i1(i1: i1, i2: i1) returns (i1) { (if $ult.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 < i2) } +function {:inline} $ult.i5(i1: i5, i2: i5) returns (i1) { (if $ult.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 < i2) } +function {:inline} $ult.i6(i1: i6, i2: i6) returns (i1) { (if $ult.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 < i2) } +function {:inline} $ult.i8(i1: i8, i2: i8) returns (i1) { (if $ult.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 < i2) } +function {:inline} $ult.i16(i1: i16, i2: i16) returns (i1) { (if $ult.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 < i2) } +function {:inline} $ult.i24(i1: i24, i2: i24) returns (i1) { (if $ult.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 < i2) } +function {:inline} $ult.i32(i1: i32, i2: i32) returns (i1) { (if $ult.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 < i2) } +function {:inline} $ult.i33(i1: i33, i2: i33) returns (i1) { (if $ult.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 < i2) } +function {:inline} $ult.i40(i1: i40, i2: i40) returns (i1) { (if $ult.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 < i2) } +function {:inline} $ult.i48(i1: i48, i2: i48) returns (i1) { (if $ult.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 < i2) } +function {:inline} $ult.i56(i1: i56, i2: i56) returns (i1) { (if $ult.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 < i2) } +function {:inline} $ult.i64(i1: i64, i2: i64) returns (i1) { (if $ult.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 < i2) } +function {:inline} $ult.i80(i1: i80, i2: i80) returns (i1) { (if $ult.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 < i2) } +function {:inline} $ult.i88(i1: i88, i2: i88) returns (i1) { (if $ult.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 < i2) } +function {:inline} $ult.i96(i1: i96, i2: i96) returns (i1) { (if $ult.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 < i2) } +function {:inline} $ult.i128(i1: i128, i2: i128) returns (i1) { (if $ult.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 < i2) } +function {:inline} $ult.i160(i1: i160, i2: i160) returns (i1) { (if $ult.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 < i2) } +function {:inline} $ult.i256(i1: i256, i2: i256) returns (i1) { (if $ult.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i1(i1: i1, i2: i1) returns (i1) { (if $uge.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i5(i1: i5, i2: i5) returns (i1) { (if $uge.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i6(i1: i6, i2: i6) returns (i1) { (if $uge.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i8(i1: i8, i2: i8) returns (i1) { (if $uge.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i16(i1: i16, i2: i16) returns (i1) { (if $uge.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i24(i1: i24, i2: i24) returns (i1) { (if $uge.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i32(i1: i32, i2: i32) returns (i1) { (if $uge.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i33(i1: i33, i2: i33) returns (i1) { (if $uge.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i40(i1: i40, i2: i40) returns (i1) { (if $uge.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i48(i1: i48, i2: i48) returns (i1) { (if $uge.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i56(i1: i56, i2: i56) returns (i1) { (if $uge.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i64(i1: i64, i2: i64) returns (i1) { (if $uge.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i80(i1: i80, i2: i80) returns (i1) { (if $uge.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i88(i1: i88, i2: i88) returns (i1) { (if $uge.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i96(i1: i96, i2: i96) returns (i1) { (if $uge.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i128(i1: i128, i2: i128) returns (i1) { (if $uge.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i160(i1: i160, i2: i160) returns (i1) { (if $uge.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i256(i1: i256, i2: i256) returns (i1) { (if $uge.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i1(i1: i1, i2: i1) returns (i1) { (if $ugt.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i5(i1: i5, i2: i5) returns (i1) { (if $ugt.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i6(i1: i6, i2: i6) returns (i1) { (if $ugt.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i8(i1: i8, i2: i8) returns (i1) { (if $ugt.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i16(i1: i16, i2: i16) returns (i1) { (if $ugt.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i24(i1: i24, i2: i24) returns (i1) { (if $ugt.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i32(i1: i32, i2: i32) returns (i1) { (if $ugt.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i33(i1: i33, i2: i33) returns (i1) { (if $ugt.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i40(i1: i40, i2: i40) returns (i1) { (if $ugt.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i48(i1: i48, i2: i48) returns (i1) { (if $ugt.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i56(i1: i56, i2: i56) returns (i1) { (if $ugt.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i64(i1: i64, i2: i64) returns (i1) { (if $ugt.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i80(i1: i80, i2: i80) returns (i1) { (if $ugt.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i88(i1: i88, i2: i88) returns (i1) { (if $ugt.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i96(i1: i96, i2: i96) returns (i1) { (if $ugt.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i128(i1: i128, i2: i128) returns (i1) { (if $ugt.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i160(i1: i160, i2: i160) returns (i1) { (if $ugt.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i256(i1: i256, i2: i256) returns (i1) { (if $ugt.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i1(i1: i1, i2: i1) returns (i1) { (if $sle.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i5(i1: i5, i2: i5) returns (i1) { (if $sle.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i6(i1: i6, i2: i6) returns (i1) { (if $sle.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i8(i1: i8, i2: i8) returns (i1) { (if $sle.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i16(i1: i16, i2: i16) returns (i1) { (if $sle.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i24(i1: i24, i2: i24) returns (i1) { (if $sle.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i32(i1: i32, i2: i32) returns (i1) { (if $sle.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i33(i1: i33, i2: i33) returns (i1) { (if $sle.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i40(i1: i40, i2: i40) returns (i1) { (if $sle.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i48(i1: i48, i2: i48) returns (i1) { (if $sle.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i56(i1: i56, i2: i56) returns (i1) { (if $sle.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i64(i1: i64, i2: i64) returns (i1) { (if $sle.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i80(i1: i80, i2: i80) returns (i1) { (if $sle.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i88(i1: i88, i2: i88) returns (i1) { (if $sle.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i96(i1: i96, i2: i96) returns (i1) { (if $sle.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i128(i1: i128, i2: i128) returns (i1) { (if $sle.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i160(i1: i160, i2: i160) returns (i1) { (if $sle.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i256(i1: i256, i2: i256) returns (i1) { (if $sle.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 < i2) } +function {:inline} $slt.i1(i1: i1, i2: i1) returns (i1) { (if $slt.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 < i2) } +function {:inline} $slt.i5(i1: i5, i2: i5) returns (i1) { (if $slt.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 < i2) } +function {:inline} $slt.i6(i1: i6, i2: i6) returns (i1) { (if $slt.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 < i2) } +function {:inline} $slt.i8(i1: i8, i2: i8) returns (i1) { (if $slt.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 < i2) } +function {:inline} $slt.i16(i1: i16, i2: i16) returns (i1) { (if $slt.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 < i2) } +function {:inline} $slt.i24(i1: i24, i2: i24) returns (i1) { (if $slt.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 < i2) } +function {:inline} $slt.i32(i1: i32, i2: i32) returns (i1) { (if $slt.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 < i2) } +function {:inline} $slt.i33(i1: i33, i2: i33) returns (i1) { (if $slt.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 < i2) } +function {:inline} $slt.i40(i1: i40, i2: i40) returns (i1) { (if $slt.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 < i2) } +function {:inline} $slt.i48(i1: i48, i2: i48) returns (i1) { (if $slt.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 < i2) } +function {:inline} $slt.i56(i1: i56, i2: i56) returns (i1) { (if $slt.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 < i2) } +function {:inline} $slt.i64(i1: i64, i2: i64) returns (i1) { (if $slt.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 < i2) } +function {:inline} $slt.i80(i1: i80, i2: i80) returns (i1) { (if $slt.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 < i2) } +function {:inline} $slt.i88(i1: i88, i2: i88) returns (i1) { (if $slt.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 < i2) } +function {:inline} $slt.i96(i1: i96, i2: i96) returns (i1) { (if $slt.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 < i2) } +function {:inline} $slt.i128(i1: i128, i2: i128) returns (i1) { (if $slt.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 < i2) } +function {:inline} $slt.i160(i1: i160, i2: i160) returns (i1) { (if $slt.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 < i2) } +function {:inline} $slt.i256(i1: i256, i2: i256) returns (i1) { (if $slt.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i1(i1: i1, i2: i1) returns (i1) { (if $sge.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i5(i1: i5, i2: i5) returns (i1) { (if $sge.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i6(i1: i6, i2: i6) returns (i1) { (if $sge.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i8(i1: i8, i2: i8) returns (i1) { (if $sge.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i16(i1: i16, i2: i16) returns (i1) { (if $sge.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i24(i1: i24, i2: i24) returns (i1) { (if $sge.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i32(i1: i32, i2: i32) returns (i1) { (if $sge.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i33(i1: i33, i2: i33) returns (i1) { (if $sge.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i40(i1: i40, i2: i40) returns (i1) { (if $sge.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i48(i1: i48, i2: i48) returns (i1) { (if $sge.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i56(i1: i56, i2: i56) returns (i1) { (if $sge.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i64(i1: i64, i2: i64) returns (i1) { (if $sge.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i80(i1: i80, i2: i80) returns (i1) { (if $sge.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i88(i1: i88, i2: i88) returns (i1) { (if $sge.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i96(i1: i96, i2: i96) returns (i1) { (if $sge.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i128(i1: i128, i2: i128) returns (i1) { (if $sge.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i160(i1: i160, i2: i160) returns (i1) { (if $sge.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i256(i1: i256, i2: i256) returns (i1) { (if $sge.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i1(i1: i1, i2: i1) returns (i1) { (if $sgt.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i5(i1: i5, i2: i5) returns (i1) { (if $sgt.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i6(i1: i6, i2: i6) returns (i1) { (if $sgt.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i8(i1: i8, i2: i8) returns (i1) { (if $sgt.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i16(i1: i16, i2: i16) returns (i1) { (if $sgt.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i24(i1: i24, i2: i24) returns (i1) { (if $sgt.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i32(i1: i32, i2: i32) returns (i1) { (if $sgt.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i33(i1: i33, i2: i33) returns (i1) { (if $sgt.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i40(i1: i40, i2: i40) returns (i1) { (if $sgt.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i48(i1: i48, i2: i48) returns (i1) { (if $sgt.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i56(i1: i56, i2: i56) returns (i1) { (if $sgt.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i64(i1: i64, i2: i64) returns (i1) { (if $sgt.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i80(i1: i80, i2: i80) returns (i1) { (if $sgt.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i88(i1: i88, i2: i88) returns (i1) { (if $sgt.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i96(i1: i96, i2: i96) returns (i1) { (if $sgt.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i128(i1: i128, i2: i128) returns (i1) { (if $sgt.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i160(i1: i160, i2: i160) returns (i1) { (if $sgt.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i256(i1: i256, i2: i256) returns (i1) { (if $sgt.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 == i2) } +function {:inline} $eq.i1(i1: i1, i2: i1) returns (i1) { (if $eq.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 == i2) } +function {:inline} $eq.i5(i1: i5, i2: i5) returns (i1) { (if $eq.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 == i2) } +function {:inline} $eq.i6(i1: i6, i2: i6) returns (i1) { (if $eq.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 == i2) } +function {:inline} $eq.i8(i1: i8, i2: i8) returns (i1) { (if $eq.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 == i2) } +function {:inline} $eq.i16(i1: i16, i2: i16) returns (i1) { (if $eq.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 == i2) } +function {:inline} $eq.i24(i1: i24, i2: i24) returns (i1) { (if $eq.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 == i2) } +function {:inline} $eq.i32(i1: i32, i2: i32) returns (i1) { (if $eq.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 == i2) } +function {:inline} $eq.i33(i1: i33, i2: i33) returns (i1) { (if $eq.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 == i2) } +function {:inline} $eq.i40(i1: i40, i2: i40) returns (i1) { (if $eq.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 == i2) } +function {:inline} $eq.i48(i1: i48, i2: i48) returns (i1) { (if $eq.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 == i2) } +function {:inline} $eq.i56(i1: i56, i2: i56) returns (i1) { (if $eq.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 == i2) } +function {:inline} $eq.i64(i1: i64, i2: i64) returns (i1) { (if $eq.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 == i2) } +function {:inline} $eq.i80(i1: i80, i2: i80) returns (i1) { (if $eq.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 == i2) } +function {:inline} $eq.i88(i1: i88, i2: i88) returns (i1) { (if $eq.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 == i2) } +function {:inline} $eq.i96(i1: i96, i2: i96) returns (i1) { (if $eq.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 == i2) } +function {:inline} $eq.i128(i1: i128, i2: i128) returns (i1) { (if $eq.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 == i2) } +function {:inline} $eq.i160(i1: i160, i2: i160) returns (i1) { (if $eq.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 == i2) } +function {:inline} $eq.i256(i1: i256, i2: i256) returns (i1) { (if $eq.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 != i2) } +function {:inline} $ne.i1(i1: i1, i2: i1) returns (i1) { (if $ne.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 != i2) } +function {:inline} $ne.i5(i1: i5, i2: i5) returns (i1) { (if $ne.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 != i2) } +function {:inline} $ne.i6(i1: i6, i2: i6) returns (i1) { (if $ne.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 != i2) } +function {:inline} $ne.i8(i1: i8, i2: i8) returns (i1) { (if $ne.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 != i2) } +function {:inline} $ne.i16(i1: i16, i2: i16) returns (i1) { (if $ne.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 != i2) } +function {:inline} $ne.i24(i1: i24, i2: i24) returns (i1) { (if $ne.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 != i2) } +function {:inline} $ne.i32(i1: i32, i2: i32) returns (i1) { (if $ne.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 != i2) } +function {:inline} $ne.i33(i1: i33, i2: i33) returns (i1) { (if $ne.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 != i2) } +function {:inline} $ne.i40(i1: i40, i2: i40) returns (i1) { (if $ne.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 != i2) } +function {:inline} $ne.i48(i1: i48, i2: i48) returns (i1) { (if $ne.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 != i2) } +function {:inline} $ne.i56(i1: i56, i2: i56) returns (i1) { (if $ne.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 != i2) } +function {:inline} $ne.i64(i1: i64, i2: i64) returns (i1) { (if $ne.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 != i2) } +function {:inline} $ne.i80(i1: i80, i2: i80) returns (i1) { (if $ne.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 != i2) } +function {:inline} $ne.i88(i1: i88, i2: i88) returns (i1) { (if $ne.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 != i2) } +function {:inline} $ne.i96(i1: i96, i2: i96) returns (i1) { (if $ne.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 != i2) } +function {:inline} $ne.i128(i1: i128, i2: i128) returns (i1) { (if $ne.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 != i2) } +function {:inline} $ne.i160(i1: i160, i2: i160) returns (i1) { (if $ne.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 != i2) } +function {:inline} $ne.i256(i1: i256, i2: i256) returns (i1) { (if $ne.i256.bool(i1, i2) then 1 else 0) } +// Integer load/store operations +function {:inline} $load.i1(M: [ref] i1, p: ref) returns (i1) { M[p] } +function {:inline} $store.i1(M: [ref] i1, p: ref, i: i1) returns ([ref] i1) { M[p := i] } +function {:inline} $load.i5(M: [ref] i5, p: ref) returns (i5) { M[p] } +function {:inline} $store.i5(M: [ref] i5, p: ref, i: i5) returns ([ref] i5) { M[p := i] } +function {:inline} $load.i6(M: [ref] i6, p: ref) returns (i6) { M[p] } +function {:inline} $store.i6(M: [ref] i6, p: ref, i: i6) returns ([ref] i6) { M[p := i] } +function {:inline} $load.i8(M: [ref] i8, p: ref) returns (i8) { M[p] } +function {:inline} $store.i8(M: [ref] i8, p: ref, i: i8) returns ([ref] i8) { M[p := i] } +function {:inline} $load.i16(M: [ref] i16, p: ref) returns (i16) { M[p] } +function {:inline} $store.i16(M: [ref] i16, p: ref, i: i16) returns ([ref] i16) { M[p := i] } +function {:inline} $load.i24(M: [ref] i24, p: ref) returns (i24) { M[p] } +function {:inline} $store.i24(M: [ref] i24, p: ref, i: i24) returns ([ref] i24) { M[p := i] } +function {:inline} $load.i32(M: [ref] i32, p: ref) returns (i32) { M[p] } +function {:inline} $store.i32(M: [ref] i32, p: ref, i: i32) returns ([ref] i32) { M[p := i] } +function {:inline} $load.i33(M: [ref] i33, p: ref) returns (i33) { M[p] } +function {:inline} $store.i33(M: [ref] i33, p: ref, i: i33) returns ([ref] i33) { M[p := i] } +function {:inline} $load.i40(M: [ref] i40, p: ref) returns (i40) { M[p] } +function {:inline} $store.i40(M: [ref] i40, p: ref, i: i40) returns ([ref] i40) { M[p := i] } +function {:inline} $load.i48(M: [ref] i48, p: ref) returns (i48) { M[p] } +function {:inline} $store.i48(M: [ref] i48, p: ref, i: i48) returns ([ref] i48) { M[p := i] } +function {:inline} $load.i56(M: [ref] i56, p: ref) returns (i56) { M[p] } +function {:inline} $store.i56(M: [ref] i56, p: ref, i: i56) returns ([ref] i56) { M[p := i] } +function {:inline} $load.i64(M: [ref] i64, p: ref) returns (i64) { M[p] } +function {:inline} $store.i64(M: [ref] i64, p: ref, i: i64) returns ([ref] i64) { M[p := i] } +function {:inline} $load.i80(M: [ref] i80, p: ref) returns (i80) { M[p] } +function {:inline} $store.i80(M: [ref] i80, p: ref, i: i80) returns ([ref] i80) { M[p := i] } +function {:inline} $load.i88(M: [ref] i88, p: ref) returns (i88) { M[p] } +function {:inline} $store.i88(M: [ref] i88, p: ref, i: i88) returns ([ref] i88) { M[p := i] } +function {:inline} $load.i96(M: [ref] i96, p: ref) returns (i96) { M[p] } +function {:inline} $store.i96(M: [ref] i96, p: ref, i: i96) returns ([ref] i96) { M[p := i] } +function {:inline} $load.i128(M: [ref] i128, p: ref) returns (i128) { M[p] } +function {:inline} $store.i128(M: [ref] i128, p: ref, i: i128) returns ([ref] i128) { M[p := i] } +function {:inline} $load.i160(M: [ref] i160, p: ref) returns (i160) { M[p] } +function {:inline} $store.i160(M: [ref] i160, p: ref, i: i160) returns ([ref] i160) { M[p := i] } +function {:inline} $load.i256(M: [ref] i256, p: ref) returns (i256) { M[p] } +function {:inline} $store.i256(M: [ref] i256, p: ref, i: i256) returns ([ref] i256) { M[p := i] } +// Conversion between integer types +function {:inline} $trunc.i5.i1(i: i5) returns (i1) { i } +function {:inline} $trunc.i6.i1(i: i6) returns (i1) { i } +function {:inline} $trunc.i8.i1(i: i8) returns (i1) { i } +function {:inline} $trunc.i16.i1(i: i16) returns (i1) { i } +function {:inline} $trunc.i24.i1(i: i24) returns (i1) { i } +function {:inline} $trunc.i32.i1(i: i32) returns (i1) { i } +function {:inline} $trunc.i33.i1(i: i33) returns (i1) { i } +function {:inline} $trunc.i40.i1(i: i40) returns (i1) { i } +function {:inline} $trunc.i48.i1(i: i48) returns (i1) { i } +function {:inline} $trunc.i56.i1(i: i56) returns (i1) { i } +function {:inline} $trunc.i64.i1(i: i64) returns (i1) { i } +function {:inline} $trunc.i80.i1(i: i80) returns (i1) { i } +function {:inline} $trunc.i88.i1(i: i88) returns (i1) { i } +function {:inline} $trunc.i96.i1(i: i96) returns (i1) { i } +function {:inline} $trunc.i128.i1(i: i128) returns (i1) { i } +function {:inline} $trunc.i160.i1(i: i160) returns (i1) { i } +function {:inline} $trunc.i256.i1(i: i256) returns (i1) { i } +function {:inline} $trunc.i6.i5(i: i6) returns (i5) { i } +function {:inline} $trunc.i8.i5(i: i8) returns (i5) { i } +function {:inline} $trunc.i16.i5(i: i16) returns (i5) { i } +function {:inline} $trunc.i24.i5(i: i24) returns (i5) { i } +function {:inline} $trunc.i32.i5(i: i32) returns (i5) { i } +function {:inline} $trunc.i33.i5(i: i33) returns (i5) { i } +function {:inline} $trunc.i40.i5(i: i40) returns (i5) { i } +function {:inline} $trunc.i48.i5(i: i48) returns (i5) { i } +function {:inline} $trunc.i56.i5(i: i56) returns (i5) { i } +function {:inline} $trunc.i64.i5(i: i64) returns (i5) { i } +function {:inline} $trunc.i80.i5(i: i80) returns (i5) { i } +function {:inline} $trunc.i88.i5(i: i88) returns (i5) { i } +function {:inline} $trunc.i96.i5(i: i96) returns (i5) { i } +function {:inline} $trunc.i128.i5(i: i128) returns (i5) { i } +function {:inline} $trunc.i160.i5(i: i160) returns (i5) { i } +function {:inline} $trunc.i256.i5(i: i256) returns (i5) { i } +function {:inline} $trunc.i8.i6(i: i8) returns (i6) { i } +function {:inline} $trunc.i16.i6(i: i16) returns (i6) { i } +function {:inline} $trunc.i24.i6(i: i24) returns (i6) { i } +function {:inline} $trunc.i32.i6(i: i32) returns (i6) { i } +function {:inline} $trunc.i33.i6(i: i33) returns (i6) { i } +function {:inline} $trunc.i40.i6(i: i40) returns (i6) { i } +function {:inline} $trunc.i48.i6(i: i48) returns (i6) { i } +function {:inline} $trunc.i56.i6(i: i56) returns (i6) { i } +function {:inline} $trunc.i64.i6(i: i64) returns (i6) { i } +function {:inline} $trunc.i80.i6(i: i80) returns (i6) { i } +function {:inline} $trunc.i88.i6(i: i88) returns (i6) { i } +function {:inline} $trunc.i96.i6(i: i96) returns (i6) { i } +function {:inline} $trunc.i128.i6(i: i128) returns (i6) { i } +function {:inline} $trunc.i160.i6(i: i160) returns (i6) { i } +function {:inline} $trunc.i256.i6(i: i256) returns (i6) { i } +function {:inline} $trunc.i16.i8(i: i16) returns (i8) { i } +function {:inline} $trunc.i24.i8(i: i24) returns (i8) { i } +function {:inline} $trunc.i32.i8(i: i32) returns (i8) { i } +function {:inline} $trunc.i33.i8(i: i33) returns (i8) { i } +function {:inline} $trunc.i40.i8(i: i40) returns (i8) { i } +function {:inline} $trunc.i48.i8(i: i48) returns (i8) { i } +function {:inline} $trunc.i56.i8(i: i56) returns (i8) { i } +function {:inline} $trunc.i64.i8(i: i64) returns (i8) { i } +function {:inline} $trunc.i80.i8(i: i80) returns (i8) { i } +function {:inline} $trunc.i88.i8(i: i88) returns (i8) { i } +function {:inline} $trunc.i96.i8(i: i96) returns (i8) { i } +function {:inline} $trunc.i128.i8(i: i128) returns (i8) { i } +function {:inline} $trunc.i160.i8(i: i160) returns (i8) { i } +function {:inline} $trunc.i256.i8(i: i256) returns (i8) { i } +function {:inline} $trunc.i24.i16(i: i24) returns (i16) { i } +function {:inline} $trunc.i32.i16(i: i32) returns (i16) { i } +function {:inline} $trunc.i33.i16(i: i33) returns (i16) { i } +function {:inline} $trunc.i40.i16(i: i40) returns (i16) { i } +function {:inline} $trunc.i48.i16(i: i48) returns (i16) { i } +function {:inline} $trunc.i56.i16(i: i56) returns (i16) { i } +function {:inline} $trunc.i64.i16(i: i64) returns (i16) { i } +function {:inline} $trunc.i80.i16(i: i80) returns (i16) { i } +function {:inline} $trunc.i88.i16(i: i88) returns (i16) { i } +function {:inline} $trunc.i96.i16(i: i96) returns (i16) { i } +function {:inline} $trunc.i128.i16(i: i128) returns (i16) { i } +function {:inline} $trunc.i160.i16(i: i160) returns (i16) { i } +function {:inline} $trunc.i256.i16(i: i256) returns (i16) { i } +function {:inline} $trunc.i32.i24(i: i32) returns (i24) { i } +function {:inline} $trunc.i33.i24(i: i33) returns (i24) { i } +function {:inline} $trunc.i40.i24(i: i40) returns (i24) { i } +function {:inline} $trunc.i48.i24(i: i48) returns (i24) { i } +function {:inline} $trunc.i56.i24(i: i56) returns (i24) { i } +function {:inline} $trunc.i64.i24(i: i64) returns (i24) { i } +function {:inline} $trunc.i80.i24(i: i80) returns (i24) { i } +function {:inline} $trunc.i88.i24(i: i88) returns (i24) { i } +function {:inline} $trunc.i96.i24(i: i96) returns (i24) { i } +function {:inline} $trunc.i128.i24(i: i128) returns (i24) { i } +function {:inline} $trunc.i160.i24(i: i160) returns (i24) { i } +function {:inline} $trunc.i256.i24(i: i256) returns (i24) { i } +function {:inline} $trunc.i33.i32(i: i33) returns (i32) { i } +function {:inline} $trunc.i40.i32(i: i40) returns (i32) { i } +function {:inline} $trunc.i48.i32(i: i48) returns (i32) { i } +function {:inline} $trunc.i56.i32(i: i56) returns (i32) { i } +function {:inline} $trunc.i64.i32(i: i64) returns (i32) { i } +function {:inline} $trunc.i80.i32(i: i80) returns (i32) { i } +function {:inline} $trunc.i88.i32(i: i88) returns (i32) { i } +function {:inline} $trunc.i96.i32(i: i96) returns (i32) { i } +function {:inline} $trunc.i128.i32(i: i128) returns (i32) { i } +function {:inline} $trunc.i160.i32(i: i160) returns (i32) { i } +function {:inline} $trunc.i256.i32(i: i256) returns (i32) { i } +function {:inline} $trunc.i40.i33(i: i40) returns (i33) { i } +function {:inline} $trunc.i48.i33(i: i48) returns (i33) { i } +function {:inline} $trunc.i56.i33(i: i56) returns (i33) { i } +function {:inline} $trunc.i64.i33(i: i64) returns (i33) { i } +function {:inline} $trunc.i80.i33(i: i80) returns (i33) { i } +function {:inline} $trunc.i88.i33(i: i88) returns (i33) { i } +function {:inline} $trunc.i96.i33(i: i96) returns (i33) { i } +function {:inline} $trunc.i128.i33(i: i128) returns (i33) { i } +function {:inline} $trunc.i160.i33(i: i160) returns (i33) { i } +function {:inline} $trunc.i256.i33(i: i256) returns (i33) { i } +function {:inline} $trunc.i48.i40(i: i48) returns (i40) { i } +function {:inline} $trunc.i56.i40(i: i56) returns (i40) { i } +function {:inline} $trunc.i64.i40(i: i64) returns (i40) { i } +function {:inline} $trunc.i80.i40(i: i80) returns (i40) { i } +function {:inline} $trunc.i88.i40(i: i88) returns (i40) { i } +function {:inline} $trunc.i96.i40(i: i96) returns (i40) { i } +function {:inline} $trunc.i128.i40(i: i128) returns (i40) { i } +function {:inline} $trunc.i160.i40(i: i160) returns (i40) { i } +function {:inline} $trunc.i256.i40(i: i256) returns (i40) { i } +function {:inline} $trunc.i56.i48(i: i56) returns (i48) { i } +function {:inline} $trunc.i64.i48(i: i64) returns (i48) { i } +function {:inline} $trunc.i80.i48(i: i80) returns (i48) { i } +function {:inline} $trunc.i88.i48(i: i88) returns (i48) { i } +function {:inline} $trunc.i96.i48(i: i96) returns (i48) { i } +function {:inline} $trunc.i128.i48(i: i128) returns (i48) { i } +function {:inline} $trunc.i160.i48(i: i160) returns (i48) { i } +function {:inline} $trunc.i256.i48(i: i256) returns (i48) { i } +function {:inline} $trunc.i64.i56(i: i64) returns (i56) { i } +function {:inline} $trunc.i80.i56(i: i80) returns (i56) { i } +function {:inline} $trunc.i88.i56(i: i88) returns (i56) { i } +function {:inline} $trunc.i96.i56(i: i96) returns (i56) { i } +function {:inline} $trunc.i128.i56(i: i128) returns (i56) { i } +function {:inline} $trunc.i160.i56(i: i160) returns (i56) { i } +function {:inline} $trunc.i256.i56(i: i256) returns (i56) { i } +function {:inline} $trunc.i80.i64(i: i80) returns (i64) { i } +function {:inline} $trunc.i88.i64(i: i88) returns (i64) { i } +function {:inline} $trunc.i96.i64(i: i96) returns (i64) { i } +function {:inline} $trunc.i128.i64(i: i128) returns (i64) { i } +function {:inline} $trunc.i160.i64(i: i160) returns (i64) { i } +function {:inline} $trunc.i256.i64(i: i256) returns (i64) { i } +function {:inline} $trunc.i88.i80(i: i88) returns (i80) { i } +function {:inline} $trunc.i96.i80(i: i96) returns (i80) { i } +function {:inline} $trunc.i128.i80(i: i128) returns (i80) { i } +function {:inline} $trunc.i160.i80(i: i160) returns (i80) { i } +function {:inline} $trunc.i256.i80(i: i256) returns (i80) { i } +function {:inline} $trunc.i96.i88(i: i96) returns (i88) { i } +function {:inline} $trunc.i128.i88(i: i128) returns (i88) { i } +function {:inline} $trunc.i160.i88(i: i160) returns (i88) { i } +function {:inline} $trunc.i256.i88(i: i256) returns (i88) { i } +function {:inline} $trunc.i128.i96(i: i128) returns (i96) { i } +function {:inline} $trunc.i160.i96(i: i160) returns (i96) { i } +function {:inline} $trunc.i256.i96(i: i256) returns (i96) { i } +function {:inline} $trunc.i160.i128(i: i160) returns (i128) { i } +function {:inline} $trunc.i256.i128(i: i256) returns (i128) { i } +function {:inline} $trunc.i256.i160(i: i256) returns (i160) { i } +function {:inline} $sext.i1.i5(i: i1) returns (i5) { i } +function {:inline} $sext.i1.i6(i: i1) returns (i6) { i } +function {:inline} $sext.i1.i8(i: i1) returns (i8) { i } +function {:inline} $sext.i1.i16(i: i1) returns (i16) { i } +function {:inline} $sext.i1.i24(i: i1) returns (i24) { i } +function {:inline} $sext.i1.i32(i: i1) returns (i32) { i } +function {:inline} $sext.i1.i33(i: i1) returns (i33) { i } +function {:inline} $sext.i1.i40(i: i1) returns (i40) { i } +function {:inline} $sext.i1.i48(i: i1) returns (i48) { i } +function {:inline} $sext.i1.i56(i: i1) returns (i56) { i } +function {:inline} $sext.i1.i64(i: i1) returns (i64) { i } +function {:inline} $sext.i1.i80(i: i1) returns (i80) { i } +function {:inline} $sext.i1.i88(i: i1) returns (i88) { i } +function {:inline} $sext.i1.i96(i: i1) returns (i96) { i } +function {:inline} $sext.i1.i128(i: i1) returns (i128) { i } +function {:inline} $sext.i1.i160(i: i1) returns (i160) { i } +function {:inline} $sext.i1.i256(i: i1) returns (i256) { i } +function {:inline} $sext.i5.i6(i: i5) returns (i6) { i } +function {:inline} $sext.i5.i8(i: i5) returns (i8) { i } +function {:inline} $sext.i5.i16(i: i5) returns (i16) { i } +function {:inline} $sext.i5.i24(i: i5) returns (i24) { i } +function {:inline} $sext.i5.i32(i: i5) returns (i32) { i } +function {:inline} $sext.i5.i33(i: i5) returns (i33) { i } +function {:inline} $sext.i5.i40(i: i5) returns (i40) { i } +function {:inline} $sext.i5.i48(i: i5) returns (i48) { i } +function {:inline} $sext.i5.i56(i: i5) returns (i56) { i } +function {:inline} $sext.i5.i64(i: i5) returns (i64) { i } +function {:inline} $sext.i5.i80(i: i5) returns (i80) { i } +function {:inline} $sext.i5.i88(i: i5) returns (i88) { i } +function {:inline} $sext.i5.i96(i: i5) returns (i96) { i } +function {:inline} $sext.i5.i128(i: i5) returns (i128) { i } +function {:inline} $sext.i5.i160(i: i5) returns (i160) { i } +function {:inline} $sext.i5.i256(i: i5) returns (i256) { i } +function {:inline} $sext.i6.i8(i: i6) returns (i8) { i } +function {:inline} $sext.i6.i16(i: i6) returns (i16) { i } +function {:inline} $sext.i6.i24(i: i6) returns (i24) { i } +function {:inline} $sext.i6.i32(i: i6) returns (i32) { i } +function {:inline} $sext.i6.i33(i: i6) returns (i33) { i } +function {:inline} $sext.i6.i40(i: i6) returns (i40) { i } +function {:inline} $sext.i6.i48(i: i6) returns (i48) { i } +function {:inline} $sext.i6.i56(i: i6) returns (i56) { i } +function {:inline} $sext.i6.i64(i: i6) returns (i64) { i } +function {:inline} $sext.i6.i80(i: i6) returns (i80) { i } +function {:inline} $sext.i6.i88(i: i6) returns (i88) { i } +function {:inline} $sext.i6.i96(i: i6) returns (i96) { i } +function {:inline} $sext.i6.i128(i: i6) returns (i128) { i } +function {:inline} $sext.i6.i160(i: i6) returns (i160) { i } +function {:inline} $sext.i6.i256(i: i6) returns (i256) { i } +function {:inline} $sext.i8.i16(i: i8) returns (i16) { i } +function {:inline} $sext.i8.i24(i: i8) returns (i24) { i } +function {:inline} $sext.i8.i32(i: i8) returns (i32) { i } +function {:inline} $sext.i8.i33(i: i8) returns (i33) { i } +function {:inline} $sext.i8.i40(i: i8) returns (i40) { i } +function {:inline} $sext.i8.i48(i: i8) returns (i48) { i } +function {:inline} $sext.i8.i56(i: i8) returns (i56) { i } +function {:inline} $sext.i8.i64(i: i8) returns (i64) { i } +function {:inline} $sext.i8.i80(i: i8) returns (i80) { i } +function {:inline} $sext.i8.i88(i: i8) returns (i88) { i } +function {:inline} $sext.i8.i96(i: i8) returns (i96) { i } +function {:inline} $sext.i8.i128(i: i8) returns (i128) { i } +function {:inline} $sext.i8.i160(i: i8) returns (i160) { i } +function {:inline} $sext.i8.i256(i: i8) returns (i256) { i } +function {:inline} $sext.i16.i24(i: i16) returns (i24) { i } +function {:inline} $sext.i16.i32(i: i16) returns (i32) { i } +function {:inline} $sext.i16.i33(i: i16) returns (i33) { i } +function {:inline} $sext.i16.i40(i: i16) returns (i40) { i } +function {:inline} $sext.i16.i48(i: i16) returns (i48) { i } +function {:inline} $sext.i16.i56(i: i16) returns (i56) { i } +function {:inline} $sext.i16.i64(i: i16) returns (i64) { i } +function {:inline} $sext.i16.i80(i: i16) returns (i80) { i } +function {:inline} $sext.i16.i88(i: i16) returns (i88) { i } +function {:inline} $sext.i16.i96(i: i16) returns (i96) { i } +function {:inline} $sext.i16.i128(i: i16) returns (i128) { i } +function {:inline} $sext.i16.i160(i: i16) returns (i160) { i } +function {:inline} $sext.i16.i256(i: i16) returns (i256) { i } +function {:inline} $sext.i24.i32(i: i24) returns (i32) { i } +function {:inline} $sext.i24.i33(i: i24) returns (i33) { i } +function {:inline} $sext.i24.i40(i: i24) returns (i40) { i } +function {:inline} $sext.i24.i48(i: i24) returns (i48) { i } +function {:inline} $sext.i24.i56(i: i24) returns (i56) { i } +function {:inline} $sext.i24.i64(i: i24) returns (i64) { i } +function {:inline} $sext.i24.i80(i: i24) returns (i80) { i } +function {:inline} $sext.i24.i88(i: i24) returns (i88) { i } +function {:inline} $sext.i24.i96(i: i24) returns (i96) { i } +function {:inline} $sext.i24.i128(i: i24) returns (i128) { i } +function {:inline} $sext.i24.i160(i: i24) returns (i160) { i } +function {:inline} $sext.i24.i256(i: i24) returns (i256) { i } +function {:inline} $sext.i32.i33(i: i32) returns (i33) { i } +function {:inline} $sext.i32.i40(i: i32) returns (i40) { i } +function {:inline} $sext.i32.i48(i: i32) returns (i48) { i } +function {:inline} $sext.i32.i56(i: i32) returns (i56) { i } +function {:inline} $sext.i32.i64(i: i32) returns (i64) { i } +function {:inline} $sext.i32.i80(i: i32) returns (i80) { i } +function {:inline} $sext.i32.i88(i: i32) returns (i88) { i } +function {:inline} $sext.i32.i96(i: i32) returns (i96) { i } +function {:inline} $sext.i32.i128(i: i32) returns (i128) { i } +function {:inline} $sext.i32.i160(i: i32) returns (i160) { i } +function {:inline} $sext.i32.i256(i: i32) returns (i256) { i } +function {:inline} $sext.i33.i40(i: i33) returns (i40) { i } +function {:inline} $sext.i33.i48(i: i33) returns (i48) { i } +function {:inline} $sext.i33.i56(i: i33) returns (i56) { i } +function {:inline} $sext.i33.i64(i: i33) returns (i64) { i } +function {:inline} $sext.i33.i80(i: i33) returns (i80) { i } +function {:inline} $sext.i33.i88(i: i33) returns (i88) { i } +function {:inline} $sext.i33.i96(i: i33) returns (i96) { i } +function {:inline} $sext.i33.i128(i: i33) returns (i128) { i } +function {:inline} $sext.i33.i160(i: i33) returns (i160) { i } +function {:inline} $sext.i33.i256(i: i33) returns (i256) { i } +function {:inline} $sext.i40.i48(i: i40) returns (i48) { i } +function {:inline} $sext.i40.i56(i: i40) returns (i56) { i } +function {:inline} $sext.i40.i64(i: i40) returns (i64) { i } +function {:inline} $sext.i40.i80(i: i40) returns (i80) { i } +function {:inline} $sext.i40.i88(i: i40) returns (i88) { i } +function {:inline} $sext.i40.i96(i: i40) returns (i96) { i } +function {:inline} $sext.i40.i128(i: i40) returns (i128) { i } +function {:inline} $sext.i40.i160(i: i40) returns (i160) { i } +function {:inline} $sext.i40.i256(i: i40) returns (i256) { i } +function {:inline} $sext.i48.i56(i: i48) returns (i56) { i } +function {:inline} $sext.i48.i64(i: i48) returns (i64) { i } +function {:inline} $sext.i48.i80(i: i48) returns (i80) { i } +function {:inline} $sext.i48.i88(i: i48) returns (i88) { i } +function {:inline} $sext.i48.i96(i: i48) returns (i96) { i } +function {:inline} $sext.i48.i128(i: i48) returns (i128) { i } +function {:inline} $sext.i48.i160(i: i48) returns (i160) { i } +function {:inline} $sext.i48.i256(i: i48) returns (i256) { i } +function {:inline} $sext.i56.i64(i: i56) returns (i64) { i } +function {:inline} $sext.i56.i80(i: i56) returns (i80) { i } +function {:inline} $sext.i56.i88(i: i56) returns (i88) { i } +function {:inline} $sext.i56.i96(i: i56) returns (i96) { i } +function {:inline} $sext.i56.i128(i: i56) returns (i128) { i } +function {:inline} $sext.i56.i160(i: i56) returns (i160) { i } +function {:inline} $sext.i56.i256(i: i56) returns (i256) { i } +function {:inline} $sext.i64.i80(i: i64) returns (i80) { i } +function {:inline} $sext.i64.i88(i: i64) returns (i88) { i } +function {:inline} $sext.i64.i96(i: i64) returns (i96) { i } +function {:inline} $sext.i64.i128(i: i64) returns (i128) { i } +function {:inline} $sext.i64.i160(i: i64) returns (i160) { i } +function {:inline} $sext.i64.i256(i: i64) returns (i256) { i } +function {:inline} $sext.i80.i88(i: i80) returns (i88) { i } +function {:inline} $sext.i80.i96(i: i80) returns (i96) { i } +function {:inline} $sext.i80.i128(i: i80) returns (i128) { i } +function {:inline} $sext.i80.i160(i: i80) returns (i160) { i } +function {:inline} $sext.i80.i256(i: i80) returns (i256) { i } +function {:inline} $sext.i88.i96(i: i88) returns (i96) { i } +function {:inline} $sext.i88.i128(i: i88) returns (i128) { i } +function {:inline} $sext.i88.i160(i: i88) returns (i160) { i } +function {:inline} $sext.i88.i256(i: i88) returns (i256) { i } +function {:inline} $sext.i96.i128(i: i96) returns (i128) { i } +function {:inline} $sext.i96.i160(i: i96) returns (i160) { i } +function {:inline} $sext.i96.i256(i: i96) returns (i256) { i } +function {:inline} $sext.i128.i160(i: i128) returns (i160) { i } +function {:inline} $sext.i128.i256(i: i128) returns (i256) { i } +function {:inline} $sext.i160.i256(i: i160) returns (i256) { i } +function {:inline} $zext.i1.i5(i: i1) returns (i5) { i } +function {:inline} $zext.i1.i6(i: i1) returns (i6) { i } +function {:inline} $zext.i1.i8(i: i1) returns (i8) { i } +function {:inline} $zext.i1.i16(i: i1) returns (i16) { i } +function {:inline} $zext.i1.i24(i: i1) returns (i24) { i } +function {:inline} $zext.i1.i32(i: i1) returns (i32) { i } +function {:inline} $zext.i1.i33(i: i1) returns (i33) { i } +function {:inline} $zext.i1.i40(i: i1) returns (i40) { i } +function {:inline} $zext.i1.i48(i: i1) returns (i48) { i } +function {:inline} $zext.i1.i56(i: i1) returns (i56) { i } +function {:inline} $zext.i1.i64(i: i1) returns (i64) { i } +function {:inline} $zext.i1.i80(i: i1) returns (i80) { i } +function {:inline} $zext.i1.i88(i: i1) returns (i88) { i } +function {:inline} $zext.i1.i96(i: i1) returns (i96) { i } +function {:inline} $zext.i1.i128(i: i1) returns (i128) { i } +function {:inline} $zext.i1.i160(i: i1) returns (i160) { i } +function {:inline} $zext.i1.i256(i: i1) returns (i256) { i } +function {:inline} $zext.i5.i6(i: i5) returns (i6) { i } +function {:inline} $zext.i5.i8(i: i5) returns (i8) { i } +function {:inline} $zext.i5.i16(i: i5) returns (i16) { i } +function {:inline} $zext.i5.i24(i: i5) returns (i24) { i } +function {:inline} $zext.i5.i32(i: i5) returns (i32) { i } +function {:inline} $zext.i5.i33(i: i5) returns (i33) { i } +function {:inline} $zext.i5.i40(i: i5) returns (i40) { i } +function {:inline} $zext.i5.i48(i: i5) returns (i48) { i } +function {:inline} $zext.i5.i56(i: i5) returns (i56) { i } +function {:inline} $zext.i5.i64(i: i5) returns (i64) { i } +function {:inline} $zext.i5.i80(i: i5) returns (i80) { i } +function {:inline} $zext.i5.i88(i: i5) returns (i88) { i } +function {:inline} $zext.i5.i96(i: i5) returns (i96) { i } +function {:inline} $zext.i5.i128(i: i5) returns (i128) { i } +function {:inline} $zext.i5.i160(i: i5) returns (i160) { i } +function {:inline} $zext.i5.i256(i: i5) returns (i256) { i } +function {:inline} $zext.i6.i8(i: i6) returns (i8) { i } +function {:inline} $zext.i6.i16(i: i6) returns (i16) { i } +function {:inline} $zext.i6.i24(i: i6) returns (i24) { i } +function {:inline} $zext.i6.i32(i: i6) returns (i32) { i } +function {:inline} $zext.i6.i33(i: i6) returns (i33) { i } +function {:inline} $zext.i6.i40(i: i6) returns (i40) { i } +function {:inline} $zext.i6.i48(i: i6) returns (i48) { i } +function {:inline} $zext.i6.i56(i: i6) returns (i56) { i } +function {:inline} $zext.i6.i64(i: i6) returns (i64) { i } +function {:inline} $zext.i6.i80(i: i6) returns (i80) { i } +function {:inline} $zext.i6.i88(i: i6) returns (i88) { i } +function {:inline} $zext.i6.i96(i: i6) returns (i96) { i } +function {:inline} $zext.i6.i128(i: i6) returns (i128) { i } +function {:inline} $zext.i6.i160(i: i6) returns (i160) { i } +function {:inline} $zext.i6.i256(i: i6) returns (i256) { i } +function {:inline} $zext.i8.i16(i: i8) returns (i16) { i } +function {:inline} $zext.i8.i24(i: i8) returns (i24) { i } +function {:inline} $zext.i8.i32(i: i8) returns (i32) { i } +function {:inline} $zext.i8.i33(i: i8) returns (i33) { i } +function {:inline} $zext.i8.i40(i: i8) returns (i40) { i } +function {:inline} $zext.i8.i48(i: i8) returns (i48) { i } +function {:inline} $zext.i8.i56(i: i8) returns (i56) { i } +function {:inline} $zext.i8.i64(i: i8) returns (i64) { i } +function {:inline} $zext.i8.i80(i: i8) returns (i80) { i } +function {:inline} $zext.i8.i88(i: i8) returns (i88) { i } +function {:inline} $zext.i8.i96(i: i8) returns (i96) { i } +function {:inline} $zext.i8.i128(i: i8) returns (i128) { i } +function {:inline} $zext.i8.i160(i: i8) returns (i160) { i } +function {:inline} $zext.i8.i256(i: i8) returns (i256) { i } +function {:inline} $zext.i16.i24(i: i16) returns (i24) { i } +function {:inline} $zext.i16.i32(i: i16) returns (i32) { i } +function {:inline} $zext.i16.i33(i: i16) returns (i33) { i } +function {:inline} $zext.i16.i40(i: i16) returns (i40) { i } +function {:inline} $zext.i16.i48(i: i16) returns (i48) { i } +function {:inline} $zext.i16.i56(i: i16) returns (i56) { i } +function {:inline} $zext.i16.i64(i: i16) returns (i64) { i } +function {:inline} $zext.i16.i80(i: i16) returns (i80) { i } +function {:inline} $zext.i16.i88(i: i16) returns (i88) { i } +function {:inline} $zext.i16.i96(i: i16) returns (i96) { i } +function {:inline} $zext.i16.i128(i: i16) returns (i128) { i } +function {:inline} $zext.i16.i160(i: i16) returns (i160) { i } +function {:inline} $zext.i16.i256(i: i16) returns (i256) { i } +function {:inline} $zext.i24.i32(i: i24) returns (i32) { i } +function {:inline} $zext.i24.i33(i: i24) returns (i33) { i } +function {:inline} $zext.i24.i40(i: i24) returns (i40) { i } +function {:inline} $zext.i24.i48(i: i24) returns (i48) { i } +function {:inline} $zext.i24.i56(i: i24) returns (i56) { i } +function {:inline} $zext.i24.i64(i: i24) returns (i64) { i } +function {:inline} $zext.i24.i80(i: i24) returns (i80) { i } +function {:inline} $zext.i24.i88(i: i24) returns (i88) { i } +function {:inline} $zext.i24.i96(i: i24) returns (i96) { i } +function {:inline} $zext.i24.i128(i: i24) returns (i128) { i } +function {:inline} $zext.i24.i160(i: i24) returns (i160) { i } +function {:inline} $zext.i24.i256(i: i24) returns (i256) { i } +function {:inline} $zext.i32.i33(i: i32) returns (i33) { i } +function {:inline} $zext.i32.i40(i: i32) returns (i40) { i } +function {:inline} $zext.i32.i48(i: i32) returns (i48) { i } +function {:inline} $zext.i32.i56(i: i32) returns (i56) { i } +function {:inline} $zext.i32.i64(i: i32) returns (i64) { i } +function {:inline} $zext.i32.i80(i: i32) returns (i80) { i } +function {:inline} $zext.i32.i88(i: i32) returns (i88) { i } +function {:inline} $zext.i32.i96(i: i32) returns (i96) { i } +function {:inline} $zext.i32.i128(i: i32) returns (i128) { i } +function {:inline} $zext.i32.i160(i: i32) returns (i160) { i } +function {:inline} $zext.i32.i256(i: i32) returns (i256) { i } +function {:inline} $zext.i33.i40(i: i33) returns (i40) { i } +function {:inline} $zext.i33.i48(i: i33) returns (i48) { i } +function {:inline} $zext.i33.i56(i: i33) returns (i56) { i } +function {:inline} $zext.i33.i64(i: i33) returns (i64) { i } +function {:inline} $zext.i33.i80(i: i33) returns (i80) { i } +function {:inline} $zext.i33.i88(i: i33) returns (i88) { i } +function {:inline} $zext.i33.i96(i: i33) returns (i96) { i } +function {:inline} $zext.i33.i128(i: i33) returns (i128) { i } +function {:inline} $zext.i33.i160(i: i33) returns (i160) { i } +function {:inline} $zext.i33.i256(i: i33) returns (i256) { i } +function {:inline} $zext.i40.i48(i: i40) returns (i48) { i } +function {:inline} $zext.i40.i56(i: i40) returns (i56) { i } +function {:inline} $zext.i40.i64(i: i40) returns (i64) { i } +function {:inline} $zext.i40.i80(i: i40) returns (i80) { i } +function {:inline} $zext.i40.i88(i: i40) returns (i88) { i } +function {:inline} $zext.i40.i96(i: i40) returns (i96) { i } +function {:inline} $zext.i40.i128(i: i40) returns (i128) { i } +function {:inline} $zext.i40.i160(i: i40) returns (i160) { i } +function {:inline} $zext.i40.i256(i: i40) returns (i256) { i } +function {:inline} $zext.i48.i56(i: i48) returns (i56) { i } +function {:inline} $zext.i48.i64(i: i48) returns (i64) { i } +function {:inline} $zext.i48.i80(i: i48) returns (i80) { i } +function {:inline} $zext.i48.i88(i: i48) returns (i88) { i } +function {:inline} $zext.i48.i96(i: i48) returns (i96) { i } +function {:inline} $zext.i48.i128(i: i48) returns (i128) { i } +function {:inline} $zext.i48.i160(i: i48) returns (i160) { i } +function {:inline} $zext.i48.i256(i: i48) returns (i256) { i } +function {:inline} $zext.i56.i64(i: i56) returns (i64) { i } +function {:inline} $zext.i56.i80(i: i56) returns (i80) { i } +function {:inline} $zext.i56.i88(i: i56) returns (i88) { i } +function {:inline} $zext.i56.i96(i: i56) returns (i96) { i } +function {:inline} $zext.i56.i128(i: i56) returns (i128) { i } +function {:inline} $zext.i56.i160(i: i56) returns (i160) { i } +function {:inline} $zext.i56.i256(i: i56) returns (i256) { i } +function {:inline} $zext.i64.i80(i: i64) returns (i80) { i } +function {:inline} $zext.i64.i88(i: i64) returns (i88) { i } +function {:inline} $zext.i64.i96(i: i64) returns (i96) { i } +function {:inline} $zext.i64.i128(i: i64) returns (i128) { i } +function {:inline} $zext.i64.i160(i: i64) returns (i160) { i } +function {:inline} $zext.i64.i256(i: i64) returns (i256) { i } +function {:inline} $zext.i80.i88(i: i80) returns (i88) { i } +function {:inline} $zext.i80.i96(i: i80) returns (i96) { i } +function {:inline} $zext.i80.i128(i: i80) returns (i128) { i } +function {:inline} $zext.i80.i160(i: i80) returns (i160) { i } +function {:inline} $zext.i80.i256(i: i80) returns (i256) { i } +function {:inline} $zext.i88.i96(i: i88) returns (i96) { i } +function {:inline} $zext.i88.i128(i: i88) returns (i128) { i } +function {:inline} $zext.i88.i160(i: i88) returns (i160) { i } +function {:inline} $zext.i88.i256(i: i88) returns (i256) { i } +function {:inline} $zext.i96.i128(i: i96) returns (i128) { i } +function {:inline} $zext.i96.i160(i: i96) returns (i160) { i } +function {:inline} $zext.i96.i256(i: i96) returns (i256) { i } +function {:inline} $zext.i128.i160(i: i128) returns (i160) { i } +function {:inline} $zext.i128.i256(i: i128) returns (i256) { i } +function {:inline} $zext.i160.i256(i: i160) returns (i256) { i } +function $extractvalue.i1(p: ref, i: int) returns (i1); +function $extractvalue.i5(p: ref, i: int) returns (i5); +function $extractvalue.i6(p: ref, i: int) returns (i6); +function $extractvalue.i8(p: ref, i: int) returns (i8); +function $extractvalue.i16(p: ref, i: int) returns (i16); +function $extractvalue.i24(p: ref, i: int) returns (i24); +function $extractvalue.i32(p: ref, i: int) returns (i32); +function $extractvalue.i33(p: ref, i: int) returns (i33); +function $extractvalue.i40(p: ref, i: int) returns (i40); +function $extractvalue.i48(p: ref, i: int) returns (i48); +function $extractvalue.i56(p: ref, i: int) returns (i56); +function $extractvalue.i64(p: ref, i: int) returns (i64); +function $extractvalue.i80(p: ref, i: int) returns (i80); +function $extractvalue.i88(p: ref, i: int) returns (i88); +function $extractvalue.i96(p: ref, i: int) returns (i96); +function $extractvalue.i128(p: ref, i: int) returns (i128); +function $extractvalue.i160(p: ref, i: int) returns (i160); +function $extractvalue.i256(p: ref, i: int) returns (i256); +// Pointer arithmetic operations +function {:inline} $add.ref(p1: ref, p2: ref) returns (ref) { $add.i64(p1, p2) } +function {:inline} $sub.ref(p1: ref, p2: ref) returns (ref) { $sub.i64(p1, p2) } +function {:inline} $mul.ref(p1: ref, p2: ref) returns (ref) { $mul.i64(p1, p2) } + +// Pointer predicates +function {:inline} $eq.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 == p2) } +function {:inline} $eq.ref(p1: ref, p2: ref) returns (i1) { (if $eq.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $ne.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 != p2) } +function {:inline} $ne.ref(p1: ref, p2: ref) returns (i1) { (if $ne.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $ugt.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 > p2) } +function {:inline} $ugt.ref(p1: ref, p2: ref) returns (i1) { (if $ugt.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $uge.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 >= p2) } +function {:inline} $uge.ref(p1: ref, p2: ref) returns (i1) { (if $uge.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $ult.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 < p2) } +function {:inline} $ult.ref(p1: ref, p2: ref) returns (i1) { (if $ult.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $ule.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 <= p2) } +function {:inline} $ule.ref(p1: ref, p2: ref) returns (i1) { (if $ule.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $sgt.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 > p2) } +function {:inline} $sgt.ref(p1: ref, p2: ref) returns (i1) { (if $sgt.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $sge.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 >= p2) } +function {:inline} $sge.ref(p1: ref, p2: ref) returns (i1) { (if $sge.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $slt.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 < p2) } +function {:inline} $slt.ref(p1: ref, p2: ref) returns (i1) { (if $slt.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $sle.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 <= p2) } +function {:inline} $sle.ref(p1: ref, p2: ref) returns (i1) { (if $sle.ref.bool(p1, p2) then 1 else 0) } + +// Pointer load/store operations +function {:inline} $load.ref(M: [ref] ref, p: ref) returns (ref) { M[p] } +function {:inline} $store.ref(M: [ref] ref, p: ref, i: ref) returns ([ref] ref) { M[p := i] } + +// Pointer conversion +function {:inline} $bitcast.ref.ref(p: ref) returns (ref) { p } +function $extractvalue.ref(p: ref, i: int) returns (ref); +// Pointer-number conversion +function {:inline} $p2i.ref.i8(p: ref) returns (i8) { $trunc.i64.i8(p) } +function {:inline} $i2p.i8.ref(i: i8) returns (ref) { $zext.i8.i64(i) } +function {:inline} $p2i.ref.i16(p: ref) returns (i16) { $trunc.i64.i16(p) } +function {:inline} $i2p.i16.ref(i: i16) returns (ref) { $zext.i16.i64(i) } +function {:inline} $p2i.ref.i32(p: ref) returns (i32) { $trunc.i64.i32(p) } +function {:inline} $i2p.i32.ref(i: i32) returns (ref) { $zext.i32.i64(i) } +function {:inline} $p2i.ref.i64(p: ref) returns (i64) { p } +function {:inline} $i2p.i64.ref(i: i64) returns (ref) { i } + +function $fp(ipart: int, fpart: int, epart: int) returns (float); +// Floating-point arithmetic operations +function $abs.float(f: float) returns (float); +function $round.float(f: float) returns (float); +function $sqrt.float(f: float) returns (float); +function $fadd.float(f1: float, f2: float) returns (float); +function $fsub.float(f1: float, f2: float) returns (float); +function $fmul.float(f1: float, f2: float) returns (float); +function $fdiv.float(f1: float, f2: float) returns (float); +function $frem.float(f1: float, f2: float) returns (float); +function $min.float(f1: float, f2: float) returns (float); +function $max.float(f1: float, f2: float) returns (float); +function $fma.float(f1: float, f2: float, f3: float) returns (float); +function $fneg.float(f: float) returns (float); +// Floating-point predicates +function $foeq.float.bool(f1: float, f2: float) returns (bool); +function $fole.float.bool(f1: float, f2: float) returns (bool); +function $folt.float.bool(f1: float, f2: float) returns (bool); +function $foge.float.bool(f1: float, f2: float) returns (bool); +function $fogt.float.bool(f1: float, f2: float) returns (bool); +function $fone.float.bool(f1: float, f2: float) returns (bool); +function $ford.float.bool(f1: float, f2: float) returns (bool); +function $fueq.float.bool(f1: float, f2: float) returns (bool); +function $fugt.float.bool(f1: float, f2: float) returns (bool); +function $fuge.float.bool(f1: float, f2: float) returns (bool); +function $fult.float.bool(f1: float, f2: float) returns (bool); +function $fule.float.bool(f1: float, f2: float) returns (bool); +function $fune.float.bool(f1: float, f2: float) returns (bool); +function $funo.float.bool(f1: float, f2: float) returns (bool); +function $ffalse.float.bool(f1: float, f2: float) returns (bool); +function $ftrue.float.bool(f1: float, f2: float) returns (bool); +// Floating-point/integer conversion +function $bitcast.float.i8(f: float) returns (i8); +function $bitcast.float.i16(f: float) returns (i16); +function $bitcast.float.i32(f: float) returns (i32); +function $bitcast.float.i64(f: float) returns (i64); +function $bitcast.float.i80(f: float) returns (i80); +function $bitcast.i8.float(i: i8) returns (float); +function $bitcast.i16.float(i: i16) returns (float); +function $bitcast.i32.float(i: i32) returns (float); +function $bitcast.i64.float(i: i64) returns (float); +function $bitcast.i80.float(i: i80) returns (float); +function $fp2si.float.i1(f: float) returns (i1); +function $fp2si.float.i5(f: float) returns (i5); +function $fp2si.float.i6(f: float) returns (i6); +function $fp2si.float.i8(f: float) returns (i8); +function $fp2si.float.i16(f: float) returns (i16); +function $fp2si.float.i24(f: float) returns (i24); +function $fp2si.float.i32(f: float) returns (i32); +function $fp2si.float.i33(f: float) returns (i33); +function $fp2si.float.i40(f: float) returns (i40); +function $fp2si.float.i48(f: float) returns (i48); +function $fp2si.float.i56(f: float) returns (i56); +function $fp2si.float.i64(f: float) returns (i64); +function $fp2si.float.i80(f: float) returns (i80); +function $fp2si.float.i88(f: float) returns (i88); +function $fp2si.float.i96(f: float) returns (i96); +function $fp2si.float.i128(f: float) returns (i128); +function $fp2si.float.i160(f: float) returns (i160); +function $fp2si.float.i256(f: float) returns (i256); +function $fp2ui.float.i1(f: float) returns (i1); +function $fp2ui.float.i5(f: float) returns (i5); +function $fp2ui.float.i6(f: float) returns (i6); +function $fp2ui.float.i8(f: float) returns (i8); +function $fp2ui.float.i16(f: float) returns (i16); +function $fp2ui.float.i24(f: float) returns (i24); +function $fp2ui.float.i32(f: float) returns (i32); +function $fp2ui.float.i33(f: float) returns (i33); +function $fp2ui.float.i40(f: float) returns (i40); +function $fp2ui.float.i48(f: float) returns (i48); +function $fp2ui.float.i56(f: float) returns (i56); +function $fp2ui.float.i64(f: float) returns (i64); +function $fp2ui.float.i80(f: float) returns (i80); +function $fp2ui.float.i88(f: float) returns (i88); +function $fp2ui.float.i96(f: float) returns (i96); +function $fp2ui.float.i128(f: float) returns (i128); +function $fp2ui.float.i160(f: float) returns (i160); +function $fp2ui.float.i256(f: float) returns (i256); +function $si2fp.i1.float(i: i1) returns (float); +function $si2fp.i5.float(i: i5) returns (float); +function $si2fp.i6.float(i: i6) returns (float); +function $si2fp.i8.float(i: i8) returns (float); +function $si2fp.i16.float(i: i16) returns (float); +function $si2fp.i24.float(i: i24) returns (float); +function $si2fp.i32.float(i: i32) returns (float); +function $si2fp.i33.float(i: i33) returns (float); +function $si2fp.i40.float(i: i40) returns (float); +function $si2fp.i48.float(i: i48) returns (float); +function $si2fp.i56.float(i: i56) returns (float); +function $si2fp.i64.float(i: i64) returns (float); +function $si2fp.i80.float(i: i80) returns (float); +function $si2fp.i88.float(i: i88) returns (float); +function $si2fp.i96.float(i: i96) returns (float); +function $si2fp.i128.float(i: i128) returns (float); +function $si2fp.i160.float(i: i160) returns (float); +function $si2fp.i256.float(i: i256) returns (float); +function $ui2fp.i1.float(i: i1) returns (float); +function $ui2fp.i5.float(i: i5) returns (float); +function $ui2fp.i6.float(i: i6) returns (float); +function $ui2fp.i8.float(i: i8) returns (float); +function $ui2fp.i16.float(i: i16) returns (float); +function $ui2fp.i24.float(i: i24) returns (float); +function $ui2fp.i32.float(i: i32) returns (float); +function $ui2fp.i33.float(i: i33) returns (float); +function $ui2fp.i40.float(i: i40) returns (float); +function $ui2fp.i48.float(i: i48) returns (float); +function $ui2fp.i56.float(i: i56) returns (float); +function $ui2fp.i64.float(i: i64) returns (float); +function $ui2fp.i80.float(i: i80) returns (float); +function $ui2fp.i88.float(i: i88) returns (float); +function $ui2fp.i96.float(i: i96) returns (float); +function $ui2fp.i128.float(i: i128) returns (float); +function $ui2fp.i160.float(i: i160) returns (float); +function $ui2fp.i256.float(i: i256) returns (float); +// Floating-point conversion +function $fpext.float.float(f: float) returns (float); +function $fptrunc.float.float(f: float) returns (float); +// Floating-point load/store operations +function {:inline} $load.float(M: [ref] float, p: ref) returns (float) { M[p] } +function {:inline} $store.float(M: [ref] float, p: ref, f: float) returns ([ref] float) { M[p := f] } +function {:inline} $load.unsafe.float(M: [ref] i8, p: ref) returns (float) { $bitcast.i8.float(M[p]) } +function {:inline} $store.unsafe.float(M: [ref] i8, p: ref, f: float) returns ([ref] i8) { M[p := $bitcast.float.i8(f)] } +function $extractvalue.float(p: ref, i: int) returns (float); +const {:allocSize 4} data: ref; +axiom (data == $sub.ref(0, 1028)); +const thread2: ref; +axiom (thread2 == $sub.ref(0, 2060)); +procedure thread2($p0: ref) + returns ($r: ref) +{ +$bb0: + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex.c", 17, 1} true; + assume {:verifier.code 0} true; + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex.c", 17, 1} true; + assume {:verifier.code 0} true; + call __llvm_atomic32_store(data, 42, 5); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex.c", 17, 1} true; + assume {:verifier.code 0} true; + $r := $u0; + $exn := false; + return; +} +const llvm.dbg.value: ref; +axiom (llvm.dbg.value == $sub.ref(0, 3092)); +procedure llvm.dbg.value($p0: ref, $p1: ref, $p2: ref); +const __llvm_atomic32_store: ref; +axiom (__llvm_atomic32_store == $sub.ref(0, 4124)); +procedure __llvm_atomic32_store($p0: ref, $i1: i32, $i2: i32); +const threadCreator: ref; +axiom (threadCreator == $sub.ref(0, 5156)); +procedure threadCreator() + returns ($r: ref) +{ + var $p0: ref; + var $i1: i32; + var $p2: ref; +$bb0: + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex.c", 21, 4} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + call $p0 := $alloc($mul.ref(8, $zext.i32.i64(1))); + assume true; + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex.c", 21, 4} true; + assume {:verifier.code 0} true; + call $i1 := pthread_create($p0, $0.ref, thread2, $0.ref); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex.c", 22, 11} true; + assume {:verifier.code 0} true; + $p2 := $load.ref($M.0, $p0); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex.c", 22, 4} true; + assume {:verifier.code 0} true; + $r := $p2; + $exn := false; + return; +} +const llvm.dbg.declare: ref; +axiom (llvm.dbg.declare == $sub.ref(0, 6188)); +procedure llvm.dbg.declare($p0: ref, $p1: ref, $p2: ref); +const pthread_create: ref; +axiom (pthread_create == $sub.ref(0, 7220)); +procedure pthread_create($p0: ref, $p1: ref, $p2: ref, $p3: ref) + returns ($r: i32); +const thread1: ref; +axiom (thread1 == $sub.ref(0, 8252)); +procedure thread1($p0: ref) + returns ($r: ref) +{ + var $p1: ref; + var $i2: i32; +$bb0: + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex.c", 27, 19} true; + assume {:verifier.code 0} true; + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex.c", 27, 19} true; + assume {:verifier.code 0} true; + call $p1 := threadCreator(); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex.c", 28, 5} true; + assume {:verifier.code 0} true; + call $i2 := __pthread_join($p1, $0.ref); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex.c", 29, 1} true; + assume {:verifier.code 0} true; + $r := $u0; + $exn := false; + return; +} +const __pthread_join: ref; +axiom (__pthread_join == $sub.ref(0, 9284)); +procedure __pthread_join($p0: ref, $p1: ref) + returns ($r: i32); +const main: ref; +axiom (main == $sub.ref(0, 10316)); +procedure {:entrypoint} main() + returns ($r: i32) +{ + var $p0: ref; + var $i1: i32; + var $p2: ref; + var $i3: i32; + var $i4: i32; + var $i5: i1; + var $i6: i32; + var $i7: i32; +$bb0: + call $initialize(); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex.c", 34, 5} true; + assume {:verifier.code 0} true; + call {:cexpr "smack:entry:main"} boogie_si_record_ref(main); + assume {:verifier.code 0} true; + call $p0 := $alloc($mul.ref(8, $zext.i32.i64(1))); + assume true; + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex.c", 34, 5} true; + assume {:verifier.code 0} true; + call $i1 := pthread_create($p0, $0.ref, thread1, $0.ref); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex.c", 35, 18} true; + assume {:verifier.code 0} true; + $p2 := $load.ref($M.0, $p0); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex.c", 35, 5} true; + assume {:verifier.code 0} true; + call $i3 := __pthread_join($p2, $0.ref); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex.c", 37, 17} true; + assume {:verifier.code 0} true; + call $i4 := __llvm_atomic32_load(data, 5); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex.c", 37, 17} true; + assume {:verifier.code 0} true; + $i5 := $eq.i32($i4, 42); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex.c", 37, 17} true; + assume {:verifier.code 0} true; + $i6 := $zext.i1.i32($i5); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex.c", 37, 5} true; + assume {:verifier.code 0} true; + call $i7 := assert_.i32($i6); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex.c", 38, 1} true; + assume {:verifier.code 0} true; + $r := 0; + $exn := false; + return; +} +const __llvm_atomic32_load: ref; +axiom (__llvm_atomic32_load == $sub.ref(0, 11348)); +procedure __llvm_atomic32_load($p0: ref, $i1: i32) + returns ($r: i32); +const assert_: ref; +axiom (assert_ == $sub.ref(0, 12380)); +procedure assert_.i32(p.0: i32) + returns ($r: i32); +const __SMACK_code: ref; +axiom (__SMACK_code == $sub.ref(0, 13412)); +procedure __SMACK_code.ref($p0: ref); +procedure __SMACK_code.ref.i32($p0: ref, p.1: i32); +const __VERIFIER_assume: ref; +axiom (__VERIFIER_assume == $sub.ref(0, 14444)); +procedure __VERIFIER_assume($i0: i32) +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + call {:cexpr "__VERIFIER_assume:arg:x"} boogie_si_record_i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + assume true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 45, 3} true; + assume {:verifier.code 1} true; + assume $i0 != $0; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 46, 1} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_dummy: ref; +axiom (__SMACK_dummy == $sub.ref(0, 15476)); +procedure __SMACK_dummy($i0: i32) +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_dummy:arg:v"} boogie_si_record_i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + assume true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 59} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_and32: ref; +axiom (__SMACK_and32 == $sub.ref(0, 16508)); +procedure __SMACK_and32($i0: i32, $i1: i32) + returns ($r: i32) +{ + var $i2: i32; + var $i3: i1; + var $i5: i1; + var $i6: i1; + var $i8: i32; + var $i7: i32; + var $i4: i32; + var $i9: i64; + var $i10: i64; + var $i11: i32; + var $i12: i32; + var $i13: i64; + var $i14: i64; + var $i15: i32; + var $i16: i32; + var $i17: i32; + var $i18: i1; + var $i20: i1; + var $i21: i1; + var $i23: i32; + var $i22: i32; + var $i19: i32; + var $i24: i64; + var $i25: i64; + var $i26: i32; + var $i27: i32; + var $i28: i64; + var $i29: i64; + var $i30: i32; + var $i31: i32; + var $i32: i32; + var $i33: i1; + var $i35: i1; + var $i36: i1; + var $i38: i32; + var $i37: i32; + var $i34: i32; + var $i39: i64; + var $i40: i64; + var $i41: i32; + var $i42: i32; + var $i43: i64; + var $i44: i64; + var $i45: i32; + var $i46: i32; + var $i47: i32; + var $i48: i1; + var $i50: i1; + var $i51: i1; + var $i53: i32; + var $i52: i32; + var $i49: i32; + var $i54: i64; + var $i55: i64; + var $i56: i32; + var $i57: i32; + var $i58: i64; + var $i59: i64; + var $i60: i32; + var $i61: i32; + var $i62: i32; + var $i63: i1; + var $i65: i1; + var $i66: i1; + var $i68: i32; + var $i67: i32; + var $i64: i32; + var $i69: i64; + var $i70: i64; + var $i71: i32; + var $i72: i32; + var $i73: i64; + var $i74: i64; + var $i75: i32; + var $i76: i32; + var $i77: i32; + var $i78: i1; + var $i80: i1; + var $i81: i1; + var $i83: i32; + var $i82: i32; + var $i79: i32; + var $i84: i64; + var $i85: i64; + var $i86: i32; + var $i87: i32; + var $i88: i64; + var $i89: i64; + var $i90: i32; + var $i91: i32; + var $i92: i32; + var $i93: i1; + var $i95: i1; + var $i96: i1; + var $i98: i32; + var $i97: i32; + var $i94: i32; + var $i99: i64; + var $i100: i64; + var $i101: i32; + var $i102: i32; + var $i103: i64; + var $i104: i64; + var $i105: i32; + var $i106: i32; + var $i107: i32; + var $i108: i1; + var $i110: i1; + var $i111: i1; + var $i113: i32; + var $i112: i32; + var $i109: i32; + var $i114: i64; + var $i115: i64; + var $i116: i32; + var $i117: i32; + var $i118: i64; + var $i119: i64; + var $i120: i32; + var $i121: i32; + var $i122: i32; + var $i123: i1; + var $i125: i1; + var $i126: i1; + var $i128: i32; + var $i127: i32; + var $i124: i32; + var $i129: i64; + var $i130: i64; + var $i131: i32; + var $i132: i32; + var $i133: i64; + var $i134: i64; + var $i135: i32; + var $i136: i32; + var $i137: i32; + var $i138: i1; + var $i140: i1; + var $i141: i1; + var $i143: i32; + var $i142: i32; + var $i139: i32; + var $i144: i64; + var $i145: i64; + var $i146: i32; + var $i147: i32; + var $i148: i64; + var $i149: i64; + var $i150: i32; + var $i151: i32; + var $i152: i32; + var $i153: i1; + var $i155: i1; + var $i156: i1; + var $i158: i32; + var $i157: i32; + var $i154: i32; + var $i159: i64; + var $i160: i64; + var $i161: i32; + var $i162: i32; + var $i163: i64; + var $i164: i64; + var $i165: i32; + var $i166: i32; + var $i167: i32; + var $i168: i1; + var $i170: i1; + var $i171: i1; + var $i173: i32; + var $i172: i32; + var $i169: i32; + var $i174: i64; + var $i175: i64; + var $i176: i32; + var $i177: i32; + var $i178: i64; + var $i179: i64; + var $i180: i32; + var $i181: i32; + var $i182: i32; + var $i183: i1; + var $i185: i1; + var $i186: i1; + var $i188: i32; + var $i187: i32; + var $i184: i32; + var $i189: i64; + var $i190: i64; + var $i191: i32; + var $i192: i32; + var $i193: i64; + var $i194: i64; + var $i195: i32; + var $i196: i32; + var $i197: i32; + var $i198: i1; + var $i200: i1; + var $i201: i1; + var $i203: i32; + var $i202: i32; + var $i199: i32; + var $i204: i64; + var $i205: i64; + var $i206: i32; + var $i207: i32; + var $i208: i64; + var $i209: i64; + var $i210: i32; + var $i211: i32; + var $i212: i32; + var $i213: i1; + var $i215: i1; + var $i216: i1; + var $i218: i32; + var $i217: i32; + var $i214: i32; + var $i219: i64; + var $i220: i64; + var $i221: i32; + var $i222: i32; + var $i223: i64; + var $i224: i64; + var $i225: i32; + var $i226: i32; + var $i227: i32; + var $i228: i1; + var $i230: i1; + var $i231: i1; + var $i233: i32; + var $i232: i32; + var $i229: i32; + var $i234: i64; + var $i235: i64; + var $i236: i32; + var $i237: i32; + var $i238: i64; + var $i239: i64; + var $i240: i32; + var $i241: i32; + var $i242: i32; + var $i243: i1; + var $i245: i1; + var $i246: i1; + var $i248: i32; + var $i247: i32; + var $i244: i32; + var $i249: i64; + var $i250: i64; + var $i251: i32; + var $i252: i32; + var $i253: i64; + var $i254: i64; + var $i255: i32; + var $i256: i32; + var $i257: i32; + var $i258: i1; + var $i260: i1; + var $i261: i1; + var $i263: i32; + var $i262: i32; + var $i259: i32; + var $i264: i64; + var $i265: i64; + var $i266: i32; + var $i267: i32; + var $i268: i64; + var $i269: i64; + var $i270: i32; + var $i271: i32; + var $i272: i32; + var $i273: i1; + var $i275: i1; + var $i276: i1; + var $i278: i32; + var $i277: i32; + var $i274: i32; + var $i279: i64; + var $i280: i64; + var $i281: i32; + var $i282: i32; + var $i283: i64; + var $i284: i64; + var $i285: i32; + var $i286: i32; + var $i287: i32; + var $i288: i1; + var $i290: i1; + var $i291: i1; + var $i293: i32; + var $i292: i32; + var $i289: i32; + var $i294: i64; + var $i295: i64; + var $i296: i32; + var $i297: i32; + var $i298: i64; + var $i299: i64; + var $i300: i32; + var $i301: i32; + var $i302: i32; + var $i303: i1; + var $i305: i1; + var $i306: i1; + var $i308: i32; + var $i307: i32; + var $i304: i32; + var $i309: i64; + var $i310: i64; + var $i311: i32; + var $i312: i32; + var $i313: i64; + var $i314: i64; + var $i315: i32; + var $i316: i32; + var $i317: i32; + var $i318: i1; + var $i320: i1; + var $i321: i1; + var $i323: i32; + var $i322: i32; + var $i319: i32; + var $i324: i64; + var $i325: i64; + var $i326: i32; + var $i327: i32; + var $i328: i64; + var $i329: i64; + var $i330: i32; + var $i331: i32; + var $i332: i32; + var $i333: i1; + var $i335: i1; + var $i336: i1; + var $i338: i32; + var $i337: i32; + var $i334: i32; + var $i339: i64; + var $i340: i64; + var $i341: i32; + var $i342: i32; + var $i343: i64; + var $i344: i64; + var $i345: i32; + var $i346: i32; + var $i347: i32; + var $i348: i1; + var $i350: i1; + var $i351: i1; + var $i353: i32; + var $i352: i32; + var $i349: i32; + var $i354: i64; + var $i355: i64; + var $i356: i32; + var $i357: i32; + var $i358: i64; + var $i359: i64; + var $i360: i32; + var $i361: i32; + var $i362: i32; + var $i363: i1; + var $i365: i1; + var $i366: i1; + var $i368: i32; + var $i367: i32; + var $i364: i32; + var $i369: i64; + var $i370: i64; + var $i371: i32; + var $i372: i32; + var $i373: i64; + var $i374: i64; + var $i375: i32; + var $i376: i32; + var $i377: i32; + var $i378: i1; + var $i380: i1; + var $i381: i1; + var $i383: i32; + var $i382: i32; + var $i379: i32; + var $i384: i64; + var $i385: i64; + var $i386: i32; + var $i387: i32; + var $i388: i64; + var $i389: i64; + var $i390: i32; + var $i391: i32; + var $i392: i32; + var $i393: i1; + var $i395: i1; + var $i396: i1; + var $i398: i32; + var $i397: i32; + var $i394: i32; + var $i399: i64; + var $i400: i64; + var $i401: i32; + var $i402: i32; + var $i403: i64; + var $i404: i64; + var $i405: i32; + var $i406: i32; + var $i407: i32; + var $i408: i1; + var $i410: i1; + var $i411: i1; + var $i413: i32; + var $i412: i32; + var $i409: i32; + var $i414: i64; + var $i415: i64; + var $i416: i32; + var $i417: i32; + var $i418: i64; + var $i419: i64; + var $i420: i32; + var $i421: i32; + var $i422: i32; + var $i423: i1; + var $i425: i1; + var $i426: i1; + var $i428: i32; + var $i427: i32; + var $i424: i32; + var $i429: i64; + var $i430: i64; + var $i431: i32; + var $i432: i32; + var $i433: i64; + var $i434: i64; + var $i435: i32; + var $i436: i32; + var $i437: i32; + var $i438: i1; + var $i440: i1; + var $i441: i1; + var $i443: i32; + var $i442: i32; + var $i439: i32; + var $i444: i64; + var $i445: i64; + var $i446: i32; + var $i447: i32; + var $i448: i64; + var $i449: i64; + var $i450: i32; + var $i451: i32; + var $i452: i32; + var $i453: i1; + var $i455: i1; + var $i456: i1; + var $i458: i32; + var $i457: i32; + var $i454: i32; + var $i459: i64; + var $i460: i64; + var $i461: i32; + var $i462: i32; + var $i463: i64; + var $i464: i64; + var $i465: i32; + var $i466: i32; + var $i467: i32; + var $i468: i1; + var $i470: i1; + var $i471: i1; + var $i473: i32; + var $i472: i32; + var $i469: i32; + var $i474: i64; + var $i475: i64; + var $i476: i32; + var $i477: i32; + var $i478: i64; + var $i479: i64; + var $i480: i32; + var $i481: i32; + var $i482: i32; + var $i483: i1; + var $i485: i1; + var $i486: i1; + var $i488: i32; + var $i487: i32; + var $i484: i32; + var $i489: i64; + var $i490: i64; + var $i491: i32; + var $i492: i32; + var $i493: i64; + var $i494: i64; + var $i495: i32; + var $i496: i32; + var $i497: i32; + var $i498: i1; + var $i500: i1; + var $i501: i1; + var $i503: i32; + var $i502: i32; + var $i499: i32; + var $i504: i64; + var $i505: i64; + var $i506: i32; + var $i507: i32; + var $i508: i64; + var $i509: i64; + var $i510: i32; + var $i511: i32; + var $i512: i32; + var $i513: i1; + var $i515: i1; + var $i516: i1; + var $i518: i32; + var $i517: i32; + var $i514: i32; + var $i519: i64; + var $i520: i64; + var $i521: i32; + var $i522: i32; + var $i523: i64; + var $i524: i64; + var $i525: i32; + var $i526: i32; + var $i527: i32; + var $i528: i1; + var $i530: i1; + var $i531: i1; + var $i533: i32; + var $i532: i32; + var $i529: i32; + var $i534: i64; + var $i535: i64; + var $i536: i32; + var $i537: i32; + var $i538: i64; + var $i539: i64; + var $i540: i32; + var $i541: i32; + var $i542: i32; + var $i543: i1; + var $i545: i1; + var $i546: i1; + var $i548: i32; + var $i547: i32; + var $i544: i32; + var $i549: i64; + var $i550: i64; + var $i551: i32; + var $i552: i32; + var $i553: i64; + var $i554: i64; + var $i555: i32; + var $i556: i32; + var $i557: i32; + var $i558: i1; + var $i560: i1; + var $i561: i1; + var $i563: i32; + var $i562: i32; + var $i559: i32; + var $i564: i64; + var $i565: i64; + var $i566: i32; + var $i567: i32; + var $i568: i64; + var $i569: i64; + var $i570: i32; + var $i571: i32; + var $i572: i32; + var $i573: i1; + var $i575: i1; + var $i576: i1; + var $i578: i32; + var $i577: i32; + var $i574: i32; + var $i579: i64; + var $i580: i64; + var $i581: i32; + var $i582: i32; + var $i583: i64; + var $i584: i64; + var $i585: i32; + var $i586: i32; + var $i587: i32; + var $i588: i1; + var $i590: i1; + var $i591: i1; + var $i593: i32; + var $i592: i32; + var $i589: i32; + var $i594: i64; + var $i595: i64; + var $i596: i32; + var $i597: i32; + var $i598: i64; + var $i599: i64; + var $i600: i32; + var $i601: i32; + var $i602: i32; + var $i603: i1; + var $i605: i1; + var $i606: i1; + var $i608: i32; + var $i607: i32; + var $i604: i32; + var $i609: i64; + var $i610: i64; + var $i611: i32; + var $i612: i32; + var $i613: i64; + var $i614: i64; + var $i615: i32; + var $i616: i32; + var $i617: i32; + var $i618: i1; + var $i620: i1; + var $i621: i1; + var $i623: i32; + var $i622: i32; + var $i619: i32; + var $i624: i64; + var $i625: i64; + var $i626: i32; + var $i627: i32; + var $i628: i64; + var $i629: i64; + var $i630: i32; + var $i631: i32; + var $i632: i32; + var $i633: i1; + var $i635: i1; + var $i636: i1; + var $i638: i32; + var $i637: i32; + var $i634: i32; + var $i639: i64; + var $i640: i64; + var $i641: i32; + var $i642: i32; + var $i643: i64; + var $i644: i64; + var $i645: i32; + var $i646: i32; + var $i647: i32; + var $i648: i1; + var $i650: i1; + var $i651: i1; + var $i653: i32; + var $i652: i32; + var $i649: i32; + var $i654: i64; + var $i655: i64; + var $i656: i32; + var $i657: i32; + var $i658: i64; + var $i659: i64; + var $i660: i32; + var $i661: i32; + var $i662: i32; + var $i663: i1; + var $i665: i1; + var $i666: i1; + var $i668: i32; + var $i667: i32; + var $i664: i32; + var $i669: i64; + var $i670: i64; + var $i671: i32; + var $i672: i32; + var $i673: i64; + var $i674: i64; + var $i675: i32; + var $i676: i32; + var $i677: i32; + var $i678: i1; + var $i680: i1; + var $i681: i1; + var $i683: i32; + var $i682: i32; + var $i679: i32; + var $i684: i64; + var $i685: i64; + var $i686: i32; + var $i687: i32; + var $i688: i64; + var $i689: i64; + var $i690: i32; + var $i691: i32; + var $i692: i32; + var $i693: i1; + var $i695: i1; + var $i696: i1; + var $i698: i32; + var $i697: i32; + var $i694: i32; + var $i699: i64; + var $i700: i64; + var $i701: i32; + var $i702: i32; + var $i703: i64; + var $i704: i64; + var $i705: i32; + var $i706: i32; + var $i707: i32; + var $i708: i1; + var $i710: i1; + var $i711: i1; + var $i713: i32; + var $i712: i32; + var $i709: i32; + var $i714: i64; + var $i715: i64; + var $i716: i32; + var $i717: i32; + var $i718: i64; + var $i719: i64; + var $i720: i32; + var $i721: i32; + var $i722: i32; + var $i723: i1; + var $i725: i1; + var $i726: i1; + var $i728: i32; + var $i727: i32; + var $i724: i32; + var $i729: i64; + var $i730: i64; + var $i731: i32; + var $i732: i32; + var $i733: i64; + var $i734: i64; + var $i735: i32; + var $i736: i32; + var $i737: i32; + var $i738: i1; + var $i740: i1; + var $i741: i1; + var $i743: i32; + var $i742: i32; + var $i739: i32; + var $i744: i64; + var $i745: i64; + var $i746: i32; + var $i747: i32; + var $i748: i64; + var $i749: i64; + var $i750: i32; + var $i751: i32; + var $i752: i32; + var $i753: i1; + var $i755: i1; + var $i756: i1; + var $i758: i32; + var $i757: i32; + var $i754: i32; + var $i759: i64; + var $i760: i64; + var $i761: i32; + var $i762: i32; + var $i763: i64; + var $i764: i64; + var $i765: i32; + var $i766: i32; + var $i767: i32; + var $i768: i1; + var $i770: i1; + var $i771: i1; + var $i773: i32; + var $i772: i32; + var $i769: i32; + var $i774: i64; + var $i775: i64; + var $i776: i32; + var $i777: i32; + var $i778: i64; + var $i779: i64; + var $i780: i32; + var $i781: i32; + var $i782: i32; + var $i783: i1; + var $i785: i1; + var $i786: i1; + var $i788: i32; + var $i787: i32; + var $i784: i32; + var $i789: i64; + var $i790: i64; + var $i791: i32; + var $i792: i32; + var $i793: i64; + var $i794: i64; + var $i795: i32; + var $i796: i32; + var $i797: i32; + var $i798: i1; + var $i800: i1; + var $i801: i1; + var $i803: i32; + var $i802: i32; + var $i799: i32; + var $i804: i64; + var $i805: i64; + var $i806: i32; + var $i807: i32; + var $i808: i64; + var $i809: i64; + var $i810: i32; + var $i811: i32; + var $i812: i32; + var $i813: i1; + var $i815: i1; + var $i816: i1; + var $i818: i32; + var $i817: i32; + var $i814: i32; + var $i819: i64; + var $i820: i64; + var $i821: i32; + var $i822: i32; + var $i823: i64; + var $i824: i64; + var $i825: i32; + var $i826: i32; + var $i827: i32; + var $i828: i1; + var $i830: i1; + var $i831: i1; + var $i833: i32; + var $i832: i32; + var $i829: i32; + var $i834: i64; + var $i835: i64; + var $i836: i32; + var $i837: i32; + var $i838: i64; + var $i839: i64; + var $i840: i32; + var $i841: i32; + var $i842: i32; + var $i843: i1; + var $i845: i1; + var $i846: i1; + var $i848: i32; + var $i847: i32; + var $i844: i32; + var $i849: i64; + var $i850: i64; + var $i851: i32; + var $i852: i32; + var $i853: i64; + var $i854: i64; + var $i855: i32; + var $i856: i32; + var $i857: i32; + var $i858: i1; + var $i860: i1; + var $i861: i1; + var $i863: i32; + var $i862: i32; + var $i859: i32; + var $i864: i64; + var $i865: i64; + var $i866: i32; + var $i867: i32; + var $i868: i64; + var $i869: i64; + var $i870: i32; + var $i871: i32; + var $i872: i32; + var $i873: i1; + var $i875: i1; + var $i876: i1; + var $i878: i32; + var $i877: i32; + var $i874: i32; + var $i879: i64; + var $i880: i64; + var $i881: i32; + var $i882: i32; + var $i883: i64; + var $i884: i64; + var $i885: i32; + var $i886: i32; + var $i887: i32; + var $i888: i1; + var $i890: i1; + var $i891: i1; + var $i893: i32; + var $i892: i32; + var $i889: i32; + var $i894: i64; + var $i895: i64; + var $i896: i32; + var $i897: i32; + var $i898: i64; + var $i899: i64; + var $i900: i32; + var $i901: i32; + var $i902: i32; + var $i903: i1; + var $i905: i1; + var $i906: i1; + var $i908: i32; + var $i907: i32; + var $i904: i32; + var $i909: i64; + var $i910: i64; + var $i911: i32; + var $i912: i32; + var $i913: i64; + var $i914: i64; + var $i915: i32; + var $i916: i32; + var $i917: i32; + var $i918: i1; + var $i920: i1; + var $i921: i1; + var $i923: i32; + var $i922: i32; + var $i919: i32; + var $i924: i64; + var $i925: i64; + var $i926: i32; + var $i927: i32; + var $i928: i64; + var $i929: i64; + var $i930: i32; + var $i931: i32; + var $i932: i32; + var $i933: i1; + var $i935: i1; + var $i936: i1; + var $i938: i32; + var $i937: i32; + var $i934: i32; + var $i939: i64; + var $i940: i64; + var $i941: i32; + var $i942: i32; + var $i943: i64; + var $i944: i64; + var $i945: i32; + var $i946: i32; + var $i947: i32; + var $i948: i1; + var $i950: i1; + var $i951: i1; + var $i953: i32; + var $i952: i32; + var $i949: i32; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 60, 5} true; + assume {:verifier.code 0} true; + call {:cexpr "__SMACK_and32:arg:a"} boogie_si_record_i32($i0); + call {:cexpr "__SMACK_and32:arg:b"} boogie_si_record_i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 60, 5} true; + assume {:verifier.code 0} true; + $i2 := $add.i32(0, 0); + call {:cexpr "c"} boogie_si_record_i32($i2); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 61, 9} true; + assume {:verifier.code 0} true; + $i3 := $slt.i32($i0, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 61, 7} true; + assume {:verifier.code 0} true; + $i4 := $i2; + assume {:branchcond $i3} true; + goto $bb1, $bb2; +$bb1: + assume ($i3 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 11} true; + assume {:verifier.code 0} true; + $i5 := $slt.i32($i1, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i5} true; + goto $bb4, $bb6; +$bb2: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 61, 7} true; + assume {:verifier.code 0} true; + assume !(($i3 == 1)); + goto $bb3; +$bb3: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 66, 7} true; + assume {:verifier.code 0} true; + $i9 := $sext.i32.i64($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 66, 9} true; + assume {:verifier.code 0} true; + $i10 := $srem.i64($i9, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 66, 7} true; + assume {:verifier.code 0} true; + $i11 := $trunc.i64.i32($i10); + call {:cexpr "a"} boogie_si_record_i32($i11); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 67, 5} true; + assume {:verifier.code 0} true; + $i12 := $add.i32($i11, $i11); + call {:cexpr "a"} boogie_si_record_i32($i12); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 68, 7} true; + assume {:verifier.code 0} true; + $i13 := $sext.i32.i64($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 68, 9} true; + assume {:verifier.code 0} true; + $i14 := $srem.i64($i13, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 68, 7} true; + assume {:verifier.code 0} true; + $i15 := $trunc.i64.i32($i14); + call {:cexpr "b"} boogie_si_record_i32($i15); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 69, 5} true; + assume {:verifier.code 0} true; + $i16 := $add.i32($i15, $i15); + call {:cexpr "b"} boogie_si_record_i32($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 71, 5} true; + assume {:verifier.code 0} true; + $i17 := $add.i32($i4, $i4); + call {:cexpr "c"} boogie_si_record_i32($i17); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 72, 9} true; + assume {:verifier.code 0} true; + $i18 := $slt.i32($i12, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 72, 7} true; + assume {:verifier.code 0} true; + $i19 := $i17; + assume {:branchcond $i18} true; + goto $bb10, $bb11; +$bb4: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 15} true; + assume {:verifier.code 0} true; + assume ($i5 == 1); + goto $bb5; +$bb5: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 63, 9} true; + assume {:verifier.code 0} true; + $i8 := $add.i32($i2, 1); + call {:cexpr "c"} boogie_si_record_i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 64, 5} true; + assume {:verifier.code 0} true; + $i7 := $i8; + goto $bb9; +$bb6: + assume !(($i5 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 20} true; + assume {:verifier.code 0} true; + $i6 := $sgt.i32($i1, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 9} true; + assume {:verifier.code 0} true; + $i7 := $i2; + assume {:branchcond $i6} true; + goto $bb7, $bb8; +$bb7: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 9} true; + assume {:verifier.code 0} true; + assume ($i6 == 1); + goto $bb5; +$bb8: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 9} true; + assume {:verifier.code 0} true; + assume !(($i6 == 1)); + goto $bb9; +$bb9: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 65, 3} true; + assume {:verifier.code 0} true; + $i4 := $i7; + goto $bb3; +$bb10: + assume ($i18 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 11} true; + assume {:verifier.code 0} true; + $i20 := $slt.i32($i16, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i20} true; + goto $bb13, $bb15; +$bb11: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 72, 7} true; + assume {:verifier.code 0} true; + assume !(($i18 == 1)); + goto $bb12; +$bb12: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 77, 7} true; + assume {:verifier.code 0} true; + $i24 := $sext.i32.i64($i12); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 77, 9} true; + assume {:verifier.code 0} true; + $i25 := $srem.i64($i24, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 77, 7} true; + assume {:verifier.code 0} true; + $i26 := $trunc.i64.i32($i25); + call {:cexpr "a"} boogie_si_record_i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 78, 5} true; + assume {:verifier.code 0} true; + $i27 := $add.i32($i26, $i26); + call {:cexpr "a"} boogie_si_record_i32($i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 79, 7} true; + assume {:verifier.code 0} true; + $i28 := $sext.i32.i64($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 79, 9} true; + assume {:verifier.code 0} true; + $i29 := $srem.i64($i28, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 79, 7} true; + assume {:verifier.code 0} true; + $i30 := $trunc.i64.i32($i29); + call {:cexpr "b"} boogie_si_record_i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 80, 5} true; + assume {:verifier.code 0} true; + $i31 := $add.i32($i30, $i30); + call {:cexpr "b"} boogie_si_record_i32($i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 82, 5} true; + assume {:verifier.code 0} true; + $i32 := $add.i32($i19, $i19); + call {:cexpr "c"} boogie_si_record_i32($i32); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 83, 9} true; + assume {:verifier.code 0} true; + $i33 := $slt.i32($i27, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 83, 7} true; + assume {:verifier.code 0} true; + $i34 := $i32; + assume {:branchcond $i33} true; + goto $bb19, $bb20; +$bb13: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 15} true; + assume {:verifier.code 0} true; + assume ($i20 == 1); + goto $bb14; +$bb14: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 74, 9} true; + assume {:verifier.code 0} true; + $i23 := $add.i32($i17, 1); + call {:cexpr "c"} boogie_si_record_i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 75, 5} true; + assume {:verifier.code 0} true; + $i22 := $i23; + goto $bb18; +$bb15: + assume !(($i20 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 20} true; + assume {:verifier.code 0} true; + $i21 := $sgt.i32($i16, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 9} true; + assume {:verifier.code 0} true; + $i22 := $i17; + assume {:branchcond $i21} true; + goto $bb16, $bb17; +$bb16: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 9} true; + assume {:verifier.code 0} true; + assume ($i21 == 1); + goto $bb14; +$bb17: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 9} true; + assume {:verifier.code 0} true; + assume !(($i21 == 1)); + goto $bb18; +$bb18: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 76, 3} true; + assume {:verifier.code 0} true; + $i19 := $i22; + goto $bb12; +$bb19: + assume ($i33 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 11} true; + assume {:verifier.code 0} true; + $i35 := $slt.i32($i31, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i35} true; + goto $bb22, $bb24; +$bb20: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 83, 7} true; + assume {:verifier.code 0} true; + assume !(($i33 == 1)); + goto $bb21; +$bb21: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 88, 7} true; + assume {:verifier.code 0} true; + $i39 := $sext.i32.i64($i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 88, 9} true; + assume {:verifier.code 0} true; + $i40 := $srem.i64($i39, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 88, 7} true; + assume {:verifier.code 0} true; + $i41 := $trunc.i64.i32($i40); + call {:cexpr "a"} boogie_si_record_i32($i41); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 89, 5} true; + assume {:verifier.code 0} true; + $i42 := $add.i32($i41, $i41); + call {:cexpr "a"} boogie_si_record_i32($i42); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 90, 7} true; + assume {:verifier.code 0} true; + $i43 := $sext.i32.i64($i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 90, 9} true; + assume {:verifier.code 0} true; + $i44 := $srem.i64($i43, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 90, 7} true; + assume {:verifier.code 0} true; + $i45 := $trunc.i64.i32($i44); + call {:cexpr "b"} boogie_si_record_i32($i45); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 91, 5} true; + assume {:verifier.code 0} true; + $i46 := $add.i32($i45, $i45); + call {:cexpr "b"} boogie_si_record_i32($i46); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 93, 5} true; + assume {:verifier.code 0} true; + $i47 := $add.i32($i34, $i34); + call {:cexpr "c"} boogie_si_record_i32($i47); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 94, 9} true; + assume {:verifier.code 0} true; + $i48 := $slt.i32($i42, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 94, 7} true; + assume {:verifier.code 0} true; + $i49 := $i47; + assume {:branchcond $i48} true; + goto $bb28, $bb29; +$bb22: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 15} true; + assume {:verifier.code 0} true; + assume ($i35 == 1); + goto $bb23; +$bb23: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 85, 9} true; + assume {:verifier.code 0} true; + $i38 := $add.i32($i32, 1); + call {:cexpr "c"} boogie_si_record_i32($i38); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 86, 5} true; + assume {:verifier.code 0} true; + $i37 := $i38; + goto $bb27; +$bb24: + assume !(($i35 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 20} true; + assume {:verifier.code 0} true; + $i36 := $sgt.i32($i31, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 9} true; + assume {:verifier.code 0} true; + $i37 := $i32; + assume {:branchcond $i36} true; + goto $bb25, $bb26; +$bb25: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 9} true; + assume {:verifier.code 0} true; + assume ($i36 == 1); + goto $bb23; +$bb26: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 9} true; + assume {:verifier.code 0} true; + assume !(($i36 == 1)); + goto $bb27; +$bb27: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 87, 3} true; + assume {:verifier.code 0} true; + $i34 := $i37; + goto $bb21; +$bb28: + assume ($i48 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 11} true; + assume {:verifier.code 0} true; + $i50 := $slt.i32($i46, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i50} true; + goto $bb31, $bb33; +$bb29: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 94, 7} true; + assume {:verifier.code 0} true; + assume !(($i48 == 1)); + goto $bb30; +$bb30: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 99, 7} true; + assume {:verifier.code 0} true; + $i54 := $sext.i32.i64($i42); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 99, 9} true; + assume {:verifier.code 0} true; + $i55 := $srem.i64($i54, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 99, 7} true; + assume {:verifier.code 0} true; + $i56 := $trunc.i64.i32($i55); + call {:cexpr "a"} boogie_si_record_i32($i56); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 100, 5} true; + assume {:verifier.code 0} true; + $i57 := $add.i32($i56, $i56); + call {:cexpr "a"} boogie_si_record_i32($i57); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 101, 7} true; + assume {:verifier.code 0} true; + $i58 := $sext.i32.i64($i46); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 101, 9} true; + assume {:verifier.code 0} true; + $i59 := $srem.i64($i58, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 101, 7} true; + assume {:verifier.code 0} true; + $i60 := $trunc.i64.i32($i59); + call {:cexpr "b"} boogie_si_record_i32($i60); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 102, 5} true; + assume {:verifier.code 0} true; + $i61 := $add.i32($i60, $i60); + call {:cexpr "b"} boogie_si_record_i32($i61); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 104, 5} true; + assume {:verifier.code 0} true; + $i62 := $add.i32($i49, $i49); + call {:cexpr "c"} boogie_si_record_i32($i62); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 105, 9} true; + assume {:verifier.code 0} true; + $i63 := $slt.i32($i57, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 105, 7} true; + assume {:verifier.code 0} true; + $i64 := $i62; + assume {:branchcond $i63} true; + goto $bb37, $bb38; +$bb31: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 15} true; + assume {:verifier.code 0} true; + assume ($i50 == 1); + goto $bb32; +$bb32: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 96, 9} true; + assume {:verifier.code 0} true; + $i53 := $add.i32($i47, 1); + call {:cexpr "c"} boogie_si_record_i32($i53); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 97, 5} true; + assume {:verifier.code 0} true; + $i52 := $i53; + goto $bb36; +$bb33: + assume !(($i50 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 20} true; + assume {:verifier.code 0} true; + $i51 := $sgt.i32($i46, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 9} true; + assume {:verifier.code 0} true; + $i52 := $i47; + assume {:branchcond $i51} true; + goto $bb34, $bb35; +$bb34: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 9} true; + assume {:verifier.code 0} true; + assume ($i51 == 1); + goto $bb32; +$bb35: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 9} true; + assume {:verifier.code 0} true; + assume !(($i51 == 1)); + goto $bb36; +$bb36: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 98, 3} true; + assume {:verifier.code 0} true; + $i49 := $i52; + goto $bb30; +$bb37: + assume ($i63 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 11} true; + assume {:verifier.code 0} true; + $i65 := $slt.i32($i61, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i65} true; + goto $bb40, $bb42; +$bb38: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 105, 7} true; + assume {:verifier.code 0} true; + assume !(($i63 == 1)); + goto $bb39; +$bb39: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 110, 7} true; + assume {:verifier.code 0} true; + $i69 := $sext.i32.i64($i57); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 110, 9} true; + assume {:verifier.code 0} true; + $i70 := $srem.i64($i69, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 110, 7} true; + assume {:verifier.code 0} true; + $i71 := $trunc.i64.i32($i70); + call {:cexpr "a"} boogie_si_record_i32($i71); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 111, 5} true; + assume {:verifier.code 0} true; + $i72 := $add.i32($i71, $i71); + call {:cexpr "a"} boogie_si_record_i32($i72); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 112, 7} true; + assume {:verifier.code 0} true; + $i73 := $sext.i32.i64($i61); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 112, 9} true; + assume {:verifier.code 0} true; + $i74 := $srem.i64($i73, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 112, 7} true; + assume {:verifier.code 0} true; + $i75 := $trunc.i64.i32($i74); + call {:cexpr "b"} boogie_si_record_i32($i75); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 113, 5} true; + assume {:verifier.code 0} true; + $i76 := $add.i32($i75, $i75); + call {:cexpr "b"} boogie_si_record_i32($i76); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 115, 5} true; + assume {:verifier.code 0} true; + $i77 := $add.i32($i64, $i64); + call {:cexpr "c"} boogie_si_record_i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 116, 9} true; + assume {:verifier.code 0} true; + $i78 := $slt.i32($i72, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 116, 7} true; + assume {:verifier.code 0} true; + $i79 := $i77; + assume {:branchcond $i78} true; + goto $bb46, $bb47; +$bb40: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 15} true; + assume {:verifier.code 0} true; + assume ($i65 == 1); + goto $bb41; +$bb41: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 107, 9} true; + assume {:verifier.code 0} true; + $i68 := $add.i32($i62, 1); + call {:cexpr "c"} boogie_si_record_i32($i68); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 108, 5} true; + assume {:verifier.code 0} true; + $i67 := $i68; + goto $bb45; +$bb42: + assume !(($i65 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 20} true; + assume {:verifier.code 0} true; + $i66 := $sgt.i32($i61, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 9} true; + assume {:verifier.code 0} true; + $i67 := $i62; + assume {:branchcond $i66} true; + goto $bb43, $bb44; +$bb43: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 9} true; + assume {:verifier.code 0} true; + assume ($i66 == 1); + goto $bb41; +$bb44: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 9} true; + assume {:verifier.code 0} true; + assume !(($i66 == 1)); + goto $bb45; +$bb45: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 109, 3} true; + assume {:verifier.code 0} true; + $i64 := $i67; + goto $bb39; +$bb46: + assume ($i78 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 11} true; + assume {:verifier.code 0} true; + $i80 := $slt.i32($i76, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i80} true; + goto $bb49, $bb51; +$bb47: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 116, 7} true; + assume {:verifier.code 0} true; + assume !(($i78 == 1)); + goto $bb48; +$bb48: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 121, 7} true; + assume {:verifier.code 0} true; + $i84 := $sext.i32.i64($i72); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 121, 9} true; + assume {:verifier.code 0} true; + $i85 := $srem.i64($i84, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 121, 7} true; + assume {:verifier.code 0} true; + $i86 := $trunc.i64.i32($i85); + call {:cexpr "a"} boogie_si_record_i32($i86); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 122, 5} true; + assume {:verifier.code 0} true; + $i87 := $add.i32($i86, $i86); + call {:cexpr "a"} boogie_si_record_i32($i87); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 123, 7} true; + assume {:verifier.code 0} true; + $i88 := $sext.i32.i64($i76); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 123, 9} true; + assume {:verifier.code 0} true; + $i89 := $srem.i64($i88, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 123, 7} true; + assume {:verifier.code 0} true; + $i90 := $trunc.i64.i32($i89); + call {:cexpr "b"} boogie_si_record_i32($i90); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 124, 5} true; + assume {:verifier.code 0} true; + $i91 := $add.i32($i90, $i90); + call {:cexpr "b"} boogie_si_record_i32($i91); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 126, 5} true; + assume {:verifier.code 0} true; + $i92 := $add.i32($i79, $i79); + call {:cexpr "c"} boogie_si_record_i32($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 127, 9} true; + assume {:verifier.code 0} true; + $i93 := $slt.i32($i87, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 127, 7} true; + assume {:verifier.code 0} true; + $i94 := $i92; + assume {:branchcond $i93} true; + goto $bb55, $bb56; +$bb49: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 15} true; + assume {:verifier.code 0} true; + assume ($i80 == 1); + goto $bb50; +$bb50: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 118, 9} true; + assume {:verifier.code 0} true; + $i83 := $add.i32($i77, 1); + call {:cexpr "c"} boogie_si_record_i32($i83); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 119, 5} true; + assume {:verifier.code 0} true; + $i82 := $i83; + goto $bb54; +$bb51: + assume !(($i80 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 20} true; + assume {:verifier.code 0} true; + $i81 := $sgt.i32($i76, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 9} true; + assume {:verifier.code 0} true; + $i82 := $i77; + assume {:branchcond $i81} true; + goto $bb52, $bb53; +$bb52: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 9} true; + assume {:verifier.code 0} true; + assume ($i81 == 1); + goto $bb50; +$bb53: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 9} true; + assume {:verifier.code 0} true; + assume !(($i81 == 1)); + goto $bb54; +$bb54: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 120, 3} true; + assume {:verifier.code 0} true; + $i79 := $i82; + goto $bb48; +$bb55: + assume ($i93 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 11} true; + assume {:verifier.code 0} true; + $i95 := $slt.i32($i91, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i95} true; + goto $bb58, $bb60; +$bb56: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 127, 7} true; + assume {:verifier.code 0} true; + assume !(($i93 == 1)); + goto $bb57; +$bb57: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 132, 7} true; + assume {:verifier.code 0} true; + $i99 := $sext.i32.i64($i87); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 132, 9} true; + assume {:verifier.code 0} true; + $i100 := $srem.i64($i99, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 132, 7} true; + assume {:verifier.code 0} true; + $i101 := $trunc.i64.i32($i100); + call {:cexpr "a"} boogie_si_record_i32($i101); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 133, 5} true; + assume {:verifier.code 0} true; + $i102 := $add.i32($i101, $i101); + call {:cexpr "a"} boogie_si_record_i32($i102); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 134, 7} true; + assume {:verifier.code 0} true; + $i103 := $sext.i32.i64($i91); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 134, 9} true; + assume {:verifier.code 0} true; + $i104 := $srem.i64($i103, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 134, 7} true; + assume {:verifier.code 0} true; + $i105 := $trunc.i64.i32($i104); + call {:cexpr "b"} boogie_si_record_i32($i105); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 135, 5} true; + assume {:verifier.code 0} true; + $i106 := $add.i32($i105, $i105); + call {:cexpr "b"} boogie_si_record_i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 137, 5} true; + assume {:verifier.code 0} true; + $i107 := $add.i32($i94, $i94); + call {:cexpr "c"} boogie_si_record_i32($i107); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 138, 9} true; + assume {:verifier.code 0} true; + $i108 := $slt.i32($i102, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 138, 7} true; + assume {:verifier.code 0} true; + $i109 := $i107; + assume {:branchcond $i108} true; + goto $bb64, $bb65; +$bb58: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 15} true; + assume {:verifier.code 0} true; + assume ($i95 == 1); + goto $bb59; +$bb59: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 129, 9} true; + assume {:verifier.code 0} true; + $i98 := $add.i32($i92, 1); + call {:cexpr "c"} boogie_si_record_i32($i98); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 130, 5} true; + assume {:verifier.code 0} true; + $i97 := $i98; + goto $bb63; +$bb60: + assume !(($i95 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 20} true; + assume {:verifier.code 0} true; + $i96 := $sgt.i32($i91, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 9} true; + assume {:verifier.code 0} true; + $i97 := $i92; + assume {:branchcond $i96} true; + goto $bb61, $bb62; +$bb61: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 9} true; + assume {:verifier.code 0} true; + assume ($i96 == 1); + goto $bb59; +$bb62: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 9} true; + assume {:verifier.code 0} true; + assume !(($i96 == 1)); + goto $bb63; +$bb63: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 131, 3} true; + assume {:verifier.code 0} true; + $i94 := $i97; + goto $bb57; +$bb64: + assume ($i108 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 11} true; + assume {:verifier.code 0} true; + $i110 := $slt.i32($i106, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i110} true; + goto $bb67, $bb69; +$bb65: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 138, 7} true; + assume {:verifier.code 0} true; + assume !(($i108 == 1)); + goto $bb66; +$bb66: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 143, 7} true; + assume {:verifier.code 0} true; + $i114 := $sext.i32.i64($i102); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 143, 9} true; + assume {:verifier.code 0} true; + $i115 := $srem.i64($i114, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 143, 7} true; + assume {:verifier.code 0} true; + $i116 := $trunc.i64.i32($i115); + call {:cexpr "a"} boogie_si_record_i32($i116); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 144, 5} true; + assume {:verifier.code 0} true; + $i117 := $add.i32($i116, $i116); + call {:cexpr "a"} boogie_si_record_i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 145, 7} true; + assume {:verifier.code 0} true; + $i118 := $sext.i32.i64($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 145, 9} true; + assume {:verifier.code 0} true; + $i119 := $srem.i64($i118, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 145, 7} true; + assume {:verifier.code 0} true; + $i120 := $trunc.i64.i32($i119); + call {:cexpr "b"} boogie_si_record_i32($i120); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 146, 5} true; + assume {:verifier.code 0} true; + $i121 := $add.i32($i120, $i120); + call {:cexpr "b"} boogie_si_record_i32($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 148, 5} true; + assume {:verifier.code 0} true; + $i122 := $add.i32($i109, $i109); + call {:cexpr "c"} boogie_si_record_i32($i122); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 149, 9} true; + assume {:verifier.code 0} true; + $i123 := $slt.i32($i117, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 149, 7} true; + assume {:verifier.code 0} true; + $i124 := $i122; + assume {:branchcond $i123} true; + goto $bb73, $bb74; +$bb67: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 15} true; + assume {:verifier.code 0} true; + assume ($i110 == 1); + goto $bb68; +$bb68: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 140, 9} true; + assume {:verifier.code 0} true; + $i113 := $add.i32($i107, 1); + call {:cexpr "c"} boogie_si_record_i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 141, 5} true; + assume {:verifier.code 0} true; + $i112 := $i113; + goto $bb72; +$bb69: + assume !(($i110 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 20} true; + assume {:verifier.code 0} true; + $i111 := $sgt.i32($i106, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 9} true; + assume {:verifier.code 0} true; + $i112 := $i107; + assume {:branchcond $i111} true; + goto $bb70, $bb71; +$bb70: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 9} true; + assume {:verifier.code 0} true; + assume ($i111 == 1); + goto $bb68; +$bb71: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 9} true; + assume {:verifier.code 0} true; + assume !(($i111 == 1)); + goto $bb72; +$bb72: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 142, 3} true; + assume {:verifier.code 0} true; + $i109 := $i112; + goto $bb66; +$bb73: + assume ($i123 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 11} true; + assume {:verifier.code 0} true; + $i125 := $slt.i32($i121, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i125} true; + goto $bb76, $bb78; +$bb74: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 149, 7} true; + assume {:verifier.code 0} true; + assume !(($i123 == 1)); + goto $bb75; +$bb75: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 154, 7} true; + assume {:verifier.code 0} true; + $i129 := $sext.i32.i64($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 154, 9} true; + assume {:verifier.code 0} true; + $i130 := $srem.i64($i129, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 154, 7} true; + assume {:verifier.code 0} true; + $i131 := $trunc.i64.i32($i130); + call {:cexpr "a"} boogie_si_record_i32($i131); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 155, 5} true; + assume {:verifier.code 0} true; + $i132 := $add.i32($i131, $i131); + call {:cexpr "a"} boogie_si_record_i32($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 156, 7} true; + assume {:verifier.code 0} true; + $i133 := $sext.i32.i64($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 156, 9} true; + assume {:verifier.code 0} true; + $i134 := $srem.i64($i133, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 156, 7} true; + assume {:verifier.code 0} true; + $i135 := $trunc.i64.i32($i134); + call {:cexpr "b"} boogie_si_record_i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 157, 5} true; + assume {:verifier.code 0} true; + $i136 := $add.i32($i135, $i135); + call {:cexpr "b"} boogie_si_record_i32($i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 159, 5} true; + assume {:verifier.code 0} true; + $i137 := $add.i32($i124, $i124); + call {:cexpr "c"} boogie_si_record_i32($i137); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 160, 9} true; + assume {:verifier.code 0} true; + $i138 := $slt.i32($i132, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 160, 7} true; + assume {:verifier.code 0} true; + $i139 := $i137; + assume {:branchcond $i138} true; + goto $bb82, $bb83; +$bb76: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 15} true; + assume {:verifier.code 0} true; + assume ($i125 == 1); + goto $bb77; +$bb77: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 151, 9} true; + assume {:verifier.code 0} true; + $i128 := $add.i32($i122, 1); + call {:cexpr "c"} boogie_si_record_i32($i128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 152, 5} true; + assume {:verifier.code 0} true; + $i127 := $i128; + goto $bb81; +$bb78: + assume !(($i125 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 20} true; + assume {:verifier.code 0} true; + $i126 := $sgt.i32($i121, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 9} true; + assume {:verifier.code 0} true; + $i127 := $i122; + assume {:branchcond $i126} true; + goto $bb79, $bb80; +$bb79: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 9} true; + assume {:verifier.code 0} true; + assume ($i126 == 1); + goto $bb77; +$bb80: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 9} true; + assume {:verifier.code 0} true; + assume !(($i126 == 1)); + goto $bb81; +$bb81: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 153, 3} true; + assume {:verifier.code 0} true; + $i124 := $i127; + goto $bb75; +$bb82: + assume ($i138 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 11} true; + assume {:verifier.code 0} true; + $i140 := $slt.i32($i136, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i140} true; + goto $bb85, $bb87; +$bb83: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 160, 7} true; + assume {:verifier.code 0} true; + assume !(($i138 == 1)); + goto $bb84; +$bb84: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 165, 7} true; + assume {:verifier.code 0} true; + $i144 := $sext.i32.i64($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 165, 9} true; + assume {:verifier.code 0} true; + $i145 := $srem.i64($i144, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 165, 7} true; + assume {:verifier.code 0} true; + $i146 := $trunc.i64.i32($i145); + call {:cexpr "a"} boogie_si_record_i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 166, 5} true; + assume {:verifier.code 0} true; + $i147 := $add.i32($i146, $i146); + call {:cexpr "a"} boogie_si_record_i32($i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 167, 7} true; + assume {:verifier.code 0} true; + $i148 := $sext.i32.i64($i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 167, 9} true; + assume {:verifier.code 0} true; + $i149 := $srem.i64($i148, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 167, 7} true; + assume {:verifier.code 0} true; + $i150 := $trunc.i64.i32($i149); + call {:cexpr "b"} boogie_si_record_i32($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 168, 5} true; + assume {:verifier.code 0} true; + $i151 := $add.i32($i150, $i150); + call {:cexpr "b"} boogie_si_record_i32($i151); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 170, 5} true; + assume {:verifier.code 0} true; + $i152 := $add.i32($i139, $i139); + call {:cexpr "c"} boogie_si_record_i32($i152); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 171, 9} true; + assume {:verifier.code 0} true; + $i153 := $slt.i32($i147, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 171, 7} true; + assume {:verifier.code 0} true; + $i154 := $i152; + assume {:branchcond $i153} true; + goto $bb91, $bb92; +$bb85: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 15} true; + assume {:verifier.code 0} true; + assume ($i140 == 1); + goto $bb86; +$bb86: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 162, 9} true; + assume {:verifier.code 0} true; + $i143 := $add.i32($i137, 1); + call {:cexpr "c"} boogie_si_record_i32($i143); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 163, 5} true; + assume {:verifier.code 0} true; + $i142 := $i143; + goto $bb90; +$bb87: + assume !(($i140 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 20} true; + assume {:verifier.code 0} true; + $i141 := $sgt.i32($i136, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 9} true; + assume {:verifier.code 0} true; + $i142 := $i137; + assume {:branchcond $i141} true; + goto $bb88, $bb89; +$bb88: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 9} true; + assume {:verifier.code 0} true; + assume ($i141 == 1); + goto $bb86; +$bb89: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 9} true; + assume {:verifier.code 0} true; + assume !(($i141 == 1)); + goto $bb90; +$bb90: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 164, 3} true; + assume {:verifier.code 0} true; + $i139 := $i142; + goto $bb84; +$bb91: + assume ($i153 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 11} true; + assume {:verifier.code 0} true; + $i155 := $slt.i32($i151, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i155} true; + goto $bb94, $bb96; +$bb92: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 171, 7} true; + assume {:verifier.code 0} true; + assume !(($i153 == 1)); + goto $bb93; +$bb93: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 176, 7} true; + assume {:verifier.code 0} true; + $i159 := $sext.i32.i64($i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 176, 9} true; + assume {:verifier.code 0} true; + $i160 := $srem.i64($i159, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 176, 7} true; + assume {:verifier.code 0} true; + $i161 := $trunc.i64.i32($i160); + call {:cexpr "a"} boogie_si_record_i32($i161); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 177, 5} true; + assume {:verifier.code 0} true; + $i162 := $add.i32($i161, $i161); + call {:cexpr "a"} boogie_si_record_i32($i162); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 178, 7} true; + assume {:verifier.code 0} true; + $i163 := $sext.i32.i64($i151); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 178, 9} true; + assume {:verifier.code 0} true; + $i164 := $srem.i64($i163, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 178, 7} true; + assume {:verifier.code 0} true; + $i165 := $trunc.i64.i32($i164); + call {:cexpr "b"} boogie_si_record_i32($i165); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 179, 5} true; + assume {:verifier.code 0} true; + $i166 := $add.i32($i165, $i165); + call {:cexpr "b"} boogie_si_record_i32($i166); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 181, 5} true; + assume {:verifier.code 0} true; + $i167 := $add.i32($i154, $i154); + call {:cexpr "c"} boogie_si_record_i32($i167); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 182, 9} true; + assume {:verifier.code 0} true; + $i168 := $slt.i32($i162, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 182, 7} true; + assume {:verifier.code 0} true; + $i169 := $i167; + assume {:branchcond $i168} true; + goto $bb100, $bb101; +$bb94: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 15} true; + assume {:verifier.code 0} true; + assume ($i155 == 1); + goto $bb95; +$bb95: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 173, 9} true; + assume {:verifier.code 0} true; + $i158 := $add.i32($i152, 1); + call {:cexpr "c"} boogie_si_record_i32($i158); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 174, 5} true; + assume {:verifier.code 0} true; + $i157 := $i158; + goto $bb99; +$bb96: + assume !(($i155 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 20} true; + assume {:verifier.code 0} true; + $i156 := $sgt.i32($i151, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 9} true; + assume {:verifier.code 0} true; + $i157 := $i152; + assume {:branchcond $i156} true; + goto $bb97, $bb98; +$bb97: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 9} true; + assume {:verifier.code 0} true; + assume ($i156 == 1); + goto $bb95; +$bb98: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 9} true; + assume {:verifier.code 0} true; + assume !(($i156 == 1)); + goto $bb99; +$bb99: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 175, 3} true; + assume {:verifier.code 0} true; + $i154 := $i157; + goto $bb93; +$bb100: + assume ($i168 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 11} true; + assume {:verifier.code 0} true; + $i170 := $slt.i32($i166, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i170} true; + goto $bb103, $bb105; +$bb101: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 182, 7} true; + assume {:verifier.code 0} true; + assume !(($i168 == 1)); + goto $bb102; +$bb102: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 187, 7} true; + assume {:verifier.code 0} true; + $i174 := $sext.i32.i64($i162); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 187, 9} true; + assume {:verifier.code 0} true; + $i175 := $srem.i64($i174, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 187, 7} true; + assume {:verifier.code 0} true; + $i176 := $trunc.i64.i32($i175); + call {:cexpr "a"} boogie_si_record_i32($i176); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 188, 5} true; + assume {:verifier.code 0} true; + $i177 := $add.i32($i176, $i176); + call {:cexpr "a"} boogie_si_record_i32($i177); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 189, 7} true; + assume {:verifier.code 0} true; + $i178 := $sext.i32.i64($i166); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 189, 9} true; + assume {:verifier.code 0} true; + $i179 := $srem.i64($i178, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 189, 7} true; + assume {:verifier.code 0} true; + $i180 := $trunc.i64.i32($i179); + call {:cexpr "b"} boogie_si_record_i32($i180); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 190, 5} true; + assume {:verifier.code 0} true; + $i181 := $add.i32($i180, $i180); + call {:cexpr "b"} boogie_si_record_i32($i181); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 192, 5} true; + assume {:verifier.code 0} true; + $i182 := $add.i32($i169, $i169); + call {:cexpr "c"} boogie_si_record_i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 193, 9} true; + assume {:verifier.code 0} true; + $i183 := $slt.i32($i177, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 193, 7} true; + assume {:verifier.code 0} true; + $i184 := $i182; + assume {:branchcond $i183} true; + goto $bb109, $bb110; +$bb103: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 15} true; + assume {:verifier.code 0} true; + assume ($i170 == 1); + goto $bb104; +$bb104: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 184, 9} true; + assume {:verifier.code 0} true; + $i173 := $add.i32($i167, 1); + call {:cexpr "c"} boogie_si_record_i32($i173); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 185, 5} true; + assume {:verifier.code 0} true; + $i172 := $i173; + goto $bb108; +$bb105: + assume !(($i170 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 20} true; + assume {:verifier.code 0} true; + $i171 := $sgt.i32($i166, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 9} true; + assume {:verifier.code 0} true; + $i172 := $i167; + assume {:branchcond $i171} true; + goto $bb106, $bb107; +$bb106: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 9} true; + assume {:verifier.code 0} true; + assume ($i171 == 1); + goto $bb104; +$bb107: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 9} true; + assume {:verifier.code 0} true; + assume !(($i171 == 1)); + goto $bb108; +$bb108: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 186, 3} true; + assume {:verifier.code 0} true; + $i169 := $i172; + goto $bb102; +$bb109: + assume ($i183 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 11} true; + assume {:verifier.code 0} true; + $i185 := $slt.i32($i181, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i185} true; + goto $bb112, $bb114; +$bb110: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 193, 7} true; + assume {:verifier.code 0} true; + assume !(($i183 == 1)); + goto $bb111; +$bb111: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 198, 7} true; + assume {:verifier.code 0} true; + $i189 := $sext.i32.i64($i177); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 198, 9} true; + assume {:verifier.code 0} true; + $i190 := $srem.i64($i189, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 198, 7} true; + assume {:verifier.code 0} true; + $i191 := $trunc.i64.i32($i190); + call {:cexpr "a"} boogie_si_record_i32($i191); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 199, 5} true; + assume {:verifier.code 0} true; + $i192 := $add.i32($i191, $i191); + call {:cexpr "a"} boogie_si_record_i32($i192); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 200, 7} true; + assume {:verifier.code 0} true; + $i193 := $sext.i32.i64($i181); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 200, 9} true; + assume {:verifier.code 0} true; + $i194 := $srem.i64($i193, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 200, 7} true; + assume {:verifier.code 0} true; + $i195 := $trunc.i64.i32($i194); + call {:cexpr "b"} boogie_si_record_i32($i195); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 201, 5} true; + assume {:verifier.code 0} true; + $i196 := $add.i32($i195, $i195); + call {:cexpr "b"} boogie_si_record_i32($i196); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 203, 5} true; + assume {:verifier.code 0} true; + $i197 := $add.i32($i184, $i184); + call {:cexpr "c"} boogie_si_record_i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 204, 9} true; + assume {:verifier.code 0} true; + $i198 := $slt.i32($i192, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 204, 7} true; + assume {:verifier.code 0} true; + $i199 := $i197; + assume {:branchcond $i198} true; + goto $bb118, $bb119; +$bb112: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 15} true; + assume {:verifier.code 0} true; + assume ($i185 == 1); + goto $bb113; +$bb113: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 195, 9} true; + assume {:verifier.code 0} true; + $i188 := $add.i32($i182, 1); + call {:cexpr "c"} boogie_si_record_i32($i188); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 196, 5} true; + assume {:verifier.code 0} true; + $i187 := $i188; + goto $bb117; +$bb114: + assume !(($i185 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 20} true; + assume {:verifier.code 0} true; + $i186 := $sgt.i32($i181, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 9} true; + assume {:verifier.code 0} true; + $i187 := $i182; + assume {:branchcond $i186} true; + goto $bb115, $bb116; +$bb115: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 9} true; + assume {:verifier.code 0} true; + assume ($i186 == 1); + goto $bb113; +$bb116: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 9} true; + assume {:verifier.code 0} true; + assume !(($i186 == 1)); + goto $bb117; +$bb117: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 197, 3} true; + assume {:verifier.code 0} true; + $i184 := $i187; + goto $bb111; +$bb118: + assume ($i198 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 11} true; + assume {:verifier.code 0} true; + $i200 := $slt.i32($i196, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i200} true; + goto $bb121, $bb123; +$bb119: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 204, 7} true; + assume {:verifier.code 0} true; + assume !(($i198 == 1)); + goto $bb120; +$bb120: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 209, 7} true; + assume {:verifier.code 0} true; + $i204 := $sext.i32.i64($i192); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 209, 9} true; + assume {:verifier.code 0} true; + $i205 := $srem.i64($i204, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 209, 7} true; + assume {:verifier.code 0} true; + $i206 := $trunc.i64.i32($i205); + call {:cexpr "a"} boogie_si_record_i32($i206); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 210, 5} true; + assume {:verifier.code 0} true; + $i207 := $add.i32($i206, $i206); + call {:cexpr "a"} boogie_si_record_i32($i207); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 211, 7} true; + assume {:verifier.code 0} true; + $i208 := $sext.i32.i64($i196); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 211, 9} true; + assume {:verifier.code 0} true; + $i209 := $srem.i64($i208, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 211, 7} true; + assume {:verifier.code 0} true; + $i210 := $trunc.i64.i32($i209); + call {:cexpr "b"} boogie_si_record_i32($i210); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 212, 5} true; + assume {:verifier.code 0} true; + $i211 := $add.i32($i210, $i210); + call {:cexpr "b"} boogie_si_record_i32($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 214, 5} true; + assume {:verifier.code 0} true; + $i212 := $add.i32($i199, $i199); + call {:cexpr "c"} boogie_si_record_i32($i212); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 215, 9} true; + assume {:verifier.code 0} true; + $i213 := $slt.i32($i207, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 215, 7} true; + assume {:verifier.code 0} true; + $i214 := $i212; + assume {:branchcond $i213} true; + goto $bb127, $bb128; +$bb121: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 15} true; + assume {:verifier.code 0} true; + assume ($i200 == 1); + goto $bb122; +$bb122: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 206, 9} true; + assume {:verifier.code 0} true; + $i203 := $add.i32($i197, 1); + call {:cexpr "c"} boogie_si_record_i32($i203); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 207, 5} true; + assume {:verifier.code 0} true; + $i202 := $i203; + goto $bb126; +$bb123: + assume !(($i200 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 20} true; + assume {:verifier.code 0} true; + $i201 := $sgt.i32($i196, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 9} true; + assume {:verifier.code 0} true; + $i202 := $i197; + assume {:branchcond $i201} true; + goto $bb124, $bb125; +$bb124: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 9} true; + assume {:verifier.code 0} true; + assume ($i201 == 1); + goto $bb122; +$bb125: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 9} true; + assume {:verifier.code 0} true; + assume !(($i201 == 1)); + goto $bb126; +$bb126: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 208, 3} true; + assume {:verifier.code 0} true; + $i199 := $i202; + goto $bb120; +$bb127: + assume ($i213 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 11} true; + assume {:verifier.code 0} true; + $i215 := $slt.i32($i211, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i215} true; + goto $bb130, $bb132; +$bb128: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 215, 7} true; + assume {:verifier.code 0} true; + assume !(($i213 == 1)); + goto $bb129; +$bb129: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 220, 7} true; + assume {:verifier.code 0} true; + $i219 := $sext.i32.i64($i207); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 220, 9} true; + assume {:verifier.code 0} true; + $i220 := $srem.i64($i219, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 220, 7} true; + assume {:verifier.code 0} true; + $i221 := $trunc.i64.i32($i220); + call {:cexpr "a"} boogie_si_record_i32($i221); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 221, 5} true; + assume {:verifier.code 0} true; + $i222 := $add.i32($i221, $i221); + call {:cexpr "a"} boogie_si_record_i32($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 222, 7} true; + assume {:verifier.code 0} true; + $i223 := $sext.i32.i64($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 222, 9} true; + assume {:verifier.code 0} true; + $i224 := $srem.i64($i223, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 222, 7} true; + assume {:verifier.code 0} true; + $i225 := $trunc.i64.i32($i224); + call {:cexpr "b"} boogie_si_record_i32($i225); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 223, 5} true; + assume {:verifier.code 0} true; + $i226 := $add.i32($i225, $i225); + call {:cexpr "b"} boogie_si_record_i32($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 225, 5} true; + assume {:verifier.code 0} true; + $i227 := $add.i32($i214, $i214); + call {:cexpr "c"} boogie_si_record_i32($i227); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 226, 9} true; + assume {:verifier.code 0} true; + $i228 := $slt.i32($i222, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 226, 7} true; + assume {:verifier.code 0} true; + $i229 := $i227; + assume {:branchcond $i228} true; + goto $bb136, $bb137; +$bb130: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 15} true; + assume {:verifier.code 0} true; + assume ($i215 == 1); + goto $bb131; +$bb131: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 217, 9} true; + assume {:verifier.code 0} true; + $i218 := $add.i32($i212, 1); + call {:cexpr "c"} boogie_si_record_i32($i218); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 218, 5} true; + assume {:verifier.code 0} true; + $i217 := $i218; + goto $bb135; +$bb132: + assume !(($i215 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 20} true; + assume {:verifier.code 0} true; + $i216 := $sgt.i32($i211, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 9} true; + assume {:verifier.code 0} true; + $i217 := $i212; + assume {:branchcond $i216} true; + goto $bb133, $bb134; +$bb133: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 9} true; + assume {:verifier.code 0} true; + assume ($i216 == 1); + goto $bb131; +$bb134: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 9} true; + assume {:verifier.code 0} true; + assume !(($i216 == 1)); + goto $bb135; +$bb135: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 219, 3} true; + assume {:verifier.code 0} true; + $i214 := $i217; + goto $bb129; +$bb136: + assume ($i228 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 11} true; + assume {:verifier.code 0} true; + $i230 := $slt.i32($i226, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i230} true; + goto $bb139, $bb141; +$bb137: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 226, 7} true; + assume {:verifier.code 0} true; + assume !(($i228 == 1)); + goto $bb138; +$bb138: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 231, 7} true; + assume {:verifier.code 0} true; + $i234 := $sext.i32.i64($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 231, 9} true; + assume {:verifier.code 0} true; + $i235 := $srem.i64($i234, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 231, 7} true; + assume {:verifier.code 0} true; + $i236 := $trunc.i64.i32($i235); + call {:cexpr "a"} boogie_si_record_i32($i236); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 232, 5} true; + assume {:verifier.code 0} true; + $i237 := $add.i32($i236, $i236); + call {:cexpr "a"} boogie_si_record_i32($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 233, 7} true; + assume {:verifier.code 0} true; + $i238 := $sext.i32.i64($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 233, 9} true; + assume {:verifier.code 0} true; + $i239 := $srem.i64($i238, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 233, 7} true; + assume {:verifier.code 0} true; + $i240 := $trunc.i64.i32($i239); + call {:cexpr "b"} boogie_si_record_i32($i240); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 234, 5} true; + assume {:verifier.code 0} true; + $i241 := $add.i32($i240, $i240); + call {:cexpr "b"} boogie_si_record_i32($i241); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 236, 5} true; + assume {:verifier.code 0} true; + $i242 := $add.i32($i229, $i229); + call {:cexpr "c"} boogie_si_record_i32($i242); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 237, 9} true; + assume {:verifier.code 0} true; + $i243 := $slt.i32($i237, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 237, 7} true; + assume {:verifier.code 0} true; + $i244 := $i242; + assume {:branchcond $i243} true; + goto $bb145, $bb146; +$bb139: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 15} true; + assume {:verifier.code 0} true; + assume ($i230 == 1); + goto $bb140; +$bb140: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 228, 9} true; + assume {:verifier.code 0} true; + $i233 := $add.i32($i227, 1); + call {:cexpr "c"} boogie_si_record_i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 229, 5} true; + assume {:verifier.code 0} true; + $i232 := $i233; + goto $bb144; +$bb141: + assume !(($i230 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 20} true; + assume {:verifier.code 0} true; + $i231 := $sgt.i32($i226, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 9} true; + assume {:verifier.code 0} true; + $i232 := $i227; + assume {:branchcond $i231} true; + goto $bb142, $bb143; +$bb142: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 9} true; + assume {:verifier.code 0} true; + assume ($i231 == 1); + goto $bb140; +$bb143: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 9} true; + assume {:verifier.code 0} true; + assume !(($i231 == 1)); + goto $bb144; +$bb144: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 230, 3} true; + assume {:verifier.code 0} true; + $i229 := $i232; + goto $bb138; +$bb145: + assume ($i243 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 11} true; + assume {:verifier.code 0} true; + $i245 := $slt.i32($i241, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i245} true; + goto $bb148, $bb150; +$bb146: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 237, 7} true; + assume {:verifier.code 0} true; + assume !(($i243 == 1)); + goto $bb147; +$bb147: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 242, 7} true; + assume {:verifier.code 0} true; + $i249 := $sext.i32.i64($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 242, 9} true; + assume {:verifier.code 0} true; + $i250 := $srem.i64($i249, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 242, 7} true; + assume {:verifier.code 0} true; + $i251 := $trunc.i64.i32($i250); + call {:cexpr "a"} boogie_si_record_i32($i251); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 243, 5} true; + assume {:verifier.code 0} true; + $i252 := $add.i32($i251, $i251); + call {:cexpr "a"} boogie_si_record_i32($i252); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 244, 7} true; + assume {:verifier.code 0} true; + $i253 := $sext.i32.i64($i241); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 244, 9} true; + assume {:verifier.code 0} true; + $i254 := $srem.i64($i253, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 244, 7} true; + assume {:verifier.code 0} true; + $i255 := $trunc.i64.i32($i254); + call {:cexpr "b"} boogie_si_record_i32($i255); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 245, 5} true; + assume {:verifier.code 0} true; + $i256 := $add.i32($i255, $i255); + call {:cexpr "b"} boogie_si_record_i32($i256); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 247, 5} true; + assume {:verifier.code 0} true; + $i257 := $add.i32($i244, $i244); + call {:cexpr "c"} boogie_si_record_i32($i257); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 248, 9} true; + assume {:verifier.code 0} true; + $i258 := $slt.i32($i252, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 248, 7} true; + assume {:verifier.code 0} true; + $i259 := $i257; + assume {:branchcond $i258} true; + goto $bb154, $bb155; +$bb148: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 15} true; + assume {:verifier.code 0} true; + assume ($i245 == 1); + goto $bb149; +$bb149: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 239, 9} true; + assume {:verifier.code 0} true; + $i248 := $add.i32($i242, 1); + call {:cexpr "c"} boogie_si_record_i32($i248); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 240, 5} true; + assume {:verifier.code 0} true; + $i247 := $i248; + goto $bb153; +$bb150: + assume !(($i245 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 20} true; + assume {:verifier.code 0} true; + $i246 := $sgt.i32($i241, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 9} true; + assume {:verifier.code 0} true; + $i247 := $i242; + assume {:branchcond $i246} true; + goto $bb151, $bb152; +$bb151: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 9} true; + assume {:verifier.code 0} true; + assume ($i246 == 1); + goto $bb149; +$bb152: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 9} true; + assume {:verifier.code 0} true; + assume !(($i246 == 1)); + goto $bb153; +$bb153: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 241, 3} true; + assume {:verifier.code 0} true; + $i244 := $i247; + goto $bb147; +$bb154: + assume ($i258 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 11} true; + assume {:verifier.code 0} true; + $i260 := $slt.i32($i256, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i260} true; + goto $bb157, $bb159; +$bb155: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 248, 7} true; + assume {:verifier.code 0} true; + assume !(($i258 == 1)); + goto $bb156; +$bb156: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 253, 7} true; + assume {:verifier.code 0} true; + $i264 := $sext.i32.i64($i252); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 253, 9} true; + assume {:verifier.code 0} true; + $i265 := $srem.i64($i264, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 253, 7} true; + assume {:verifier.code 0} true; + $i266 := $trunc.i64.i32($i265); + call {:cexpr "a"} boogie_si_record_i32($i266); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 254, 5} true; + assume {:verifier.code 0} true; + $i267 := $add.i32($i266, $i266); + call {:cexpr "a"} boogie_si_record_i32($i267); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 255, 7} true; + assume {:verifier.code 0} true; + $i268 := $sext.i32.i64($i256); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 255, 9} true; + assume {:verifier.code 0} true; + $i269 := $srem.i64($i268, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 255, 7} true; + assume {:verifier.code 0} true; + $i270 := $trunc.i64.i32($i269); + call {:cexpr "b"} boogie_si_record_i32($i270); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 256, 5} true; + assume {:verifier.code 0} true; + $i271 := $add.i32($i270, $i270); + call {:cexpr "b"} boogie_si_record_i32($i271); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 258, 5} true; + assume {:verifier.code 0} true; + $i272 := $add.i32($i259, $i259); + call {:cexpr "c"} boogie_si_record_i32($i272); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 259, 9} true; + assume {:verifier.code 0} true; + $i273 := $slt.i32($i267, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 259, 7} true; + assume {:verifier.code 0} true; + $i274 := $i272; + assume {:branchcond $i273} true; + goto $bb163, $bb164; +$bb157: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 15} true; + assume {:verifier.code 0} true; + assume ($i260 == 1); + goto $bb158; +$bb158: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 250, 9} true; + assume {:verifier.code 0} true; + $i263 := $add.i32($i257, 1); + call {:cexpr "c"} boogie_si_record_i32($i263); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 251, 5} true; + assume {:verifier.code 0} true; + $i262 := $i263; + goto $bb162; +$bb159: + assume !(($i260 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 20} true; + assume {:verifier.code 0} true; + $i261 := $sgt.i32($i256, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 9} true; + assume {:verifier.code 0} true; + $i262 := $i257; + assume {:branchcond $i261} true; + goto $bb160, $bb161; +$bb160: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 9} true; + assume {:verifier.code 0} true; + assume ($i261 == 1); + goto $bb158; +$bb161: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 9} true; + assume {:verifier.code 0} true; + assume !(($i261 == 1)); + goto $bb162; +$bb162: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 252, 3} true; + assume {:verifier.code 0} true; + $i259 := $i262; + goto $bb156; +$bb163: + assume ($i273 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 11} true; + assume {:verifier.code 0} true; + $i275 := $slt.i32($i271, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i275} true; + goto $bb166, $bb168; +$bb164: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 259, 7} true; + assume {:verifier.code 0} true; + assume !(($i273 == 1)); + goto $bb165; +$bb165: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 264, 7} true; + assume {:verifier.code 0} true; + $i279 := $sext.i32.i64($i267); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 264, 9} true; + assume {:verifier.code 0} true; + $i280 := $srem.i64($i279, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 264, 7} true; + assume {:verifier.code 0} true; + $i281 := $trunc.i64.i32($i280); + call {:cexpr "a"} boogie_si_record_i32($i281); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 265, 5} true; + assume {:verifier.code 0} true; + $i282 := $add.i32($i281, $i281); + call {:cexpr "a"} boogie_si_record_i32($i282); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 266, 7} true; + assume {:verifier.code 0} true; + $i283 := $sext.i32.i64($i271); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 266, 9} true; + assume {:verifier.code 0} true; + $i284 := $srem.i64($i283, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 266, 7} true; + assume {:verifier.code 0} true; + $i285 := $trunc.i64.i32($i284); + call {:cexpr "b"} boogie_si_record_i32($i285); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 267, 5} true; + assume {:verifier.code 0} true; + $i286 := $add.i32($i285, $i285); + call {:cexpr "b"} boogie_si_record_i32($i286); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 269, 5} true; + assume {:verifier.code 0} true; + $i287 := $add.i32($i274, $i274); + call {:cexpr "c"} boogie_si_record_i32($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 270, 9} true; + assume {:verifier.code 0} true; + $i288 := $slt.i32($i282, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 270, 7} true; + assume {:verifier.code 0} true; + $i289 := $i287; + assume {:branchcond $i288} true; + goto $bb172, $bb173; +$bb166: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 15} true; + assume {:verifier.code 0} true; + assume ($i275 == 1); + goto $bb167; +$bb167: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 261, 9} true; + assume {:verifier.code 0} true; + $i278 := $add.i32($i272, 1); + call {:cexpr "c"} boogie_si_record_i32($i278); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 262, 5} true; + assume {:verifier.code 0} true; + $i277 := $i278; + goto $bb171; +$bb168: + assume !(($i275 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 20} true; + assume {:verifier.code 0} true; + $i276 := $sgt.i32($i271, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 9} true; + assume {:verifier.code 0} true; + $i277 := $i272; + assume {:branchcond $i276} true; + goto $bb169, $bb170; +$bb169: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 9} true; + assume {:verifier.code 0} true; + assume ($i276 == 1); + goto $bb167; +$bb170: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 9} true; + assume {:verifier.code 0} true; + assume !(($i276 == 1)); + goto $bb171; +$bb171: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 263, 3} true; + assume {:verifier.code 0} true; + $i274 := $i277; + goto $bb165; +$bb172: + assume ($i288 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 11} true; + assume {:verifier.code 0} true; + $i290 := $slt.i32($i286, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i290} true; + goto $bb175, $bb177; +$bb173: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 270, 7} true; + assume {:verifier.code 0} true; + assume !(($i288 == 1)); + goto $bb174; +$bb174: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 275, 7} true; + assume {:verifier.code 0} true; + $i294 := $sext.i32.i64($i282); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 275, 9} true; + assume {:verifier.code 0} true; + $i295 := $srem.i64($i294, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 275, 7} true; + assume {:verifier.code 0} true; + $i296 := $trunc.i64.i32($i295); + call {:cexpr "a"} boogie_si_record_i32($i296); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 276, 5} true; + assume {:verifier.code 0} true; + $i297 := $add.i32($i296, $i296); + call {:cexpr "a"} boogie_si_record_i32($i297); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 277, 7} true; + assume {:verifier.code 0} true; + $i298 := $sext.i32.i64($i286); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 277, 9} true; + assume {:verifier.code 0} true; + $i299 := $srem.i64($i298, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 277, 7} true; + assume {:verifier.code 0} true; + $i300 := $trunc.i64.i32($i299); + call {:cexpr "b"} boogie_si_record_i32($i300); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 278, 5} true; + assume {:verifier.code 0} true; + $i301 := $add.i32($i300, $i300); + call {:cexpr "b"} boogie_si_record_i32($i301); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 280, 5} true; + assume {:verifier.code 0} true; + $i302 := $add.i32($i289, $i289); + call {:cexpr "c"} boogie_si_record_i32($i302); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 281, 9} true; + assume {:verifier.code 0} true; + $i303 := $slt.i32($i297, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 281, 7} true; + assume {:verifier.code 0} true; + $i304 := $i302; + assume {:branchcond $i303} true; + goto $bb181, $bb182; +$bb175: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 15} true; + assume {:verifier.code 0} true; + assume ($i290 == 1); + goto $bb176; +$bb176: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 272, 9} true; + assume {:verifier.code 0} true; + $i293 := $add.i32($i287, 1); + call {:cexpr "c"} boogie_si_record_i32($i293); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 273, 5} true; + assume {:verifier.code 0} true; + $i292 := $i293; + goto $bb180; +$bb177: + assume !(($i290 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 20} true; + assume {:verifier.code 0} true; + $i291 := $sgt.i32($i286, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 9} true; + assume {:verifier.code 0} true; + $i292 := $i287; + assume {:branchcond $i291} true; + goto $bb178, $bb179; +$bb178: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 9} true; + assume {:verifier.code 0} true; + assume ($i291 == 1); + goto $bb176; +$bb179: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 9} true; + assume {:verifier.code 0} true; + assume !(($i291 == 1)); + goto $bb180; +$bb180: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 274, 3} true; + assume {:verifier.code 0} true; + $i289 := $i292; + goto $bb174; +$bb181: + assume ($i303 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 11} true; + assume {:verifier.code 0} true; + $i305 := $slt.i32($i301, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i305} true; + goto $bb184, $bb186; +$bb182: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 281, 7} true; + assume {:verifier.code 0} true; + assume !(($i303 == 1)); + goto $bb183; +$bb183: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 286, 7} true; + assume {:verifier.code 0} true; + $i309 := $sext.i32.i64($i297); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 286, 9} true; + assume {:verifier.code 0} true; + $i310 := $srem.i64($i309, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 286, 7} true; + assume {:verifier.code 0} true; + $i311 := $trunc.i64.i32($i310); + call {:cexpr "a"} boogie_si_record_i32($i311); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 287, 5} true; + assume {:verifier.code 0} true; + $i312 := $add.i32($i311, $i311); + call {:cexpr "a"} boogie_si_record_i32($i312); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 288, 7} true; + assume {:verifier.code 0} true; + $i313 := $sext.i32.i64($i301); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 288, 9} true; + assume {:verifier.code 0} true; + $i314 := $srem.i64($i313, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 288, 7} true; + assume {:verifier.code 0} true; + $i315 := $trunc.i64.i32($i314); + call {:cexpr "b"} boogie_si_record_i32($i315); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 289, 5} true; + assume {:verifier.code 0} true; + $i316 := $add.i32($i315, $i315); + call {:cexpr "b"} boogie_si_record_i32($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 291, 5} true; + assume {:verifier.code 0} true; + $i317 := $add.i32($i304, $i304); + call {:cexpr "c"} boogie_si_record_i32($i317); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 292, 9} true; + assume {:verifier.code 0} true; + $i318 := $slt.i32($i312, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 292, 7} true; + assume {:verifier.code 0} true; + $i319 := $i317; + assume {:branchcond $i318} true; + goto $bb190, $bb191; +$bb184: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 15} true; + assume {:verifier.code 0} true; + assume ($i305 == 1); + goto $bb185; +$bb185: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 283, 9} true; + assume {:verifier.code 0} true; + $i308 := $add.i32($i302, 1); + call {:cexpr "c"} boogie_si_record_i32($i308); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 284, 5} true; + assume {:verifier.code 0} true; + $i307 := $i308; + goto $bb189; +$bb186: + assume !(($i305 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 20} true; + assume {:verifier.code 0} true; + $i306 := $sgt.i32($i301, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 9} true; + assume {:verifier.code 0} true; + $i307 := $i302; + assume {:branchcond $i306} true; + goto $bb187, $bb188; +$bb187: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 9} true; + assume {:verifier.code 0} true; + assume ($i306 == 1); + goto $bb185; +$bb188: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 9} true; + assume {:verifier.code 0} true; + assume !(($i306 == 1)); + goto $bb189; +$bb189: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 285, 3} true; + assume {:verifier.code 0} true; + $i304 := $i307; + goto $bb183; +$bb190: + assume ($i318 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 11} true; + assume {:verifier.code 0} true; + $i320 := $slt.i32($i316, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i320} true; + goto $bb193, $bb195; +$bb191: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 292, 7} true; + assume {:verifier.code 0} true; + assume !(($i318 == 1)); + goto $bb192; +$bb192: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 297, 7} true; + assume {:verifier.code 0} true; + $i324 := $sext.i32.i64($i312); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 297, 9} true; + assume {:verifier.code 0} true; + $i325 := $srem.i64($i324, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 297, 7} true; + assume {:verifier.code 0} true; + $i326 := $trunc.i64.i32($i325); + call {:cexpr "a"} boogie_si_record_i32($i326); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 298, 5} true; + assume {:verifier.code 0} true; + $i327 := $add.i32($i326, $i326); + call {:cexpr "a"} boogie_si_record_i32($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 299, 7} true; + assume {:verifier.code 0} true; + $i328 := $sext.i32.i64($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 299, 9} true; + assume {:verifier.code 0} true; + $i329 := $srem.i64($i328, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 299, 7} true; + assume {:verifier.code 0} true; + $i330 := $trunc.i64.i32($i329); + call {:cexpr "b"} boogie_si_record_i32($i330); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 300, 5} true; + assume {:verifier.code 0} true; + $i331 := $add.i32($i330, $i330); + call {:cexpr "b"} boogie_si_record_i32($i331); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 302, 5} true; + assume {:verifier.code 0} true; + $i332 := $add.i32($i319, $i319); + call {:cexpr "c"} boogie_si_record_i32($i332); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 303, 9} true; + assume {:verifier.code 0} true; + $i333 := $slt.i32($i327, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 303, 7} true; + assume {:verifier.code 0} true; + $i334 := $i332; + assume {:branchcond $i333} true; + goto $bb199, $bb200; +$bb193: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 15} true; + assume {:verifier.code 0} true; + assume ($i320 == 1); + goto $bb194; +$bb194: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 294, 9} true; + assume {:verifier.code 0} true; + $i323 := $add.i32($i317, 1); + call {:cexpr "c"} boogie_si_record_i32($i323); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 295, 5} true; + assume {:verifier.code 0} true; + $i322 := $i323; + goto $bb198; +$bb195: + assume !(($i320 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 20} true; + assume {:verifier.code 0} true; + $i321 := $sgt.i32($i316, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 9} true; + assume {:verifier.code 0} true; + $i322 := $i317; + assume {:branchcond $i321} true; + goto $bb196, $bb197; +$bb196: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 9} true; + assume {:verifier.code 0} true; + assume ($i321 == 1); + goto $bb194; +$bb197: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 9} true; + assume {:verifier.code 0} true; + assume !(($i321 == 1)); + goto $bb198; +$bb198: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 296, 3} true; + assume {:verifier.code 0} true; + $i319 := $i322; + goto $bb192; +$bb199: + assume ($i333 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 11} true; + assume {:verifier.code 0} true; + $i335 := $slt.i32($i331, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i335} true; + goto $bb202, $bb204; +$bb200: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 303, 7} true; + assume {:verifier.code 0} true; + assume !(($i333 == 1)); + goto $bb201; +$bb201: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 308, 7} true; + assume {:verifier.code 0} true; + $i339 := $sext.i32.i64($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 308, 9} true; + assume {:verifier.code 0} true; + $i340 := $srem.i64($i339, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 308, 7} true; + assume {:verifier.code 0} true; + $i341 := $trunc.i64.i32($i340); + call {:cexpr "a"} boogie_si_record_i32($i341); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 309, 5} true; + assume {:verifier.code 0} true; + $i342 := $add.i32($i341, $i341); + call {:cexpr "a"} boogie_si_record_i32($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 310, 7} true; + assume {:verifier.code 0} true; + $i343 := $sext.i32.i64($i331); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 310, 9} true; + assume {:verifier.code 0} true; + $i344 := $srem.i64($i343, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 310, 7} true; + assume {:verifier.code 0} true; + $i345 := $trunc.i64.i32($i344); + call {:cexpr "b"} boogie_si_record_i32($i345); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 311, 5} true; + assume {:verifier.code 0} true; + $i346 := $add.i32($i345, $i345); + call {:cexpr "b"} boogie_si_record_i32($i346); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 313, 5} true; + assume {:verifier.code 0} true; + $i347 := $add.i32($i334, $i334); + call {:cexpr "c"} boogie_si_record_i32($i347); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 314, 9} true; + assume {:verifier.code 0} true; + $i348 := $slt.i32($i342, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 314, 7} true; + assume {:verifier.code 0} true; + $i349 := $i347; + assume {:branchcond $i348} true; + goto $bb208, $bb209; +$bb202: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 15} true; + assume {:verifier.code 0} true; + assume ($i335 == 1); + goto $bb203; +$bb203: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 305, 9} true; + assume {:verifier.code 0} true; + $i338 := $add.i32($i332, 1); + call {:cexpr "c"} boogie_si_record_i32($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 306, 5} true; + assume {:verifier.code 0} true; + $i337 := $i338; + goto $bb207; +$bb204: + assume !(($i335 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 20} true; + assume {:verifier.code 0} true; + $i336 := $sgt.i32($i331, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 9} true; + assume {:verifier.code 0} true; + $i337 := $i332; + assume {:branchcond $i336} true; + goto $bb205, $bb206; +$bb205: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 9} true; + assume {:verifier.code 0} true; + assume ($i336 == 1); + goto $bb203; +$bb206: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 9} true; + assume {:verifier.code 0} true; + assume !(($i336 == 1)); + goto $bb207; +$bb207: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 307, 3} true; + assume {:verifier.code 0} true; + $i334 := $i337; + goto $bb201; +$bb208: + assume ($i348 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 11} true; + assume {:verifier.code 0} true; + $i350 := $slt.i32($i346, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i350} true; + goto $bb211, $bb213; +$bb209: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 314, 7} true; + assume {:verifier.code 0} true; + assume !(($i348 == 1)); + goto $bb210; +$bb210: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 319, 7} true; + assume {:verifier.code 0} true; + $i354 := $sext.i32.i64($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 319, 9} true; + assume {:verifier.code 0} true; + $i355 := $srem.i64($i354, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 319, 7} true; + assume {:verifier.code 0} true; + $i356 := $trunc.i64.i32($i355); + call {:cexpr "a"} boogie_si_record_i32($i356); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 320, 5} true; + assume {:verifier.code 0} true; + $i357 := $add.i32($i356, $i356); + call {:cexpr "a"} boogie_si_record_i32($i357); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 321, 7} true; + assume {:verifier.code 0} true; + $i358 := $sext.i32.i64($i346); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 321, 9} true; + assume {:verifier.code 0} true; + $i359 := $srem.i64($i358, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 321, 7} true; + assume {:verifier.code 0} true; + $i360 := $trunc.i64.i32($i359); + call {:cexpr "b"} boogie_si_record_i32($i360); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 322, 5} true; + assume {:verifier.code 0} true; + $i361 := $add.i32($i360, $i360); + call {:cexpr "b"} boogie_si_record_i32($i361); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 324, 5} true; + assume {:verifier.code 0} true; + $i362 := $add.i32($i349, $i349); + call {:cexpr "c"} boogie_si_record_i32($i362); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 325, 9} true; + assume {:verifier.code 0} true; + $i363 := $slt.i32($i357, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 325, 7} true; + assume {:verifier.code 0} true; + $i364 := $i362; + assume {:branchcond $i363} true; + goto $bb217, $bb218; +$bb211: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 15} true; + assume {:verifier.code 0} true; + assume ($i350 == 1); + goto $bb212; +$bb212: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 316, 9} true; + assume {:verifier.code 0} true; + $i353 := $add.i32($i347, 1); + call {:cexpr "c"} boogie_si_record_i32($i353); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 317, 5} true; + assume {:verifier.code 0} true; + $i352 := $i353; + goto $bb216; +$bb213: + assume !(($i350 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 20} true; + assume {:verifier.code 0} true; + $i351 := $sgt.i32($i346, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 9} true; + assume {:verifier.code 0} true; + $i352 := $i347; + assume {:branchcond $i351} true; + goto $bb214, $bb215; +$bb214: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 9} true; + assume {:verifier.code 0} true; + assume ($i351 == 1); + goto $bb212; +$bb215: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 9} true; + assume {:verifier.code 0} true; + assume !(($i351 == 1)); + goto $bb216; +$bb216: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 318, 3} true; + assume {:verifier.code 0} true; + $i349 := $i352; + goto $bb210; +$bb217: + assume ($i363 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 11} true; + assume {:verifier.code 0} true; + $i365 := $slt.i32($i361, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i365} true; + goto $bb220, $bb222; +$bb218: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 325, 7} true; + assume {:verifier.code 0} true; + assume !(($i363 == 1)); + goto $bb219; +$bb219: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 330, 7} true; + assume {:verifier.code 0} true; + $i369 := $sext.i32.i64($i357); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 330, 9} true; + assume {:verifier.code 0} true; + $i370 := $srem.i64($i369, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 330, 7} true; + assume {:verifier.code 0} true; + $i371 := $trunc.i64.i32($i370); + call {:cexpr "a"} boogie_si_record_i32($i371); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 331, 5} true; + assume {:verifier.code 0} true; + $i372 := $add.i32($i371, $i371); + call {:cexpr "a"} boogie_si_record_i32($i372); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 332, 7} true; + assume {:verifier.code 0} true; + $i373 := $sext.i32.i64($i361); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 332, 9} true; + assume {:verifier.code 0} true; + $i374 := $srem.i64($i373, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 332, 7} true; + assume {:verifier.code 0} true; + $i375 := $trunc.i64.i32($i374); + call {:cexpr "b"} boogie_si_record_i32($i375); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 333, 5} true; + assume {:verifier.code 0} true; + $i376 := $add.i32($i375, $i375); + call {:cexpr "b"} boogie_si_record_i32($i376); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 335, 5} true; + assume {:verifier.code 0} true; + $i377 := $add.i32($i364, $i364); + call {:cexpr "c"} boogie_si_record_i32($i377); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 336, 9} true; + assume {:verifier.code 0} true; + $i378 := $slt.i32($i372, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 336, 7} true; + assume {:verifier.code 0} true; + $i379 := $i377; + assume {:branchcond $i378} true; + goto $bb226, $bb227; +$bb220: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 15} true; + assume {:verifier.code 0} true; + assume ($i365 == 1); + goto $bb221; +$bb221: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 327, 9} true; + assume {:verifier.code 0} true; + $i368 := $add.i32($i362, 1); + call {:cexpr "c"} boogie_si_record_i32($i368); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 328, 5} true; + assume {:verifier.code 0} true; + $i367 := $i368; + goto $bb225; +$bb222: + assume !(($i365 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 20} true; + assume {:verifier.code 0} true; + $i366 := $sgt.i32($i361, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 9} true; + assume {:verifier.code 0} true; + $i367 := $i362; + assume {:branchcond $i366} true; + goto $bb223, $bb224; +$bb223: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 9} true; + assume {:verifier.code 0} true; + assume ($i366 == 1); + goto $bb221; +$bb224: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 9} true; + assume {:verifier.code 0} true; + assume !(($i366 == 1)); + goto $bb225; +$bb225: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 329, 3} true; + assume {:verifier.code 0} true; + $i364 := $i367; + goto $bb219; +$bb226: + assume ($i378 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 11} true; + assume {:verifier.code 0} true; + $i380 := $slt.i32($i376, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i380} true; + goto $bb229, $bb231; +$bb227: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 336, 7} true; + assume {:verifier.code 0} true; + assume !(($i378 == 1)); + goto $bb228; +$bb228: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 341, 7} true; + assume {:verifier.code 0} true; + $i384 := $sext.i32.i64($i372); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 341, 9} true; + assume {:verifier.code 0} true; + $i385 := $srem.i64($i384, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 341, 7} true; + assume {:verifier.code 0} true; + $i386 := $trunc.i64.i32($i385); + call {:cexpr "a"} boogie_si_record_i32($i386); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 342, 5} true; + assume {:verifier.code 0} true; + $i387 := $add.i32($i386, $i386); + call {:cexpr "a"} boogie_si_record_i32($i387); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 343, 7} true; + assume {:verifier.code 0} true; + $i388 := $sext.i32.i64($i376); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 343, 9} true; + assume {:verifier.code 0} true; + $i389 := $srem.i64($i388, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 343, 7} true; + assume {:verifier.code 0} true; + $i390 := $trunc.i64.i32($i389); + call {:cexpr "b"} boogie_si_record_i32($i390); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 344, 5} true; + assume {:verifier.code 0} true; + $i391 := $add.i32($i390, $i390); + call {:cexpr "b"} boogie_si_record_i32($i391); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 346, 5} true; + assume {:verifier.code 0} true; + $i392 := $add.i32($i379, $i379); + call {:cexpr "c"} boogie_si_record_i32($i392); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 347, 9} true; + assume {:verifier.code 0} true; + $i393 := $slt.i32($i387, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 347, 7} true; + assume {:verifier.code 0} true; + $i394 := $i392; + assume {:branchcond $i393} true; + goto $bb235, $bb236; +$bb229: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 15} true; + assume {:verifier.code 0} true; + assume ($i380 == 1); + goto $bb230; +$bb230: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 338, 9} true; + assume {:verifier.code 0} true; + $i383 := $add.i32($i377, 1); + call {:cexpr "c"} boogie_si_record_i32($i383); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 339, 5} true; + assume {:verifier.code 0} true; + $i382 := $i383; + goto $bb234; +$bb231: + assume !(($i380 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 20} true; + assume {:verifier.code 0} true; + $i381 := $sgt.i32($i376, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 9} true; + assume {:verifier.code 0} true; + $i382 := $i377; + assume {:branchcond $i381} true; + goto $bb232, $bb233; +$bb232: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 9} true; + assume {:verifier.code 0} true; + assume ($i381 == 1); + goto $bb230; +$bb233: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 9} true; + assume {:verifier.code 0} true; + assume !(($i381 == 1)); + goto $bb234; +$bb234: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 340, 3} true; + assume {:verifier.code 0} true; + $i379 := $i382; + goto $bb228; +$bb235: + assume ($i393 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 11} true; + assume {:verifier.code 0} true; + $i395 := $slt.i32($i391, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i395} true; + goto $bb238, $bb240; +$bb236: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 347, 7} true; + assume {:verifier.code 0} true; + assume !(($i393 == 1)); + goto $bb237; +$bb237: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 352, 7} true; + assume {:verifier.code 0} true; + $i399 := $sext.i32.i64($i387); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 352, 9} true; + assume {:verifier.code 0} true; + $i400 := $srem.i64($i399, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 352, 7} true; + assume {:verifier.code 0} true; + $i401 := $trunc.i64.i32($i400); + call {:cexpr "a"} boogie_si_record_i32($i401); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 353, 5} true; + assume {:verifier.code 0} true; + $i402 := $add.i32($i401, $i401); + call {:cexpr "a"} boogie_si_record_i32($i402); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 354, 7} true; + assume {:verifier.code 0} true; + $i403 := $sext.i32.i64($i391); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 354, 9} true; + assume {:verifier.code 0} true; + $i404 := $srem.i64($i403, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 354, 7} true; + assume {:verifier.code 0} true; + $i405 := $trunc.i64.i32($i404); + call {:cexpr "b"} boogie_si_record_i32($i405); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 355, 5} true; + assume {:verifier.code 0} true; + $i406 := $add.i32($i405, $i405); + call {:cexpr "b"} boogie_si_record_i32($i406); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 357, 5} true; + assume {:verifier.code 0} true; + $i407 := $add.i32($i394, $i394); + call {:cexpr "c"} boogie_si_record_i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 358, 9} true; + assume {:verifier.code 0} true; + $i408 := $slt.i32($i402, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 358, 7} true; + assume {:verifier.code 0} true; + $i409 := $i407; + assume {:branchcond $i408} true; + goto $bb244, $bb245; +$bb238: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 15} true; + assume {:verifier.code 0} true; + assume ($i395 == 1); + goto $bb239; +$bb239: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 349, 9} true; + assume {:verifier.code 0} true; + $i398 := $add.i32($i392, 1); + call {:cexpr "c"} boogie_si_record_i32($i398); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 350, 5} true; + assume {:verifier.code 0} true; + $i397 := $i398; + goto $bb243; +$bb240: + assume !(($i395 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 20} true; + assume {:verifier.code 0} true; + $i396 := $sgt.i32($i391, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 9} true; + assume {:verifier.code 0} true; + $i397 := $i392; + assume {:branchcond $i396} true; + goto $bb241, $bb242; +$bb241: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 9} true; + assume {:verifier.code 0} true; + assume ($i396 == 1); + goto $bb239; +$bb242: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 9} true; + assume {:verifier.code 0} true; + assume !(($i396 == 1)); + goto $bb243; +$bb243: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 351, 3} true; + assume {:verifier.code 0} true; + $i394 := $i397; + goto $bb237; +$bb244: + assume ($i408 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 11} true; + assume {:verifier.code 0} true; + $i410 := $slt.i32($i406, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i410} true; + goto $bb247, $bb249; +$bb245: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 358, 7} true; + assume {:verifier.code 0} true; + assume !(($i408 == 1)); + goto $bb246; +$bb246: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 363, 7} true; + assume {:verifier.code 0} true; + $i414 := $sext.i32.i64($i402); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 363, 9} true; + assume {:verifier.code 0} true; + $i415 := $srem.i64($i414, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 363, 7} true; + assume {:verifier.code 0} true; + $i416 := $trunc.i64.i32($i415); + call {:cexpr "a"} boogie_si_record_i32($i416); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 364, 5} true; + assume {:verifier.code 0} true; + $i417 := $add.i32($i416, $i416); + call {:cexpr "a"} boogie_si_record_i32($i417); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 365, 7} true; + assume {:verifier.code 0} true; + $i418 := $sext.i32.i64($i406); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 365, 9} true; + assume {:verifier.code 0} true; + $i419 := $srem.i64($i418, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 365, 7} true; + assume {:verifier.code 0} true; + $i420 := $trunc.i64.i32($i419); + call {:cexpr "b"} boogie_si_record_i32($i420); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 366, 5} true; + assume {:verifier.code 0} true; + $i421 := $add.i32($i420, $i420); + call {:cexpr "b"} boogie_si_record_i32($i421); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 368, 5} true; + assume {:verifier.code 0} true; + $i422 := $add.i32($i409, $i409); + call {:cexpr "c"} boogie_si_record_i32($i422); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 369, 9} true; + assume {:verifier.code 0} true; + $i423 := $slt.i32($i417, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 369, 7} true; + assume {:verifier.code 0} true; + $i424 := $i422; + assume {:branchcond $i423} true; + goto $bb253, $bb254; +$bb247: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 15} true; + assume {:verifier.code 0} true; + assume ($i410 == 1); + goto $bb248; +$bb248: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 360, 9} true; + assume {:verifier.code 0} true; + $i413 := $add.i32($i407, 1); + call {:cexpr "c"} boogie_si_record_i32($i413); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 361, 5} true; + assume {:verifier.code 0} true; + $i412 := $i413; + goto $bb252; +$bb249: + assume !(($i410 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 20} true; + assume {:verifier.code 0} true; + $i411 := $sgt.i32($i406, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 9} true; + assume {:verifier.code 0} true; + $i412 := $i407; + assume {:branchcond $i411} true; + goto $bb250, $bb251; +$bb250: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 9} true; + assume {:verifier.code 0} true; + assume ($i411 == 1); + goto $bb248; +$bb251: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 9} true; + assume {:verifier.code 0} true; + assume !(($i411 == 1)); + goto $bb252; +$bb252: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 362, 3} true; + assume {:verifier.code 0} true; + $i409 := $i412; + goto $bb246; +$bb253: + assume ($i423 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 11} true; + assume {:verifier.code 0} true; + $i425 := $slt.i32($i421, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i425} true; + goto $bb256, $bb258; +$bb254: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 369, 7} true; + assume {:verifier.code 0} true; + assume !(($i423 == 1)); + goto $bb255; +$bb255: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 374, 7} true; + assume {:verifier.code 0} true; + $i429 := $sext.i32.i64($i417); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 374, 9} true; + assume {:verifier.code 0} true; + $i430 := $srem.i64($i429, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 374, 7} true; + assume {:verifier.code 0} true; + $i431 := $trunc.i64.i32($i430); + call {:cexpr "a"} boogie_si_record_i32($i431); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 375, 5} true; + assume {:verifier.code 0} true; + $i432 := $add.i32($i431, $i431); + call {:cexpr "a"} boogie_si_record_i32($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 376, 7} true; + assume {:verifier.code 0} true; + $i433 := $sext.i32.i64($i421); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 376, 9} true; + assume {:verifier.code 0} true; + $i434 := $srem.i64($i433, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 376, 7} true; + assume {:verifier.code 0} true; + $i435 := $trunc.i64.i32($i434); + call {:cexpr "b"} boogie_si_record_i32($i435); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 377, 5} true; + assume {:verifier.code 0} true; + $i436 := $add.i32($i435, $i435); + call {:cexpr "b"} boogie_si_record_i32($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 379, 5} true; + assume {:verifier.code 0} true; + $i437 := $add.i32($i424, $i424); + call {:cexpr "c"} boogie_si_record_i32($i437); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 380, 9} true; + assume {:verifier.code 0} true; + $i438 := $slt.i32($i432, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 380, 7} true; + assume {:verifier.code 0} true; + $i439 := $i437; + assume {:branchcond $i438} true; + goto $bb262, $bb263; +$bb256: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 15} true; + assume {:verifier.code 0} true; + assume ($i425 == 1); + goto $bb257; +$bb257: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 371, 9} true; + assume {:verifier.code 0} true; + $i428 := $add.i32($i422, 1); + call {:cexpr "c"} boogie_si_record_i32($i428); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 372, 5} true; + assume {:verifier.code 0} true; + $i427 := $i428; + goto $bb261; +$bb258: + assume !(($i425 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 20} true; + assume {:verifier.code 0} true; + $i426 := $sgt.i32($i421, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 9} true; + assume {:verifier.code 0} true; + $i427 := $i422; + assume {:branchcond $i426} true; + goto $bb259, $bb260; +$bb259: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 9} true; + assume {:verifier.code 0} true; + assume ($i426 == 1); + goto $bb257; +$bb260: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 9} true; + assume {:verifier.code 0} true; + assume !(($i426 == 1)); + goto $bb261; +$bb261: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 373, 3} true; + assume {:verifier.code 0} true; + $i424 := $i427; + goto $bb255; +$bb262: + assume ($i438 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 11} true; + assume {:verifier.code 0} true; + $i440 := $slt.i32($i436, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i440} true; + goto $bb265, $bb267; +$bb263: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 380, 7} true; + assume {:verifier.code 0} true; + assume !(($i438 == 1)); + goto $bb264; +$bb264: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 385, 7} true; + assume {:verifier.code 0} true; + $i444 := $sext.i32.i64($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 385, 9} true; + assume {:verifier.code 0} true; + $i445 := $srem.i64($i444, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 385, 7} true; + assume {:verifier.code 0} true; + $i446 := $trunc.i64.i32($i445); + call {:cexpr "a"} boogie_si_record_i32($i446); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 386, 5} true; + assume {:verifier.code 0} true; + $i447 := $add.i32($i446, $i446); + call {:cexpr "a"} boogie_si_record_i32($i447); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 387, 7} true; + assume {:verifier.code 0} true; + $i448 := $sext.i32.i64($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 387, 9} true; + assume {:verifier.code 0} true; + $i449 := $srem.i64($i448, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 387, 7} true; + assume {:verifier.code 0} true; + $i450 := $trunc.i64.i32($i449); + call {:cexpr "b"} boogie_si_record_i32($i450); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 388, 5} true; + assume {:verifier.code 0} true; + $i451 := $add.i32($i450, $i450); + call {:cexpr "b"} boogie_si_record_i32($i451); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 390, 5} true; + assume {:verifier.code 0} true; + $i452 := $add.i32($i439, $i439); + call {:cexpr "c"} boogie_si_record_i32($i452); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 391, 9} true; + assume {:verifier.code 0} true; + $i453 := $slt.i32($i447, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 391, 7} true; + assume {:verifier.code 0} true; + $i454 := $i452; + assume {:branchcond $i453} true; + goto $bb271, $bb272; +$bb265: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 15} true; + assume {:verifier.code 0} true; + assume ($i440 == 1); + goto $bb266; +$bb266: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 382, 9} true; + assume {:verifier.code 0} true; + $i443 := $add.i32($i437, 1); + call {:cexpr "c"} boogie_si_record_i32($i443); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 383, 5} true; + assume {:verifier.code 0} true; + $i442 := $i443; + goto $bb270; +$bb267: + assume !(($i440 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 20} true; + assume {:verifier.code 0} true; + $i441 := $sgt.i32($i436, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 9} true; + assume {:verifier.code 0} true; + $i442 := $i437; + assume {:branchcond $i441} true; + goto $bb268, $bb269; +$bb268: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 9} true; + assume {:verifier.code 0} true; + assume ($i441 == 1); + goto $bb266; +$bb269: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 9} true; + assume {:verifier.code 0} true; + assume !(($i441 == 1)); + goto $bb270; +$bb270: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 384, 3} true; + assume {:verifier.code 0} true; + $i439 := $i442; + goto $bb264; +$bb271: + assume ($i453 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 11} true; + assume {:verifier.code 0} true; + $i455 := $slt.i32($i451, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i455} true; + goto $bb274, $bb276; +$bb272: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 391, 7} true; + assume {:verifier.code 0} true; + assume !(($i453 == 1)); + goto $bb273; +$bb273: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 396, 7} true; + assume {:verifier.code 0} true; + $i459 := $sext.i32.i64($i447); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 396, 9} true; + assume {:verifier.code 0} true; + $i460 := $srem.i64($i459, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 396, 7} true; + assume {:verifier.code 0} true; + $i461 := $trunc.i64.i32($i460); + call {:cexpr "a"} boogie_si_record_i32($i461); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 397, 5} true; + assume {:verifier.code 0} true; + $i462 := $add.i32($i461, $i461); + call {:cexpr "a"} boogie_si_record_i32($i462); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 398, 7} true; + assume {:verifier.code 0} true; + $i463 := $sext.i32.i64($i451); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 398, 9} true; + assume {:verifier.code 0} true; + $i464 := $srem.i64($i463, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 398, 7} true; + assume {:verifier.code 0} true; + $i465 := $trunc.i64.i32($i464); + call {:cexpr "b"} boogie_si_record_i32($i465); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 399, 5} true; + assume {:verifier.code 0} true; + $i466 := $add.i32($i465, $i465); + call {:cexpr "b"} boogie_si_record_i32($i466); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 401, 5} true; + assume {:verifier.code 0} true; + $i467 := $add.i32($i454, $i454); + call {:cexpr "c"} boogie_si_record_i32($i467); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 402, 9} true; + assume {:verifier.code 0} true; + $i468 := $slt.i32($i462, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 402, 7} true; + assume {:verifier.code 0} true; + $i469 := $i467; + assume {:branchcond $i468} true; + goto $bb280, $bb281; +$bb274: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 15} true; + assume {:verifier.code 0} true; + assume ($i455 == 1); + goto $bb275; +$bb275: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 393, 9} true; + assume {:verifier.code 0} true; + $i458 := $add.i32($i452, 1); + call {:cexpr "c"} boogie_si_record_i32($i458); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 394, 5} true; + assume {:verifier.code 0} true; + $i457 := $i458; + goto $bb279; +$bb276: + assume !(($i455 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 20} true; + assume {:verifier.code 0} true; + $i456 := $sgt.i32($i451, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 9} true; + assume {:verifier.code 0} true; + $i457 := $i452; + assume {:branchcond $i456} true; + goto $bb277, $bb278; +$bb277: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 9} true; + assume {:verifier.code 0} true; + assume ($i456 == 1); + goto $bb275; +$bb278: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 9} true; + assume {:verifier.code 0} true; + assume !(($i456 == 1)); + goto $bb279; +$bb279: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 395, 3} true; + assume {:verifier.code 0} true; + $i454 := $i457; + goto $bb273; +$bb280: + assume ($i468 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 11} true; + assume {:verifier.code 0} true; + $i470 := $slt.i32($i466, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i470} true; + goto $bb283, $bb285; +$bb281: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 402, 7} true; + assume {:verifier.code 0} true; + assume !(($i468 == 1)); + goto $bb282; +$bb282: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 407, 7} true; + assume {:verifier.code 0} true; + $i474 := $sext.i32.i64($i462); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 407, 9} true; + assume {:verifier.code 0} true; + $i475 := $srem.i64($i474, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 407, 7} true; + assume {:verifier.code 0} true; + $i476 := $trunc.i64.i32($i475); + call {:cexpr "a"} boogie_si_record_i32($i476); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 408, 5} true; + assume {:verifier.code 0} true; + $i477 := $add.i32($i476, $i476); + call {:cexpr "a"} boogie_si_record_i32($i477); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 409, 7} true; + assume {:verifier.code 0} true; + $i478 := $sext.i32.i64($i466); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 409, 9} true; + assume {:verifier.code 0} true; + $i479 := $srem.i64($i478, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 409, 7} true; + assume {:verifier.code 0} true; + $i480 := $trunc.i64.i32($i479); + call {:cexpr "b"} boogie_si_record_i32($i480); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 410, 5} true; + assume {:verifier.code 0} true; + $i481 := $add.i32($i480, $i480); + call {:cexpr "b"} boogie_si_record_i32($i481); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 412, 5} true; + assume {:verifier.code 0} true; + $i482 := $add.i32($i469, $i469); + call {:cexpr "c"} boogie_si_record_i32($i482); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 413, 9} true; + assume {:verifier.code 0} true; + $i483 := $slt.i32($i477, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 413, 7} true; + assume {:verifier.code 0} true; + $i484 := $i482; + assume {:branchcond $i483} true; + goto $bb289, $bb290; +$bb283: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 15} true; + assume {:verifier.code 0} true; + assume ($i470 == 1); + goto $bb284; +$bb284: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 404, 9} true; + assume {:verifier.code 0} true; + $i473 := $add.i32($i467, 1); + call {:cexpr "c"} boogie_si_record_i32($i473); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 405, 5} true; + assume {:verifier.code 0} true; + $i472 := $i473; + goto $bb288; +$bb285: + assume !(($i470 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 20} true; + assume {:verifier.code 0} true; + $i471 := $sgt.i32($i466, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 9} true; + assume {:verifier.code 0} true; + $i472 := $i467; + assume {:branchcond $i471} true; + goto $bb286, $bb287; +$bb286: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 9} true; + assume {:verifier.code 0} true; + assume ($i471 == 1); + goto $bb284; +$bb287: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 9} true; + assume {:verifier.code 0} true; + assume !(($i471 == 1)); + goto $bb288; +$bb288: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 406, 3} true; + assume {:verifier.code 0} true; + $i469 := $i472; + goto $bb282; +$bb289: + assume ($i483 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 11} true; + assume {:verifier.code 0} true; + $i485 := $slt.i32($i481, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i485} true; + goto $bb292, $bb294; +$bb290: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 413, 7} true; + assume {:verifier.code 0} true; + assume !(($i483 == 1)); + goto $bb291; +$bb291: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 418, 7} true; + assume {:verifier.code 0} true; + $i489 := $sext.i32.i64($i477); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 418, 9} true; + assume {:verifier.code 0} true; + $i490 := $srem.i64($i489, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 418, 7} true; + assume {:verifier.code 0} true; + $i491 := $trunc.i64.i32($i490); + call {:cexpr "a"} boogie_si_record_i32($i491); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 419, 5} true; + assume {:verifier.code 0} true; + $i492 := $add.i32($i491, $i491); + call {:cexpr "a"} boogie_si_record_i32($i492); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 420, 7} true; + assume {:verifier.code 0} true; + $i493 := $sext.i32.i64($i481); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 420, 9} true; + assume {:verifier.code 0} true; + $i494 := $srem.i64($i493, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 420, 7} true; + assume {:verifier.code 0} true; + $i495 := $trunc.i64.i32($i494); + call {:cexpr "b"} boogie_si_record_i32($i495); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 421, 5} true; + assume {:verifier.code 0} true; + $i496 := $add.i32($i495, $i495); + call {:cexpr "b"} boogie_si_record_i32($i496); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 423, 5} true; + assume {:verifier.code 0} true; + $i497 := $add.i32($i484, $i484); + call {:cexpr "c"} boogie_si_record_i32($i497); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 424, 9} true; + assume {:verifier.code 0} true; + $i498 := $slt.i32($i492, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 424, 7} true; + assume {:verifier.code 0} true; + $i499 := $i497; + assume {:branchcond $i498} true; + goto $bb298, $bb299; +$bb292: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 15} true; + assume {:verifier.code 0} true; + assume ($i485 == 1); + goto $bb293; +$bb293: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 415, 9} true; + assume {:verifier.code 0} true; + $i488 := $add.i32($i482, 1); + call {:cexpr "c"} boogie_si_record_i32($i488); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 416, 5} true; + assume {:verifier.code 0} true; + $i487 := $i488; + goto $bb297; +$bb294: + assume !(($i485 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 20} true; + assume {:verifier.code 0} true; + $i486 := $sgt.i32($i481, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 9} true; + assume {:verifier.code 0} true; + $i487 := $i482; + assume {:branchcond $i486} true; + goto $bb295, $bb296; +$bb295: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 9} true; + assume {:verifier.code 0} true; + assume ($i486 == 1); + goto $bb293; +$bb296: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 9} true; + assume {:verifier.code 0} true; + assume !(($i486 == 1)); + goto $bb297; +$bb297: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 417, 3} true; + assume {:verifier.code 0} true; + $i484 := $i487; + goto $bb291; +$bb298: + assume ($i498 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 11} true; + assume {:verifier.code 0} true; + $i500 := $slt.i32($i496, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i500} true; + goto $bb301, $bb303; +$bb299: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 424, 7} true; + assume {:verifier.code 0} true; + assume !(($i498 == 1)); + goto $bb300; +$bb300: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 429, 7} true; + assume {:verifier.code 0} true; + $i504 := $sext.i32.i64($i492); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 429, 9} true; + assume {:verifier.code 0} true; + $i505 := $srem.i64($i504, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 429, 7} true; + assume {:verifier.code 0} true; + $i506 := $trunc.i64.i32($i505); + call {:cexpr "a"} boogie_si_record_i32($i506); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 430, 5} true; + assume {:verifier.code 0} true; + $i507 := $add.i32($i506, $i506); + call {:cexpr "a"} boogie_si_record_i32($i507); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 431, 7} true; + assume {:verifier.code 0} true; + $i508 := $sext.i32.i64($i496); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 431, 9} true; + assume {:verifier.code 0} true; + $i509 := $srem.i64($i508, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 431, 7} true; + assume {:verifier.code 0} true; + $i510 := $trunc.i64.i32($i509); + call {:cexpr "b"} boogie_si_record_i32($i510); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 432, 5} true; + assume {:verifier.code 0} true; + $i511 := $add.i32($i510, $i510); + call {:cexpr "b"} boogie_si_record_i32($i511); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 434, 5} true; + assume {:verifier.code 0} true; + $i512 := $add.i32($i499, $i499); + call {:cexpr "c"} boogie_si_record_i32($i512); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 435, 9} true; + assume {:verifier.code 0} true; + $i513 := $slt.i32($i507, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 435, 7} true; + assume {:verifier.code 0} true; + $i514 := $i512; + assume {:branchcond $i513} true; + goto $bb307, $bb308; +$bb301: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 15} true; + assume {:verifier.code 0} true; + assume ($i500 == 1); + goto $bb302; +$bb302: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 426, 9} true; + assume {:verifier.code 0} true; + $i503 := $add.i32($i497, 1); + call {:cexpr "c"} boogie_si_record_i32($i503); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 427, 5} true; + assume {:verifier.code 0} true; + $i502 := $i503; + goto $bb306; +$bb303: + assume !(($i500 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 20} true; + assume {:verifier.code 0} true; + $i501 := $sgt.i32($i496, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 9} true; + assume {:verifier.code 0} true; + $i502 := $i497; + assume {:branchcond $i501} true; + goto $bb304, $bb305; +$bb304: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 9} true; + assume {:verifier.code 0} true; + assume ($i501 == 1); + goto $bb302; +$bb305: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 9} true; + assume {:verifier.code 0} true; + assume !(($i501 == 1)); + goto $bb306; +$bb306: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 428, 3} true; + assume {:verifier.code 0} true; + $i499 := $i502; + goto $bb300; +$bb307: + assume ($i513 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 11} true; + assume {:verifier.code 0} true; + $i515 := $slt.i32($i511, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i515} true; + goto $bb310, $bb312; +$bb308: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 435, 7} true; + assume {:verifier.code 0} true; + assume !(($i513 == 1)); + goto $bb309; +$bb309: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 440, 7} true; + assume {:verifier.code 0} true; + $i519 := $sext.i32.i64($i507); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 440, 9} true; + assume {:verifier.code 0} true; + $i520 := $srem.i64($i519, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 440, 7} true; + assume {:verifier.code 0} true; + $i521 := $trunc.i64.i32($i520); + call {:cexpr "a"} boogie_si_record_i32($i521); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 441, 5} true; + assume {:verifier.code 0} true; + $i522 := $add.i32($i521, $i521); + call {:cexpr "a"} boogie_si_record_i32($i522); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 442, 7} true; + assume {:verifier.code 0} true; + $i523 := $sext.i32.i64($i511); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 442, 9} true; + assume {:verifier.code 0} true; + $i524 := $srem.i64($i523, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 442, 7} true; + assume {:verifier.code 0} true; + $i525 := $trunc.i64.i32($i524); + call {:cexpr "b"} boogie_si_record_i32($i525); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 443, 5} true; + assume {:verifier.code 0} true; + $i526 := $add.i32($i525, $i525); + call {:cexpr "b"} boogie_si_record_i32($i526); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 445, 5} true; + assume {:verifier.code 0} true; + $i527 := $add.i32($i514, $i514); + call {:cexpr "c"} boogie_si_record_i32($i527); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 446, 9} true; + assume {:verifier.code 0} true; + $i528 := $slt.i32($i522, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 446, 7} true; + assume {:verifier.code 0} true; + $i529 := $i527; + assume {:branchcond $i528} true; + goto $bb316, $bb317; +$bb310: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 15} true; + assume {:verifier.code 0} true; + assume ($i515 == 1); + goto $bb311; +$bb311: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 437, 9} true; + assume {:verifier.code 0} true; + $i518 := $add.i32($i512, 1); + call {:cexpr "c"} boogie_si_record_i32($i518); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 438, 5} true; + assume {:verifier.code 0} true; + $i517 := $i518; + goto $bb315; +$bb312: + assume !(($i515 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 20} true; + assume {:verifier.code 0} true; + $i516 := $sgt.i32($i511, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 9} true; + assume {:verifier.code 0} true; + $i517 := $i512; + assume {:branchcond $i516} true; + goto $bb313, $bb314; +$bb313: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 9} true; + assume {:verifier.code 0} true; + assume ($i516 == 1); + goto $bb311; +$bb314: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 9} true; + assume {:verifier.code 0} true; + assume !(($i516 == 1)); + goto $bb315; +$bb315: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 439, 3} true; + assume {:verifier.code 0} true; + $i514 := $i517; + goto $bb309; +$bb316: + assume ($i528 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 11} true; + assume {:verifier.code 0} true; + $i530 := $slt.i32($i526, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i530} true; + goto $bb319, $bb321; +$bb317: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 446, 7} true; + assume {:verifier.code 0} true; + assume !(($i528 == 1)); + goto $bb318; +$bb318: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 451, 7} true; + assume {:verifier.code 0} true; + $i534 := $sext.i32.i64($i522); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 451, 9} true; + assume {:verifier.code 0} true; + $i535 := $srem.i64($i534, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 451, 7} true; + assume {:verifier.code 0} true; + $i536 := $trunc.i64.i32($i535); + call {:cexpr "a"} boogie_si_record_i32($i536); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 452, 5} true; + assume {:verifier.code 0} true; + $i537 := $add.i32($i536, $i536); + call {:cexpr "a"} boogie_si_record_i32($i537); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 453, 7} true; + assume {:verifier.code 0} true; + $i538 := $sext.i32.i64($i526); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 453, 9} true; + assume {:verifier.code 0} true; + $i539 := $srem.i64($i538, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 453, 7} true; + assume {:verifier.code 0} true; + $i540 := $trunc.i64.i32($i539); + call {:cexpr "b"} boogie_si_record_i32($i540); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 454, 5} true; + assume {:verifier.code 0} true; + $i541 := $add.i32($i540, $i540); + call {:cexpr "b"} boogie_si_record_i32($i541); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 456, 5} true; + assume {:verifier.code 0} true; + $i542 := $add.i32($i529, $i529); + call {:cexpr "c"} boogie_si_record_i32($i542); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 457, 9} true; + assume {:verifier.code 0} true; + $i543 := $slt.i32($i537, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 457, 7} true; + assume {:verifier.code 0} true; + $i544 := $i542; + assume {:branchcond $i543} true; + goto $bb325, $bb326; +$bb319: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 15} true; + assume {:verifier.code 0} true; + assume ($i530 == 1); + goto $bb320; +$bb320: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 448, 9} true; + assume {:verifier.code 0} true; + $i533 := $add.i32($i527, 1); + call {:cexpr "c"} boogie_si_record_i32($i533); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 449, 5} true; + assume {:verifier.code 0} true; + $i532 := $i533; + goto $bb324; +$bb321: + assume !(($i530 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 20} true; + assume {:verifier.code 0} true; + $i531 := $sgt.i32($i526, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 9} true; + assume {:verifier.code 0} true; + $i532 := $i527; + assume {:branchcond $i531} true; + goto $bb322, $bb323; +$bb322: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 9} true; + assume {:verifier.code 0} true; + assume ($i531 == 1); + goto $bb320; +$bb323: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 9} true; + assume {:verifier.code 0} true; + assume !(($i531 == 1)); + goto $bb324; +$bb324: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 450, 3} true; + assume {:verifier.code 0} true; + $i529 := $i532; + goto $bb318; +$bb325: + assume ($i543 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 11} true; + assume {:verifier.code 0} true; + $i545 := $slt.i32($i541, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i545} true; + goto $bb328, $bb330; +$bb326: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 457, 7} true; + assume {:verifier.code 0} true; + assume !(($i543 == 1)); + goto $bb327; +$bb327: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 462, 7} true; + assume {:verifier.code 0} true; + $i549 := $sext.i32.i64($i537); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 462, 9} true; + assume {:verifier.code 0} true; + $i550 := $srem.i64($i549, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 462, 7} true; + assume {:verifier.code 0} true; + $i551 := $trunc.i64.i32($i550); + call {:cexpr "a"} boogie_si_record_i32($i551); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 463, 5} true; + assume {:verifier.code 0} true; + $i552 := $add.i32($i551, $i551); + call {:cexpr "a"} boogie_si_record_i32($i552); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 464, 7} true; + assume {:verifier.code 0} true; + $i553 := $sext.i32.i64($i541); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 464, 9} true; + assume {:verifier.code 0} true; + $i554 := $srem.i64($i553, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 464, 7} true; + assume {:verifier.code 0} true; + $i555 := $trunc.i64.i32($i554); + call {:cexpr "b"} boogie_si_record_i32($i555); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 465, 5} true; + assume {:verifier.code 0} true; + $i556 := $add.i32($i555, $i555); + call {:cexpr "b"} boogie_si_record_i32($i556); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 467, 5} true; + assume {:verifier.code 0} true; + $i557 := $add.i32($i544, $i544); + call {:cexpr "c"} boogie_si_record_i32($i557); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 468, 9} true; + assume {:verifier.code 0} true; + $i558 := $slt.i32($i552, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 468, 7} true; + assume {:verifier.code 0} true; + $i559 := $i557; + assume {:branchcond $i558} true; + goto $bb334, $bb335; +$bb328: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 15} true; + assume {:verifier.code 0} true; + assume ($i545 == 1); + goto $bb329; +$bb329: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 459, 9} true; + assume {:verifier.code 0} true; + $i548 := $add.i32($i542, 1); + call {:cexpr "c"} boogie_si_record_i32($i548); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 460, 5} true; + assume {:verifier.code 0} true; + $i547 := $i548; + goto $bb333; +$bb330: + assume !(($i545 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 20} true; + assume {:verifier.code 0} true; + $i546 := $sgt.i32($i541, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 9} true; + assume {:verifier.code 0} true; + $i547 := $i542; + assume {:branchcond $i546} true; + goto $bb331, $bb332; +$bb331: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 9} true; + assume {:verifier.code 0} true; + assume ($i546 == 1); + goto $bb329; +$bb332: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 9} true; + assume {:verifier.code 0} true; + assume !(($i546 == 1)); + goto $bb333; +$bb333: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 461, 3} true; + assume {:verifier.code 0} true; + $i544 := $i547; + goto $bb327; +$bb334: + assume ($i558 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 11} true; + assume {:verifier.code 0} true; + $i560 := $slt.i32($i556, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i560} true; + goto $bb337, $bb339; +$bb335: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 468, 7} true; + assume {:verifier.code 0} true; + assume !(($i558 == 1)); + goto $bb336; +$bb336: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 473, 7} true; + assume {:verifier.code 0} true; + $i564 := $sext.i32.i64($i552); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 473, 9} true; + assume {:verifier.code 0} true; + $i565 := $srem.i64($i564, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 473, 7} true; + assume {:verifier.code 0} true; + $i566 := $trunc.i64.i32($i565); + call {:cexpr "a"} boogie_si_record_i32($i566); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 474, 5} true; + assume {:verifier.code 0} true; + $i567 := $add.i32($i566, $i566); + call {:cexpr "a"} boogie_si_record_i32($i567); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 475, 7} true; + assume {:verifier.code 0} true; + $i568 := $sext.i32.i64($i556); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 475, 9} true; + assume {:verifier.code 0} true; + $i569 := $srem.i64($i568, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 475, 7} true; + assume {:verifier.code 0} true; + $i570 := $trunc.i64.i32($i569); + call {:cexpr "b"} boogie_si_record_i32($i570); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 476, 5} true; + assume {:verifier.code 0} true; + $i571 := $add.i32($i570, $i570); + call {:cexpr "b"} boogie_si_record_i32($i571); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 478, 5} true; + assume {:verifier.code 0} true; + $i572 := $add.i32($i559, $i559); + call {:cexpr "c"} boogie_si_record_i32($i572); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 479, 9} true; + assume {:verifier.code 0} true; + $i573 := $slt.i32($i567, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 479, 7} true; + assume {:verifier.code 0} true; + $i574 := $i572; + assume {:branchcond $i573} true; + goto $bb343, $bb344; +$bb337: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 15} true; + assume {:verifier.code 0} true; + assume ($i560 == 1); + goto $bb338; +$bb338: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 470, 9} true; + assume {:verifier.code 0} true; + $i563 := $add.i32($i557, 1); + call {:cexpr "c"} boogie_si_record_i32($i563); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 471, 5} true; + assume {:verifier.code 0} true; + $i562 := $i563; + goto $bb342; +$bb339: + assume !(($i560 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 20} true; + assume {:verifier.code 0} true; + $i561 := $sgt.i32($i556, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 9} true; + assume {:verifier.code 0} true; + $i562 := $i557; + assume {:branchcond $i561} true; + goto $bb340, $bb341; +$bb340: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 9} true; + assume {:verifier.code 0} true; + assume ($i561 == 1); + goto $bb338; +$bb341: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 9} true; + assume {:verifier.code 0} true; + assume !(($i561 == 1)); + goto $bb342; +$bb342: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 472, 3} true; + assume {:verifier.code 0} true; + $i559 := $i562; + goto $bb336; +$bb343: + assume ($i573 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 11} true; + assume {:verifier.code 0} true; + $i575 := $slt.i32($i571, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i575} true; + goto $bb346, $bb348; +$bb344: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 479, 7} true; + assume {:verifier.code 0} true; + assume !(($i573 == 1)); + goto $bb345; +$bb345: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 484, 7} true; + assume {:verifier.code 0} true; + $i579 := $sext.i32.i64($i567); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 484, 9} true; + assume {:verifier.code 0} true; + $i580 := $srem.i64($i579, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 484, 7} true; + assume {:verifier.code 0} true; + $i581 := $trunc.i64.i32($i580); + call {:cexpr "a"} boogie_si_record_i32($i581); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 485, 5} true; + assume {:verifier.code 0} true; + $i582 := $add.i32($i581, $i581); + call {:cexpr "a"} boogie_si_record_i32($i582); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 486, 7} true; + assume {:verifier.code 0} true; + $i583 := $sext.i32.i64($i571); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 486, 9} true; + assume {:verifier.code 0} true; + $i584 := $srem.i64($i583, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 486, 7} true; + assume {:verifier.code 0} true; + $i585 := $trunc.i64.i32($i584); + call {:cexpr "b"} boogie_si_record_i32($i585); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 487, 5} true; + assume {:verifier.code 0} true; + $i586 := $add.i32($i585, $i585); + call {:cexpr "b"} boogie_si_record_i32($i586); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 489, 5} true; + assume {:verifier.code 0} true; + $i587 := $add.i32($i574, $i574); + call {:cexpr "c"} boogie_si_record_i32($i587); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 490, 9} true; + assume {:verifier.code 0} true; + $i588 := $slt.i32($i582, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 490, 7} true; + assume {:verifier.code 0} true; + $i589 := $i587; + assume {:branchcond $i588} true; + goto $bb352, $bb353; +$bb346: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 15} true; + assume {:verifier.code 0} true; + assume ($i575 == 1); + goto $bb347; +$bb347: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 481, 9} true; + assume {:verifier.code 0} true; + $i578 := $add.i32($i572, 1); + call {:cexpr "c"} boogie_si_record_i32($i578); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 482, 5} true; + assume {:verifier.code 0} true; + $i577 := $i578; + goto $bb351; +$bb348: + assume !(($i575 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 20} true; + assume {:verifier.code 0} true; + $i576 := $sgt.i32($i571, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 9} true; + assume {:verifier.code 0} true; + $i577 := $i572; + assume {:branchcond $i576} true; + goto $bb349, $bb350; +$bb349: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 9} true; + assume {:verifier.code 0} true; + assume ($i576 == 1); + goto $bb347; +$bb350: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 9} true; + assume {:verifier.code 0} true; + assume !(($i576 == 1)); + goto $bb351; +$bb351: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 483, 3} true; + assume {:verifier.code 0} true; + $i574 := $i577; + goto $bb345; +$bb352: + assume ($i588 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 11} true; + assume {:verifier.code 0} true; + $i590 := $slt.i32($i586, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i590} true; + goto $bb355, $bb357; +$bb353: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 490, 7} true; + assume {:verifier.code 0} true; + assume !(($i588 == 1)); + goto $bb354; +$bb354: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 495, 7} true; + assume {:verifier.code 0} true; + $i594 := $sext.i32.i64($i582); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 495, 9} true; + assume {:verifier.code 0} true; + $i595 := $srem.i64($i594, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 495, 7} true; + assume {:verifier.code 0} true; + $i596 := $trunc.i64.i32($i595); + call {:cexpr "a"} boogie_si_record_i32($i596); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 496, 5} true; + assume {:verifier.code 0} true; + $i597 := $add.i32($i596, $i596); + call {:cexpr "a"} boogie_si_record_i32($i597); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 497, 7} true; + assume {:verifier.code 0} true; + $i598 := $sext.i32.i64($i586); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 497, 9} true; + assume {:verifier.code 0} true; + $i599 := $srem.i64($i598, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 497, 7} true; + assume {:verifier.code 0} true; + $i600 := $trunc.i64.i32($i599); + call {:cexpr "b"} boogie_si_record_i32($i600); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 498, 5} true; + assume {:verifier.code 0} true; + $i601 := $add.i32($i600, $i600); + call {:cexpr "b"} boogie_si_record_i32($i601); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 500, 5} true; + assume {:verifier.code 0} true; + $i602 := $add.i32($i589, $i589); + call {:cexpr "c"} boogie_si_record_i32($i602); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 501, 9} true; + assume {:verifier.code 0} true; + $i603 := $slt.i32($i597, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 501, 7} true; + assume {:verifier.code 0} true; + $i604 := $i602; + assume {:branchcond $i603} true; + goto $bb361, $bb362; +$bb355: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 15} true; + assume {:verifier.code 0} true; + assume ($i590 == 1); + goto $bb356; +$bb356: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 492, 9} true; + assume {:verifier.code 0} true; + $i593 := $add.i32($i587, 1); + call {:cexpr "c"} boogie_si_record_i32($i593); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 493, 5} true; + assume {:verifier.code 0} true; + $i592 := $i593; + goto $bb360; +$bb357: + assume !(($i590 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 20} true; + assume {:verifier.code 0} true; + $i591 := $sgt.i32($i586, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 9} true; + assume {:verifier.code 0} true; + $i592 := $i587; + assume {:branchcond $i591} true; + goto $bb358, $bb359; +$bb358: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 9} true; + assume {:verifier.code 0} true; + assume ($i591 == 1); + goto $bb356; +$bb359: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 9} true; + assume {:verifier.code 0} true; + assume !(($i591 == 1)); + goto $bb360; +$bb360: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 494, 3} true; + assume {:verifier.code 0} true; + $i589 := $i592; + goto $bb354; +$bb361: + assume ($i603 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 11} true; + assume {:verifier.code 0} true; + $i605 := $slt.i32($i601, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i605} true; + goto $bb364, $bb366; +$bb362: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 501, 7} true; + assume {:verifier.code 0} true; + assume !(($i603 == 1)); + goto $bb363; +$bb363: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 506, 7} true; + assume {:verifier.code 0} true; + $i609 := $sext.i32.i64($i597); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 506, 9} true; + assume {:verifier.code 0} true; + $i610 := $srem.i64($i609, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 506, 7} true; + assume {:verifier.code 0} true; + $i611 := $trunc.i64.i32($i610); + call {:cexpr "a"} boogie_si_record_i32($i611); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 507, 5} true; + assume {:verifier.code 0} true; + $i612 := $add.i32($i611, $i611); + call {:cexpr "a"} boogie_si_record_i32($i612); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 508, 7} true; + assume {:verifier.code 0} true; + $i613 := $sext.i32.i64($i601); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 508, 9} true; + assume {:verifier.code 0} true; + $i614 := $srem.i64($i613, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 508, 7} true; + assume {:verifier.code 0} true; + $i615 := $trunc.i64.i32($i614); + call {:cexpr "b"} boogie_si_record_i32($i615); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 509, 5} true; + assume {:verifier.code 0} true; + $i616 := $add.i32($i615, $i615); + call {:cexpr "b"} boogie_si_record_i32($i616); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 511, 5} true; + assume {:verifier.code 0} true; + $i617 := $add.i32($i604, $i604); + call {:cexpr "c"} boogie_si_record_i32($i617); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 512, 9} true; + assume {:verifier.code 0} true; + $i618 := $slt.i32($i612, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 512, 7} true; + assume {:verifier.code 0} true; + $i619 := $i617; + assume {:branchcond $i618} true; + goto $bb370, $bb371; +$bb364: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 15} true; + assume {:verifier.code 0} true; + assume ($i605 == 1); + goto $bb365; +$bb365: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 503, 9} true; + assume {:verifier.code 0} true; + $i608 := $add.i32($i602, 1); + call {:cexpr "c"} boogie_si_record_i32($i608); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 504, 5} true; + assume {:verifier.code 0} true; + $i607 := $i608; + goto $bb369; +$bb366: + assume !(($i605 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 20} true; + assume {:verifier.code 0} true; + $i606 := $sgt.i32($i601, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 9} true; + assume {:verifier.code 0} true; + $i607 := $i602; + assume {:branchcond $i606} true; + goto $bb367, $bb368; +$bb367: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 9} true; + assume {:verifier.code 0} true; + assume ($i606 == 1); + goto $bb365; +$bb368: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 9} true; + assume {:verifier.code 0} true; + assume !(($i606 == 1)); + goto $bb369; +$bb369: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 505, 3} true; + assume {:verifier.code 0} true; + $i604 := $i607; + goto $bb363; +$bb370: + assume ($i618 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 11} true; + assume {:verifier.code 0} true; + $i620 := $slt.i32($i616, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i620} true; + goto $bb373, $bb375; +$bb371: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 512, 7} true; + assume {:verifier.code 0} true; + assume !(($i618 == 1)); + goto $bb372; +$bb372: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 517, 7} true; + assume {:verifier.code 0} true; + $i624 := $sext.i32.i64($i612); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 517, 9} true; + assume {:verifier.code 0} true; + $i625 := $srem.i64($i624, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 517, 7} true; + assume {:verifier.code 0} true; + $i626 := $trunc.i64.i32($i625); + call {:cexpr "a"} boogie_si_record_i32($i626); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 518, 5} true; + assume {:verifier.code 0} true; + $i627 := $add.i32($i626, $i626); + call {:cexpr "a"} boogie_si_record_i32($i627); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 519, 7} true; + assume {:verifier.code 0} true; + $i628 := $sext.i32.i64($i616); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 519, 9} true; + assume {:verifier.code 0} true; + $i629 := $srem.i64($i628, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 519, 7} true; + assume {:verifier.code 0} true; + $i630 := $trunc.i64.i32($i629); + call {:cexpr "b"} boogie_si_record_i32($i630); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 520, 5} true; + assume {:verifier.code 0} true; + $i631 := $add.i32($i630, $i630); + call {:cexpr "b"} boogie_si_record_i32($i631); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 522, 5} true; + assume {:verifier.code 0} true; + $i632 := $add.i32($i619, $i619); + call {:cexpr "c"} boogie_si_record_i32($i632); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 523, 9} true; + assume {:verifier.code 0} true; + $i633 := $slt.i32($i627, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 523, 7} true; + assume {:verifier.code 0} true; + $i634 := $i632; + assume {:branchcond $i633} true; + goto $bb379, $bb380; +$bb373: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 15} true; + assume {:verifier.code 0} true; + assume ($i620 == 1); + goto $bb374; +$bb374: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 514, 9} true; + assume {:verifier.code 0} true; + $i623 := $add.i32($i617, 1); + call {:cexpr "c"} boogie_si_record_i32($i623); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 515, 5} true; + assume {:verifier.code 0} true; + $i622 := $i623; + goto $bb378; +$bb375: + assume !(($i620 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 20} true; + assume {:verifier.code 0} true; + $i621 := $sgt.i32($i616, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 9} true; + assume {:verifier.code 0} true; + $i622 := $i617; + assume {:branchcond $i621} true; + goto $bb376, $bb377; +$bb376: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 9} true; + assume {:verifier.code 0} true; + assume ($i621 == 1); + goto $bb374; +$bb377: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 9} true; + assume {:verifier.code 0} true; + assume !(($i621 == 1)); + goto $bb378; +$bb378: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 516, 3} true; + assume {:verifier.code 0} true; + $i619 := $i622; + goto $bb372; +$bb379: + assume ($i633 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 11} true; + assume {:verifier.code 0} true; + $i635 := $slt.i32($i631, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i635} true; + goto $bb382, $bb384; +$bb380: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 523, 7} true; + assume {:verifier.code 0} true; + assume !(($i633 == 1)); + goto $bb381; +$bb381: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 528, 7} true; + assume {:verifier.code 0} true; + $i639 := $sext.i32.i64($i627); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 528, 9} true; + assume {:verifier.code 0} true; + $i640 := $srem.i64($i639, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 528, 7} true; + assume {:verifier.code 0} true; + $i641 := $trunc.i64.i32($i640); + call {:cexpr "a"} boogie_si_record_i32($i641); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 529, 5} true; + assume {:verifier.code 0} true; + $i642 := $add.i32($i641, $i641); + call {:cexpr "a"} boogie_si_record_i32($i642); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 530, 7} true; + assume {:verifier.code 0} true; + $i643 := $sext.i32.i64($i631); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 530, 9} true; + assume {:verifier.code 0} true; + $i644 := $srem.i64($i643, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 530, 7} true; + assume {:verifier.code 0} true; + $i645 := $trunc.i64.i32($i644); + call {:cexpr "b"} boogie_si_record_i32($i645); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 531, 5} true; + assume {:verifier.code 0} true; + $i646 := $add.i32($i645, $i645); + call {:cexpr "b"} boogie_si_record_i32($i646); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 533, 5} true; + assume {:verifier.code 0} true; + $i647 := $add.i32($i634, $i634); + call {:cexpr "c"} boogie_si_record_i32($i647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 534, 9} true; + assume {:verifier.code 0} true; + $i648 := $slt.i32($i642, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 534, 7} true; + assume {:verifier.code 0} true; + $i649 := $i647; + assume {:branchcond $i648} true; + goto $bb388, $bb389; +$bb382: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 15} true; + assume {:verifier.code 0} true; + assume ($i635 == 1); + goto $bb383; +$bb383: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 525, 9} true; + assume {:verifier.code 0} true; + $i638 := $add.i32($i632, 1); + call {:cexpr "c"} boogie_si_record_i32($i638); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 526, 5} true; + assume {:verifier.code 0} true; + $i637 := $i638; + goto $bb387; +$bb384: + assume !(($i635 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 20} true; + assume {:verifier.code 0} true; + $i636 := $sgt.i32($i631, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 9} true; + assume {:verifier.code 0} true; + $i637 := $i632; + assume {:branchcond $i636} true; + goto $bb385, $bb386; +$bb385: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 9} true; + assume {:verifier.code 0} true; + assume ($i636 == 1); + goto $bb383; +$bb386: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 9} true; + assume {:verifier.code 0} true; + assume !(($i636 == 1)); + goto $bb387; +$bb387: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 527, 3} true; + assume {:verifier.code 0} true; + $i634 := $i637; + goto $bb381; +$bb388: + assume ($i648 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 11} true; + assume {:verifier.code 0} true; + $i650 := $slt.i32($i646, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i650} true; + goto $bb391, $bb393; +$bb389: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 534, 7} true; + assume {:verifier.code 0} true; + assume !(($i648 == 1)); + goto $bb390; +$bb390: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 539, 7} true; + assume {:verifier.code 0} true; + $i654 := $sext.i32.i64($i642); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 539, 9} true; + assume {:verifier.code 0} true; + $i655 := $srem.i64($i654, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 539, 7} true; + assume {:verifier.code 0} true; + $i656 := $trunc.i64.i32($i655); + call {:cexpr "a"} boogie_si_record_i32($i656); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 540, 5} true; + assume {:verifier.code 0} true; + $i657 := $add.i32($i656, $i656); + call {:cexpr "a"} boogie_si_record_i32($i657); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 541, 7} true; + assume {:verifier.code 0} true; + $i658 := $sext.i32.i64($i646); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 541, 9} true; + assume {:verifier.code 0} true; + $i659 := $srem.i64($i658, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 541, 7} true; + assume {:verifier.code 0} true; + $i660 := $trunc.i64.i32($i659); + call {:cexpr "b"} boogie_si_record_i32($i660); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 542, 5} true; + assume {:verifier.code 0} true; + $i661 := $add.i32($i660, $i660); + call {:cexpr "b"} boogie_si_record_i32($i661); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 544, 5} true; + assume {:verifier.code 0} true; + $i662 := $add.i32($i649, $i649); + call {:cexpr "c"} boogie_si_record_i32($i662); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 545, 9} true; + assume {:verifier.code 0} true; + $i663 := $slt.i32($i657, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 545, 7} true; + assume {:verifier.code 0} true; + $i664 := $i662; + assume {:branchcond $i663} true; + goto $bb397, $bb398; +$bb391: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 15} true; + assume {:verifier.code 0} true; + assume ($i650 == 1); + goto $bb392; +$bb392: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 536, 9} true; + assume {:verifier.code 0} true; + $i653 := $add.i32($i647, 1); + call {:cexpr "c"} boogie_si_record_i32($i653); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 537, 5} true; + assume {:verifier.code 0} true; + $i652 := $i653; + goto $bb396; +$bb393: + assume !(($i650 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 20} true; + assume {:verifier.code 0} true; + $i651 := $sgt.i32($i646, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 9} true; + assume {:verifier.code 0} true; + $i652 := $i647; + assume {:branchcond $i651} true; + goto $bb394, $bb395; +$bb394: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 9} true; + assume {:verifier.code 0} true; + assume ($i651 == 1); + goto $bb392; +$bb395: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 9} true; + assume {:verifier.code 0} true; + assume !(($i651 == 1)); + goto $bb396; +$bb396: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 538, 3} true; + assume {:verifier.code 0} true; + $i649 := $i652; + goto $bb390; +$bb397: + assume ($i663 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 11} true; + assume {:verifier.code 0} true; + $i665 := $slt.i32($i661, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i665} true; + goto $bb400, $bb402; +$bb398: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 545, 7} true; + assume {:verifier.code 0} true; + assume !(($i663 == 1)); + goto $bb399; +$bb399: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 550, 7} true; + assume {:verifier.code 0} true; + $i669 := $sext.i32.i64($i657); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 550, 9} true; + assume {:verifier.code 0} true; + $i670 := $srem.i64($i669, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 550, 7} true; + assume {:verifier.code 0} true; + $i671 := $trunc.i64.i32($i670); + call {:cexpr "a"} boogie_si_record_i32($i671); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 551, 5} true; + assume {:verifier.code 0} true; + $i672 := $add.i32($i671, $i671); + call {:cexpr "a"} boogie_si_record_i32($i672); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 552, 7} true; + assume {:verifier.code 0} true; + $i673 := $sext.i32.i64($i661); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 552, 9} true; + assume {:verifier.code 0} true; + $i674 := $srem.i64($i673, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 552, 7} true; + assume {:verifier.code 0} true; + $i675 := $trunc.i64.i32($i674); + call {:cexpr "b"} boogie_si_record_i32($i675); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 553, 5} true; + assume {:verifier.code 0} true; + $i676 := $add.i32($i675, $i675); + call {:cexpr "b"} boogie_si_record_i32($i676); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 555, 5} true; + assume {:verifier.code 0} true; + $i677 := $add.i32($i664, $i664); + call {:cexpr "c"} boogie_si_record_i32($i677); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 556, 9} true; + assume {:verifier.code 0} true; + $i678 := $slt.i32($i672, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 556, 7} true; + assume {:verifier.code 0} true; + $i679 := $i677; + assume {:branchcond $i678} true; + goto $bb406, $bb407; +$bb400: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 15} true; + assume {:verifier.code 0} true; + assume ($i665 == 1); + goto $bb401; +$bb401: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 547, 9} true; + assume {:verifier.code 0} true; + $i668 := $add.i32($i662, 1); + call {:cexpr "c"} boogie_si_record_i32($i668); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 548, 5} true; + assume {:verifier.code 0} true; + $i667 := $i668; + goto $bb405; +$bb402: + assume !(($i665 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 20} true; + assume {:verifier.code 0} true; + $i666 := $sgt.i32($i661, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 9} true; + assume {:verifier.code 0} true; + $i667 := $i662; + assume {:branchcond $i666} true; + goto $bb403, $bb404; +$bb403: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 9} true; + assume {:verifier.code 0} true; + assume ($i666 == 1); + goto $bb401; +$bb404: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 9} true; + assume {:verifier.code 0} true; + assume !(($i666 == 1)); + goto $bb405; +$bb405: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 549, 3} true; + assume {:verifier.code 0} true; + $i664 := $i667; + goto $bb399; +$bb406: + assume ($i678 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 11} true; + assume {:verifier.code 0} true; + $i680 := $slt.i32($i676, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i680} true; + goto $bb409, $bb411; +$bb407: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 556, 7} true; + assume {:verifier.code 0} true; + assume !(($i678 == 1)); + goto $bb408; +$bb408: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 561, 7} true; + assume {:verifier.code 0} true; + $i684 := $sext.i32.i64($i672); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 561, 9} true; + assume {:verifier.code 0} true; + $i685 := $srem.i64($i684, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 561, 7} true; + assume {:verifier.code 0} true; + $i686 := $trunc.i64.i32($i685); + call {:cexpr "a"} boogie_si_record_i32($i686); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 562, 5} true; + assume {:verifier.code 0} true; + $i687 := $add.i32($i686, $i686); + call {:cexpr "a"} boogie_si_record_i32($i687); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 563, 7} true; + assume {:verifier.code 0} true; + $i688 := $sext.i32.i64($i676); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 563, 9} true; + assume {:verifier.code 0} true; + $i689 := $srem.i64($i688, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 563, 7} true; + assume {:verifier.code 0} true; + $i690 := $trunc.i64.i32($i689); + call {:cexpr "b"} boogie_si_record_i32($i690); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 564, 5} true; + assume {:verifier.code 0} true; + $i691 := $add.i32($i690, $i690); + call {:cexpr "b"} boogie_si_record_i32($i691); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 566, 5} true; + assume {:verifier.code 0} true; + $i692 := $add.i32($i679, $i679); + call {:cexpr "c"} boogie_si_record_i32($i692); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 567, 9} true; + assume {:verifier.code 0} true; + $i693 := $slt.i32($i687, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 567, 7} true; + assume {:verifier.code 0} true; + $i694 := $i692; + assume {:branchcond $i693} true; + goto $bb415, $bb416; +$bb409: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 15} true; + assume {:verifier.code 0} true; + assume ($i680 == 1); + goto $bb410; +$bb410: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 558, 9} true; + assume {:verifier.code 0} true; + $i683 := $add.i32($i677, 1); + call {:cexpr "c"} boogie_si_record_i32($i683); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 559, 5} true; + assume {:verifier.code 0} true; + $i682 := $i683; + goto $bb414; +$bb411: + assume !(($i680 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 20} true; + assume {:verifier.code 0} true; + $i681 := $sgt.i32($i676, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 9} true; + assume {:verifier.code 0} true; + $i682 := $i677; + assume {:branchcond $i681} true; + goto $bb412, $bb413; +$bb412: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 9} true; + assume {:verifier.code 0} true; + assume ($i681 == 1); + goto $bb410; +$bb413: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 9} true; + assume {:verifier.code 0} true; + assume !(($i681 == 1)); + goto $bb414; +$bb414: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 560, 3} true; + assume {:verifier.code 0} true; + $i679 := $i682; + goto $bb408; +$bb415: + assume ($i693 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 11} true; + assume {:verifier.code 0} true; + $i695 := $slt.i32($i691, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i695} true; + goto $bb418, $bb420; +$bb416: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 567, 7} true; + assume {:verifier.code 0} true; + assume !(($i693 == 1)); + goto $bb417; +$bb417: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 572, 7} true; + assume {:verifier.code 0} true; + $i699 := $sext.i32.i64($i687); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 572, 9} true; + assume {:verifier.code 0} true; + $i700 := $srem.i64($i699, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 572, 7} true; + assume {:verifier.code 0} true; + $i701 := $trunc.i64.i32($i700); + call {:cexpr "a"} boogie_si_record_i32($i701); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 573, 5} true; + assume {:verifier.code 0} true; + $i702 := $add.i32($i701, $i701); + call {:cexpr "a"} boogie_si_record_i32($i702); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 574, 7} true; + assume {:verifier.code 0} true; + $i703 := $sext.i32.i64($i691); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 574, 9} true; + assume {:verifier.code 0} true; + $i704 := $srem.i64($i703, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 574, 7} true; + assume {:verifier.code 0} true; + $i705 := $trunc.i64.i32($i704); + call {:cexpr "b"} boogie_si_record_i32($i705); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 575, 5} true; + assume {:verifier.code 0} true; + $i706 := $add.i32($i705, $i705); + call {:cexpr "b"} boogie_si_record_i32($i706); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 577, 5} true; + assume {:verifier.code 0} true; + $i707 := $add.i32($i694, $i694); + call {:cexpr "c"} boogie_si_record_i32($i707); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 578, 9} true; + assume {:verifier.code 0} true; + $i708 := $slt.i32($i702, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 578, 7} true; + assume {:verifier.code 0} true; + $i709 := $i707; + assume {:branchcond $i708} true; + goto $bb424, $bb425; +$bb418: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 15} true; + assume {:verifier.code 0} true; + assume ($i695 == 1); + goto $bb419; +$bb419: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 569, 9} true; + assume {:verifier.code 0} true; + $i698 := $add.i32($i692, 1); + call {:cexpr "c"} boogie_si_record_i32($i698); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 570, 5} true; + assume {:verifier.code 0} true; + $i697 := $i698; + goto $bb423; +$bb420: + assume !(($i695 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 20} true; + assume {:verifier.code 0} true; + $i696 := $sgt.i32($i691, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 9} true; + assume {:verifier.code 0} true; + $i697 := $i692; + assume {:branchcond $i696} true; + goto $bb421, $bb422; +$bb421: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 9} true; + assume {:verifier.code 0} true; + assume ($i696 == 1); + goto $bb419; +$bb422: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 9} true; + assume {:verifier.code 0} true; + assume !(($i696 == 1)); + goto $bb423; +$bb423: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 571, 3} true; + assume {:verifier.code 0} true; + $i694 := $i697; + goto $bb417; +$bb424: + assume ($i708 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 11} true; + assume {:verifier.code 0} true; + $i710 := $slt.i32($i706, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i710} true; + goto $bb427, $bb429; +$bb425: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 578, 7} true; + assume {:verifier.code 0} true; + assume !(($i708 == 1)); + goto $bb426; +$bb426: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 583, 7} true; + assume {:verifier.code 0} true; + $i714 := $sext.i32.i64($i702); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 583, 9} true; + assume {:verifier.code 0} true; + $i715 := $srem.i64($i714, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 583, 7} true; + assume {:verifier.code 0} true; + $i716 := $trunc.i64.i32($i715); + call {:cexpr "a"} boogie_si_record_i32($i716); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 584, 5} true; + assume {:verifier.code 0} true; + $i717 := $add.i32($i716, $i716); + call {:cexpr "a"} boogie_si_record_i32($i717); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 585, 7} true; + assume {:verifier.code 0} true; + $i718 := $sext.i32.i64($i706); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 585, 9} true; + assume {:verifier.code 0} true; + $i719 := $srem.i64($i718, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 585, 7} true; + assume {:verifier.code 0} true; + $i720 := $trunc.i64.i32($i719); + call {:cexpr "b"} boogie_si_record_i32($i720); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 586, 5} true; + assume {:verifier.code 0} true; + $i721 := $add.i32($i720, $i720); + call {:cexpr "b"} boogie_si_record_i32($i721); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 588, 5} true; + assume {:verifier.code 0} true; + $i722 := $add.i32($i709, $i709); + call {:cexpr "c"} boogie_si_record_i32($i722); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 589, 9} true; + assume {:verifier.code 0} true; + $i723 := $slt.i32($i717, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 589, 7} true; + assume {:verifier.code 0} true; + $i724 := $i722; + assume {:branchcond $i723} true; + goto $bb433, $bb434; +$bb427: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 15} true; + assume {:verifier.code 0} true; + assume ($i710 == 1); + goto $bb428; +$bb428: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 580, 9} true; + assume {:verifier.code 0} true; + $i713 := $add.i32($i707, 1); + call {:cexpr "c"} boogie_si_record_i32($i713); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 581, 5} true; + assume {:verifier.code 0} true; + $i712 := $i713; + goto $bb432; +$bb429: + assume !(($i710 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 20} true; + assume {:verifier.code 0} true; + $i711 := $sgt.i32($i706, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 9} true; + assume {:verifier.code 0} true; + $i712 := $i707; + assume {:branchcond $i711} true; + goto $bb430, $bb431; +$bb430: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 9} true; + assume {:verifier.code 0} true; + assume ($i711 == 1); + goto $bb428; +$bb431: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 9} true; + assume {:verifier.code 0} true; + assume !(($i711 == 1)); + goto $bb432; +$bb432: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 582, 3} true; + assume {:verifier.code 0} true; + $i709 := $i712; + goto $bb426; +$bb433: + assume ($i723 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 11} true; + assume {:verifier.code 0} true; + $i725 := $slt.i32($i721, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i725} true; + goto $bb436, $bb438; +$bb434: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 589, 7} true; + assume {:verifier.code 0} true; + assume !(($i723 == 1)); + goto $bb435; +$bb435: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 594, 7} true; + assume {:verifier.code 0} true; + $i729 := $sext.i32.i64($i717); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 594, 9} true; + assume {:verifier.code 0} true; + $i730 := $srem.i64($i729, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 594, 7} true; + assume {:verifier.code 0} true; + $i731 := $trunc.i64.i32($i730); + call {:cexpr "a"} boogie_si_record_i32($i731); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 595, 5} true; + assume {:verifier.code 0} true; + $i732 := $add.i32($i731, $i731); + call {:cexpr "a"} boogie_si_record_i32($i732); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 596, 7} true; + assume {:verifier.code 0} true; + $i733 := $sext.i32.i64($i721); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 596, 9} true; + assume {:verifier.code 0} true; + $i734 := $srem.i64($i733, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 596, 7} true; + assume {:verifier.code 0} true; + $i735 := $trunc.i64.i32($i734); + call {:cexpr "b"} boogie_si_record_i32($i735); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 597, 5} true; + assume {:verifier.code 0} true; + $i736 := $add.i32($i735, $i735); + call {:cexpr "b"} boogie_si_record_i32($i736); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 599, 5} true; + assume {:verifier.code 0} true; + $i737 := $add.i32($i724, $i724); + call {:cexpr "c"} boogie_si_record_i32($i737); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 600, 9} true; + assume {:verifier.code 0} true; + $i738 := $slt.i32($i732, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 600, 7} true; + assume {:verifier.code 0} true; + $i739 := $i737; + assume {:branchcond $i738} true; + goto $bb442, $bb443; +$bb436: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 15} true; + assume {:verifier.code 0} true; + assume ($i725 == 1); + goto $bb437; +$bb437: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 591, 9} true; + assume {:verifier.code 0} true; + $i728 := $add.i32($i722, 1); + call {:cexpr "c"} boogie_si_record_i32($i728); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 592, 5} true; + assume {:verifier.code 0} true; + $i727 := $i728; + goto $bb441; +$bb438: + assume !(($i725 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 20} true; + assume {:verifier.code 0} true; + $i726 := $sgt.i32($i721, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 9} true; + assume {:verifier.code 0} true; + $i727 := $i722; + assume {:branchcond $i726} true; + goto $bb439, $bb440; +$bb439: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 9} true; + assume {:verifier.code 0} true; + assume ($i726 == 1); + goto $bb437; +$bb440: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 9} true; + assume {:verifier.code 0} true; + assume !(($i726 == 1)); + goto $bb441; +$bb441: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 593, 3} true; + assume {:verifier.code 0} true; + $i724 := $i727; + goto $bb435; +$bb442: + assume ($i738 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 11} true; + assume {:verifier.code 0} true; + $i740 := $slt.i32($i736, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i740} true; + goto $bb445, $bb447; +$bb443: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 600, 7} true; + assume {:verifier.code 0} true; + assume !(($i738 == 1)); + goto $bb444; +$bb444: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 605, 7} true; + assume {:verifier.code 0} true; + $i744 := $sext.i32.i64($i732); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 605, 9} true; + assume {:verifier.code 0} true; + $i745 := $srem.i64($i744, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 605, 7} true; + assume {:verifier.code 0} true; + $i746 := $trunc.i64.i32($i745); + call {:cexpr "a"} boogie_si_record_i32($i746); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 606, 5} true; + assume {:verifier.code 0} true; + $i747 := $add.i32($i746, $i746); + call {:cexpr "a"} boogie_si_record_i32($i747); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 607, 7} true; + assume {:verifier.code 0} true; + $i748 := $sext.i32.i64($i736); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 607, 9} true; + assume {:verifier.code 0} true; + $i749 := $srem.i64($i748, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 607, 7} true; + assume {:verifier.code 0} true; + $i750 := $trunc.i64.i32($i749); + call {:cexpr "b"} boogie_si_record_i32($i750); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 608, 5} true; + assume {:verifier.code 0} true; + $i751 := $add.i32($i750, $i750); + call {:cexpr "b"} boogie_si_record_i32($i751); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 610, 5} true; + assume {:verifier.code 0} true; + $i752 := $add.i32($i739, $i739); + call {:cexpr "c"} boogie_si_record_i32($i752); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 611, 9} true; + assume {:verifier.code 0} true; + $i753 := $slt.i32($i747, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 611, 7} true; + assume {:verifier.code 0} true; + $i754 := $i752; + assume {:branchcond $i753} true; + goto $bb451, $bb452; +$bb445: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 15} true; + assume {:verifier.code 0} true; + assume ($i740 == 1); + goto $bb446; +$bb446: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 602, 9} true; + assume {:verifier.code 0} true; + $i743 := $add.i32($i737, 1); + call {:cexpr "c"} boogie_si_record_i32($i743); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 603, 5} true; + assume {:verifier.code 0} true; + $i742 := $i743; + goto $bb450; +$bb447: + assume !(($i740 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 20} true; + assume {:verifier.code 0} true; + $i741 := $sgt.i32($i736, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 9} true; + assume {:verifier.code 0} true; + $i742 := $i737; + assume {:branchcond $i741} true; + goto $bb448, $bb449; +$bb448: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 9} true; + assume {:verifier.code 0} true; + assume ($i741 == 1); + goto $bb446; +$bb449: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 9} true; + assume {:verifier.code 0} true; + assume !(($i741 == 1)); + goto $bb450; +$bb450: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 604, 3} true; + assume {:verifier.code 0} true; + $i739 := $i742; + goto $bb444; +$bb451: + assume ($i753 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 11} true; + assume {:verifier.code 0} true; + $i755 := $slt.i32($i751, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i755} true; + goto $bb454, $bb456; +$bb452: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 611, 7} true; + assume {:verifier.code 0} true; + assume !(($i753 == 1)); + goto $bb453; +$bb453: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 616, 7} true; + assume {:verifier.code 0} true; + $i759 := $sext.i32.i64($i747); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 616, 9} true; + assume {:verifier.code 0} true; + $i760 := $srem.i64($i759, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 616, 7} true; + assume {:verifier.code 0} true; + $i761 := $trunc.i64.i32($i760); + call {:cexpr "a"} boogie_si_record_i32($i761); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 617, 5} true; + assume {:verifier.code 0} true; + $i762 := $add.i32($i761, $i761); + call {:cexpr "a"} boogie_si_record_i32($i762); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 618, 7} true; + assume {:verifier.code 0} true; + $i763 := $sext.i32.i64($i751); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 618, 9} true; + assume {:verifier.code 0} true; + $i764 := $srem.i64($i763, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 618, 7} true; + assume {:verifier.code 0} true; + $i765 := $trunc.i64.i32($i764); + call {:cexpr "b"} boogie_si_record_i32($i765); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 619, 5} true; + assume {:verifier.code 0} true; + $i766 := $add.i32($i765, $i765); + call {:cexpr "b"} boogie_si_record_i32($i766); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 621, 5} true; + assume {:verifier.code 0} true; + $i767 := $add.i32($i754, $i754); + call {:cexpr "c"} boogie_si_record_i32($i767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 622, 9} true; + assume {:verifier.code 0} true; + $i768 := $slt.i32($i762, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 622, 7} true; + assume {:verifier.code 0} true; + $i769 := $i767; + assume {:branchcond $i768} true; + goto $bb460, $bb461; +$bb454: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 15} true; + assume {:verifier.code 0} true; + assume ($i755 == 1); + goto $bb455; +$bb455: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 613, 9} true; + assume {:verifier.code 0} true; + $i758 := $add.i32($i752, 1); + call {:cexpr "c"} boogie_si_record_i32($i758); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 614, 5} true; + assume {:verifier.code 0} true; + $i757 := $i758; + goto $bb459; +$bb456: + assume !(($i755 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 20} true; + assume {:verifier.code 0} true; + $i756 := $sgt.i32($i751, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 9} true; + assume {:verifier.code 0} true; + $i757 := $i752; + assume {:branchcond $i756} true; + goto $bb457, $bb458; +$bb457: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 9} true; + assume {:verifier.code 0} true; + assume ($i756 == 1); + goto $bb455; +$bb458: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 9} true; + assume {:verifier.code 0} true; + assume !(($i756 == 1)); + goto $bb459; +$bb459: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 615, 3} true; + assume {:verifier.code 0} true; + $i754 := $i757; + goto $bb453; +$bb460: + assume ($i768 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 11} true; + assume {:verifier.code 0} true; + $i770 := $slt.i32($i766, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i770} true; + goto $bb463, $bb465; +$bb461: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 622, 7} true; + assume {:verifier.code 0} true; + assume !(($i768 == 1)); + goto $bb462; +$bb462: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 627, 7} true; + assume {:verifier.code 0} true; + $i774 := $sext.i32.i64($i762); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 627, 9} true; + assume {:verifier.code 0} true; + $i775 := $srem.i64($i774, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 627, 7} true; + assume {:verifier.code 0} true; + $i776 := $trunc.i64.i32($i775); + call {:cexpr "a"} boogie_si_record_i32($i776); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 628, 5} true; + assume {:verifier.code 0} true; + $i777 := $add.i32($i776, $i776); + call {:cexpr "a"} boogie_si_record_i32($i777); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 629, 7} true; + assume {:verifier.code 0} true; + $i778 := $sext.i32.i64($i766); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 629, 9} true; + assume {:verifier.code 0} true; + $i779 := $srem.i64($i778, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 629, 7} true; + assume {:verifier.code 0} true; + $i780 := $trunc.i64.i32($i779); + call {:cexpr "b"} boogie_si_record_i32($i780); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 630, 5} true; + assume {:verifier.code 0} true; + $i781 := $add.i32($i780, $i780); + call {:cexpr "b"} boogie_si_record_i32($i781); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 632, 5} true; + assume {:verifier.code 0} true; + $i782 := $add.i32($i769, $i769); + call {:cexpr "c"} boogie_si_record_i32($i782); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 633, 9} true; + assume {:verifier.code 0} true; + $i783 := $slt.i32($i777, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 633, 7} true; + assume {:verifier.code 0} true; + $i784 := $i782; + assume {:branchcond $i783} true; + goto $bb469, $bb470; +$bb463: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 15} true; + assume {:verifier.code 0} true; + assume ($i770 == 1); + goto $bb464; +$bb464: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 624, 9} true; + assume {:verifier.code 0} true; + $i773 := $add.i32($i767, 1); + call {:cexpr "c"} boogie_si_record_i32($i773); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 625, 5} true; + assume {:verifier.code 0} true; + $i772 := $i773; + goto $bb468; +$bb465: + assume !(($i770 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 20} true; + assume {:verifier.code 0} true; + $i771 := $sgt.i32($i766, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 9} true; + assume {:verifier.code 0} true; + $i772 := $i767; + assume {:branchcond $i771} true; + goto $bb466, $bb467; +$bb466: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 9} true; + assume {:verifier.code 0} true; + assume ($i771 == 1); + goto $bb464; +$bb467: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 9} true; + assume {:verifier.code 0} true; + assume !(($i771 == 1)); + goto $bb468; +$bb468: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 626, 3} true; + assume {:verifier.code 0} true; + $i769 := $i772; + goto $bb462; +$bb469: + assume ($i783 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 11} true; + assume {:verifier.code 0} true; + $i785 := $slt.i32($i781, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i785} true; + goto $bb472, $bb474; +$bb470: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 633, 7} true; + assume {:verifier.code 0} true; + assume !(($i783 == 1)); + goto $bb471; +$bb471: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 638, 7} true; + assume {:verifier.code 0} true; + $i789 := $sext.i32.i64($i777); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 638, 9} true; + assume {:verifier.code 0} true; + $i790 := $srem.i64($i789, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 638, 7} true; + assume {:verifier.code 0} true; + $i791 := $trunc.i64.i32($i790); + call {:cexpr "a"} boogie_si_record_i32($i791); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 639, 5} true; + assume {:verifier.code 0} true; + $i792 := $add.i32($i791, $i791); + call {:cexpr "a"} boogie_si_record_i32($i792); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 640, 7} true; + assume {:verifier.code 0} true; + $i793 := $sext.i32.i64($i781); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 640, 9} true; + assume {:verifier.code 0} true; + $i794 := $srem.i64($i793, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 640, 7} true; + assume {:verifier.code 0} true; + $i795 := $trunc.i64.i32($i794); + call {:cexpr "b"} boogie_si_record_i32($i795); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 641, 5} true; + assume {:verifier.code 0} true; + $i796 := $add.i32($i795, $i795); + call {:cexpr "b"} boogie_si_record_i32($i796); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 643, 5} true; + assume {:verifier.code 0} true; + $i797 := $add.i32($i784, $i784); + call {:cexpr "c"} boogie_si_record_i32($i797); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 644, 9} true; + assume {:verifier.code 0} true; + $i798 := $slt.i32($i792, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 644, 7} true; + assume {:verifier.code 0} true; + $i799 := $i797; + assume {:branchcond $i798} true; + goto $bb478, $bb479; +$bb472: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 15} true; + assume {:verifier.code 0} true; + assume ($i785 == 1); + goto $bb473; +$bb473: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 635, 9} true; + assume {:verifier.code 0} true; + $i788 := $add.i32($i782, 1); + call {:cexpr "c"} boogie_si_record_i32($i788); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 636, 5} true; + assume {:verifier.code 0} true; + $i787 := $i788; + goto $bb477; +$bb474: + assume !(($i785 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 20} true; + assume {:verifier.code 0} true; + $i786 := $sgt.i32($i781, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 9} true; + assume {:verifier.code 0} true; + $i787 := $i782; + assume {:branchcond $i786} true; + goto $bb475, $bb476; +$bb475: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 9} true; + assume {:verifier.code 0} true; + assume ($i786 == 1); + goto $bb473; +$bb476: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 9} true; + assume {:verifier.code 0} true; + assume !(($i786 == 1)); + goto $bb477; +$bb477: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 637, 3} true; + assume {:verifier.code 0} true; + $i784 := $i787; + goto $bb471; +$bb478: + assume ($i798 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 11} true; + assume {:verifier.code 0} true; + $i800 := $slt.i32($i796, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i800} true; + goto $bb481, $bb483; +$bb479: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 644, 7} true; + assume {:verifier.code 0} true; + assume !(($i798 == 1)); + goto $bb480; +$bb480: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 649, 7} true; + assume {:verifier.code 0} true; + $i804 := $sext.i32.i64($i792); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 649, 9} true; + assume {:verifier.code 0} true; + $i805 := $srem.i64($i804, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 649, 7} true; + assume {:verifier.code 0} true; + $i806 := $trunc.i64.i32($i805); + call {:cexpr "a"} boogie_si_record_i32($i806); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 650, 5} true; + assume {:verifier.code 0} true; + $i807 := $add.i32($i806, $i806); + call {:cexpr "a"} boogie_si_record_i32($i807); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 651, 7} true; + assume {:verifier.code 0} true; + $i808 := $sext.i32.i64($i796); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 651, 9} true; + assume {:verifier.code 0} true; + $i809 := $srem.i64($i808, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 651, 7} true; + assume {:verifier.code 0} true; + $i810 := $trunc.i64.i32($i809); + call {:cexpr "b"} boogie_si_record_i32($i810); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 652, 5} true; + assume {:verifier.code 0} true; + $i811 := $add.i32($i810, $i810); + call {:cexpr "b"} boogie_si_record_i32($i811); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 654, 5} true; + assume {:verifier.code 0} true; + $i812 := $add.i32($i799, $i799); + call {:cexpr "c"} boogie_si_record_i32($i812); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 655, 9} true; + assume {:verifier.code 0} true; + $i813 := $slt.i32($i807, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 655, 7} true; + assume {:verifier.code 0} true; + $i814 := $i812; + assume {:branchcond $i813} true; + goto $bb487, $bb488; +$bb481: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 15} true; + assume {:verifier.code 0} true; + assume ($i800 == 1); + goto $bb482; +$bb482: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 646, 9} true; + assume {:verifier.code 0} true; + $i803 := $add.i32($i797, 1); + call {:cexpr "c"} boogie_si_record_i32($i803); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 647, 5} true; + assume {:verifier.code 0} true; + $i802 := $i803; + goto $bb486; +$bb483: + assume !(($i800 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 20} true; + assume {:verifier.code 0} true; + $i801 := $sgt.i32($i796, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 9} true; + assume {:verifier.code 0} true; + $i802 := $i797; + assume {:branchcond $i801} true; + goto $bb484, $bb485; +$bb484: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 9} true; + assume {:verifier.code 0} true; + assume ($i801 == 1); + goto $bb482; +$bb485: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 9} true; + assume {:verifier.code 0} true; + assume !(($i801 == 1)); + goto $bb486; +$bb486: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 648, 3} true; + assume {:verifier.code 0} true; + $i799 := $i802; + goto $bb480; +$bb487: + assume ($i813 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 11} true; + assume {:verifier.code 0} true; + $i815 := $slt.i32($i811, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i815} true; + goto $bb490, $bb492; +$bb488: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 655, 7} true; + assume {:verifier.code 0} true; + assume !(($i813 == 1)); + goto $bb489; +$bb489: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 660, 7} true; + assume {:verifier.code 0} true; + $i819 := $sext.i32.i64($i807); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 660, 9} true; + assume {:verifier.code 0} true; + $i820 := $srem.i64($i819, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 660, 7} true; + assume {:verifier.code 0} true; + $i821 := $trunc.i64.i32($i820); + call {:cexpr "a"} boogie_si_record_i32($i821); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 661, 5} true; + assume {:verifier.code 0} true; + $i822 := $add.i32($i821, $i821); + call {:cexpr "a"} boogie_si_record_i32($i822); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 662, 7} true; + assume {:verifier.code 0} true; + $i823 := $sext.i32.i64($i811); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 662, 9} true; + assume {:verifier.code 0} true; + $i824 := $srem.i64($i823, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 662, 7} true; + assume {:verifier.code 0} true; + $i825 := $trunc.i64.i32($i824); + call {:cexpr "b"} boogie_si_record_i32($i825); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 663, 5} true; + assume {:verifier.code 0} true; + $i826 := $add.i32($i825, $i825); + call {:cexpr "b"} boogie_si_record_i32($i826); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 665, 5} true; + assume {:verifier.code 0} true; + $i827 := $add.i32($i814, $i814); + call {:cexpr "c"} boogie_si_record_i32($i827); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 666, 9} true; + assume {:verifier.code 0} true; + $i828 := $slt.i32($i822, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 666, 7} true; + assume {:verifier.code 0} true; + $i829 := $i827; + assume {:branchcond $i828} true; + goto $bb496, $bb497; +$bb490: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 15} true; + assume {:verifier.code 0} true; + assume ($i815 == 1); + goto $bb491; +$bb491: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 657, 9} true; + assume {:verifier.code 0} true; + $i818 := $add.i32($i812, 1); + call {:cexpr "c"} boogie_si_record_i32($i818); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 658, 5} true; + assume {:verifier.code 0} true; + $i817 := $i818; + goto $bb495; +$bb492: + assume !(($i815 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 20} true; + assume {:verifier.code 0} true; + $i816 := $sgt.i32($i811, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 9} true; + assume {:verifier.code 0} true; + $i817 := $i812; + assume {:branchcond $i816} true; + goto $bb493, $bb494; +$bb493: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 9} true; + assume {:verifier.code 0} true; + assume ($i816 == 1); + goto $bb491; +$bb494: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 9} true; + assume {:verifier.code 0} true; + assume !(($i816 == 1)); + goto $bb495; +$bb495: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 659, 3} true; + assume {:verifier.code 0} true; + $i814 := $i817; + goto $bb489; +$bb496: + assume ($i828 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 11} true; + assume {:verifier.code 0} true; + $i830 := $slt.i32($i826, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i830} true; + goto $bb499, $bb501; +$bb497: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 666, 7} true; + assume {:verifier.code 0} true; + assume !(($i828 == 1)); + goto $bb498; +$bb498: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 671, 7} true; + assume {:verifier.code 0} true; + $i834 := $sext.i32.i64($i822); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 671, 9} true; + assume {:verifier.code 0} true; + $i835 := $srem.i64($i834, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 671, 7} true; + assume {:verifier.code 0} true; + $i836 := $trunc.i64.i32($i835); + call {:cexpr "a"} boogie_si_record_i32($i836); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 672, 5} true; + assume {:verifier.code 0} true; + $i837 := $add.i32($i836, $i836); + call {:cexpr "a"} boogie_si_record_i32($i837); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 673, 7} true; + assume {:verifier.code 0} true; + $i838 := $sext.i32.i64($i826); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 673, 9} true; + assume {:verifier.code 0} true; + $i839 := $srem.i64($i838, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 673, 7} true; + assume {:verifier.code 0} true; + $i840 := $trunc.i64.i32($i839); + call {:cexpr "b"} boogie_si_record_i32($i840); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 674, 5} true; + assume {:verifier.code 0} true; + $i841 := $add.i32($i840, $i840); + call {:cexpr "b"} boogie_si_record_i32($i841); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 676, 5} true; + assume {:verifier.code 0} true; + $i842 := $add.i32($i829, $i829); + call {:cexpr "c"} boogie_si_record_i32($i842); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 677, 9} true; + assume {:verifier.code 0} true; + $i843 := $slt.i32($i837, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 677, 7} true; + assume {:verifier.code 0} true; + $i844 := $i842; + assume {:branchcond $i843} true; + goto $bb505, $bb506; +$bb499: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 15} true; + assume {:verifier.code 0} true; + assume ($i830 == 1); + goto $bb500; +$bb500: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 668, 9} true; + assume {:verifier.code 0} true; + $i833 := $add.i32($i827, 1); + call {:cexpr "c"} boogie_si_record_i32($i833); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 669, 5} true; + assume {:verifier.code 0} true; + $i832 := $i833; + goto $bb504; +$bb501: + assume !(($i830 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 20} true; + assume {:verifier.code 0} true; + $i831 := $sgt.i32($i826, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 9} true; + assume {:verifier.code 0} true; + $i832 := $i827; + assume {:branchcond $i831} true; + goto $bb502, $bb503; +$bb502: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 9} true; + assume {:verifier.code 0} true; + assume ($i831 == 1); + goto $bb500; +$bb503: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 9} true; + assume {:verifier.code 0} true; + assume !(($i831 == 1)); + goto $bb504; +$bb504: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 670, 3} true; + assume {:verifier.code 0} true; + $i829 := $i832; + goto $bb498; +$bb505: + assume ($i843 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 11} true; + assume {:verifier.code 0} true; + $i845 := $slt.i32($i841, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i845} true; + goto $bb508, $bb510; +$bb506: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 677, 7} true; + assume {:verifier.code 0} true; + assume !(($i843 == 1)); + goto $bb507; +$bb507: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 682, 7} true; + assume {:verifier.code 0} true; + $i849 := $sext.i32.i64($i837); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 682, 9} true; + assume {:verifier.code 0} true; + $i850 := $srem.i64($i849, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 682, 7} true; + assume {:verifier.code 0} true; + $i851 := $trunc.i64.i32($i850); + call {:cexpr "a"} boogie_si_record_i32($i851); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 683, 5} true; + assume {:verifier.code 0} true; + $i852 := $add.i32($i851, $i851); + call {:cexpr "a"} boogie_si_record_i32($i852); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 684, 7} true; + assume {:verifier.code 0} true; + $i853 := $sext.i32.i64($i841); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 684, 9} true; + assume {:verifier.code 0} true; + $i854 := $srem.i64($i853, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 684, 7} true; + assume {:verifier.code 0} true; + $i855 := $trunc.i64.i32($i854); + call {:cexpr "b"} boogie_si_record_i32($i855); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 685, 5} true; + assume {:verifier.code 0} true; + $i856 := $add.i32($i855, $i855); + call {:cexpr "b"} boogie_si_record_i32($i856); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 687, 5} true; + assume {:verifier.code 0} true; + $i857 := $add.i32($i844, $i844); + call {:cexpr "c"} boogie_si_record_i32($i857); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 688, 9} true; + assume {:verifier.code 0} true; + $i858 := $slt.i32($i852, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 688, 7} true; + assume {:verifier.code 0} true; + $i859 := $i857; + assume {:branchcond $i858} true; + goto $bb514, $bb515; +$bb508: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 15} true; + assume {:verifier.code 0} true; + assume ($i845 == 1); + goto $bb509; +$bb509: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 679, 9} true; + assume {:verifier.code 0} true; + $i848 := $add.i32($i842, 1); + call {:cexpr "c"} boogie_si_record_i32($i848); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 680, 5} true; + assume {:verifier.code 0} true; + $i847 := $i848; + goto $bb513; +$bb510: + assume !(($i845 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 20} true; + assume {:verifier.code 0} true; + $i846 := $sgt.i32($i841, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 9} true; + assume {:verifier.code 0} true; + $i847 := $i842; + assume {:branchcond $i846} true; + goto $bb511, $bb512; +$bb511: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 9} true; + assume {:verifier.code 0} true; + assume ($i846 == 1); + goto $bb509; +$bb512: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 9} true; + assume {:verifier.code 0} true; + assume !(($i846 == 1)); + goto $bb513; +$bb513: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 681, 3} true; + assume {:verifier.code 0} true; + $i844 := $i847; + goto $bb507; +$bb514: + assume ($i858 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 11} true; + assume {:verifier.code 0} true; + $i860 := $slt.i32($i856, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i860} true; + goto $bb517, $bb519; +$bb515: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 688, 7} true; + assume {:verifier.code 0} true; + assume !(($i858 == 1)); + goto $bb516; +$bb516: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 693, 7} true; + assume {:verifier.code 0} true; + $i864 := $sext.i32.i64($i852); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 693, 9} true; + assume {:verifier.code 0} true; + $i865 := $srem.i64($i864, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 693, 7} true; + assume {:verifier.code 0} true; + $i866 := $trunc.i64.i32($i865); + call {:cexpr "a"} boogie_si_record_i32($i866); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 694, 5} true; + assume {:verifier.code 0} true; + $i867 := $add.i32($i866, $i866); + call {:cexpr "a"} boogie_si_record_i32($i867); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 695, 7} true; + assume {:verifier.code 0} true; + $i868 := $sext.i32.i64($i856); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 695, 9} true; + assume {:verifier.code 0} true; + $i869 := $srem.i64($i868, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 695, 7} true; + assume {:verifier.code 0} true; + $i870 := $trunc.i64.i32($i869); + call {:cexpr "b"} boogie_si_record_i32($i870); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 696, 5} true; + assume {:verifier.code 0} true; + $i871 := $add.i32($i870, $i870); + call {:cexpr "b"} boogie_si_record_i32($i871); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 698, 5} true; + assume {:verifier.code 0} true; + $i872 := $add.i32($i859, $i859); + call {:cexpr "c"} boogie_si_record_i32($i872); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 699, 9} true; + assume {:verifier.code 0} true; + $i873 := $slt.i32($i867, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 699, 7} true; + assume {:verifier.code 0} true; + $i874 := $i872; + assume {:branchcond $i873} true; + goto $bb523, $bb524; +$bb517: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 15} true; + assume {:verifier.code 0} true; + assume ($i860 == 1); + goto $bb518; +$bb518: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 690, 9} true; + assume {:verifier.code 0} true; + $i863 := $add.i32($i857, 1); + call {:cexpr "c"} boogie_si_record_i32($i863); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 691, 5} true; + assume {:verifier.code 0} true; + $i862 := $i863; + goto $bb522; +$bb519: + assume !(($i860 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 20} true; + assume {:verifier.code 0} true; + $i861 := $sgt.i32($i856, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 9} true; + assume {:verifier.code 0} true; + $i862 := $i857; + assume {:branchcond $i861} true; + goto $bb520, $bb521; +$bb520: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 9} true; + assume {:verifier.code 0} true; + assume ($i861 == 1); + goto $bb518; +$bb521: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 9} true; + assume {:verifier.code 0} true; + assume !(($i861 == 1)); + goto $bb522; +$bb522: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 692, 3} true; + assume {:verifier.code 0} true; + $i859 := $i862; + goto $bb516; +$bb523: + assume ($i873 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 11} true; + assume {:verifier.code 0} true; + $i875 := $slt.i32($i871, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i875} true; + goto $bb526, $bb528; +$bb524: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 699, 7} true; + assume {:verifier.code 0} true; + assume !(($i873 == 1)); + goto $bb525; +$bb525: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 704, 7} true; + assume {:verifier.code 0} true; + $i879 := $sext.i32.i64($i867); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 704, 9} true; + assume {:verifier.code 0} true; + $i880 := $srem.i64($i879, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 704, 7} true; + assume {:verifier.code 0} true; + $i881 := $trunc.i64.i32($i880); + call {:cexpr "a"} boogie_si_record_i32($i881); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 705, 5} true; + assume {:verifier.code 0} true; + $i882 := $add.i32($i881, $i881); + call {:cexpr "a"} boogie_si_record_i32($i882); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 706, 7} true; + assume {:verifier.code 0} true; + $i883 := $sext.i32.i64($i871); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 706, 9} true; + assume {:verifier.code 0} true; + $i884 := $srem.i64($i883, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 706, 7} true; + assume {:verifier.code 0} true; + $i885 := $trunc.i64.i32($i884); + call {:cexpr "b"} boogie_si_record_i32($i885); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 707, 5} true; + assume {:verifier.code 0} true; + $i886 := $add.i32($i885, $i885); + call {:cexpr "b"} boogie_si_record_i32($i886); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 709, 5} true; + assume {:verifier.code 0} true; + $i887 := $add.i32($i874, $i874); + call {:cexpr "c"} boogie_si_record_i32($i887); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 710, 9} true; + assume {:verifier.code 0} true; + $i888 := $slt.i32($i882, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 710, 7} true; + assume {:verifier.code 0} true; + $i889 := $i887; + assume {:branchcond $i888} true; + goto $bb532, $bb533; +$bb526: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 15} true; + assume {:verifier.code 0} true; + assume ($i875 == 1); + goto $bb527; +$bb527: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 701, 9} true; + assume {:verifier.code 0} true; + $i878 := $add.i32($i872, 1); + call {:cexpr "c"} boogie_si_record_i32($i878); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 702, 5} true; + assume {:verifier.code 0} true; + $i877 := $i878; + goto $bb531; +$bb528: + assume !(($i875 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 20} true; + assume {:verifier.code 0} true; + $i876 := $sgt.i32($i871, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 9} true; + assume {:verifier.code 0} true; + $i877 := $i872; + assume {:branchcond $i876} true; + goto $bb529, $bb530; +$bb529: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 9} true; + assume {:verifier.code 0} true; + assume ($i876 == 1); + goto $bb527; +$bb530: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 9} true; + assume {:verifier.code 0} true; + assume !(($i876 == 1)); + goto $bb531; +$bb531: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 703, 3} true; + assume {:verifier.code 0} true; + $i874 := $i877; + goto $bb525; +$bb532: + assume ($i888 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 11} true; + assume {:verifier.code 0} true; + $i890 := $slt.i32($i886, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i890} true; + goto $bb535, $bb537; +$bb533: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 710, 7} true; + assume {:verifier.code 0} true; + assume !(($i888 == 1)); + goto $bb534; +$bb534: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 715, 7} true; + assume {:verifier.code 0} true; + $i894 := $sext.i32.i64($i882); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 715, 9} true; + assume {:verifier.code 0} true; + $i895 := $srem.i64($i894, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 715, 7} true; + assume {:verifier.code 0} true; + $i896 := $trunc.i64.i32($i895); + call {:cexpr "a"} boogie_si_record_i32($i896); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 716, 5} true; + assume {:verifier.code 0} true; + $i897 := $add.i32($i896, $i896); + call {:cexpr "a"} boogie_si_record_i32($i897); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 717, 7} true; + assume {:verifier.code 0} true; + $i898 := $sext.i32.i64($i886); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 717, 9} true; + assume {:verifier.code 0} true; + $i899 := $srem.i64($i898, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 717, 7} true; + assume {:verifier.code 0} true; + $i900 := $trunc.i64.i32($i899); + call {:cexpr "b"} boogie_si_record_i32($i900); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 718, 5} true; + assume {:verifier.code 0} true; + $i901 := $add.i32($i900, $i900); + call {:cexpr "b"} boogie_si_record_i32($i901); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 720, 5} true; + assume {:verifier.code 0} true; + $i902 := $add.i32($i889, $i889); + call {:cexpr "c"} boogie_si_record_i32($i902); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 721, 9} true; + assume {:verifier.code 0} true; + $i903 := $slt.i32($i897, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 721, 7} true; + assume {:verifier.code 0} true; + $i904 := $i902; + assume {:branchcond $i903} true; + goto $bb541, $bb542; +$bb535: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 15} true; + assume {:verifier.code 0} true; + assume ($i890 == 1); + goto $bb536; +$bb536: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 712, 9} true; + assume {:verifier.code 0} true; + $i893 := $add.i32($i887, 1); + call {:cexpr "c"} boogie_si_record_i32($i893); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 713, 5} true; + assume {:verifier.code 0} true; + $i892 := $i893; + goto $bb540; +$bb537: + assume !(($i890 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 20} true; + assume {:verifier.code 0} true; + $i891 := $sgt.i32($i886, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 9} true; + assume {:verifier.code 0} true; + $i892 := $i887; + assume {:branchcond $i891} true; + goto $bb538, $bb539; +$bb538: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 9} true; + assume {:verifier.code 0} true; + assume ($i891 == 1); + goto $bb536; +$bb539: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 9} true; + assume {:verifier.code 0} true; + assume !(($i891 == 1)); + goto $bb540; +$bb540: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 714, 3} true; + assume {:verifier.code 0} true; + $i889 := $i892; + goto $bb534; +$bb541: + assume ($i903 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 11} true; + assume {:verifier.code 0} true; + $i905 := $slt.i32($i901, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i905} true; + goto $bb544, $bb546; +$bb542: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 721, 7} true; + assume {:verifier.code 0} true; + assume !(($i903 == 1)); + goto $bb543; +$bb543: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 726, 7} true; + assume {:verifier.code 0} true; + $i909 := $sext.i32.i64($i897); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 726, 9} true; + assume {:verifier.code 0} true; + $i910 := $srem.i64($i909, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 726, 7} true; + assume {:verifier.code 0} true; + $i911 := $trunc.i64.i32($i910); + call {:cexpr "a"} boogie_si_record_i32($i911); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 727, 5} true; + assume {:verifier.code 0} true; + $i912 := $add.i32($i911, $i911); + call {:cexpr "a"} boogie_si_record_i32($i912); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 728, 7} true; + assume {:verifier.code 0} true; + $i913 := $sext.i32.i64($i901); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 728, 9} true; + assume {:verifier.code 0} true; + $i914 := $srem.i64($i913, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 728, 7} true; + assume {:verifier.code 0} true; + $i915 := $trunc.i64.i32($i914); + call {:cexpr "b"} boogie_si_record_i32($i915); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 729, 5} true; + assume {:verifier.code 0} true; + $i916 := $add.i32($i915, $i915); + call {:cexpr "b"} boogie_si_record_i32($i916); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 731, 5} true; + assume {:verifier.code 0} true; + $i917 := $add.i32($i904, $i904); + call {:cexpr "c"} boogie_si_record_i32($i917); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 732, 9} true; + assume {:verifier.code 0} true; + $i918 := $slt.i32($i912, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 732, 7} true; + assume {:verifier.code 0} true; + $i919 := $i917; + assume {:branchcond $i918} true; + goto $bb550, $bb551; +$bb544: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 15} true; + assume {:verifier.code 0} true; + assume ($i905 == 1); + goto $bb545; +$bb545: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 723, 9} true; + assume {:verifier.code 0} true; + $i908 := $add.i32($i902, 1); + call {:cexpr "c"} boogie_si_record_i32($i908); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 724, 5} true; + assume {:verifier.code 0} true; + $i907 := $i908; + goto $bb549; +$bb546: + assume !(($i905 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 20} true; + assume {:verifier.code 0} true; + $i906 := $sgt.i32($i901, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 9} true; + assume {:verifier.code 0} true; + $i907 := $i902; + assume {:branchcond $i906} true; + goto $bb547, $bb548; +$bb547: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 9} true; + assume {:verifier.code 0} true; + assume ($i906 == 1); + goto $bb545; +$bb548: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 9} true; + assume {:verifier.code 0} true; + assume !(($i906 == 1)); + goto $bb549; +$bb549: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 725, 3} true; + assume {:verifier.code 0} true; + $i904 := $i907; + goto $bb543; +$bb550: + assume ($i918 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 11} true; + assume {:verifier.code 0} true; + $i920 := $slt.i32($i916, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i920} true; + goto $bb553, $bb555; +$bb551: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 732, 7} true; + assume {:verifier.code 0} true; + assume !(($i918 == 1)); + goto $bb552; +$bb552: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 737, 7} true; + assume {:verifier.code 0} true; + $i924 := $sext.i32.i64($i912); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 737, 9} true; + assume {:verifier.code 0} true; + $i925 := $srem.i64($i924, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 737, 7} true; + assume {:verifier.code 0} true; + $i926 := $trunc.i64.i32($i925); + call {:cexpr "a"} boogie_si_record_i32($i926); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 738, 5} true; + assume {:verifier.code 0} true; + $i927 := $add.i32($i926, $i926); + call {:cexpr "a"} boogie_si_record_i32($i927); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 739, 7} true; + assume {:verifier.code 0} true; + $i928 := $sext.i32.i64($i916); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 739, 9} true; + assume {:verifier.code 0} true; + $i929 := $srem.i64($i928, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 739, 7} true; + assume {:verifier.code 0} true; + $i930 := $trunc.i64.i32($i929); + call {:cexpr "b"} boogie_si_record_i32($i930); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 740, 5} true; + assume {:verifier.code 0} true; + $i931 := $add.i32($i930, $i930); + call {:cexpr "b"} boogie_si_record_i32($i931); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 742, 5} true; + assume {:verifier.code 0} true; + $i932 := $add.i32($i919, $i919); + call {:cexpr "c"} boogie_si_record_i32($i932); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 743, 9} true; + assume {:verifier.code 0} true; + $i933 := $slt.i32($i927, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 743, 7} true; + assume {:verifier.code 0} true; + $i934 := $i932; + assume {:branchcond $i933} true; + goto $bb559, $bb560; +$bb553: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 15} true; + assume {:verifier.code 0} true; + assume ($i920 == 1); + goto $bb554; +$bb554: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 734, 9} true; + assume {:verifier.code 0} true; + $i923 := $add.i32($i917, 1); + call {:cexpr "c"} boogie_si_record_i32($i923); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 735, 5} true; + assume {:verifier.code 0} true; + $i922 := $i923; + goto $bb558; +$bb555: + assume !(($i920 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 20} true; + assume {:verifier.code 0} true; + $i921 := $sgt.i32($i916, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 9} true; + assume {:verifier.code 0} true; + $i922 := $i917; + assume {:branchcond $i921} true; + goto $bb556, $bb557; +$bb556: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 9} true; + assume {:verifier.code 0} true; + assume ($i921 == 1); + goto $bb554; +$bb557: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 9} true; + assume {:verifier.code 0} true; + assume !(($i921 == 1)); + goto $bb558; +$bb558: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 736, 3} true; + assume {:verifier.code 0} true; + $i919 := $i922; + goto $bb552; +$bb559: + assume ($i933 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 11} true; + assume {:verifier.code 0} true; + $i935 := $slt.i32($i931, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i935} true; + goto $bb562, $bb564; +$bb560: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 743, 7} true; + assume {:verifier.code 0} true; + assume !(($i933 == 1)); + goto $bb561; +$bb561: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 748, 7} true; + assume {:verifier.code 0} true; + $i939 := $sext.i32.i64($i927); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 748, 9} true; + assume {:verifier.code 0} true; + $i940 := $srem.i64($i939, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 748, 7} true; + assume {:verifier.code 0} true; + $i941 := $trunc.i64.i32($i940); + call {:cexpr "a"} boogie_si_record_i32($i941); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 749, 5} true; + assume {:verifier.code 0} true; + $i942 := $add.i32($i941, $i941); + call {:cexpr "a"} boogie_si_record_i32($i942); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 750, 7} true; + assume {:verifier.code 0} true; + $i943 := $sext.i32.i64($i931); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 750, 9} true; + assume {:verifier.code 0} true; + $i944 := $srem.i64($i943, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 750, 7} true; + assume {:verifier.code 0} true; + $i945 := $trunc.i64.i32($i944); + call {:cexpr "b"} boogie_si_record_i32($i945); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 751, 5} true; + assume {:verifier.code 0} true; + $i946 := $add.i32($i945, $i945); + call {:cexpr "b"} boogie_si_record_i32($i946); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 753, 5} true; + assume {:verifier.code 0} true; + $i947 := $add.i32($i934, $i934); + call {:cexpr "c"} boogie_si_record_i32($i947); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 754, 9} true; + assume {:verifier.code 0} true; + $i948 := $slt.i32($i942, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 754, 7} true; + assume {:verifier.code 0} true; + $i949 := $i947; + assume {:branchcond $i948} true; + goto $bb568, $bb569; +$bb562: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 15} true; + assume {:verifier.code 0} true; + assume ($i935 == 1); + goto $bb563; +$bb563: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 745, 9} true; + assume {:verifier.code 0} true; + $i938 := $add.i32($i932, 1); + call {:cexpr "c"} boogie_si_record_i32($i938); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 746, 5} true; + assume {:verifier.code 0} true; + $i937 := $i938; + goto $bb567; +$bb564: + assume !(($i935 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 20} true; + assume {:verifier.code 0} true; + $i936 := $sgt.i32($i931, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 9} true; + assume {:verifier.code 0} true; + $i937 := $i932; + assume {:branchcond $i936} true; + goto $bb565, $bb566; +$bb565: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 9} true; + assume {:verifier.code 0} true; + assume ($i936 == 1); + goto $bb563; +$bb566: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 9} true; + assume {:verifier.code 0} true; + assume !(($i936 == 1)); + goto $bb567; +$bb567: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 747, 3} true; + assume {:verifier.code 0} true; + $i934 := $i937; + goto $bb561; +$bb568: + assume ($i948 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 11} true; + assume {:verifier.code 0} true; + $i950 := $slt.i32($i946, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i950} true; + goto $bb571, $bb573; +$bb569: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 754, 7} true; + assume {:verifier.code 0} true; + assume !(($i948 == 1)); + goto $bb570; +$bb570: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 764, 3} true; + assume {:verifier.code 0} true; + $r := $i949; + $exn := false; + return; +$bb571: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 15} true; + assume {:verifier.code 0} true; + assume ($i950 == 1); + goto $bb572; +$bb572: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 756, 9} true; + assume {:verifier.code 0} true; + $i953 := $add.i32($i947, 1); + call {:cexpr "c"} boogie_si_record_i32($i953); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 757, 5} true; + assume {:verifier.code 0} true; + $i952 := $i953; + goto $bb576; +$bb573: + assume !(($i950 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 20} true; + assume {:verifier.code 0} true; + $i951 := $sgt.i32($i946, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 9} true; + assume {:verifier.code 0} true; + $i952 := $i947; + assume {:branchcond $i951} true; + goto $bb574, $bb575; +$bb574: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 9} true; + assume {:verifier.code 0} true; + assume ($i951 == 1); + goto $bb572; +$bb575: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 9} true; + assume {:verifier.code 0} true; + assume !(($i951 == 1)); + goto $bb576; +$bb576: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 758, 3} true; + assume {:verifier.code 0} true; + $i949 := $i952; + goto $bb570; +} +const __SMACK_and64: ref; +axiom (__SMACK_and64 == $sub.ref(0, 17540)); +procedure __SMACK_and64($i0: i64, $i1: i64) + returns ($r: i64) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i64; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 65} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_and64:arg:a"} boogie_si_record_i64($i0); + call {:cexpr "__SMACK_and64:arg:b"} boogie_si_record_i64($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 65} true; + assume {:verifier.code 1} true; + $i2 := $trunc.i64.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 68} true; + assume {:verifier.code 1} true; + $i3 := $trunc.i64.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 51} true; + assume {:verifier.code 1} true; + call $i4 := __SMACK_and32($i2, $i3); + call {:cexpr "smack:ext:__SMACK_and32"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 45} true; + assume {:verifier.code 0} true; + $i5 := $sext.i32.i64($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 38} true; + assume {:verifier.code 0} true; + $r := $i5; + $exn := false; + return; +} +const __SMACK_and16: ref; +axiom (__SMACK_and16 == $sub.ref(0, 18572)); +procedure __SMACK_and16($i0: i16, $i1: i16) + returns ($r: i16) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i16; + var $i6: i32; + var $i7: i1; + var $i9: i32; + var $i10: i1; + var $i11: i32; + var $i12: i1; + var $i14: i32; + var $i15: i32; + var $i16: i16; + var $i13: i16; + var $i8: i16; + var $i17: i32; + var $i18: i32; + var $i19: i16; + var $i20: i32; + var $i21: i32; + var $i22: i32; + var $i23: i16; + var $i24: i32; + var $i25: i32; + var $i26: i16; + var $i27: i32; + var $i28: i32; + var $i29: i32; + var $i30: i16; + var $i31: i32; + var $i32: i32; + var $i33: i32; + var $i34: i16; + var $i35: i32; + var $i36: i1; + var $i38: i32; + var $i39: i1; + var $i40: i32; + var $i41: i1; + var $i43: i32; + var $i44: i32; + var $i45: i16; + var $i42: i16; + var $i37: i16; + var $i46: i32; + var $i47: i32; + var $i48: i16; + var $i49: i32; + var $i50: i32; + var $i51: i32; + var $i52: i16; + var $i53: i32; + var $i54: i32; + var $i55: i16; + var $i56: i32; + var $i57: i32; + var $i58: i32; + var $i59: i16; + var $i60: i32; + var $i61: i32; + var $i62: i32; + var $i63: i16; + var $i64: i32; + var $i65: i1; + var $i67: i32; + var $i68: i1; + var $i69: i32; + var $i70: i1; + var $i72: i32; + var $i73: i32; + var $i74: i16; + var $i71: i16; + var $i66: i16; + var $i75: i32; + var $i76: i32; + var $i77: i16; + var $i78: i32; + var $i79: i32; + var $i80: i32; + var $i81: i16; + var $i82: i32; + var $i83: i32; + var $i84: i16; + var $i85: i32; + var $i86: i32; + var $i87: i32; + var $i88: i16; + var $i89: i32; + var $i90: i32; + var $i91: i32; + var $i92: i16; + var $i93: i32; + var $i94: i1; + var $i96: i32; + var $i97: i1; + var $i98: i32; + var $i99: i1; + var $i101: i32; + var $i102: i32; + var $i103: i16; + var $i100: i16; + var $i95: i16; + var $i104: i32; + var $i105: i32; + var $i106: i16; + var $i107: i32; + var $i108: i32; + var $i109: i32; + var $i110: i16; + var $i111: i32; + var $i112: i32; + var $i113: i16; + var $i114: i32; + var $i115: i32; + var $i116: i32; + var $i117: i16; + var $i118: i32; + var $i119: i32; + var $i120: i32; + var $i121: i16; + var $i122: i32; + var $i123: i1; + var $i125: i32; + var $i126: i1; + var $i127: i32; + var $i128: i1; + var $i130: i32; + var $i131: i32; + var $i132: i16; + var $i129: i16; + var $i124: i16; + var $i133: i32; + var $i134: i32; + var $i135: i16; + var $i136: i32; + var $i137: i32; + var $i138: i32; + var $i139: i16; + var $i140: i32; + var $i141: i32; + var $i142: i16; + var $i143: i32; + var $i144: i32; + var $i145: i32; + var $i146: i16; + var $i147: i32; + var $i148: i32; + var $i149: i32; + var $i150: i16; + var $i151: i32; + var $i152: i1; + var $i154: i32; + var $i155: i1; + var $i156: i32; + var $i157: i1; + var $i159: i32; + var $i160: i32; + var $i161: i16; + var $i158: i16; + var $i153: i16; + var $i162: i32; + var $i163: i32; + var $i164: i16; + var $i165: i32; + var $i166: i32; + var $i167: i32; + var $i168: i16; + var $i169: i32; + var $i170: i32; + var $i171: i16; + var $i172: i32; + var $i173: i32; + var $i174: i32; + var $i175: i16; + var $i176: i32; + var $i177: i32; + var $i178: i32; + var $i179: i16; + var $i180: i32; + var $i181: i1; + var $i183: i32; + var $i184: i1; + var $i185: i32; + var $i186: i1; + var $i188: i32; + var $i189: i32; + var $i190: i16; + var $i187: i16; + var $i182: i16; + var $i191: i32; + var $i192: i32; + var $i193: i16; + var $i194: i32; + var $i195: i32; + var $i196: i32; + var $i197: i16; + var $i198: i32; + var $i199: i32; + var $i200: i16; + var $i201: i32; + var $i202: i32; + var $i203: i32; + var $i204: i16; + var $i205: i32; + var $i206: i32; + var $i207: i32; + var $i208: i16; + var $i209: i32; + var $i210: i1; + var $i212: i32; + var $i213: i1; + var $i214: i32; + var $i215: i1; + var $i217: i32; + var $i218: i32; + var $i219: i16; + var $i216: i16; + var $i211: i16; + var $i220: i32; + var $i221: i32; + var $i222: i16; + var $i223: i32; + var $i224: i32; + var $i225: i32; + var $i226: i16; + var $i227: i32; + var $i228: i32; + var $i229: i16; + var $i230: i32; + var $i231: i32; + var $i232: i32; + var $i233: i16; + var $i234: i32; + var $i235: i32; + var $i236: i32; + var $i237: i16; + var $i238: i32; + var $i239: i1; + var $i241: i32; + var $i242: i1; + var $i243: i32; + var $i244: i1; + var $i246: i32; + var $i247: i32; + var $i248: i16; + var $i245: i16; + var $i240: i16; + var $i249: i32; + var $i250: i32; + var $i251: i16; + var $i252: i32; + var $i253: i32; + var $i254: i32; + var $i255: i16; + var $i256: i32; + var $i257: i32; + var $i258: i16; + var $i259: i32; + var $i260: i32; + var $i261: i32; + var $i262: i16; + var $i263: i32; + var $i264: i32; + var $i265: i32; + var $i266: i16; + var $i267: i32; + var $i268: i1; + var $i270: i32; + var $i271: i1; + var $i272: i32; + var $i273: i1; + var $i275: i32; + var $i276: i32; + var $i277: i16; + var $i274: i16; + var $i269: i16; + var $i278: i32; + var $i279: i32; + var $i280: i16; + var $i281: i32; + var $i282: i32; + var $i283: i32; + var $i284: i16; + var $i285: i32; + var $i286: i32; + var $i287: i16; + var $i288: i32; + var $i289: i32; + var $i290: i32; + var $i291: i16; + var $i292: i32; + var $i293: i32; + var $i294: i32; + var $i295: i16; + var $i296: i32; + var $i297: i1; + var $i299: i32; + var $i300: i1; + var $i301: i32; + var $i302: i1; + var $i304: i32; + var $i305: i32; + var $i306: i16; + var $i303: i16; + var $i298: i16; + var $i307: i32; + var $i308: i32; + var $i309: i16; + var $i310: i32; + var $i311: i32; + var $i312: i32; + var $i313: i16; + var $i314: i32; + var $i315: i32; + var $i316: i16; + var $i317: i32; + var $i318: i32; + var $i319: i32; + var $i320: i16; + var $i321: i32; + var $i322: i32; + var $i323: i32; + var $i324: i16; + var $i325: i32; + var $i326: i1; + var $i328: i32; + var $i329: i1; + var $i330: i32; + var $i331: i1; + var $i333: i32; + var $i334: i32; + var $i335: i16; + var $i332: i16; + var $i327: i16; + var $i336: i32; + var $i337: i32; + var $i338: i16; + var $i339: i32; + var $i340: i32; + var $i341: i32; + var $i342: i16; + var $i343: i32; + var $i344: i32; + var $i345: i16; + var $i346: i32; + var $i347: i32; + var $i348: i32; + var $i349: i16; + var $i350: i32; + var $i351: i32; + var $i352: i32; + var $i353: i16; + var $i354: i32; + var $i355: i1; + var $i357: i32; + var $i358: i1; + var $i359: i32; + var $i360: i1; + var $i362: i32; + var $i363: i32; + var $i364: i16; + var $i361: i16; + var $i356: i16; + var $i365: i32; + var $i366: i32; + var $i367: i16; + var $i368: i32; + var $i369: i32; + var $i370: i32; + var $i371: i16; + var $i372: i32; + var $i373: i32; + var $i374: i16; + var $i375: i32; + var $i376: i32; + var $i377: i32; + var $i378: i16; + var $i379: i32; + var $i380: i32; + var $i381: i32; + var $i382: i16; + var $i383: i32; + var $i384: i1; + var $i386: i32; + var $i387: i1; + var $i388: i32; + var $i389: i1; + var $i391: i32; + var $i392: i32; + var $i393: i16; + var $i390: i16; + var $i385: i16; + var $i394: i32; + var $i395: i32; + var $i396: i16; + var $i397: i32; + var $i398: i32; + var $i399: i32; + var $i400: i16; + var $i401: i32; + var $i402: i32; + var $i403: i16; + var $i404: i32; + var $i405: i32; + var $i406: i32; + var $i407: i16; + var $i408: i32; + var $i409: i32; + var $i410: i32; + var $i411: i16; + var $i412: i32; + var $i413: i1; + var $i415: i32; + var $i416: i1; + var $i417: i32; + var $i418: i1; + var $i420: i32; + var $i421: i32; + var $i422: i16; + var $i419: i16; + var $i414: i16; + var $i423: i32; + var $i424: i32; + var $i425: i16; + var $i426: i32; + var $i427: i32; + var $i428: i32; + var $i429: i16; + var $i430: i32; + var $i431: i32; + var $i432: i16; + var $i433: i32; + var $i434: i32; + var $i435: i32; + var $i436: i16; + var $i437: i32; + var $i438: i32; + var $i439: i32; + var $i440: i16; + var $i441: i32; + var $i442: i1; + var $i444: i32; + var $i445: i1; + var $i446: i32; + var $i447: i1; + var $i449: i32; + var $i450: i32; + var $i451: i16; + var $i448: i16; + var $i443: i16; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 8} true; + assume {:verifier.code 0} true; + call {:cexpr "__SMACK_and16:arg:a"} boogie_si_record_i16($i0); + call {:cexpr "__SMACK_and16:arg:b"} boogie_si_record_i16($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 8} true; + assume {:verifier.code 0} true; + $i2 := $sext.i16.i32(0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 5} true; + assume {:verifier.code 0} true; + $i3 := $sext.i16.i32(0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 5} true; + assume {:verifier.code 0} true; + $i4 := $add.i32($i3, $i2); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 5} true; + assume {:verifier.code 0} true; + $i5 := $trunc.i32.i16($i4); + call {:cexpr "c"} boogie_si_record_i16($i5); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 773, 7} true; + assume {:verifier.code 0} true; + $i6 := $sext.i16.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 773, 9} true; + assume {:verifier.code 0} true; + $i7 := $slt.i32($i6, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 773, 7} true; + assume {:verifier.code 0} true; + $i8 := $i5; + assume {:branchcond $i7} true; + goto $bb1, $bb2; +$bb1: + assume ($i7 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 9} true; + assume {:verifier.code 0} true; + $i9 := $sext.i16.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 11} true; + assume {:verifier.code 0} true; + $i10 := $slt.i32($i9, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i10} true; + goto $bb4, $bb6; +$bb2: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 773, 7} true; + assume {:verifier.code 0} true; + assume !(($i7 == 1)); + goto $bb3; +$bb3: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 778, 7} true; + assume {:verifier.code 0} true; + $i17 := $sext.i16.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 778, 9} true; + assume {:verifier.code 0} true; + $i18 := $srem.i32($i17, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 778, 7} true; + assume {:verifier.code 0} true; + $i19 := $trunc.i32.i16($i18); + call {:cexpr "a"} boogie_si_record_i16($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 779, 8} true; + assume {:verifier.code 0} true; + $i20 := $sext.i16.i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 779, 5} true; + assume {:verifier.code 0} true; + $i21 := $sext.i16.i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 779, 5} true; + assume {:verifier.code 0} true; + $i22 := $add.i32($i21, $i20); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 779, 5} true; + assume {:verifier.code 0} true; + $i23 := $trunc.i32.i16($i22); + call {:cexpr "a"} boogie_si_record_i16($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 780, 7} true; + assume {:verifier.code 0} true; + $i24 := $sext.i16.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 780, 9} true; + assume {:verifier.code 0} true; + $i25 := $srem.i32($i24, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 780, 7} true; + assume {:verifier.code 0} true; + $i26 := $trunc.i32.i16($i25); + call {:cexpr "b"} boogie_si_record_i16($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 781, 8} true; + assume {:verifier.code 0} true; + $i27 := $sext.i16.i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 781, 5} true; + assume {:verifier.code 0} true; + $i28 := $sext.i16.i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 781, 5} true; + assume {:verifier.code 0} true; + $i29 := $add.i32($i28, $i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 781, 5} true; + assume {:verifier.code 0} true; + $i30 := $trunc.i32.i16($i29); + call {:cexpr "b"} boogie_si_record_i16($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 783, 8} true; + assume {:verifier.code 0} true; + $i31 := $sext.i16.i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 783, 5} true; + assume {:verifier.code 0} true; + $i32 := $sext.i16.i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 783, 5} true; + assume {:verifier.code 0} true; + $i33 := $add.i32($i32, $i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 783, 5} true; + assume {:verifier.code 0} true; + $i34 := $trunc.i32.i16($i33); + call {:cexpr "c"} boogie_si_record_i16($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 784, 7} true; + assume {:verifier.code 0} true; + $i35 := $sext.i16.i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 784, 9} true; + assume {:verifier.code 0} true; + $i36 := $slt.i32($i35, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 784, 7} true; + assume {:verifier.code 0} true; + $i37 := $i34; + assume {:branchcond $i36} true; + goto $bb10, $bb11; +$bb4: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 15} true; + assume {:verifier.code 0} true; + assume ($i10 == 1); + goto $bb5; +$bb5: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 775, 9} true; + assume {:verifier.code 0} true; + $i14 := $sext.i16.i32($i5); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 775, 9} true; + assume {:verifier.code 0} true; + $i15 := $add.i32($i14, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 775, 9} true; + assume {:verifier.code 0} true; + $i16 := $trunc.i32.i16($i15); + call {:cexpr "c"} boogie_si_record_i16($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 776, 5} true; + assume {:verifier.code 0} true; + $i13 := $i16; + goto $bb9; +$bb6: + assume !(($i10 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 18} true; + assume {:verifier.code 0} true; + $i11 := $sext.i16.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 20} true; + assume {:verifier.code 0} true; + $i12 := $sgt.i32($i11, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 9} true; + assume {:verifier.code 0} true; + $i13 := $i5; + assume {:branchcond $i12} true; + goto $bb7, $bb8; +$bb7: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 9} true; + assume {:verifier.code 0} true; + assume ($i12 == 1); + goto $bb5; +$bb8: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 9} true; + assume {:verifier.code 0} true; + assume !(($i12 == 1)); + goto $bb9; +$bb9: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 777, 3} true; + assume {:verifier.code 0} true; + $i8 := $i13; + goto $bb3; +$bb10: + assume ($i36 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 9} true; + assume {:verifier.code 0} true; + $i38 := $sext.i16.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 11} true; + assume {:verifier.code 0} true; + $i39 := $slt.i32($i38, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i39} true; + goto $bb13, $bb15; +$bb11: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 784, 7} true; + assume {:verifier.code 0} true; + assume !(($i36 == 1)); + goto $bb12; +$bb12: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 789, 7} true; + assume {:verifier.code 0} true; + $i46 := $sext.i16.i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 789, 9} true; + assume {:verifier.code 0} true; + $i47 := $srem.i32($i46, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 789, 7} true; + assume {:verifier.code 0} true; + $i48 := $trunc.i32.i16($i47); + call {:cexpr "a"} boogie_si_record_i16($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 790, 8} true; + assume {:verifier.code 0} true; + $i49 := $sext.i16.i32($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 790, 5} true; + assume {:verifier.code 0} true; + $i50 := $sext.i16.i32($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 790, 5} true; + assume {:verifier.code 0} true; + $i51 := $add.i32($i50, $i49); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 790, 5} true; + assume {:verifier.code 0} true; + $i52 := $trunc.i32.i16($i51); + call {:cexpr "a"} boogie_si_record_i16($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 791, 7} true; + assume {:verifier.code 0} true; + $i53 := $sext.i16.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 791, 9} true; + assume {:verifier.code 0} true; + $i54 := $srem.i32($i53, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 791, 7} true; + assume {:verifier.code 0} true; + $i55 := $trunc.i32.i16($i54); + call {:cexpr "b"} boogie_si_record_i16($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 792, 8} true; + assume {:verifier.code 0} true; + $i56 := $sext.i16.i32($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 792, 5} true; + assume {:verifier.code 0} true; + $i57 := $sext.i16.i32($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 792, 5} true; + assume {:verifier.code 0} true; + $i58 := $add.i32($i57, $i56); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 792, 5} true; + assume {:verifier.code 0} true; + $i59 := $trunc.i32.i16($i58); + call {:cexpr "b"} boogie_si_record_i16($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 794, 8} true; + assume {:verifier.code 0} true; + $i60 := $sext.i16.i32($i37); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 794, 5} true; + assume {:verifier.code 0} true; + $i61 := $sext.i16.i32($i37); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 794, 5} true; + assume {:verifier.code 0} true; + $i62 := $add.i32($i61, $i60); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 794, 5} true; + assume {:verifier.code 0} true; + $i63 := $trunc.i32.i16($i62); + call {:cexpr "c"} boogie_si_record_i16($i63); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 795, 7} true; + assume {:verifier.code 0} true; + $i64 := $sext.i16.i32($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 795, 9} true; + assume {:verifier.code 0} true; + $i65 := $slt.i32($i64, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 795, 7} true; + assume {:verifier.code 0} true; + $i66 := $i63; + assume {:branchcond $i65} true; + goto $bb19, $bb20; +$bb13: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 15} true; + assume {:verifier.code 0} true; + assume ($i39 == 1); + goto $bb14; +$bb14: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 786, 9} true; + assume {:verifier.code 0} true; + $i43 := $sext.i16.i32($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 786, 9} true; + assume {:verifier.code 0} true; + $i44 := $add.i32($i43, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 786, 9} true; + assume {:verifier.code 0} true; + $i45 := $trunc.i32.i16($i44); + call {:cexpr "c"} boogie_si_record_i16($i45); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 787, 5} true; + assume {:verifier.code 0} true; + $i42 := $i45; + goto $bb18; +$bb15: + assume !(($i39 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 18} true; + assume {:verifier.code 0} true; + $i40 := $sext.i16.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 20} true; + assume {:verifier.code 0} true; + $i41 := $sgt.i32($i40, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 9} true; + assume {:verifier.code 0} true; + $i42 := $i34; + assume {:branchcond $i41} true; + goto $bb16, $bb17; +$bb16: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 9} true; + assume {:verifier.code 0} true; + assume ($i41 == 1); + goto $bb14; +$bb17: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 9} true; + assume {:verifier.code 0} true; + assume !(($i41 == 1)); + goto $bb18; +$bb18: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 788, 3} true; + assume {:verifier.code 0} true; + $i37 := $i42; + goto $bb12; +$bb19: + assume ($i65 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 9} true; + assume {:verifier.code 0} true; + $i67 := $sext.i16.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 11} true; + assume {:verifier.code 0} true; + $i68 := $slt.i32($i67, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i68} true; + goto $bb22, $bb24; +$bb20: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 795, 7} true; + assume {:verifier.code 0} true; + assume !(($i65 == 1)); + goto $bb21; +$bb21: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 800, 7} true; + assume {:verifier.code 0} true; + $i75 := $sext.i16.i32($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 800, 9} true; + assume {:verifier.code 0} true; + $i76 := $srem.i32($i75, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 800, 7} true; + assume {:verifier.code 0} true; + $i77 := $trunc.i32.i16($i76); + call {:cexpr "a"} boogie_si_record_i16($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 801, 8} true; + assume {:verifier.code 0} true; + $i78 := $sext.i16.i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 801, 5} true; + assume {:verifier.code 0} true; + $i79 := $sext.i16.i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 801, 5} true; + assume {:verifier.code 0} true; + $i80 := $add.i32($i79, $i78); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 801, 5} true; + assume {:verifier.code 0} true; + $i81 := $trunc.i32.i16($i80); + call {:cexpr "a"} boogie_si_record_i16($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 802, 7} true; + assume {:verifier.code 0} true; + $i82 := $sext.i16.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 802, 9} true; + assume {:verifier.code 0} true; + $i83 := $srem.i32($i82, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 802, 7} true; + assume {:verifier.code 0} true; + $i84 := $trunc.i32.i16($i83); + call {:cexpr "b"} boogie_si_record_i16($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 803, 8} true; + assume {:verifier.code 0} true; + $i85 := $sext.i16.i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 803, 5} true; + assume {:verifier.code 0} true; + $i86 := $sext.i16.i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 803, 5} true; + assume {:verifier.code 0} true; + $i87 := $add.i32($i86, $i85); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 803, 5} true; + assume {:verifier.code 0} true; + $i88 := $trunc.i32.i16($i87); + call {:cexpr "b"} boogie_si_record_i16($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 805, 8} true; + assume {:verifier.code 0} true; + $i89 := $sext.i16.i32($i66); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 805, 5} true; + assume {:verifier.code 0} true; + $i90 := $sext.i16.i32($i66); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 805, 5} true; + assume {:verifier.code 0} true; + $i91 := $add.i32($i90, $i89); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 805, 5} true; + assume {:verifier.code 0} true; + $i92 := $trunc.i32.i16($i91); + call {:cexpr "c"} boogie_si_record_i16($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 806, 7} true; + assume {:verifier.code 0} true; + $i93 := $sext.i16.i32($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 806, 9} true; + assume {:verifier.code 0} true; + $i94 := $slt.i32($i93, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 806, 7} true; + assume {:verifier.code 0} true; + $i95 := $i92; + assume {:branchcond $i94} true; + goto $bb28, $bb29; +$bb22: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 15} true; + assume {:verifier.code 0} true; + assume ($i68 == 1); + goto $bb23; +$bb23: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 797, 9} true; + assume {:verifier.code 0} true; + $i72 := $sext.i16.i32($i63); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 797, 9} true; + assume {:verifier.code 0} true; + $i73 := $add.i32($i72, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 797, 9} true; + assume {:verifier.code 0} true; + $i74 := $trunc.i32.i16($i73); + call {:cexpr "c"} boogie_si_record_i16($i74); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 798, 5} true; + assume {:verifier.code 0} true; + $i71 := $i74; + goto $bb27; +$bb24: + assume !(($i68 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 18} true; + assume {:verifier.code 0} true; + $i69 := $sext.i16.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 20} true; + assume {:verifier.code 0} true; + $i70 := $sgt.i32($i69, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 9} true; + assume {:verifier.code 0} true; + $i71 := $i63; + assume {:branchcond $i70} true; + goto $bb25, $bb26; +$bb25: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 9} true; + assume {:verifier.code 0} true; + assume ($i70 == 1); + goto $bb23; +$bb26: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 9} true; + assume {:verifier.code 0} true; + assume !(($i70 == 1)); + goto $bb27; +$bb27: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 799, 3} true; + assume {:verifier.code 0} true; + $i66 := $i71; + goto $bb21; +$bb28: + assume ($i94 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 9} true; + assume {:verifier.code 0} true; + $i96 := $sext.i16.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 11} true; + assume {:verifier.code 0} true; + $i97 := $slt.i32($i96, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i97} true; + goto $bb31, $bb33; +$bb29: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 806, 7} true; + assume {:verifier.code 0} true; + assume !(($i94 == 1)); + goto $bb30; +$bb30: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 811, 7} true; + assume {:verifier.code 0} true; + $i104 := $sext.i16.i32($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 811, 9} true; + assume {:verifier.code 0} true; + $i105 := $srem.i32($i104, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 811, 7} true; + assume {:verifier.code 0} true; + $i106 := $trunc.i32.i16($i105); + call {:cexpr "a"} boogie_si_record_i16($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 812, 8} true; + assume {:verifier.code 0} true; + $i107 := $sext.i16.i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 812, 5} true; + assume {:verifier.code 0} true; + $i108 := $sext.i16.i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 812, 5} true; + assume {:verifier.code 0} true; + $i109 := $add.i32($i108, $i107); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 812, 5} true; + assume {:verifier.code 0} true; + $i110 := $trunc.i32.i16($i109); + call {:cexpr "a"} boogie_si_record_i16($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 813, 7} true; + assume {:verifier.code 0} true; + $i111 := $sext.i16.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 813, 9} true; + assume {:verifier.code 0} true; + $i112 := $srem.i32($i111, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 813, 7} true; + assume {:verifier.code 0} true; + $i113 := $trunc.i32.i16($i112); + call {:cexpr "b"} boogie_si_record_i16($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 814, 8} true; + assume {:verifier.code 0} true; + $i114 := $sext.i16.i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 814, 5} true; + assume {:verifier.code 0} true; + $i115 := $sext.i16.i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 814, 5} true; + assume {:verifier.code 0} true; + $i116 := $add.i32($i115, $i114); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 814, 5} true; + assume {:verifier.code 0} true; + $i117 := $trunc.i32.i16($i116); + call {:cexpr "b"} boogie_si_record_i16($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 816, 8} true; + assume {:verifier.code 0} true; + $i118 := $sext.i16.i32($i95); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 816, 5} true; + assume {:verifier.code 0} true; + $i119 := $sext.i16.i32($i95); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 816, 5} true; + assume {:verifier.code 0} true; + $i120 := $add.i32($i119, $i118); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 816, 5} true; + assume {:verifier.code 0} true; + $i121 := $trunc.i32.i16($i120); + call {:cexpr "c"} boogie_si_record_i16($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 817, 7} true; + assume {:verifier.code 0} true; + $i122 := $sext.i16.i32($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 817, 9} true; + assume {:verifier.code 0} true; + $i123 := $slt.i32($i122, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 817, 7} true; + assume {:verifier.code 0} true; + $i124 := $i121; + assume {:branchcond $i123} true; + goto $bb37, $bb38; +$bb31: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 15} true; + assume {:verifier.code 0} true; + assume ($i97 == 1); + goto $bb32; +$bb32: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 808, 9} true; + assume {:verifier.code 0} true; + $i101 := $sext.i16.i32($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 808, 9} true; + assume {:verifier.code 0} true; + $i102 := $add.i32($i101, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 808, 9} true; + assume {:verifier.code 0} true; + $i103 := $trunc.i32.i16($i102); + call {:cexpr "c"} boogie_si_record_i16($i103); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 809, 5} true; + assume {:verifier.code 0} true; + $i100 := $i103; + goto $bb36; +$bb33: + assume !(($i97 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 18} true; + assume {:verifier.code 0} true; + $i98 := $sext.i16.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 20} true; + assume {:verifier.code 0} true; + $i99 := $sgt.i32($i98, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 9} true; + assume {:verifier.code 0} true; + $i100 := $i92; + assume {:branchcond $i99} true; + goto $bb34, $bb35; +$bb34: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 9} true; + assume {:verifier.code 0} true; + assume ($i99 == 1); + goto $bb32; +$bb35: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 9} true; + assume {:verifier.code 0} true; + assume !(($i99 == 1)); + goto $bb36; +$bb36: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 810, 3} true; + assume {:verifier.code 0} true; + $i95 := $i100; + goto $bb30; +$bb37: + assume ($i123 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 9} true; + assume {:verifier.code 0} true; + $i125 := $sext.i16.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 11} true; + assume {:verifier.code 0} true; + $i126 := $slt.i32($i125, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i126} true; + goto $bb40, $bb42; +$bb38: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 817, 7} true; + assume {:verifier.code 0} true; + assume !(($i123 == 1)); + goto $bb39; +$bb39: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 822, 7} true; + assume {:verifier.code 0} true; + $i133 := $sext.i16.i32($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 822, 9} true; + assume {:verifier.code 0} true; + $i134 := $srem.i32($i133, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 822, 7} true; + assume {:verifier.code 0} true; + $i135 := $trunc.i32.i16($i134); + call {:cexpr "a"} boogie_si_record_i16($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 823, 8} true; + assume {:verifier.code 0} true; + $i136 := $sext.i16.i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 823, 5} true; + assume {:verifier.code 0} true; + $i137 := $sext.i16.i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 823, 5} true; + assume {:verifier.code 0} true; + $i138 := $add.i32($i137, $i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 823, 5} true; + assume {:verifier.code 0} true; + $i139 := $trunc.i32.i16($i138); + call {:cexpr "a"} boogie_si_record_i16($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 824, 7} true; + assume {:verifier.code 0} true; + $i140 := $sext.i16.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 824, 9} true; + assume {:verifier.code 0} true; + $i141 := $srem.i32($i140, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 824, 7} true; + assume {:verifier.code 0} true; + $i142 := $trunc.i32.i16($i141); + call {:cexpr "b"} boogie_si_record_i16($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 825, 8} true; + assume {:verifier.code 0} true; + $i143 := $sext.i16.i32($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 825, 5} true; + assume {:verifier.code 0} true; + $i144 := $sext.i16.i32($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 825, 5} true; + assume {:verifier.code 0} true; + $i145 := $add.i32($i144, $i143); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 825, 5} true; + assume {:verifier.code 0} true; + $i146 := $trunc.i32.i16($i145); + call {:cexpr "b"} boogie_si_record_i16($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 827, 8} true; + assume {:verifier.code 0} true; + $i147 := $sext.i16.i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 827, 5} true; + assume {:verifier.code 0} true; + $i148 := $sext.i16.i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 827, 5} true; + assume {:verifier.code 0} true; + $i149 := $add.i32($i148, $i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 827, 5} true; + assume {:verifier.code 0} true; + $i150 := $trunc.i32.i16($i149); + call {:cexpr "c"} boogie_si_record_i16($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 828, 7} true; + assume {:verifier.code 0} true; + $i151 := $sext.i16.i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 828, 9} true; + assume {:verifier.code 0} true; + $i152 := $slt.i32($i151, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 828, 7} true; + assume {:verifier.code 0} true; + $i153 := $i150; + assume {:branchcond $i152} true; + goto $bb46, $bb47; +$bb40: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 15} true; + assume {:verifier.code 0} true; + assume ($i126 == 1); + goto $bb41; +$bb41: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 819, 9} true; + assume {:verifier.code 0} true; + $i130 := $sext.i16.i32($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 819, 9} true; + assume {:verifier.code 0} true; + $i131 := $add.i32($i130, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 819, 9} true; + assume {:verifier.code 0} true; + $i132 := $trunc.i32.i16($i131); + call {:cexpr "c"} boogie_si_record_i16($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 820, 5} true; + assume {:verifier.code 0} true; + $i129 := $i132; + goto $bb45; +$bb42: + assume !(($i126 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 18} true; + assume {:verifier.code 0} true; + $i127 := $sext.i16.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 20} true; + assume {:verifier.code 0} true; + $i128 := $sgt.i32($i127, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 9} true; + assume {:verifier.code 0} true; + $i129 := $i121; + assume {:branchcond $i128} true; + goto $bb43, $bb44; +$bb43: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 9} true; + assume {:verifier.code 0} true; + assume ($i128 == 1); + goto $bb41; +$bb44: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 9} true; + assume {:verifier.code 0} true; + assume !(($i128 == 1)); + goto $bb45; +$bb45: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 821, 3} true; + assume {:verifier.code 0} true; + $i124 := $i129; + goto $bb39; +$bb46: + assume ($i152 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 9} true; + assume {:verifier.code 0} true; + $i154 := $sext.i16.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 11} true; + assume {:verifier.code 0} true; + $i155 := $slt.i32($i154, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i155} true; + goto $bb49, $bb51; +$bb47: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 828, 7} true; + assume {:verifier.code 0} true; + assume !(($i152 == 1)); + goto $bb48; +$bb48: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 833, 7} true; + assume {:verifier.code 0} true; + $i162 := $sext.i16.i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 833, 9} true; + assume {:verifier.code 0} true; + $i163 := $srem.i32($i162, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 833, 7} true; + assume {:verifier.code 0} true; + $i164 := $trunc.i32.i16($i163); + call {:cexpr "a"} boogie_si_record_i16($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 834, 8} true; + assume {:verifier.code 0} true; + $i165 := $sext.i16.i32($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 834, 5} true; + assume {:verifier.code 0} true; + $i166 := $sext.i16.i32($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 834, 5} true; + assume {:verifier.code 0} true; + $i167 := $add.i32($i166, $i165); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 834, 5} true; + assume {:verifier.code 0} true; + $i168 := $trunc.i32.i16($i167); + call {:cexpr "a"} boogie_si_record_i16($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 835, 7} true; + assume {:verifier.code 0} true; + $i169 := $sext.i16.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 835, 9} true; + assume {:verifier.code 0} true; + $i170 := $srem.i32($i169, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 835, 7} true; + assume {:verifier.code 0} true; + $i171 := $trunc.i32.i16($i170); + call {:cexpr "b"} boogie_si_record_i16($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 836, 8} true; + assume {:verifier.code 0} true; + $i172 := $sext.i16.i32($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 836, 5} true; + assume {:verifier.code 0} true; + $i173 := $sext.i16.i32($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 836, 5} true; + assume {:verifier.code 0} true; + $i174 := $add.i32($i173, $i172); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 836, 5} true; + assume {:verifier.code 0} true; + $i175 := $trunc.i32.i16($i174); + call {:cexpr "b"} boogie_si_record_i16($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 838, 8} true; + assume {:verifier.code 0} true; + $i176 := $sext.i16.i32($i153); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 838, 5} true; + assume {:verifier.code 0} true; + $i177 := $sext.i16.i32($i153); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 838, 5} true; + assume {:verifier.code 0} true; + $i178 := $add.i32($i177, $i176); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 838, 5} true; + assume {:verifier.code 0} true; + $i179 := $trunc.i32.i16($i178); + call {:cexpr "c"} boogie_si_record_i16($i179); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 839, 7} true; + assume {:verifier.code 0} true; + $i180 := $sext.i16.i32($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 839, 9} true; + assume {:verifier.code 0} true; + $i181 := $slt.i32($i180, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 839, 7} true; + assume {:verifier.code 0} true; + $i182 := $i179; + assume {:branchcond $i181} true; + goto $bb55, $bb56; +$bb49: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 15} true; + assume {:verifier.code 0} true; + assume ($i155 == 1); + goto $bb50; +$bb50: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 830, 9} true; + assume {:verifier.code 0} true; + $i159 := $sext.i16.i32($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 830, 9} true; + assume {:verifier.code 0} true; + $i160 := $add.i32($i159, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 830, 9} true; + assume {:verifier.code 0} true; + $i161 := $trunc.i32.i16($i160); + call {:cexpr "c"} boogie_si_record_i16($i161); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 831, 5} true; + assume {:verifier.code 0} true; + $i158 := $i161; + goto $bb54; +$bb51: + assume !(($i155 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 18} true; + assume {:verifier.code 0} true; + $i156 := $sext.i16.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 20} true; + assume {:verifier.code 0} true; + $i157 := $sgt.i32($i156, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 9} true; + assume {:verifier.code 0} true; + $i158 := $i150; + assume {:branchcond $i157} true; + goto $bb52, $bb53; +$bb52: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 9} true; + assume {:verifier.code 0} true; + assume ($i157 == 1); + goto $bb50; +$bb53: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 9} true; + assume {:verifier.code 0} true; + assume !(($i157 == 1)); + goto $bb54; +$bb54: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 832, 3} true; + assume {:verifier.code 0} true; + $i153 := $i158; + goto $bb48; +$bb55: + assume ($i181 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 9} true; + assume {:verifier.code 0} true; + $i183 := $sext.i16.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 11} true; + assume {:verifier.code 0} true; + $i184 := $slt.i32($i183, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i184} true; + goto $bb58, $bb60; +$bb56: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 839, 7} true; + assume {:verifier.code 0} true; + assume !(($i181 == 1)); + goto $bb57; +$bb57: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 844, 7} true; + assume {:verifier.code 0} true; + $i191 := $sext.i16.i32($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 844, 9} true; + assume {:verifier.code 0} true; + $i192 := $srem.i32($i191, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 844, 7} true; + assume {:verifier.code 0} true; + $i193 := $trunc.i32.i16($i192); + call {:cexpr "a"} boogie_si_record_i16($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 845, 8} true; + assume {:verifier.code 0} true; + $i194 := $sext.i16.i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 845, 5} true; + assume {:verifier.code 0} true; + $i195 := $sext.i16.i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 845, 5} true; + assume {:verifier.code 0} true; + $i196 := $add.i32($i195, $i194); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 845, 5} true; + assume {:verifier.code 0} true; + $i197 := $trunc.i32.i16($i196); + call {:cexpr "a"} boogie_si_record_i16($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 846, 7} true; + assume {:verifier.code 0} true; + $i198 := $sext.i16.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 846, 9} true; + assume {:verifier.code 0} true; + $i199 := $srem.i32($i198, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 846, 7} true; + assume {:verifier.code 0} true; + $i200 := $trunc.i32.i16($i199); + call {:cexpr "b"} boogie_si_record_i16($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 847, 8} true; + assume {:verifier.code 0} true; + $i201 := $sext.i16.i32($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 847, 5} true; + assume {:verifier.code 0} true; + $i202 := $sext.i16.i32($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 847, 5} true; + assume {:verifier.code 0} true; + $i203 := $add.i32($i202, $i201); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 847, 5} true; + assume {:verifier.code 0} true; + $i204 := $trunc.i32.i16($i203); + call {:cexpr "b"} boogie_si_record_i16($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 849, 8} true; + assume {:verifier.code 0} true; + $i205 := $sext.i16.i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 849, 5} true; + assume {:verifier.code 0} true; + $i206 := $sext.i16.i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 849, 5} true; + assume {:verifier.code 0} true; + $i207 := $add.i32($i206, $i205); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 849, 5} true; + assume {:verifier.code 0} true; + $i208 := $trunc.i32.i16($i207); + call {:cexpr "c"} boogie_si_record_i16($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 850, 7} true; + assume {:verifier.code 0} true; + $i209 := $sext.i16.i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 850, 9} true; + assume {:verifier.code 0} true; + $i210 := $slt.i32($i209, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 850, 7} true; + assume {:verifier.code 0} true; + $i211 := $i208; + assume {:branchcond $i210} true; + goto $bb64, $bb65; +$bb58: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 15} true; + assume {:verifier.code 0} true; + assume ($i184 == 1); + goto $bb59; +$bb59: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 841, 9} true; + assume {:verifier.code 0} true; + $i188 := $sext.i16.i32($i179); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 841, 9} true; + assume {:verifier.code 0} true; + $i189 := $add.i32($i188, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 841, 9} true; + assume {:verifier.code 0} true; + $i190 := $trunc.i32.i16($i189); + call {:cexpr "c"} boogie_si_record_i16($i190); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 842, 5} true; + assume {:verifier.code 0} true; + $i187 := $i190; + goto $bb63; +$bb60: + assume !(($i184 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 18} true; + assume {:verifier.code 0} true; + $i185 := $sext.i16.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 20} true; + assume {:verifier.code 0} true; + $i186 := $sgt.i32($i185, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 9} true; + assume {:verifier.code 0} true; + $i187 := $i179; + assume {:branchcond $i186} true; + goto $bb61, $bb62; +$bb61: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 9} true; + assume {:verifier.code 0} true; + assume ($i186 == 1); + goto $bb59; +$bb62: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 9} true; + assume {:verifier.code 0} true; + assume !(($i186 == 1)); + goto $bb63; +$bb63: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 843, 3} true; + assume {:verifier.code 0} true; + $i182 := $i187; + goto $bb57; +$bb64: + assume ($i210 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 9} true; + assume {:verifier.code 0} true; + $i212 := $sext.i16.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 11} true; + assume {:verifier.code 0} true; + $i213 := $slt.i32($i212, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i213} true; + goto $bb67, $bb69; +$bb65: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 850, 7} true; + assume {:verifier.code 0} true; + assume !(($i210 == 1)); + goto $bb66; +$bb66: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 855, 7} true; + assume {:verifier.code 0} true; + $i220 := $sext.i16.i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 855, 9} true; + assume {:verifier.code 0} true; + $i221 := $srem.i32($i220, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 855, 7} true; + assume {:verifier.code 0} true; + $i222 := $trunc.i32.i16($i221); + call {:cexpr "a"} boogie_si_record_i16($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 856, 8} true; + assume {:verifier.code 0} true; + $i223 := $sext.i16.i32($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 856, 5} true; + assume {:verifier.code 0} true; + $i224 := $sext.i16.i32($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 856, 5} true; + assume {:verifier.code 0} true; + $i225 := $add.i32($i224, $i223); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 856, 5} true; + assume {:verifier.code 0} true; + $i226 := $trunc.i32.i16($i225); + call {:cexpr "a"} boogie_si_record_i16($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 857, 7} true; + assume {:verifier.code 0} true; + $i227 := $sext.i16.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 857, 9} true; + assume {:verifier.code 0} true; + $i228 := $srem.i32($i227, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 857, 7} true; + assume {:verifier.code 0} true; + $i229 := $trunc.i32.i16($i228); + call {:cexpr "b"} boogie_si_record_i16($i229); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 858, 8} true; + assume {:verifier.code 0} true; + $i230 := $sext.i16.i32($i229); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 858, 5} true; + assume {:verifier.code 0} true; + $i231 := $sext.i16.i32($i229); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 858, 5} true; + assume {:verifier.code 0} true; + $i232 := $add.i32($i231, $i230); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 858, 5} true; + assume {:verifier.code 0} true; + $i233 := $trunc.i32.i16($i232); + call {:cexpr "b"} boogie_si_record_i16($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 860, 8} true; + assume {:verifier.code 0} true; + $i234 := $sext.i16.i32($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 860, 5} true; + assume {:verifier.code 0} true; + $i235 := $sext.i16.i32($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 860, 5} true; + assume {:verifier.code 0} true; + $i236 := $add.i32($i235, $i234); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 860, 5} true; + assume {:verifier.code 0} true; + $i237 := $trunc.i32.i16($i236); + call {:cexpr "c"} boogie_si_record_i16($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 861, 7} true; + assume {:verifier.code 0} true; + $i238 := $sext.i16.i32($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 861, 9} true; + assume {:verifier.code 0} true; + $i239 := $slt.i32($i238, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 861, 7} true; + assume {:verifier.code 0} true; + $i240 := $i237; + assume {:branchcond $i239} true; + goto $bb73, $bb74; +$bb67: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 15} true; + assume {:verifier.code 0} true; + assume ($i213 == 1); + goto $bb68; +$bb68: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 852, 9} true; + assume {:verifier.code 0} true; + $i217 := $sext.i16.i32($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 852, 9} true; + assume {:verifier.code 0} true; + $i218 := $add.i32($i217, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 852, 9} true; + assume {:verifier.code 0} true; + $i219 := $trunc.i32.i16($i218); + call {:cexpr "c"} boogie_si_record_i16($i219); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 853, 5} true; + assume {:verifier.code 0} true; + $i216 := $i219; + goto $bb72; +$bb69: + assume !(($i213 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 18} true; + assume {:verifier.code 0} true; + $i214 := $sext.i16.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 20} true; + assume {:verifier.code 0} true; + $i215 := $sgt.i32($i214, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 9} true; + assume {:verifier.code 0} true; + $i216 := $i208; + assume {:branchcond $i215} true; + goto $bb70, $bb71; +$bb70: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 9} true; + assume {:verifier.code 0} true; + assume ($i215 == 1); + goto $bb68; +$bb71: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 9} true; + assume {:verifier.code 0} true; + assume !(($i215 == 1)); + goto $bb72; +$bb72: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 854, 3} true; + assume {:verifier.code 0} true; + $i211 := $i216; + goto $bb66; +$bb73: + assume ($i239 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 9} true; + assume {:verifier.code 0} true; + $i241 := $sext.i16.i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 11} true; + assume {:verifier.code 0} true; + $i242 := $slt.i32($i241, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i242} true; + goto $bb76, $bb78; +$bb74: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 861, 7} true; + assume {:verifier.code 0} true; + assume !(($i239 == 1)); + goto $bb75; +$bb75: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 866, 7} true; + assume {:verifier.code 0} true; + $i249 := $sext.i16.i32($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 866, 9} true; + assume {:verifier.code 0} true; + $i250 := $srem.i32($i249, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 866, 7} true; + assume {:verifier.code 0} true; + $i251 := $trunc.i32.i16($i250); + call {:cexpr "a"} boogie_si_record_i16($i251); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 867, 8} true; + assume {:verifier.code 0} true; + $i252 := $sext.i16.i32($i251); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 867, 5} true; + assume {:verifier.code 0} true; + $i253 := $sext.i16.i32($i251); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 867, 5} true; + assume {:verifier.code 0} true; + $i254 := $add.i32($i253, $i252); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 867, 5} true; + assume {:verifier.code 0} true; + $i255 := $trunc.i32.i16($i254); + call {:cexpr "a"} boogie_si_record_i16($i255); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 868, 7} true; + assume {:verifier.code 0} true; + $i256 := $sext.i16.i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 868, 9} true; + assume {:verifier.code 0} true; + $i257 := $srem.i32($i256, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 868, 7} true; + assume {:verifier.code 0} true; + $i258 := $trunc.i32.i16($i257); + call {:cexpr "b"} boogie_si_record_i16($i258); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 869, 8} true; + assume {:verifier.code 0} true; + $i259 := $sext.i16.i32($i258); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 869, 5} true; + assume {:verifier.code 0} true; + $i260 := $sext.i16.i32($i258); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 869, 5} true; + assume {:verifier.code 0} true; + $i261 := $add.i32($i260, $i259); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 869, 5} true; + assume {:verifier.code 0} true; + $i262 := $trunc.i32.i16($i261); + call {:cexpr "b"} boogie_si_record_i16($i262); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 871, 8} true; + assume {:verifier.code 0} true; + $i263 := $sext.i16.i32($i240); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 871, 5} true; + assume {:verifier.code 0} true; + $i264 := $sext.i16.i32($i240); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 871, 5} true; + assume {:verifier.code 0} true; + $i265 := $add.i32($i264, $i263); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 871, 5} true; + assume {:verifier.code 0} true; + $i266 := $trunc.i32.i16($i265); + call {:cexpr "c"} boogie_si_record_i16($i266); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 872, 7} true; + assume {:verifier.code 0} true; + $i267 := $sext.i16.i32($i255); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 872, 9} true; + assume {:verifier.code 0} true; + $i268 := $slt.i32($i267, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 872, 7} true; + assume {:verifier.code 0} true; + $i269 := $i266; + assume {:branchcond $i268} true; + goto $bb82, $bb83; +$bb76: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 15} true; + assume {:verifier.code 0} true; + assume ($i242 == 1); + goto $bb77; +$bb77: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 863, 9} true; + assume {:verifier.code 0} true; + $i246 := $sext.i16.i32($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 863, 9} true; + assume {:verifier.code 0} true; + $i247 := $add.i32($i246, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 863, 9} true; + assume {:verifier.code 0} true; + $i248 := $trunc.i32.i16($i247); + call {:cexpr "c"} boogie_si_record_i16($i248); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 864, 5} true; + assume {:verifier.code 0} true; + $i245 := $i248; + goto $bb81; +$bb78: + assume !(($i242 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 18} true; + assume {:verifier.code 0} true; + $i243 := $sext.i16.i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 20} true; + assume {:verifier.code 0} true; + $i244 := $sgt.i32($i243, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 9} true; + assume {:verifier.code 0} true; + $i245 := $i237; + assume {:branchcond $i244} true; + goto $bb79, $bb80; +$bb79: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 9} true; + assume {:verifier.code 0} true; + assume ($i244 == 1); + goto $bb77; +$bb80: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 9} true; + assume {:verifier.code 0} true; + assume !(($i244 == 1)); + goto $bb81; +$bb81: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 865, 3} true; + assume {:verifier.code 0} true; + $i240 := $i245; + goto $bb75; +$bb82: + assume ($i268 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 9} true; + assume {:verifier.code 0} true; + $i270 := $sext.i16.i32($i262); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 11} true; + assume {:verifier.code 0} true; + $i271 := $slt.i32($i270, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i271} true; + goto $bb85, $bb87; +$bb83: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 872, 7} true; + assume {:verifier.code 0} true; + assume !(($i268 == 1)); + goto $bb84; +$bb84: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 877, 7} true; + assume {:verifier.code 0} true; + $i278 := $sext.i16.i32($i255); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 877, 9} true; + assume {:verifier.code 0} true; + $i279 := $srem.i32($i278, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 877, 7} true; + assume {:verifier.code 0} true; + $i280 := $trunc.i32.i16($i279); + call {:cexpr "a"} boogie_si_record_i16($i280); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 878, 8} true; + assume {:verifier.code 0} true; + $i281 := $sext.i16.i32($i280); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 878, 5} true; + assume {:verifier.code 0} true; + $i282 := $sext.i16.i32($i280); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 878, 5} true; + assume {:verifier.code 0} true; + $i283 := $add.i32($i282, $i281); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 878, 5} true; + assume {:verifier.code 0} true; + $i284 := $trunc.i32.i16($i283); + call {:cexpr "a"} boogie_si_record_i16($i284); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 879, 7} true; + assume {:verifier.code 0} true; + $i285 := $sext.i16.i32($i262); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 879, 9} true; + assume {:verifier.code 0} true; + $i286 := $srem.i32($i285, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 879, 7} true; + assume {:verifier.code 0} true; + $i287 := $trunc.i32.i16($i286); + call {:cexpr "b"} boogie_si_record_i16($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 880, 8} true; + assume {:verifier.code 0} true; + $i288 := $sext.i16.i32($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 880, 5} true; + assume {:verifier.code 0} true; + $i289 := $sext.i16.i32($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 880, 5} true; + assume {:verifier.code 0} true; + $i290 := $add.i32($i289, $i288); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 880, 5} true; + assume {:verifier.code 0} true; + $i291 := $trunc.i32.i16($i290); + call {:cexpr "b"} boogie_si_record_i16($i291); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 882, 8} true; + assume {:verifier.code 0} true; + $i292 := $sext.i16.i32($i269); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 882, 5} true; + assume {:verifier.code 0} true; + $i293 := $sext.i16.i32($i269); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 882, 5} true; + assume {:verifier.code 0} true; + $i294 := $add.i32($i293, $i292); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 882, 5} true; + assume {:verifier.code 0} true; + $i295 := $trunc.i32.i16($i294); + call {:cexpr "c"} boogie_si_record_i16($i295); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 883, 7} true; + assume {:verifier.code 0} true; + $i296 := $sext.i16.i32($i284); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 883, 9} true; + assume {:verifier.code 0} true; + $i297 := $slt.i32($i296, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 883, 7} true; + assume {:verifier.code 0} true; + $i298 := $i295; + assume {:branchcond $i297} true; + goto $bb91, $bb92; +$bb85: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 15} true; + assume {:verifier.code 0} true; + assume ($i271 == 1); + goto $bb86; +$bb86: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 874, 9} true; + assume {:verifier.code 0} true; + $i275 := $sext.i16.i32($i266); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 874, 9} true; + assume {:verifier.code 0} true; + $i276 := $add.i32($i275, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 874, 9} true; + assume {:verifier.code 0} true; + $i277 := $trunc.i32.i16($i276); + call {:cexpr "c"} boogie_si_record_i16($i277); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 875, 5} true; + assume {:verifier.code 0} true; + $i274 := $i277; + goto $bb90; +$bb87: + assume !(($i271 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 18} true; + assume {:verifier.code 0} true; + $i272 := $sext.i16.i32($i262); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 20} true; + assume {:verifier.code 0} true; + $i273 := $sgt.i32($i272, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 9} true; + assume {:verifier.code 0} true; + $i274 := $i266; + assume {:branchcond $i273} true; + goto $bb88, $bb89; +$bb88: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 9} true; + assume {:verifier.code 0} true; + assume ($i273 == 1); + goto $bb86; +$bb89: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 9} true; + assume {:verifier.code 0} true; + assume !(($i273 == 1)); + goto $bb90; +$bb90: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 876, 3} true; + assume {:verifier.code 0} true; + $i269 := $i274; + goto $bb84; +$bb91: + assume ($i297 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 9} true; + assume {:verifier.code 0} true; + $i299 := $sext.i16.i32($i291); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 11} true; + assume {:verifier.code 0} true; + $i300 := $slt.i32($i299, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i300} true; + goto $bb94, $bb96; +$bb92: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 883, 7} true; + assume {:verifier.code 0} true; + assume !(($i297 == 1)); + goto $bb93; +$bb93: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 888, 7} true; + assume {:verifier.code 0} true; + $i307 := $sext.i16.i32($i284); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 888, 9} true; + assume {:verifier.code 0} true; + $i308 := $srem.i32($i307, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 888, 7} true; + assume {:verifier.code 0} true; + $i309 := $trunc.i32.i16($i308); + call {:cexpr "a"} boogie_si_record_i16($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 889, 8} true; + assume {:verifier.code 0} true; + $i310 := $sext.i16.i32($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 889, 5} true; + assume {:verifier.code 0} true; + $i311 := $sext.i16.i32($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 889, 5} true; + assume {:verifier.code 0} true; + $i312 := $add.i32($i311, $i310); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 889, 5} true; + assume {:verifier.code 0} true; + $i313 := $trunc.i32.i16($i312); + call {:cexpr "a"} boogie_si_record_i16($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 890, 7} true; + assume {:verifier.code 0} true; + $i314 := $sext.i16.i32($i291); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 890, 9} true; + assume {:verifier.code 0} true; + $i315 := $srem.i32($i314, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 890, 7} true; + assume {:verifier.code 0} true; + $i316 := $trunc.i32.i16($i315); + call {:cexpr "b"} boogie_si_record_i16($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 891, 8} true; + assume {:verifier.code 0} true; + $i317 := $sext.i16.i32($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 891, 5} true; + assume {:verifier.code 0} true; + $i318 := $sext.i16.i32($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 891, 5} true; + assume {:verifier.code 0} true; + $i319 := $add.i32($i318, $i317); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 891, 5} true; + assume {:verifier.code 0} true; + $i320 := $trunc.i32.i16($i319); + call {:cexpr "b"} boogie_si_record_i16($i320); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 893, 8} true; + assume {:verifier.code 0} true; + $i321 := $sext.i16.i32($i298); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 893, 5} true; + assume {:verifier.code 0} true; + $i322 := $sext.i16.i32($i298); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 893, 5} true; + assume {:verifier.code 0} true; + $i323 := $add.i32($i322, $i321); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 893, 5} true; + assume {:verifier.code 0} true; + $i324 := $trunc.i32.i16($i323); + call {:cexpr "c"} boogie_si_record_i16($i324); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 894, 7} true; + assume {:verifier.code 0} true; + $i325 := $sext.i16.i32($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 894, 9} true; + assume {:verifier.code 0} true; + $i326 := $slt.i32($i325, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 894, 7} true; + assume {:verifier.code 0} true; + $i327 := $i324; + assume {:branchcond $i326} true; + goto $bb100, $bb101; +$bb94: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 15} true; + assume {:verifier.code 0} true; + assume ($i300 == 1); + goto $bb95; +$bb95: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 885, 9} true; + assume {:verifier.code 0} true; + $i304 := $sext.i16.i32($i295); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 885, 9} true; + assume {:verifier.code 0} true; + $i305 := $add.i32($i304, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 885, 9} true; + assume {:verifier.code 0} true; + $i306 := $trunc.i32.i16($i305); + call {:cexpr "c"} boogie_si_record_i16($i306); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 886, 5} true; + assume {:verifier.code 0} true; + $i303 := $i306; + goto $bb99; +$bb96: + assume !(($i300 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 18} true; + assume {:verifier.code 0} true; + $i301 := $sext.i16.i32($i291); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 20} true; + assume {:verifier.code 0} true; + $i302 := $sgt.i32($i301, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 9} true; + assume {:verifier.code 0} true; + $i303 := $i295; + assume {:branchcond $i302} true; + goto $bb97, $bb98; +$bb97: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 9} true; + assume {:verifier.code 0} true; + assume ($i302 == 1); + goto $bb95; +$bb98: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 9} true; + assume {:verifier.code 0} true; + assume !(($i302 == 1)); + goto $bb99; +$bb99: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 887, 3} true; + assume {:verifier.code 0} true; + $i298 := $i303; + goto $bb93; +$bb100: + assume ($i326 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 9} true; + assume {:verifier.code 0} true; + $i328 := $sext.i16.i32($i320); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 11} true; + assume {:verifier.code 0} true; + $i329 := $slt.i32($i328, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i329} true; + goto $bb103, $bb105; +$bb101: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 894, 7} true; + assume {:verifier.code 0} true; + assume !(($i326 == 1)); + goto $bb102; +$bb102: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 899, 7} true; + assume {:verifier.code 0} true; + $i336 := $sext.i16.i32($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 899, 9} true; + assume {:verifier.code 0} true; + $i337 := $srem.i32($i336, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 899, 7} true; + assume {:verifier.code 0} true; + $i338 := $trunc.i32.i16($i337); + call {:cexpr "a"} boogie_si_record_i16($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 900, 8} true; + assume {:verifier.code 0} true; + $i339 := $sext.i16.i32($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 900, 5} true; + assume {:verifier.code 0} true; + $i340 := $sext.i16.i32($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 900, 5} true; + assume {:verifier.code 0} true; + $i341 := $add.i32($i340, $i339); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 900, 5} true; + assume {:verifier.code 0} true; + $i342 := $trunc.i32.i16($i341); + call {:cexpr "a"} boogie_si_record_i16($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 901, 7} true; + assume {:verifier.code 0} true; + $i343 := $sext.i16.i32($i320); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 901, 9} true; + assume {:verifier.code 0} true; + $i344 := $srem.i32($i343, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 901, 7} true; + assume {:verifier.code 0} true; + $i345 := $trunc.i32.i16($i344); + call {:cexpr "b"} boogie_si_record_i16($i345); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 902, 8} true; + assume {:verifier.code 0} true; + $i346 := $sext.i16.i32($i345); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 902, 5} true; + assume {:verifier.code 0} true; + $i347 := $sext.i16.i32($i345); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 902, 5} true; + assume {:verifier.code 0} true; + $i348 := $add.i32($i347, $i346); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 902, 5} true; + assume {:verifier.code 0} true; + $i349 := $trunc.i32.i16($i348); + call {:cexpr "b"} boogie_si_record_i16($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 904, 8} true; + assume {:verifier.code 0} true; + $i350 := $sext.i16.i32($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 904, 5} true; + assume {:verifier.code 0} true; + $i351 := $sext.i16.i32($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 904, 5} true; + assume {:verifier.code 0} true; + $i352 := $add.i32($i351, $i350); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 904, 5} true; + assume {:verifier.code 0} true; + $i353 := $trunc.i32.i16($i352); + call {:cexpr "c"} boogie_si_record_i16($i353); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 905, 7} true; + assume {:verifier.code 0} true; + $i354 := $sext.i16.i32($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 905, 9} true; + assume {:verifier.code 0} true; + $i355 := $slt.i32($i354, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 905, 7} true; + assume {:verifier.code 0} true; + $i356 := $i353; + assume {:branchcond $i355} true; + goto $bb109, $bb110; +$bb103: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 15} true; + assume {:verifier.code 0} true; + assume ($i329 == 1); + goto $bb104; +$bb104: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 896, 9} true; + assume {:verifier.code 0} true; + $i333 := $sext.i16.i32($i324); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 896, 9} true; + assume {:verifier.code 0} true; + $i334 := $add.i32($i333, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 896, 9} true; + assume {:verifier.code 0} true; + $i335 := $trunc.i32.i16($i334); + call {:cexpr "c"} boogie_si_record_i16($i335); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 897, 5} true; + assume {:verifier.code 0} true; + $i332 := $i335; + goto $bb108; +$bb105: + assume !(($i329 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 18} true; + assume {:verifier.code 0} true; + $i330 := $sext.i16.i32($i320); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 20} true; + assume {:verifier.code 0} true; + $i331 := $sgt.i32($i330, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 9} true; + assume {:verifier.code 0} true; + $i332 := $i324; + assume {:branchcond $i331} true; + goto $bb106, $bb107; +$bb106: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 9} true; + assume {:verifier.code 0} true; + assume ($i331 == 1); + goto $bb104; +$bb107: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 9} true; + assume {:verifier.code 0} true; + assume !(($i331 == 1)); + goto $bb108; +$bb108: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 898, 3} true; + assume {:verifier.code 0} true; + $i327 := $i332; + goto $bb102; +$bb109: + assume ($i355 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 9} true; + assume {:verifier.code 0} true; + $i357 := $sext.i16.i32($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 11} true; + assume {:verifier.code 0} true; + $i358 := $slt.i32($i357, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i358} true; + goto $bb112, $bb114; +$bb110: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 905, 7} true; + assume {:verifier.code 0} true; + assume !(($i355 == 1)); + goto $bb111; +$bb111: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 910, 7} true; + assume {:verifier.code 0} true; + $i365 := $sext.i16.i32($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 910, 9} true; + assume {:verifier.code 0} true; + $i366 := $srem.i32($i365, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 910, 7} true; + assume {:verifier.code 0} true; + $i367 := $trunc.i32.i16($i366); + call {:cexpr "a"} boogie_si_record_i16($i367); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 911, 8} true; + assume {:verifier.code 0} true; + $i368 := $sext.i16.i32($i367); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 911, 5} true; + assume {:verifier.code 0} true; + $i369 := $sext.i16.i32($i367); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 911, 5} true; + assume {:verifier.code 0} true; + $i370 := $add.i32($i369, $i368); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 911, 5} true; + assume {:verifier.code 0} true; + $i371 := $trunc.i32.i16($i370); + call {:cexpr "a"} boogie_si_record_i16($i371); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 912, 7} true; + assume {:verifier.code 0} true; + $i372 := $sext.i16.i32($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 912, 9} true; + assume {:verifier.code 0} true; + $i373 := $srem.i32($i372, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 912, 7} true; + assume {:verifier.code 0} true; + $i374 := $trunc.i32.i16($i373); + call {:cexpr "b"} boogie_si_record_i16($i374); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 913, 8} true; + assume {:verifier.code 0} true; + $i375 := $sext.i16.i32($i374); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 913, 5} true; + assume {:verifier.code 0} true; + $i376 := $sext.i16.i32($i374); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 913, 5} true; + assume {:verifier.code 0} true; + $i377 := $add.i32($i376, $i375); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 913, 5} true; + assume {:verifier.code 0} true; + $i378 := $trunc.i32.i16($i377); + call {:cexpr "b"} boogie_si_record_i16($i378); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 915, 8} true; + assume {:verifier.code 0} true; + $i379 := $sext.i16.i32($i356); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 915, 5} true; + assume {:verifier.code 0} true; + $i380 := $sext.i16.i32($i356); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 915, 5} true; + assume {:verifier.code 0} true; + $i381 := $add.i32($i380, $i379); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 915, 5} true; + assume {:verifier.code 0} true; + $i382 := $trunc.i32.i16($i381); + call {:cexpr "c"} boogie_si_record_i16($i382); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 916, 7} true; + assume {:verifier.code 0} true; + $i383 := $sext.i16.i32($i371); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 916, 9} true; + assume {:verifier.code 0} true; + $i384 := $slt.i32($i383, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 916, 7} true; + assume {:verifier.code 0} true; + $i385 := $i382; + assume {:branchcond $i384} true; + goto $bb118, $bb119; +$bb112: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 15} true; + assume {:verifier.code 0} true; + assume ($i358 == 1); + goto $bb113; +$bb113: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 907, 9} true; + assume {:verifier.code 0} true; + $i362 := $sext.i16.i32($i353); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 907, 9} true; + assume {:verifier.code 0} true; + $i363 := $add.i32($i362, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 907, 9} true; + assume {:verifier.code 0} true; + $i364 := $trunc.i32.i16($i363); + call {:cexpr "c"} boogie_si_record_i16($i364); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 908, 5} true; + assume {:verifier.code 0} true; + $i361 := $i364; + goto $bb117; +$bb114: + assume !(($i358 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 18} true; + assume {:verifier.code 0} true; + $i359 := $sext.i16.i32($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 20} true; + assume {:verifier.code 0} true; + $i360 := $sgt.i32($i359, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 9} true; + assume {:verifier.code 0} true; + $i361 := $i353; + assume {:branchcond $i360} true; + goto $bb115, $bb116; +$bb115: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 9} true; + assume {:verifier.code 0} true; + assume ($i360 == 1); + goto $bb113; +$bb116: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 9} true; + assume {:verifier.code 0} true; + assume !(($i360 == 1)); + goto $bb117; +$bb117: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 909, 3} true; + assume {:verifier.code 0} true; + $i356 := $i361; + goto $bb111; +$bb118: + assume ($i384 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 9} true; + assume {:verifier.code 0} true; + $i386 := $sext.i16.i32($i378); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 11} true; + assume {:verifier.code 0} true; + $i387 := $slt.i32($i386, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i387} true; + goto $bb121, $bb123; +$bb119: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 916, 7} true; + assume {:verifier.code 0} true; + assume !(($i384 == 1)); + goto $bb120; +$bb120: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 921, 7} true; + assume {:verifier.code 0} true; + $i394 := $sext.i16.i32($i371); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 921, 9} true; + assume {:verifier.code 0} true; + $i395 := $srem.i32($i394, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 921, 7} true; + assume {:verifier.code 0} true; + $i396 := $trunc.i32.i16($i395); + call {:cexpr "a"} boogie_si_record_i16($i396); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 922, 8} true; + assume {:verifier.code 0} true; + $i397 := $sext.i16.i32($i396); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 922, 5} true; + assume {:verifier.code 0} true; + $i398 := $sext.i16.i32($i396); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 922, 5} true; + assume {:verifier.code 0} true; + $i399 := $add.i32($i398, $i397); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 922, 5} true; + assume {:verifier.code 0} true; + $i400 := $trunc.i32.i16($i399); + call {:cexpr "a"} boogie_si_record_i16($i400); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 923, 7} true; + assume {:verifier.code 0} true; + $i401 := $sext.i16.i32($i378); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 923, 9} true; + assume {:verifier.code 0} true; + $i402 := $srem.i32($i401, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 923, 7} true; + assume {:verifier.code 0} true; + $i403 := $trunc.i32.i16($i402); + call {:cexpr "b"} boogie_si_record_i16($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 924, 8} true; + assume {:verifier.code 0} true; + $i404 := $sext.i16.i32($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 924, 5} true; + assume {:verifier.code 0} true; + $i405 := $sext.i16.i32($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 924, 5} true; + assume {:verifier.code 0} true; + $i406 := $add.i32($i405, $i404); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 924, 5} true; + assume {:verifier.code 0} true; + $i407 := $trunc.i32.i16($i406); + call {:cexpr "b"} boogie_si_record_i16($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 926, 8} true; + assume {:verifier.code 0} true; + $i408 := $sext.i16.i32($i385); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 926, 5} true; + assume {:verifier.code 0} true; + $i409 := $sext.i16.i32($i385); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 926, 5} true; + assume {:verifier.code 0} true; + $i410 := $add.i32($i409, $i408); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 926, 5} true; + assume {:verifier.code 0} true; + $i411 := $trunc.i32.i16($i410); + call {:cexpr "c"} boogie_si_record_i16($i411); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 927, 7} true; + assume {:verifier.code 0} true; + $i412 := $sext.i16.i32($i400); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 927, 9} true; + assume {:verifier.code 0} true; + $i413 := $slt.i32($i412, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 927, 7} true; + assume {:verifier.code 0} true; + $i414 := $i411; + assume {:branchcond $i413} true; + goto $bb127, $bb128; +$bb121: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 15} true; + assume {:verifier.code 0} true; + assume ($i387 == 1); + goto $bb122; +$bb122: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 918, 9} true; + assume {:verifier.code 0} true; + $i391 := $sext.i16.i32($i382); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 918, 9} true; + assume {:verifier.code 0} true; + $i392 := $add.i32($i391, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 918, 9} true; + assume {:verifier.code 0} true; + $i393 := $trunc.i32.i16($i392); + call {:cexpr "c"} boogie_si_record_i16($i393); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 919, 5} true; + assume {:verifier.code 0} true; + $i390 := $i393; + goto $bb126; +$bb123: + assume !(($i387 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 18} true; + assume {:verifier.code 0} true; + $i388 := $sext.i16.i32($i378); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 20} true; + assume {:verifier.code 0} true; + $i389 := $sgt.i32($i388, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 9} true; + assume {:verifier.code 0} true; + $i390 := $i382; + assume {:branchcond $i389} true; + goto $bb124, $bb125; +$bb124: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 9} true; + assume {:verifier.code 0} true; + assume ($i389 == 1); + goto $bb122; +$bb125: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 9} true; + assume {:verifier.code 0} true; + assume !(($i389 == 1)); + goto $bb126; +$bb126: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 920, 3} true; + assume {:verifier.code 0} true; + $i385 := $i390; + goto $bb120; +$bb127: + assume ($i413 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 9} true; + assume {:verifier.code 0} true; + $i415 := $sext.i16.i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 11} true; + assume {:verifier.code 0} true; + $i416 := $slt.i32($i415, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i416} true; + goto $bb130, $bb132; +$bb128: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 927, 7} true; + assume {:verifier.code 0} true; + assume !(($i413 == 1)); + goto $bb129; +$bb129: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 932, 7} true; + assume {:verifier.code 0} true; + $i423 := $sext.i16.i32($i400); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 932, 9} true; + assume {:verifier.code 0} true; + $i424 := $srem.i32($i423, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 932, 7} true; + assume {:verifier.code 0} true; + $i425 := $trunc.i32.i16($i424); + call {:cexpr "a"} boogie_si_record_i16($i425); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 933, 8} true; + assume {:verifier.code 0} true; + $i426 := $sext.i16.i32($i425); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 933, 5} true; + assume {:verifier.code 0} true; + $i427 := $sext.i16.i32($i425); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 933, 5} true; + assume {:verifier.code 0} true; + $i428 := $add.i32($i427, $i426); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 933, 5} true; + assume {:verifier.code 0} true; + $i429 := $trunc.i32.i16($i428); + call {:cexpr "a"} boogie_si_record_i16($i429); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 934, 7} true; + assume {:verifier.code 0} true; + $i430 := $sext.i16.i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 934, 9} true; + assume {:verifier.code 0} true; + $i431 := $srem.i32($i430, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 934, 7} true; + assume {:verifier.code 0} true; + $i432 := $trunc.i32.i16($i431); + call {:cexpr "b"} boogie_si_record_i16($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 935, 8} true; + assume {:verifier.code 0} true; + $i433 := $sext.i16.i32($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 935, 5} true; + assume {:verifier.code 0} true; + $i434 := $sext.i16.i32($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 935, 5} true; + assume {:verifier.code 0} true; + $i435 := $add.i32($i434, $i433); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 935, 5} true; + assume {:verifier.code 0} true; + $i436 := $trunc.i32.i16($i435); + call {:cexpr "b"} boogie_si_record_i16($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 937, 8} true; + assume {:verifier.code 0} true; + $i437 := $sext.i16.i32($i414); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 937, 5} true; + assume {:verifier.code 0} true; + $i438 := $sext.i16.i32($i414); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 937, 5} true; + assume {:verifier.code 0} true; + $i439 := $add.i32($i438, $i437); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 937, 5} true; + assume {:verifier.code 0} true; + $i440 := $trunc.i32.i16($i439); + call {:cexpr "c"} boogie_si_record_i16($i440); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 938, 7} true; + assume {:verifier.code 0} true; + $i441 := $sext.i16.i32($i429); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 938, 9} true; + assume {:verifier.code 0} true; + $i442 := $slt.i32($i441, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 938, 7} true; + assume {:verifier.code 0} true; + $i443 := $i440; + assume {:branchcond $i442} true; + goto $bb136, $bb137; +$bb130: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 15} true; + assume {:verifier.code 0} true; + assume ($i416 == 1); + goto $bb131; +$bb131: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 929, 9} true; + assume {:verifier.code 0} true; + $i420 := $sext.i16.i32($i411); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 929, 9} true; + assume {:verifier.code 0} true; + $i421 := $add.i32($i420, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 929, 9} true; + assume {:verifier.code 0} true; + $i422 := $trunc.i32.i16($i421); + call {:cexpr "c"} boogie_si_record_i16($i422); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 930, 5} true; + assume {:verifier.code 0} true; + $i419 := $i422; + goto $bb135; +$bb132: + assume !(($i416 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 18} true; + assume {:verifier.code 0} true; + $i417 := $sext.i16.i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 20} true; + assume {:verifier.code 0} true; + $i418 := $sgt.i32($i417, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 9} true; + assume {:verifier.code 0} true; + $i419 := $i411; + assume {:branchcond $i418} true; + goto $bb133, $bb134; +$bb133: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 9} true; + assume {:verifier.code 0} true; + assume ($i418 == 1); + goto $bb131; +$bb134: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 9} true; + assume {:verifier.code 0} true; + assume !(($i418 == 1)); + goto $bb135; +$bb135: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 931, 3} true; + assume {:verifier.code 0} true; + $i414 := $i419; + goto $bb129; +$bb136: + assume ($i442 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 9} true; + assume {:verifier.code 0} true; + $i444 := $sext.i16.i32($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 11} true; + assume {:verifier.code 0} true; + $i445 := $slt.i32($i444, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i445} true; + goto $bb139, $bb141; +$bb137: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 938, 7} true; + assume {:verifier.code 0} true; + assume !(($i442 == 1)); + goto $bb138; +$bb138: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 948, 3} true; + assume {:verifier.code 0} true; + $r := $i443; + $exn := false; + return; +$bb139: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 15} true; + assume {:verifier.code 0} true; + assume ($i445 == 1); + goto $bb140; +$bb140: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 940, 9} true; + assume {:verifier.code 0} true; + $i449 := $sext.i16.i32($i440); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 940, 9} true; + assume {:verifier.code 0} true; + $i450 := $add.i32($i449, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 940, 9} true; + assume {:verifier.code 0} true; + $i451 := $trunc.i32.i16($i450); + call {:cexpr "c"} boogie_si_record_i16($i451); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 941, 5} true; + assume {:verifier.code 0} true; + $i448 := $i451; + goto $bb144; +$bb141: + assume !(($i445 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 18} true; + assume {:verifier.code 0} true; + $i446 := $sext.i16.i32($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 20} true; + assume {:verifier.code 0} true; + $i447 := $sgt.i32($i446, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 9} true; + assume {:verifier.code 0} true; + $i448 := $i440; + assume {:branchcond $i447} true; + goto $bb142, $bb143; +$bb142: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 9} true; + assume {:verifier.code 0} true; + assume ($i447 == 1); + goto $bb140; +$bb143: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 9} true; + assume {:verifier.code 0} true; + assume !(($i447 == 1)); + goto $bb144; +$bb144: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 942, 3} true; + assume {:verifier.code 0} true; + $i443 := $i448; + goto $bb138; +} +const __SMACK_and8: ref; +axiom (__SMACK_and8 == $sub.ref(0, 19604)); +procedure __SMACK_and8($i0: i8, $i1: i8) + returns ($r: i8) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i8; + var $i6: i32; + var $i7: i1; + var $i9: i32; + var $i10: i1; + var $i11: i32; + var $i12: i1; + var $i14: i32; + var $i15: i32; + var $i16: i8; + var $i13: i8; + var $i8: i8; + var $i17: i32; + var $i18: i32; + var $i19: i8; + var $i20: i32; + var $i21: i32; + var $i22: i32; + var $i23: i8; + var $i24: i32; + var $i25: i32; + var $i26: i8; + var $i27: i32; + var $i28: i32; + var $i29: i32; + var $i30: i8; + var $i31: i32; + var $i32: i32; + var $i33: i32; + var $i34: i8; + var $i35: i32; + var $i36: i1; + var $i38: i32; + var $i39: i1; + var $i40: i32; + var $i41: i1; + var $i43: i32; + var $i44: i32; + var $i45: i8; + var $i42: i8; + var $i37: i8; + var $i46: i32; + var $i47: i32; + var $i48: i8; + var $i49: i32; + var $i50: i32; + var $i51: i32; + var $i52: i8; + var $i53: i32; + var $i54: i32; + var $i55: i8; + var $i56: i32; + var $i57: i32; + var $i58: i32; + var $i59: i8; + var $i60: i32; + var $i61: i32; + var $i62: i32; + var $i63: i8; + var $i64: i32; + var $i65: i1; + var $i67: i32; + var $i68: i1; + var $i69: i32; + var $i70: i1; + var $i72: i32; + var $i73: i32; + var $i74: i8; + var $i71: i8; + var $i66: i8; + var $i75: i32; + var $i76: i32; + var $i77: i8; + var $i78: i32; + var $i79: i32; + var $i80: i32; + var $i81: i8; + var $i82: i32; + var $i83: i32; + var $i84: i8; + var $i85: i32; + var $i86: i32; + var $i87: i32; + var $i88: i8; + var $i89: i32; + var $i90: i32; + var $i91: i32; + var $i92: i8; + var $i93: i32; + var $i94: i1; + var $i96: i32; + var $i97: i1; + var $i98: i32; + var $i99: i1; + var $i101: i32; + var $i102: i32; + var $i103: i8; + var $i100: i8; + var $i95: i8; + var $i104: i32; + var $i105: i32; + var $i106: i8; + var $i107: i32; + var $i108: i32; + var $i109: i32; + var $i110: i8; + var $i111: i32; + var $i112: i32; + var $i113: i8; + var $i114: i32; + var $i115: i32; + var $i116: i32; + var $i117: i8; + var $i118: i32; + var $i119: i32; + var $i120: i32; + var $i121: i8; + var $i122: i32; + var $i123: i1; + var $i125: i32; + var $i126: i1; + var $i127: i32; + var $i128: i1; + var $i130: i32; + var $i131: i32; + var $i132: i8; + var $i129: i8; + var $i124: i8; + var $i133: i32; + var $i134: i32; + var $i135: i8; + var $i136: i32; + var $i137: i32; + var $i138: i32; + var $i139: i8; + var $i140: i32; + var $i141: i32; + var $i142: i8; + var $i143: i32; + var $i144: i32; + var $i145: i32; + var $i146: i8; + var $i147: i32; + var $i148: i32; + var $i149: i32; + var $i150: i8; + var $i151: i32; + var $i152: i1; + var $i154: i32; + var $i155: i1; + var $i156: i32; + var $i157: i1; + var $i159: i32; + var $i160: i32; + var $i161: i8; + var $i158: i8; + var $i153: i8; + var $i162: i32; + var $i163: i32; + var $i164: i8; + var $i165: i32; + var $i166: i32; + var $i167: i32; + var $i168: i8; + var $i169: i32; + var $i170: i32; + var $i171: i8; + var $i172: i32; + var $i173: i32; + var $i174: i32; + var $i175: i8; + var $i176: i32; + var $i177: i32; + var $i178: i32; + var $i179: i8; + var $i180: i32; + var $i181: i1; + var $i183: i32; + var $i184: i1; + var $i185: i32; + var $i186: i1; + var $i188: i32; + var $i189: i32; + var $i190: i8; + var $i187: i8; + var $i182: i8; + var $i191: i32; + var $i192: i32; + var $i193: i8; + var $i194: i32; + var $i195: i32; + var $i196: i32; + var $i197: i8; + var $i198: i32; + var $i199: i32; + var $i200: i8; + var $i201: i32; + var $i202: i32; + var $i203: i32; + var $i204: i8; + var $i205: i32; + var $i206: i32; + var $i207: i32; + var $i208: i8; + var $i209: i32; + var $i210: i1; + var $i212: i32; + var $i213: i1; + var $i214: i32; + var $i215: i1; + var $i217: i32; + var $i218: i32; + var $i219: i8; + var $i216: i8; + var $i211: i8; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 8} true; + assume {:verifier.code 0} true; + call {:cexpr "__SMACK_and8:arg:a"} boogie_si_record_i8($i0); + call {:cexpr "__SMACK_and8:arg:b"} boogie_si_record_i8($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 8} true; + assume {:verifier.code 0} true; + $i2 := $sext.i8.i32(0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 5} true; + assume {:verifier.code 0} true; + $i3 := $sext.i8.i32(0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 5} true; + assume {:verifier.code 0} true; + $i4 := $add.i32($i3, $i2); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 5} true; + assume {:verifier.code 0} true; + $i5 := $trunc.i32.i8($i4); + call {:cexpr "c"} boogie_si_record_i8($i5); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 955, 7} true; + assume {:verifier.code 0} true; + $i6 := $sext.i8.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 955, 9} true; + assume {:verifier.code 0} true; + $i7 := $slt.i32($i6, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 955, 7} true; + assume {:verifier.code 0} true; + $i8 := $i5; + assume {:branchcond $i7} true; + goto $bb1, $bb2; +$bb1: + assume ($i7 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 9} true; + assume {:verifier.code 0} true; + $i9 := $sext.i8.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 11} true; + assume {:verifier.code 0} true; + $i10 := $slt.i32($i9, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i10} true; + goto $bb4, $bb6; +$bb2: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 955, 7} true; + assume {:verifier.code 0} true; + assume !(($i7 == 1)); + goto $bb3; +$bb3: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 960, 7} true; + assume {:verifier.code 0} true; + $i17 := $sext.i8.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 960, 9} true; + assume {:verifier.code 0} true; + $i18 := $srem.i32($i17, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 960, 7} true; + assume {:verifier.code 0} true; + $i19 := $trunc.i32.i8($i18); + call {:cexpr "a"} boogie_si_record_i8($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 961, 8} true; + assume {:verifier.code 0} true; + $i20 := $sext.i8.i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 961, 5} true; + assume {:verifier.code 0} true; + $i21 := $sext.i8.i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 961, 5} true; + assume {:verifier.code 0} true; + $i22 := $add.i32($i21, $i20); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 961, 5} true; + assume {:verifier.code 0} true; + $i23 := $trunc.i32.i8($i22); + call {:cexpr "a"} boogie_si_record_i8($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 962, 7} true; + assume {:verifier.code 0} true; + $i24 := $sext.i8.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 962, 9} true; + assume {:verifier.code 0} true; + $i25 := $srem.i32($i24, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 962, 7} true; + assume {:verifier.code 0} true; + $i26 := $trunc.i32.i8($i25); + call {:cexpr "b"} boogie_si_record_i8($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 963, 8} true; + assume {:verifier.code 0} true; + $i27 := $sext.i8.i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 963, 5} true; + assume {:verifier.code 0} true; + $i28 := $sext.i8.i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 963, 5} true; + assume {:verifier.code 0} true; + $i29 := $add.i32($i28, $i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 963, 5} true; + assume {:verifier.code 0} true; + $i30 := $trunc.i32.i8($i29); + call {:cexpr "b"} boogie_si_record_i8($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 965, 8} true; + assume {:verifier.code 0} true; + $i31 := $sext.i8.i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 965, 5} true; + assume {:verifier.code 0} true; + $i32 := $sext.i8.i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 965, 5} true; + assume {:verifier.code 0} true; + $i33 := $add.i32($i32, $i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 965, 5} true; + assume {:verifier.code 0} true; + $i34 := $trunc.i32.i8($i33); + call {:cexpr "c"} boogie_si_record_i8($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 966, 7} true; + assume {:verifier.code 0} true; + $i35 := $sext.i8.i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 966, 9} true; + assume {:verifier.code 0} true; + $i36 := $slt.i32($i35, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 966, 7} true; + assume {:verifier.code 0} true; + $i37 := $i34; + assume {:branchcond $i36} true; + goto $bb10, $bb11; +$bb4: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 15} true; + assume {:verifier.code 0} true; + assume ($i10 == 1); + goto $bb5; +$bb5: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 957, 9} true; + assume {:verifier.code 0} true; + $i14 := $sext.i8.i32($i5); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 957, 9} true; + assume {:verifier.code 0} true; + $i15 := $add.i32($i14, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 957, 9} true; + assume {:verifier.code 0} true; + $i16 := $trunc.i32.i8($i15); + call {:cexpr "c"} boogie_si_record_i8($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 958, 5} true; + assume {:verifier.code 0} true; + $i13 := $i16; + goto $bb9; +$bb6: + assume !(($i10 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 18} true; + assume {:verifier.code 0} true; + $i11 := $sext.i8.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 20} true; + assume {:verifier.code 0} true; + $i12 := $sgt.i32($i11, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 9} true; + assume {:verifier.code 0} true; + $i13 := $i5; + assume {:branchcond $i12} true; + goto $bb7, $bb8; +$bb7: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 9} true; + assume {:verifier.code 0} true; + assume ($i12 == 1); + goto $bb5; +$bb8: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 9} true; + assume {:verifier.code 0} true; + assume !(($i12 == 1)); + goto $bb9; +$bb9: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 959, 3} true; + assume {:verifier.code 0} true; + $i8 := $i13; + goto $bb3; +$bb10: + assume ($i36 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 9} true; + assume {:verifier.code 0} true; + $i38 := $sext.i8.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 11} true; + assume {:verifier.code 0} true; + $i39 := $slt.i32($i38, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i39} true; + goto $bb13, $bb15; +$bb11: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 966, 7} true; + assume {:verifier.code 0} true; + assume !(($i36 == 1)); + goto $bb12; +$bb12: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 971, 7} true; + assume {:verifier.code 0} true; + $i46 := $sext.i8.i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 971, 9} true; + assume {:verifier.code 0} true; + $i47 := $srem.i32($i46, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 971, 7} true; + assume {:verifier.code 0} true; + $i48 := $trunc.i32.i8($i47); + call {:cexpr "a"} boogie_si_record_i8($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 972, 8} true; + assume {:verifier.code 0} true; + $i49 := $sext.i8.i32($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 972, 5} true; + assume {:verifier.code 0} true; + $i50 := $sext.i8.i32($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 972, 5} true; + assume {:verifier.code 0} true; + $i51 := $add.i32($i50, $i49); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 972, 5} true; + assume {:verifier.code 0} true; + $i52 := $trunc.i32.i8($i51); + call {:cexpr "a"} boogie_si_record_i8($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 973, 7} true; + assume {:verifier.code 0} true; + $i53 := $sext.i8.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 973, 9} true; + assume {:verifier.code 0} true; + $i54 := $srem.i32($i53, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 973, 7} true; + assume {:verifier.code 0} true; + $i55 := $trunc.i32.i8($i54); + call {:cexpr "b"} boogie_si_record_i8($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 974, 8} true; + assume {:verifier.code 0} true; + $i56 := $sext.i8.i32($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 974, 5} true; + assume {:verifier.code 0} true; + $i57 := $sext.i8.i32($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 974, 5} true; + assume {:verifier.code 0} true; + $i58 := $add.i32($i57, $i56); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 974, 5} true; + assume {:verifier.code 0} true; + $i59 := $trunc.i32.i8($i58); + call {:cexpr "b"} boogie_si_record_i8($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 976, 8} true; + assume {:verifier.code 0} true; + $i60 := $sext.i8.i32($i37); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 976, 5} true; + assume {:verifier.code 0} true; + $i61 := $sext.i8.i32($i37); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 976, 5} true; + assume {:verifier.code 0} true; + $i62 := $add.i32($i61, $i60); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 976, 5} true; + assume {:verifier.code 0} true; + $i63 := $trunc.i32.i8($i62); + call {:cexpr "c"} boogie_si_record_i8($i63); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 977, 7} true; + assume {:verifier.code 0} true; + $i64 := $sext.i8.i32($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 977, 9} true; + assume {:verifier.code 0} true; + $i65 := $slt.i32($i64, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 977, 7} true; + assume {:verifier.code 0} true; + $i66 := $i63; + assume {:branchcond $i65} true; + goto $bb19, $bb20; +$bb13: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 15} true; + assume {:verifier.code 0} true; + assume ($i39 == 1); + goto $bb14; +$bb14: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 968, 9} true; + assume {:verifier.code 0} true; + $i43 := $sext.i8.i32($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 968, 9} true; + assume {:verifier.code 0} true; + $i44 := $add.i32($i43, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 968, 9} true; + assume {:verifier.code 0} true; + $i45 := $trunc.i32.i8($i44); + call {:cexpr "c"} boogie_si_record_i8($i45); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 969, 5} true; + assume {:verifier.code 0} true; + $i42 := $i45; + goto $bb18; +$bb15: + assume !(($i39 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 18} true; + assume {:verifier.code 0} true; + $i40 := $sext.i8.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 20} true; + assume {:verifier.code 0} true; + $i41 := $sgt.i32($i40, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 9} true; + assume {:verifier.code 0} true; + $i42 := $i34; + assume {:branchcond $i41} true; + goto $bb16, $bb17; +$bb16: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 9} true; + assume {:verifier.code 0} true; + assume ($i41 == 1); + goto $bb14; +$bb17: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 9} true; + assume {:verifier.code 0} true; + assume !(($i41 == 1)); + goto $bb18; +$bb18: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 970, 3} true; + assume {:verifier.code 0} true; + $i37 := $i42; + goto $bb12; +$bb19: + assume ($i65 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 9} true; + assume {:verifier.code 0} true; + $i67 := $sext.i8.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 11} true; + assume {:verifier.code 0} true; + $i68 := $slt.i32($i67, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i68} true; + goto $bb22, $bb24; +$bb20: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 977, 7} true; + assume {:verifier.code 0} true; + assume !(($i65 == 1)); + goto $bb21; +$bb21: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 982, 7} true; + assume {:verifier.code 0} true; + $i75 := $sext.i8.i32($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 982, 9} true; + assume {:verifier.code 0} true; + $i76 := $srem.i32($i75, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 982, 7} true; + assume {:verifier.code 0} true; + $i77 := $trunc.i32.i8($i76); + call {:cexpr "a"} boogie_si_record_i8($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 983, 8} true; + assume {:verifier.code 0} true; + $i78 := $sext.i8.i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 983, 5} true; + assume {:verifier.code 0} true; + $i79 := $sext.i8.i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 983, 5} true; + assume {:verifier.code 0} true; + $i80 := $add.i32($i79, $i78); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 983, 5} true; + assume {:verifier.code 0} true; + $i81 := $trunc.i32.i8($i80); + call {:cexpr "a"} boogie_si_record_i8($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 984, 7} true; + assume {:verifier.code 0} true; + $i82 := $sext.i8.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 984, 9} true; + assume {:verifier.code 0} true; + $i83 := $srem.i32($i82, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 984, 7} true; + assume {:verifier.code 0} true; + $i84 := $trunc.i32.i8($i83); + call {:cexpr "b"} boogie_si_record_i8($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 985, 8} true; + assume {:verifier.code 0} true; + $i85 := $sext.i8.i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 985, 5} true; + assume {:verifier.code 0} true; + $i86 := $sext.i8.i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 985, 5} true; + assume {:verifier.code 0} true; + $i87 := $add.i32($i86, $i85); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 985, 5} true; + assume {:verifier.code 0} true; + $i88 := $trunc.i32.i8($i87); + call {:cexpr "b"} boogie_si_record_i8($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 987, 8} true; + assume {:verifier.code 0} true; + $i89 := $sext.i8.i32($i66); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 987, 5} true; + assume {:verifier.code 0} true; + $i90 := $sext.i8.i32($i66); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 987, 5} true; + assume {:verifier.code 0} true; + $i91 := $add.i32($i90, $i89); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 987, 5} true; + assume {:verifier.code 0} true; + $i92 := $trunc.i32.i8($i91); + call {:cexpr "c"} boogie_si_record_i8($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 988, 7} true; + assume {:verifier.code 0} true; + $i93 := $sext.i8.i32($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 988, 9} true; + assume {:verifier.code 0} true; + $i94 := $slt.i32($i93, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 988, 7} true; + assume {:verifier.code 0} true; + $i95 := $i92; + assume {:branchcond $i94} true; + goto $bb28, $bb29; +$bb22: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 15} true; + assume {:verifier.code 0} true; + assume ($i68 == 1); + goto $bb23; +$bb23: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 979, 9} true; + assume {:verifier.code 0} true; + $i72 := $sext.i8.i32($i63); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 979, 9} true; + assume {:verifier.code 0} true; + $i73 := $add.i32($i72, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 979, 9} true; + assume {:verifier.code 0} true; + $i74 := $trunc.i32.i8($i73); + call {:cexpr "c"} boogie_si_record_i8($i74); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 980, 5} true; + assume {:verifier.code 0} true; + $i71 := $i74; + goto $bb27; +$bb24: + assume !(($i68 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 18} true; + assume {:verifier.code 0} true; + $i69 := $sext.i8.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 20} true; + assume {:verifier.code 0} true; + $i70 := $sgt.i32($i69, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 9} true; + assume {:verifier.code 0} true; + $i71 := $i63; + assume {:branchcond $i70} true; + goto $bb25, $bb26; +$bb25: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 9} true; + assume {:verifier.code 0} true; + assume ($i70 == 1); + goto $bb23; +$bb26: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 9} true; + assume {:verifier.code 0} true; + assume !(($i70 == 1)); + goto $bb27; +$bb27: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 981, 3} true; + assume {:verifier.code 0} true; + $i66 := $i71; + goto $bb21; +$bb28: + assume ($i94 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 9} true; + assume {:verifier.code 0} true; + $i96 := $sext.i8.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 11} true; + assume {:verifier.code 0} true; + $i97 := $slt.i32($i96, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i97} true; + goto $bb31, $bb33; +$bb29: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 988, 7} true; + assume {:verifier.code 0} true; + assume !(($i94 == 1)); + goto $bb30; +$bb30: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 993, 7} true; + assume {:verifier.code 0} true; + $i104 := $sext.i8.i32($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 993, 9} true; + assume {:verifier.code 0} true; + $i105 := $srem.i32($i104, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 993, 7} true; + assume {:verifier.code 0} true; + $i106 := $trunc.i32.i8($i105); + call {:cexpr "a"} boogie_si_record_i8($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 994, 8} true; + assume {:verifier.code 0} true; + $i107 := $sext.i8.i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 994, 5} true; + assume {:verifier.code 0} true; + $i108 := $sext.i8.i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 994, 5} true; + assume {:verifier.code 0} true; + $i109 := $add.i32($i108, $i107); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 994, 5} true; + assume {:verifier.code 0} true; + $i110 := $trunc.i32.i8($i109); + call {:cexpr "a"} boogie_si_record_i8($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 995, 7} true; + assume {:verifier.code 0} true; + $i111 := $sext.i8.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 995, 9} true; + assume {:verifier.code 0} true; + $i112 := $srem.i32($i111, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 995, 7} true; + assume {:verifier.code 0} true; + $i113 := $trunc.i32.i8($i112); + call {:cexpr "b"} boogie_si_record_i8($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 996, 8} true; + assume {:verifier.code 0} true; + $i114 := $sext.i8.i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 996, 5} true; + assume {:verifier.code 0} true; + $i115 := $sext.i8.i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 996, 5} true; + assume {:verifier.code 0} true; + $i116 := $add.i32($i115, $i114); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 996, 5} true; + assume {:verifier.code 0} true; + $i117 := $trunc.i32.i8($i116); + call {:cexpr "b"} boogie_si_record_i8($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 998, 8} true; + assume {:verifier.code 0} true; + $i118 := $sext.i8.i32($i95); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 998, 5} true; + assume {:verifier.code 0} true; + $i119 := $sext.i8.i32($i95); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 998, 5} true; + assume {:verifier.code 0} true; + $i120 := $add.i32($i119, $i118); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 998, 5} true; + assume {:verifier.code 0} true; + $i121 := $trunc.i32.i8($i120); + call {:cexpr "c"} boogie_si_record_i8($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 999, 7} true; + assume {:verifier.code 0} true; + $i122 := $sext.i8.i32($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 999, 9} true; + assume {:verifier.code 0} true; + $i123 := $slt.i32($i122, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 999, 7} true; + assume {:verifier.code 0} true; + $i124 := $i121; + assume {:branchcond $i123} true; + goto $bb37, $bb38; +$bb31: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 15} true; + assume {:verifier.code 0} true; + assume ($i97 == 1); + goto $bb32; +$bb32: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 990, 9} true; + assume {:verifier.code 0} true; + $i101 := $sext.i8.i32($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 990, 9} true; + assume {:verifier.code 0} true; + $i102 := $add.i32($i101, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 990, 9} true; + assume {:verifier.code 0} true; + $i103 := $trunc.i32.i8($i102); + call {:cexpr "c"} boogie_si_record_i8($i103); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 991, 5} true; + assume {:verifier.code 0} true; + $i100 := $i103; + goto $bb36; +$bb33: + assume !(($i97 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 18} true; + assume {:verifier.code 0} true; + $i98 := $sext.i8.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 20} true; + assume {:verifier.code 0} true; + $i99 := $sgt.i32($i98, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 9} true; + assume {:verifier.code 0} true; + $i100 := $i92; + assume {:branchcond $i99} true; + goto $bb34, $bb35; +$bb34: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 9} true; + assume {:verifier.code 0} true; + assume ($i99 == 1); + goto $bb32; +$bb35: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 9} true; + assume {:verifier.code 0} true; + assume !(($i99 == 1)); + goto $bb36; +$bb36: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 992, 3} true; + assume {:verifier.code 0} true; + $i95 := $i100; + goto $bb30; +$bb37: + assume ($i123 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 9} true; + assume {:verifier.code 0} true; + $i125 := $sext.i8.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 11} true; + assume {:verifier.code 0} true; + $i126 := $slt.i32($i125, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i126} true; + goto $bb40, $bb42; +$bb38: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 999, 7} true; + assume {:verifier.code 0} true; + assume !(($i123 == 1)); + goto $bb39; +$bb39: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1004, 7} true; + assume {:verifier.code 0} true; + $i133 := $sext.i8.i32($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1004, 9} true; + assume {:verifier.code 0} true; + $i134 := $srem.i32($i133, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1004, 7} true; + assume {:verifier.code 0} true; + $i135 := $trunc.i32.i8($i134); + call {:cexpr "a"} boogie_si_record_i8($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1005, 8} true; + assume {:verifier.code 0} true; + $i136 := $sext.i8.i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1005, 5} true; + assume {:verifier.code 0} true; + $i137 := $sext.i8.i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1005, 5} true; + assume {:verifier.code 0} true; + $i138 := $add.i32($i137, $i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1005, 5} true; + assume {:verifier.code 0} true; + $i139 := $trunc.i32.i8($i138); + call {:cexpr "a"} boogie_si_record_i8($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1006, 7} true; + assume {:verifier.code 0} true; + $i140 := $sext.i8.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1006, 9} true; + assume {:verifier.code 0} true; + $i141 := $srem.i32($i140, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1006, 7} true; + assume {:verifier.code 0} true; + $i142 := $trunc.i32.i8($i141); + call {:cexpr "b"} boogie_si_record_i8($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1007, 8} true; + assume {:verifier.code 0} true; + $i143 := $sext.i8.i32($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1007, 5} true; + assume {:verifier.code 0} true; + $i144 := $sext.i8.i32($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1007, 5} true; + assume {:verifier.code 0} true; + $i145 := $add.i32($i144, $i143); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1007, 5} true; + assume {:verifier.code 0} true; + $i146 := $trunc.i32.i8($i145); + call {:cexpr "b"} boogie_si_record_i8($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1009, 8} true; + assume {:verifier.code 0} true; + $i147 := $sext.i8.i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1009, 5} true; + assume {:verifier.code 0} true; + $i148 := $sext.i8.i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1009, 5} true; + assume {:verifier.code 0} true; + $i149 := $add.i32($i148, $i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1009, 5} true; + assume {:verifier.code 0} true; + $i150 := $trunc.i32.i8($i149); + call {:cexpr "c"} boogie_si_record_i8($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1010, 7} true; + assume {:verifier.code 0} true; + $i151 := $sext.i8.i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1010, 9} true; + assume {:verifier.code 0} true; + $i152 := $slt.i32($i151, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1010, 7} true; + assume {:verifier.code 0} true; + $i153 := $i150; + assume {:branchcond $i152} true; + goto $bb46, $bb47; +$bb40: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 15} true; + assume {:verifier.code 0} true; + assume ($i126 == 1); + goto $bb41; +$bb41: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1001, 9} true; + assume {:verifier.code 0} true; + $i130 := $sext.i8.i32($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1001, 9} true; + assume {:verifier.code 0} true; + $i131 := $add.i32($i130, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1001, 9} true; + assume {:verifier.code 0} true; + $i132 := $trunc.i32.i8($i131); + call {:cexpr "c"} boogie_si_record_i8($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1002, 5} true; + assume {:verifier.code 0} true; + $i129 := $i132; + goto $bb45; +$bb42: + assume !(($i126 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 18} true; + assume {:verifier.code 0} true; + $i127 := $sext.i8.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 20} true; + assume {:verifier.code 0} true; + $i128 := $sgt.i32($i127, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 9} true; + assume {:verifier.code 0} true; + $i129 := $i121; + assume {:branchcond $i128} true; + goto $bb43, $bb44; +$bb43: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 9} true; + assume {:verifier.code 0} true; + assume ($i128 == 1); + goto $bb41; +$bb44: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 9} true; + assume {:verifier.code 0} true; + assume !(($i128 == 1)); + goto $bb45; +$bb45: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1003, 3} true; + assume {:verifier.code 0} true; + $i124 := $i129; + goto $bb39; +$bb46: + assume ($i152 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 9} true; + assume {:verifier.code 0} true; + $i154 := $sext.i8.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 11} true; + assume {:verifier.code 0} true; + $i155 := $slt.i32($i154, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i155} true; + goto $bb49, $bb51; +$bb47: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1010, 7} true; + assume {:verifier.code 0} true; + assume !(($i152 == 1)); + goto $bb48; +$bb48: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1015, 7} true; + assume {:verifier.code 0} true; + $i162 := $sext.i8.i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1015, 9} true; + assume {:verifier.code 0} true; + $i163 := $srem.i32($i162, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1015, 7} true; + assume {:verifier.code 0} true; + $i164 := $trunc.i32.i8($i163); + call {:cexpr "a"} boogie_si_record_i8($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1016, 8} true; + assume {:verifier.code 0} true; + $i165 := $sext.i8.i32($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1016, 5} true; + assume {:verifier.code 0} true; + $i166 := $sext.i8.i32($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1016, 5} true; + assume {:verifier.code 0} true; + $i167 := $add.i32($i166, $i165); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1016, 5} true; + assume {:verifier.code 0} true; + $i168 := $trunc.i32.i8($i167); + call {:cexpr "a"} boogie_si_record_i8($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1017, 7} true; + assume {:verifier.code 0} true; + $i169 := $sext.i8.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1017, 9} true; + assume {:verifier.code 0} true; + $i170 := $srem.i32($i169, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1017, 7} true; + assume {:verifier.code 0} true; + $i171 := $trunc.i32.i8($i170); + call {:cexpr "b"} boogie_si_record_i8($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1018, 8} true; + assume {:verifier.code 0} true; + $i172 := $sext.i8.i32($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1018, 5} true; + assume {:verifier.code 0} true; + $i173 := $sext.i8.i32($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1018, 5} true; + assume {:verifier.code 0} true; + $i174 := $add.i32($i173, $i172); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1018, 5} true; + assume {:verifier.code 0} true; + $i175 := $trunc.i32.i8($i174); + call {:cexpr "b"} boogie_si_record_i8($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1020, 8} true; + assume {:verifier.code 0} true; + $i176 := $sext.i8.i32($i153); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1020, 5} true; + assume {:verifier.code 0} true; + $i177 := $sext.i8.i32($i153); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1020, 5} true; + assume {:verifier.code 0} true; + $i178 := $add.i32($i177, $i176); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1020, 5} true; + assume {:verifier.code 0} true; + $i179 := $trunc.i32.i8($i178); + call {:cexpr "c"} boogie_si_record_i8($i179); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1021, 7} true; + assume {:verifier.code 0} true; + $i180 := $sext.i8.i32($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1021, 9} true; + assume {:verifier.code 0} true; + $i181 := $slt.i32($i180, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1021, 7} true; + assume {:verifier.code 0} true; + $i182 := $i179; + assume {:branchcond $i181} true; + goto $bb55, $bb56; +$bb49: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 15} true; + assume {:verifier.code 0} true; + assume ($i155 == 1); + goto $bb50; +$bb50: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1012, 9} true; + assume {:verifier.code 0} true; + $i159 := $sext.i8.i32($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1012, 9} true; + assume {:verifier.code 0} true; + $i160 := $add.i32($i159, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1012, 9} true; + assume {:verifier.code 0} true; + $i161 := $trunc.i32.i8($i160); + call {:cexpr "c"} boogie_si_record_i8($i161); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1013, 5} true; + assume {:verifier.code 0} true; + $i158 := $i161; + goto $bb54; +$bb51: + assume !(($i155 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 18} true; + assume {:verifier.code 0} true; + $i156 := $sext.i8.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 20} true; + assume {:verifier.code 0} true; + $i157 := $sgt.i32($i156, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 9} true; + assume {:verifier.code 0} true; + $i158 := $i150; + assume {:branchcond $i157} true; + goto $bb52, $bb53; +$bb52: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 9} true; + assume {:verifier.code 0} true; + assume ($i157 == 1); + goto $bb50; +$bb53: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 9} true; + assume {:verifier.code 0} true; + assume !(($i157 == 1)); + goto $bb54; +$bb54: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1014, 3} true; + assume {:verifier.code 0} true; + $i153 := $i158; + goto $bb48; +$bb55: + assume ($i181 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 9} true; + assume {:verifier.code 0} true; + $i183 := $sext.i8.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 11} true; + assume {:verifier.code 0} true; + $i184 := $slt.i32($i183, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i184} true; + goto $bb58, $bb60; +$bb56: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1021, 7} true; + assume {:verifier.code 0} true; + assume !(($i181 == 1)); + goto $bb57; +$bb57: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1026, 7} true; + assume {:verifier.code 0} true; + $i191 := $sext.i8.i32($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1026, 9} true; + assume {:verifier.code 0} true; + $i192 := $srem.i32($i191, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1026, 7} true; + assume {:verifier.code 0} true; + $i193 := $trunc.i32.i8($i192); + call {:cexpr "a"} boogie_si_record_i8($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1027, 8} true; + assume {:verifier.code 0} true; + $i194 := $sext.i8.i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1027, 5} true; + assume {:verifier.code 0} true; + $i195 := $sext.i8.i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1027, 5} true; + assume {:verifier.code 0} true; + $i196 := $add.i32($i195, $i194); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1027, 5} true; + assume {:verifier.code 0} true; + $i197 := $trunc.i32.i8($i196); + call {:cexpr "a"} boogie_si_record_i8($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1028, 7} true; + assume {:verifier.code 0} true; + $i198 := $sext.i8.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1028, 9} true; + assume {:verifier.code 0} true; + $i199 := $srem.i32($i198, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1028, 7} true; + assume {:verifier.code 0} true; + $i200 := $trunc.i32.i8($i199); + call {:cexpr "b"} boogie_si_record_i8($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1029, 8} true; + assume {:verifier.code 0} true; + $i201 := $sext.i8.i32($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1029, 5} true; + assume {:verifier.code 0} true; + $i202 := $sext.i8.i32($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1029, 5} true; + assume {:verifier.code 0} true; + $i203 := $add.i32($i202, $i201); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1029, 5} true; + assume {:verifier.code 0} true; + $i204 := $trunc.i32.i8($i203); + call {:cexpr "b"} boogie_si_record_i8($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1031, 8} true; + assume {:verifier.code 0} true; + $i205 := $sext.i8.i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1031, 5} true; + assume {:verifier.code 0} true; + $i206 := $sext.i8.i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1031, 5} true; + assume {:verifier.code 0} true; + $i207 := $add.i32($i206, $i205); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1031, 5} true; + assume {:verifier.code 0} true; + $i208 := $trunc.i32.i8($i207); + call {:cexpr "c"} boogie_si_record_i8($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1032, 7} true; + assume {:verifier.code 0} true; + $i209 := $sext.i8.i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1032, 9} true; + assume {:verifier.code 0} true; + $i210 := $slt.i32($i209, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1032, 7} true; + assume {:verifier.code 0} true; + $i211 := $i208; + assume {:branchcond $i210} true; + goto $bb64, $bb65; +$bb58: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 15} true; + assume {:verifier.code 0} true; + assume ($i184 == 1); + goto $bb59; +$bb59: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1023, 9} true; + assume {:verifier.code 0} true; + $i188 := $sext.i8.i32($i179); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1023, 9} true; + assume {:verifier.code 0} true; + $i189 := $add.i32($i188, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1023, 9} true; + assume {:verifier.code 0} true; + $i190 := $trunc.i32.i8($i189); + call {:cexpr "c"} boogie_si_record_i8($i190); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1024, 5} true; + assume {:verifier.code 0} true; + $i187 := $i190; + goto $bb63; +$bb60: + assume !(($i184 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 18} true; + assume {:verifier.code 0} true; + $i185 := $sext.i8.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 20} true; + assume {:verifier.code 0} true; + $i186 := $sgt.i32($i185, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 9} true; + assume {:verifier.code 0} true; + $i187 := $i179; + assume {:branchcond $i186} true; + goto $bb61, $bb62; +$bb61: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 9} true; + assume {:verifier.code 0} true; + assume ($i186 == 1); + goto $bb59; +$bb62: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 9} true; + assume {:verifier.code 0} true; + assume !(($i186 == 1)); + goto $bb63; +$bb63: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1025, 3} true; + assume {:verifier.code 0} true; + $i182 := $i187; + goto $bb57; +$bb64: + assume ($i210 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 9} true; + assume {:verifier.code 0} true; + $i212 := $sext.i8.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 11} true; + assume {:verifier.code 0} true; + $i213 := $slt.i32($i212, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i213} true; + goto $bb67, $bb69; +$bb65: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1032, 7} true; + assume {:verifier.code 0} true; + assume !(($i210 == 1)); + goto $bb66; +$bb66: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1042, 3} true; + assume {:verifier.code 0} true; + $r := $i211; + $exn := false; + return; +$bb67: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 15} true; + assume {:verifier.code 0} true; + assume ($i213 == 1); + goto $bb68; +$bb68: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1034, 9} true; + assume {:verifier.code 0} true; + $i217 := $sext.i8.i32($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1034, 9} true; + assume {:verifier.code 0} true; + $i218 := $add.i32($i217, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1034, 9} true; + assume {:verifier.code 0} true; + $i219 := $trunc.i32.i8($i218); + call {:cexpr "c"} boogie_si_record_i8($i219); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1035, 5} true; + assume {:verifier.code 0} true; + $i216 := $i219; + goto $bb72; +$bb69: + assume !(($i213 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 18} true; + assume {:verifier.code 0} true; + $i214 := $sext.i8.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 20} true; + assume {:verifier.code 0} true; + $i215 := $sgt.i32($i214, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 9} true; + assume {:verifier.code 0} true; + $i216 := $i208; + assume {:branchcond $i215} true; + goto $bb70, $bb71; +$bb70: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 9} true; + assume {:verifier.code 0} true; + assume ($i215 == 1); + goto $bb68; +$bb71: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 9} true; + assume {:verifier.code 0} true; + assume !(($i215 == 1)); + goto $bb72; +$bb72: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1036, 3} true; + assume {:verifier.code 0} true; + $i211 := $i216; + goto $bb66; +} +const __SMACK_or32: ref; +axiom (__SMACK_or32 == $sub.ref(0, 20636)); +procedure __SMACK_or32($i0: i32, $i1: i32) + returns ($r: i32) +{ + var $i2: i32; + var $i3: i1; + var $i4: i32; + var $i6: i1; + var $i8: i32; + var $i7: i32; + var $i5: i32; + var $i9: i32; + var $i10: i64; + var $i11: i64; + var $i12: i32; + var $i13: i32; + var $i14: i64; + var $i15: i64; + var $i16: i32; + var $i17: i32; + var $i18: i1; + var $i19: i32; + var $i21: i1; + var $i23: i32; + var $i22: i32; + var $i20: i32; + var $i24: i32; + var $i25: i64; + var $i26: i64; + var $i27: i32; + var $i28: i32; + var $i29: i64; + var $i30: i64; + var $i31: i32; + var $i32: i32; + var $i33: i1; + var $i34: i32; + var $i36: i1; + var $i38: i32; + var $i37: i32; + var $i35: i32; + var $i39: i32; + var $i40: i64; + var $i41: i64; + var $i42: i32; + var $i43: i32; + var $i44: i64; + var $i45: i64; + var $i46: i32; + var $i47: i32; + var $i48: i1; + var $i49: i32; + var $i51: i1; + var $i53: i32; + var $i52: i32; + var $i50: i32; + var $i54: i32; + var $i55: i64; + var $i56: i64; + var $i57: i32; + var $i58: i32; + var $i59: i64; + var $i60: i64; + var $i61: i32; + var $i62: i32; + var $i63: i1; + var $i64: i32; + var $i66: i1; + var $i68: i32; + var $i67: i32; + var $i65: i32; + var $i69: i32; + var $i70: i64; + var $i71: i64; + var $i72: i32; + var $i73: i32; + var $i74: i64; + var $i75: i64; + var $i76: i32; + var $i77: i32; + var $i78: i1; + var $i79: i32; + var $i81: i1; + var $i83: i32; + var $i82: i32; + var $i80: i32; + var $i84: i32; + var $i85: i64; + var $i86: i64; + var $i87: i32; + var $i88: i32; + var $i89: i64; + var $i90: i64; + var $i91: i32; + var $i92: i32; + var $i93: i1; + var $i94: i32; + var $i96: i1; + var $i98: i32; + var $i97: i32; + var $i95: i32; + var $i99: i32; + var $i100: i64; + var $i101: i64; + var $i102: i32; + var $i103: i32; + var $i104: i64; + var $i105: i64; + var $i106: i32; + var $i107: i32; + var $i108: i1; + var $i109: i32; + var $i111: i1; + var $i113: i32; + var $i112: i32; + var $i110: i32; + var $i114: i32; + var $i115: i64; + var $i116: i64; + var $i117: i32; + var $i118: i32; + var $i119: i64; + var $i120: i64; + var $i121: i32; + var $i122: i32; + var $i123: i1; + var $i124: i32; + var $i126: i1; + var $i128: i32; + var $i127: i32; + var $i125: i32; + var $i129: i32; + var $i130: i64; + var $i131: i64; + var $i132: i32; + var $i133: i32; + var $i134: i64; + var $i135: i64; + var $i136: i32; + var $i137: i32; + var $i138: i1; + var $i139: i32; + var $i141: i1; + var $i143: i32; + var $i142: i32; + var $i140: i32; + var $i144: i32; + var $i145: i64; + var $i146: i64; + var $i147: i32; + var $i148: i32; + var $i149: i64; + var $i150: i64; + var $i151: i32; + var $i152: i32; + var $i153: i1; + var $i154: i32; + var $i156: i1; + var $i158: i32; + var $i157: i32; + var $i155: i32; + var $i159: i32; + var $i160: i64; + var $i161: i64; + var $i162: i32; + var $i163: i32; + var $i164: i64; + var $i165: i64; + var $i166: i32; + var $i167: i32; + var $i168: i1; + var $i169: i32; + var $i171: i1; + var $i173: i32; + var $i172: i32; + var $i170: i32; + var $i174: i32; + var $i175: i64; + var $i176: i64; + var $i177: i32; + var $i178: i32; + var $i179: i64; + var $i180: i64; + var $i181: i32; + var $i182: i32; + var $i183: i1; + var $i184: i32; + var $i186: i1; + var $i188: i32; + var $i187: i32; + var $i185: i32; + var $i189: i32; + var $i190: i64; + var $i191: i64; + var $i192: i32; + var $i193: i32; + var $i194: i64; + var $i195: i64; + var $i196: i32; + var $i197: i32; + var $i198: i1; + var $i199: i32; + var $i201: i1; + var $i203: i32; + var $i202: i32; + var $i200: i32; + var $i204: i32; + var $i205: i64; + var $i206: i64; + var $i207: i32; + var $i208: i32; + var $i209: i64; + var $i210: i64; + var $i211: i32; + var $i212: i32; + var $i213: i1; + var $i214: i32; + var $i216: i1; + var $i218: i32; + var $i217: i32; + var $i215: i32; + var $i219: i32; + var $i220: i64; + var $i221: i64; + var $i222: i32; + var $i223: i32; + var $i224: i64; + var $i225: i64; + var $i226: i32; + var $i227: i32; + var $i228: i1; + var $i229: i32; + var $i231: i1; + var $i233: i32; + var $i232: i32; + var $i230: i32; + var $i234: i32; + var $i235: i64; + var $i236: i64; + var $i237: i32; + var $i238: i32; + var $i239: i64; + var $i240: i64; + var $i241: i32; + var $i242: i32; + var $i243: i1; + var $i244: i32; + var $i246: i1; + var $i248: i32; + var $i247: i32; + var $i245: i32; + var $i249: i32; + var $i250: i64; + var $i251: i64; + var $i252: i32; + var $i253: i32; + var $i254: i64; + var $i255: i64; + var $i256: i32; + var $i257: i32; + var $i258: i1; + var $i259: i32; + var $i261: i1; + var $i263: i32; + var $i262: i32; + var $i260: i32; + var $i264: i32; + var $i265: i64; + var $i266: i64; + var $i267: i32; + var $i268: i32; + var $i269: i64; + var $i270: i64; + var $i271: i32; + var $i272: i32; + var $i273: i1; + var $i274: i32; + var $i276: i1; + var $i278: i32; + var $i277: i32; + var $i275: i32; + var $i279: i32; + var $i280: i64; + var $i281: i64; + var $i282: i32; + var $i283: i32; + var $i284: i64; + var $i285: i64; + var $i286: i32; + var $i287: i32; + var $i288: i1; + var $i289: i32; + var $i291: i1; + var $i293: i32; + var $i292: i32; + var $i290: i32; + var $i294: i32; + var $i295: i64; + var $i296: i64; + var $i297: i32; + var $i298: i32; + var $i299: i64; + var $i300: i64; + var $i301: i32; + var $i302: i32; + var $i303: i1; + var $i304: i32; + var $i306: i1; + var $i308: i32; + var $i307: i32; + var $i305: i32; + var $i309: i32; + var $i310: i64; + var $i311: i64; + var $i312: i32; + var $i313: i32; + var $i314: i64; + var $i315: i64; + var $i316: i32; + var $i317: i32; + var $i318: i1; + var $i319: i32; + var $i321: i1; + var $i323: i32; + var $i322: i32; + var $i320: i32; + var $i324: i32; + var $i325: i64; + var $i326: i64; + var $i327: i32; + var $i328: i32; + var $i329: i64; + var $i330: i64; + var $i331: i32; + var $i332: i32; + var $i333: i1; + var $i334: i32; + var $i336: i1; + var $i338: i32; + var $i337: i32; + var $i335: i32; + var $i339: i32; + var $i340: i64; + var $i341: i64; + var $i342: i32; + var $i343: i32; + var $i344: i64; + var $i345: i64; + var $i346: i32; + var $i347: i32; + var $i348: i1; + var $i349: i32; + var $i351: i1; + var $i353: i32; + var $i352: i32; + var $i350: i32; + var $i354: i32; + var $i355: i64; + var $i356: i64; + var $i357: i32; + var $i358: i32; + var $i359: i64; + var $i360: i64; + var $i361: i32; + var $i362: i32; + var $i363: i1; + var $i364: i32; + var $i366: i1; + var $i368: i32; + var $i367: i32; + var $i365: i32; + var $i369: i32; + var $i370: i64; + var $i371: i64; + var $i372: i32; + var $i373: i32; + var $i374: i64; + var $i375: i64; + var $i376: i32; + var $i377: i32; + var $i378: i1; + var $i379: i32; + var $i381: i1; + var $i383: i32; + var $i382: i32; + var $i380: i32; + var $i384: i32; + var $i385: i64; + var $i386: i64; + var $i387: i32; + var $i388: i32; + var $i389: i64; + var $i390: i64; + var $i391: i32; + var $i392: i32; + var $i393: i1; + var $i394: i32; + var $i396: i1; + var $i398: i32; + var $i397: i32; + var $i395: i32; + var $i399: i32; + var $i400: i64; + var $i401: i64; + var $i402: i32; + var $i403: i32; + var $i404: i64; + var $i405: i64; + var $i406: i32; + var $i407: i32; + var $i408: i1; + var $i409: i32; + var $i411: i1; + var $i413: i32; + var $i412: i32; + var $i410: i32; + var $i414: i32; + var $i415: i64; + var $i416: i64; + var $i417: i32; + var $i418: i32; + var $i419: i64; + var $i420: i64; + var $i421: i32; + var $i422: i32; + var $i423: i1; + var $i424: i32; + var $i426: i1; + var $i428: i32; + var $i427: i32; + var $i425: i32; + var $i429: i32; + var $i430: i64; + var $i431: i64; + var $i432: i32; + var $i433: i32; + var $i434: i64; + var $i435: i64; + var $i436: i32; + var $i437: i32; + var $i438: i1; + var $i439: i32; + var $i441: i1; + var $i443: i32; + var $i442: i32; + var $i440: i32; + var $i444: i32; + var $i445: i64; + var $i446: i64; + var $i447: i32; + var $i448: i32; + var $i449: i64; + var $i450: i64; + var $i451: i32; + var $i452: i32; + var $i453: i1; + var $i454: i32; + var $i456: i1; + var $i458: i32; + var $i457: i32; + var $i455: i32; + var $i459: i32; + var $i460: i64; + var $i461: i64; + var $i462: i32; + var $i463: i32; + var $i464: i64; + var $i465: i64; + var $i466: i32; + var $i467: i32; + var $i468: i1; + var $i469: i32; + var $i471: i1; + var $i473: i32; + var $i472: i32; + var $i470: i32; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1048, 5} true; + assume {:verifier.code 0} true; + call {:cexpr "__SMACK_or32:arg:a"} boogie_si_record_i32($i0); + call {:cexpr "__SMACK_or32:arg:b"} boogie_si_record_i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1048, 5} true; + assume {:verifier.code 0} true; + $i2 := $add.i32(0, 0); + call {:cexpr "c"} boogie_si_record_i32($i2); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1049, 9} true; + assume {:verifier.code 0} true; + $i3 := $slt.i32($i0, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1049, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i3} true; + goto $bb1, $bb2; +$bb1: + assume ($i3 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1050, 7} true; + assume {:verifier.code 0} true; + $i4 := $add.i32($i2, 1); + call {:cexpr "c"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1051, 3} true; + assume {:verifier.code 0} true; + $i5 := $i4; + goto $bb3; +$bb2: + assume !(($i3 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1051, 16} true; + assume {:verifier.code 0} true; + $i6 := $slt.i32($i1, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1051, 14} true; + assume {:verifier.code 0} true; + $i7 := $i2; + assume {:branchcond $i6} true; + goto $bb4, $bb5; +$bb3: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1054, 5} true; + assume {:verifier.code 0} true; + $i9 := $add.i32($i0, $i0); + call {:cexpr "a"} boogie_si_record_i32($i9); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1055, 7} true; + assume {:verifier.code 0} true; + $i10 := $sext.i32.i64($i9); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1055, 9} true; + assume {:verifier.code 0} true; + $i11 := $srem.i64($i10, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1055, 7} true; + assume {:verifier.code 0} true; + $i12 := $trunc.i64.i32($i11); + call {:cexpr "a"} boogie_si_record_i32($i12); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1056, 5} true; + assume {:verifier.code 0} true; + $i13 := $add.i32($i1, $i1); + call {:cexpr "b"} boogie_si_record_i32($i13); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1057, 7} true; + assume {:verifier.code 0} true; + $i14 := $sext.i32.i64($i13); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1057, 9} true; + assume {:verifier.code 0} true; + $i15 := $srem.i64($i14, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1057, 7} true; + assume {:verifier.code 0} true; + $i16 := $trunc.i64.i32($i15); + call {:cexpr "b"} boogie_si_record_i32($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1059, 5} true; + assume {:verifier.code 0} true; + $i17 := $add.i32($i5, $i5); + call {:cexpr "c"} boogie_si_record_i32($i17); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1060, 9} true; + assume {:verifier.code 0} true; + $i18 := $slt.i32($i12, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1060, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i18} true; + goto $bb7, $bb8; +$bb4: + assume ($i6 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1052, 7} true; + assume {:verifier.code 0} true; + $i8 := $add.i32($i2, 1); + call {:cexpr "c"} boogie_si_record_i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1053, 3} true; + assume {:verifier.code 0} true; + $i7 := $i8; + goto $bb6; +$bb5: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1051, 14} true; + assume {:verifier.code 0} true; + assume !(($i6 == 1)); + goto $bb6; +$bb6: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i5 := $i7; + goto $bb3; +$bb7: + assume ($i18 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1061, 7} true; + assume {:verifier.code 0} true; + $i19 := $add.i32($i17, 1); + call {:cexpr "c"} boogie_si_record_i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1062, 3} true; + assume {:verifier.code 0} true; + $i20 := $i19; + goto $bb9; +$bb8: + assume !(($i18 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1062, 16} true; + assume {:verifier.code 0} true; + $i21 := $slt.i32($i16, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1062, 14} true; + assume {:verifier.code 0} true; + $i22 := $i17; + assume {:branchcond $i21} true; + goto $bb10, $bb11; +$bb9: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1065, 5} true; + assume {:verifier.code 0} true; + $i24 := $add.i32($i12, $i12); + call {:cexpr "a"} boogie_si_record_i32($i24); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1066, 7} true; + assume {:verifier.code 0} true; + $i25 := $sext.i32.i64($i24); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1066, 9} true; + assume {:verifier.code 0} true; + $i26 := $srem.i64($i25, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1066, 7} true; + assume {:verifier.code 0} true; + $i27 := $trunc.i64.i32($i26); + call {:cexpr "a"} boogie_si_record_i32($i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1067, 5} true; + assume {:verifier.code 0} true; + $i28 := $add.i32($i16, $i16); + call {:cexpr "b"} boogie_si_record_i32($i28); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1068, 7} true; + assume {:verifier.code 0} true; + $i29 := $sext.i32.i64($i28); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1068, 9} true; + assume {:verifier.code 0} true; + $i30 := $srem.i64($i29, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1068, 7} true; + assume {:verifier.code 0} true; + $i31 := $trunc.i64.i32($i30); + call {:cexpr "b"} boogie_si_record_i32($i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1070, 5} true; + assume {:verifier.code 0} true; + $i32 := $add.i32($i20, $i20); + call {:cexpr "c"} boogie_si_record_i32($i32); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1071, 9} true; + assume {:verifier.code 0} true; + $i33 := $slt.i32($i27, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1071, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i33} true; + goto $bb13, $bb14; +$bb10: + assume ($i21 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1063, 7} true; + assume {:verifier.code 0} true; + $i23 := $add.i32($i17, 1); + call {:cexpr "c"} boogie_si_record_i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1064, 3} true; + assume {:verifier.code 0} true; + $i22 := $i23; + goto $bb12; +$bb11: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1062, 14} true; + assume {:verifier.code 0} true; + assume !(($i21 == 1)); + goto $bb12; +$bb12: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i20 := $i22; + goto $bb9; +$bb13: + assume ($i33 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1072, 7} true; + assume {:verifier.code 0} true; + $i34 := $add.i32($i32, 1); + call {:cexpr "c"} boogie_si_record_i32($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1073, 3} true; + assume {:verifier.code 0} true; + $i35 := $i34; + goto $bb15; +$bb14: + assume !(($i33 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1073, 16} true; + assume {:verifier.code 0} true; + $i36 := $slt.i32($i31, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1073, 14} true; + assume {:verifier.code 0} true; + $i37 := $i32; + assume {:branchcond $i36} true; + goto $bb16, $bb17; +$bb15: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1076, 5} true; + assume {:verifier.code 0} true; + $i39 := $add.i32($i27, $i27); + call {:cexpr "a"} boogie_si_record_i32($i39); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1077, 7} true; + assume {:verifier.code 0} true; + $i40 := $sext.i32.i64($i39); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1077, 9} true; + assume {:verifier.code 0} true; + $i41 := $srem.i64($i40, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1077, 7} true; + assume {:verifier.code 0} true; + $i42 := $trunc.i64.i32($i41); + call {:cexpr "a"} boogie_si_record_i32($i42); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1078, 5} true; + assume {:verifier.code 0} true; + $i43 := $add.i32($i31, $i31); + call {:cexpr "b"} boogie_si_record_i32($i43); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1079, 7} true; + assume {:verifier.code 0} true; + $i44 := $sext.i32.i64($i43); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1079, 9} true; + assume {:verifier.code 0} true; + $i45 := $srem.i64($i44, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1079, 7} true; + assume {:verifier.code 0} true; + $i46 := $trunc.i64.i32($i45); + call {:cexpr "b"} boogie_si_record_i32($i46); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1081, 5} true; + assume {:verifier.code 0} true; + $i47 := $add.i32($i35, $i35); + call {:cexpr "c"} boogie_si_record_i32($i47); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1082, 9} true; + assume {:verifier.code 0} true; + $i48 := $slt.i32($i42, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1082, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i48} true; + goto $bb19, $bb20; +$bb16: + assume ($i36 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1074, 7} true; + assume {:verifier.code 0} true; + $i38 := $add.i32($i32, 1); + call {:cexpr "c"} boogie_si_record_i32($i38); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1075, 3} true; + assume {:verifier.code 0} true; + $i37 := $i38; + goto $bb18; +$bb17: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1073, 14} true; + assume {:verifier.code 0} true; + assume !(($i36 == 1)); + goto $bb18; +$bb18: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i35 := $i37; + goto $bb15; +$bb19: + assume ($i48 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1083, 7} true; + assume {:verifier.code 0} true; + $i49 := $add.i32($i47, 1); + call {:cexpr "c"} boogie_si_record_i32($i49); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1084, 3} true; + assume {:verifier.code 0} true; + $i50 := $i49; + goto $bb21; +$bb20: + assume !(($i48 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1084, 16} true; + assume {:verifier.code 0} true; + $i51 := $slt.i32($i46, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1084, 14} true; + assume {:verifier.code 0} true; + $i52 := $i47; + assume {:branchcond $i51} true; + goto $bb22, $bb23; +$bb21: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1087, 5} true; + assume {:verifier.code 0} true; + $i54 := $add.i32($i42, $i42); + call {:cexpr "a"} boogie_si_record_i32($i54); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1088, 7} true; + assume {:verifier.code 0} true; + $i55 := $sext.i32.i64($i54); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1088, 9} true; + assume {:verifier.code 0} true; + $i56 := $srem.i64($i55, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1088, 7} true; + assume {:verifier.code 0} true; + $i57 := $trunc.i64.i32($i56); + call {:cexpr "a"} boogie_si_record_i32($i57); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1089, 5} true; + assume {:verifier.code 0} true; + $i58 := $add.i32($i46, $i46); + call {:cexpr "b"} boogie_si_record_i32($i58); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1090, 7} true; + assume {:verifier.code 0} true; + $i59 := $sext.i32.i64($i58); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1090, 9} true; + assume {:verifier.code 0} true; + $i60 := $srem.i64($i59, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1090, 7} true; + assume {:verifier.code 0} true; + $i61 := $trunc.i64.i32($i60); + call {:cexpr "b"} boogie_si_record_i32($i61); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1092, 5} true; + assume {:verifier.code 0} true; + $i62 := $add.i32($i50, $i50); + call {:cexpr "c"} boogie_si_record_i32($i62); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1093, 9} true; + assume {:verifier.code 0} true; + $i63 := $slt.i32($i57, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1093, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i63} true; + goto $bb25, $bb26; +$bb22: + assume ($i51 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1085, 7} true; + assume {:verifier.code 0} true; + $i53 := $add.i32($i47, 1); + call {:cexpr "c"} boogie_si_record_i32($i53); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1086, 3} true; + assume {:verifier.code 0} true; + $i52 := $i53; + goto $bb24; +$bb23: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1084, 14} true; + assume {:verifier.code 0} true; + assume !(($i51 == 1)); + goto $bb24; +$bb24: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i50 := $i52; + goto $bb21; +$bb25: + assume ($i63 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1094, 7} true; + assume {:verifier.code 0} true; + $i64 := $add.i32($i62, 1); + call {:cexpr "c"} boogie_si_record_i32($i64); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1095, 3} true; + assume {:verifier.code 0} true; + $i65 := $i64; + goto $bb27; +$bb26: + assume !(($i63 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1095, 16} true; + assume {:verifier.code 0} true; + $i66 := $slt.i32($i61, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1095, 14} true; + assume {:verifier.code 0} true; + $i67 := $i62; + assume {:branchcond $i66} true; + goto $bb28, $bb29; +$bb27: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1098, 5} true; + assume {:verifier.code 0} true; + $i69 := $add.i32($i57, $i57); + call {:cexpr "a"} boogie_si_record_i32($i69); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1099, 7} true; + assume {:verifier.code 0} true; + $i70 := $sext.i32.i64($i69); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1099, 9} true; + assume {:verifier.code 0} true; + $i71 := $srem.i64($i70, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1099, 7} true; + assume {:verifier.code 0} true; + $i72 := $trunc.i64.i32($i71); + call {:cexpr "a"} boogie_si_record_i32($i72); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1100, 5} true; + assume {:verifier.code 0} true; + $i73 := $add.i32($i61, $i61); + call {:cexpr "b"} boogie_si_record_i32($i73); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1101, 7} true; + assume {:verifier.code 0} true; + $i74 := $sext.i32.i64($i73); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1101, 9} true; + assume {:verifier.code 0} true; + $i75 := $srem.i64($i74, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1101, 7} true; + assume {:verifier.code 0} true; + $i76 := $trunc.i64.i32($i75); + call {:cexpr "b"} boogie_si_record_i32($i76); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1103, 5} true; + assume {:verifier.code 0} true; + $i77 := $add.i32($i65, $i65); + call {:cexpr "c"} boogie_si_record_i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1104, 9} true; + assume {:verifier.code 0} true; + $i78 := $slt.i32($i72, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1104, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i78} true; + goto $bb31, $bb32; +$bb28: + assume ($i66 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1096, 7} true; + assume {:verifier.code 0} true; + $i68 := $add.i32($i62, 1); + call {:cexpr "c"} boogie_si_record_i32($i68); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1097, 3} true; + assume {:verifier.code 0} true; + $i67 := $i68; + goto $bb30; +$bb29: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1095, 14} true; + assume {:verifier.code 0} true; + assume !(($i66 == 1)); + goto $bb30; +$bb30: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i65 := $i67; + goto $bb27; +$bb31: + assume ($i78 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1105, 7} true; + assume {:verifier.code 0} true; + $i79 := $add.i32($i77, 1); + call {:cexpr "c"} boogie_si_record_i32($i79); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1106, 3} true; + assume {:verifier.code 0} true; + $i80 := $i79; + goto $bb33; +$bb32: + assume !(($i78 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1106, 16} true; + assume {:verifier.code 0} true; + $i81 := $slt.i32($i76, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1106, 14} true; + assume {:verifier.code 0} true; + $i82 := $i77; + assume {:branchcond $i81} true; + goto $bb34, $bb35; +$bb33: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1109, 5} true; + assume {:verifier.code 0} true; + $i84 := $add.i32($i72, $i72); + call {:cexpr "a"} boogie_si_record_i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1110, 7} true; + assume {:verifier.code 0} true; + $i85 := $sext.i32.i64($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1110, 9} true; + assume {:verifier.code 0} true; + $i86 := $srem.i64($i85, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1110, 7} true; + assume {:verifier.code 0} true; + $i87 := $trunc.i64.i32($i86); + call {:cexpr "a"} boogie_si_record_i32($i87); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1111, 5} true; + assume {:verifier.code 0} true; + $i88 := $add.i32($i76, $i76); + call {:cexpr "b"} boogie_si_record_i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1112, 7} true; + assume {:verifier.code 0} true; + $i89 := $sext.i32.i64($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1112, 9} true; + assume {:verifier.code 0} true; + $i90 := $srem.i64($i89, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1112, 7} true; + assume {:verifier.code 0} true; + $i91 := $trunc.i64.i32($i90); + call {:cexpr "b"} boogie_si_record_i32($i91); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1114, 5} true; + assume {:verifier.code 0} true; + $i92 := $add.i32($i80, $i80); + call {:cexpr "c"} boogie_si_record_i32($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1115, 9} true; + assume {:verifier.code 0} true; + $i93 := $slt.i32($i87, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1115, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i93} true; + goto $bb37, $bb38; +$bb34: + assume ($i81 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1107, 7} true; + assume {:verifier.code 0} true; + $i83 := $add.i32($i77, 1); + call {:cexpr "c"} boogie_si_record_i32($i83); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1108, 3} true; + assume {:verifier.code 0} true; + $i82 := $i83; + goto $bb36; +$bb35: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1106, 14} true; + assume {:verifier.code 0} true; + assume !(($i81 == 1)); + goto $bb36; +$bb36: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i80 := $i82; + goto $bb33; +$bb37: + assume ($i93 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1116, 7} true; + assume {:verifier.code 0} true; + $i94 := $add.i32($i92, 1); + call {:cexpr "c"} boogie_si_record_i32($i94); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1117, 3} true; + assume {:verifier.code 0} true; + $i95 := $i94; + goto $bb39; +$bb38: + assume !(($i93 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1117, 16} true; + assume {:verifier.code 0} true; + $i96 := $slt.i32($i91, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1117, 14} true; + assume {:verifier.code 0} true; + $i97 := $i92; + assume {:branchcond $i96} true; + goto $bb40, $bb41; +$bb39: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1120, 5} true; + assume {:verifier.code 0} true; + $i99 := $add.i32($i87, $i87); + call {:cexpr "a"} boogie_si_record_i32($i99); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1121, 7} true; + assume {:verifier.code 0} true; + $i100 := $sext.i32.i64($i99); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1121, 9} true; + assume {:verifier.code 0} true; + $i101 := $srem.i64($i100, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1121, 7} true; + assume {:verifier.code 0} true; + $i102 := $trunc.i64.i32($i101); + call {:cexpr "a"} boogie_si_record_i32($i102); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1122, 5} true; + assume {:verifier.code 0} true; + $i103 := $add.i32($i91, $i91); + call {:cexpr "b"} boogie_si_record_i32($i103); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1123, 7} true; + assume {:verifier.code 0} true; + $i104 := $sext.i32.i64($i103); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1123, 9} true; + assume {:verifier.code 0} true; + $i105 := $srem.i64($i104, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1123, 7} true; + assume {:verifier.code 0} true; + $i106 := $trunc.i64.i32($i105); + call {:cexpr "b"} boogie_si_record_i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1125, 5} true; + assume {:verifier.code 0} true; + $i107 := $add.i32($i95, $i95); + call {:cexpr "c"} boogie_si_record_i32($i107); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1126, 9} true; + assume {:verifier.code 0} true; + $i108 := $slt.i32($i102, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1126, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i108} true; + goto $bb43, $bb44; +$bb40: + assume ($i96 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1118, 7} true; + assume {:verifier.code 0} true; + $i98 := $add.i32($i92, 1); + call {:cexpr "c"} boogie_si_record_i32($i98); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1119, 3} true; + assume {:verifier.code 0} true; + $i97 := $i98; + goto $bb42; +$bb41: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1117, 14} true; + assume {:verifier.code 0} true; + assume !(($i96 == 1)); + goto $bb42; +$bb42: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i95 := $i97; + goto $bb39; +$bb43: + assume ($i108 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1127, 7} true; + assume {:verifier.code 0} true; + $i109 := $add.i32($i107, 1); + call {:cexpr "c"} boogie_si_record_i32($i109); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1128, 3} true; + assume {:verifier.code 0} true; + $i110 := $i109; + goto $bb45; +$bb44: + assume !(($i108 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1128, 16} true; + assume {:verifier.code 0} true; + $i111 := $slt.i32($i106, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1128, 14} true; + assume {:verifier.code 0} true; + $i112 := $i107; + assume {:branchcond $i111} true; + goto $bb46, $bb47; +$bb45: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1131, 5} true; + assume {:verifier.code 0} true; + $i114 := $add.i32($i102, $i102); + call {:cexpr "a"} boogie_si_record_i32($i114); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1132, 7} true; + assume {:verifier.code 0} true; + $i115 := $sext.i32.i64($i114); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1132, 9} true; + assume {:verifier.code 0} true; + $i116 := $srem.i64($i115, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1132, 7} true; + assume {:verifier.code 0} true; + $i117 := $trunc.i64.i32($i116); + call {:cexpr "a"} boogie_si_record_i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1133, 5} true; + assume {:verifier.code 0} true; + $i118 := $add.i32($i106, $i106); + call {:cexpr "b"} boogie_si_record_i32($i118); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1134, 7} true; + assume {:verifier.code 0} true; + $i119 := $sext.i32.i64($i118); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1134, 9} true; + assume {:verifier.code 0} true; + $i120 := $srem.i64($i119, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1134, 7} true; + assume {:verifier.code 0} true; + $i121 := $trunc.i64.i32($i120); + call {:cexpr "b"} boogie_si_record_i32($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1136, 5} true; + assume {:verifier.code 0} true; + $i122 := $add.i32($i110, $i110); + call {:cexpr "c"} boogie_si_record_i32($i122); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1137, 9} true; + assume {:verifier.code 0} true; + $i123 := $slt.i32($i117, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1137, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i123} true; + goto $bb49, $bb50; +$bb46: + assume ($i111 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1129, 7} true; + assume {:verifier.code 0} true; + $i113 := $add.i32($i107, 1); + call {:cexpr "c"} boogie_si_record_i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1130, 3} true; + assume {:verifier.code 0} true; + $i112 := $i113; + goto $bb48; +$bb47: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1128, 14} true; + assume {:verifier.code 0} true; + assume !(($i111 == 1)); + goto $bb48; +$bb48: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i110 := $i112; + goto $bb45; +$bb49: + assume ($i123 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1138, 7} true; + assume {:verifier.code 0} true; + $i124 := $add.i32($i122, 1); + call {:cexpr "c"} boogie_si_record_i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1139, 3} true; + assume {:verifier.code 0} true; + $i125 := $i124; + goto $bb51; +$bb50: + assume !(($i123 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1139, 16} true; + assume {:verifier.code 0} true; + $i126 := $slt.i32($i121, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1139, 14} true; + assume {:verifier.code 0} true; + $i127 := $i122; + assume {:branchcond $i126} true; + goto $bb52, $bb53; +$bb51: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1142, 5} true; + assume {:verifier.code 0} true; + $i129 := $add.i32($i117, $i117); + call {:cexpr "a"} boogie_si_record_i32($i129); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1143, 7} true; + assume {:verifier.code 0} true; + $i130 := $sext.i32.i64($i129); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1143, 9} true; + assume {:verifier.code 0} true; + $i131 := $srem.i64($i130, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1143, 7} true; + assume {:verifier.code 0} true; + $i132 := $trunc.i64.i32($i131); + call {:cexpr "a"} boogie_si_record_i32($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1144, 5} true; + assume {:verifier.code 0} true; + $i133 := $add.i32($i121, $i121); + call {:cexpr "b"} boogie_si_record_i32($i133); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1145, 7} true; + assume {:verifier.code 0} true; + $i134 := $sext.i32.i64($i133); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1145, 9} true; + assume {:verifier.code 0} true; + $i135 := $srem.i64($i134, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1145, 7} true; + assume {:verifier.code 0} true; + $i136 := $trunc.i64.i32($i135); + call {:cexpr "b"} boogie_si_record_i32($i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1147, 5} true; + assume {:verifier.code 0} true; + $i137 := $add.i32($i125, $i125); + call {:cexpr "c"} boogie_si_record_i32($i137); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1148, 9} true; + assume {:verifier.code 0} true; + $i138 := $slt.i32($i132, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1148, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i138} true; + goto $bb55, $bb56; +$bb52: + assume ($i126 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1140, 7} true; + assume {:verifier.code 0} true; + $i128 := $add.i32($i122, 1); + call {:cexpr "c"} boogie_si_record_i32($i128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1141, 3} true; + assume {:verifier.code 0} true; + $i127 := $i128; + goto $bb54; +$bb53: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1139, 14} true; + assume {:verifier.code 0} true; + assume !(($i126 == 1)); + goto $bb54; +$bb54: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i125 := $i127; + goto $bb51; +$bb55: + assume ($i138 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1149, 7} true; + assume {:verifier.code 0} true; + $i139 := $add.i32($i137, 1); + call {:cexpr "c"} boogie_si_record_i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1150, 3} true; + assume {:verifier.code 0} true; + $i140 := $i139; + goto $bb57; +$bb56: + assume !(($i138 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1150, 16} true; + assume {:verifier.code 0} true; + $i141 := $slt.i32($i136, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1150, 14} true; + assume {:verifier.code 0} true; + $i142 := $i137; + assume {:branchcond $i141} true; + goto $bb58, $bb59; +$bb57: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1153, 5} true; + assume {:verifier.code 0} true; + $i144 := $add.i32($i132, $i132); + call {:cexpr "a"} boogie_si_record_i32($i144); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1154, 7} true; + assume {:verifier.code 0} true; + $i145 := $sext.i32.i64($i144); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1154, 9} true; + assume {:verifier.code 0} true; + $i146 := $srem.i64($i145, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1154, 7} true; + assume {:verifier.code 0} true; + $i147 := $trunc.i64.i32($i146); + call {:cexpr "a"} boogie_si_record_i32($i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1155, 5} true; + assume {:verifier.code 0} true; + $i148 := $add.i32($i136, $i136); + call {:cexpr "b"} boogie_si_record_i32($i148); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1156, 7} true; + assume {:verifier.code 0} true; + $i149 := $sext.i32.i64($i148); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1156, 9} true; + assume {:verifier.code 0} true; + $i150 := $srem.i64($i149, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1156, 7} true; + assume {:verifier.code 0} true; + $i151 := $trunc.i64.i32($i150); + call {:cexpr "b"} boogie_si_record_i32($i151); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1158, 5} true; + assume {:verifier.code 0} true; + $i152 := $add.i32($i140, $i140); + call {:cexpr "c"} boogie_si_record_i32($i152); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1159, 9} true; + assume {:verifier.code 0} true; + $i153 := $slt.i32($i147, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1159, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i153} true; + goto $bb61, $bb62; +$bb58: + assume ($i141 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1151, 7} true; + assume {:verifier.code 0} true; + $i143 := $add.i32($i137, 1); + call {:cexpr "c"} boogie_si_record_i32($i143); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1152, 3} true; + assume {:verifier.code 0} true; + $i142 := $i143; + goto $bb60; +$bb59: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1150, 14} true; + assume {:verifier.code 0} true; + assume !(($i141 == 1)); + goto $bb60; +$bb60: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i140 := $i142; + goto $bb57; +$bb61: + assume ($i153 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1160, 7} true; + assume {:verifier.code 0} true; + $i154 := $add.i32($i152, 1); + call {:cexpr "c"} boogie_si_record_i32($i154); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1161, 3} true; + assume {:verifier.code 0} true; + $i155 := $i154; + goto $bb63; +$bb62: + assume !(($i153 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1161, 16} true; + assume {:verifier.code 0} true; + $i156 := $slt.i32($i151, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1161, 14} true; + assume {:verifier.code 0} true; + $i157 := $i152; + assume {:branchcond $i156} true; + goto $bb64, $bb65; +$bb63: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1164, 5} true; + assume {:verifier.code 0} true; + $i159 := $add.i32($i147, $i147); + call {:cexpr "a"} boogie_si_record_i32($i159); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1165, 7} true; + assume {:verifier.code 0} true; + $i160 := $sext.i32.i64($i159); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1165, 9} true; + assume {:verifier.code 0} true; + $i161 := $srem.i64($i160, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1165, 7} true; + assume {:verifier.code 0} true; + $i162 := $trunc.i64.i32($i161); + call {:cexpr "a"} boogie_si_record_i32($i162); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1166, 5} true; + assume {:verifier.code 0} true; + $i163 := $add.i32($i151, $i151); + call {:cexpr "b"} boogie_si_record_i32($i163); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1167, 7} true; + assume {:verifier.code 0} true; + $i164 := $sext.i32.i64($i163); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1167, 9} true; + assume {:verifier.code 0} true; + $i165 := $srem.i64($i164, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1167, 7} true; + assume {:verifier.code 0} true; + $i166 := $trunc.i64.i32($i165); + call {:cexpr "b"} boogie_si_record_i32($i166); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1169, 5} true; + assume {:verifier.code 0} true; + $i167 := $add.i32($i155, $i155); + call {:cexpr "c"} boogie_si_record_i32($i167); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1170, 9} true; + assume {:verifier.code 0} true; + $i168 := $slt.i32($i162, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1170, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i168} true; + goto $bb67, $bb68; +$bb64: + assume ($i156 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1162, 7} true; + assume {:verifier.code 0} true; + $i158 := $add.i32($i152, 1); + call {:cexpr "c"} boogie_si_record_i32($i158); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1163, 3} true; + assume {:verifier.code 0} true; + $i157 := $i158; + goto $bb66; +$bb65: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1161, 14} true; + assume {:verifier.code 0} true; + assume !(($i156 == 1)); + goto $bb66; +$bb66: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i155 := $i157; + goto $bb63; +$bb67: + assume ($i168 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1171, 7} true; + assume {:verifier.code 0} true; + $i169 := $add.i32($i167, 1); + call {:cexpr "c"} boogie_si_record_i32($i169); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1172, 3} true; + assume {:verifier.code 0} true; + $i170 := $i169; + goto $bb69; +$bb68: + assume !(($i168 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1172, 16} true; + assume {:verifier.code 0} true; + $i171 := $slt.i32($i166, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1172, 14} true; + assume {:verifier.code 0} true; + $i172 := $i167; + assume {:branchcond $i171} true; + goto $bb70, $bb71; +$bb69: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1175, 5} true; + assume {:verifier.code 0} true; + $i174 := $add.i32($i162, $i162); + call {:cexpr "a"} boogie_si_record_i32($i174); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1176, 7} true; + assume {:verifier.code 0} true; + $i175 := $sext.i32.i64($i174); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1176, 9} true; + assume {:verifier.code 0} true; + $i176 := $srem.i64($i175, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1176, 7} true; + assume {:verifier.code 0} true; + $i177 := $trunc.i64.i32($i176); + call {:cexpr "a"} boogie_si_record_i32($i177); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1177, 5} true; + assume {:verifier.code 0} true; + $i178 := $add.i32($i166, $i166); + call {:cexpr "b"} boogie_si_record_i32($i178); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1178, 7} true; + assume {:verifier.code 0} true; + $i179 := $sext.i32.i64($i178); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1178, 9} true; + assume {:verifier.code 0} true; + $i180 := $srem.i64($i179, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1178, 7} true; + assume {:verifier.code 0} true; + $i181 := $trunc.i64.i32($i180); + call {:cexpr "b"} boogie_si_record_i32($i181); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1180, 5} true; + assume {:verifier.code 0} true; + $i182 := $add.i32($i170, $i170); + call {:cexpr "c"} boogie_si_record_i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1181, 9} true; + assume {:verifier.code 0} true; + $i183 := $slt.i32($i177, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1181, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i183} true; + goto $bb73, $bb74; +$bb70: + assume ($i171 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1173, 7} true; + assume {:verifier.code 0} true; + $i173 := $add.i32($i167, 1); + call {:cexpr "c"} boogie_si_record_i32($i173); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1174, 3} true; + assume {:verifier.code 0} true; + $i172 := $i173; + goto $bb72; +$bb71: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1172, 14} true; + assume {:verifier.code 0} true; + assume !(($i171 == 1)); + goto $bb72; +$bb72: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i170 := $i172; + goto $bb69; +$bb73: + assume ($i183 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1182, 7} true; + assume {:verifier.code 0} true; + $i184 := $add.i32($i182, 1); + call {:cexpr "c"} boogie_si_record_i32($i184); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1183, 3} true; + assume {:verifier.code 0} true; + $i185 := $i184; + goto $bb75; +$bb74: + assume !(($i183 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1183, 16} true; + assume {:verifier.code 0} true; + $i186 := $slt.i32($i181, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1183, 14} true; + assume {:verifier.code 0} true; + $i187 := $i182; + assume {:branchcond $i186} true; + goto $bb76, $bb77; +$bb75: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1186, 5} true; + assume {:verifier.code 0} true; + $i189 := $add.i32($i177, $i177); + call {:cexpr "a"} boogie_si_record_i32($i189); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1187, 7} true; + assume {:verifier.code 0} true; + $i190 := $sext.i32.i64($i189); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1187, 9} true; + assume {:verifier.code 0} true; + $i191 := $srem.i64($i190, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1187, 7} true; + assume {:verifier.code 0} true; + $i192 := $trunc.i64.i32($i191); + call {:cexpr "a"} boogie_si_record_i32($i192); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1188, 5} true; + assume {:verifier.code 0} true; + $i193 := $add.i32($i181, $i181); + call {:cexpr "b"} boogie_si_record_i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1189, 7} true; + assume {:verifier.code 0} true; + $i194 := $sext.i32.i64($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1189, 9} true; + assume {:verifier.code 0} true; + $i195 := $srem.i64($i194, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1189, 7} true; + assume {:verifier.code 0} true; + $i196 := $trunc.i64.i32($i195); + call {:cexpr "b"} boogie_si_record_i32($i196); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1191, 5} true; + assume {:verifier.code 0} true; + $i197 := $add.i32($i185, $i185); + call {:cexpr "c"} boogie_si_record_i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1192, 9} true; + assume {:verifier.code 0} true; + $i198 := $slt.i32($i192, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1192, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i198} true; + goto $bb79, $bb80; +$bb76: + assume ($i186 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1184, 7} true; + assume {:verifier.code 0} true; + $i188 := $add.i32($i182, 1); + call {:cexpr "c"} boogie_si_record_i32($i188); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1185, 3} true; + assume {:verifier.code 0} true; + $i187 := $i188; + goto $bb78; +$bb77: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1183, 14} true; + assume {:verifier.code 0} true; + assume !(($i186 == 1)); + goto $bb78; +$bb78: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i185 := $i187; + goto $bb75; +$bb79: + assume ($i198 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1193, 7} true; + assume {:verifier.code 0} true; + $i199 := $add.i32($i197, 1); + call {:cexpr "c"} boogie_si_record_i32($i199); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1194, 3} true; + assume {:verifier.code 0} true; + $i200 := $i199; + goto $bb81; +$bb80: + assume !(($i198 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1194, 16} true; + assume {:verifier.code 0} true; + $i201 := $slt.i32($i196, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1194, 14} true; + assume {:verifier.code 0} true; + $i202 := $i197; + assume {:branchcond $i201} true; + goto $bb82, $bb83; +$bb81: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1197, 5} true; + assume {:verifier.code 0} true; + $i204 := $add.i32($i192, $i192); + call {:cexpr "a"} boogie_si_record_i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1198, 7} true; + assume {:verifier.code 0} true; + $i205 := $sext.i32.i64($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1198, 9} true; + assume {:verifier.code 0} true; + $i206 := $srem.i64($i205, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1198, 7} true; + assume {:verifier.code 0} true; + $i207 := $trunc.i64.i32($i206); + call {:cexpr "a"} boogie_si_record_i32($i207); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1199, 5} true; + assume {:verifier.code 0} true; + $i208 := $add.i32($i196, $i196); + call {:cexpr "b"} boogie_si_record_i32($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1200, 7} true; + assume {:verifier.code 0} true; + $i209 := $sext.i32.i64($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1200, 9} true; + assume {:verifier.code 0} true; + $i210 := $srem.i64($i209, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1200, 7} true; + assume {:verifier.code 0} true; + $i211 := $trunc.i64.i32($i210); + call {:cexpr "b"} boogie_si_record_i32($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1202, 5} true; + assume {:verifier.code 0} true; + $i212 := $add.i32($i200, $i200); + call {:cexpr "c"} boogie_si_record_i32($i212); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1203, 9} true; + assume {:verifier.code 0} true; + $i213 := $slt.i32($i207, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1203, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i213} true; + goto $bb85, $bb86; +$bb82: + assume ($i201 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1195, 7} true; + assume {:verifier.code 0} true; + $i203 := $add.i32($i197, 1); + call {:cexpr "c"} boogie_si_record_i32($i203); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1196, 3} true; + assume {:verifier.code 0} true; + $i202 := $i203; + goto $bb84; +$bb83: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1194, 14} true; + assume {:verifier.code 0} true; + assume !(($i201 == 1)); + goto $bb84; +$bb84: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i200 := $i202; + goto $bb81; +$bb85: + assume ($i213 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1204, 7} true; + assume {:verifier.code 0} true; + $i214 := $add.i32($i212, 1); + call {:cexpr "c"} boogie_si_record_i32($i214); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1205, 3} true; + assume {:verifier.code 0} true; + $i215 := $i214; + goto $bb87; +$bb86: + assume !(($i213 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1205, 16} true; + assume {:verifier.code 0} true; + $i216 := $slt.i32($i211, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1205, 14} true; + assume {:verifier.code 0} true; + $i217 := $i212; + assume {:branchcond $i216} true; + goto $bb88, $bb89; +$bb87: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1208, 5} true; + assume {:verifier.code 0} true; + $i219 := $add.i32($i207, $i207); + call {:cexpr "a"} boogie_si_record_i32($i219); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1209, 7} true; + assume {:verifier.code 0} true; + $i220 := $sext.i32.i64($i219); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1209, 9} true; + assume {:verifier.code 0} true; + $i221 := $srem.i64($i220, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1209, 7} true; + assume {:verifier.code 0} true; + $i222 := $trunc.i64.i32($i221); + call {:cexpr "a"} boogie_si_record_i32($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1210, 5} true; + assume {:verifier.code 0} true; + $i223 := $add.i32($i211, $i211); + call {:cexpr "b"} boogie_si_record_i32($i223); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1211, 7} true; + assume {:verifier.code 0} true; + $i224 := $sext.i32.i64($i223); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1211, 9} true; + assume {:verifier.code 0} true; + $i225 := $srem.i64($i224, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1211, 7} true; + assume {:verifier.code 0} true; + $i226 := $trunc.i64.i32($i225); + call {:cexpr "b"} boogie_si_record_i32($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1213, 5} true; + assume {:verifier.code 0} true; + $i227 := $add.i32($i215, $i215); + call {:cexpr "c"} boogie_si_record_i32($i227); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1214, 9} true; + assume {:verifier.code 0} true; + $i228 := $slt.i32($i222, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1214, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i228} true; + goto $bb91, $bb92; +$bb88: + assume ($i216 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1206, 7} true; + assume {:verifier.code 0} true; + $i218 := $add.i32($i212, 1); + call {:cexpr "c"} boogie_si_record_i32($i218); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1207, 3} true; + assume {:verifier.code 0} true; + $i217 := $i218; + goto $bb90; +$bb89: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1205, 14} true; + assume {:verifier.code 0} true; + assume !(($i216 == 1)); + goto $bb90; +$bb90: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i215 := $i217; + goto $bb87; +$bb91: + assume ($i228 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1215, 7} true; + assume {:verifier.code 0} true; + $i229 := $add.i32($i227, 1); + call {:cexpr "c"} boogie_si_record_i32($i229); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1216, 3} true; + assume {:verifier.code 0} true; + $i230 := $i229; + goto $bb93; +$bb92: + assume !(($i228 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1216, 16} true; + assume {:verifier.code 0} true; + $i231 := $slt.i32($i226, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1216, 14} true; + assume {:verifier.code 0} true; + $i232 := $i227; + assume {:branchcond $i231} true; + goto $bb94, $bb95; +$bb93: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1219, 5} true; + assume {:verifier.code 0} true; + $i234 := $add.i32($i222, $i222); + call {:cexpr "a"} boogie_si_record_i32($i234); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1220, 7} true; + assume {:verifier.code 0} true; + $i235 := $sext.i32.i64($i234); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1220, 9} true; + assume {:verifier.code 0} true; + $i236 := $srem.i64($i235, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1220, 7} true; + assume {:verifier.code 0} true; + $i237 := $trunc.i64.i32($i236); + call {:cexpr "a"} boogie_si_record_i32($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1221, 5} true; + assume {:verifier.code 0} true; + $i238 := $add.i32($i226, $i226); + call {:cexpr "b"} boogie_si_record_i32($i238); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1222, 7} true; + assume {:verifier.code 0} true; + $i239 := $sext.i32.i64($i238); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1222, 9} true; + assume {:verifier.code 0} true; + $i240 := $srem.i64($i239, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1222, 7} true; + assume {:verifier.code 0} true; + $i241 := $trunc.i64.i32($i240); + call {:cexpr "b"} boogie_si_record_i32($i241); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1224, 5} true; + assume {:verifier.code 0} true; + $i242 := $add.i32($i230, $i230); + call {:cexpr "c"} boogie_si_record_i32($i242); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1225, 9} true; + assume {:verifier.code 0} true; + $i243 := $slt.i32($i237, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1225, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i243} true; + goto $bb97, $bb98; +$bb94: + assume ($i231 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1217, 7} true; + assume {:verifier.code 0} true; + $i233 := $add.i32($i227, 1); + call {:cexpr "c"} boogie_si_record_i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1218, 3} true; + assume {:verifier.code 0} true; + $i232 := $i233; + goto $bb96; +$bb95: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1216, 14} true; + assume {:verifier.code 0} true; + assume !(($i231 == 1)); + goto $bb96; +$bb96: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i230 := $i232; + goto $bb93; +$bb97: + assume ($i243 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1226, 7} true; + assume {:verifier.code 0} true; + $i244 := $add.i32($i242, 1); + call {:cexpr "c"} boogie_si_record_i32($i244); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1227, 3} true; + assume {:verifier.code 0} true; + $i245 := $i244; + goto $bb99; +$bb98: + assume !(($i243 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1227, 16} true; + assume {:verifier.code 0} true; + $i246 := $slt.i32($i241, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1227, 14} true; + assume {:verifier.code 0} true; + $i247 := $i242; + assume {:branchcond $i246} true; + goto $bb100, $bb101; +$bb99: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1230, 5} true; + assume {:verifier.code 0} true; + $i249 := $add.i32($i237, $i237); + call {:cexpr "a"} boogie_si_record_i32($i249); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1231, 7} true; + assume {:verifier.code 0} true; + $i250 := $sext.i32.i64($i249); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1231, 9} true; + assume {:verifier.code 0} true; + $i251 := $srem.i64($i250, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1231, 7} true; + assume {:verifier.code 0} true; + $i252 := $trunc.i64.i32($i251); + call {:cexpr "a"} boogie_si_record_i32($i252); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1232, 5} true; + assume {:verifier.code 0} true; + $i253 := $add.i32($i241, $i241); + call {:cexpr "b"} boogie_si_record_i32($i253); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1233, 7} true; + assume {:verifier.code 0} true; + $i254 := $sext.i32.i64($i253); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1233, 9} true; + assume {:verifier.code 0} true; + $i255 := $srem.i64($i254, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1233, 7} true; + assume {:verifier.code 0} true; + $i256 := $trunc.i64.i32($i255); + call {:cexpr "b"} boogie_si_record_i32($i256); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1235, 5} true; + assume {:verifier.code 0} true; + $i257 := $add.i32($i245, $i245); + call {:cexpr "c"} boogie_si_record_i32($i257); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1236, 9} true; + assume {:verifier.code 0} true; + $i258 := $slt.i32($i252, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1236, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i258} true; + goto $bb103, $bb104; +$bb100: + assume ($i246 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1228, 7} true; + assume {:verifier.code 0} true; + $i248 := $add.i32($i242, 1); + call {:cexpr "c"} boogie_si_record_i32($i248); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1229, 3} true; + assume {:verifier.code 0} true; + $i247 := $i248; + goto $bb102; +$bb101: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1227, 14} true; + assume {:verifier.code 0} true; + assume !(($i246 == 1)); + goto $bb102; +$bb102: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i245 := $i247; + goto $bb99; +$bb103: + assume ($i258 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1237, 7} true; + assume {:verifier.code 0} true; + $i259 := $add.i32($i257, 1); + call {:cexpr "c"} boogie_si_record_i32($i259); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1238, 3} true; + assume {:verifier.code 0} true; + $i260 := $i259; + goto $bb105; +$bb104: + assume !(($i258 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1238, 16} true; + assume {:verifier.code 0} true; + $i261 := $slt.i32($i256, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1238, 14} true; + assume {:verifier.code 0} true; + $i262 := $i257; + assume {:branchcond $i261} true; + goto $bb106, $bb107; +$bb105: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1241, 5} true; + assume {:verifier.code 0} true; + $i264 := $add.i32($i252, $i252); + call {:cexpr "a"} boogie_si_record_i32($i264); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1242, 7} true; + assume {:verifier.code 0} true; + $i265 := $sext.i32.i64($i264); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1242, 9} true; + assume {:verifier.code 0} true; + $i266 := $srem.i64($i265, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1242, 7} true; + assume {:verifier.code 0} true; + $i267 := $trunc.i64.i32($i266); + call {:cexpr "a"} boogie_si_record_i32($i267); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1243, 5} true; + assume {:verifier.code 0} true; + $i268 := $add.i32($i256, $i256); + call {:cexpr "b"} boogie_si_record_i32($i268); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1244, 7} true; + assume {:verifier.code 0} true; + $i269 := $sext.i32.i64($i268); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1244, 9} true; + assume {:verifier.code 0} true; + $i270 := $srem.i64($i269, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1244, 7} true; + assume {:verifier.code 0} true; + $i271 := $trunc.i64.i32($i270); + call {:cexpr "b"} boogie_si_record_i32($i271); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1246, 5} true; + assume {:verifier.code 0} true; + $i272 := $add.i32($i260, $i260); + call {:cexpr "c"} boogie_si_record_i32($i272); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1247, 9} true; + assume {:verifier.code 0} true; + $i273 := $slt.i32($i267, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1247, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i273} true; + goto $bb109, $bb110; +$bb106: + assume ($i261 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1239, 7} true; + assume {:verifier.code 0} true; + $i263 := $add.i32($i257, 1); + call {:cexpr "c"} boogie_si_record_i32($i263); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1240, 3} true; + assume {:verifier.code 0} true; + $i262 := $i263; + goto $bb108; +$bb107: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1238, 14} true; + assume {:verifier.code 0} true; + assume !(($i261 == 1)); + goto $bb108; +$bb108: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i260 := $i262; + goto $bb105; +$bb109: + assume ($i273 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1248, 7} true; + assume {:verifier.code 0} true; + $i274 := $add.i32($i272, 1); + call {:cexpr "c"} boogie_si_record_i32($i274); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1249, 3} true; + assume {:verifier.code 0} true; + $i275 := $i274; + goto $bb111; +$bb110: + assume !(($i273 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1249, 16} true; + assume {:verifier.code 0} true; + $i276 := $slt.i32($i271, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1249, 14} true; + assume {:verifier.code 0} true; + $i277 := $i272; + assume {:branchcond $i276} true; + goto $bb112, $bb113; +$bb111: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1252, 5} true; + assume {:verifier.code 0} true; + $i279 := $add.i32($i267, $i267); + call {:cexpr "a"} boogie_si_record_i32($i279); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1253, 7} true; + assume {:verifier.code 0} true; + $i280 := $sext.i32.i64($i279); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1253, 9} true; + assume {:verifier.code 0} true; + $i281 := $srem.i64($i280, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1253, 7} true; + assume {:verifier.code 0} true; + $i282 := $trunc.i64.i32($i281); + call {:cexpr "a"} boogie_si_record_i32($i282); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1254, 5} true; + assume {:verifier.code 0} true; + $i283 := $add.i32($i271, $i271); + call {:cexpr "b"} boogie_si_record_i32($i283); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1255, 7} true; + assume {:verifier.code 0} true; + $i284 := $sext.i32.i64($i283); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1255, 9} true; + assume {:verifier.code 0} true; + $i285 := $srem.i64($i284, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1255, 7} true; + assume {:verifier.code 0} true; + $i286 := $trunc.i64.i32($i285); + call {:cexpr "b"} boogie_si_record_i32($i286); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1257, 5} true; + assume {:verifier.code 0} true; + $i287 := $add.i32($i275, $i275); + call {:cexpr "c"} boogie_si_record_i32($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1258, 9} true; + assume {:verifier.code 0} true; + $i288 := $slt.i32($i282, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1258, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i288} true; + goto $bb115, $bb116; +$bb112: + assume ($i276 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1250, 7} true; + assume {:verifier.code 0} true; + $i278 := $add.i32($i272, 1); + call {:cexpr "c"} boogie_si_record_i32($i278); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1251, 3} true; + assume {:verifier.code 0} true; + $i277 := $i278; + goto $bb114; +$bb113: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1249, 14} true; + assume {:verifier.code 0} true; + assume !(($i276 == 1)); + goto $bb114; +$bb114: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i275 := $i277; + goto $bb111; +$bb115: + assume ($i288 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1259, 7} true; + assume {:verifier.code 0} true; + $i289 := $add.i32($i287, 1); + call {:cexpr "c"} boogie_si_record_i32($i289); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1260, 3} true; + assume {:verifier.code 0} true; + $i290 := $i289; + goto $bb117; +$bb116: + assume !(($i288 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1260, 16} true; + assume {:verifier.code 0} true; + $i291 := $slt.i32($i286, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1260, 14} true; + assume {:verifier.code 0} true; + $i292 := $i287; + assume {:branchcond $i291} true; + goto $bb118, $bb119; +$bb117: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1263, 5} true; + assume {:verifier.code 0} true; + $i294 := $add.i32($i282, $i282); + call {:cexpr "a"} boogie_si_record_i32($i294); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1264, 7} true; + assume {:verifier.code 0} true; + $i295 := $sext.i32.i64($i294); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1264, 9} true; + assume {:verifier.code 0} true; + $i296 := $srem.i64($i295, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1264, 7} true; + assume {:verifier.code 0} true; + $i297 := $trunc.i64.i32($i296); + call {:cexpr "a"} boogie_si_record_i32($i297); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1265, 5} true; + assume {:verifier.code 0} true; + $i298 := $add.i32($i286, $i286); + call {:cexpr "b"} boogie_si_record_i32($i298); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1266, 7} true; + assume {:verifier.code 0} true; + $i299 := $sext.i32.i64($i298); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1266, 9} true; + assume {:verifier.code 0} true; + $i300 := $srem.i64($i299, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1266, 7} true; + assume {:verifier.code 0} true; + $i301 := $trunc.i64.i32($i300); + call {:cexpr "b"} boogie_si_record_i32($i301); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1268, 5} true; + assume {:verifier.code 0} true; + $i302 := $add.i32($i290, $i290); + call {:cexpr "c"} boogie_si_record_i32($i302); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1269, 9} true; + assume {:verifier.code 0} true; + $i303 := $slt.i32($i297, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1269, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i303} true; + goto $bb121, $bb122; +$bb118: + assume ($i291 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1261, 7} true; + assume {:verifier.code 0} true; + $i293 := $add.i32($i287, 1); + call {:cexpr "c"} boogie_si_record_i32($i293); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1262, 3} true; + assume {:verifier.code 0} true; + $i292 := $i293; + goto $bb120; +$bb119: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1260, 14} true; + assume {:verifier.code 0} true; + assume !(($i291 == 1)); + goto $bb120; +$bb120: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i290 := $i292; + goto $bb117; +$bb121: + assume ($i303 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1270, 7} true; + assume {:verifier.code 0} true; + $i304 := $add.i32($i302, 1); + call {:cexpr "c"} boogie_si_record_i32($i304); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1271, 3} true; + assume {:verifier.code 0} true; + $i305 := $i304; + goto $bb123; +$bb122: + assume !(($i303 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1271, 16} true; + assume {:verifier.code 0} true; + $i306 := $slt.i32($i301, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1271, 14} true; + assume {:verifier.code 0} true; + $i307 := $i302; + assume {:branchcond $i306} true; + goto $bb124, $bb125; +$bb123: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1274, 5} true; + assume {:verifier.code 0} true; + $i309 := $add.i32($i297, $i297); + call {:cexpr "a"} boogie_si_record_i32($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1275, 7} true; + assume {:verifier.code 0} true; + $i310 := $sext.i32.i64($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1275, 9} true; + assume {:verifier.code 0} true; + $i311 := $srem.i64($i310, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1275, 7} true; + assume {:verifier.code 0} true; + $i312 := $trunc.i64.i32($i311); + call {:cexpr "a"} boogie_si_record_i32($i312); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1276, 5} true; + assume {:verifier.code 0} true; + $i313 := $add.i32($i301, $i301); + call {:cexpr "b"} boogie_si_record_i32($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1277, 7} true; + assume {:verifier.code 0} true; + $i314 := $sext.i32.i64($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1277, 9} true; + assume {:verifier.code 0} true; + $i315 := $srem.i64($i314, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1277, 7} true; + assume {:verifier.code 0} true; + $i316 := $trunc.i64.i32($i315); + call {:cexpr "b"} boogie_si_record_i32($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1279, 5} true; + assume {:verifier.code 0} true; + $i317 := $add.i32($i305, $i305); + call {:cexpr "c"} boogie_si_record_i32($i317); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1280, 9} true; + assume {:verifier.code 0} true; + $i318 := $slt.i32($i312, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1280, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i318} true; + goto $bb127, $bb128; +$bb124: + assume ($i306 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1272, 7} true; + assume {:verifier.code 0} true; + $i308 := $add.i32($i302, 1); + call {:cexpr "c"} boogie_si_record_i32($i308); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1273, 3} true; + assume {:verifier.code 0} true; + $i307 := $i308; + goto $bb126; +$bb125: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1271, 14} true; + assume {:verifier.code 0} true; + assume !(($i306 == 1)); + goto $bb126; +$bb126: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i305 := $i307; + goto $bb123; +$bb127: + assume ($i318 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1281, 7} true; + assume {:verifier.code 0} true; + $i319 := $add.i32($i317, 1); + call {:cexpr "c"} boogie_si_record_i32($i319); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1282, 3} true; + assume {:verifier.code 0} true; + $i320 := $i319; + goto $bb129; +$bb128: + assume !(($i318 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1282, 16} true; + assume {:verifier.code 0} true; + $i321 := $slt.i32($i316, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1282, 14} true; + assume {:verifier.code 0} true; + $i322 := $i317; + assume {:branchcond $i321} true; + goto $bb130, $bb131; +$bb129: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1285, 5} true; + assume {:verifier.code 0} true; + $i324 := $add.i32($i312, $i312); + call {:cexpr "a"} boogie_si_record_i32($i324); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1286, 7} true; + assume {:verifier.code 0} true; + $i325 := $sext.i32.i64($i324); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1286, 9} true; + assume {:verifier.code 0} true; + $i326 := $srem.i64($i325, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1286, 7} true; + assume {:verifier.code 0} true; + $i327 := $trunc.i64.i32($i326); + call {:cexpr "a"} boogie_si_record_i32($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1287, 5} true; + assume {:verifier.code 0} true; + $i328 := $add.i32($i316, $i316); + call {:cexpr "b"} boogie_si_record_i32($i328); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1288, 7} true; + assume {:verifier.code 0} true; + $i329 := $sext.i32.i64($i328); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1288, 9} true; + assume {:verifier.code 0} true; + $i330 := $srem.i64($i329, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1288, 7} true; + assume {:verifier.code 0} true; + $i331 := $trunc.i64.i32($i330); + call {:cexpr "b"} boogie_si_record_i32($i331); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1290, 5} true; + assume {:verifier.code 0} true; + $i332 := $add.i32($i320, $i320); + call {:cexpr "c"} boogie_si_record_i32($i332); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1291, 9} true; + assume {:verifier.code 0} true; + $i333 := $slt.i32($i327, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1291, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i333} true; + goto $bb133, $bb134; +$bb130: + assume ($i321 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1283, 7} true; + assume {:verifier.code 0} true; + $i323 := $add.i32($i317, 1); + call {:cexpr "c"} boogie_si_record_i32($i323); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1284, 3} true; + assume {:verifier.code 0} true; + $i322 := $i323; + goto $bb132; +$bb131: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1282, 14} true; + assume {:verifier.code 0} true; + assume !(($i321 == 1)); + goto $bb132; +$bb132: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i320 := $i322; + goto $bb129; +$bb133: + assume ($i333 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1292, 7} true; + assume {:verifier.code 0} true; + $i334 := $add.i32($i332, 1); + call {:cexpr "c"} boogie_si_record_i32($i334); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1293, 3} true; + assume {:verifier.code 0} true; + $i335 := $i334; + goto $bb135; +$bb134: + assume !(($i333 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1293, 16} true; + assume {:verifier.code 0} true; + $i336 := $slt.i32($i331, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1293, 14} true; + assume {:verifier.code 0} true; + $i337 := $i332; + assume {:branchcond $i336} true; + goto $bb136, $bb137; +$bb135: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1296, 5} true; + assume {:verifier.code 0} true; + $i339 := $add.i32($i327, $i327); + call {:cexpr "a"} boogie_si_record_i32($i339); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1297, 7} true; + assume {:verifier.code 0} true; + $i340 := $sext.i32.i64($i339); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1297, 9} true; + assume {:verifier.code 0} true; + $i341 := $srem.i64($i340, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1297, 7} true; + assume {:verifier.code 0} true; + $i342 := $trunc.i64.i32($i341); + call {:cexpr "a"} boogie_si_record_i32($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1298, 5} true; + assume {:verifier.code 0} true; + $i343 := $add.i32($i331, $i331); + call {:cexpr "b"} boogie_si_record_i32($i343); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1299, 7} true; + assume {:verifier.code 0} true; + $i344 := $sext.i32.i64($i343); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1299, 9} true; + assume {:verifier.code 0} true; + $i345 := $srem.i64($i344, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1299, 7} true; + assume {:verifier.code 0} true; + $i346 := $trunc.i64.i32($i345); + call {:cexpr "b"} boogie_si_record_i32($i346); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1301, 5} true; + assume {:verifier.code 0} true; + $i347 := $add.i32($i335, $i335); + call {:cexpr "c"} boogie_si_record_i32($i347); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1302, 9} true; + assume {:verifier.code 0} true; + $i348 := $slt.i32($i342, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1302, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i348} true; + goto $bb139, $bb140; +$bb136: + assume ($i336 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1294, 7} true; + assume {:verifier.code 0} true; + $i338 := $add.i32($i332, 1); + call {:cexpr "c"} boogie_si_record_i32($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1295, 3} true; + assume {:verifier.code 0} true; + $i337 := $i338; + goto $bb138; +$bb137: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1293, 14} true; + assume {:verifier.code 0} true; + assume !(($i336 == 1)); + goto $bb138; +$bb138: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i335 := $i337; + goto $bb135; +$bb139: + assume ($i348 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1303, 7} true; + assume {:verifier.code 0} true; + $i349 := $add.i32($i347, 1); + call {:cexpr "c"} boogie_si_record_i32($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1304, 3} true; + assume {:verifier.code 0} true; + $i350 := $i349; + goto $bb141; +$bb140: + assume !(($i348 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1304, 16} true; + assume {:verifier.code 0} true; + $i351 := $slt.i32($i346, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1304, 14} true; + assume {:verifier.code 0} true; + $i352 := $i347; + assume {:branchcond $i351} true; + goto $bb142, $bb143; +$bb141: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1307, 5} true; + assume {:verifier.code 0} true; + $i354 := $add.i32($i342, $i342); + call {:cexpr "a"} boogie_si_record_i32($i354); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1308, 7} true; + assume {:verifier.code 0} true; + $i355 := $sext.i32.i64($i354); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1308, 9} true; + assume {:verifier.code 0} true; + $i356 := $srem.i64($i355, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1308, 7} true; + assume {:verifier.code 0} true; + $i357 := $trunc.i64.i32($i356); + call {:cexpr "a"} boogie_si_record_i32($i357); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1309, 5} true; + assume {:verifier.code 0} true; + $i358 := $add.i32($i346, $i346); + call {:cexpr "b"} boogie_si_record_i32($i358); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1310, 7} true; + assume {:verifier.code 0} true; + $i359 := $sext.i32.i64($i358); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1310, 9} true; + assume {:verifier.code 0} true; + $i360 := $srem.i64($i359, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1310, 7} true; + assume {:verifier.code 0} true; + $i361 := $trunc.i64.i32($i360); + call {:cexpr "b"} boogie_si_record_i32($i361); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1312, 5} true; + assume {:verifier.code 0} true; + $i362 := $add.i32($i350, $i350); + call {:cexpr "c"} boogie_si_record_i32($i362); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1313, 9} true; + assume {:verifier.code 0} true; + $i363 := $slt.i32($i357, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1313, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i363} true; + goto $bb145, $bb146; +$bb142: + assume ($i351 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1305, 7} true; + assume {:verifier.code 0} true; + $i353 := $add.i32($i347, 1); + call {:cexpr "c"} boogie_si_record_i32($i353); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1306, 3} true; + assume {:verifier.code 0} true; + $i352 := $i353; + goto $bb144; +$bb143: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1304, 14} true; + assume {:verifier.code 0} true; + assume !(($i351 == 1)); + goto $bb144; +$bb144: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i350 := $i352; + goto $bb141; +$bb145: + assume ($i363 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1314, 7} true; + assume {:verifier.code 0} true; + $i364 := $add.i32($i362, 1); + call {:cexpr "c"} boogie_si_record_i32($i364); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1315, 3} true; + assume {:verifier.code 0} true; + $i365 := $i364; + goto $bb147; +$bb146: + assume !(($i363 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1315, 16} true; + assume {:verifier.code 0} true; + $i366 := $slt.i32($i361, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1315, 14} true; + assume {:verifier.code 0} true; + $i367 := $i362; + assume {:branchcond $i366} true; + goto $bb148, $bb149; +$bb147: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1318, 5} true; + assume {:verifier.code 0} true; + $i369 := $add.i32($i357, $i357); + call {:cexpr "a"} boogie_si_record_i32($i369); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1319, 7} true; + assume {:verifier.code 0} true; + $i370 := $sext.i32.i64($i369); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1319, 9} true; + assume {:verifier.code 0} true; + $i371 := $srem.i64($i370, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1319, 7} true; + assume {:verifier.code 0} true; + $i372 := $trunc.i64.i32($i371); + call {:cexpr "a"} boogie_si_record_i32($i372); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1320, 5} true; + assume {:verifier.code 0} true; + $i373 := $add.i32($i361, $i361); + call {:cexpr "b"} boogie_si_record_i32($i373); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1321, 7} true; + assume {:verifier.code 0} true; + $i374 := $sext.i32.i64($i373); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1321, 9} true; + assume {:verifier.code 0} true; + $i375 := $srem.i64($i374, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1321, 7} true; + assume {:verifier.code 0} true; + $i376 := $trunc.i64.i32($i375); + call {:cexpr "b"} boogie_si_record_i32($i376); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1323, 5} true; + assume {:verifier.code 0} true; + $i377 := $add.i32($i365, $i365); + call {:cexpr "c"} boogie_si_record_i32($i377); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1324, 9} true; + assume {:verifier.code 0} true; + $i378 := $slt.i32($i372, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1324, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i378} true; + goto $bb151, $bb152; +$bb148: + assume ($i366 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1316, 7} true; + assume {:verifier.code 0} true; + $i368 := $add.i32($i362, 1); + call {:cexpr "c"} boogie_si_record_i32($i368); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1317, 3} true; + assume {:verifier.code 0} true; + $i367 := $i368; + goto $bb150; +$bb149: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1315, 14} true; + assume {:verifier.code 0} true; + assume !(($i366 == 1)); + goto $bb150; +$bb150: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i365 := $i367; + goto $bb147; +$bb151: + assume ($i378 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1325, 7} true; + assume {:verifier.code 0} true; + $i379 := $add.i32($i377, 1); + call {:cexpr "c"} boogie_si_record_i32($i379); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1326, 3} true; + assume {:verifier.code 0} true; + $i380 := $i379; + goto $bb153; +$bb152: + assume !(($i378 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1326, 16} true; + assume {:verifier.code 0} true; + $i381 := $slt.i32($i376, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1326, 14} true; + assume {:verifier.code 0} true; + $i382 := $i377; + assume {:branchcond $i381} true; + goto $bb154, $bb155; +$bb153: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1329, 5} true; + assume {:verifier.code 0} true; + $i384 := $add.i32($i372, $i372); + call {:cexpr "a"} boogie_si_record_i32($i384); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1330, 7} true; + assume {:verifier.code 0} true; + $i385 := $sext.i32.i64($i384); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1330, 9} true; + assume {:verifier.code 0} true; + $i386 := $srem.i64($i385, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1330, 7} true; + assume {:verifier.code 0} true; + $i387 := $trunc.i64.i32($i386); + call {:cexpr "a"} boogie_si_record_i32($i387); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1331, 5} true; + assume {:verifier.code 0} true; + $i388 := $add.i32($i376, $i376); + call {:cexpr "b"} boogie_si_record_i32($i388); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1332, 7} true; + assume {:verifier.code 0} true; + $i389 := $sext.i32.i64($i388); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1332, 9} true; + assume {:verifier.code 0} true; + $i390 := $srem.i64($i389, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1332, 7} true; + assume {:verifier.code 0} true; + $i391 := $trunc.i64.i32($i390); + call {:cexpr "b"} boogie_si_record_i32($i391); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1334, 5} true; + assume {:verifier.code 0} true; + $i392 := $add.i32($i380, $i380); + call {:cexpr "c"} boogie_si_record_i32($i392); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1335, 9} true; + assume {:verifier.code 0} true; + $i393 := $slt.i32($i387, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1335, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i393} true; + goto $bb157, $bb158; +$bb154: + assume ($i381 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1327, 7} true; + assume {:verifier.code 0} true; + $i383 := $add.i32($i377, 1); + call {:cexpr "c"} boogie_si_record_i32($i383); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1328, 3} true; + assume {:verifier.code 0} true; + $i382 := $i383; + goto $bb156; +$bb155: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1326, 14} true; + assume {:verifier.code 0} true; + assume !(($i381 == 1)); + goto $bb156; +$bb156: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i380 := $i382; + goto $bb153; +$bb157: + assume ($i393 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1336, 7} true; + assume {:verifier.code 0} true; + $i394 := $add.i32($i392, 1); + call {:cexpr "c"} boogie_si_record_i32($i394); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1337, 3} true; + assume {:verifier.code 0} true; + $i395 := $i394; + goto $bb159; +$bb158: + assume !(($i393 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1337, 16} true; + assume {:verifier.code 0} true; + $i396 := $slt.i32($i391, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1337, 14} true; + assume {:verifier.code 0} true; + $i397 := $i392; + assume {:branchcond $i396} true; + goto $bb160, $bb161; +$bb159: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1340, 5} true; + assume {:verifier.code 0} true; + $i399 := $add.i32($i387, $i387); + call {:cexpr "a"} boogie_si_record_i32($i399); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1341, 7} true; + assume {:verifier.code 0} true; + $i400 := $sext.i32.i64($i399); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1341, 9} true; + assume {:verifier.code 0} true; + $i401 := $srem.i64($i400, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1341, 7} true; + assume {:verifier.code 0} true; + $i402 := $trunc.i64.i32($i401); + call {:cexpr "a"} boogie_si_record_i32($i402); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1342, 5} true; + assume {:verifier.code 0} true; + $i403 := $add.i32($i391, $i391); + call {:cexpr "b"} boogie_si_record_i32($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1343, 7} true; + assume {:verifier.code 0} true; + $i404 := $sext.i32.i64($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1343, 9} true; + assume {:verifier.code 0} true; + $i405 := $srem.i64($i404, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1343, 7} true; + assume {:verifier.code 0} true; + $i406 := $trunc.i64.i32($i405); + call {:cexpr "b"} boogie_si_record_i32($i406); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1345, 5} true; + assume {:verifier.code 0} true; + $i407 := $add.i32($i395, $i395); + call {:cexpr "c"} boogie_si_record_i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1346, 9} true; + assume {:verifier.code 0} true; + $i408 := $slt.i32($i402, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1346, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i408} true; + goto $bb163, $bb164; +$bb160: + assume ($i396 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1338, 7} true; + assume {:verifier.code 0} true; + $i398 := $add.i32($i392, 1); + call {:cexpr "c"} boogie_si_record_i32($i398); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1339, 3} true; + assume {:verifier.code 0} true; + $i397 := $i398; + goto $bb162; +$bb161: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1337, 14} true; + assume {:verifier.code 0} true; + assume !(($i396 == 1)); + goto $bb162; +$bb162: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i395 := $i397; + goto $bb159; +$bb163: + assume ($i408 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1347, 7} true; + assume {:verifier.code 0} true; + $i409 := $add.i32($i407, 1); + call {:cexpr "c"} boogie_si_record_i32($i409); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1348, 3} true; + assume {:verifier.code 0} true; + $i410 := $i409; + goto $bb165; +$bb164: + assume !(($i408 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1348, 16} true; + assume {:verifier.code 0} true; + $i411 := $slt.i32($i406, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1348, 14} true; + assume {:verifier.code 0} true; + $i412 := $i407; + assume {:branchcond $i411} true; + goto $bb166, $bb167; +$bb165: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1351, 5} true; + assume {:verifier.code 0} true; + $i414 := $add.i32($i402, $i402); + call {:cexpr "a"} boogie_si_record_i32($i414); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1352, 7} true; + assume {:verifier.code 0} true; + $i415 := $sext.i32.i64($i414); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1352, 9} true; + assume {:verifier.code 0} true; + $i416 := $srem.i64($i415, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1352, 7} true; + assume {:verifier.code 0} true; + $i417 := $trunc.i64.i32($i416); + call {:cexpr "a"} boogie_si_record_i32($i417); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1353, 5} true; + assume {:verifier.code 0} true; + $i418 := $add.i32($i406, $i406); + call {:cexpr "b"} boogie_si_record_i32($i418); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1354, 7} true; + assume {:verifier.code 0} true; + $i419 := $sext.i32.i64($i418); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1354, 9} true; + assume {:verifier.code 0} true; + $i420 := $srem.i64($i419, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1354, 7} true; + assume {:verifier.code 0} true; + $i421 := $trunc.i64.i32($i420); + call {:cexpr "b"} boogie_si_record_i32($i421); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1356, 5} true; + assume {:verifier.code 0} true; + $i422 := $add.i32($i410, $i410); + call {:cexpr "c"} boogie_si_record_i32($i422); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1357, 9} true; + assume {:verifier.code 0} true; + $i423 := $slt.i32($i417, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1357, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i423} true; + goto $bb169, $bb170; +$bb166: + assume ($i411 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1349, 7} true; + assume {:verifier.code 0} true; + $i413 := $add.i32($i407, 1); + call {:cexpr "c"} boogie_si_record_i32($i413); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1350, 3} true; + assume {:verifier.code 0} true; + $i412 := $i413; + goto $bb168; +$bb167: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1348, 14} true; + assume {:verifier.code 0} true; + assume !(($i411 == 1)); + goto $bb168; +$bb168: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i410 := $i412; + goto $bb165; +$bb169: + assume ($i423 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1358, 7} true; + assume {:verifier.code 0} true; + $i424 := $add.i32($i422, 1); + call {:cexpr "c"} boogie_si_record_i32($i424); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1359, 3} true; + assume {:verifier.code 0} true; + $i425 := $i424; + goto $bb171; +$bb170: + assume !(($i423 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1359, 16} true; + assume {:verifier.code 0} true; + $i426 := $slt.i32($i421, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1359, 14} true; + assume {:verifier.code 0} true; + $i427 := $i422; + assume {:branchcond $i426} true; + goto $bb172, $bb173; +$bb171: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1362, 5} true; + assume {:verifier.code 0} true; + $i429 := $add.i32($i417, $i417); + call {:cexpr "a"} boogie_si_record_i32($i429); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1363, 7} true; + assume {:verifier.code 0} true; + $i430 := $sext.i32.i64($i429); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1363, 9} true; + assume {:verifier.code 0} true; + $i431 := $srem.i64($i430, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1363, 7} true; + assume {:verifier.code 0} true; + $i432 := $trunc.i64.i32($i431); + call {:cexpr "a"} boogie_si_record_i32($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1364, 5} true; + assume {:verifier.code 0} true; + $i433 := $add.i32($i421, $i421); + call {:cexpr "b"} boogie_si_record_i32($i433); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1365, 7} true; + assume {:verifier.code 0} true; + $i434 := $sext.i32.i64($i433); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1365, 9} true; + assume {:verifier.code 0} true; + $i435 := $srem.i64($i434, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1365, 7} true; + assume {:verifier.code 0} true; + $i436 := $trunc.i64.i32($i435); + call {:cexpr "b"} boogie_si_record_i32($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1367, 5} true; + assume {:verifier.code 0} true; + $i437 := $add.i32($i425, $i425); + call {:cexpr "c"} boogie_si_record_i32($i437); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1368, 9} true; + assume {:verifier.code 0} true; + $i438 := $slt.i32($i432, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1368, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i438} true; + goto $bb175, $bb176; +$bb172: + assume ($i426 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1360, 7} true; + assume {:verifier.code 0} true; + $i428 := $add.i32($i422, 1); + call {:cexpr "c"} boogie_si_record_i32($i428); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1361, 3} true; + assume {:verifier.code 0} true; + $i427 := $i428; + goto $bb174; +$bb173: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1359, 14} true; + assume {:verifier.code 0} true; + assume !(($i426 == 1)); + goto $bb174; +$bb174: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i425 := $i427; + goto $bb171; +$bb175: + assume ($i438 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1369, 7} true; + assume {:verifier.code 0} true; + $i439 := $add.i32($i437, 1); + call {:cexpr "c"} boogie_si_record_i32($i439); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1370, 3} true; + assume {:verifier.code 0} true; + $i440 := $i439; + goto $bb177; +$bb176: + assume !(($i438 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1370, 16} true; + assume {:verifier.code 0} true; + $i441 := $slt.i32($i436, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1370, 14} true; + assume {:verifier.code 0} true; + $i442 := $i437; + assume {:branchcond $i441} true; + goto $bb178, $bb179; +$bb177: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1373, 5} true; + assume {:verifier.code 0} true; + $i444 := $add.i32($i432, $i432); + call {:cexpr "a"} boogie_si_record_i32($i444); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1374, 7} true; + assume {:verifier.code 0} true; + $i445 := $sext.i32.i64($i444); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1374, 9} true; + assume {:verifier.code 0} true; + $i446 := $srem.i64($i445, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1374, 7} true; + assume {:verifier.code 0} true; + $i447 := $trunc.i64.i32($i446); + call {:cexpr "a"} boogie_si_record_i32($i447); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1375, 5} true; + assume {:verifier.code 0} true; + $i448 := $add.i32($i436, $i436); + call {:cexpr "b"} boogie_si_record_i32($i448); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1376, 7} true; + assume {:verifier.code 0} true; + $i449 := $sext.i32.i64($i448); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1376, 9} true; + assume {:verifier.code 0} true; + $i450 := $srem.i64($i449, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1376, 7} true; + assume {:verifier.code 0} true; + $i451 := $trunc.i64.i32($i450); + call {:cexpr "b"} boogie_si_record_i32($i451); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1378, 5} true; + assume {:verifier.code 0} true; + $i452 := $add.i32($i440, $i440); + call {:cexpr "c"} boogie_si_record_i32($i452); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1379, 9} true; + assume {:verifier.code 0} true; + $i453 := $slt.i32($i447, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1379, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i453} true; + goto $bb181, $bb182; +$bb178: + assume ($i441 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1371, 7} true; + assume {:verifier.code 0} true; + $i443 := $add.i32($i437, 1); + call {:cexpr "c"} boogie_si_record_i32($i443); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1372, 3} true; + assume {:verifier.code 0} true; + $i442 := $i443; + goto $bb180; +$bb179: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1370, 14} true; + assume {:verifier.code 0} true; + assume !(($i441 == 1)); + goto $bb180; +$bb180: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i440 := $i442; + goto $bb177; +$bb181: + assume ($i453 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1380, 7} true; + assume {:verifier.code 0} true; + $i454 := $add.i32($i452, 1); + call {:cexpr "c"} boogie_si_record_i32($i454); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1381, 3} true; + assume {:verifier.code 0} true; + $i455 := $i454; + goto $bb183; +$bb182: + assume !(($i453 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1381, 16} true; + assume {:verifier.code 0} true; + $i456 := $slt.i32($i451, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1381, 14} true; + assume {:verifier.code 0} true; + $i457 := $i452; + assume {:branchcond $i456} true; + goto $bb184, $bb185; +$bb183: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1384, 5} true; + assume {:verifier.code 0} true; + $i459 := $add.i32($i447, $i447); + call {:cexpr "a"} boogie_si_record_i32($i459); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1385, 7} true; + assume {:verifier.code 0} true; + $i460 := $sext.i32.i64($i459); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1385, 9} true; + assume {:verifier.code 0} true; + $i461 := $srem.i64($i460, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1385, 7} true; + assume {:verifier.code 0} true; + $i462 := $trunc.i64.i32($i461); + call {:cexpr "a"} boogie_si_record_i32($i462); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1386, 5} true; + assume {:verifier.code 0} true; + $i463 := $add.i32($i451, $i451); + call {:cexpr "b"} boogie_si_record_i32($i463); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1387, 7} true; + assume {:verifier.code 0} true; + $i464 := $sext.i32.i64($i463); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1387, 9} true; + assume {:verifier.code 0} true; + $i465 := $srem.i64($i464, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1387, 7} true; + assume {:verifier.code 0} true; + $i466 := $trunc.i64.i32($i465); + call {:cexpr "b"} boogie_si_record_i32($i466); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1389, 5} true; + assume {:verifier.code 0} true; + $i467 := $add.i32($i455, $i455); + call {:cexpr "c"} boogie_si_record_i32($i467); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1390, 9} true; + assume {:verifier.code 0} true; + $i468 := $slt.i32($i462, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1390, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i468} true; + goto $bb187, $bb188; +$bb184: + assume ($i456 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1382, 7} true; + assume {:verifier.code 0} true; + $i458 := $add.i32($i452, 1); + call {:cexpr "c"} boogie_si_record_i32($i458); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1383, 3} true; + assume {:verifier.code 0} true; + $i457 := $i458; + goto $bb186; +$bb185: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1381, 14} true; + assume {:verifier.code 0} true; + assume !(($i456 == 1)); + goto $bb186; +$bb186: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i455 := $i457; + goto $bb183; +$bb187: + assume ($i468 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1391, 7} true; + assume {:verifier.code 0} true; + $i469 := $add.i32($i467, 1); + call {:cexpr "c"} boogie_si_record_i32($i469); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1392, 3} true; + assume {:verifier.code 0} true; + $i470 := $i469; + goto $bb189; +$bb188: + assume !(($i468 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1392, 16} true; + assume {:verifier.code 0} true; + $i471 := $slt.i32($i466, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1392, 14} true; + assume {:verifier.code 0} true; + $i472 := $i467; + assume {:branchcond $i471} true; + goto $bb190, $bb191; +$bb189: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1400, 3} true; + assume {:verifier.code 0} true; + $r := $i470; + $exn := false; + return; +$bb190: + assume ($i471 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1393, 7} true; + assume {:verifier.code 0} true; + $i473 := $add.i32($i467, 1); + call {:cexpr "c"} boogie_si_record_i32($i473); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1394, 3} true; + assume {:verifier.code 0} true; + $i472 := $i473; + goto $bb192; +$bb191: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1392, 14} true; + assume {:verifier.code 0} true; + assume !(($i471 == 1)); + goto $bb192; +$bb192: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i470 := $i472; + goto $bb189; +} +const __SMACK_or64: ref; +axiom (__SMACK_or64 == $sub.ref(0, 21668)); +procedure __SMACK_or64($i0: i64, $i1: i64) + returns ($r: i64) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i64; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 63} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_or64:arg:a"} boogie_si_record_i64($i0); + call {:cexpr "__SMACK_or64:arg:b"} boogie_si_record_i64($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 63} true; + assume {:verifier.code 1} true; + $i2 := $trunc.i64.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 66} true; + assume {:verifier.code 1} true; + $i3 := $trunc.i64.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 50} true; + assume {:verifier.code 1} true; + call $i4 := __SMACK_or32($i2, $i3); + call {:cexpr "smack:ext:__SMACK_or32"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 44} true; + assume {:verifier.code 0} true; + $i5 := $sext.i32.i64($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 37} true; + assume {:verifier.code 0} true; + $r := $i5; + $exn := false; + return; +} +const __SMACK_or16: ref; +axiom (__SMACK_or16 == $sub.ref(0, 22700)); +procedure __SMACK_or16($i0: i16, $i1: i16) + returns ($r: i16) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i16; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 67} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_or16:arg:a"} boogie_si_record_i16($i0); + call {:cexpr "__SMACK_or16:arg:b"} boogie_si_record_i16($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 67} true; + assume {:verifier.code 1} true; + $i2 := $sext.i16.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 70} true; + assume {:verifier.code 1} true; + $i3 := $sext.i16.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 54} true; + assume {:verifier.code 1} true; + call $i4 := __SMACK_or32($i2, $i3); + call {:cexpr "smack:ext:__SMACK_or32"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 47} true; + assume {:verifier.code 0} true; + $i5 := $trunc.i32.i16($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 40} true; + assume {:verifier.code 0} true; + $r := $i5; + $exn := false; + return; +} +const __SMACK_or8: ref; +axiom (__SMACK_or8 == $sub.ref(0, 23732)); +procedure __SMACK_or8($i0: i8, $i1: i8) + returns ($r: i8) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i8; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 62} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_or8:arg:a"} boogie_si_record_i8($i0); + call {:cexpr "__SMACK_or8:arg:b"} boogie_si_record_i8($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 62} true; + assume {:verifier.code 1} true; + $i2 := $sext.i8.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 65} true; + assume {:verifier.code 1} true; + $i3 := $sext.i8.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 49} true; + assume {:verifier.code 1} true; + call $i4 := __SMACK_or32($i2, $i3); + call {:cexpr "smack:ext:__SMACK_or32"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 43} true; + assume {:verifier.code 0} true; + $i5 := $trunc.i32.i8($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 36} true; + assume {:verifier.code 0} true; + $r := $i5; + $exn := false; + return; +} +const __SMACK_check_overflow: ref; +axiom (__SMACK_check_overflow == $sub.ref(0, 24764)); +procedure __SMACK_check_overflow($i0: i32) +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_check_overflow:arg:flag"} boogie_si_record_i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + assume true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1409, 3} true; + assume {:verifier.code 1} true; + assert {:overflow} $i0 == $0; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1410, 1} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_loop_exit: ref; +axiom (__SMACK_loop_exit == $sub.ref(0, 25796)); +procedure __SMACK_loop_exit() +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1412, 32} true; + assume {:verifier.code 1} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1412, 32} true; + assume {:verifier.code 1} true; + assert {:loopexit} false; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1412, 75} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_decls: ref; +axiom (__SMACK_decls == $sub.ref(0, 26828)); +type $mop; +procedure boogie_si_record_mop(m: $mop); +const $MOP: $mop; +var $exn: bool; +var $exnv: int; +procedure corral_atomic_begin(); +procedure corral_atomic_end(); +procedure $alloc(n: ref) returns (p: ref) +{ + call corral_atomic_begin(); + call p := $$alloc(n); + call corral_atomic_end(); +} + +procedure $malloc(n: ref) returns (p: ref) +{ + call corral_atomic_begin(); + call p := $$alloc(n); + call corral_atomic_end(); +} + +var $CurrAddr:ref; + +procedure {:inline 1} $$alloc(n: ref) returns (p: ref) +modifies $CurrAddr; +{ + assume $sge.ref.bool(n, $0.ref); + if ($sgt.ref.bool(n, $0.ref)) { + p := $CurrAddr; + havoc $CurrAddr; + assume $sge.ref.bool($sub.ref($CurrAddr, n), p); + assume $sgt.ref.bool($CurrAddr, $0.ref) && $slt.ref.bool($CurrAddr, $MALLOC_TOP); + } +} + +procedure $free(p: ref); + +const __SMACK_top_decl: ref; +axiom (__SMACK_top_decl == $sub.ref(0, 27860)); +procedure __SMACK_top_decl.ref($p0: ref); +const __SMACK_init_func_memory_model: ref; +axiom (__SMACK_init_func_memory_model == $sub.ref(0, 28892)); +procedure __SMACK_init_func_memory_model() +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1885, 3} true; + assume {:verifier.code 1} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1885, 3} true; + assume {:verifier.code 1} true; + $CurrAddr := $1024.ref; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1890, 1} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_static_init: ref; +axiom (__SMACK_static_init == $sub.ref(0, 29924)); +procedure __SMACK_static_init() +{ +$bb0: + $exn := false; + return; +} +const $u0: ref; +procedure boogie_si_record_i16(x: i16); +procedure boogie_si_record_i32(x: i32); +procedure boogie_si_record_i64(x: i64); +procedure boogie_si_record_i8(x: i8); +procedure boogie_si_record_ref(x: ref); +procedure $initialize() +{ + call __SMACK_static_init(); + call __SMACK_init_func_memory_model(); + return; +} diff --git a/dartagnan/src/test/resources/miscellaneous/thread_inlining_complex_2.bpl b/dartagnan/src/test/resources/miscellaneous/thread_inlining_complex_2.bpl new file mode 100644 index 0000000000..b0c3791426 --- /dev/null +++ b/dartagnan/src/test/resources/miscellaneous/thread_inlining_complex_2.bpl @@ -0,0 +1,16222 @@ +// generated by SMACK version 2.8.0 for corral +// via /usr/local/bin/smack -q -t --no-memory-splitting --clang-options= -bpl /Users/thomashaas/IdeaProjects/Dat3M/output/thread_inlining_complex_2-opt.bpl /Users/thomashaas/IdeaProjects/Dat3M/output/thread_inlining_complex_2-opt.ll + +// Basic types +type i1 = int; +type i5 = int; +type i6 = int; +type i8 = int; +type i16 = int; +type i24 = int; +type i32 = int; +type i33 = int; +type i40 = int; +type i48 = int; +type i56 = int; +type i64 = int; +type i80 = int; +type i88 = int; +type i96 = int; +type i128 = int; +type i160 = int; +type i256 = int; +type ref = i64; +type float; + +// Basic constants +const $0: i32; +axiom ($0 == 0); +const $1: i32; +axiom ($1 == 1); +const $0.ref: ref; +axiom ($0.ref == 0); +const $1.ref: ref; +axiom ($1.ref == 1); +const $1024.ref: ref; +axiom ($1024.ref == 1024); +// Memory model constants +const $GLOBALS_BOTTOM: ref; +const $EXTERNS_BOTTOM: ref; +const $MALLOC_TOP: ref; + +// Memory maps (1 regions) +var $M.0: [ref] ref; + +// Memory address bounds +axiom ($GLOBALS_BOTTOM == $sub.ref(0, 30956)); +axiom ($EXTERNS_BOTTOM == $add.ref($GLOBALS_BOTTOM, $sub.ref(0, 32768))); +axiom ($MALLOC_TOP == 9223372036854775807); +function {:inline} $isExternal(p: ref) returns (bool) { $slt.ref.bool(p, $EXTERNS_BOTTOM) } + +// SMT bit-vector/integer conversion +function {:builtin "(_ int2bv 64)"} $int2bv.64(i: i64) returns (bv64); +function {:builtin "bv2nat"} $bv2int.64(i: bv64) returns (i64); + +// Integer arithmetic operations +function {:inline} $add.i1(i1: i1, i2: i1) returns (i1) { (i1 + i2) } +function {:inline} $add.i5(i1: i5, i2: i5) returns (i5) { (i1 + i2) } +function {:inline} $add.i6(i1: i6, i2: i6) returns (i6) { (i1 + i2) } +function {:inline} $add.i8(i1: i8, i2: i8) returns (i8) { (i1 + i2) } +function {:inline} $add.i16(i1: i16, i2: i16) returns (i16) { (i1 + i2) } +function {:inline} $add.i24(i1: i24, i2: i24) returns (i24) { (i1 + i2) } +function {:inline} $add.i32(i1: i32, i2: i32) returns (i32) { (i1 + i2) } +function {:inline} $add.i33(i1: i33, i2: i33) returns (i33) { (i1 + i2) } +function {:inline} $add.i40(i1: i40, i2: i40) returns (i40) { (i1 + i2) } +function {:inline} $add.i48(i1: i48, i2: i48) returns (i48) { (i1 + i2) } +function {:inline} $add.i56(i1: i56, i2: i56) returns (i56) { (i1 + i2) } +function {:inline} $add.i64(i1: i64, i2: i64) returns (i64) { (i1 + i2) } +function {:inline} $add.i80(i1: i80, i2: i80) returns (i80) { (i1 + i2) } +function {:inline} $add.i88(i1: i88, i2: i88) returns (i88) { (i1 + i2) } +function {:inline} $add.i96(i1: i96, i2: i96) returns (i96) { (i1 + i2) } +function {:inline} $add.i128(i1: i128, i2: i128) returns (i128) { (i1 + i2) } +function {:inline} $add.i160(i1: i160, i2: i160) returns (i160) { (i1 + i2) } +function {:inline} $add.i256(i1: i256, i2: i256) returns (i256) { (i1 + i2) } +function {:inline} $sub.i1(i1: i1, i2: i1) returns (i1) { (i1 - i2) } +function {:inline} $sub.i5(i1: i5, i2: i5) returns (i5) { (i1 - i2) } +function {:inline} $sub.i6(i1: i6, i2: i6) returns (i6) { (i1 - i2) } +function {:inline} $sub.i8(i1: i8, i2: i8) returns (i8) { (i1 - i2) } +function {:inline} $sub.i16(i1: i16, i2: i16) returns (i16) { (i1 - i2) } +function {:inline} $sub.i24(i1: i24, i2: i24) returns (i24) { (i1 - i2) } +function {:inline} $sub.i32(i1: i32, i2: i32) returns (i32) { (i1 - i2) } +function {:inline} $sub.i33(i1: i33, i2: i33) returns (i33) { (i1 - i2) } +function {:inline} $sub.i40(i1: i40, i2: i40) returns (i40) { (i1 - i2) } +function {:inline} $sub.i48(i1: i48, i2: i48) returns (i48) { (i1 - i2) } +function {:inline} $sub.i56(i1: i56, i2: i56) returns (i56) { (i1 - i2) } +function {:inline} $sub.i64(i1: i64, i2: i64) returns (i64) { (i1 - i2) } +function {:inline} $sub.i80(i1: i80, i2: i80) returns (i80) { (i1 - i2) } +function {:inline} $sub.i88(i1: i88, i2: i88) returns (i88) { (i1 - i2) } +function {:inline} $sub.i96(i1: i96, i2: i96) returns (i96) { (i1 - i2) } +function {:inline} $sub.i128(i1: i128, i2: i128) returns (i128) { (i1 - i2) } +function {:inline} $sub.i160(i1: i160, i2: i160) returns (i160) { (i1 - i2) } +function {:inline} $sub.i256(i1: i256, i2: i256) returns (i256) { (i1 - i2) } +function {:inline} $mul.i1(i1: i1, i2: i1) returns (i1) { (i1 * i2) } +function {:inline} $mul.i5(i1: i5, i2: i5) returns (i5) { (i1 * i2) } +function {:inline} $mul.i6(i1: i6, i2: i6) returns (i6) { (i1 * i2) } +function {:inline} $mul.i8(i1: i8, i2: i8) returns (i8) { (i1 * i2) } +function {:inline} $mul.i16(i1: i16, i2: i16) returns (i16) { (i1 * i2) } +function {:inline} $mul.i24(i1: i24, i2: i24) returns (i24) { (i1 * i2) } +function {:inline} $mul.i32(i1: i32, i2: i32) returns (i32) { (i1 * i2) } +function {:inline} $mul.i33(i1: i33, i2: i33) returns (i33) { (i1 * i2) } +function {:inline} $mul.i40(i1: i40, i2: i40) returns (i40) { (i1 * i2) } +function {:inline} $mul.i48(i1: i48, i2: i48) returns (i48) { (i1 * i2) } +function {:inline} $mul.i56(i1: i56, i2: i56) returns (i56) { (i1 * i2) } +function {:inline} $mul.i64(i1: i64, i2: i64) returns (i64) { (i1 * i2) } +function {:inline} $mul.i80(i1: i80, i2: i80) returns (i80) { (i1 * i2) } +function {:inline} $mul.i88(i1: i88, i2: i88) returns (i88) { (i1 * i2) } +function {:inline} $mul.i96(i1: i96, i2: i96) returns (i96) { (i1 * i2) } +function {:inline} $mul.i128(i1: i128, i2: i128) returns (i128) { (i1 * i2) } +function {:inline} $mul.i160(i1: i160, i2: i160) returns (i160) { (i1 * i2) } +function {:inline} $mul.i256(i1: i256, i2: i256) returns (i256) { (i1 * i2) } +function {:builtin "div"} $idiv.i1(i1: i1, i2: i1) returns (i1); +function {:builtin "div"} $idiv.i5(i1: i5, i2: i5) returns (i5); +function {:builtin "div"} $idiv.i6(i1: i6, i2: i6) returns (i6); +function {:builtin "div"} $idiv.i8(i1: i8, i2: i8) returns (i8); +function {:builtin "div"} $idiv.i16(i1: i16, i2: i16) returns (i16); +function {:builtin "div"} $idiv.i24(i1: i24, i2: i24) returns (i24); +function {:builtin "div"} $idiv.i32(i1: i32, i2: i32) returns (i32); +function {:builtin "div"} $idiv.i33(i1: i33, i2: i33) returns (i33); +function {:builtin "div"} $idiv.i40(i1: i40, i2: i40) returns (i40); +function {:builtin "div"} $idiv.i48(i1: i48, i2: i48) returns (i48); +function {:builtin "div"} $idiv.i56(i1: i56, i2: i56) returns (i56); +function {:builtin "div"} $idiv.i64(i1: i64, i2: i64) returns (i64); +function {:builtin "div"} $idiv.i80(i1: i80, i2: i80) returns (i80); +function {:builtin "div"} $idiv.i88(i1: i88, i2: i88) returns (i88); +function {:builtin "div"} $idiv.i96(i1: i96, i2: i96) returns (i96); +function {:builtin "div"} $idiv.i128(i1: i128, i2: i128) returns (i128); +function {:builtin "div"} $idiv.i160(i1: i160, i2: i160) returns (i160); +function {:builtin "div"} $idiv.i256(i1: i256, i2: i256) returns (i256); +function {:inline} $sdiv.i1(i1: i1, i2: i1) returns (i1) { $idiv.i1(i1, i2) } +function {:inline} $sdiv.i5(i1: i5, i2: i5) returns (i5) { $idiv.i5(i1, i2) } +function {:inline} $sdiv.i6(i1: i6, i2: i6) returns (i6) { $idiv.i6(i1, i2) } +function {:inline} $sdiv.i8(i1: i8, i2: i8) returns (i8) { $idiv.i8(i1, i2) } +function {:inline} $sdiv.i16(i1: i16, i2: i16) returns (i16) { $idiv.i16(i1, i2) } +function {:inline} $sdiv.i24(i1: i24, i2: i24) returns (i24) { $idiv.i24(i1, i2) } +function {:inline} $sdiv.i32(i1: i32, i2: i32) returns (i32) { $idiv.i32(i1, i2) } +function {:inline} $sdiv.i33(i1: i33, i2: i33) returns (i33) { $idiv.i33(i1, i2) } +function {:inline} $sdiv.i40(i1: i40, i2: i40) returns (i40) { $idiv.i40(i1, i2) } +function {:inline} $sdiv.i48(i1: i48, i2: i48) returns (i48) { $idiv.i48(i1, i2) } +function {:inline} $sdiv.i56(i1: i56, i2: i56) returns (i56) { $idiv.i56(i1, i2) } +function {:inline} $sdiv.i64(i1: i64, i2: i64) returns (i64) { $idiv.i64(i1, i2) } +function {:inline} $sdiv.i80(i1: i80, i2: i80) returns (i80) { $idiv.i80(i1, i2) } +function {:inline} $sdiv.i88(i1: i88, i2: i88) returns (i88) { $idiv.i88(i1, i2) } +function {:inline} $sdiv.i96(i1: i96, i2: i96) returns (i96) { $idiv.i96(i1, i2) } +function {:inline} $sdiv.i128(i1: i128, i2: i128) returns (i128) { $idiv.i128(i1, i2) } +function {:inline} $sdiv.i160(i1: i160, i2: i160) returns (i160) { $idiv.i160(i1, i2) } +function {:inline} $sdiv.i256(i1: i256, i2: i256) returns (i256) { $idiv.i256(i1, i2) } +function {:inline} $udiv.i1(i1: i1, i2: i1) returns (i1) { $idiv.i1(i1, i2) } +function {:inline} $udiv.i5(i1: i5, i2: i5) returns (i5) { $idiv.i5(i1, i2) } +function {:inline} $udiv.i6(i1: i6, i2: i6) returns (i6) { $idiv.i6(i1, i2) } +function {:inline} $udiv.i8(i1: i8, i2: i8) returns (i8) { $idiv.i8(i1, i2) } +function {:inline} $udiv.i16(i1: i16, i2: i16) returns (i16) { $idiv.i16(i1, i2) } +function {:inline} $udiv.i24(i1: i24, i2: i24) returns (i24) { $idiv.i24(i1, i2) } +function {:inline} $udiv.i32(i1: i32, i2: i32) returns (i32) { $idiv.i32(i1, i2) } +function {:inline} $udiv.i33(i1: i33, i2: i33) returns (i33) { $idiv.i33(i1, i2) } +function {:inline} $udiv.i40(i1: i40, i2: i40) returns (i40) { $idiv.i40(i1, i2) } +function {:inline} $udiv.i48(i1: i48, i2: i48) returns (i48) { $idiv.i48(i1, i2) } +function {:inline} $udiv.i56(i1: i56, i2: i56) returns (i56) { $idiv.i56(i1, i2) } +function {:inline} $udiv.i64(i1: i64, i2: i64) returns (i64) { $idiv.i64(i1, i2) } +function {:inline} $udiv.i80(i1: i80, i2: i80) returns (i80) { $idiv.i80(i1, i2) } +function {:inline} $udiv.i88(i1: i88, i2: i88) returns (i88) { $idiv.i88(i1, i2) } +function {:inline} $udiv.i96(i1: i96, i2: i96) returns (i96) { $idiv.i96(i1, i2) } +function {:inline} $udiv.i128(i1: i128, i2: i128) returns (i128) { $idiv.i128(i1, i2) } +function {:inline} $udiv.i160(i1: i160, i2: i160) returns (i160) { $idiv.i160(i1, i2) } +function {:inline} $udiv.i256(i1: i256, i2: i256) returns (i256) { $idiv.i256(i1, i2) } +function {:builtin "mod"} $smod.i1(i1: i1, i2: i1) returns (i1); +function {:builtin "mod"} $smod.i5(i1: i5, i2: i5) returns (i5); +function {:builtin "mod"} $smod.i6(i1: i6, i2: i6) returns (i6); +function {:builtin "mod"} $smod.i8(i1: i8, i2: i8) returns (i8); +function {:builtin "mod"} $smod.i16(i1: i16, i2: i16) returns (i16); +function {:builtin "mod"} $smod.i24(i1: i24, i2: i24) returns (i24); +function {:builtin "mod"} $smod.i32(i1: i32, i2: i32) returns (i32); +function {:builtin "mod"} $smod.i33(i1: i33, i2: i33) returns (i33); +function {:builtin "mod"} $smod.i40(i1: i40, i2: i40) returns (i40); +function {:builtin "mod"} $smod.i48(i1: i48, i2: i48) returns (i48); +function {:builtin "mod"} $smod.i56(i1: i56, i2: i56) returns (i56); +function {:builtin "mod"} $smod.i64(i1: i64, i2: i64) returns (i64); +function {:builtin "mod"} $smod.i80(i1: i80, i2: i80) returns (i80); +function {:builtin "mod"} $smod.i88(i1: i88, i2: i88) returns (i88); +function {:builtin "mod"} $smod.i96(i1: i96, i2: i96) returns (i96); +function {:builtin "mod"} $smod.i128(i1: i128, i2: i128) returns (i128); +function {:builtin "mod"} $smod.i160(i1: i160, i2: i160) returns (i160); +function {:builtin "mod"} $smod.i256(i1: i256, i2: i256) returns (i256); +function {:inline} $srem.i1(i1: i1, i2: i1) returns (i1) { (if ($ne.i1.bool($smod.i1(i1, i2), 0) && $slt.i1.bool(i1, 0)) then $sub.i1($smod.i1(i1, i2), $smax.i1(i2, $sub.i1(0, i2))) else $smod.i1(i1, i2)) } +function {:inline} $srem.i5(i1: i5, i2: i5) returns (i5) { (if ($ne.i5.bool($smod.i5(i1, i2), 0) && $slt.i5.bool(i1, 0)) then $sub.i5($smod.i5(i1, i2), $smax.i5(i2, $sub.i5(0, i2))) else $smod.i5(i1, i2)) } +function {:inline} $srem.i6(i1: i6, i2: i6) returns (i6) { (if ($ne.i6.bool($smod.i6(i1, i2), 0) && $slt.i6.bool(i1, 0)) then $sub.i6($smod.i6(i1, i2), $smax.i6(i2, $sub.i6(0, i2))) else $smod.i6(i1, i2)) } +function {:inline} $srem.i8(i1: i8, i2: i8) returns (i8) { (if ($ne.i8.bool($smod.i8(i1, i2), 0) && $slt.i8.bool(i1, 0)) then $sub.i8($smod.i8(i1, i2), $smax.i8(i2, $sub.i8(0, i2))) else $smod.i8(i1, i2)) } +function {:inline} $srem.i16(i1: i16, i2: i16) returns (i16) { (if ($ne.i16.bool($smod.i16(i1, i2), 0) && $slt.i16.bool(i1, 0)) then $sub.i16($smod.i16(i1, i2), $smax.i16(i2, $sub.i16(0, i2))) else $smod.i16(i1, i2)) } +function {:inline} $srem.i24(i1: i24, i2: i24) returns (i24) { (if ($ne.i24.bool($smod.i24(i1, i2), 0) && $slt.i24.bool(i1, 0)) then $sub.i24($smod.i24(i1, i2), $smax.i24(i2, $sub.i24(0, i2))) else $smod.i24(i1, i2)) } +function {:inline} $srem.i32(i1: i32, i2: i32) returns (i32) { (if ($ne.i32.bool($smod.i32(i1, i2), 0) && $slt.i32.bool(i1, 0)) then $sub.i32($smod.i32(i1, i2), $smax.i32(i2, $sub.i32(0, i2))) else $smod.i32(i1, i2)) } +function {:inline} $srem.i33(i1: i33, i2: i33) returns (i33) { (if ($ne.i33.bool($smod.i33(i1, i2), 0) && $slt.i33.bool(i1, 0)) then $sub.i33($smod.i33(i1, i2), $smax.i33(i2, $sub.i33(0, i2))) else $smod.i33(i1, i2)) } +function {:inline} $srem.i40(i1: i40, i2: i40) returns (i40) { (if ($ne.i40.bool($smod.i40(i1, i2), 0) && $slt.i40.bool(i1, 0)) then $sub.i40($smod.i40(i1, i2), $smax.i40(i2, $sub.i40(0, i2))) else $smod.i40(i1, i2)) } +function {:inline} $srem.i48(i1: i48, i2: i48) returns (i48) { (if ($ne.i48.bool($smod.i48(i1, i2), 0) && $slt.i48.bool(i1, 0)) then $sub.i48($smod.i48(i1, i2), $smax.i48(i2, $sub.i48(0, i2))) else $smod.i48(i1, i2)) } +function {:inline} $srem.i56(i1: i56, i2: i56) returns (i56) { (if ($ne.i56.bool($smod.i56(i1, i2), 0) && $slt.i56.bool(i1, 0)) then $sub.i56($smod.i56(i1, i2), $smax.i56(i2, $sub.i56(0, i2))) else $smod.i56(i1, i2)) } +function {:inline} $srem.i64(i1: i64, i2: i64) returns (i64) { (if ($ne.i64.bool($smod.i64(i1, i2), 0) && $slt.i64.bool(i1, 0)) then $sub.i64($smod.i64(i1, i2), $smax.i64(i2, $sub.i64(0, i2))) else $smod.i64(i1, i2)) } +function {:inline} $srem.i80(i1: i80, i2: i80) returns (i80) { (if ($ne.i80.bool($smod.i80(i1, i2), 0) && $slt.i80.bool(i1, 0)) then $sub.i80($smod.i80(i1, i2), $smax.i80(i2, $sub.i80(0, i2))) else $smod.i80(i1, i2)) } +function {:inline} $srem.i88(i1: i88, i2: i88) returns (i88) { (if ($ne.i88.bool($smod.i88(i1, i2), 0) && $slt.i88.bool(i1, 0)) then $sub.i88($smod.i88(i1, i2), $smax.i88(i2, $sub.i88(0, i2))) else $smod.i88(i1, i2)) } +function {:inline} $srem.i96(i1: i96, i2: i96) returns (i96) { (if ($ne.i96.bool($smod.i96(i1, i2), 0) && $slt.i96.bool(i1, 0)) then $sub.i96($smod.i96(i1, i2), $smax.i96(i2, $sub.i96(0, i2))) else $smod.i96(i1, i2)) } +function {:inline} $srem.i128(i1: i128, i2: i128) returns (i128) { (if ($ne.i128.bool($smod.i128(i1, i2), 0) && $slt.i128.bool(i1, 0)) then $sub.i128($smod.i128(i1, i2), $smax.i128(i2, $sub.i128(0, i2))) else $smod.i128(i1, i2)) } +function {:inline} $srem.i160(i1: i160, i2: i160) returns (i160) { (if ($ne.i160.bool($smod.i160(i1, i2), 0) && $slt.i160.bool(i1, 0)) then $sub.i160($smod.i160(i1, i2), $smax.i160(i2, $sub.i160(0, i2))) else $smod.i160(i1, i2)) } +function {:inline} $srem.i256(i1: i256, i2: i256) returns (i256) { (if ($ne.i256.bool($smod.i256(i1, i2), 0) && $slt.i256.bool(i1, 0)) then $sub.i256($smod.i256(i1, i2), $smax.i256(i2, $sub.i256(0, i2))) else $smod.i256(i1, i2)) } +function {:inline} $urem.i1(i1: i1, i2: i1) returns (i1) { $smod.i1(i1, i2) } +function {:inline} $urem.i5(i1: i5, i2: i5) returns (i5) { $smod.i5(i1, i2) } +function {:inline} $urem.i6(i1: i6, i2: i6) returns (i6) { $smod.i6(i1, i2) } +function {:inline} $urem.i8(i1: i8, i2: i8) returns (i8) { $smod.i8(i1, i2) } +function {:inline} $urem.i16(i1: i16, i2: i16) returns (i16) { $smod.i16(i1, i2) } +function {:inline} $urem.i24(i1: i24, i2: i24) returns (i24) { $smod.i24(i1, i2) } +function {:inline} $urem.i32(i1: i32, i2: i32) returns (i32) { $smod.i32(i1, i2) } +function {:inline} $urem.i33(i1: i33, i2: i33) returns (i33) { $smod.i33(i1, i2) } +function {:inline} $urem.i40(i1: i40, i2: i40) returns (i40) { $smod.i40(i1, i2) } +function {:inline} $urem.i48(i1: i48, i2: i48) returns (i48) { $smod.i48(i1, i2) } +function {:inline} $urem.i56(i1: i56, i2: i56) returns (i56) { $smod.i56(i1, i2) } +function {:inline} $urem.i64(i1: i64, i2: i64) returns (i64) { $smod.i64(i1, i2) } +function {:inline} $urem.i80(i1: i80, i2: i80) returns (i80) { $smod.i80(i1, i2) } +function {:inline} $urem.i88(i1: i88, i2: i88) returns (i88) { $smod.i88(i1, i2) } +function {:inline} $urem.i96(i1: i96, i2: i96) returns (i96) { $smod.i96(i1, i2) } +function {:inline} $urem.i128(i1: i128, i2: i128) returns (i128) { $smod.i128(i1, i2) } +function {:inline} $urem.i160(i1: i160, i2: i160) returns (i160) { $smod.i160(i1, i2) } +function {:inline} $urem.i256(i1: i256, i2: i256) returns (i256) { $smod.i256(i1, i2) } +function $shl.i1(i1: i1, i2: i1) returns (i1); +function $shl.i5(i1: i5, i2: i5) returns (i5); +function $shl.i6(i1: i6, i2: i6) returns (i6); +function $shl.i8(i1: i8, i2: i8) returns (i8); +function $shl.i16(i1: i16, i2: i16) returns (i16); +function $shl.i24(i1: i24, i2: i24) returns (i24); +function $shl.i32(i1: i32, i2: i32) returns (i32); +function $shl.i33(i1: i33, i2: i33) returns (i33); +function $shl.i40(i1: i40, i2: i40) returns (i40); +function $shl.i48(i1: i48, i2: i48) returns (i48); +function $shl.i56(i1: i56, i2: i56) returns (i56); +function $shl.i64(i1: i64, i2: i64) returns (i64); +function $shl.i80(i1: i80, i2: i80) returns (i80); +function $shl.i88(i1: i88, i2: i88) returns (i88); +function $shl.i96(i1: i96, i2: i96) returns (i96); +function $shl.i128(i1: i128, i2: i128) returns (i128); +function $shl.i160(i1: i160, i2: i160) returns (i160); +function $shl.i256(i1: i256, i2: i256) returns (i256); +function $lshr.i1(i1: i1, i2: i1) returns (i1); +function $lshr.i5(i1: i5, i2: i5) returns (i5); +function $lshr.i6(i1: i6, i2: i6) returns (i6); +function $lshr.i8(i1: i8, i2: i8) returns (i8); +function $lshr.i16(i1: i16, i2: i16) returns (i16); +function $lshr.i24(i1: i24, i2: i24) returns (i24); +function $lshr.i32(i1: i32, i2: i32) returns (i32); +function $lshr.i33(i1: i33, i2: i33) returns (i33); +function $lshr.i40(i1: i40, i2: i40) returns (i40); +function $lshr.i48(i1: i48, i2: i48) returns (i48); +function $lshr.i56(i1: i56, i2: i56) returns (i56); +function $lshr.i64(i1: i64, i2: i64) returns (i64); +function $lshr.i80(i1: i80, i2: i80) returns (i80); +function $lshr.i88(i1: i88, i2: i88) returns (i88); +function $lshr.i96(i1: i96, i2: i96) returns (i96); +function $lshr.i128(i1: i128, i2: i128) returns (i128); +function $lshr.i160(i1: i160, i2: i160) returns (i160); +function $lshr.i256(i1: i256, i2: i256) returns (i256); +function $ashr.i1(i1: i1, i2: i1) returns (i1); +function $ashr.i5(i1: i5, i2: i5) returns (i5); +function $ashr.i6(i1: i6, i2: i6) returns (i6); +function $ashr.i8(i1: i8, i2: i8) returns (i8); +function $ashr.i16(i1: i16, i2: i16) returns (i16); +function $ashr.i24(i1: i24, i2: i24) returns (i24); +function $ashr.i32(i1: i32, i2: i32) returns (i32); +function $ashr.i33(i1: i33, i2: i33) returns (i33); +function $ashr.i40(i1: i40, i2: i40) returns (i40); +function $ashr.i48(i1: i48, i2: i48) returns (i48); +function $ashr.i56(i1: i56, i2: i56) returns (i56); +function $ashr.i64(i1: i64, i2: i64) returns (i64); +function $ashr.i80(i1: i80, i2: i80) returns (i80); +function $ashr.i88(i1: i88, i2: i88) returns (i88); +function $ashr.i96(i1: i96, i2: i96) returns (i96); +function $ashr.i128(i1: i128, i2: i128) returns (i128); +function $ashr.i160(i1: i160, i2: i160) returns (i160); +function $ashr.i256(i1: i256, i2: i256) returns (i256); +function $and.i1(i1: i1, i2: i1) returns (i1); +function $and.i5(i1: i5, i2: i5) returns (i5); +function $and.i6(i1: i6, i2: i6) returns (i6); +function $and.i8(i1: i8, i2: i8) returns (i8); +function $and.i16(i1: i16, i2: i16) returns (i16); +function $and.i24(i1: i24, i2: i24) returns (i24); +function $and.i32(i1: i32, i2: i32) returns (i32); +function $and.i33(i1: i33, i2: i33) returns (i33); +function $and.i40(i1: i40, i2: i40) returns (i40); +function $and.i48(i1: i48, i2: i48) returns (i48); +function $and.i56(i1: i56, i2: i56) returns (i56); +function $and.i64(i1: i64, i2: i64) returns (i64); +function $and.i80(i1: i80, i2: i80) returns (i80); +function $and.i88(i1: i88, i2: i88) returns (i88); +function $and.i96(i1: i96, i2: i96) returns (i96); +function $and.i128(i1: i128, i2: i128) returns (i128); +function $and.i160(i1: i160, i2: i160) returns (i160); +function $and.i256(i1: i256, i2: i256) returns (i256); +function $or.i1(i1: i1, i2: i1) returns (i1); +function $or.i5(i1: i5, i2: i5) returns (i5); +function $or.i6(i1: i6, i2: i6) returns (i6); +function $or.i8(i1: i8, i2: i8) returns (i8); +function $or.i16(i1: i16, i2: i16) returns (i16); +function $or.i24(i1: i24, i2: i24) returns (i24); +function $or.i32(i1: i32, i2: i32) returns (i32); +function $or.i33(i1: i33, i2: i33) returns (i33); +function $or.i40(i1: i40, i2: i40) returns (i40); +function $or.i48(i1: i48, i2: i48) returns (i48); +function $or.i56(i1: i56, i2: i56) returns (i56); +function $or.i64(i1: i64, i2: i64) returns (i64); +function $or.i80(i1: i80, i2: i80) returns (i80); +function $or.i88(i1: i88, i2: i88) returns (i88); +function $or.i96(i1: i96, i2: i96) returns (i96); +function $or.i128(i1: i128, i2: i128) returns (i128); +function $or.i160(i1: i160, i2: i160) returns (i160); +function $or.i256(i1: i256, i2: i256) returns (i256); +function $xor.i1(i1: i1, i2: i1) returns (i1); +function $xor.i5(i1: i5, i2: i5) returns (i5); +function $xor.i6(i1: i6, i2: i6) returns (i6); +function $xor.i8(i1: i8, i2: i8) returns (i8); +function $xor.i16(i1: i16, i2: i16) returns (i16); +function $xor.i24(i1: i24, i2: i24) returns (i24); +function $xor.i32(i1: i32, i2: i32) returns (i32); +function $xor.i33(i1: i33, i2: i33) returns (i33); +function $xor.i40(i1: i40, i2: i40) returns (i40); +function $xor.i48(i1: i48, i2: i48) returns (i48); +function $xor.i56(i1: i56, i2: i56) returns (i56); +function $xor.i64(i1: i64, i2: i64) returns (i64); +function $xor.i80(i1: i80, i2: i80) returns (i80); +function $xor.i88(i1: i88, i2: i88) returns (i88); +function $xor.i96(i1: i96, i2: i96) returns (i96); +function $xor.i128(i1: i128, i2: i128) returns (i128); +function $xor.i160(i1: i160, i2: i160) returns (i160); +function $xor.i256(i1: i256, i2: i256) returns (i256); +function $nand.i1(i1: i1, i2: i1) returns (i1); +function $nand.i5(i1: i5, i2: i5) returns (i5); +function $nand.i6(i1: i6, i2: i6) returns (i6); +function $nand.i8(i1: i8, i2: i8) returns (i8); +function $nand.i16(i1: i16, i2: i16) returns (i16); +function $nand.i24(i1: i24, i2: i24) returns (i24); +function $nand.i32(i1: i32, i2: i32) returns (i32); +function $nand.i33(i1: i33, i2: i33) returns (i33); +function $nand.i40(i1: i40, i2: i40) returns (i40); +function $nand.i48(i1: i48, i2: i48) returns (i48); +function $nand.i56(i1: i56, i2: i56) returns (i56); +function $nand.i64(i1: i64, i2: i64) returns (i64); +function $nand.i80(i1: i80, i2: i80) returns (i80); +function $nand.i88(i1: i88, i2: i88) returns (i88); +function $nand.i96(i1: i96, i2: i96) returns (i96); +function $nand.i128(i1: i128, i2: i128) returns (i128); +function $nand.i160(i1: i160, i2: i160) returns (i160); +function $nand.i256(i1: i256, i2: i256) returns (i256); +function $not.i1(i: i1) returns (i1); +function $not.i5(i: i5) returns (i5); +function $not.i6(i: i6) returns (i6); +function $not.i8(i: i8) returns (i8); +function $not.i16(i: i16) returns (i16); +function $not.i24(i: i24) returns (i24); +function $not.i32(i: i32) returns (i32); +function $not.i33(i: i33) returns (i33); +function $not.i40(i: i40) returns (i40); +function $not.i48(i: i48) returns (i48); +function $not.i56(i: i56) returns (i56); +function $not.i64(i: i64) returns (i64); +function $not.i80(i: i80) returns (i80); +function $not.i88(i: i88) returns (i88); +function $not.i96(i: i96) returns (i96); +function $not.i128(i: i128) returns (i128); +function $not.i160(i: i160) returns (i160); +function $not.i256(i: i256) returns (i256); +function {:inline} $smin.i1(i1: i1, i2: i1) returns (i1) { (if $slt.i1.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i5(i1: i5, i2: i5) returns (i5) { (if $slt.i5.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i6(i1: i6, i2: i6) returns (i6) { (if $slt.i6.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i8(i1: i8, i2: i8) returns (i8) { (if $slt.i8.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i16(i1: i16, i2: i16) returns (i16) { (if $slt.i16.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i24(i1: i24, i2: i24) returns (i24) { (if $slt.i24.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i32(i1: i32, i2: i32) returns (i32) { (if $slt.i32.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i33(i1: i33, i2: i33) returns (i33) { (if $slt.i33.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i40(i1: i40, i2: i40) returns (i40) { (if $slt.i40.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i48(i1: i48, i2: i48) returns (i48) { (if $slt.i48.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i56(i1: i56, i2: i56) returns (i56) { (if $slt.i56.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i64(i1: i64, i2: i64) returns (i64) { (if $slt.i64.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i80(i1: i80, i2: i80) returns (i80) { (if $slt.i80.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i88(i1: i88, i2: i88) returns (i88) { (if $slt.i88.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i96(i1: i96, i2: i96) returns (i96) { (if $slt.i96.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i128(i1: i128, i2: i128) returns (i128) { (if $slt.i128.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i160(i1: i160, i2: i160) returns (i160) { (if $slt.i160.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i256(i1: i256, i2: i256) returns (i256) { (if $slt.i256.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i1(i1: i1, i2: i1) returns (i1) { (if $sgt.i1.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i5(i1: i5, i2: i5) returns (i5) { (if $sgt.i5.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i6(i1: i6, i2: i6) returns (i6) { (if $sgt.i6.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i8(i1: i8, i2: i8) returns (i8) { (if $sgt.i8.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i16(i1: i16, i2: i16) returns (i16) { (if $sgt.i16.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i24(i1: i24, i2: i24) returns (i24) { (if $sgt.i24.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i32(i1: i32, i2: i32) returns (i32) { (if $sgt.i32.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i33(i1: i33, i2: i33) returns (i33) { (if $sgt.i33.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i40(i1: i40, i2: i40) returns (i40) { (if $sgt.i40.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i48(i1: i48, i2: i48) returns (i48) { (if $sgt.i48.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i56(i1: i56, i2: i56) returns (i56) { (if $sgt.i56.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i64(i1: i64, i2: i64) returns (i64) { (if $sgt.i64.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i80(i1: i80, i2: i80) returns (i80) { (if $sgt.i80.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i88(i1: i88, i2: i88) returns (i88) { (if $sgt.i88.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i96(i1: i96, i2: i96) returns (i96) { (if $sgt.i96.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i128(i1: i128, i2: i128) returns (i128) { (if $sgt.i128.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i160(i1: i160, i2: i160) returns (i160) { (if $sgt.i160.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i256(i1: i256, i2: i256) returns (i256) { (if $sgt.i256.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i1(i1: i1, i2: i1) returns (i1) { (if $ult.i1.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i5(i1: i5, i2: i5) returns (i5) { (if $ult.i5.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i6(i1: i6, i2: i6) returns (i6) { (if $ult.i6.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i8(i1: i8, i2: i8) returns (i8) { (if $ult.i8.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i16(i1: i16, i2: i16) returns (i16) { (if $ult.i16.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i24(i1: i24, i2: i24) returns (i24) { (if $ult.i24.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i32(i1: i32, i2: i32) returns (i32) { (if $ult.i32.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i33(i1: i33, i2: i33) returns (i33) { (if $ult.i33.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i40(i1: i40, i2: i40) returns (i40) { (if $ult.i40.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i48(i1: i48, i2: i48) returns (i48) { (if $ult.i48.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i56(i1: i56, i2: i56) returns (i56) { (if $ult.i56.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i64(i1: i64, i2: i64) returns (i64) { (if $ult.i64.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i80(i1: i80, i2: i80) returns (i80) { (if $ult.i80.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i88(i1: i88, i2: i88) returns (i88) { (if $ult.i88.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i96(i1: i96, i2: i96) returns (i96) { (if $ult.i96.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i128(i1: i128, i2: i128) returns (i128) { (if $ult.i128.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i160(i1: i160, i2: i160) returns (i160) { (if $ult.i160.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i256(i1: i256, i2: i256) returns (i256) { (if $ult.i256.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i1(i1: i1, i2: i1) returns (i1) { (if $ugt.i1.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i5(i1: i5, i2: i5) returns (i5) { (if $ugt.i5.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i6(i1: i6, i2: i6) returns (i6) { (if $ugt.i6.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i8(i1: i8, i2: i8) returns (i8) { (if $ugt.i8.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i16(i1: i16, i2: i16) returns (i16) { (if $ugt.i16.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i24(i1: i24, i2: i24) returns (i24) { (if $ugt.i24.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i32(i1: i32, i2: i32) returns (i32) { (if $ugt.i32.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i33(i1: i33, i2: i33) returns (i33) { (if $ugt.i33.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i40(i1: i40, i2: i40) returns (i40) { (if $ugt.i40.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i48(i1: i48, i2: i48) returns (i48) { (if $ugt.i48.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i56(i1: i56, i2: i56) returns (i56) { (if $ugt.i56.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i64(i1: i64, i2: i64) returns (i64) { (if $ugt.i64.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i80(i1: i80, i2: i80) returns (i80) { (if $ugt.i80.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i88(i1: i88, i2: i88) returns (i88) { (if $ugt.i88.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i96(i1: i96, i2: i96) returns (i96) { (if $ugt.i96.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i128(i1: i128, i2: i128) returns (i128) { (if $ugt.i128.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i160(i1: i160, i2: i160) returns (i160) { (if $ugt.i160.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i256(i1: i256, i2: i256) returns (i256) { (if $ugt.i256.bool(i1, i2) then i1 else i2) } +axiom ($and.i1(0, 0) == 0); +axiom ($or.i1(0, 0) == 0); +axiom ($xor.i1(0, 0) == 0); +axiom ($and.i1(0, 1) == 0); +axiom ($or.i1(0, 1) == 1); +axiom ($xor.i1(0, 1) == 1); +axiom ($and.i1(1, 0) == 0); +axiom ($or.i1(1, 0) == 1); +axiom ($xor.i1(1, 0) == 1); +axiom ($and.i1(1, 1) == 1); +axiom ($or.i1(1, 1) == 1); +axiom ($xor.i1(1, 1) == 0); +axiom ($and.i32(32, 16) == 0); +// Integer predicates +function {:inline} $ule.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i1(i1: i1, i2: i1) returns (i1) { (if $ule.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i5(i1: i5, i2: i5) returns (i1) { (if $ule.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i6(i1: i6, i2: i6) returns (i1) { (if $ule.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i8(i1: i8, i2: i8) returns (i1) { (if $ule.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i16(i1: i16, i2: i16) returns (i1) { (if $ule.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i24(i1: i24, i2: i24) returns (i1) { (if $ule.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i32(i1: i32, i2: i32) returns (i1) { (if $ule.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i33(i1: i33, i2: i33) returns (i1) { (if $ule.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i40(i1: i40, i2: i40) returns (i1) { (if $ule.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i48(i1: i48, i2: i48) returns (i1) { (if $ule.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i56(i1: i56, i2: i56) returns (i1) { (if $ule.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i64(i1: i64, i2: i64) returns (i1) { (if $ule.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i80(i1: i80, i2: i80) returns (i1) { (if $ule.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i88(i1: i88, i2: i88) returns (i1) { (if $ule.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i96(i1: i96, i2: i96) returns (i1) { (if $ule.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i128(i1: i128, i2: i128) returns (i1) { (if $ule.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i160(i1: i160, i2: i160) returns (i1) { (if $ule.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i256(i1: i256, i2: i256) returns (i1) { (if $ule.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 < i2) } +function {:inline} $ult.i1(i1: i1, i2: i1) returns (i1) { (if $ult.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 < i2) } +function {:inline} $ult.i5(i1: i5, i2: i5) returns (i1) { (if $ult.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 < i2) } +function {:inline} $ult.i6(i1: i6, i2: i6) returns (i1) { (if $ult.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 < i2) } +function {:inline} $ult.i8(i1: i8, i2: i8) returns (i1) { (if $ult.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 < i2) } +function {:inline} $ult.i16(i1: i16, i2: i16) returns (i1) { (if $ult.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 < i2) } +function {:inline} $ult.i24(i1: i24, i2: i24) returns (i1) { (if $ult.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 < i2) } +function {:inline} $ult.i32(i1: i32, i2: i32) returns (i1) { (if $ult.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 < i2) } +function {:inline} $ult.i33(i1: i33, i2: i33) returns (i1) { (if $ult.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 < i2) } +function {:inline} $ult.i40(i1: i40, i2: i40) returns (i1) { (if $ult.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 < i2) } +function {:inline} $ult.i48(i1: i48, i2: i48) returns (i1) { (if $ult.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 < i2) } +function {:inline} $ult.i56(i1: i56, i2: i56) returns (i1) { (if $ult.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 < i2) } +function {:inline} $ult.i64(i1: i64, i2: i64) returns (i1) { (if $ult.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 < i2) } +function {:inline} $ult.i80(i1: i80, i2: i80) returns (i1) { (if $ult.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 < i2) } +function {:inline} $ult.i88(i1: i88, i2: i88) returns (i1) { (if $ult.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 < i2) } +function {:inline} $ult.i96(i1: i96, i2: i96) returns (i1) { (if $ult.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 < i2) } +function {:inline} $ult.i128(i1: i128, i2: i128) returns (i1) { (if $ult.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 < i2) } +function {:inline} $ult.i160(i1: i160, i2: i160) returns (i1) { (if $ult.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 < i2) } +function {:inline} $ult.i256(i1: i256, i2: i256) returns (i1) { (if $ult.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i1(i1: i1, i2: i1) returns (i1) { (if $uge.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i5(i1: i5, i2: i5) returns (i1) { (if $uge.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i6(i1: i6, i2: i6) returns (i1) { (if $uge.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i8(i1: i8, i2: i8) returns (i1) { (if $uge.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i16(i1: i16, i2: i16) returns (i1) { (if $uge.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i24(i1: i24, i2: i24) returns (i1) { (if $uge.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i32(i1: i32, i2: i32) returns (i1) { (if $uge.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i33(i1: i33, i2: i33) returns (i1) { (if $uge.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i40(i1: i40, i2: i40) returns (i1) { (if $uge.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i48(i1: i48, i2: i48) returns (i1) { (if $uge.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i56(i1: i56, i2: i56) returns (i1) { (if $uge.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i64(i1: i64, i2: i64) returns (i1) { (if $uge.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i80(i1: i80, i2: i80) returns (i1) { (if $uge.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i88(i1: i88, i2: i88) returns (i1) { (if $uge.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i96(i1: i96, i2: i96) returns (i1) { (if $uge.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i128(i1: i128, i2: i128) returns (i1) { (if $uge.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i160(i1: i160, i2: i160) returns (i1) { (if $uge.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i256(i1: i256, i2: i256) returns (i1) { (if $uge.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i1(i1: i1, i2: i1) returns (i1) { (if $ugt.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i5(i1: i5, i2: i5) returns (i1) { (if $ugt.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i6(i1: i6, i2: i6) returns (i1) { (if $ugt.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i8(i1: i8, i2: i8) returns (i1) { (if $ugt.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i16(i1: i16, i2: i16) returns (i1) { (if $ugt.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i24(i1: i24, i2: i24) returns (i1) { (if $ugt.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i32(i1: i32, i2: i32) returns (i1) { (if $ugt.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i33(i1: i33, i2: i33) returns (i1) { (if $ugt.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i40(i1: i40, i2: i40) returns (i1) { (if $ugt.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i48(i1: i48, i2: i48) returns (i1) { (if $ugt.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i56(i1: i56, i2: i56) returns (i1) { (if $ugt.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i64(i1: i64, i2: i64) returns (i1) { (if $ugt.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i80(i1: i80, i2: i80) returns (i1) { (if $ugt.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i88(i1: i88, i2: i88) returns (i1) { (if $ugt.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i96(i1: i96, i2: i96) returns (i1) { (if $ugt.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i128(i1: i128, i2: i128) returns (i1) { (if $ugt.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i160(i1: i160, i2: i160) returns (i1) { (if $ugt.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i256(i1: i256, i2: i256) returns (i1) { (if $ugt.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i1(i1: i1, i2: i1) returns (i1) { (if $sle.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i5(i1: i5, i2: i5) returns (i1) { (if $sle.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i6(i1: i6, i2: i6) returns (i1) { (if $sle.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i8(i1: i8, i2: i8) returns (i1) { (if $sle.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i16(i1: i16, i2: i16) returns (i1) { (if $sle.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i24(i1: i24, i2: i24) returns (i1) { (if $sle.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i32(i1: i32, i2: i32) returns (i1) { (if $sle.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i33(i1: i33, i2: i33) returns (i1) { (if $sle.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i40(i1: i40, i2: i40) returns (i1) { (if $sle.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i48(i1: i48, i2: i48) returns (i1) { (if $sle.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i56(i1: i56, i2: i56) returns (i1) { (if $sle.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i64(i1: i64, i2: i64) returns (i1) { (if $sle.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i80(i1: i80, i2: i80) returns (i1) { (if $sle.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i88(i1: i88, i2: i88) returns (i1) { (if $sle.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i96(i1: i96, i2: i96) returns (i1) { (if $sle.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i128(i1: i128, i2: i128) returns (i1) { (if $sle.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i160(i1: i160, i2: i160) returns (i1) { (if $sle.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i256(i1: i256, i2: i256) returns (i1) { (if $sle.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 < i2) } +function {:inline} $slt.i1(i1: i1, i2: i1) returns (i1) { (if $slt.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 < i2) } +function {:inline} $slt.i5(i1: i5, i2: i5) returns (i1) { (if $slt.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 < i2) } +function {:inline} $slt.i6(i1: i6, i2: i6) returns (i1) { (if $slt.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 < i2) } +function {:inline} $slt.i8(i1: i8, i2: i8) returns (i1) { (if $slt.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 < i2) } +function {:inline} $slt.i16(i1: i16, i2: i16) returns (i1) { (if $slt.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 < i2) } +function {:inline} $slt.i24(i1: i24, i2: i24) returns (i1) { (if $slt.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 < i2) } +function {:inline} $slt.i32(i1: i32, i2: i32) returns (i1) { (if $slt.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 < i2) } +function {:inline} $slt.i33(i1: i33, i2: i33) returns (i1) { (if $slt.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 < i2) } +function {:inline} $slt.i40(i1: i40, i2: i40) returns (i1) { (if $slt.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 < i2) } +function {:inline} $slt.i48(i1: i48, i2: i48) returns (i1) { (if $slt.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 < i2) } +function {:inline} $slt.i56(i1: i56, i2: i56) returns (i1) { (if $slt.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 < i2) } +function {:inline} $slt.i64(i1: i64, i2: i64) returns (i1) { (if $slt.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 < i2) } +function {:inline} $slt.i80(i1: i80, i2: i80) returns (i1) { (if $slt.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 < i2) } +function {:inline} $slt.i88(i1: i88, i2: i88) returns (i1) { (if $slt.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 < i2) } +function {:inline} $slt.i96(i1: i96, i2: i96) returns (i1) { (if $slt.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 < i2) } +function {:inline} $slt.i128(i1: i128, i2: i128) returns (i1) { (if $slt.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 < i2) } +function {:inline} $slt.i160(i1: i160, i2: i160) returns (i1) { (if $slt.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 < i2) } +function {:inline} $slt.i256(i1: i256, i2: i256) returns (i1) { (if $slt.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i1(i1: i1, i2: i1) returns (i1) { (if $sge.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i5(i1: i5, i2: i5) returns (i1) { (if $sge.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i6(i1: i6, i2: i6) returns (i1) { (if $sge.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i8(i1: i8, i2: i8) returns (i1) { (if $sge.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i16(i1: i16, i2: i16) returns (i1) { (if $sge.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i24(i1: i24, i2: i24) returns (i1) { (if $sge.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i32(i1: i32, i2: i32) returns (i1) { (if $sge.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i33(i1: i33, i2: i33) returns (i1) { (if $sge.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i40(i1: i40, i2: i40) returns (i1) { (if $sge.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i48(i1: i48, i2: i48) returns (i1) { (if $sge.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i56(i1: i56, i2: i56) returns (i1) { (if $sge.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i64(i1: i64, i2: i64) returns (i1) { (if $sge.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i80(i1: i80, i2: i80) returns (i1) { (if $sge.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i88(i1: i88, i2: i88) returns (i1) { (if $sge.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i96(i1: i96, i2: i96) returns (i1) { (if $sge.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i128(i1: i128, i2: i128) returns (i1) { (if $sge.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i160(i1: i160, i2: i160) returns (i1) { (if $sge.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i256(i1: i256, i2: i256) returns (i1) { (if $sge.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i1(i1: i1, i2: i1) returns (i1) { (if $sgt.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i5(i1: i5, i2: i5) returns (i1) { (if $sgt.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i6(i1: i6, i2: i6) returns (i1) { (if $sgt.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i8(i1: i8, i2: i8) returns (i1) { (if $sgt.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i16(i1: i16, i2: i16) returns (i1) { (if $sgt.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i24(i1: i24, i2: i24) returns (i1) { (if $sgt.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i32(i1: i32, i2: i32) returns (i1) { (if $sgt.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i33(i1: i33, i2: i33) returns (i1) { (if $sgt.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i40(i1: i40, i2: i40) returns (i1) { (if $sgt.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i48(i1: i48, i2: i48) returns (i1) { (if $sgt.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i56(i1: i56, i2: i56) returns (i1) { (if $sgt.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i64(i1: i64, i2: i64) returns (i1) { (if $sgt.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i80(i1: i80, i2: i80) returns (i1) { (if $sgt.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i88(i1: i88, i2: i88) returns (i1) { (if $sgt.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i96(i1: i96, i2: i96) returns (i1) { (if $sgt.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i128(i1: i128, i2: i128) returns (i1) { (if $sgt.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i160(i1: i160, i2: i160) returns (i1) { (if $sgt.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i256(i1: i256, i2: i256) returns (i1) { (if $sgt.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 == i2) } +function {:inline} $eq.i1(i1: i1, i2: i1) returns (i1) { (if $eq.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 == i2) } +function {:inline} $eq.i5(i1: i5, i2: i5) returns (i1) { (if $eq.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 == i2) } +function {:inline} $eq.i6(i1: i6, i2: i6) returns (i1) { (if $eq.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 == i2) } +function {:inline} $eq.i8(i1: i8, i2: i8) returns (i1) { (if $eq.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 == i2) } +function {:inline} $eq.i16(i1: i16, i2: i16) returns (i1) { (if $eq.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 == i2) } +function {:inline} $eq.i24(i1: i24, i2: i24) returns (i1) { (if $eq.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 == i2) } +function {:inline} $eq.i32(i1: i32, i2: i32) returns (i1) { (if $eq.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 == i2) } +function {:inline} $eq.i33(i1: i33, i2: i33) returns (i1) { (if $eq.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 == i2) } +function {:inline} $eq.i40(i1: i40, i2: i40) returns (i1) { (if $eq.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 == i2) } +function {:inline} $eq.i48(i1: i48, i2: i48) returns (i1) { (if $eq.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 == i2) } +function {:inline} $eq.i56(i1: i56, i2: i56) returns (i1) { (if $eq.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 == i2) } +function {:inline} $eq.i64(i1: i64, i2: i64) returns (i1) { (if $eq.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 == i2) } +function {:inline} $eq.i80(i1: i80, i2: i80) returns (i1) { (if $eq.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 == i2) } +function {:inline} $eq.i88(i1: i88, i2: i88) returns (i1) { (if $eq.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 == i2) } +function {:inline} $eq.i96(i1: i96, i2: i96) returns (i1) { (if $eq.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 == i2) } +function {:inline} $eq.i128(i1: i128, i2: i128) returns (i1) { (if $eq.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 == i2) } +function {:inline} $eq.i160(i1: i160, i2: i160) returns (i1) { (if $eq.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 == i2) } +function {:inline} $eq.i256(i1: i256, i2: i256) returns (i1) { (if $eq.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 != i2) } +function {:inline} $ne.i1(i1: i1, i2: i1) returns (i1) { (if $ne.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 != i2) } +function {:inline} $ne.i5(i1: i5, i2: i5) returns (i1) { (if $ne.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 != i2) } +function {:inline} $ne.i6(i1: i6, i2: i6) returns (i1) { (if $ne.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 != i2) } +function {:inline} $ne.i8(i1: i8, i2: i8) returns (i1) { (if $ne.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 != i2) } +function {:inline} $ne.i16(i1: i16, i2: i16) returns (i1) { (if $ne.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 != i2) } +function {:inline} $ne.i24(i1: i24, i2: i24) returns (i1) { (if $ne.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 != i2) } +function {:inline} $ne.i32(i1: i32, i2: i32) returns (i1) { (if $ne.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 != i2) } +function {:inline} $ne.i33(i1: i33, i2: i33) returns (i1) { (if $ne.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 != i2) } +function {:inline} $ne.i40(i1: i40, i2: i40) returns (i1) { (if $ne.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 != i2) } +function {:inline} $ne.i48(i1: i48, i2: i48) returns (i1) { (if $ne.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 != i2) } +function {:inline} $ne.i56(i1: i56, i2: i56) returns (i1) { (if $ne.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 != i2) } +function {:inline} $ne.i64(i1: i64, i2: i64) returns (i1) { (if $ne.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 != i2) } +function {:inline} $ne.i80(i1: i80, i2: i80) returns (i1) { (if $ne.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 != i2) } +function {:inline} $ne.i88(i1: i88, i2: i88) returns (i1) { (if $ne.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 != i2) } +function {:inline} $ne.i96(i1: i96, i2: i96) returns (i1) { (if $ne.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 != i2) } +function {:inline} $ne.i128(i1: i128, i2: i128) returns (i1) { (if $ne.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 != i2) } +function {:inline} $ne.i160(i1: i160, i2: i160) returns (i1) { (if $ne.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 != i2) } +function {:inline} $ne.i256(i1: i256, i2: i256) returns (i1) { (if $ne.i256.bool(i1, i2) then 1 else 0) } +// Integer load/store operations +function {:inline} $load.i1(M: [ref] i1, p: ref) returns (i1) { M[p] } +function {:inline} $store.i1(M: [ref] i1, p: ref, i: i1) returns ([ref] i1) { M[p := i] } +function {:inline} $load.i5(M: [ref] i5, p: ref) returns (i5) { M[p] } +function {:inline} $store.i5(M: [ref] i5, p: ref, i: i5) returns ([ref] i5) { M[p := i] } +function {:inline} $load.i6(M: [ref] i6, p: ref) returns (i6) { M[p] } +function {:inline} $store.i6(M: [ref] i6, p: ref, i: i6) returns ([ref] i6) { M[p := i] } +function {:inline} $load.i8(M: [ref] i8, p: ref) returns (i8) { M[p] } +function {:inline} $store.i8(M: [ref] i8, p: ref, i: i8) returns ([ref] i8) { M[p := i] } +function {:inline} $load.i16(M: [ref] i16, p: ref) returns (i16) { M[p] } +function {:inline} $store.i16(M: [ref] i16, p: ref, i: i16) returns ([ref] i16) { M[p := i] } +function {:inline} $load.i24(M: [ref] i24, p: ref) returns (i24) { M[p] } +function {:inline} $store.i24(M: [ref] i24, p: ref, i: i24) returns ([ref] i24) { M[p := i] } +function {:inline} $load.i32(M: [ref] i32, p: ref) returns (i32) { M[p] } +function {:inline} $store.i32(M: [ref] i32, p: ref, i: i32) returns ([ref] i32) { M[p := i] } +function {:inline} $load.i33(M: [ref] i33, p: ref) returns (i33) { M[p] } +function {:inline} $store.i33(M: [ref] i33, p: ref, i: i33) returns ([ref] i33) { M[p := i] } +function {:inline} $load.i40(M: [ref] i40, p: ref) returns (i40) { M[p] } +function {:inline} $store.i40(M: [ref] i40, p: ref, i: i40) returns ([ref] i40) { M[p := i] } +function {:inline} $load.i48(M: [ref] i48, p: ref) returns (i48) { M[p] } +function {:inline} $store.i48(M: [ref] i48, p: ref, i: i48) returns ([ref] i48) { M[p := i] } +function {:inline} $load.i56(M: [ref] i56, p: ref) returns (i56) { M[p] } +function {:inline} $store.i56(M: [ref] i56, p: ref, i: i56) returns ([ref] i56) { M[p := i] } +function {:inline} $load.i64(M: [ref] i64, p: ref) returns (i64) { M[p] } +function {:inline} $store.i64(M: [ref] i64, p: ref, i: i64) returns ([ref] i64) { M[p := i] } +function {:inline} $load.i80(M: [ref] i80, p: ref) returns (i80) { M[p] } +function {:inline} $store.i80(M: [ref] i80, p: ref, i: i80) returns ([ref] i80) { M[p := i] } +function {:inline} $load.i88(M: [ref] i88, p: ref) returns (i88) { M[p] } +function {:inline} $store.i88(M: [ref] i88, p: ref, i: i88) returns ([ref] i88) { M[p := i] } +function {:inline} $load.i96(M: [ref] i96, p: ref) returns (i96) { M[p] } +function {:inline} $store.i96(M: [ref] i96, p: ref, i: i96) returns ([ref] i96) { M[p := i] } +function {:inline} $load.i128(M: [ref] i128, p: ref) returns (i128) { M[p] } +function {:inline} $store.i128(M: [ref] i128, p: ref, i: i128) returns ([ref] i128) { M[p := i] } +function {:inline} $load.i160(M: [ref] i160, p: ref) returns (i160) { M[p] } +function {:inline} $store.i160(M: [ref] i160, p: ref, i: i160) returns ([ref] i160) { M[p := i] } +function {:inline} $load.i256(M: [ref] i256, p: ref) returns (i256) { M[p] } +function {:inline} $store.i256(M: [ref] i256, p: ref, i: i256) returns ([ref] i256) { M[p := i] } +// Conversion between integer types +function {:inline} $trunc.i5.i1(i: i5) returns (i1) { i } +function {:inline} $trunc.i6.i1(i: i6) returns (i1) { i } +function {:inline} $trunc.i8.i1(i: i8) returns (i1) { i } +function {:inline} $trunc.i16.i1(i: i16) returns (i1) { i } +function {:inline} $trunc.i24.i1(i: i24) returns (i1) { i } +function {:inline} $trunc.i32.i1(i: i32) returns (i1) { i } +function {:inline} $trunc.i33.i1(i: i33) returns (i1) { i } +function {:inline} $trunc.i40.i1(i: i40) returns (i1) { i } +function {:inline} $trunc.i48.i1(i: i48) returns (i1) { i } +function {:inline} $trunc.i56.i1(i: i56) returns (i1) { i } +function {:inline} $trunc.i64.i1(i: i64) returns (i1) { i } +function {:inline} $trunc.i80.i1(i: i80) returns (i1) { i } +function {:inline} $trunc.i88.i1(i: i88) returns (i1) { i } +function {:inline} $trunc.i96.i1(i: i96) returns (i1) { i } +function {:inline} $trunc.i128.i1(i: i128) returns (i1) { i } +function {:inline} $trunc.i160.i1(i: i160) returns (i1) { i } +function {:inline} $trunc.i256.i1(i: i256) returns (i1) { i } +function {:inline} $trunc.i6.i5(i: i6) returns (i5) { i } +function {:inline} $trunc.i8.i5(i: i8) returns (i5) { i } +function {:inline} $trunc.i16.i5(i: i16) returns (i5) { i } +function {:inline} $trunc.i24.i5(i: i24) returns (i5) { i } +function {:inline} $trunc.i32.i5(i: i32) returns (i5) { i } +function {:inline} $trunc.i33.i5(i: i33) returns (i5) { i } +function {:inline} $trunc.i40.i5(i: i40) returns (i5) { i } +function {:inline} $trunc.i48.i5(i: i48) returns (i5) { i } +function {:inline} $trunc.i56.i5(i: i56) returns (i5) { i } +function {:inline} $trunc.i64.i5(i: i64) returns (i5) { i } +function {:inline} $trunc.i80.i5(i: i80) returns (i5) { i } +function {:inline} $trunc.i88.i5(i: i88) returns (i5) { i } +function {:inline} $trunc.i96.i5(i: i96) returns (i5) { i } +function {:inline} $trunc.i128.i5(i: i128) returns (i5) { i } +function {:inline} $trunc.i160.i5(i: i160) returns (i5) { i } +function {:inline} $trunc.i256.i5(i: i256) returns (i5) { i } +function {:inline} $trunc.i8.i6(i: i8) returns (i6) { i } +function {:inline} $trunc.i16.i6(i: i16) returns (i6) { i } +function {:inline} $trunc.i24.i6(i: i24) returns (i6) { i } +function {:inline} $trunc.i32.i6(i: i32) returns (i6) { i } +function {:inline} $trunc.i33.i6(i: i33) returns (i6) { i } +function {:inline} $trunc.i40.i6(i: i40) returns (i6) { i } +function {:inline} $trunc.i48.i6(i: i48) returns (i6) { i } +function {:inline} $trunc.i56.i6(i: i56) returns (i6) { i } +function {:inline} $trunc.i64.i6(i: i64) returns (i6) { i } +function {:inline} $trunc.i80.i6(i: i80) returns (i6) { i } +function {:inline} $trunc.i88.i6(i: i88) returns (i6) { i } +function {:inline} $trunc.i96.i6(i: i96) returns (i6) { i } +function {:inline} $trunc.i128.i6(i: i128) returns (i6) { i } +function {:inline} $trunc.i160.i6(i: i160) returns (i6) { i } +function {:inline} $trunc.i256.i6(i: i256) returns (i6) { i } +function {:inline} $trunc.i16.i8(i: i16) returns (i8) { i } +function {:inline} $trunc.i24.i8(i: i24) returns (i8) { i } +function {:inline} $trunc.i32.i8(i: i32) returns (i8) { i } +function {:inline} $trunc.i33.i8(i: i33) returns (i8) { i } +function {:inline} $trunc.i40.i8(i: i40) returns (i8) { i } +function {:inline} $trunc.i48.i8(i: i48) returns (i8) { i } +function {:inline} $trunc.i56.i8(i: i56) returns (i8) { i } +function {:inline} $trunc.i64.i8(i: i64) returns (i8) { i } +function {:inline} $trunc.i80.i8(i: i80) returns (i8) { i } +function {:inline} $trunc.i88.i8(i: i88) returns (i8) { i } +function {:inline} $trunc.i96.i8(i: i96) returns (i8) { i } +function {:inline} $trunc.i128.i8(i: i128) returns (i8) { i } +function {:inline} $trunc.i160.i8(i: i160) returns (i8) { i } +function {:inline} $trunc.i256.i8(i: i256) returns (i8) { i } +function {:inline} $trunc.i24.i16(i: i24) returns (i16) { i } +function {:inline} $trunc.i32.i16(i: i32) returns (i16) { i } +function {:inline} $trunc.i33.i16(i: i33) returns (i16) { i } +function {:inline} $trunc.i40.i16(i: i40) returns (i16) { i } +function {:inline} $trunc.i48.i16(i: i48) returns (i16) { i } +function {:inline} $trunc.i56.i16(i: i56) returns (i16) { i } +function {:inline} $trunc.i64.i16(i: i64) returns (i16) { i } +function {:inline} $trunc.i80.i16(i: i80) returns (i16) { i } +function {:inline} $trunc.i88.i16(i: i88) returns (i16) { i } +function {:inline} $trunc.i96.i16(i: i96) returns (i16) { i } +function {:inline} $trunc.i128.i16(i: i128) returns (i16) { i } +function {:inline} $trunc.i160.i16(i: i160) returns (i16) { i } +function {:inline} $trunc.i256.i16(i: i256) returns (i16) { i } +function {:inline} $trunc.i32.i24(i: i32) returns (i24) { i } +function {:inline} $trunc.i33.i24(i: i33) returns (i24) { i } +function {:inline} $trunc.i40.i24(i: i40) returns (i24) { i } +function {:inline} $trunc.i48.i24(i: i48) returns (i24) { i } +function {:inline} $trunc.i56.i24(i: i56) returns (i24) { i } +function {:inline} $trunc.i64.i24(i: i64) returns (i24) { i } +function {:inline} $trunc.i80.i24(i: i80) returns (i24) { i } +function {:inline} $trunc.i88.i24(i: i88) returns (i24) { i } +function {:inline} $trunc.i96.i24(i: i96) returns (i24) { i } +function {:inline} $trunc.i128.i24(i: i128) returns (i24) { i } +function {:inline} $trunc.i160.i24(i: i160) returns (i24) { i } +function {:inline} $trunc.i256.i24(i: i256) returns (i24) { i } +function {:inline} $trunc.i33.i32(i: i33) returns (i32) { i } +function {:inline} $trunc.i40.i32(i: i40) returns (i32) { i } +function {:inline} $trunc.i48.i32(i: i48) returns (i32) { i } +function {:inline} $trunc.i56.i32(i: i56) returns (i32) { i } +function {:inline} $trunc.i64.i32(i: i64) returns (i32) { i } +function {:inline} $trunc.i80.i32(i: i80) returns (i32) { i } +function {:inline} $trunc.i88.i32(i: i88) returns (i32) { i } +function {:inline} $trunc.i96.i32(i: i96) returns (i32) { i } +function {:inline} $trunc.i128.i32(i: i128) returns (i32) { i } +function {:inline} $trunc.i160.i32(i: i160) returns (i32) { i } +function {:inline} $trunc.i256.i32(i: i256) returns (i32) { i } +function {:inline} $trunc.i40.i33(i: i40) returns (i33) { i } +function {:inline} $trunc.i48.i33(i: i48) returns (i33) { i } +function {:inline} $trunc.i56.i33(i: i56) returns (i33) { i } +function {:inline} $trunc.i64.i33(i: i64) returns (i33) { i } +function {:inline} $trunc.i80.i33(i: i80) returns (i33) { i } +function {:inline} $trunc.i88.i33(i: i88) returns (i33) { i } +function {:inline} $trunc.i96.i33(i: i96) returns (i33) { i } +function {:inline} $trunc.i128.i33(i: i128) returns (i33) { i } +function {:inline} $trunc.i160.i33(i: i160) returns (i33) { i } +function {:inline} $trunc.i256.i33(i: i256) returns (i33) { i } +function {:inline} $trunc.i48.i40(i: i48) returns (i40) { i } +function {:inline} $trunc.i56.i40(i: i56) returns (i40) { i } +function {:inline} $trunc.i64.i40(i: i64) returns (i40) { i } +function {:inline} $trunc.i80.i40(i: i80) returns (i40) { i } +function {:inline} $trunc.i88.i40(i: i88) returns (i40) { i } +function {:inline} $trunc.i96.i40(i: i96) returns (i40) { i } +function {:inline} $trunc.i128.i40(i: i128) returns (i40) { i } +function {:inline} $trunc.i160.i40(i: i160) returns (i40) { i } +function {:inline} $trunc.i256.i40(i: i256) returns (i40) { i } +function {:inline} $trunc.i56.i48(i: i56) returns (i48) { i } +function {:inline} $trunc.i64.i48(i: i64) returns (i48) { i } +function {:inline} $trunc.i80.i48(i: i80) returns (i48) { i } +function {:inline} $trunc.i88.i48(i: i88) returns (i48) { i } +function {:inline} $trunc.i96.i48(i: i96) returns (i48) { i } +function {:inline} $trunc.i128.i48(i: i128) returns (i48) { i } +function {:inline} $trunc.i160.i48(i: i160) returns (i48) { i } +function {:inline} $trunc.i256.i48(i: i256) returns (i48) { i } +function {:inline} $trunc.i64.i56(i: i64) returns (i56) { i } +function {:inline} $trunc.i80.i56(i: i80) returns (i56) { i } +function {:inline} $trunc.i88.i56(i: i88) returns (i56) { i } +function {:inline} $trunc.i96.i56(i: i96) returns (i56) { i } +function {:inline} $trunc.i128.i56(i: i128) returns (i56) { i } +function {:inline} $trunc.i160.i56(i: i160) returns (i56) { i } +function {:inline} $trunc.i256.i56(i: i256) returns (i56) { i } +function {:inline} $trunc.i80.i64(i: i80) returns (i64) { i } +function {:inline} $trunc.i88.i64(i: i88) returns (i64) { i } +function {:inline} $trunc.i96.i64(i: i96) returns (i64) { i } +function {:inline} $trunc.i128.i64(i: i128) returns (i64) { i } +function {:inline} $trunc.i160.i64(i: i160) returns (i64) { i } +function {:inline} $trunc.i256.i64(i: i256) returns (i64) { i } +function {:inline} $trunc.i88.i80(i: i88) returns (i80) { i } +function {:inline} $trunc.i96.i80(i: i96) returns (i80) { i } +function {:inline} $trunc.i128.i80(i: i128) returns (i80) { i } +function {:inline} $trunc.i160.i80(i: i160) returns (i80) { i } +function {:inline} $trunc.i256.i80(i: i256) returns (i80) { i } +function {:inline} $trunc.i96.i88(i: i96) returns (i88) { i } +function {:inline} $trunc.i128.i88(i: i128) returns (i88) { i } +function {:inline} $trunc.i160.i88(i: i160) returns (i88) { i } +function {:inline} $trunc.i256.i88(i: i256) returns (i88) { i } +function {:inline} $trunc.i128.i96(i: i128) returns (i96) { i } +function {:inline} $trunc.i160.i96(i: i160) returns (i96) { i } +function {:inline} $trunc.i256.i96(i: i256) returns (i96) { i } +function {:inline} $trunc.i160.i128(i: i160) returns (i128) { i } +function {:inline} $trunc.i256.i128(i: i256) returns (i128) { i } +function {:inline} $trunc.i256.i160(i: i256) returns (i160) { i } +function {:inline} $sext.i1.i5(i: i1) returns (i5) { i } +function {:inline} $sext.i1.i6(i: i1) returns (i6) { i } +function {:inline} $sext.i1.i8(i: i1) returns (i8) { i } +function {:inline} $sext.i1.i16(i: i1) returns (i16) { i } +function {:inline} $sext.i1.i24(i: i1) returns (i24) { i } +function {:inline} $sext.i1.i32(i: i1) returns (i32) { i } +function {:inline} $sext.i1.i33(i: i1) returns (i33) { i } +function {:inline} $sext.i1.i40(i: i1) returns (i40) { i } +function {:inline} $sext.i1.i48(i: i1) returns (i48) { i } +function {:inline} $sext.i1.i56(i: i1) returns (i56) { i } +function {:inline} $sext.i1.i64(i: i1) returns (i64) { i } +function {:inline} $sext.i1.i80(i: i1) returns (i80) { i } +function {:inline} $sext.i1.i88(i: i1) returns (i88) { i } +function {:inline} $sext.i1.i96(i: i1) returns (i96) { i } +function {:inline} $sext.i1.i128(i: i1) returns (i128) { i } +function {:inline} $sext.i1.i160(i: i1) returns (i160) { i } +function {:inline} $sext.i1.i256(i: i1) returns (i256) { i } +function {:inline} $sext.i5.i6(i: i5) returns (i6) { i } +function {:inline} $sext.i5.i8(i: i5) returns (i8) { i } +function {:inline} $sext.i5.i16(i: i5) returns (i16) { i } +function {:inline} $sext.i5.i24(i: i5) returns (i24) { i } +function {:inline} $sext.i5.i32(i: i5) returns (i32) { i } +function {:inline} $sext.i5.i33(i: i5) returns (i33) { i } +function {:inline} $sext.i5.i40(i: i5) returns (i40) { i } +function {:inline} $sext.i5.i48(i: i5) returns (i48) { i } +function {:inline} $sext.i5.i56(i: i5) returns (i56) { i } +function {:inline} $sext.i5.i64(i: i5) returns (i64) { i } +function {:inline} $sext.i5.i80(i: i5) returns (i80) { i } +function {:inline} $sext.i5.i88(i: i5) returns (i88) { i } +function {:inline} $sext.i5.i96(i: i5) returns (i96) { i } +function {:inline} $sext.i5.i128(i: i5) returns (i128) { i } +function {:inline} $sext.i5.i160(i: i5) returns (i160) { i } +function {:inline} $sext.i5.i256(i: i5) returns (i256) { i } +function {:inline} $sext.i6.i8(i: i6) returns (i8) { i } +function {:inline} $sext.i6.i16(i: i6) returns (i16) { i } +function {:inline} $sext.i6.i24(i: i6) returns (i24) { i } +function {:inline} $sext.i6.i32(i: i6) returns (i32) { i } +function {:inline} $sext.i6.i33(i: i6) returns (i33) { i } +function {:inline} $sext.i6.i40(i: i6) returns (i40) { i } +function {:inline} $sext.i6.i48(i: i6) returns (i48) { i } +function {:inline} $sext.i6.i56(i: i6) returns (i56) { i } +function {:inline} $sext.i6.i64(i: i6) returns (i64) { i } +function {:inline} $sext.i6.i80(i: i6) returns (i80) { i } +function {:inline} $sext.i6.i88(i: i6) returns (i88) { i } +function {:inline} $sext.i6.i96(i: i6) returns (i96) { i } +function {:inline} $sext.i6.i128(i: i6) returns (i128) { i } +function {:inline} $sext.i6.i160(i: i6) returns (i160) { i } +function {:inline} $sext.i6.i256(i: i6) returns (i256) { i } +function {:inline} $sext.i8.i16(i: i8) returns (i16) { i } +function {:inline} $sext.i8.i24(i: i8) returns (i24) { i } +function {:inline} $sext.i8.i32(i: i8) returns (i32) { i } +function {:inline} $sext.i8.i33(i: i8) returns (i33) { i } +function {:inline} $sext.i8.i40(i: i8) returns (i40) { i } +function {:inline} $sext.i8.i48(i: i8) returns (i48) { i } +function {:inline} $sext.i8.i56(i: i8) returns (i56) { i } +function {:inline} $sext.i8.i64(i: i8) returns (i64) { i } +function {:inline} $sext.i8.i80(i: i8) returns (i80) { i } +function {:inline} $sext.i8.i88(i: i8) returns (i88) { i } +function {:inline} $sext.i8.i96(i: i8) returns (i96) { i } +function {:inline} $sext.i8.i128(i: i8) returns (i128) { i } +function {:inline} $sext.i8.i160(i: i8) returns (i160) { i } +function {:inline} $sext.i8.i256(i: i8) returns (i256) { i } +function {:inline} $sext.i16.i24(i: i16) returns (i24) { i } +function {:inline} $sext.i16.i32(i: i16) returns (i32) { i } +function {:inline} $sext.i16.i33(i: i16) returns (i33) { i } +function {:inline} $sext.i16.i40(i: i16) returns (i40) { i } +function {:inline} $sext.i16.i48(i: i16) returns (i48) { i } +function {:inline} $sext.i16.i56(i: i16) returns (i56) { i } +function {:inline} $sext.i16.i64(i: i16) returns (i64) { i } +function {:inline} $sext.i16.i80(i: i16) returns (i80) { i } +function {:inline} $sext.i16.i88(i: i16) returns (i88) { i } +function {:inline} $sext.i16.i96(i: i16) returns (i96) { i } +function {:inline} $sext.i16.i128(i: i16) returns (i128) { i } +function {:inline} $sext.i16.i160(i: i16) returns (i160) { i } +function {:inline} $sext.i16.i256(i: i16) returns (i256) { i } +function {:inline} $sext.i24.i32(i: i24) returns (i32) { i } +function {:inline} $sext.i24.i33(i: i24) returns (i33) { i } +function {:inline} $sext.i24.i40(i: i24) returns (i40) { i } +function {:inline} $sext.i24.i48(i: i24) returns (i48) { i } +function {:inline} $sext.i24.i56(i: i24) returns (i56) { i } +function {:inline} $sext.i24.i64(i: i24) returns (i64) { i } +function {:inline} $sext.i24.i80(i: i24) returns (i80) { i } +function {:inline} $sext.i24.i88(i: i24) returns (i88) { i } +function {:inline} $sext.i24.i96(i: i24) returns (i96) { i } +function {:inline} $sext.i24.i128(i: i24) returns (i128) { i } +function {:inline} $sext.i24.i160(i: i24) returns (i160) { i } +function {:inline} $sext.i24.i256(i: i24) returns (i256) { i } +function {:inline} $sext.i32.i33(i: i32) returns (i33) { i } +function {:inline} $sext.i32.i40(i: i32) returns (i40) { i } +function {:inline} $sext.i32.i48(i: i32) returns (i48) { i } +function {:inline} $sext.i32.i56(i: i32) returns (i56) { i } +function {:inline} $sext.i32.i64(i: i32) returns (i64) { i } +function {:inline} $sext.i32.i80(i: i32) returns (i80) { i } +function {:inline} $sext.i32.i88(i: i32) returns (i88) { i } +function {:inline} $sext.i32.i96(i: i32) returns (i96) { i } +function {:inline} $sext.i32.i128(i: i32) returns (i128) { i } +function {:inline} $sext.i32.i160(i: i32) returns (i160) { i } +function {:inline} $sext.i32.i256(i: i32) returns (i256) { i } +function {:inline} $sext.i33.i40(i: i33) returns (i40) { i } +function {:inline} $sext.i33.i48(i: i33) returns (i48) { i } +function {:inline} $sext.i33.i56(i: i33) returns (i56) { i } +function {:inline} $sext.i33.i64(i: i33) returns (i64) { i } +function {:inline} $sext.i33.i80(i: i33) returns (i80) { i } +function {:inline} $sext.i33.i88(i: i33) returns (i88) { i } +function {:inline} $sext.i33.i96(i: i33) returns (i96) { i } +function {:inline} $sext.i33.i128(i: i33) returns (i128) { i } +function {:inline} $sext.i33.i160(i: i33) returns (i160) { i } +function {:inline} $sext.i33.i256(i: i33) returns (i256) { i } +function {:inline} $sext.i40.i48(i: i40) returns (i48) { i } +function {:inline} $sext.i40.i56(i: i40) returns (i56) { i } +function {:inline} $sext.i40.i64(i: i40) returns (i64) { i } +function {:inline} $sext.i40.i80(i: i40) returns (i80) { i } +function {:inline} $sext.i40.i88(i: i40) returns (i88) { i } +function {:inline} $sext.i40.i96(i: i40) returns (i96) { i } +function {:inline} $sext.i40.i128(i: i40) returns (i128) { i } +function {:inline} $sext.i40.i160(i: i40) returns (i160) { i } +function {:inline} $sext.i40.i256(i: i40) returns (i256) { i } +function {:inline} $sext.i48.i56(i: i48) returns (i56) { i } +function {:inline} $sext.i48.i64(i: i48) returns (i64) { i } +function {:inline} $sext.i48.i80(i: i48) returns (i80) { i } +function {:inline} $sext.i48.i88(i: i48) returns (i88) { i } +function {:inline} $sext.i48.i96(i: i48) returns (i96) { i } +function {:inline} $sext.i48.i128(i: i48) returns (i128) { i } +function {:inline} $sext.i48.i160(i: i48) returns (i160) { i } +function {:inline} $sext.i48.i256(i: i48) returns (i256) { i } +function {:inline} $sext.i56.i64(i: i56) returns (i64) { i } +function {:inline} $sext.i56.i80(i: i56) returns (i80) { i } +function {:inline} $sext.i56.i88(i: i56) returns (i88) { i } +function {:inline} $sext.i56.i96(i: i56) returns (i96) { i } +function {:inline} $sext.i56.i128(i: i56) returns (i128) { i } +function {:inline} $sext.i56.i160(i: i56) returns (i160) { i } +function {:inline} $sext.i56.i256(i: i56) returns (i256) { i } +function {:inline} $sext.i64.i80(i: i64) returns (i80) { i } +function {:inline} $sext.i64.i88(i: i64) returns (i88) { i } +function {:inline} $sext.i64.i96(i: i64) returns (i96) { i } +function {:inline} $sext.i64.i128(i: i64) returns (i128) { i } +function {:inline} $sext.i64.i160(i: i64) returns (i160) { i } +function {:inline} $sext.i64.i256(i: i64) returns (i256) { i } +function {:inline} $sext.i80.i88(i: i80) returns (i88) { i } +function {:inline} $sext.i80.i96(i: i80) returns (i96) { i } +function {:inline} $sext.i80.i128(i: i80) returns (i128) { i } +function {:inline} $sext.i80.i160(i: i80) returns (i160) { i } +function {:inline} $sext.i80.i256(i: i80) returns (i256) { i } +function {:inline} $sext.i88.i96(i: i88) returns (i96) { i } +function {:inline} $sext.i88.i128(i: i88) returns (i128) { i } +function {:inline} $sext.i88.i160(i: i88) returns (i160) { i } +function {:inline} $sext.i88.i256(i: i88) returns (i256) { i } +function {:inline} $sext.i96.i128(i: i96) returns (i128) { i } +function {:inline} $sext.i96.i160(i: i96) returns (i160) { i } +function {:inline} $sext.i96.i256(i: i96) returns (i256) { i } +function {:inline} $sext.i128.i160(i: i128) returns (i160) { i } +function {:inline} $sext.i128.i256(i: i128) returns (i256) { i } +function {:inline} $sext.i160.i256(i: i160) returns (i256) { i } +function {:inline} $zext.i1.i5(i: i1) returns (i5) { i } +function {:inline} $zext.i1.i6(i: i1) returns (i6) { i } +function {:inline} $zext.i1.i8(i: i1) returns (i8) { i } +function {:inline} $zext.i1.i16(i: i1) returns (i16) { i } +function {:inline} $zext.i1.i24(i: i1) returns (i24) { i } +function {:inline} $zext.i1.i32(i: i1) returns (i32) { i } +function {:inline} $zext.i1.i33(i: i1) returns (i33) { i } +function {:inline} $zext.i1.i40(i: i1) returns (i40) { i } +function {:inline} $zext.i1.i48(i: i1) returns (i48) { i } +function {:inline} $zext.i1.i56(i: i1) returns (i56) { i } +function {:inline} $zext.i1.i64(i: i1) returns (i64) { i } +function {:inline} $zext.i1.i80(i: i1) returns (i80) { i } +function {:inline} $zext.i1.i88(i: i1) returns (i88) { i } +function {:inline} $zext.i1.i96(i: i1) returns (i96) { i } +function {:inline} $zext.i1.i128(i: i1) returns (i128) { i } +function {:inline} $zext.i1.i160(i: i1) returns (i160) { i } +function {:inline} $zext.i1.i256(i: i1) returns (i256) { i } +function {:inline} $zext.i5.i6(i: i5) returns (i6) { i } +function {:inline} $zext.i5.i8(i: i5) returns (i8) { i } +function {:inline} $zext.i5.i16(i: i5) returns (i16) { i } +function {:inline} $zext.i5.i24(i: i5) returns (i24) { i } +function {:inline} $zext.i5.i32(i: i5) returns (i32) { i } +function {:inline} $zext.i5.i33(i: i5) returns (i33) { i } +function {:inline} $zext.i5.i40(i: i5) returns (i40) { i } +function {:inline} $zext.i5.i48(i: i5) returns (i48) { i } +function {:inline} $zext.i5.i56(i: i5) returns (i56) { i } +function {:inline} $zext.i5.i64(i: i5) returns (i64) { i } +function {:inline} $zext.i5.i80(i: i5) returns (i80) { i } +function {:inline} $zext.i5.i88(i: i5) returns (i88) { i } +function {:inline} $zext.i5.i96(i: i5) returns (i96) { i } +function {:inline} $zext.i5.i128(i: i5) returns (i128) { i } +function {:inline} $zext.i5.i160(i: i5) returns (i160) { i } +function {:inline} $zext.i5.i256(i: i5) returns (i256) { i } +function {:inline} $zext.i6.i8(i: i6) returns (i8) { i } +function {:inline} $zext.i6.i16(i: i6) returns (i16) { i } +function {:inline} $zext.i6.i24(i: i6) returns (i24) { i } +function {:inline} $zext.i6.i32(i: i6) returns (i32) { i } +function {:inline} $zext.i6.i33(i: i6) returns (i33) { i } +function {:inline} $zext.i6.i40(i: i6) returns (i40) { i } +function {:inline} $zext.i6.i48(i: i6) returns (i48) { i } +function {:inline} $zext.i6.i56(i: i6) returns (i56) { i } +function {:inline} $zext.i6.i64(i: i6) returns (i64) { i } +function {:inline} $zext.i6.i80(i: i6) returns (i80) { i } +function {:inline} $zext.i6.i88(i: i6) returns (i88) { i } +function {:inline} $zext.i6.i96(i: i6) returns (i96) { i } +function {:inline} $zext.i6.i128(i: i6) returns (i128) { i } +function {:inline} $zext.i6.i160(i: i6) returns (i160) { i } +function {:inline} $zext.i6.i256(i: i6) returns (i256) { i } +function {:inline} $zext.i8.i16(i: i8) returns (i16) { i } +function {:inline} $zext.i8.i24(i: i8) returns (i24) { i } +function {:inline} $zext.i8.i32(i: i8) returns (i32) { i } +function {:inline} $zext.i8.i33(i: i8) returns (i33) { i } +function {:inline} $zext.i8.i40(i: i8) returns (i40) { i } +function {:inline} $zext.i8.i48(i: i8) returns (i48) { i } +function {:inline} $zext.i8.i56(i: i8) returns (i56) { i } +function {:inline} $zext.i8.i64(i: i8) returns (i64) { i } +function {:inline} $zext.i8.i80(i: i8) returns (i80) { i } +function {:inline} $zext.i8.i88(i: i8) returns (i88) { i } +function {:inline} $zext.i8.i96(i: i8) returns (i96) { i } +function {:inline} $zext.i8.i128(i: i8) returns (i128) { i } +function {:inline} $zext.i8.i160(i: i8) returns (i160) { i } +function {:inline} $zext.i8.i256(i: i8) returns (i256) { i } +function {:inline} $zext.i16.i24(i: i16) returns (i24) { i } +function {:inline} $zext.i16.i32(i: i16) returns (i32) { i } +function {:inline} $zext.i16.i33(i: i16) returns (i33) { i } +function {:inline} $zext.i16.i40(i: i16) returns (i40) { i } +function {:inline} $zext.i16.i48(i: i16) returns (i48) { i } +function {:inline} $zext.i16.i56(i: i16) returns (i56) { i } +function {:inline} $zext.i16.i64(i: i16) returns (i64) { i } +function {:inline} $zext.i16.i80(i: i16) returns (i80) { i } +function {:inline} $zext.i16.i88(i: i16) returns (i88) { i } +function {:inline} $zext.i16.i96(i: i16) returns (i96) { i } +function {:inline} $zext.i16.i128(i: i16) returns (i128) { i } +function {:inline} $zext.i16.i160(i: i16) returns (i160) { i } +function {:inline} $zext.i16.i256(i: i16) returns (i256) { i } +function {:inline} $zext.i24.i32(i: i24) returns (i32) { i } +function {:inline} $zext.i24.i33(i: i24) returns (i33) { i } +function {:inline} $zext.i24.i40(i: i24) returns (i40) { i } +function {:inline} $zext.i24.i48(i: i24) returns (i48) { i } +function {:inline} $zext.i24.i56(i: i24) returns (i56) { i } +function {:inline} $zext.i24.i64(i: i24) returns (i64) { i } +function {:inline} $zext.i24.i80(i: i24) returns (i80) { i } +function {:inline} $zext.i24.i88(i: i24) returns (i88) { i } +function {:inline} $zext.i24.i96(i: i24) returns (i96) { i } +function {:inline} $zext.i24.i128(i: i24) returns (i128) { i } +function {:inline} $zext.i24.i160(i: i24) returns (i160) { i } +function {:inline} $zext.i24.i256(i: i24) returns (i256) { i } +function {:inline} $zext.i32.i33(i: i32) returns (i33) { i } +function {:inline} $zext.i32.i40(i: i32) returns (i40) { i } +function {:inline} $zext.i32.i48(i: i32) returns (i48) { i } +function {:inline} $zext.i32.i56(i: i32) returns (i56) { i } +function {:inline} $zext.i32.i64(i: i32) returns (i64) { i } +function {:inline} $zext.i32.i80(i: i32) returns (i80) { i } +function {:inline} $zext.i32.i88(i: i32) returns (i88) { i } +function {:inline} $zext.i32.i96(i: i32) returns (i96) { i } +function {:inline} $zext.i32.i128(i: i32) returns (i128) { i } +function {:inline} $zext.i32.i160(i: i32) returns (i160) { i } +function {:inline} $zext.i32.i256(i: i32) returns (i256) { i } +function {:inline} $zext.i33.i40(i: i33) returns (i40) { i } +function {:inline} $zext.i33.i48(i: i33) returns (i48) { i } +function {:inline} $zext.i33.i56(i: i33) returns (i56) { i } +function {:inline} $zext.i33.i64(i: i33) returns (i64) { i } +function {:inline} $zext.i33.i80(i: i33) returns (i80) { i } +function {:inline} $zext.i33.i88(i: i33) returns (i88) { i } +function {:inline} $zext.i33.i96(i: i33) returns (i96) { i } +function {:inline} $zext.i33.i128(i: i33) returns (i128) { i } +function {:inline} $zext.i33.i160(i: i33) returns (i160) { i } +function {:inline} $zext.i33.i256(i: i33) returns (i256) { i } +function {:inline} $zext.i40.i48(i: i40) returns (i48) { i } +function {:inline} $zext.i40.i56(i: i40) returns (i56) { i } +function {:inline} $zext.i40.i64(i: i40) returns (i64) { i } +function {:inline} $zext.i40.i80(i: i40) returns (i80) { i } +function {:inline} $zext.i40.i88(i: i40) returns (i88) { i } +function {:inline} $zext.i40.i96(i: i40) returns (i96) { i } +function {:inline} $zext.i40.i128(i: i40) returns (i128) { i } +function {:inline} $zext.i40.i160(i: i40) returns (i160) { i } +function {:inline} $zext.i40.i256(i: i40) returns (i256) { i } +function {:inline} $zext.i48.i56(i: i48) returns (i56) { i } +function {:inline} $zext.i48.i64(i: i48) returns (i64) { i } +function {:inline} $zext.i48.i80(i: i48) returns (i80) { i } +function {:inline} $zext.i48.i88(i: i48) returns (i88) { i } +function {:inline} $zext.i48.i96(i: i48) returns (i96) { i } +function {:inline} $zext.i48.i128(i: i48) returns (i128) { i } +function {:inline} $zext.i48.i160(i: i48) returns (i160) { i } +function {:inline} $zext.i48.i256(i: i48) returns (i256) { i } +function {:inline} $zext.i56.i64(i: i56) returns (i64) { i } +function {:inline} $zext.i56.i80(i: i56) returns (i80) { i } +function {:inline} $zext.i56.i88(i: i56) returns (i88) { i } +function {:inline} $zext.i56.i96(i: i56) returns (i96) { i } +function {:inline} $zext.i56.i128(i: i56) returns (i128) { i } +function {:inline} $zext.i56.i160(i: i56) returns (i160) { i } +function {:inline} $zext.i56.i256(i: i56) returns (i256) { i } +function {:inline} $zext.i64.i80(i: i64) returns (i80) { i } +function {:inline} $zext.i64.i88(i: i64) returns (i88) { i } +function {:inline} $zext.i64.i96(i: i64) returns (i96) { i } +function {:inline} $zext.i64.i128(i: i64) returns (i128) { i } +function {:inline} $zext.i64.i160(i: i64) returns (i160) { i } +function {:inline} $zext.i64.i256(i: i64) returns (i256) { i } +function {:inline} $zext.i80.i88(i: i80) returns (i88) { i } +function {:inline} $zext.i80.i96(i: i80) returns (i96) { i } +function {:inline} $zext.i80.i128(i: i80) returns (i128) { i } +function {:inline} $zext.i80.i160(i: i80) returns (i160) { i } +function {:inline} $zext.i80.i256(i: i80) returns (i256) { i } +function {:inline} $zext.i88.i96(i: i88) returns (i96) { i } +function {:inline} $zext.i88.i128(i: i88) returns (i128) { i } +function {:inline} $zext.i88.i160(i: i88) returns (i160) { i } +function {:inline} $zext.i88.i256(i: i88) returns (i256) { i } +function {:inline} $zext.i96.i128(i: i96) returns (i128) { i } +function {:inline} $zext.i96.i160(i: i96) returns (i160) { i } +function {:inline} $zext.i96.i256(i: i96) returns (i256) { i } +function {:inline} $zext.i128.i160(i: i128) returns (i160) { i } +function {:inline} $zext.i128.i256(i: i128) returns (i256) { i } +function {:inline} $zext.i160.i256(i: i160) returns (i256) { i } +function $extractvalue.i1(p: ref, i: int) returns (i1); +function $extractvalue.i5(p: ref, i: int) returns (i5); +function $extractvalue.i6(p: ref, i: int) returns (i6); +function $extractvalue.i8(p: ref, i: int) returns (i8); +function $extractvalue.i16(p: ref, i: int) returns (i16); +function $extractvalue.i24(p: ref, i: int) returns (i24); +function $extractvalue.i32(p: ref, i: int) returns (i32); +function $extractvalue.i33(p: ref, i: int) returns (i33); +function $extractvalue.i40(p: ref, i: int) returns (i40); +function $extractvalue.i48(p: ref, i: int) returns (i48); +function $extractvalue.i56(p: ref, i: int) returns (i56); +function $extractvalue.i64(p: ref, i: int) returns (i64); +function $extractvalue.i80(p: ref, i: int) returns (i80); +function $extractvalue.i88(p: ref, i: int) returns (i88); +function $extractvalue.i96(p: ref, i: int) returns (i96); +function $extractvalue.i128(p: ref, i: int) returns (i128); +function $extractvalue.i160(p: ref, i: int) returns (i160); +function $extractvalue.i256(p: ref, i: int) returns (i256); +// Pointer arithmetic operations +function {:inline} $add.ref(p1: ref, p2: ref) returns (ref) { $add.i64(p1, p2) } +function {:inline} $sub.ref(p1: ref, p2: ref) returns (ref) { $sub.i64(p1, p2) } +function {:inline} $mul.ref(p1: ref, p2: ref) returns (ref) { $mul.i64(p1, p2) } + +// Pointer predicates +function {:inline} $eq.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 == p2) } +function {:inline} $eq.ref(p1: ref, p2: ref) returns (i1) { (if $eq.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $ne.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 != p2) } +function {:inline} $ne.ref(p1: ref, p2: ref) returns (i1) { (if $ne.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $ugt.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 > p2) } +function {:inline} $ugt.ref(p1: ref, p2: ref) returns (i1) { (if $ugt.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $uge.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 >= p2) } +function {:inline} $uge.ref(p1: ref, p2: ref) returns (i1) { (if $uge.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $ult.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 < p2) } +function {:inline} $ult.ref(p1: ref, p2: ref) returns (i1) { (if $ult.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $ule.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 <= p2) } +function {:inline} $ule.ref(p1: ref, p2: ref) returns (i1) { (if $ule.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $sgt.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 > p2) } +function {:inline} $sgt.ref(p1: ref, p2: ref) returns (i1) { (if $sgt.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $sge.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 >= p2) } +function {:inline} $sge.ref(p1: ref, p2: ref) returns (i1) { (if $sge.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $slt.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 < p2) } +function {:inline} $slt.ref(p1: ref, p2: ref) returns (i1) { (if $slt.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $sle.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 <= p2) } +function {:inline} $sle.ref(p1: ref, p2: ref) returns (i1) { (if $sle.ref.bool(p1, p2) then 1 else 0) } + +// Pointer load/store operations +function {:inline} $load.ref(M: [ref] ref, p: ref) returns (ref) { M[p] } +function {:inline} $store.ref(M: [ref] ref, p: ref, i: ref) returns ([ref] ref) { M[p := i] } + +// Pointer conversion +function {:inline} $bitcast.ref.ref(p: ref) returns (ref) { p } +function $extractvalue.ref(p: ref, i: int) returns (ref); +// Pointer-number conversion +function {:inline} $p2i.ref.i8(p: ref) returns (i8) { $trunc.i64.i8(p) } +function {:inline} $i2p.i8.ref(i: i8) returns (ref) { $zext.i8.i64(i) } +function {:inline} $p2i.ref.i16(p: ref) returns (i16) { $trunc.i64.i16(p) } +function {:inline} $i2p.i16.ref(i: i16) returns (ref) { $zext.i16.i64(i) } +function {:inline} $p2i.ref.i32(p: ref) returns (i32) { $trunc.i64.i32(p) } +function {:inline} $i2p.i32.ref(i: i32) returns (ref) { $zext.i32.i64(i) } +function {:inline} $p2i.ref.i64(p: ref) returns (i64) { p } +function {:inline} $i2p.i64.ref(i: i64) returns (ref) { i } + +function $fp(ipart: int, fpart: int, epart: int) returns (float); +// Floating-point arithmetic operations +function $abs.float(f: float) returns (float); +function $round.float(f: float) returns (float); +function $sqrt.float(f: float) returns (float); +function $fadd.float(f1: float, f2: float) returns (float); +function $fsub.float(f1: float, f2: float) returns (float); +function $fmul.float(f1: float, f2: float) returns (float); +function $fdiv.float(f1: float, f2: float) returns (float); +function $frem.float(f1: float, f2: float) returns (float); +function $min.float(f1: float, f2: float) returns (float); +function $max.float(f1: float, f2: float) returns (float); +function $fma.float(f1: float, f2: float, f3: float) returns (float); +function $fneg.float(f: float) returns (float); +// Floating-point predicates +function $foeq.float.bool(f1: float, f2: float) returns (bool); +function $fole.float.bool(f1: float, f2: float) returns (bool); +function $folt.float.bool(f1: float, f2: float) returns (bool); +function $foge.float.bool(f1: float, f2: float) returns (bool); +function $fogt.float.bool(f1: float, f2: float) returns (bool); +function $fone.float.bool(f1: float, f2: float) returns (bool); +function $ford.float.bool(f1: float, f2: float) returns (bool); +function $fueq.float.bool(f1: float, f2: float) returns (bool); +function $fugt.float.bool(f1: float, f2: float) returns (bool); +function $fuge.float.bool(f1: float, f2: float) returns (bool); +function $fult.float.bool(f1: float, f2: float) returns (bool); +function $fule.float.bool(f1: float, f2: float) returns (bool); +function $fune.float.bool(f1: float, f2: float) returns (bool); +function $funo.float.bool(f1: float, f2: float) returns (bool); +function $ffalse.float.bool(f1: float, f2: float) returns (bool); +function $ftrue.float.bool(f1: float, f2: float) returns (bool); +// Floating-point/integer conversion +function $bitcast.float.i8(f: float) returns (i8); +function $bitcast.float.i16(f: float) returns (i16); +function $bitcast.float.i32(f: float) returns (i32); +function $bitcast.float.i64(f: float) returns (i64); +function $bitcast.float.i80(f: float) returns (i80); +function $bitcast.i8.float(i: i8) returns (float); +function $bitcast.i16.float(i: i16) returns (float); +function $bitcast.i32.float(i: i32) returns (float); +function $bitcast.i64.float(i: i64) returns (float); +function $bitcast.i80.float(i: i80) returns (float); +function $fp2si.float.i1(f: float) returns (i1); +function $fp2si.float.i5(f: float) returns (i5); +function $fp2si.float.i6(f: float) returns (i6); +function $fp2si.float.i8(f: float) returns (i8); +function $fp2si.float.i16(f: float) returns (i16); +function $fp2si.float.i24(f: float) returns (i24); +function $fp2si.float.i32(f: float) returns (i32); +function $fp2si.float.i33(f: float) returns (i33); +function $fp2si.float.i40(f: float) returns (i40); +function $fp2si.float.i48(f: float) returns (i48); +function $fp2si.float.i56(f: float) returns (i56); +function $fp2si.float.i64(f: float) returns (i64); +function $fp2si.float.i80(f: float) returns (i80); +function $fp2si.float.i88(f: float) returns (i88); +function $fp2si.float.i96(f: float) returns (i96); +function $fp2si.float.i128(f: float) returns (i128); +function $fp2si.float.i160(f: float) returns (i160); +function $fp2si.float.i256(f: float) returns (i256); +function $fp2ui.float.i1(f: float) returns (i1); +function $fp2ui.float.i5(f: float) returns (i5); +function $fp2ui.float.i6(f: float) returns (i6); +function $fp2ui.float.i8(f: float) returns (i8); +function $fp2ui.float.i16(f: float) returns (i16); +function $fp2ui.float.i24(f: float) returns (i24); +function $fp2ui.float.i32(f: float) returns (i32); +function $fp2ui.float.i33(f: float) returns (i33); +function $fp2ui.float.i40(f: float) returns (i40); +function $fp2ui.float.i48(f: float) returns (i48); +function $fp2ui.float.i56(f: float) returns (i56); +function $fp2ui.float.i64(f: float) returns (i64); +function $fp2ui.float.i80(f: float) returns (i80); +function $fp2ui.float.i88(f: float) returns (i88); +function $fp2ui.float.i96(f: float) returns (i96); +function $fp2ui.float.i128(f: float) returns (i128); +function $fp2ui.float.i160(f: float) returns (i160); +function $fp2ui.float.i256(f: float) returns (i256); +function $si2fp.i1.float(i: i1) returns (float); +function $si2fp.i5.float(i: i5) returns (float); +function $si2fp.i6.float(i: i6) returns (float); +function $si2fp.i8.float(i: i8) returns (float); +function $si2fp.i16.float(i: i16) returns (float); +function $si2fp.i24.float(i: i24) returns (float); +function $si2fp.i32.float(i: i32) returns (float); +function $si2fp.i33.float(i: i33) returns (float); +function $si2fp.i40.float(i: i40) returns (float); +function $si2fp.i48.float(i: i48) returns (float); +function $si2fp.i56.float(i: i56) returns (float); +function $si2fp.i64.float(i: i64) returns (float); +function $si2fp.i80.float(i: i80) returns (float); +function $si2fp.i88.float(i: i88) returns (float); +function $si2fp.i96.float(i: i96) returns (float); +function $si2fp.i128.float(i: i128) returns (float); +function $si2fp.i160.float(i: i160) returns (float); +function $si2fp.i256.float(i: i256) returns (float); +function $ui2fp.i1.float(i: i1) returns (float); +function $ui2fp.i5.float(i: i5) returns (float); +function $ui2fp.i6.float(i: i6) returns (float); +function $ui2fp.i8.float(i: i8) returns (float); +function $ui2fp.i16.float(i: i16) returns (float); +function $ui2fp.i24.float(i: i24) returns (float); +function $ui2fp.i32.float(i: i32) returns (float); +function $ui2fp.i33.float(i: i33) returns (float); +function $ui2fp.i40.float(i: i40) returns (float); +function $ui2fp.i48.float(i: i48) returns (float); +function $ui2fp.i56.float(i: i56) returns (float); +function $ui2fp.i64.float(i: i64) returns (float); +function $ui2fp.i80.float(i: i80) returns (float); +function $ui2fp.i88.float(i: i88) returns (float); +function $ui2fp.i96.float(i: i96) returns (float); +function $ui2fp.i128.float(i: i128) returns (float); +function $ui2fp.i160.float(i: i160) returns (float); +function $ui2fp.i256.float(i: i256) returns (float); +// Floating-point conversion +function $fpext.float.float(f: float) returns (float); +function $fptrunc.float.float(f: float) returns (float); +// Floating-point load/store operations +function {:inline} $load.float(M: [ref] float, p: ref) returns (float) { M[p] } +function {:inline} $store.float(M: [ref] float, p: ref, f: float) returns ([ref] float) { M[p := f] } +function {:inline} $load.unsafe.float(M: [ref] i8, p: ref) returns (float) { $bitcast.i8.float(M[p]) } +function {:inline} $store.unsafe.float(M: [ref] i8, p: ref, f: float) returns ([ref] i8) { M[p := $bitcast.float.i8(f)] } +function $extractvalue.float(p: ref, i: int) returns (float); +const {:allocSize 4} data: ref; +axiom (data == $sub.ref(0, 1028)); +const thread2: ref; +axiom (thread2 == $sub.ref(0, 2060)); +procedure thread2($p0: ref) + returns ($r: ref) +{ +$bb0: + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex_2.c", 17, 1} true; + assume {:verifier.code 0} true; + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex_2.c", 17, 1} true; + assume {:verifier.code 0} true; + call __llvm_atomic32_store(data, 42, 5); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex_2.c", 17, 1} true; + assume {:verifier.code 0} true; + $r := $u0; + $exn := false; + return; +} +const llvm.dbg.value: ref; +axiom (llvm.dbg.value == $sub.ref(0, 3092)); +procedure llvm.dbg.value($p0: ref, $p1: ref, $p2: ref); +const __llvm_atomic32_store: ref; +axiom (__llvm_atomic32_store == $sub.ref(0, 4124)); +procedure __llvm_atomic32_store($p0: ref, $i1: i32, $i2: i32); +const threadCreator: ref; +axiom (threadCreator == $sub.ref(0, 5156)); +procedure threadCreator() + returns ($r: ref) +{ + var $p0: ref; + var $i1: i32; + var $p2: ref; +$bb0: + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex_2.c", 21, 4} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + call $p0 := $alloc($mul.ref(8, $zext.i32.i64(1))); + assume true; + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex_2.c", 21, 4} true; + assume {:verifier.code 0} true; + call $i1 := pthread_create($p0, $0.ref, thread2, $0.ref); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex_2.c", 22, 11} true; + assume {:verifier.code 0} true; + $p2 := $load.ref($M.0, $p0); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex_2.c", 22, 4} true; + assume {:verifier.code 0} true; + $r := $p2; + $exn := false; + return; +} +const llvm.dbg.declare: ref; +axiom (llvm.dbg.declare == $sub.ref(0, 6188)); +procedure llvm.dbg.declare($p0: ref, $p1: ref, $p2: ref); +const pthread_create: ref; +axiom (pthread_create == $sub.ref(0, 7220)); +procedure pthread_create($p0: ref, $p1: ref, $p2: ref, $p3: ref) + returns ($r: i32); +const threadJoiner: ref; +axiom (threadJoiner == $sub.ref(0, 8252)); +procedure threadJoiner($p0: ref) +{ + var $i1: i32; +$bb0: + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex_2.c", 26, 5} true; + assume {:verifier.code 0} true; + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex_2.c", 26, 5} true; + assume {:verifier.code 0} true; + call $i1 := __pthread_join($p0, $0.ref); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex_2.c", 27, 1} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __pthread_join: ref; +axiom (__pthread_join == $sub.ref(0, 9284)); +procedure __pthread_join($p0: ref, $p1: ref) + returns ($r: i32); +const thread1: ref; +axiom (thread1 == $sub.ref(0, 10316)); +procedure thread1($p0: ref) + returns ($r: ref) +{ + var $p1: ref; +$bb0: + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex_2.c", 31, 18} true; + assume {:verifier.code 0} true; + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex_2.c", 31, 18} true; + assume {:verifier.code 0} true; + call $p1 := threadCreator(); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex_2.c", 31, 5} true; + assume {:verifier.code 0} true; + call threadJoiner($p1); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex_2.c", 32, 1} true; + assume {:verifier.code 0} true; + $r := $u0; + $exn := false; + return; +} +const main: ref; +axiom (main == $sub.ref(0, 11348)); +procedure {:entrypoint} main() + returns ($r: i32) +{ + var $p0: ref; + var $i1: i32; + var $p2: ref; + var $i3: i32; + var $i4: i32; + var $i5: i1; + var $i6: i32; + var $i7: i32; +$bb0: + call $initialize(); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex_2.c", 37, 5} true; + assume {:verifier.code 0} true; + call {:cexpr "smack:entry:main"} boogie_si_record_ref(main); + assume {:verifier.code 0} true; + call $p0 := $alloc($mul.ref(8, $zext.i32.i64(1))); + assume true; + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex_2.c", 37, 5} true; + assume {:verifier.code 0} true; + call $i1 := pthread_create($p0, $0.ref, thread1, $0.ref); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex_2.c", 38, 18} true; + assume {:verifier.code 0} true; + $p2 := $load.ref($M.0, $p0); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex_2.c", 38, 5} true; + assume {:verifier.code 0} true; + call $i3 := __pthread_join($p2, $0.ref); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex_2.c", 40, 17} true; + assume {:verifier.code 0} true; + call $i4 := __llvm_atomic32_load(data, 5); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex_2.c", 40, 17} true; + assume {:verifier.code 0} true; + $i5 := $eq.i32($i4, 42); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex_2.c", 40, 17} true; + assume {:verifier.code 0} true; + $i6 := $zext.i1.i32($i5); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex_2.c", 40, 5} true; + assume {:verifier.code 0} true; + call $i7 := assert_.i32($i6); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_inlining_complex_2.c", 41, 1} true; + assume {:verifier.code 0} true; + $r := 0; + $exn := false; + return; +} +const __llvm_atomic32_load: ref; +axiom (__llvm_atomic32_load == $sub.ref(0, 12380)); +procedure __llvm_atomic32_load($p0: ref, $i1: i32) + returns ($r: i32); +const assert_: ref; +axiom (assert_ == $sub.ref(0, 13412)); +procedure assert_.i32(p.0: i32) + returns ($r: i32); +const __SMACK_code: ref; +axiom (__SMACK_code == $sub.ref(0, 14444)); +procedure __SMACK_code.ref($p0: ref); +procedure __SMACK_code.ref.i32($p0: ref, p.1: i32); +const __VERIFIER_assume: ref; +axiom (__VERIFIER_assume == $sub.ref(0, 15476)); +procedure __VERIFIER_assume($i0: i32) +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + call {:cexpr "__VERIFIER_assume:arg:x"} boogie_si_record_i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + assume true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 45, 3} true; + assume {:verifier.code 1} true; + assume $i0 != $0; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 46, 1} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_dummy: ref; +axiom (__SMACK_dummy == $sub.ref(0, 16508)); +procedure __SMACK_dummy($i0: i32) +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_dummy:arg:v"} boogie_si_record_i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + assume true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 59} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_and32: ref; +axiom (__SMACK_and32 == $sub.ref(0, 17540)); +procedure __SMACK_and32($i0: i32, $i1: i32) + returns ($r: i32) +{ + var $i2: i32; + var $i3: i1; + var $i5: i1; + var $i6: i1; + var $i8: i32; + var $i7: i32; + var $i4: i32; + var $i9: i64; + var $i10: i64; + var $i11: i32; + var $i12: i32; + var $i13: i64; + var $i14: i64; + var $i15: i32; + var $i16: i32; + var $i17: i32; + var $i18: i1; + var $i20: i1; + var $i21: i1; + var $i23: i32; + var $i22: i32; + var $i19: i32; + var $i24: i64; + var $i25: i64; + var $i26: i32; + var $i27: i32; + var $i28: i64; + var $i29: i64; + var $i30: i32; + var $i31: i32; + var $i32: i32; + var $i33: i1; + var $i35: i1; + var $i36: i1; + var $i38: i32; + var $i37: i32; + var $i34: i32; + var $i39: i64; + var $i40: i64; + var $i41: i32; + var $i42: i32; + var $i43: i64; + var $i44: i64; + var $i45: i32; + var $i46: i32; + var $i47: i32; + var $i48: i1; + var $i50: i1; + var $i51: i1; + var $i53: i32; + var $i52: i32; + var $i49: i32; + var $i54: i64; + var $i55: i64; + var $i56: i32; + var $i57: i32; + var $i58: i64; + var $i59: i64; + var $i60: i32; + var $i61: i32; + var $i62: i32; + var $i63: i1; + var $i65: i1; + var $i66: i1; + var $i68: i32; + var $i67: i32; + var $i64: i32; + var $i69: i64; + var $i70: i64; + var $i71: i32; + var $i72: i32; + var $i73: i64; + var $i74: i64; + var $i75: i32; + var $i76: i32; + var $i77: i32; + var $i78: i1; + var $i80: i1; + var $i81: i1; + var $i83: i32; + var $i82: i32; + var $i79: i32; + var $i84: i64; + var $i85: i64; + var $i86: i32; + var $i87: i32; + var $i88: i64; + var $i89: i64; + var $i90: i32; + var $i91: i32; + var $i92: i32; + var $i93: i1; + var $i95: i1; + var $i96: i1; + var $i98: i32; + var $i97: i32; + var $i94: i32; + var $i99: i64; + var $i100: i64; + var $i101: i32; + var $i102: i32; + var $i103: i64; + var $i104: i64; + var $i105: i32; + var $i106: i32; + var $i107: i32; + var $i108: i1; + var $i110: i1; + var $i111: i1; + var $i113: i32; + var $i112: i32; + var $i109: i32; + var $i114: i64; + var $i115: i64; + var $i116: i32; + var $i117: i32; + var $i118: i64; + var $i119: i64; + var $i120: i32; + var $i121: i32; + var $i122: i32; + var $i123: i1; + var $i125: i1; + var $i126: i1; + var $i128: i32; + var $i127: i32; + var $i124: i32; + var $i129: i64; + var $i130: i64; + var $i131: i32; + var $i132: i32; + var $i133: i64; + var $i134: i64; + var $i135: i32; + var $i136: i32; + var $i137: i32; + var $i138: i1; + var $i140: i1; + var $i141: i1; + var $i143: i32; + var $i142: i32; + var $i139: i32; + var $i144: i64; + var $i145: i64; + var $i146: i32; + var $i147: i32; + var $i148: i64; + var $i149: i64; + var $i150: i32; + var $i151: i32; + var $i152: i32; + var $i153: i1; + var $i155: i1; + var $i156: i1; + var $i158: i32; + var $i157: i32; + var $i154: i32; + var $i159: i64; + var $i160: i64; + var $i161: i32; + var $i162: i32; + var $i163: i64; + var $i164: i64; + var $i165: i32; + var $i166: i32; + var $i167: i32; + var $i168: i1; + var $i170: i1; + var $i171: i1; + var $i173: i32; + var $i172: i32; + var $i169: i32; + var $i174: i64; + var $i175: i64; + var $i176: i32; + var $i177: i32; + var $i178: i64; + var $i179: i64; + var $i180: i32; + var $i181: i32; + var $i182: i32; + var $i183: i1; + var $i185: i1; + var $i186: i1; + var $i188: i32; + var $i187: i32; + var $i184: i32; + var $i189: i64; + var $i190: i64; + var $i191: i32; + var $i192: i32; + var $i193: i64; + var $i194: i64; + var $i195: i32; + var $i196: i32; + var $i197: i32; + var $i198: i1; + var $i200: i1; + var $i201: i1; + var $i203: i32; + var $i202: i32; + var $i199: i32; + var $i204: i64; + var $i205: i64; + var $i206: i32; + var $i207: i32; + var $i208: i64; + var $i209: i64; + var $i210: i32; + var $i211: i32; + var $i212: i32; + var $i213: i1; + var $i215: i1; + var $i216: i1; + var $i218: i32; + var $i217: i32; + var $i214: i32; + var $i219: i64; + var $i220: i64; + var $i221: i32; + var $i222: i32; + var $i223: i64; + var $i224: i64; + var $i225: i32; + var $i226: i32; + var $i227: i32; + var $i228: i1; + var $i230: i1; + var $i231: i1; + var $i233: i32; + var $i232: i32; + var $i229: i32; + var $i234: i64; + var $i235: i64; + var $i236: i32; + var $i237: i32; + var $i238: i64; + var $i239: i64; + var $i240: i32; + var $i241: i32; + var $i242: i32; + var $i243: i1; + var $i245: i1; + var $i246: i1; + var $i248: i32; + var $i247: i32; + var $i244: i32; + var $i249: i64; + var $i250: i64; + var $i251: i32; + var $i252: i32; + var $i253: i64; + var $i254: i64; + var $i255: i32; + var $i256: i32; + var $i257: i32; + var $i258: i1; + var $i260: i1; + var $i261: i1; + var $i263: i32; + var $i262: i32; + var $i259: i32; + var $i264: i64; + var $i265: i64; + var $i266: i32; + var $i267: i32; + var $i268: i64; + var $i269: i64; + var $i270: i32; + var $i271: i32; + var $i272: i32; + var $i273: i1; + var $i275: i1; + var $i276: i1; + var $i278: i32; + var $i277: i32; + var $i274: i32; + var $i279: i64; + var $i280: i64; + var $i281: i32; + var $i282: i32; + var $i283: i64; + var $i284: i64; + var $i285: i32; + var $i286: i32; + var $i287: i32; + var $i288: i1; + var $i290: i1; + var $i291: i1; + var $i293: i32; + var $i292: i32; + var $i289: i32; + var $i294: i64; + var $i295: i64; + var $i296: i32; + var $i297: i32; + var $i298: i64; + var $i299: i64; + var $i300: i32; + var $i301: i32; + var $i302: i32; + var $i303: i1; + var $i305: i1; + var $i306: i1; + var $i308: i32; + var $i307: i32; + var $i304: i32; + var $i309: i64; + var $i310: i64; + var $i311: i32; + var $i312: i32; + var $i313: i64; + var $i314: i64; + var $i315: i32; + var $i316: i32; + var $i317: i32; + var $i318: i1; + var $i320: i1; + var $i321: i1; + var $i323: i32; + var $i322: i32; + var $i319: i32; + var $i324: i64; + var $i325: i64; + var $i326: i32; + var $i327: i32; + var $i328: i64; + var $i329: i64; + var $i330: i32; + var $i331: i32; + var $i332: i32; + var $i333: i1; + var $i335: i1; + var $i336: i1; + var $i338: i32; + var $i337: i32; + var $i334: i32; + var $i339: i64; + var $i340: i64; + var $i341: i32; + var $i342: i32; + var $i343: i64; + var $i344: i64; + var $i345: i32; + var $i346: i32; + var $i347: i32; + var $i348: i1; + var $i350: i1; + var $i351: i1; + var $i353: i32; + var $i352: i32; + var $i349: i32; + var $i354: i64; + var $i355: i64; + var $i356: i32; + var $i357: i32; + var $i358: i64; + var $i359: i64; + var $i360: i32; + var $i361: i32; + var $i362: i32; + var $i363: i1; + var $i365: i1; + var $i366: i1; + var $i368: i32; + var $i367: i32; + var $i364: i32; + var $i369: i64; + var $i370: i64; + var $i371: i32; + var $i372: i32; + var $i373: i64; + var $i374: i64; + var $i375: i32; + var $i376: i32; + var $i377: i32; + var $i378: i1; + var $i380: i1; + var $i381: i1; + var $i383: i32; + var $i382: i32; + var $i379: i32; + var $i384: i64; + var $i385: i64; + var $i386: i32; + var $i387: i32; + var $i388: i64; + var $i389: i64; + var $i390: i32; + var $i391: i32; + var $i392: i32; + var $i393: i1; + var $i395: i1; + var $i396: i1; + var $i398: i32; + var $i397: i32; + var $i394: i32; + var $i399: i64; + var $i400: i64; + var $i401: i32; + var $i402: i32; + var $i403: i64; + var $i404: i64; + var $i405: i32; + var $i406: i32; + var $i407: i32; + var $i408: i1; + var $i410: i1; + var $i411: i1; + var $i413: i32; + var $i412: i32; + var $i409: i32; + var $i414: i64; + var $i415: i64; + var $i416: i32; + var $i417: i32; + var $i418: i64; + var $i419: i64; + var $i420: i32; + var $i421: i32; + var $i422: i32; + var $i423: i1; + var $i425: i1; + var $i426: i1; + var $i428: i32; + var $i427: i32; + var $i424: i32; + var $i429: i64; + var $i430: i64; + var $i431: i32; + var $i432: i32; + var $i433: i64; + var $i434: i64; + var $i435: i32; + var $i436: i32; + var $i437: i32; + var $i438: i1; + var $i440: i1; + var $i441: i1; + var $i443: i32; + var $i442: i32; + var $i439: i32; + var $i444: i64; + var $i445: i64; + var $i446: i32; + var $i447: i32; + var $i448: i64; + var $i449: i64; + var $i450: i32; + var $i451: i32; + var $i452: i32; + var $i453: i1; + var $i455: i1; + var $i456: i1; + var $i458: i32; + var $i457: i32; + var $i454: i32; + var $i459: i64; + var $i460: i64; + var $i461: i32; + var $i462: i32; + var $i463: i64; + var $i464: i64; + var $i465: i32; + var $i466: i32; + var $i467: i32; + var $i468: i1; + var $i470: i1; + var $i471: i1; + var $i473: i32; + var $i472: i32; + var $i469: i32; + var $i474: i64; + var $i475: i64; + var $i476: i32; + var $i477: i32; + var $i478: i64; + var $i479: i64; + var $i480: i32; + var $i481: i32; + var $i482: i32; + var $i483: i1; + var $i485: i1; + var $i486: i1; + var $i488: i32; + var $i487: i32; + var $i484: i32; + var $i489: i64; + var $i490: i64; + var $i491: i32; + var $i492: i32; + var $i493: i64; + var $i494: i64; + var $i495: i32; + var $i496: i32; + var $i497: i32; + var $i498: i1; + var $i500: i1; + var $i501: i1; + var $i503: i32; + var $i502: i32; + var $i499: i32; + var $i504: i64; + var $i505: i64; + var $i506: i32; + var $i507: i32; + var $i508: i64; + var $i509: i64; + var $i510: i32; + var $i511: i32; + var $i512: i32; + var $i513: i1; + var $i515: i1; + var $i516: i1; + var $i518: i32; + var $i517: i32; + var $i514: i32; + var $i519: i64; + var $i520: i64; + var $i521: i32; + var $i522: i32; + var $i523: i64; + var $i524: i64; + var $i525: i32; + var $i526: i32; + var $i527: i32; + var $i528: i1; + var $i530: i1; + var $i531: i1; + var $i533: i32; + var $i532: i32; + var $i529: i32; + var $i534: i64; + var $i535: i64; + var $i536: i32; + var $i537: i32; + var $i538: i64; + var $i539: i64; + var $i540: i32; + var $i541: i32; + var $i542: i32; + var $i543: i1; + var $i545: i1; + var $i546: i1; + var $i548: i32; + var $i547: i32; + var $i544: i32; + var $i549: i64; + var $i550: i64; + var $i551: i32; + var $i552: i32; + var $i553: i64; + var $i554: i64; + var $i555: i32; + var $i556: i32; + var $i557: i32; + var $i558: i1; + var $i560: i1; + var $i561: i1; + var $i563: i32; + var $i562: i32; + var $i559: i32; + var $i564: i64; + var $i565: i64; + var $i566: i32; + var $i567: i32; + var $i568: i64; + var $i569: i64; + var $i570: i32; + var $i571: i32; + var $i572: i32; + var $i573: i1; + var $i575: i1; + var $i576: i1; + var $i578: i32; + var $i577: i32; + var $i574: i32; + var $i579: i64; + var $i580: i64; + var $i581: i32; + var $i582: i32; + var $i583: i64; + var $i584: i64; + var $i585: i32; + var $i586: i32; + var $i587: i32; + var $i588: i1; + var $i590: i1; + var $i591: i1; + var $i593: i32; + var $i592: i32; + var $i589: i32; + var $i594: i64; + var $i595: i64; + var $i596: i32; + var $i597: i32; + var $i598: i64; + var $i599: i64; + var $i600: i32; + var $i601: i32; + var $i602: i32; + var $i603: i1; + var $i605: i1; + var $i606: i1; + var $i608: i32; + var $i607: i32; + var $i604: i32; + var $i609: i64; + var $i610: i64; + var $i611: i32; + var $i612: i32; + var $i613: i64; + var $i614: i64; + var $i615: i32; + var $i616: i32; + var $i617: i32; + var $i618: i1; + var $i620: i1; + var $i621: i1; + var $i623: i32; + var $i622: i32; + var $i619: i32; + var $i624: i64; + var $i625: i64; + var $i626: i32; + var $i627: i32; + var $i628: i64; + var $i629: i64; + var $i630: i32; + var $i631: i32; + var $i632: i32; + var $i633: i1; + var $i635: i1; + var $i636: i1; + var $i638: i32; + var $i637: i32; + var $i634: i32; + var $i639: i64; + var $i640: i64; + var $i641: i32; + var $i642: i32; + var $i643: i64; + var $i644: i64; + var $i645: i32; + var $i646: i32; + var $i647: i32; + var $i648: i1; + var $i650: i1; + var $i651: i1; + var $i653: i32; + var $i652: i32; + var $i649: i32; + var $i654: i64; + var $i655: i64; + var $i656: i32; + var $i657: i32; + var $i658: i64; + var $i659: i64; + var $i660: i32; + var $i661: i32; + var $i662: i32; + var $i663: i1; + var $i665: i1; + var $i666: i1; + var $i668: i32; + var $i667: i32; + var $i664: i32; + var $i669: i64; + var $i670: i64; + var $i671: i32; + var $i672: i32; + var $i673: i64; + var $i674: i64; + var $i675: i32; + var $i676: i32; + var $i677: i32; + var $i678: i1; + var $i680: i1; + var $i681: i1; + var $i683: i32; + var $i682: i32; + var $i679: i32; + var $i684: i64; + var $i685: i64; + var $i686: i32; + var $i687: i32; + var $i688: i64; + var $i689: i64; + var $i690: i32; + var $i691: i32; + var $i692: i32; + var $i693: i1; + var $i695: i1; + var $i696: i1; + var $i698: i32; + var $i697: i32; + var $i694: i32; + var $i699: i64; + var $i700: i64; + var $i701: i32; + var $i702: i32; + var $i703: i64; + var $i704: i64; + var $i705: i32; + var $i706: i32; + var $i707: i32; + var $i708: i1; + var $i710: i1; + var $i711: i1; + var $i713: i32; + var $i712: i32; + var $i709: i32; + var $i714: i64; + var $i715: i64; + var $i716: i32; + var $i717: i32; + var $i718: i64; + var $i719: i64; + var $i720: i32; + var $i721: i32; + var $i722: i32; + var $i723: i1; + var $i725: i1; + var $i726: i1; + var $i728: i32; + var $i727: i32; + var $i724: i32; + var $i729: i64; + var $i730: i64; + var $i731: i32; + var $i732: i32; + var $i733: i64; + var $i734: i64; + var $i735: i32; + var $i736: i32; + var $i737: i32; + var $i738: i1; + var $i740: i1; + var $i741: i1; + var $i743: i32; + var $i742: i32; + var $i739: i32; + var $i744: i64; + var $i745: i64; + var $i746: i32; + var $i747: i32; + var $i748: i64; + var $i749: i64; + var $i750: i32; + var $i751: i32; + var $i752: i32; + var $i753: i1; + var $i755: i1; + var $i756: i1; + var $i758: i32; + var $i757: i32; + var $i754: i32; + var $i759: i64; + var $i760: i64; + var $i761: i32; + var $i762: i32; + var $i763: i64; + var $i764: i64; + var $i765: i32; + var $i766: i32; + var $i767: i32; + var $i768: i1; + var $i770: i1; + var $i771: i1; + var $i773: i32; + var $i772: i32; + var $i769: i32; + var $i774: i64; + var $i775: i64; + var $i776: i32; + var $i777: i32; + var $i778: i64; + var $i779: i64; + var $i780: i32; + var $i781: i32; + var $i782: i32; + var $i783: i1; + var $i785: i1; + var $i786: i1; + var $i788: i32; + var $i787: i32; + var $i784: i32; + var $i789: i64; + var $i790: i64; + var $i791: i32; + var $i792: i32; + var $i793: i64; + var $i794: i64; + var $i795: i32; + var $i796: i32; + var $i797: i32; + var $i798: i1; + var $i800: i1; + var $i801: i1; + var $i803: i32; + var $i802: i32; + var $i799: i32; + var $i804: i64; + var $i805: i64; + var $i806: i32; + var $i807: i32; + var $i808: i64; + var $i809: i64; + var $i810: i32; + var $i811: i32; + var $i812: i32; + var $i813: i1; + var $i815: i1; + var $i816: i1; + var $i818: i32; + var $i817: i32; + var $i814: i32; + var $i819: i64; + var $i820: i64; + var $i821: i32; + var $i822: i32; + var $i823: i64; + var $i824: i64; + var $i825: i32; + var $i826: i32; + var $i827: i32; + var $i828: i1; + var $i830: i1; + var $i831: i1; + var $i833: i32; + var $i832: i32; + var $i829: i32; + var $i834: i64; + var $i835: i64; + var $i836: i32; + var $i837: i32; + var $i838: i64; + var $i839: i64; + var $i840: i32; + var $i841: i32; + var $i842: i32; + var $i843: i1; + var $i845: i1; + var $i846: i1; + var $i848: i32; + var $i847: i32; + var $i844: i32; + var $i849: i64; + var $i850: i64; + var $i851: i32; + var $i852: i32; + var $i853: i64; + var $i854: i64; + var $i855: i32; + var $i856: i32; + var $i857: i32; + var $i858: i1; + var $i860: i1; + var $i861: i1; + var $i863: i32; + var $i862: i32; + var $i859: i32; + var $i864: i64; + var $i865: i64; + var $i866: i32; + var $i867: i32; + var $i868: i64; + var $i869: i64; + var $i870: i32; + var $i871: i32; + var $i872: i32; + var $i873: i1; + var $i875: i1; + var $i876: i1; + var $i878: i32; + var $i877: i32; + var $i874: i32; + var $i879: i64; + var $i880: i64; + var $i881: i32; + var $i882: i32; + var $i883: i64; + var $i884: i64; + var $i885: i32; + var $i886: i32; + var $i887: i32; + var $i888: i1; + var $i890: i1; + var $i891: i1; + var $i893: i32; + var $i892: i32; + var $i889: i32; + var $i894: i64; + var $i895: i64; + var $i896: i32; + var $i897: i32; + var $i898: i64; + var $i899: i64; + var $i900: i32; + var $i901: i32; + var $i902: i32; + var $i903: i1; + var $i905: i1; + var $i906: i1; + var $i908: i32; + var $i907: i32; + var $i904: i32; + var $i909: i64; + var $i910: i64; + var $i911: i32; + var $i912: i32; + var $i913: i64; + var $i914: i64; + var $i915: i32; + var $i916: i32; + var $i917: i32; + var $i918: i1; + var $i920: i1; + var $i921: i1; + var $i923: i32; + var $i922: i32; + var $i919: i32; + var $i924: i64; + var $i925: i64; + var $i926: i32; + var $i927: i32; + var $i928: i64; + var $i929: i64; + var $i930: i32; + var $i931: i32; + var $i932: i32; + var $i933: i1; + var $i935: i1; + var $i936: i1; + var $i938: i32; + var $i937: i32; + var $i934: i32; + var $i939: i64; + var $i940: i64; + var $i941: i32; + var $i942: i32; + var $i943: i64; + var $i944: i64; + var $i945: i32; + var $i946: i32; + var $i947: i32; + var $i948: i1; + var $i950: i1; + var $i951: i1; + var $i953: i32; + var $i952: i32; + var $i949: i32; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 60, 5} true; + assume {:verifier.code 0} true; + call {:cexpr "__SMACK_and32:arg:a"} boogie_si_record_i32($i0); + call {:cexpr "__SMACK_and32:arg:b"} boogie_si_record_i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 60, 5} true; + assume {:verifier.code 0} true; + $i2 := $add.i32(0, 0); + call {:cexpr "c"} boogie_si_record_i32($i2); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 61, 9} true; + assume {:verifier.code 0} true; + $i3 := $slt.i32($i0, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 61, 7} true; + assume {:verifier.code 0} true; + $i4 := $i2; + assume {:branchcond $i3} true; + goto $bb1, $bb2; +$bb1: + assume ($i3 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 11} true; + assume {:verifier.code 0} true; + $i5 := $slt.i32($i1, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i5} true; + goto $bb4, $bb6; +$bb2: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 61, 7} true; + assume {:verifier.code 0} true; + assume !(($i3 == 1)); + goto $bb3; +$bb3: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 66, 7} true; + assume {:verifier.code 0} true; + $i9 := $sext.i32.i64($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 66, 9} true; + assume {:verifier.code 0} true; + $i10 := $srem.i64($i9, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 66, 7} true; + assume {:verifier.code 0} true; + $i11 := $trunc.i64.i32($i10); + call {:cexpr "a"} boogie_si_record_i32($i11); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 67, 5} true; + assume {:verifier.code 0} true; + $i12 := $add.i32($i11, $i11); + call {:cexpr "a"} boogie_si_record_i32($i12); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 68, 7} true; + assume {:verifier.code 0} true; + $i13 := $sext.i32.i64($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 68, 9} true; + assume {:verifier.code 0} true; + $i14 := $srem.i64($i13, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 68, 7} true; + assume {:verifier.code 0} true; + $i15 := $trunc.i64.i32($i14); + call {:cexpr "b"} boogie_si_record_i32($i15); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 69, 5} true; + assume {:verifier.code 0} true; + $i16 := $add.i32($i15, $i15); + call {:cexpr "b"} boogie_si_record_i32($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 71, 5} true; + assume {:verifier.code 0} true; + $i17 := $add.i32($i4, $i4); + call {:cexpr "c"} boogie_si_record_i32($i17); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 72, 9} true; + assume {:verifier.code 0} true; + $i18 := $slt.i32($i12, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 72, 7} true; + assume {:verifier.code 0} true; + $i19 := $i17; + assume {:branchcond $i18} true; + goto $bb10, $bb11; +$bb4: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 15} true; + assume {:verifier.code 0} true; + assume ($i5 == 1); + goto $bb5; +$bb5: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 63, 9} true; + assume {:verifier.code 0} true; + $i8 := $add.i32($i2, 1); + call {:cexpr "c"} boogie_si_record_i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 64, 5} true; + assume {:verifier.code 0} true; + $i7 := $i8; + goto $bb9; +$bb6: + assume !(($i5 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 20} true; + assume {:verifier.code 0} true; + $i6 := $sgt.i32($i1, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 9} true; + assume {:verifier.code 0} true; + $i7 := $i2; + assume {:branchcond $i6} true; + goto $bb7, $bb8; +$bb7: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 9} true; + assume {:verifier.code 0} true; + assume ($i6 == 1); + goto $bb5; +$bb8: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 9} true; + assume {:verifier.code 0} true; + assume !(($i6 == 1)); + goto $bb9; +$bb9: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 65, 3} true; + assume {:verifier.code 0} true; + $i4 := $i7; + goto $bb3; +$bb10: + assume ($i18 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 11} true; + assume {:verifier.code 0} true; + $i20 := $slt.i32($i16, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i20} true; + goto $bb13, $bb15; +$bb11: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 72, 7} true; + assume {:verifier.code 0} true; + assume !(($i18 == 1)); + goto $bb12; +$bb12: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 77, 7} true; + assume {:verifier.code 0} true; + $i24 := $sext.i32.i64($i12); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 77, 9} true; + assume {:verifier.code 0} true; + $i25 := $srem.i64($i24, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 77, 7} true; + assume {:verifier.code 0} true; + $i26 := $trunc.i64.i32($i25); + call {:cexpr "a"} boogie_si_record_i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 78, 5} true; + assume {:verifier.code 0} true; + $i27 := $add.i32($i26, $i26); + call {:cexpr "a"} boogie_si_record_i32($i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 79, 7} true; + assume {:verifier.code 0} true; + $i28 := $sext.i32.i64($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 79, 9} true; + assume {:verifier.code 0} true; + $i29 := $srem.i64($i28, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 79, 7} true; + assume {:verifier.code 0} true; + $i30 := $trunc.i64.i32($i29); + call {:cexpr "b"} boogie_si_record_i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 80, 5} true; + assume {:verifier.code 0} true; + $i31 := $add.i32($i30, $i30); + call {:cexpr "b"} boogie_si_record_i32($i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 82, 5} true; + assume {:verifier.code 0} true; + $i32 := $add.i32($i19, $i19); + call {:cexpr "c"} boogie_si_record_i32($i32); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 83, 9} true; + assume {:verifier.code 0} true; + $i33 := $slt.i32($i27, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 83, 7} true; + assume {:verifier.code 0} true; + $i34 := $i32; + assume {:branchcond $i33} true; + goto $bb19, $bb20; +$bb13: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 15} true; + assume {:verifier.code 0} true; + assume ($i20 == 1); + goto $bb14; +$bb14: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 74, 9} true; + assume {:verifier.code 0} true; + $i23 := $add.i32($i17, 1); + call {:cexpr "c"} boogie_si_record_i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 75, 5} true; + assume {:verifier.code 0} true; + $i22 := $i23; + goto $bb18; +$bb15: + assume !(($i20 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 20} true; + assume {:verifier.code 0} true; + $i21 := $sgt.i32($i16, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 9} true; + assume {:verifier.code 0} true; + $i22 := $i17; + assume {:branchcond $i21} true; + goto $bb16, $bb17; +$bb16: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 9} true; + assume {:verifier.code 0} true; + assume ($i21 == 1); + goto $bb14; +$bb17: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 9} true; + assume {:verifier.code 0} true; + assume !(($i21 == 1)); + goto $bb18; +$bb18: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 76, 3} true; + assume {:verifier.code 0} true; + $i19 := $i22; + goto $bb12; +$bb19: + assume ($i33 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 11} true; + assume {:verifier.code 0} true; + $i35 := $slt.i32($i31, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i35} true; + goto $bb22, $bb24; +$bb20: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 83, 7} true; + assume {:verifier.code 0} true; + assume !(($i33 == 1)); + goto $bb21; +$bb21: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 88, 7} true; + assume {:verifier.code 0} true; + $i39 := $sext.i32.i64($i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 88, 9} true; + assume {:verifier.code 0} true; + $i40 := $srem.i64($i39, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 88, 7} true; + assume {:verifier.code 0} true; + $i41 := $trunc.i64.i32($i40); + call {:cexpr "a"} boogie_si_record_i32($i41); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 89, 5} true; + assume {:verifier.code 0} true; + $i42 := $add.i32($i41, $i41); + call {:cexpr "a"} boogie_si_record_i32($i42); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 90, 7} true; + assume {:verifier.code 0} true; + $i43 := $sext.i32.i64($i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 90, 9} true; + assume {:verifier.code 0} true; + $i44 := $srem.i64($i43, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 90, 7} true; + assume {:verifier.code 0} true; + $i45 := $trunc.i64.i32($i44); + call {:cexpr "b"} boogie_si_record_i32($i45); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 91, 5} true; + assume {:verifier.code 0} true; + $i46 := $add.i32($i45, $i45); + call {:cexpr "b"} boogie_si_record_i32($i46); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 93, 5} true; + assume {:verifier.code 0} true; + $i47 := $add.i32($i34, $i34); + call {:cexpr "c"} boogie_si_record_i32($i47); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 94, 9} true; + assume {:verifier.code 0} true; + $i48 := $slt.i32($i42, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 94, 7} true; + assume {:verifier.code 0} true; + $i49 := $i47; + assume {:branchcond $i48} true; + goto $bb28, $bb29; +$bb22: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 15} true; + assume {:verifier.code 0} true; + assume ($i35 == 1); + goto $bb23; +$bb23: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 85, 9} true; + assume {:verifier.code 0} true; + $i38 := $add.i32($i32, 1); + call {:cexpr "c"} boogie_si_record_i32($i38); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 86, 5} true; + assume {:verifier.code 0} true; + $i37 := $i38; + goto $bb27; +$bb24: + assume !(($i35 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 20} true; + assume {:verifier.code 0} true; + $i36 := $sgt.i32($i31, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 9} true; + assume {:verifier.code 0} true; + $i37 := $i32; + assume {:branchcond $i36} true; + goto $bb25, $bb26; +$bb25: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 9} true; + assume {:verifier.code 0} true; + assume ($i36 == 1); + goto $bb23; +$bb26: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 9} true; + assume {:verifier.code 0} true; + assume !(($i36 == 1)); + goto $bb27; +$bb27: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 87, 3} true; + assume {:verifier.code 0} true; + $i34 := $i37; + goto $bb21; +$bb28: + assume ($i48 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 11} true; + assume {:verifier.code 0} true; + $i50 := $slt.i32($i46, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i50} true; + goto $bb31, $bb33; +$bb29: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 94, 7} true; + assume {:verifier.code 0} true; + assume !(($i48 == 1)); + goto $bb30; +$bb30: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 99, 7} true; + assume {:verifier.code 0} true; + $i54 := $sext.i32.i64($i42); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 99, 9} true; + assume {:verifier.code 0} true; + $i55 := $srem.i64($i54, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 99, 7} true; + assume {:verifier.code 0} true; + $i56 := $trunc.i64.i32($i55); + call {:cexpr "a"} boogie_si_record_i32($i56); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 100, 5} true; + assume {:verifier.code 0} true; + $i57 := $add.i32($i56, $i56); + call {:cexpr "a"} boogie_si_record_i32($i57); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 101, 7} true; + assume {:verifier.code 0} true; + $i58 := $sext.i32.i64($i46); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 101, 9} true; + assume {:verifier.code 0} true; + $i59 := $srem.i64($i58, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 101, 7} true; + assume {:verifier.code 0} true; + $i60 := $trunc.i64.i32($i59); + call {:cexpr "b"} boogie_si_record_i32($i60); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 102, 5} true; + assume {:verifier.code 0} true; + $i61 := $add.i32($i60, $i60); + call {:cexpr "b"} boogie_si_record_i32($i61); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 104, 5} true; + assume {:verifier.code 0} true; + $i62 := $add.i32($i49, $i49); + call {:cexpr "c"} boogie_si_record_i32($i62); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 105, 9} true; + assume {:verifier.code 0} true; + $i63 := $slt.i32($i57, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 105, 7} true; + assume {:verifier.code 0} true; + $i64 := $i62; + assume {:branchcond $i63} true; + goto $bb37, $bb38; +$bb31: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 15} true; + assume {:verifier.code 0} true; + assume ($i50 == 1); + goto $bb32; +$bb32: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 96, 9} true; + assume {:verifier.code 0} true; + $i53 := $add.i32($i47, 1); + call {:cexpr "c"} boogie_si_record_i32($i53); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 97, 5} true; + assume {:verifier.code 0} true; + $i52 := $i53; + goto $bb36; +$bb33: + assume !(($i50 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 20} true; + assume {:verifier.code 0} true; + $i51 := $sgt.i32($i46, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 9} true; + assume {:verifier.code 0} true; + $i52 := $i47; + assume {:branchcond $i51} true; + goto $bb34, $bb35; +$bb34: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 9} true; + assume {:verifier.code 0} true; + assume ($i51 == 1); + goto $bb32; +$bb35: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 9} true; + assume {:verifier.code 0} true; + assume !(($i51 == 1)); + goto $bb36; +$bb36: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 98, 3} true; + assume {:verifier.code 0} true; + $i49 := $i52; + goto $bb30; +$bb37: + assume ($i63 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 11} true; + assume {:verifier.code 0} true; + $i65 := $slt.i32($i61, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i65} true; + goto $bb40, $bb42; +$bb38: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 105, 7} true; + assume {:verifier.code 0} true; + assume !(($i63 == 1)); + goto $bb39; +$bb39: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 110, 7} true; + assume {:verifier.code 0} true; + $i69 := $sext.i32.i64($i57); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 110, 9} true; + assume {:verifier.code 0} true; + $i70 := $srem.i64($i69, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 110, 7} true; + assume {:verifier.code 0} true; + $i71 := $trunc.i64.i32($i70); + call {:cexpr "a"} boogie_si_record_i32($i71); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 111, 5} true; + assume {:verifier.code 0} true; + $i72 := $add.i32($i71, $i71); + call {:cexpr "a"} boogie_si_record_i32($i72); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 112, 7} true; + assume {:verifier.code 0} true; + $i73 := $sext.i32.i64($i61); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 112, 9} true; + assume {:verifier.code 0} true; + $i74 := $srem.i64($i73, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 112, 7} true; + assume {:verifier.code 0} true; + $i75 := $trunc.i64.i32($i74); + call {:cexpr "b"} boogie_si_record_i32($i75); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 113, 5} true; + assume {:verifier.code 0} true; + $i76 := $add.i32($i75, $i75); + call {:cexpr "b"} boogie_si_record_i32($i76); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 115, 5} true; + assume {:verifier.code 0} true; + $i77 := $add.i32($i64, $i64); + call {:cexpr "c"} boogie_si_record_i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 116, 9} true; + assume {:verifier.code 0} true; + $i78 := $slt.i32($i72, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 116, 7} true; + assume {:verifier.code 0} true; + $i79 := $i77; + assume {:branchcond $i78} true; + goto $bb46, $bb47; +$bb40: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 15} true; + assume {:verifier.code 0} true; + assume ($i65 == 1); + goto $bb41; +$bb41: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 107, 9} true; + assume {:verifier.code 0} true; + $i68 := $add.i32($i62, 1); + call {:cexpr "c"} boogie_si_record_i32($i68); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 108, 5} true; + assume {:verifier.code 0} true; + $i67 := $i68; + goto $bb45; +$bb42: + assume !(($i65 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 20} true; + assume {:verifier.code 0} true; + $i66 := $sgt.i32($i61, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 9} true; + assume {:verifier.code 0} true; + $i67 := $i62; + assume {:branchcond $i66} true; + goto $bb43, $bb44; +$bb43: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 9} true; + assume {:verifier.code 0} true; + assume ($i66 == 1); + goto $bb41; +$bb44: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 9} true; + assume {:verifier.code 0} true; + assume !(($i66 == 1)); + goto $bb45; +$bb45: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 109, 3} true; + assume {:verifier.code 0} true; + $i64 := $i67; + goto $bb39; +$bb46: + assume ($i78 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 11} true; + assume {:verifier.code 0} true; + $i80 := $slt.i32($i76, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i80} true; + goto $bb49, $bb51; +$bb47: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 116, 7} true; + assume {:verifier.code 0} true; + assume !(($i78 == 1)); + goto $bb48; +$bb48: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 121, 7} true; + assume {:verifier.code 0} true; + $i84 := $sext.i32.i64($i72); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 121, 9} true; + assume {:verifier.code 0} true; + $i85 := $srem.i64($i84, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 121, 7} true; + assume {:verifier.code 0} true; + $i86 := $trunc.i64.i32($i85); + call {:cexpr "a"} boogie_si_record_i32($i86); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 122, 5} true; + assume {:verifier.code 0} true; + $i87 := $add.i32($i86, $i86); + call {:cexpr "a"} boogie_si_record_i32($i87); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 123, 7} true; + assume {:verifier.code 0} true; + $i88 := $sext.i32.i64($i76); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 123, 9} true; + assume {:verifier.code 0} true; + $i89 := $srem.i64($i88, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 123, 7} true; + assume {:verifier.code 0} true; + $i90 := $trunc.i64.i32($i89); + call {:cexpr "b"} boogie_si_record_i32($i90); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 124, 5} true; + assume {:verifier.code 0} true; + $i91 := $add.i32($i90, $i90); + call {:cexpr "b"} boogie_si_record_i32($i91); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 126, 5} true; + assume {:verifier.code 0} true; + $i92 := $add.i32($i79, $i79); + call {:cexpr "c"} boogie_si_record_i32($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 127, 9} true; + assume {:verifier.code 0} true; + $i93 := $slt.i32($i87, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 127, 7} true; + assume {:verifier.code 0} true; + $i94 := $i92; + assume {:branchcond $i93} true; + goto $bb55, $bb56; +$bb49: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 15} true; + assume {:verifier.code 0} true; + assume ($i80 == 1); + goto $bb50; +$bb50: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 118, 9} true; + assume {:verifier.code 0} true; + $i83 := $add.i32($i77, 1); + call {:cexpr "c"} boogie_si_record_i32($i83); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 119, 5} true; + assume {:verifier.code 0} true; + $i82 := $i83; + goto $bb54; +$bb51: + assume !(($i80 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 20} true; + assume {:verifier.code 0} true; + $i81 := $sgt.i32($i76, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 9} true; + assume {:verifier.code 0} true; + $i82 := $i77; + assume {:branchcond $i81} true; + goto $bb52, $bb53; +$bb52: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 9} true; + assume {:verifier.code 0} true; + assume ($i81 == 1); + goto $bb50; +$bb53: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 9} true; + assume {:verifier.code 0} true; + assume !(($i81 == 1)); + goto $bb54; +$bb54: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 120, 3} true; + assume {:verifier.code 0} true; + $i79 := $i82; + goto $bb48; +$bb55: + assume ($i93 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 11} true; + assume {:verifier.code 0} true; + $i95 := $slt.i32($i91, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i95} true; + goto $bb58, $bb60; +$bb56: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 127, 7} true; + assume {:verifier.code 0} true; + assume !(($i93 == 1)); + goto $bb57; +$bb57: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 132, 7} true; + assume {:verifier.code 0} true; + $i99 := $sext.i32.i64($i87); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 132, 9} true; + assume {:verifier.code 0} true; + $i100 := $srem.i64($i99, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 132, 7} true; + assume {:verifier.code 0} true; + $i101 := $trunc.i64.i32($i100); + call {:cexpr "a"} boogie_si_record_i32($i101); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 133, 5} true; + assume {:verifier.code 0} true; + $i102 := $add.i32($i101, $i101); + call {:cexpr "a"} boogie_si_record_i32($i102); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 134, 7} true; + assume {:verifier.code 0} true; + $i103 := $sext.i32.i64($i91); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 134, 9} true; + assume {:verifier.code 0} true; + $i104 := $srem.i64($i103, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 134, 7} true; + assume {:verifier.code 0} true; + $i105 := $trunc.i64.i32($i104); + call {:cexpr "b"} boogie_si_record_i32($i105); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 135, 5} true; + assume {:verifier.code 0} true; + $i106 := $add.i32($i105, $i105); + call {:cexpr "b"} boogie_si_record_i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 137, 5} true; + assume {:verifier.code 0} true; + $i107 := $add.i32($i94, $i94); + call {:cexpr "c"} boogie_si_record_i32($i107); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 138, 9} true; + assume {:verifier.code 0} true; + $i108 := $slt.i32($i102, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 138, 7} true; + assume {:verifier.code 0} true; + $i109 := $i107; + assume {:branchcond $i108} true; + goto $bb64, $bb65; +$bb58: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 15} true; + assume {:verifier.code 0} true; + assume ($i95 == 1); + goto $bb59; +$bb59: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 129, 9} true; + assume {:verifier.code 0} true; + $i98 := $add.i32($i92, 1); + call {:cexpr "c"} boogie_si_record_i32($i98); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 130, 5} true; + assume {:verifier.code 0} true; + $i97 := $i98; + goto $bb63; +$bb60: + assume !(($i95 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 20} true; + assume {:verifier.code 0} true; + $i96 := $sgt.i32($i91, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 9} true; + assume {:verifier.code 0} true; + $i97 := $i92; + assume {:branchcond $i96} true; + goto $bb61, $bb62; +$bb61: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 9} true; + assume {:verifier.code 0} true; + assume ($i96 == 1); + goto $bb59; +$bb62: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 9} true; + assume {:verifier.code 0} true; + assume !(($i96 == 1)); + goto $bb63; +$bb63: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 131, 3} true; + assume {:verifier.code 0} true; + $i94 := $i97; + goto $bb57; +$bb64: + assume ($i108 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 11} true; + assume {:verifier.code 0} true; + $i110 := $slt.i32($i106, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i110} true; + goto $bb67, $bb69; +$bb65: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 138, 7} true; + assume {:verifier.code 0} true; + assume !(($i108 == 1)); + goto $bb66; +$bb66: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 143, 7} true; + assume {:verifier.code 0} true; + $i114 := $sext.i32.i64($i102); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 143, 9} true; + assume {:verifier.code 0} true; + $i115 := $srem.i64($i114, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 143, 7} true; + assume {:verifier.code 0} true; + $i116 := $trunc.i64.i32($i115); + call {:cexpr "a"} boogie_si_record_i32($i116); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 144, 5} true; + assume {:verifier.code 0} true; + $i117 := $add.i32($i116, $i116); + call {:cexpr "a"} boogie_si_record_i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 145, 7} true; + assume {:verifier.code 0} true; + $i118 := $sext.i32.i64($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 145, 9} true; + assume {:verifier.code 0} true; + $i119 := $srem.i64($i118, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 145, 7} true; + assume {:verifier.code 0} true; + $i120 := $trunc.i64.i32($i119); + call {:cexpr "b"} boogie_si_record_i32($i120); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 146, 5} true; + assume {:verifier.code 0} true; + $i121 := $add.i32($i120, $i120); + call {:cexpr "b"} boogie_si_record_i32($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 148, 5} true; + assume {:verifier.code 0} true; + $i122 := $add.i32($i109, $i109); + call {:cexpr "c"} boogie_si_record_i32($i122); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 149, 9} true; + assume {:verifier.code 0} true; + $i123 := $slt.i32($i117, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 149, 7} true; + assume {:verifier.code 0} true; + $i124 := $i122; + assume {:branchcond $i123} true; + goto $bb73, $bb74; +$bb67: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 15} true; + assume {:verifier.code 0} true; + assume ($i110 == 1); + goto $bb68; +$bb68: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 140, 9} true; + assume {:verifier.code 0} true; + $i113 := $add.i32($i107, 1); + call {:cexpr "c"} boogie_si_record_i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 141, 5} true; + assume {:verifier.code 0} true; + $i112 := $i113; + goto $bb72; +$bb69: + assume !(($i110 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 20} true; + assume {:verifier.code 0} true; + $i111 := $sgt.i32($i106, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 9} true; + assume {:verifier.code 0} true; + $i112 := $i107; + assume {:branchcond $i111} true; + goto $bb70, $bb71; +$bb70: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 9} true; + assume {:verifier.code 0} true; + assume ($i111 == 1); + goto $bb68; +$bb71: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 9} true; + assume {:verifier.code 0} true; + assume !(($i111 == 1)); + goto $bb72; +$bb72: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 142, 3} true; + assume {:verifier.code 0} true; + $i109 := $i112; + goto $bb66; +$bb73: + assume ($i123 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 11} true; + assume {:verifier.code 0} true; + $i125 := $slt.i32($i121, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i125} true; + goto $bb76, $bb78; +$bb74: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 149, 7} true; + assume {:verifier.code 0} true; + assume !(($i123 == 1)); + goto $bb75; +$bb75: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 154, 7} true; + assume {:verifier.code 0} true; + $i129 := $sext.i32.i64($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 154, 9} true; + assume {:verifier.code 0} true; + $i130 := $srem.i64($i129, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 154, 7} true; + assume {:verifier.code 0} true; + $i131 := $trunc.i64.i32($i130); + call {:cexpr "a"} boogie_si_record_i32($i131); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 155, 5} true; + assume {:verifier.code 0} true; + $i132 := $add.i32($i131, $i131); + call {:cexpr "a"} boogie_si_record_i32($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 156, 7} true; + assume {:verifier.code 0} true; + $i133 := $sext.i32.i64($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 156, 9} true; + assume {:verifier.code 0} true; + $i134 := $srem.i64($i133, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 156, 7} true; + assume {:verifier.code 0} true; + $i135 := $trunc.i64.i32($i134); + call {:cexpr "b"} boogie_si_record_i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 157, 5} true; + assume {:verifier.code 0} true; + $i136 := $add.i32($i135, $i135); + call {:cexpr "b"} boogie_si_record_i32($i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 159, 5} true; + assume {:verifier.code 0} true; + $i137 := $add.i32($i124, $i124); + call {:cexpr "c"} boogie_si_record_i32($i137); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 160, 9} true; + assume {:verifier.code 0} true; + $i138 := $slt.i32($i132, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 160, 7} true; + assume {:verifier.code 0} true; + $i139 := $i137; + assume {:branchcond $i138} true; + goto $bb82, $bb83; +$bb76: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 15} true; + assume {:verifier.code 0} true; + assume ($i125 == 1); + goto $bb77; +$bb77: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 151, 9} true; + assume {:verifier.code 0} true; + $i128 := $add.i32($i122, 1); + call {:cexpr "c"} boogie_si_record_i32($i128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 152, 5} true; + assume {:verifier.code 0} true; + $i127 := $i128; + goto $bb81; +$bb78: + assume !(($i125 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 20} true; + assume {:verifier.code 0} true; + $i126 := $sgt.i32($i121, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 9} true; + assume {:verifier.code 0} true; + $i127 := $i122; + assume {:branchcond $i126} true; + goto $bb79, $bb80; +$bb79: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 9} true; + assume {:verifier.code 0} true; + assume ($i126 == 1); + goto $bb77; +$bb80: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 9} true; + assume {:verifier.code 0} true; + assume !(($i126 == 1)); + goto $bb81; +$bb81: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 153, 3} true; + assume {:verifier.code 0} true; + $i124 := $i127; + goto $bb75; +$bb82: + assume ($i138 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 11} true; + assume {:verifier.code 0} true; + $i140 := $slt.i32($i136, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i140} true; + goto $bb85, $bb87; +$bb83: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 160, 7} true; + assume {:verifier.code 0} true; + assume !(($i138 == 1)); + goto $bb84; +$bb84: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 165, 7} true; + assume {:verifier.code 0} true; + $i144 := $sext.i32.i64($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 165, 9} true; + assume {:verifier.code 0} true; + $i145 := $srem.i64($i144, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 165, 7} true; + assume {:verifier.code 0} true; + $i146 := $trunc.i64.i32($i145); + call {:cexpr "a"} boogie_si_record_i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 166, 5} true; + assume {:verifier.code 0} true; + $i147 := $add.i32($i146, $i146); + call {:cexpr "a"} boogie_si_record_i32($i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 167, 7} true; + assume {:verifier.code 0} true; + $i148 := $sext.i32.i64($i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 167, 9} true; + assume {:verifier.code 0} true; + $i149 := $srem.i64($i148, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 167, 7} true; + assume {:verifier.code 0} true; + $i150 := $trunc.i64.i32($i149); + call {:cexpr "b"} boogie_si_record_i32($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 168, 5} true; + assume {:verifier.code 0} true; + $i151 := $add.i32($i150, $i150); + call {:cexpr "b"} boogie_si_record_i32($i151); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 170, 5} true; + assume {:verifier.code 0} true; + $i152 := $add.i32($i139, $i139); + call {:cexpr "c"} boogie_si_record_i32($i152); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 171, 9} true; + assume {:verifier.code 0} true; + $i153 := $slt.i32($i147, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 171, 7} true; + assume {:verifier.code 0} true; + $i154 := $i152; + assume {:branchcond $i153} true; + goto $bb91, $bb92; +$bb85: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 15} true; + assume {:verifier.code 0} true; + assume ($i140 == 1); + goto $bb86; +$bb86: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 162, 9} true; + assume {:verifier.code 0} true; + $i143 := $add.i32($i137, 1); + call {:cexpr "c"} boogie_si_record_i32($i143); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 163, 5} true; + assume {:verifier.code 0} true; + $i142 := $i143; + goto $bb90; +$bb87: + assume !(($i140 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 20} true; + assume {:verifier.code 0} true; + $i141 := $sgt.i32($i136, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 9} true; + assume {:verifier.code 0} true; + $i142 := $i137; + assume {:branchcond $i141} true; + goto $bb88, $bb89; +$bb88: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 9} true; + assume {:verifier.code 0} true; + assume ($i141 == 1); + goto $bb86; +$bb89: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 9} true; + assume {:verifier.code 0} true; + assume !(($i141 == 1)); + goto $bb90; +$bb90: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 164, 3} true; + assume {:verifier.code 0} true; + $i139 := $i142; + goto $bb84; +$bb91: + assume ($i153 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 11} true; + assume {:verifier.code 0} true; + $i155 := $slt.i32($i151, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i155} true; + goto $bb94, $bb96; +$bb92: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 171, 7} true; + assume {:verifier.code 0} true; + assume !(($i153 == 1)); + goto $bb93; +$bb93: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 176, 7} true; + assume {:verifier.code 0} true; + $i159 := $sext.i32.i64($i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 176, 9} true; + assume {:verifier.code 0} true; + $i160 := $srem.i64($i159, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 176, 7} true; + assume {:verifier.code 0} true; + $i161 := $trunc.i64.i32($i160); + call {:cexpr "a"} boogie_si_record_i32($i161); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 177, 5} true; + assume {:verifier.code 0} true; + $i162 := $add.i32($i161, $i161); + call {:cexpr "a"} boogie_si_record_i32($i162); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 178, 7} true; + assume {:verifier.code 0} true; + $i163 := $sext.i32.i64($i151); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 178, 9} true; + assume {:verifier.code 0} true; + $i164 := $srem.i64($i163, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 178, 7} true; + assume {:verifier.code 0} true; + $i165 := $trunc.i64.i32($i164); + call {:cexpr "b"} boogie_si_record_i32($i165); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 179, 5} true; + assume {:verifier.code 0} true; + $i166 := $add.i32($i165, $i165); + call {:cexpr "b"} boogie_si_record_i32($i166); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 181, 5} true; + assume {:verifier.code 0} true; + $i167 := $add.i32($i154, $i154); + call {:cexpr "c"} boogie_si_record_i32($i167); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 182, 9} true; + assume {:verifier.code 0} true; + $i168 := $slt.i32($i162, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 182, 7} true; + assume {:verifier.code 0} true; + $i169 := $i167; + assume {:branchcond $i168} true; + goto $bb100, $bb101; +$bb94: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 15} true; + assume {:verifier.code 0} true; + assume ($i155 == 1); + goto $bb95; +$bb95: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 173, 9} true; + assume {:verifier.code 0} true; + $i158 := $add.i32($i152, 1); + call {:cexpr "c"} boogie_si_record_i32($i158); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 174, 5} true; + assume {:verifier.code 0} true; + $i157 := $i158; + goto $bb99; +$bb96: + assume !(($i155 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 20} true; + assume {:verifier.code 0} true; + $i156 := $sgt.i32($i151, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 9} true; + assume {:verifier.code 0} true; + $i157 := $i152; + assume {:branchcond $i156} true; + goto $bb97, $bb98; +$bb97: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 9} true; + assume {:verifier.code 0} true; + assume ($i156 == 1); + goto $bb95; +$bb98: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 9} true; + assume {:verifier.code 0} true; + assume !(($i156 == 1)); + goto $bb99; +$bb99: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 175, 3} true; + assume {:verifier.code 0} true; + $i154 := $i157; + goto $bb93; +$bb100: + assume ($i168 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 11} true; + assume {:verifier.code 0} true; + $i170 := $slt.i32($i166, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i170} true; + goto $bb103, $bb105; +$bb101: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 182, 7} true; + assume {:verifier.code 0} true; + assume !(($i168 == 1)); + goto $bb102; +$bb102: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 187, 7} true; + assume {:verifier.code 0} true; + $i174 := $sext.i32.i64($i162); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 187, 9} true; + assume {:verifier.code 0} true; + $i175 := $srem.i64($i174, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 187, 7} true; + assume {:verifier.code 0} true; + $i176 := $trunc.i64.i32($i175); + call {:cexpr "a"} boogie_si_record_i32($i176); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 188, 5} true; + assume {:verifier.code 0} true; + $i177 := $add.i32($i176, $i176); + call {:cexpr "a"} boogie_si_record_i32($i177); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 189, 7} true; + assume {:verifier.code 0} true; + $i178 := $sext.i32.i64($i166); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 189, 9} true; + assume {:verifier.code 0} true; + $i179 := $srem.i64($i178, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 189, 7} true; + assume {:verifier.code 0} true; + $i180 := $trunc.i64.i32($i179); + call {:cexpr "b"} boogie_si_record_i32($i180); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 190, 5} true; + assume {:verifier.code 0} true; + $i181 := $add.i32($i180, $i180); + call {:cexpr "b"} boogie_si_record_i32($i181); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 192, 5} true; + assume {:verifier.code 0} true; + $i182 := $add.i32($i169, $i169); + call {:cexpr "c"} boogie_si_record_i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 193, 9} true; + assume {:verifier.code 0} true; + $i183 := $slt.i32($i177, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 193, 7} true; + assume {:verifier.code 0} true; + $i184 := $i182; + assume {:branchcond $i183} true; + goto $bb109, $bb110; +$bb103: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 15} true; + assume {:verifier.code 0} true; + assume ($i170 == 1); + goto $bb104; +$bb104: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 184, 9} true; + assume {:verifier.code 0} true; + $i173 := $add.i32($i167, 1); + call {:cexpr "c"} boogie_si_record_i32($i173); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 185, 5} true; + assume {:verifier.code 0} true; + $i172 := $i173; + goto $bb108; +$bb105: + assume !(($i170 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 20} true; + assume {:verifier.code 0} true; + $i171 := $sgt.i32($i166, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 9} true; + assume {:verifier.code 0} true; + $i172 := $i167; + assume {:branchcond $i171} true; + goto $bb106, $bb107; +$bb106: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 9} true; + assume {:verifier.code 0} true; + assume ($i171 == 1); + goto $bb104; +$bb107: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 9} true; + assume {:verifier.code 0} true; + assume !(($i171 == 1)); + goto $bb108; +$bb108: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 186, 3} true; + assume {:verifier.code 0} true; + $i169 := $i172; + goto $bb102; +$bb109: + assume ($i183 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 11} true; + assume {:verifier.code 0} true; + $i185 := $slt.i32($i181, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i185} true; + goto $bb112, $bb114; +$bb110: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 193, 7} true; + assume {:verifier.code 0} true; + assume !(($i183 == 1)); + goto $bb111; +$bb111: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 198, 7} true; + assume {:verifier.code 0} true; + $i189 := $sext.i32.i64($i177); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 198, 9} true; + assume {:verifier.code 0} true; + $i190 := $srem.i64($i189, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 198, 7} true; + assume {:verifier.code 0} true; + $i191 := $trunc.i64.i32($i190); + call {:cexpr "a"} boogie_si_record_i32($i191); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 199, 5} true; + assume {:verifier.code 0} true; + $i192 := $add.i32($i191, $i191); + call {:cexpr "a"} boogie_si_record_i32($i192); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 200, 7} true; + assume {:verifier.code 0} true; + $i193 := $sext.i32.i64($i181); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 200, 9} true; + assume {:verifier.code 0} true; + $i194 := $srem.i64($i193, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 200, 7} true; + assume {:verifier.code 0} true; + $i195 := $trunc.i64.i32($i194); + call {:cexpr "b"} boogie_si_record_i32($i195); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 201, 5} true; + assume {:verifier.code 0} true; + $i196 := $add.i32($i195, $i195); + call {:cexpr "b"} boogie_si_record_i32($i196); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 203, 5} true; + assume {:verifier.code 0} true; + $i197 := $add.i32($i184, $i184); + call {:cexpr "c"} boogie_si_record_i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 204, 9} true; + assume {:verifier.code 0} true; + $i198 := $slt.i32($i192, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 204, 7} true; + assume {:verifier.code 0} true; + $i199 := $i197; + assume {:branchcond $i198} true; + goto $bb118, $bb119; +$bb112: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 15} true; + assume {:verifier.code 0} true; + assume ($i185 == 1); + goto $bb113; +$bb113: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 195, 9} true; + assume {:verifier.code 0} true; + $i188 := $add.i32($i182, 1); + call {:cexpr "c"} boogie_si_record_i32($i188); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 196, 5} true; + assume {:verifier.code 0} true; + $i187 := $i188; + goto $bb117; +$bb114: + assume !(($i185 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 20} true; + assume {:verifier.code 0} true; + $i186 := $sgt.i32($i181, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 9} true; + assume {:verifier.code 0} true; + $i187 := $i182; + assume {:branchcond $i186} true; + goto $bb115, $bb116; +$bb115: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 9} true; + assume {:verifier.code 0} true; + assume ($i186 == 1); + goto $bb113; +$bb116: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 9} true; + assume {:verifier.code 0} true; + assume !(($i186 == 1)); + goto $bb117; +$bb117: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 197, 3} true; + assume {:verifier.code 0} true; + $i184 := $i187; + goto $bb111; +$bb118: + assume ($i198 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 11} true; + assume {:verifier.code 0} true; + $i200 := $slt.i32($i196, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i200} true; + goto $bb121, $bb123; +$bb119: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 204, 7} true; + assume {:verifier.code 0} true; + assume !(($i198 == 1)); + goto $bb120; +$bb120: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 209, 7} true; + assume {:verifier.code 0} true; + $i204 := $sext.i32.i64($i192); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 209, 9} true; + assume {:verifier.code 0} true; + $i205 := $srem.i64($i204, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 209, 7} true; + assume {:verifier.code 0} true; + $i206 := $trunc.i64.i32($i205); + call {:cexpr "a"} boogie_si_record_i32($i206); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 210, 5} true; + assume {:verifier.code 0} true; + $i207 := $add.i32($i206, $i206); + call {:cexpr "a"} boogie_si_record_i32($i207); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 211, 7} true; + assume {:verifier.code 0} true; + $i208 := $sext.i32.i64($i196); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 211, 9} true; + assume {:verifier.code 0} true; + $i209 := $srem.i64($i208, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 211, 7} true; + assume {:verifier.code 0} true; + $i210 := $trunc.i64.i32($i209); + call {:cexpr "b"} boogie_si_record_i32($i210); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 212, 5} true; + assume {:verifier.code 0} true; + $i211 := $add.i32($i210, $i210); + call {:cexpr "b"} boogie_si_record_i32($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 214, 5} true; + assume {:verifier.code 0} true; + $i212 := $add.i32($i199, $i199); + call {:cexpr "c"} boogie_si_record_i32($i212); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 215, 9} true; + assume {:verifier.code 0} true; + $i213 := $slt.i32($i207, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 215, 7} true; + assume {:verifier.code 0} true; + $i214 := $i212; + assume {:branchcond $i213} true; + goto $bb127, $bb128; +$bb121: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 15} true; + assume {:verifier.code 0} true; + assume ($i200 == 1); + goto $bb122; +$bb122: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 206, 9} true; + assume {:verifier.code 0} true; + $i203 := $add.i32($i197, 1); + call {:cexpr "c"} boogie_si_record_i32($i203); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 207, 5} true; + assume {:verifier.code 0} true; + $i202 := $i203; + goto $bb126; +$bb123: + assume !(($i200 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 20} true; + assume {:verifier.code 0} true; + $i201 := $sgt.i32($i196, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 9} true; + assume {:verifier.code 0} true; + $i202 := $i197; + assume {:branchcond $i201} true; + goto $bb124, $bb125; +$bb124: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 9} true; + assume {:verifier.code 0} true; + assume ($i201 == 1); + goto $bb122; +$bb125: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 9} true; + assume {:verifier.code 0} true; + assume !(($i201 == 1)); + goto $bb126; +$bb126: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 208, 3} true; + assume {:verifier.code 0} true; + $i199 := $i202; + goto $bb120; +$bb127: + assume ($i213 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 11} true; + assume {:verifier.code 0} true; + $i215 := $slt.i32($i211, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i215} true; + goto $bb130, $bb132; +$bb128: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 215, 7} true; + assume {:verifier.code 0} true; + assume !(($i213 == 1)); + goto $bb129; +$bb129: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 220, 7} true; + assume {:verifier.code 0} true; + $i219 := $sext.i32.i64($i207); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 220, 9} true; + assume {:verifier.code 0} true; + $i220 := $srem.i64($i219, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 220, 7} true; + assume {:verifier.code 0} true; + $i221 := $trunc.i64.i32($i220); + call {:cexpr "a"} boogie_si_record_i32($i221); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 221, 5} true; + assume {:verifier.code 0} true; + $i222 := $add.i32($i221, $i221); + call {:cexpr "a"} boogie_si_record_i32($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 222, 7} true; + assume {:verifier.code 0} true; + $i223 := $sext.i32.i64($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 222, 9} true; + assume {:verifier.code 0} true; + $i224 := $srem.i64($i223, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 222, 7} true; + assume {:verifier.code 0} true; + $i225 := $trunc.i64.i32($i224); + call {:cexpr "b"} boogie_si_record_i32($i225); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 223, 5} true; + assume {:verifier.code 0} true; + $i226 := $add.i32($i225, $i225); + call {:cexpr "b"} boogie_si_record_i32($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 225, 5} true; + assume {:verifier.code 0} true; + $i227 := $add.i32($i214, $i214); + call {:cexpr "c"} boogie_si_record_i32($i227); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 226, 9} true; + assume {:verifier.code 0} true; + $i228 := $slt.i32($i222, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 226, 7} true; + assume {:verifier.code 0} true; + $i229 := $i227; + assume {:branchcond $i228} true; + goto $bb136, $bb137; +$bb130: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 15} true; + assume {:verifier.code 0} true; + assume ($i215 == 1); + goto $bb131; +$bb131: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 217, 9} true; + assume {:verifier.code 0} true; + $i218 := $add.i32($i212, 1); + call {:cexpr "c"} boogie_si_record_i32($i218); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 218, 5} true; + assume {:verifier.code 0} true; + $i217 := $i218; + goto $bb135; +$bb132: + assume !(($i215 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 20} true; + assume {:verifier.code 0} true; + $i216 := $sgt.i32($i211, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 9} true; + assume {:verifier.code 0} true; + $i217 := $i212; + assume {:branchcond $i216} true; + goto $bb133, $bb134; +$bb133: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 9} true; + assume {:verifier.code 0} true; + assume ($i216 == 1); + goto $bb131; +$bb134: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 9} true; + assume {:verifier.code 0} true; + assume !(($i216 == 1)); + goto $bb135; +$bb135: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 219, 3} true; + assume {:verifier.code 0} true; + $i214 := $i217; + goto $bb129; +$bb136: + assume ($i228 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 11} true; + assume {:verifier.code 0} true; + $i230 := $slt.i32($i226, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i230} true; + goto $bb139, $bb141; +$bb137: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 226, 7} true; + assume {:verifier.code 0} true; + assume !(($i228 == 1)); + goto $bb138; +$bb138: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 231, 7} true; + assume {:verifier.code 0} true; + $i234 := $sext.i32.i64($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 231, 9} true; + assume {:verifier.code 0} true; + $i235 := $srem.i64($i234, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 231, 7} true; + assume {:verifier.code 0} true; + $i236 := $trunc.i64.i32($i235); + call {:cexpr "a"} boogie_si_record_i32($i236); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 232, 5} true; + assume {:verifier.code 0} true; + $i237 := $add.i32($i236, $i236); + call {:cexpr "a"} boogie_si_record_i32($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 233, 7} true; + assume {:verifier.code 0} true; + $i238 := $sext.i32.i64($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 233, 9} true; + assume {:verifier.code 0} true; + $i239 := $srem.i64($i238, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 233, 7} true; + assume {:verifier.code 0} true; + $i240 := $trunc.i64.i32($i239); + call {:cexpr "b"} boogie_si_record_i32($i240); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 234, 5} true; + assume {:verifier.code 0} true; + $i241 := $add.i32($i240, $i240); + call {:cexpr "b"} boogie_si_record_i32($i241); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 236, 5} true; + assume {:verifier.code 0} true; + $i242 := $add.i32($i229, $i229); + call {:cexpr "c"} boogie_si_record_i32($i242); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 237, 9} true; + assume {:verifier.code 0} true; + $i243 := $slt.i32($i237, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 237, 7} true; + assume {:verifier.code 0} true; + $i244 := $i242; + assume {:branchcond $i243} true; + goto $bb145, $bb146; +$bb139: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 15} true; + assume {:verifier.code 0} true; + assume ($i230 == 1); + goto $bb140; +$bb140: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 228, 9} true; + assume {:verifier.code 0} true; + $i233 := $add.i32($i227, 1); + call {:cexpr "c"} boogie_si_record_i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 229, 5} true; + assume {:verifier.code 0} true; + $i232 := $i233; + goto $bb144; +$bb141: + assume !(($i230 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 20} true; + assume {:verifier.code 0} true; + $i231 := $sgt.i32($i226, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 9} true; + assume {:verifier.code 0} true; + $i232 := $i227; + assume {:branchcond $i231} true; + goto $bb142, $bb143; +$bb142: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 9} true; + assume {:verifier.code 0} true; + assume ($i231 == 1); + goto $bb140; +$bb143: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 9} true; + assume {:verifier.code 0} true; + assume !(($i231 == 1)); + goto $bb144; +$bb144: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 230, 3} true; + assume {:verifier.code 0} true; + $i229 := $i232; + goto $bb138; +$bb145: + assume ($i243 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 11} true; + assume {:verifier.code 0} true; + $i245 := $slt.i32($i241, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i245} true; + goto $bb148, $bb150; +$bb146: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 237, 7} true; + assume {:verifier.code 0} true; + assume !(($i243 == 1)); + goto $bb147; +$bb147: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 242, 7} true; + assume {:verifier.code 0} true; + $i249 := $sext.i32.i64($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 242, 9} true; + assume {:verifier.code 0} true; + $i250 := $srem.i64($i249, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 242, 7} true; + assume {:verifier.code 0} true; + $i251 := $trunc.i64.i32($i250); + call {:cexpr "a"} boogie_si_record_i32($i251); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 243, 5} true; + assume {:verifier.code 0} true; + $i252 := $add.i32($i251, $i251); + call {:cexpr "a"} boogie_si_record_i32($i252); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 244, 7} true; + assume {:verifier.code 0} true; + $i253 := $sext.i32.i64($i241); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 244, 9} true; + assume {:verifier.code 0} true; + $i254 := $srem.i64($i253, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 244, 7} true; + assume {:verifier.code 0} true; + $i255 := $trunc.i64.i32($i254); + call {:cexpr "b"} boogie_si_record_i32($i255); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 245, 5} true; + assume {:verifier.code 0} true; + $i256 := $add.i32($i255, $i255); + call {:cexpr "b"} boogie_si_record_i32($i256); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 247, 5} true; + assume {:verifier.code 0} true; + $i257 := $add.i32($i244, $i244); + call {:cexpr "c"} boogie_si_record_i32($i257); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 248, 9} true; + assume {:verifier.code 0} true; + $i258 := $slt.i32($i252, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 248, 7} true; + assume {:verifier.code 0} true; + $i259 := $i257; + assume {:branchcond $i258} true; + goto $bb154, $bb155; +$bb148: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 15} true; + assume {:verifier.code 0} true; + assume ($i245 == 1); + goto $bb149; +$bb149: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 239, 9} true; + assume {:verifier.code 0} true; + $i248 := $add.i32($i242, 1); + call {:cexpr "c"} boogie_si_record_i32($i248); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 240, 5} true; + assume {:verifier.code 0} true; + $i247 := $i248; + goto $bb153; +$bb150: + assume !(($i245 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 20} true; + assume {:verifier.code 0} true; + $i246 := $sgt.i32($i241, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 9} true; + assume {:verifier.code 0} true; + $i247 := $i242; + assume {:branchcond $i246} true; + goto $bb151, $bb152; +$bb151: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 9} true; + assume {:verifier.code 0} true; + assume ($i246 == 1); + goto $bb149; +$bb152: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 9} true; + assume {:verifier.code 0} true; + assume !(($i246 == 1)); + goto $bb153; +$bb153: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 241, 3} true; + assume {:verifier.code 0} true; + $i244 := $i247; + goto $bb147; +$bb154: + assume ($i258 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 11} true; + assume {:verifier.code 0} true; + $i260 := $slt.i32($i256, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i260} true; + goto $bb157, $bb159; +$bb155: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 248, 7} true; + assume {:verifier.code 0} true; + assume !(($i258 == 1)); + goto $bb156; +$bb156: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 253, 7} true; + assume {:verifier.code 0} true; + $i264 := $sext.i32.i64($i252); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 253, 9} true; + assume {:verifier.code 0} true; + $i265 := $srem.i64($i264, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 253, 7} true; + assume {:verifier.code 0} true; + $i266 := $trunc.i64.i32($i265); + call {:cexpr "a"} boogie_si_record_i32($i266); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 254, 5} true; + assume {:verifier.code 0} true; + $i267 := $add.i32($i266, $i266); + call {:cexpr "a"} boogie_si_record_i32($i267); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 255, 7} true; + assume {:verifier.code 0} true; + $i268 := $sext.i32.i64($i256); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 255, 9} true; + assume {:verifier.code 0} true; + $i269 := $srem.i64($i268, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 255, 7} true; + assume {:verifier.code 0} true; + $i270 := $trunc.i64.i32($i269); + call {:cexpr "b"} boogie_si_record_i32($i270); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 256, 5} true; + assume {:verifier.code 0} true; + $i271 := $add.i32($i270, $i270); + call {:cexpr "b"} boogie_si_record_i32($i271); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 258, 5} true; + assume {:verifier.code 0} true; + $i272 := $add.i32($i259, $i259); + call {:cexpr "c"} boogie_si_record_i32($i272); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 259, 9} true; + assume {:verifier.code 0} true; + $i273 := $slt.i32($i267, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 259, 7} true; + assume {:verifier.code 0} true; + $i274 := $i272; + assume {:branchcond $i273} true; + goto $bb163, $bb164; +$bb157: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 15} true; + assume {:verifier.code 0} true; + assume ($i260 == 1); + goto $bb158; +$bb158: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 250, 9} true; + assume {:verifier.code 0} true; + $i263 := $add.i32($i257, 1); + call {:cexpr "c"} boogie_si_record_i32($i263); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 251, 5} true; + assume {:verifier.code 0} true; + $i262 := $i263; + goto $bb162; +$bb159: + assume !(($i260 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 20} true; + assume {:verifier.code 0} true; + $i261 := $sgt.i32($i256, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 9} true; + assume {:verifier.code 0} true; + $i262 := $i257; + assume {:branchcond $i261} true; + goto $bb160, $bb161; +$bb160: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 9} true; + assume {:verifier.code 0} true; + assume ($i261 == 1); + goto $bb158; +$bb161: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 9} true; + assume {:verifier.code 0} true; + assume !(($i261 == 1)); + goto $bb162; +$bb162: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 252, 3} true; + assume {:verifier.code 0} true; + $i259 := $i262; + goto $bb156; +$bb163: + assume ($i273 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 11} true; + assume {:verifier.code 0} true; + $i275 := $slt.i32($i271, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i275} true; + goto $bb166, $bb168; +$bb164: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 259, 7} true; + assume {:verifier.code 0} true; + assume !(($i273 == 1)); + goto $bb165; +$bb165: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 264, 7} true; + assume {:verifier.code 0} true; + $i279 := $sext.i32.i64($i267); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 264, 9} true; + assume {:verifier.code 0} true; + $i280 := $srem.i64($i279, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 264, 7} true; + assume {:verifier.code 0} true; + $i281 := $trunc.i64.i32($i280); + call {:cexpr "a"} boogie_si_record_i32($i281); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 265, 5} true; + assume {:verifier.code 0} true; + $i282 := $add.i32($i281, $i281); + call {:cexpr "a"} boogie_si_record_i32($i282); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 266, 7} true; + assume {:verifier.code 0} true; + $i283 := $sext.i32.i64($i271); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 266, 9} true; + assume {:verifier.code 0} true; + $i284 := $srem.i64($i283, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 266, 7} true; + assume {:verifier.code 0} true; + $i285 := $trunc.i64.i32($i284); + call {:cexpr "b"} boogie_si_record_i32($i285); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 267, 5} true; + assume {:verifier.code 0} true; + $i286 := $add.i32($i285, $i285); + call {:cexpr "b"} boogie_si_record_i32($i286); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 269, 5} true; + assume {:verifier.code 0} true; + $i287 := $add.i32($i274, $i274); + call {:cexpr "c"} boogie_si_record_i32($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 270, 9} true; + assume {:verifier.code 0} true; + $i288 := $slt.i32($i282, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 270, 7} true; + assume {:verifier.code 0} true; + $i289 := $i287; + assume {:branchcond $i288} true; + goto $bb172, $bb173; +$bb166: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 15} true; + assume {:verifier.code 0} true; + assume ($i275 == 1); + goto $bb167; +$bb167: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 261, 9} true; + assume {:verifier.code 0} true; + $i278 := $add.i32($i272, 1); + call {:cexpr "c"} boogie_si_record_i32($i278); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 262, 5} true; + assume {:verifier.code 0} true; + $i277 := $i278; + goto $bb171; +$bb168: + assume !(($i275 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 20} true; + assume {:verifier.code 0} true; + $i276 := $sgt.i32($i271, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 9} true; + assume {:verifier.code 0} true; + $i277 := $i272; + assume {:branchcond $i276} true; + goto $bb169, $bb170; +$bb169: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 9} true; + assume {:verifier.code 0} true; + assume ($i276 == 1); + goto $bb167; +$bb170: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 9} true; + assume {:verifier.code 0} true; + assume !(($i276 == 1)); + goto $bb171; +$bb171: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 263, 3} true; + assume {:verifier.code 0} true; + $i274 := $i277; + goto $bb165; +$bb172: + assume ($i288 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 11} true; + assume {:verifier.code 0} true; + $i290 := $slt.i32($i286, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i290} true; + goto $bb175, $bb177; +$bb173: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 270, 7} true; + assume {:verifier.code 0} true; + assume !(($i288 == 1)); + goto $bb174; +$bb174: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 275, 7} true; + assume {:verifier.code 0} true; + $i294 := $sext.i32.i64($i282); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 275, 9} true; + assume {:verifier.code 0} true; + $i295 := $srem.i64($i294, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 275, 7} true; + assume {:verifier.code 0} true; + $i296 := $trunc.i64.i32($i295); + call {:cexpr "a"} boogie_si_record_i32($i296); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 276, 5} true; + assume {:verifier.code 0} true; + $i297 := $add.i32($i296, $i296); + call {:cexpr "a"} boogie_si_record_i32($i297); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 277, 7} true; + assume {:verifier.code 0} true; + $i298 := $sext.i32.i64($i286); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 277, 9} true; + assume {:verifier.code 0} true; + $i299 := $srem.i64($i298, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 277, 7} true; + assume {:verifier.code 0} true; + $i300 := $trunc.i64.i32($i299); + call {:cexpr "b"} boogie_si_record_i32($i300); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 278, 5} true; + assume {:verifier.code 0} true; + $i301 := $add.i32($i300, $i300); + call {:cexpr "b"} boogie_si_record_i32($i301); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 280, 5} true; + assume {:verifier.code 0} true; + $i302 := $add.i32($i289, $i289); + call {:cexpr "c"} boogie_si_record_i32($i302); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 281, 9} true; + assume {:verifier.code 0} true; + $i303 := $slt.i32($i297, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 281, 7} true; + assume {:verifier.code 0} true; + $i304 := $i302; + assume {:branchcond $i303} true; + goto $bb181, $bb182; +$bb175: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 15} true; + assume {:verifier.code 0} true; + assume ($i290 == 1); + goto $bb176; +$bb176: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 272, 9} true; + assume {:verifier.code 0} true; + $i293 := $add.i32($i287, 1); + call {:cexpr "c"} boogie_si_record_i32($i293); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 273, 5} true; + assume {:verifier.code 0} true; + $i292 := $i293; + goto $bb180; +$bb177: + assume !(($i290 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 20} true; + assume {:verifier.code 0} true; + $i291 := $sgt.i32($i286, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 9} true; + assume {:verifier.code 0} true; + $i292 := $i287; + assume {:branchcond $i291} true; + goto $bb178, $bb179; +$bb178: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 9} true; + assume {:verifier.code 0} true; + assume ($i291 == 1); + goto $bb176; +$bb179: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 9} true; + assume {:verifier.code 0} true; + assume !(($i291 == 1)); + goto $bb180; +$bb180: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 274, 3} true; + assume {:verifier.code 0} true; + $i289 := $i292; + goto $bb174; +$bb181: + assume ($i303 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 11} true; + assume {:verifier.code 0} true; + $i305 := $slt.i32($i301, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i305} true; + goto $bb184, $bb186; +$bb182: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 281, 7} true; + assume {:verifier.code 0} true; + assume !(($i303 == 1)); + goto $bb183; +$bb183: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 286, 7} true; + assume {:verifier.code 0} true; + $i309 := $sext.i32.i64($i297); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 286, 9} true; + assume {:verifier.code 0} true; + $i310 := $srem.i64($i309, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 286, 7} true; + assume {:verifier.code 0} true; + $i311 := $trunc.i64.i32($i310); + call {:cexpr "a"} boogie_si_record_i32($i311); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 287, 5} true; + assume {:verifier.code 0} true; + $i312 := $add.i32($i311, $i311); + call {:cexpr "a"} boogie_si_record_i32($i312); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 288, 7} true; + assume {:verifier.code 0} true; + $i313 := $sext.i32.i64($i301); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 288, 9} true; + assume {:verifier.code 0} true; + $i314 := $srem.i64($i313, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 288, 7} true; + assume {:verifier.code 0} true; + $i315 := $trunc.i64.i32($i314); + call {:cexpr "b"} boogie_si_record_i32($i315); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 289, 5} true; + assume {:verifier.code 0} true; + $i316 := $add.i32($i315, $i315); + call {:cexpr "b"} boogie_si_record_i32($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 291, 5} true; + assume {:verifier.code 0} true; + $i317 := $add.i32($i304, $i304); + call {:cexpr "c"} boogie_si_record_i32($i317); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 292, 9} true; + assume {:verifier.code 0} true; + $i318 := $slt.i32($i312, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 292, 7} true; + assume {:verifier.code 0} true; + $i319 := $i317; + assume {:branchcond $i318} true; + goto $bb190, $bb191; +$bb184: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 15} true; + assume {:verifier.code 0} true; + assume ($i305 == 1); + goto $bb185; +$bb185: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 283, 9} true; + assume {:verifier.code 0} true; + $i308 := $add.i32($i302, 1); + call {:cexpr "c"} boogie_si_record_i32($i308); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 284, 5} true; + assume {:verifier.code 0} true; + $i307 := $i308; + goto $bb189; +$bb186: + assume !(($i305 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 20} true; + assume {:verifier.code 0} true; + $i306 := $sgt.i32($i301, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 9} true; + assume {:verifier.code 0} true; + $i307 := $i302; + assume {:branchcond $i306} true; + goto $bb187, $bb188; +$bb187: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 9} true; + assume {:verifier.code 0} true; + assume ($i306 == 1); + goto $bb185; +$bb188: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 9} true; + assume {:verifier.code 0} true; + assume !(($i306 == 1)); + goto $bb189; +$bb189: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 285, 3} true; + assume {:verifier.code 0} true; + $i304 := $i307; + goto $bb183; +$bb190: + assume ($i318 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 11} true; + assume {:verifier.code 0} true; + $i320 := $slt.i32($i316, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i320} true; + goto $bb193, $bb195; +$bb191: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 292, 7} true; + assume {:verifier.code 0} true; + assume !(($i318 == 1)); + goto $bb192; +$bb192: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 297, 7} true; + assume {:verifier.code 0} true; + $i324 := $sext.i32.i64($i312); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 297, 9} true; + assume {:verifier.code 0} true; + $i325 := $srem.i64($i324, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 297, 7} true; + assume {:verifier.code 0} true; + $i326 := $trunc.i64.i32($i325); + call {:cexpr "a"} boogie_si_record_i32($i326); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 298, 5} true; + assume {:verifier.code 0} true; + $i327 := $add.i32($i326, $i326); + call {:cexpr "a"} boogie_si_record_i32($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 299, 7} true; + assume {:verifier.code 0} true; + $i328 := $sext.i32.i64($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 299, 9} true; + assume {:verifier.code 0} true; + $i329 := $srem.i64($i328, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 299, 7} true; + assume {:verifier.code 0} true; + $i330 := $trunc.i64.i32($i329); + call {:cexpr "b"} boogie_si_record_i32($i330); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 300, 5} true; + assume {:verifier.code 0} true; + $i331 := $add.i32($i330, $i330); + call {:cexpr "b"} boogie_si_record_i32($i331); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 302, 5} true; + assume {:verifier.code 0} true; + $i332 := $add.i32($i319, $i319); + call {:cexpr "c"} boogie_si_record_i32($i332); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 303, 9} true; + assume {:verifier.code 0} true; + $i333 := $slt.i32($i327, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 303, 7} true; + assume {:verifier.code 0} true; + $i334 := $i332; + assume {:branchcond $i333} true; + goto $bb199, $bb200; +$bb193: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 15} true; + assume {:verifier.code 0} true; + assume ($i320 == 1); + goto $bb194; +$bb194: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 294, 9} true; + assume {:verifier.code 0} true; + $i323 := $add.i32($i317, 1); + call {:cexpr "c"} boogie_si_record_i32($i323); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 295, 5} true; + assume {:verifier.code 0} true; + $i322 := $i323; + goto $bb198; +$bb195: + assume !(($i320 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 20} true; + assume {:verifier.code 0} true; + $i321 := $sgt.i32($i316, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 9} true; + assume {:verifier.code 0} true; + $i322 := $i317; + assume {:branchcond $i321} true; + goto $bb196, $bb197; +$bb196: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 9} true; + assume {:verifier.code 0} true; + assume ($i321 == 1); + goto $bb194; +$bb197: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 9} true; + assume {:verifier.code 0} true; + assume !(($i321 == 1)); + goto $bb198; +$bb198: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 296, 3} true; + assume {:verifier.code 0} true; + $i319 := $i322; + goto $bb192; +$bb199: + assume ($i333 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 11} true; + assume {:verifier.code 0} true; + $i335 := $slt.i32($i331, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i335} true; + goto $bb202, $bb204; +$bb200: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 303, 7} true; + assume {:verifier.code 0} true; + assume !(($i333 == 1)); + goto $bb201; +$bb201: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 308, 7} true; + assume {:verifier.code 0} true; + $i339 := $sext.i32.i64($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 308, 9} true; + assume {:verifier.code 0} true; + $i340 := $srem.i64($i339, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 308, 7} true; + assume {:verifier.code 0} true; + $i341 := $trunc.i64.i32($i340); + call {:cexpr "a"} boogie_si_record_i32($i341); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 309, 5} true; + assume {:verifier.code 0} true; + $i342 := $add.i32($i341, $i341); + call {:cexpr "a"} boogie_si_record_i32($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 310, 7} true; + assume {:verifier.code 0} true; + $i343 := $sext.i32.i64($i331); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 310, 9} true; + assume {:verifier.code 0} true; + $i344 := $srem.i64($i343, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 310, 7} true; + assume {:verifier.code 0} true; + $i345 := $trunc.i64.i32($i344); + call {:cexpr "b"} boogie_si_record_i32($i345); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 311, 5} true; + assume {:verifier.code 0} true; + $i346 := $add.i32($i345, $i345); + call {:cexpr "b"} boogie_si_record_i32($i346); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 313, 5} true; + assume {:verifier.code 0} true; + $i347 := $add.i32($i334, $i334); + call {:cexpr "c"} boogie_si_record_i32($i347); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 314, 9} true; + assume {:verifier.code 0} true; + $i348 := $slt.i32($i342, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 314, 7} true; + assume {:verifier.code 0} true; + $i349 := $i347; + assume {:branchcond $i348} true; + goto $bb208, $bb209; +$bb202: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 15} true; + assume {:verifier.code 0} true; + assume ($i335 == 1); + goto $bb203; +$bb203: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 305, 9} true; + assume {:verifier.code 0} true; + $i338 := $add.i32($i332, 1); + call {:cexpr "c"} boogie_si_record_i32($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 306, 5} true; + assume {:verifier.code 0} true; + $i337 := $i338; + goto $bb207; +$bb204: + assume !(($i335 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 20} true; + assume {:verifier.code 0} true; + $i336 := $sgt.i32($i331, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 9} true; + assume {:verifier.code 0} true; + $i337 := $i332; + assume {:branchcond $i336} true; + goto $bb205, $bb206; +$bb205: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 9} true; + assume {:verifier.code 0} true; + assume ($i336 == 1); + goto $bb203; +$bb206: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 9} true; + assume {:verifier.code 0} true; + assume !(($i336 == 1)); + goto $bb207; +$bb207: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 307, 3} true; + assume {:verifier.code 0} true; + $i334 := $i337; + goto $bb201; +$bb208: + assume ($i348 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 11} true; + assume {:verifier.code 0} true; + $i350 := $slt.i32($i346, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i350} true; + goto $bb211, $bb213; +$bb209: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 314, 7} true; + assume {:verifier.code 0} true; + assume !(($i348 == 1)); + goto $bb210; +$bb210: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 319, 7} true; + assume {:verifier.code 0} true; + $i354 := $sext.i32.i64($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 319, 9} true; + assume {:verifier.code 0} true; + $i355 := $srem.i64($i354, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 319, 7} true; + assume {:verifier.code 0} true; + $i356 := $trunc.i64.i32($i355); + call {:cexpr "a"} boogie_si_record_i32($i356); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 320, 5} true; + assume {:verifier.code 0} true; + $i357 := $add.i32($i356, $i356); + call {:cexpr "a"} boogie_si_record_i32($i357); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 321, 7} true; + assume {:verifier.code 0} true; + $i358 := $sext.i32.i64($i346); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 321, 9} true; + assume {:verifier.code 0} true; + $i359 := $srem.i64($i358, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 321, 7} true; + assume {:verifier.code 0} true; + $i360 := $trunc.i64.i32($i359); + call {:cexpr "b"} boogie_si_record_i32($i360); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 322, 5} true; + assume {:verifier.code 0} true; + $i361 := $add.i32($i360, $i360); + call {:cexpr "b"} boogie_si_record_i32($i361); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 324, 5} true; + assume {:verifier.code 0} true; + $i362 := $add.i32($i349, $i349); + call {:cexpr "c"} boogie_si_record_i32($i362); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 325, 9} true; + assume {:verifier.code 0} true; + $i363 := $slt.i32($i357, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 325, 7} true; + assume {:verifier.code 0} true; + $i364 := $i362; + assume {:branchcond $i363} true; + goto $bb217, $bb218; +$bb211: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 15} true; + assume {:verifier.code 0} true; + assume ($i350 == 1); + goto $bb212; +$bb212: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 316, 9} true; + assume {:verifier.code 0} true; + $i353 := $add.i32($i347, 1); + call {:cexpr "c"} boogie_si_record_i32($i353); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 317, 5} true; + assume {:verifier.code 0} true; + $i352 := $i353; + goto $bb216; +$bb213: + assume !(($i350 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 20} true; + assume {:verifier.code 0} true; + $i351 := $sgt.i32($i346, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 9} true; + assume {:verifier.code 0} true; + $i352 := $i347; + assume {:branchcond $i351} true; + goto $bb214, $bb215; +$bb214: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 9} true; + assume {:verifier.code 0} true; + assume ($i351 == 1); + goto $bb212; +$bb215: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 9} true; + assume {:verifier.code 0} true; + assume !(($i351 == 1)); + goto $bb216; +$bb216: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 318, 3} true; + assume {:verifier.code 0} true; + $i349 := $i352; + goto $bb210; +$bb217: + assume ($i363 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 11} true; + assume {:verifier.code 0} true; + $i365 := $slt.i32($i361, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i365} true; + goto $bb220, $bb222; +$bb218: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 325, 7} true; + assume {:verifier.code 0} true; + assume !(($i363 == 1)); + goto $bb219; +$bb219: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 330, 7} true; + assume {:verifier.code 0} true; + $i369 := $sext.i32.i64($i357); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 330, 9} true; + assume {:verifier.code 0} true; + $i370 := $srem.i64($i369, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 330, 7} true; + assume {:verifier.code 0} true; + $i371 := $trunc.i64.i32($i370); + call {:cexpr "a"} boogie_si_record_i32($i371); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 331, 5} true; + assume {:verifier.code 0} true; + $i372 := $add.i32($i371, $i371); + call {:cexpr "a"} boogie_si_record_i32($i372); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 332, 7} true; + assume {:verifier.code 0} true; + $i373 := $sext.i32.i64($i361); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 332, 9} true; + assume {:verifier.code 0} true; + $i374 := $srem.i64($i373, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 332, 7} true; + assume {:verifier.code 0} true; + $i375 := $trunc.i64.i32($i374); + call {:cexpr "b"} boogie_si_record_i32($i375); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 333, 5} true; + assume {:verifier.code 0} true; + $i376 := $add.i32($i375, $i375); + call {:cexpr "b"} boogie_si_record_i32($i376); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 335, 5} true; + assume {:verifier.code 0} true; + $i377 := $add.i32($i364, $i364); + call {:cexpr "c"} boogie_si_record_i32($i377); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 336, 9} true; + assume {:verifier.code 0} true; + $i378 := $slt.i32($i372, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 336, 7} true; + assume {:verifier.code 0} true; + $i379 := $i377; + assume {:branchcond $i378} true; + goto $bb226, $bb227; +$bb220: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 15} true; + assume {:verifier.code 0} true; + assume ($i365 == 1); + goto $bb221; +$bb221: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 327, 9} true; + assume {:verifier.code 0} true; + $i368 := $add.i32($i362, 1); + call {:cexpr "c"} boogie_si_record_i32($i368); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 328, 5} true; + assume {:verifier.code 0} true; + $i367 := $i368; + goto $bb225; +$bb222: + assume !(($i365 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 20} true; + assume {:verifier.code 0} true; + $i366 := $sgt.i32($i361, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 9} true; + assume {:verifier.code 0} true; + $i367 := $i362; + assume {:branchcond $i366} true; + goto $bb223, $bb224; +$bb223: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 9} true; + assume {:verifier.code 0} true; + assume ($i366 == 1); + goto $bb221; +$bb224: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 9} true; + assume {:verifier.code 0} true; + assume !(($i366 == 1)); + goto $bb225; +$bb225: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 329, 3} true; + assume {:verifier.code 0} true; + $i364 := $i367; + goto $bb219; +$bb226: + assume ($i378 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 11} true; + assume {:verifier.code 0} true; + $i380 := $slt.i32($i376, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i380} true; + goto $bb229, $bb231; +$bb227: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 336, 7} true; + assume {:verifier.code 0} true; + assume !(($i378 == 1)); + goto $bb228; +$bb228: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 341, 7} true; + assume {:verifier.code 0} true; + $i384 := $sext.i32.i64($i372); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 341, 9} true; + assume {:verifier.code 0} true; + $i385 := $srem.i64($i384, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 341, 7} true; + assume {:verifier.code 0} true; + $i386 := $trunc.i64.i32($i385); + call {:cexpr "a"} boogie_si_record_i32($i386); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 342, 5} true; + assume {:verifier.code 0} true; + $i387 := $add.i32($i386, $i386); + call {:cexpr "a"} boogie_si_record_i32($i387); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 343, 7} true; + assume {:verifier.code 0} true; + $i388 := $sext.i32.i64($i376); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 343, 9} true; + assume {:verifier.code 0} true; + $i389 := $srem.i64($i388, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 343, 7} true; + assume {:verifier.code 0} true; + $i390 := $trunc.i64.i32($i389); + call {:cexpr "b"} boogie_si_record_i32($i390); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 344, 5} true; + assume {:verifier.code 0} true; + $i391 := $add.i32($i390, $i390); + call {:cexpr "b"} boogie_si_record_i32($i391); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 346, 5} true; + assume {:verifier.code 0} true; + $i392 := $add.i32($i379, $i379); + call {:cexpr "c"} boogie_si_record_i32($i392); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 347, 9} true; + assume {:verifier.code 0} true; + $i393 := $slt.i32($i387, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 347, 7} true; + assume {:verifier.code 0} true; + $i394 := $i392; + assume {:branchcond $i393} true; + goto $bb235, $bb236; +$bb229: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 15} true; + assume {:verifier.code 0} true; + assume ($i380 == 1); + goto $bb230; +$bb230: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 338, 9} true; + assume {:verifier.code 0} true; + $i383 := $add.i32($i377, 1); + call {:cexpr "c"} boogie_si_record_i32($i383); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 339, 5} true; + assume {:verifier.code 0} true; + $i382 := $i383; + goto $bb234; +$bb231: + assume !(($i380 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 20} true; + assume {:verifier.code 0} true; + $i381 := $sgt.i32($i376, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 9} true; + assume {:verifier.code 0} true; + $i382 := $i377; + assume {:branchcond $i381} true; + goto $bb232, $bb233; +$bb232: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 9} true; + assume {:verifier.code 0} true; + assume ($i381 == 1); + goto $bb230; +$bb233: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 9} true; + assume {:verifier.code 0} true; + assume !(($i381 == 1)); + goto $bb234; +$bb234: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 340, 3} true; + assume {:verifier.code 0} true; + $i379 := $i382; + goto $bb228; +$bb235: + assume ($i393 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 11} true; + assume {:verifier.code 0} true; + $i395 := $slt.i32($i391, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i395} true; + goto $bb238, $bb240; +$bb236: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 347, 7} true; + assume {:verifier.code 0} true; + assume !(($i393 == 1)); + goto $bb237; +$bb237: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 352, 7} true; + assume {:verifier.code 0} true; + $i399 := $sext.i32.i64($i387); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 352, 9} true; + assume {:verifier.code 0} true; + $i400 := $srem.i64($i399, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 352, 7} true; + assume {:verifier.code 0} true; + $i401 := $trunc.i64.i32($i400); + call {:cexpr "a"} boogie_si_record_i32($i401); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 353, 5} true; + assume {:verifier.code 0} true; + $i402 := $add.i32($i401, $i401); + call {:cexpr "a"} boogie_si_record_i32($i402); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 354, 7} true; + assume {:verifier.code 0} true; + $i403 := $sext.i32.i64($i391); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 354, 9} true; + assume {:verifier.code 0} true; + $i404 := $srem.i64($i403, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 354, 7} true; + assume {:verifier.code 0} true; + $i405 := $trunc.i64.i32($i404); + call {:cexpr "b"} boogie_si_record_i32($i405); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 355, 5} true; + assume {:verifier.code 0} true; + $i406 := $add.i32($i405, $i405); + call {:cexpr "b"} boogie_si_record_i32($i406); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 357, 5} true; + assume {:verifier.code 0} true; + $i407 := $add.i32($i394, $i394); + call {:cexpr "c"} boogie_si_record_i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 358, 9} true; + assume {:verifier.code 0} true; + $i408 := $slt.i32($i402, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 358, 7} true; + assume {:verifier.code 0} true; + $i409 := $i407; + assume {:branchcond $i408} true; + goto $bb244, $bb245; +$bb238: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 15} true; + assume {:verifier.code 0} true; + assume ($i395 == 1); + goto $bb239; +$bb239: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 349, 9} true; + assume {:verifier.code 0} true; + $i398 := $add.i32($i392, 1); + call {:cexpr "c"} boogie_si_record_i32($i398); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 350, 5} true; + assume {:verifier.code 0} true; + $i397 := $i398; + goto $bb243; +$bb240: + assume !(($i395 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 20} true; + assume {:verifier.code 0} true; + $i396 := $sgt.i32($i391, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 9} true; + assume {:verifier.code 0} true; + $i397 := $i392; + assume {:branchcond $i396} true; + goto $bb241, $bb242; +$bb241: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 9} true; + assume {:verifier.code 0} true; + assume ($i396 == 1); + goto $bb239; +$bb242: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 9} true; + assume {:verifier.code 0} true; + assume !(($i396 == 1)); + goto $bb243; +$bb243: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 351, 3} true; + assume {:verifier.code 0} true; + $i394 := $i397; + goto $bb237; +$bb244: + assume ($i408 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 11} true; + assume {:verifier.code 0} true; + $i410 := $slt.i32($i406, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i410} true; + goto $bb247, $bb249; +$bb245: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 358, 7} true; + assume {:verifier.code 0} true; + assume !(($i408 == 1)); + goto $bb246; +$bb246: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 363, 7} true; + assume {:verifier.code 0} true; + $i414 := $sext.i32.i64($i402); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 363, 9} true; + assume {:verifier.code 0} true; + $i415 := $srem.i64($i414, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 363, 7} true; + assume {:verifier.code 0} true; + $i416 := $trunc.i64.i32($i415); + call {:cexpr "a"} boogie_si_record_i32($i416); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 364, 5} true; + assume {:verifier.code 0} true; + $i417 := $add.i32($i416, $i416); + call {:cexpr "a"} boogie_si_record_i32($i417); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 365, 7} true; + assume {:verifier.code 0} true; + $i418 := $sext.i32.i64($i406); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 365, 9} true; + assume {:verifier.code 0} true; + $i419 := $srem.i64($i418, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 365, 7} true; + assume {:verifier.code 0} true; + $i420 := $trunc.i64.i32($i419); + call {:cexpr "b"} boogie_si_record_i32($i420); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 366, 5} true; + assume {:verifier.code 0} true; + $i421 := $add.i32($i420, $i420); + call {:cexpr "b"} boogie_si_record_i32($i421); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 368, 5} true; + assume {:verifier.code 0} true; + $i422 := $add.i32($i409, $i409); + call {:cexpr "c"} boogie_si_record_i32($i422); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 369, 9} true; + assume {:verifier.code 0} true; + $i423 := $slt.i32($i417, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 369, 7} true; + assume {:verifier.code 0} true; + $i424 := $i422; + assume {:branchcond $i423} true; + goto $bb253, $bb254; +$bb247: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 15} true; + assume {:verifier.code 0} true; + assume ($i410 == 1); + goto $bb248; +$bb248: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 360, 9} true; + assume {:verifier.code 0} true; + $i413 := $add.i32($i407, 1); + call {:cexpr "c"} boogie_si_record_i32($i413); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 361, 5} true; + assume {:verifier.code 0} true; + $i412 := $i413; + goto $bb252; +$bb249: + assume !(($i410 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 20} true; + assume {:verifier.code 0} true; + $i411 := $sgt.i32($i406, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 9} true; + assume {:verifier.code 0} true; + $i412 := $i407; + assume {:branchcond $i411} true; + goto $bb250, $bb251; +$bb250: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 9} true; + assume {:verifier.code 0} true; + assume ($i411 == 1); + goto $bb248; +$bb251: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 9} true; + assume {:verifier.code 0} true; + assume !(($i411 == 1)); + goto $bb252; +$bb252: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 362, 3} true; + assume {:verifier.code 0} true; + $i409 := $i412; + goto $bb246; +$bb253: + assume ($i423 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 11} true; + assume {:verifier.code 0} true; + $i425 := $slt.i32($i421, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i425} true; + goto $bb256, $bb258; +$bb254: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 369, 7} true; + assume {:verifier.code 0} true; + assume !(($i423 == 1)); + goto $bb255; +$bb255: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 374, 7} true; + assume {:verifier.code 0} true; + $i429 := $sext.i32.i64($i417); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 374, 9} true; + assume {:verifier.code 0} true; + $i430 := $srem.i64($i429, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 374, 7} true; + assume {:verifier.code 0} true; + $i431 := $trunc.i64.i32($i430); + call {:cexpr "a"} boogie_si_record_i32($i431); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 375, 5} true; + assume {:verifier.code 0} true; + $i432 := $add.i32($i431, $i431); + call {:cexpr "a"} boogie_si_record_i32($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 376, 7} true; + assume {:verifier.code 0} true; + $i433 := $sext.i32.i64($i421); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 376, 9} true; + assume {:verifier.code 0} true; + $i434 := $srem.i64($i433, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 376, 7} true; + assume {:verifier.code 0} true; + $i435 := $trunc.i64.i32($i434); + call {:cexpr "b"} boogie_si_record_i32($i435); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 377, 5} true; + assume {:verifier.code 0} true; + $i436 := $add.i32($i435, $i435); + call {:cexpr "b"} boogie_si_record_i32($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 379, 5} true; + assume {:verifier.code 0} true; + $i437 := $add.i32($i424, $i424); + call {:cexpr "c"} boogie_si_record_i32($i437); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 380, 9} true; + assume {:verifier.code 0} true; + $i438 := $slt.i32($i432, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 380, 7} true; + assume {:verifier.code 0} true; + $i439 := $i437; + assume {:branchcond $i438} true; + goto $bb262, $bb263; +$bb256: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 15} true; + assume {:verifier.code 0} true; + assume ($i425 == 1); + goto $bb257; +$bb257: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 371, 9} true; + assume {:verifier.code 0} true; + $i428 := $add.i32($i422, 1); + call {:cexpr "c"} boogie_si_record_i32($i428); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 372, 5} true; + assume {:verifier.code 0} true; + $i427 := $i428; + goto $bb261; +$bb258: + assume !(($i425 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 20} true; + assume {:verifier.code 0} true; + $i426 := $sgt.i32($i421, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 9} true; + assume {:verifier.code 0} true; + $i427 := $i422; + assume {:branchcond $i426} true; + goto $bb259, $bb260; +$bb259: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 9} true; + assume {:verifier.code 0} true; + assume ($i426 == 1); + goto $bb257; +$bb260: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 9} true; + assume {:verifier.code 0} true; + assume !(($i426 == 1)); + goto $bb261; +$bb261: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 373, 3} true; + assume {:verifier.code 0} true; + $i424 := $i427; + goto $bb255; +$bb262: + assume ($i438 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 11} true; + assume {:verifier.code 0} true; + $i440 := $slt.i32($i436, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i440} true; + goto $bb265, $bb267; +$bb263: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 380, 7} true; + assume {:verifier.code 0} true; + assume !(($i438 == 1)); + goto $bb264; +$bb264: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 385, 7} true; + assume {:verifier.code 0} true; + $i444 := $sext.i32.i64($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 385, 9} true; + assume {:verifier.code 0} true; + $i445 := $srem.i64($i444, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 385, 7} true; + assume {:verifier.code 0} true; + $i446 := $trunc.i64.i32($i445); + call {:cexpr "a"} boogie_si_record_i32($i446); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 386, 5} true; + assume {:verifier.code 0} true; + $i447 := $add.i32($i446, $i446); + call {:cexpr "a"} boogie_si_record_i32($i447); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 387, 7} true; + assume {:verifier.code 0} true; + $i448 := $sext.i32.i64($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 387, 9} true; + assume {:verifier.code 0} true; + $i449 := $srem.i64($i448, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 387, 7} true; + assume {:verifier.code 0} true; + $i450 := $trunc.i64.i32($i449); + call {:cexpr "b"} boogie_si_record_i32($i450); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 388, 5} true; + assume {:verifier.code 0} true; + $i451 := $add.i32($i450, $i450); + call {:cexpr "b"} boogie_si_record_i32($i451); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 390, 5} true; + assume {:verifier.code 0} true; + $i452 := $add.i32($i439, $i439); + call {:cexpr "c"} boogie_si_record_i32($i452); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 391, 9} true; + assume {:verifier.code 0} true; + $i453 := $slt.i32($i447, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 391, 7} true; + assume {:verifier.code 0} true; + $i454 := $i452; + assume {:branchcond $i453} true; + goto $bb271, $bb272; +$bb265: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 15} true; + assume {:verifier.code 0} true; + assume ($i440 == 1); + goto $bb266; +$bb266: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 382, 9} true; + assume {:verifier.code 0} true; + $i443 := $add.i32($i437, 1); + call {:cexpr "c"} boogie_si_record_i32($i443); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 383, 5} true; + assume {:verifier.code 0} true; + $i442 := $i443; + goto $bb270; +$bb267: + assume !(($i440 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 20} true; + assume {:verifier.code 0} true; + $i441 := $sgt.i32($i436, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 9} true; + assume {:verifier.code 0} true; + $i442 := $i437; + assume {:branchcond $i441} true; + goto $bb268, $bb269; +$bb268: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 9} true; + assume {:verifier.code 0} true; + assume ($i441 == 1); + goto $bb266; +$bb269: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 9} true; + assume {:verifier.code 0} true; + assume !(($i441 == 1)); + goto $bb270; +$bb270: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 384, 3} true; + assume {:verifier.code 0} true; + $i439 := $i442; + goto $bb264; +$bb271: + assume ($i453 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 11} true; + assume {:verifier.code 0} true; + $i455 := $slt.i32($i451, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i455} true; + goto $bb274, $bb276; +$bb272: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 391, 7} true; + assume {:verifier.code 0} true; + assume !(($i453 == 1)); + goto $bb273; +$bb273: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 396, 7} true; + assume {:verifier.code 0} true; + $i459 := $sext.i32.i64($i447); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 396, 9} true; + assume {:verifier.code 0} true; + $i460 := $srem.i64($i459, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 396, 7} true; + assume {:verifier.code 0} true; + $i461 := $trunc.i64.i32($i460); + call {:cexpr "a"} boogie_si_record_i32($i461); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 397, 5} true; + assume {:verifier.code 0} true; + $i462 := $add.i32($i461, $i461); + call {:cexpr "a"} boogie_si_record_i32($i462); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 398, 7} true; + assume {:verifier.code 0} true; + $i463 := $sext.i32.i64($i451); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 398, 9} true; + assume {:verifier.code 0} true; + $i464 := $srem.i64($i463, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 398, 7} true; + assume {:verifier.code 0} true; + $i465 := $trunc.i64.i32($i464); + call {:cexpr "b"} boogie_si_record_i32($i465); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 399, 5} true; + assume {:verifier.code 0} true; + $i466 := $add.i32($i465, $i465); + call {:cexpr "b"} boogie_si_record_i32($i466); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 401, 5} true; + assume {:verifier.code 0} true; + $i467 := $add.i32($i454, $i454); + call {:cexpr "c"} boogie_si_record_i32($i467); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 402, 9} true; + assume {:verifier.code 0} true; + $i468 := $slt.i32($i462, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 402, 7} true; + assume {:verifier.code 0} true; + $i469 := $i467; + assume {:branchcond $i468} true; + goto $bb280, $bb281; +$bb274: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 15} true; + assume {:verifier.code 0} true; + assume ($i455 == 1); + goto $bb275; +$bb275: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 393, 9} true; + assume {:verifier.code 0} true; + $i458 := $add.i32($i452, 1); + call {:cexpr "c"} boogie_si_record_i32($i458); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 394, 5} true; + assume {:verifier.code 0} true; + $i457 := $i458; + goto $bb279; +$bb276: + assume !(($i455 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 20} true; + assume {:verifier.code 0} true; + $i456 := $sgt.i32($i451, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 9} true; + assume {:verifier.code 0} true; + $i457 := $i452; + assume {:branchcond $i456} true; + goto $bb277, $bb278; +$bb277: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 9} true; + assume {:verifier.code 0} true; + assume ($i456 == 1); + goto $bb275; +$bb278: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 9} true; + assume {:verifier.code 0} true; + assume !(($i456 == 1)); + goto $bb279; +$bb279: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 395, 3} true; + assume {:verifier.code 0} true; + $i454 := $i457; + goto $bb273; +$bb280: + assume ($i468 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 11} true; + assume {:verifier.code 0} true; + $i470 := $slt.i32($i466, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i470} true; + goto $bb283, $bb285; +$bb281: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 402, 7} true; + assume {:verifier.code 0} true; + assume !(($i468 == 1)); + goto $bb282; +$bb282: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 407, 7} true; + assume {:verifier.code 0} true; + $i474 := $sext.i32.i64($i462); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 407, 9} true; + assume {:verifier.code 0} true; + $i475 := $srem.i64($i474, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 407, 7} true; + assume {:verifier.code 0} true; + $i476 := $trunc.i64.i32($i475); + call {:cexpr "a"} boogie_si_record_i32($i476); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 408, 5} true; + assume {:verifier.code 0} true; + $i477 := $add.i32($i476, $i476); + call {:cexpr "a"} boogie_si_record_i32($i477); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 409, 7} true; + assume {:verifier.code 0} true; + $i478 := $sext.i32.i64($i466); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 409, 9} true; + assume {:verifier.code 0} true; + $i479 := $srem.i64($i478, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 409, 7} true; + assume {:verifier.code 0} true; + $i480 := $trunc.i64.i32($i479); + call {:cexpr "b"} boogie_si_record_i32($i480); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 410, 5} true; + assume {:verifier.code 0} true; + $i481 := $add.i32($i480, $i480); + call {:cexpr "b"} boogie_si_record_i32($i481); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 412, 5} true; + assume {:verifier.code 0} true; + $i482 := $add.i32($i469, $i469); + call {:cexpr "c"} boogie_si_record_i32($i482); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 413, 9} true; + assume {:verifier.code 0} true; + $i483 := $slt.i32($i477, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 413, 7} true; + assume {:verifier.code 0} true; + $i484 := $i482; + assume {:branchcond $i483} true; + goto $bb289, $bb290; +$bb283: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 15} true; + assume {:verifier.code 0} true; + assume ($i470 == 1); + goto $bb284; +$bb284: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 404, 9} true; + assume {:verifier.code 0} true; + $i473 := $add.i32($i467, 1); + call {:cexpr "c"} boogie_si_record_i32($i473); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 405, 5} true; + assume {:verifier.code 0} true; + $i472 := $i473; + goto $bb288; +$bb285: + assume !(($i470 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 20} true; + assume {:verifier.code 0} true; + $i471 := $sgt.i32($i466, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 9} true; + assume {:verifier.code 0} true; + $i472 := $i467; + assume {:branchcond $i471} true; + goto $bb286, $bb287; +$bb286: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 9} true; + assume {:verifier.code 0} true; + assume ($i471 == 1); + goto $bb284; +$bb287: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 9} true; + assume {:verifier.code 0} true; + assume !(($i471 == 1)); + goto $bb288; +$bb288: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 406, 3} true; + assume {:verifier.code 0} true; + $i469 := $i472; + goto $bb282; +$bb289: + assume ($i483 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 11} true; + assume {:verifier.code 0} true; + $i485 := $slt.i32($i481, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i485} true; + goto $bb292, $bb294; +$bb290: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 413, 7} true; + assume {:verifier.code 0} true; + assume !(($i483 == 1)); + goto $bb291; +$bb291: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 418, 7} true; + assume {:verifier.code 0} true; + $i489 := $sext.i32.i64($i477); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 418, 9} true; + assume {:verifier.code 0} true; + $i490 := $srem.i64($i489, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 418, 7} true; + assume {:verifier.code 0} true; + $i491 := $trunc.i64.i32($i490); + call {:cexpr "a"} boogie_si_record_i32($i491); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 419, 5} true; + assume {:verifier.code 0} true; + $i492 := $add.i32($i491, $i491); + call {:cexpr "a"} boogie_si_record_i32($i492); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 420, 7} true; + assume {:verifier.code 0} true; + $i493 := $sext.i32.i64($i481); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 420, 9} true; + assume {:verifier.code 0} true; + $i494 := $srem.i64($i493, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 420, 7} true; + assume {:verifier.code 0} true; + $i495 := $trunc.i64.i32($i494); + call {:cexpr "b"} boogie_si_record_i32($i495); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 421, 5} true; + assume {:verifier.code 0} true; + $i496 := $add.i32($i495, $i495); + call {:cexpr "b"} boogie_si_record_i32($i496); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 423, 5} true; + assume {:verifier.code 0} true; + $i497 := $add.i32($i484, $i484); + call {:cexpr "c"} boogie_si_record_i32($i497); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 424, 9} true; + assume {:verifier.code 0} true; + $i498 := $slt.i32($i492, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 424, 7} true; + assume {:verifier.code 0} true; + $i499 := $i497; + assume {:branchcond $i498} true; + goto $bb298, $bb299; +$bb292: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 15} true; + assume {:verifier.code 0} true; + assume ($i485 == 1); + goto $bb293; +$bb293: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 415, 9} true; + assume {:verifier.code 0} true; + $i488 := $add.i32($i482, 1); + call {:cexpr "c"} boogie_si_record_i32($i488); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 416, 5} true; + assume {:verifier.code 0} true; + $i487 := $i488; + goto $bb297; +$bb294: + assume !(($i485 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 20} true; + assume {:verifier.code 0} true; + $i486 := $sgt.i32($i481, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 9} true; + assume {:verifier.code 0} true; + $i487 := $i482; + assume {:branchcond $i486} true; + goto $bb295, $bb296; +$bb295: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 9} true; + assume {:verifier.code 0} true; + assume ($i486 == 1); + goto $bb293; +$bb296: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 9} true; + assume {:verifier.code 0} true; + assume !(($i486 == 1)); + goto $bb297; +$bb297: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 417, 3} true; + assume {:verifier.code 0} true; + $i484 := $i487; + goto $bb291; +$bb298: + assume ($i498 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 11} true; + assume {:verifier.code 0} true; + $i500 := $slt.i32($i496, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i500} true; + goto $bb301, $bb303; +$bb299: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 424, 7} true; + assume {:verifier.code 0} true; + assume !(($i498 == 1)); + goto $bb300; +$bb300: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 429, 7} true; + assume {:verifier.code 0} true; + $i504 := $sext.i32.i64($i492); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 429, 9} true; + assume {:verifier.code 0} true; + $i505 := $srem.i64($i504, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 429, 7} true; + assume {:verifier.code 0} true; + $i506 := $trunc.i64.i32($i505); + call {:cexpr "a"} boogie_si_record_i32($i506); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 430, 5} true; + assume {:verifier.code 0} true; + $i507 := $add.i32($i506, $i506); + call {:cexpr "a"} boogie_si_record_i32($i507); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 431, 7} true; + assume {:verifier.code 0} true; + $i508 := $sext.i32.i64($i496); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 431, 9} true; + assume {:verifier.code 0} true; + $i509 := $srem.i64($i508, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 431, 7} true; + assume {:verifier.code 0} true; + $i510 := $trunc.i64.i32($i509); + call {:cexpr "b"} boogie_si_record_i32($i510); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 432, 5} true; + assume {:verifier.code 0} true; + $i511 := $add.i32($i510, $i510); + call {:cexpr "b"} boogie_si_record_i32($i511); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 434, 5} true; + assume {:verifier.code 0} true; + $i512 := $add.i32($i499, $i499); + call {:cexpr "c"} boogie_si_record_i32($i512); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 435, 9} true; + assume {:verifier.code 0} true; + $i513 := $slt.i32($i507, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 435, 7} true; + assume {:verifier.code 0} true; + $i514 := $i512; + assume {:branchcond $i513} true; + goto $bb307, $bb308; +$bb301: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 15} true; + assume {:verifier.code 0} true; + assume ($i500 == 1); + goto $bb302; +$bb302: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 426, 9} true; + assume {:verifier.code 0} true; + $i503 := $add.i32($i497, 1); + call {:cexpr "c"} boogie_si_record_i32($i503); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 427, 5} true; + assume {:verifier.code 0} true; + $i502 := $i503; + goto $bb306; +$bb303: + assume !(($i500 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 20} true; + assume {:verifier.code 0} true; + $i501 := $sgt.i32($i496, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 9} true; + assume {:verifier.code 0} true; + $i502 := $i497; + assume {:branchcond $i501} true; + goto $bb304, $bb305; +$bb304: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 9} true; + assume {:verifier.code 0} true; + assume ($i501 == 1); + goto $bb302; +$bb305: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 9} true; + assume {:verifier.code 0} true; + assume !(($i501 == 1)); + goto $bb306; +$bb306: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 428, 3} true; + assume {:verifier.code 0} true; + $i499 := $i502; + goto $bb300; +$bb307: + assume ($i513 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 11} true; + assume {:verifier.code 0} true; + $i515 := $slt.i32($i511, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i515} true; + goto $bb310, $bb312; +$bb308: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 435, 7} true; + assume {:verifier.code 0} true; + assume !(($i513 == 1)); + goto $bb309; +$bb309: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 440, 7} true; + assume {:verifier.code 0} true; + $i519 := $sext.i32.i64($i507); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 440, 9} true; + assume {:verifier.code 0} true; + $i520 := $srem.i64($i519, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 440, 7} true; + assume {:verifier.code 0} true; + $i521 := $trunc.i64.i32($i520); + call {:cexpr "a"} boogie_si_record_i32($i521); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 441, 5} true; + assume {:verifier.code 0} true; + $i522 := $add.i32($i521, $i521); + call {:cexpr "a"} boogie_si_record_i32($i522); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 442, 7} true; + assume {:verifier.code 0} true; + $i523 := $sext.i32.i64($i511); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 442, 9} true; + assume {:verifier.code 0} true; + $i524 := $srem.i64($i523, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 442, 7} true; + assume {:verifier.code 0} true; + $i525 := $trunc.i64.i32($i524); + call {:cexpr "b"} boogie_si_record_i32($i525); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 443, 5} true; + assume {:verifier.code 0} true; + $i526 := $add.i32($i525, $i525); + call {:cexpr "b"} boogie_si_record_i32($i526); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 445, 5} true; + assume {:verifier.code 0} true; + $i527 := $add.i32($i514, $i514); + call {:cexpr "c"} boogie_si_record_i32($i527); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 446, 9} true; + assume {:verifier.code 0} true; + $i528 := $slt.i32($i522, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 446, 7} true; + assume {:verifier.code 0} true; + $i529 := $i527; + assume {:branchcond $i528} true; + goto $bb316, $bb317; +$bb310: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 15} true; + assume {:verifier.code 0} true; + assume ($i515 == 1); + goto $bb311; +$bb311: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 437, 9} true; + assume {:verifier.code 0} true; + $i518 := $add.i32($i512, 1); + call {:cexpr "c"} boogie_si_record_i32($i518); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 438, 5} true; + assume {:verifier.code 0} true; + $i517 := $i518; + goto $bb315; +$bb312: + assume !(($i515 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 20} true; + assume {:verifier.code 0} true; + $i516 := $sgt.i32($i511, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 9} true; + assume {:verifier.code 0} true; + $i517 := $i512; + assume {:branchcond $i516} true; + goto $bb313, $bb314; +$bb313: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 9} true; + assume {:verifier.code 0} true; + assume ($i516 == 1); + goto $bb311; +$bb314: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 9} true; + assume {:verifier.code 0} true; + assume !(($i516 == 1)); + goto $bb315; +$bb315: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 439, 3} true; + assume {:verifier.code 0} true; + $i514 := $i517; + goto $bb309; +$bb316: + assume ($i528 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 11} true; + assume {:verifier.code 0} true; + $i530 := $slt.i32($i526, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i530} true; + goto $bb319, $bb321; +$bb317: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 446, 7} true; + assume {:verifier.code 0} true; + assume !(($i528 == 1)); + goto $bb318; +$bb318: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 451, 7} true; + assume {:verifier.code 0} true; + $i534 := $sext.i32.i64($i522); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 451, 9} true; + assume {:verifier.code 0} true; + $i535 := $srem.i64($i534, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 451, 7} true; + assume {:verifier.code 0} true; + $i536 := $trunc.i64.i32($i535); + call {:cexpr "a"} boogie_si_record_i32($i536); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 452, 5} true; + assume {:verifier.code 0} true; + $i537 := $add.i32($i536, $i536); + call {:cexpr "a"} boogie_si_record_i32($i537); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 453, 7} true; + assume {:verifier.code 0} true; + $i538 := $sext.i32.i64($i526); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 453, 9} true; + assume {:verifier.code 0} true; + $i539 := $srem.i64($i538, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 453, 7} true; + assume {:verifier.code 0} true; + $i540 := $trunc.i64.i32($i539); + call {:cexpr "b"} boogie_si_record_i32($i540); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 454, 5} true; + assume {:verifier.code 0} true; + $i541 := $add.i32($i540, $i540); + call {:cexpr "b"} boogie_si_record_i32($i541); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 456, 5} true; + assume {:verifier.code 0} true; + $i542 := $add.i32($i529, $i529); + call {:cexpr "c"} boogie_si_record_i32($i542); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 457, 9} true; + assume {:verifier.code 0} true; + $i543 := $slt.i32($i537, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 457, 7} true; + assume {:verifier.code 0} true; + $i544 := $i542; + assume {:branchcond $i543} true; + goto $bb325, $bb326; +$bb319: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 15} true; + assume {:verifier.code 0} true; + assume ($i530 == 1); + goto $bb320; +$bb320: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 448, 9} true; + assume {:verifier.code 0} true; + $i533 := $add.i32($i527, 1); + call {:cexpr "c"} boogie_si_record_i32($i533); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 449, 5} true; + assume {:verifier.code 0} true; + $i532 := $i533; + goto $bb324; +$bb321: + assume !(($i530 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 20} true; + assume {:verifier.code 0} true; + $i531 := $sgt.i32($i526, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 9} true; + assume {:verifier.code 0} true; + $i532 := $i527; + assume {:branchcond $i531} true; + goto $bb322, $bb323; +$bb322: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 9} true; + assume {:verifier.code 0} true; + assume ($i531 == 1); + goto $bb320; +$bb323: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 9} true; + assume {:verifier.code 0} true; + assume !(($i531 == 1)); + goto $bb324; +$bb324: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 450, 3} true; + assume {:verifier.code 0} true; + $i529 := $i532; + goto $bb318; +$bb325: + assume ($i543 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 11} true; + assume {:verifier.code 0} true; + $i545 := $slt.i32($i541, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i545} true; + goto $bb328, $bb330; +$bb326: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 457, 7} true; + assume {:verifier.code 0} true; + assume !(($i543 == 1)); + goto $bb327; +$bb327: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 462, 7} true; + assume {:verifier.code 0} true; + $i549 := $sext.i32.i64($i537); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 462, 9} true; + assume {:verifier.code 0} true; + $i550 := $srem.i64($i549, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 462, 7} true; + assume {:verifier.code 0} true; + $i551 := $trunc.i64.i32($i550); + call {:cexpr "a"} boogie_si_record_i32($i551); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 463, 5} true; + assume {:verifier.code 0} true; + $i552 := $add.i32($i551, $i551); + call {:cexpr "a"} boogie_si_record_i32($i552); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 464, 7} true; + assume {:verifier.code 0} true; + $i553 := $sext.i32.i64($i541); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 464, 9} true; + assume {:verifier.code 0} true; + $i554 := $srem.i64($i553, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 464, 7} true; + assume {:verifier.code 0} true; + $i555 := $trunc.i64.i32($i554); + call {:cexpr "b"} boogie_si_record_i32($i555); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 465, 5} true; + assume {:verifier.code 0} true; + $i556 := $add.i32($i555, $i555); + call {:cexpr "b"} boogie_si_record_i32($i556); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 467, 5} true; + assume {:verifier.code 0} true; + $i557 := $add.i32($i544, $i544); + call {:cexpr "c"} boogie_si_record_i32($i557); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 468, 9} true; + assume {:verifier.code 0} true; + $i558 := $slt.i32($i552, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 468, 7} true; + assume {:verifier.code 0} true; + $i559 := $i557; + assume {:branchcond $i558} true; + goto $bb334, $bb335; +$bb328: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 15} true; + assume {:verifier.code 0} true; + assume ($i545 == 1); + goto $bb329; +$bb329: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 459, 9} true; + assume {:verifier.code 0} true; + $i548 := $add.i32($i542, 1); + call {:cexpr "c"} boogie_si_record_i32($i548); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 460, 5} true; + assume {:verifier.code 0} true; + $i547 := $i548; + goto $bb333; +$bb330: + assume !(($i545 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 20} true; + assume {:verifier.code 0} true; + $i546 := $sgt.i32($i541, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 9} true; + assume {:verifier.code 0} true; + $i547 := $i542; + assume {:branchcond $i546} true; + goto $bb331, $bb332; +$bb331: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 9} true; + assume {:verifier.code 0} true; + assume ($i546 == 1); + goto $bb329; +$bb332: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 9} true; + assume {:verifier.code 0} true; + assume !(($i546 == 1)); + goto $bb333; +$bb333: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 461, 3} true; + assume {:verifier.code 0} true; + $i544 := $i547; + goto $bb327; +$bb334: + assume ($i558 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 11} true; + assume {:verifier.code 0} true; + $i560 := $slt.i32($i556, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i560} true; + goto $bb337, $bb339; +$bb335: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 468, 7} true; + assume {:verifier.code 0} true; + assume !(($i558 == 1)); + goto $bb336; +$bb336: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 473, 7} true; + assume {:verifier.code 0} true; + $i564 := $sext.i32.i64($i552); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 473, 9} true; + assume {:verifier.code 0} true; + $i565 := $srem.i64($i564, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 473, 7} true; + assume {:verifier.code 0} true; + $i566 := $trunc.i64.i32($i565); + call {:cexpr "a"} boogie_si_record_i32($i566); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 474, 5} true; + assume {:verifier.code 0} true; + $i567 := $add.i32($i566, $i566); + call {:cexpr "a"} boogie_si_record_i32($i567); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 475, 7} true; + assume {:verifier.code 0} true; + $i568 := $sext.i32.i64($i556); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 475, 9} true; + assume {:verifier.code 0} true; + $i569 := $srem.i64($i568, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 475, 7} true; + assume {:verifier.code 0} true; + $i570 := $trunc.i64.i32($i569); + call {:cexpr "b"} boogie_si_record_i32($i570); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 476, 5} true; + assume {:verifier.code 0} true; + $i571 := $add.i32($i570, $i570); + call {:cexpr "b"} boogie_si_record_i32($i571); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 478, 5} true; + assume {:verifier.code 0} true; + $i572 := $add.i32($i559, $i559); + call {:cexpr "c"} boogie_si_record_i32($i572); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 479, 9} true; + assume {:verifier.code 0} true; + $i573 := $slt.i32($i567, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 479, 7} true; + assume {:verifier.code 0} true; + $i574 := $i572; + assume {:branchcond $i573} true; + goto $bb343, $bb344; +$bb337: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 15} true; + assume {:verifier.code 0} true; + assume ($i560 == 1); + goto $bb338; +$bb338: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 470, 9} true; + assume {:verifier.code 0} true; + $i563 := $add.i32($i557, 1); + call {:cexpr "c"} boogie_si_record_i32($i563); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 471, 5} true; + assume {:verifier.code 0} true; + $i562 := $i563; + goto $bb342; +$bb339: + assume !(($i560 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 20} true; + assume {:verifier.code 0} true; + $i561 := $sgt.i32($i556, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 9} true; + assume {:verifier.code 0} true; + $i562 := $i557; + assume {:branchcond $i561} true; + goto $bb340, $bb341; +$bb340: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 9} true; + assume {:verifier.code 0} true; + assume ($i561 == 1); + goto $bb338; +$bb341: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 9} true; + assume {:verifier.code 0} true; + assume !(($i561 == 1)); + goto $bb342; +$bb342: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 472, 3} true; + assume {:verifier.code 0} true; + $i559 := $i562; + goto $bb336; +$bb343: + assume ($i573 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 11} true; + assume {:verifier.code 0} true; + $i575 := $slt.i32($i571, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i575} true; + goto $bb346, $bb348; +$bb344: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 479, 7} true; + assume {:verifier.code 0} true; + assume !(($i573 == 1)); + goto $bb345; +$bb345: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 484, 7} true; + assume {:verifier.code 0} true; + $i579 := $sext.i32.i64($i567); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 484, 9} true; + assume {:verifier.code 0} true; + $i580 := $srem.i64($i579, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 484, 7} true; + assume {:verifier.code 0} true; + $i581 := $trunc.i64.i32($i580); + call {:cexpr "a"} boogie_si_record_i32($i581); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 485, 5} true; + assume {:verifier.code 0} true; + $i582 := $add.i32($i581, $i581); + call {:cexpr "a"} boogie_si_record_i32($i582); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 486, 7} true; + assume {:verifier.code 0} true; + $i583 := $sext.i32.i64($i571); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 486, 9} true; + assume {:verifier.code 0} true; + $i584 := $srem.i64($i583, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 486, 7} true; + assume {:verifier.code 0} true; + $i585 := $trunc.i64.i32($i584); + call {:cexpr "b"} boogie_si_record_i32($i585); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 487, 5} true; + assume {:verifier.code 0} true; + $i586 := $add.i32($i585, $i585); + call {:cexpr "b"} boogie_si_record_i32($i586); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 489, 5} true; + assume {:verifier.code 0} true; + $i587 := $add.i32($i574, $i574); + call {:cexpr "c"} boogie_si_record_i32($i587); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 490, 9} true; + assume {:verifier.code 0} true; + $i588 := $slt.i32($i582, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 490, 7} true; + assume {:verifier.code 0} true; + $i589 := $i587; + assume {:branchcond $i588} true; + goto $bb352, $bb353; +$bb346: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 15} true; + assume {:verifier.code 0} true; + assume ($i575 == 1); + goto $bb347; +$bb347: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 481, 9} true; + assume {:verifier.code 0} true; + $i578 := $add.i32($i572, 1); + call {:cexpr "c"} boogie_si_record_i32($i578); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 482, 5} true; + assume {:verifier.code 0} true; + $i577 := $i578; + goto $bb351; +$bb348: + assume !(($i575 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 20} true; + assume {:verifier.code 0} true; + $i576 := $sgt.i32($i571, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 9} true; + assume {:verifier.code 0} true; + $i577 := $i572; + assume {:branchcond $i576} true; + goto $bb349, $bb350; +$bb349: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 9} true; + assume {:verifier.code 0} true; + assume ($i576 == 1); + goto $bb347; +$bb350: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 9} true; + assume {:verifier.code 0} true; + assume !(($i576 == 1)); + goto $bb351; +$bb351: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 483, 3} true; + assume {:verifier.code 0} true; + $i574 := $i577; + goto $bb345; +$bb352: + assume ($i588 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 11} true; + assume {:verifier.code 0} true; + $i590 := $slt.i32($i586, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i590} true; + goto $bb355, $bb357; +$bb353: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 490, 7} true; + assume {:verifier.code 0} true; + assume !(($i588 == 1)); + goto $bb354; +$bb354: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 495, 7} true; + assume {:verifier.code 0} true; + $i594 := $sext.i32.i64($i582); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 495, 9} true; + assume {:verifier.code 0} true; + $i595 := $srem.i64($i594, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 495, 7} true; + assume {:verifier.code 0} true; + $i596 := $trunc.i64.i32($i595); + call {:cexpr "a"} boogie_si_record_i32($i596); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 496, 5} true; + assume {:verifier.code 0} true; + $i597 := $add.i32($i596, $i596); + call {:cexpr "a"} boogie_si_record_i32($i597); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 497, 7} true; + assume {:verifier.code 0} true; + $i598 := $sext.i32.i64($i586); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 497, 9} true; + assume {:verifier.code 0} true; + $i599 := $srem.i64($i598, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 497, 7} true; + assume {:verifier.code 0} true; + $i600 := $trunc.i64.i32($i599); + call {:cexpr "b"} boogie_si_record_i32($i600); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 498, 5} true; + assume {:verifier.code 0} true; + $i601 := $add.i32($i600, $i600); + call {:cexpr "b"} boogie_si_record_i32($i601); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 500, 5} true; + assume {:verifier.code 0} true; + $i602 := $add.i32($i589, $i589); + call {:cexpr "c"} boogie_si_record_i32($i602); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 501, 9} true; + assume {:verifier.code 0} true; + $i603 := $slt.i32($i597, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 501, 7} true; + assume {:verifier.code 0} true; + $i604 := $i602; + assume {:branchcond $i603} true; + goto $bb361, $bb362; +$bb355: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 15} true; + assume {:verifier.code 0} true; + assume ($i590 == 1); + goto $bb356; +$bb356: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 492, 9} true; + assume {:verifier.code 0} true; + $i593 := $add.i32($i587, 1); + call {:cexpr "c"} boogie_si_record_i32($i593); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 493, 5} true; + assume {:verifier.code 0} true; + $i592 := $i593; + goto $bb360; +$bb357: + assume !(($i590 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 20} true; + assume {:verifier.code 0} true; + $i591 := $sgt.i32($i586, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 9} true; + assume {:verifier.code 0} true; + $i592 := $i587; + assume {:branchcond $i591} true; + goto $bb358, $bb359; +$bb358: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 9} true; + assume {:verifier.code 0} true; + assume ($i591 == 1); + goto $bb356; +$bb359: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 9} true; + assume {:verifier.code 0} true; + assume !(($i591 == 1)); + goto $bb360; +$bb360: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 494, 3} true; + assume {:verifier.code 0} true; + $i589 := $i592; + goto $bb354; +$bb361: + assume ($i603 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 11} true; + assume {:verifier.code 0} true; + $i605 := $slt.i32($i601, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i605} true; + goto $bb364, $bb366; +$bb362: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 501, 7} true; + assume {:verifier.code 0} true; + assume !(($i603 == 1)); + goto $bb363; +$bb363: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 506, 7} true; + assume {:verifier.code 0} true; + $i609 := $sext.i32.i64($i597); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 506, 9} true; + assume {:verifier.code 0} true; + $i610 := $srem.i64($i609, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 506, 7} true; + assume {:verifier.code 0} true; + $i611 := $trunc.i64.i32($i610); + call {:cexpr "a"} boogie_si_record_i32($i611); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 507, 5} true; + assume {:verifier.code 0} true; + $i612 := $add.i32($i611, $i611); + call {:cexpr "a"} boogie_si_record_i32($i612); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 508, 7} true; + assume {:verifier.code 0} true; + $i613 := $sext.i32.i64($i601); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 508, 9} true; + assume {:verifier.code 0} true; + $i614 := $srem.i64($i613, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 508, 7} true; + assume {:verifier.code 0} true; + $i615 := $trunc.i64.i32($i614); + call {:cexpr "b"} boogie_si_record_i32($i615); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 509, 5} true; + assume {:verifier.code 0} true; + $i616 := $add.i32($i615, $i615); + call {:cexpr "b"} boogie_si_record_i32($i616); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 511, 5} true; + assume {:verifier.code 0} true; + $i617 := $add.i32($i604, $i604); + call {:cexpr "c"} boogie_si_record_i32($i617); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 512, 9} true; + assume {:verifier.code 0} true; + $i618 := $slt.i32($i612, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 512, 7} true; + assume {:verifier.code 0} true; + $i619 := $i617; + assume {:branchcond $i618} true; + goto $bb370, $bb371; +$bb364: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 15} true; + assume {:verifier.code 0} true; + assume ($i605 == 1); + goto $bb365; +$bb365: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 503, 9} true; + assume {:verifier.code 0} true; + $i608 := $add.i32($i602, 1); + call {:cexpr "c"} boogie_si_record_i32($i608); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 504, 5} true; + assume {:verifier.code 0} true; + $i607 := $i608; + goto $bb369; +$bb366: + assume !(($i605 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 20} true; + assume {:verifier.code 0} true; + $i606 := $sgt.i32($i601, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 9} true; + assume {:verifier.code 0} true; + $i607 := $i602; + assume {:branchcond $i606} true; + goto $bb367, $bb368; +$bb367: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 9} true; + assume {:verifier.code 0} true; + assume ($i606 == 1); + goto $bb365; +$bb368: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 9} true; + assume {:verifier.code 0} true; + assume !(($i606 == 1)); + goto $bb369; +$bb369: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 505, 3} true; + assume {:verifier.code 0} true; + $i604 := $i607; + goto $bb363; +$bb370: + assume ($i618 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 11} true; + assume {:verifier.code 0} true; + $i620 := $slt.i32($i616, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i620} true; + goto $bb373, $bb375; +$bb371: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 512, 7} true; + assume {:verifier.code 0} true; + assume !(($i618 == 1)); + goto $bb372; +$bb372: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 517, 7} true; + assume {:verifier.code 0} true; + $i624 := $sext.i32.i64($i612); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 517, 9} true; + assume {:verifier.code 0} true; + $i625 := $srem.i64($i624, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 517, 7} true; + assume {:verifier.code 0} true; + $i626 := $trunc.i64.i32($i625); + call {:cexpr "a"} boogie_si_record_i32($i626); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 518, 5} true; + assume {:verifier.code 0} true; + $i627 := $add.i32($i626, $i626); + call {:cexpr "a"} boogie_si_record_i32($i627); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 519, 7} true; + assume {:verifier.code 0} true; + $i628 := $sext.i32.i64($i616); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 519, 9} true; + assume {:verifier.code 0} true; + $i629 := $srem.i64($i628, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 519, 7} true; + assume {:verifier.code 0} true; + $i630 := $trunc.i64.i32($i629); + call {:cexpr "b"} boogie_si_record_i32($i630); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 520, 5} true; + assume {:verifier.code 0} true; + $i631 := $add.i32($i630, $i630); + call {:cexpr "b"} boogie_si_record_i32($i631); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 522, 5} true; + assume {:verifier.code 0} true; + $i632 := $add.i32($i619, $i619); + call {:cexpr "c"} boogie_si_record_i32($i632); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 523, 9} true; + assume {:verifier.code 0} true; + $i633 := $slt.i32($i627, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 523, 7} true; + assume {:verifier.code 0} true; + $i634 := $i632; + assume {:branchcond $i633} true; + goto $bb379, $bb380; +$bb373: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 15} true; + assume {:verifier.code 0} true; + assume ($i620 == 1); + goto $bb374; +$bb374: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 514, 9} true; + assume {:verifier.code 0} true; + $i623 := $add.i32($i617, 1); + call {:cexpr "c"} boogie_si_record_i32($i623); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 515, 5} true; + assume {:verifier.code 0} true; + $i622 := $i623; + goto $bb378; +$bb375: + assume !(($i620 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 20} true; + assume {:verifier.code 0} true; + $i621 := $sgt.i32($i616, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 9} true; + assume {:verifier.code 0} true; + $i622 := $i617; + assume {:branchcond $i621} true; + goto $bb376, $bb377; +$bb376: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 9} true; + assume {:verifier.code 0} true; + assume ($i621 == 1); + goto $bb374; +$bb377: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 9} true; + assume {:verifier.code 0} true; + assume !(($i621 == 1)); + goto $bb378; +$bb378: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 516, 3} true; + assume {:verifier.code 0} true; + $i619 := $i622; + goto $bb372; +$bb379: + assume ($i633 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 11} true; + assume {:verifier.code 0} true; + $i635 := $slt.i32($i631, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i635} true; + goto $bb382, $bb384; +$bb380: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 523, 7} true; + assume {:verifier.code 0} true; + assume !(($i633 == 1)); + goto $bb381; +$bb381: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 528, 7} true; + assume {:verifier.code 0} true; + $i639 := $sext.i32.i64($i627); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 528, 9} true; + assume {:verifier.code 0} true; + $i640 := $srem.i64($i639, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 528, 7} true; + assume {:verifier.code 0} true; + $i641 := $trunc.i64.i32($i640); + call {:cexpr "a"} boogie_si_record_i32($i641); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 529, 5} true; + assume {:verifier.code 0} true; + $i642 := $add.i32($i641, $i641); + call {:cexpr "a"} boogie_si_record_i32($i642); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 530, 7} true; + assume {:verifier.code 0} true; + $i643 := $sext.i32.i64($i631); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 530, 9} true; + assume {:verifier.code 0} true; + $i644 := $srem.i64($i643, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 530, 7} true; + assume {:verifier.code 0} true; + $i645 := $trunc.i64.i32($i644); + call {:cexpr "b"} boogie_si_record_i32($i645); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 531, 5} true; + assume {:verifier.code 0} true; + $i646 := $add.i32($i645, $i645); + call {:cexpr "b"} boogie_si_record_i32($i646); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 533, 5} true; + assume {:verifier.code 0} true; + $i647 := $add.i32($i634, $i634); + call {:cexpr "c"} boogie_si_record_i32($i647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 534, 9} true; + assume {:verifier.code 0} true; + $i648 := $slt.i32($i642, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 534, 7} true; + assume {:verifier.code 0} true; + $i649 := $i647; + assume {:branchcond $i648} true; + goto $bb388, $bb389; +$bb382: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 15} true; + assume {:verifier.code 0} true; + assume ($i635 == 1); + goto $bb383; +$bb383: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 525, 9} true; + assume {:verifier.code 0} true; + $i638 := $add.i32($i632, 1); + call {:cexpr "c"} boogie_si_record_i32($i638); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 526, 5} true; + assume {:verifier.code 0} true; + $i637 := $i638; + goto $bb387; +$bb384: + assume !(($i635 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 20} true; + assume {:verifier.code 0} true; + $i636 := $sgt.i32($i631, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 9} true; + assume {:verifier.code 0} true; + $i637 := $i632; + assume {:branchcond $i636} true; + goto $bb385, $bb386; +$bb385: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 9} true; + assume {:verifier.code 0} true; + assume ($i636 == 1); + goto $bb383; +$bb386: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 9} true; + assume {:verifier.code 0} true; + assume !(($i636 == 1)); + goto $bb387; +$bb387: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 527, 3} true; + assume {:verifier.code 0} true; + $i634 := $i637; + goto $bb381; +$bb388: + assume ($i648 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 11} true; + assume {:verifier.code 0} true; + $i650 := $slt.i32($i646, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i650} true; + goto $bb391, $bb393; +$bb389: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 534, 7} true; + assume {:verifier.code 0} true; + assume !(($i648 == 1)); + goto $bb390; +$bb390: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 539, 7} true; + assume {:verifier.code 0} true; + $i654 := $sext.i32.i64($i642); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 539, 9} true; + assume {:verifier.code 0} true; + $i655 := $srem.i64($i654, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 539, 7} true; + assume {:verifier.code 0} true; + $i656 := $trunc.i64.i32($i655); + call {:cexpr "a"} boogie_si_record_i32($i656); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 540, 5} true; + assume {:verifier.code 0} true; + $i657 := $add.i32($i656, $i656); + call {:cexpr "a"} boogie_si_record_i32($i657); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 541, 7} true; + assume {:verifier.code 0} true; + $i658 := $sext.i32.i64($i646); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 541, 9} true; + assume {:verifier.code 0} true; + $i659 := $srem.i64($i658, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 541, 7} true; + assume {:verifier.code 0} true; + $i660 := $trunc.i64.i32($i659); + call {:cexpr "b"} boogie_si_record_i32($i660); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 542, 5} true; + assume {:verifier.code 0} true; + $i661 := $add.i32($i660, $i660); + call {:cexpr "b"} boogie_si_record_i32($i661); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 544, 5} true; + assume {:verifier.code 0} true; + $i662 := $add.i32($i649, $i649); + call {:cexpr "c"} boogie_si_record_i32($i662); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 545, 9} true; + assume {:verifier.code 0} true; + $i663 := $slt.i32($i657, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 545, 7} true; + assume {:verifier.code 0} true; + $i664 := $i662; + assume {:branchcond $i663} true; + goto $bb397, $bb398; +$bb391: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 15} true; + assume {:verifier.code 0} true; + assume ($i650 == 1); + goto $bb392; +$bb392: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 536, 9} true; + assume {:verifier.code 0} true; + $i653 := $add.i32($i647, 1); + call {:cexpr "c"} boogie_si_record_i32($i653); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 537, 5} true; + assume {:verifier.code 0} true; + $i652 := $i653; + goto $bb396; +$bb393: + assume !(($i650 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 20} true; + assume {:verifier.code 0} true; + $i651 := $sgt.i32($i646, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 9} true; + assume {:verifier.code 0} true; + $i652 := $i647; + assume {:branchcond $i651} true; + goto $bb394, $bb395; +$bb394: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 9} true; + assume {:verifier.code 0} true; + assume ($i651 == 1); + goto $bb392; +$bb395: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 9} true; + assume {:verifier.code 0} true; + assume !(($i651 == 1)); + goto $bb396; +$bb396: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 538, 3} true; + assume {:verifier.code 0} true; + $i649 := $i652; + goto $bb390; +$bb397: + assume ($i663 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 11} true; + assume {:verifier.code 0} true; + $i665 := $slt.i32($i661, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i665} true; + goto $bb400, $bb402; +$bb398: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 545, 7} true; + assume {:verifier.code 0} true; + assume !(($i663 == 1)); + goto $bb399; +$bb399: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 550, 7} true; + assume {:verifier.code 0} true; + $i669 := $sext.i32.i64($i657); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 550, 9} true; + assume {:verifier.code 0} true; + $i670 := $srem.i64($i669, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 550, 7} true; + assume {:verifier.code 0} true; + $i671 := $trunc.i64.i32($i670); + call {:cexpr "a"} boogie_si_record_i32($i671); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 551, 5} true; + assume {:verifier.code 0} true; + $i672 := $add.i32($i671, $i671); + call {:cexpr "a"} boogie_si_record_i32($i672); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 552, 7} true; + assume {:verifier.code 0} true; + $i673 := $sext.i32.i64($i661); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 552, 9} true; + assume {:verifier.code 0} true; + $i674 := $srem.i64($i673, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 552, 7} true; + assume {:verifier.code 0} true; + $i675 := $trunc.i64.i32($i674); + call {:cexpr "b"} boogie_si_record_i32($i675); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 553, 5} true; + assume {:verifier.code 0} true; + $i676 := $add.i32($i675, $i675); + call {:cexpr "b"} boogie_si_record_i32($i676); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 555, 5} true; + assume {:verifier.code 0} true; + $i677 := $add.i32($i664, $i664); + call {:cexpr "c"} boogie_si_record_i32($i677); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 556, 9} true; + assume {:verifier.code 0} true; + $i678 := $slt.i32($i672, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 556, 7} true; + assume {:verifier.code 0} true; + $i679 := $i677; + assume {:branchcond $i678} true; + goto $bb406, $bb407; +$bb400: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 15} true; + assume {:verifier.code 0} true; + assume ($i665 == 1); + goto $bb401; +$bb401: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 547, 9} true; + assume {:verifier.code 0} true; + $i668 := $add.i32($i662, 1); + call {:cexpr "c"} boogie_si_record_i32($i668); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 548, 5} true; + assume {:verifier.code 0} true; + $i667 := $i668; + goto $bb405; +$bb402: + assume !(($i665 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 20} true; + assume {:verifier.code 0} true; + $i666 := $sgt.i32($i661, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 9} true; + assume {:verifier.code 0} true; + $i667 := $i662; + assume {:branchcond $i666} true; + goto $bb403, $bb404; +$bb403: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 9} true; + assume {:verifier.code 0} true; + assume ($i666 == 1); + goto $bb401; +$bb404: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 9} true; + assume {:verifier.code 0} true; + assume !(($i666 == 1)); + goto $bb405; +$bb405: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 549, 3} true; + assume {:verifier.code 0} true; + $i664 := $i667; + goto $bb399; +$bb406: + assume ($i678 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 11} true; + assume {:verifier.code 0} true; + $i680 := $slt.i32($i676, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i680} true; + goto $bb409, $bb411; +$bb407: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 556, 7} true; + assume {:verifier.code 0} true; + assume !(($i678 == 1)); + goto $bb408; +$bb408: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 561, 7} true; + assume {:verifier.code 0} true; + $i684 := $sext.i32.i64($i672); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 561, 9} true; + assume {:verifier.code 0} true; + $i685 := $srem.i64($i684, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 561, 7} true; + assume {:verifier.code 0} true; + $i686 := $trunc.i64.i32($i685); + call {:cexpr "a"} boogie_si_record_i32($i686); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 562, 5} true; + assume {:verifier.code 0} true; + $i687 := $add.i32($i686, $i686); + call {:cexpr "a"} boogie_si_record_i32($i687); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 563, 7} true; + assume {:verifier.code 0} true; + $i688 := $sext.i32.i64($i676); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 563, 9} true; + assume {:verifier.code 0} true; + $i689 := $srem.i64($i688, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 563, 7} true; + assume {:verifier.code 0} true; + $i690 := $trunc.i64.i32($i689); + call {:cexpr "b"} boogie_si_record_i32($i690); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 564, 5} true; + assume {:verifier.code 0} true; + $i691 := $add.i32($i690, $i690); + call {:cexpr "b"} boogie_si_record_i32($i691); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 566, 5} true; + assume {:verifier.code 0} true; + $i692 := $add.i32($i679, $i679); + call {:cexpr "c"} boogie_si_record_i32($i692); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 567, 9} true; + assume {:verifier.code 0} true; + $i693 := $slt.i32($i687, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 567, 7} true; + assume {:verifier.code 0} true; + $i694 := $i692; + assume {:branchcond $i693} true; + goto $bb415, $bb416; +$bb409: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 15} true; + assume {:verifier.code 0} true; + assume ($i680 == 1); + goto $bb410; +$bb410: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 558, 9} true; + assume {:verifier.code 0} true; + $i683 := $add.i32($i677, 1); + call {:cexpr "c"} boogie_si_record_i32($i683); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 559, 5} true; + assume {:verifier.code 0} true; + $i682 := $i683; + goto $bb414; +$bb411: + assume !(($i680 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 20} true; + assume {:verifier.code 0} true; + $i681 := $sgt.i32($i676, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 9} true; + assume {:verifier.code 0} true; + $i682 := $i677; + assume {:branchcond $i681} true; + goto $bb412, $bb413; +$bb412: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 9} true; + assume {:verifier.code 0} true; + assume ($i681 == 1); + goto $bb410; +$bb413: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 9} true; + assume {:verifier.code 0} true; + assume !(($i681 == 1)); + goto $bb414; +$bb414: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 560, 3} true; + assume {:verifier.code 0} true; + $i679 := $i682; + goto $bb408; +$bb415: + assume ($i693 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 11} true; + assume {:verifier.code 0} true; + $i695 := $slt.i32($i691, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i695} true; + goto $bb418, $bb420; +$bb416: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 567, 7} true; + assume {:verifier.code 0} true; + assume !(($i693 == 1)); + goto $bb417; +$bb417: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 572, 7} true; + assume {:verifier.code 0} true; + $i699 := $sext.i32.i64($i687); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 572, 9} true; + assume {:verifier.code 0} true; + $i700 := $srem.i64($i699, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 572, 7} true; + assume {:verifier.code 0} true; + $i701 := $trunc.i64.i32($i700); + call {:cexpr "a"} boogie_si_record_i32($i701); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 573, 5} true; + assume {:verifier.code 0} true; + $i702 := $add.i32($i701, $i701); + call {:cexpr "a"} boogie_si_record_i32($i702); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 574, 7} true; + assume {:verifier.code 0} true; + $i703 := $sext.i32.i64($i691); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 574, 9} true; + assume {:verifier.code 0} true; + $i704 := $srem.i64($i703, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 574, 7} true; + assume {:verifier.code 0} true; + $i705 := $trunc.i64.i32($i704); + call {:cexpr "b"} boogie_si_record_i32($i705); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 575, 5} true; + assume {:verifier.code 0} true; + $i706 := $add.i32($i705, $i705); + call {:cexpr "b"} boogie_si_record_i32($i706); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 577, 5} true; + assume {:verifier.code 0} true; + $i707 := $add.i32($i694, $i694); + call {:cexpr "c"} boogie_si_record_i32($i707); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 578, 9} true; + assume {:verifier.code 0} true; + $i708 := $slt.i32($i702, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 578, 7} true; + assume {:verifier.code 0} true; + $i709 := $i707; + assume {:branchcond $i708} true; + goto $bb424, $bb425; +$bb418: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 15} true; + assume {:verifier.code 0} true; + assume ($i695 == 1); + goto $bb419; +$bb419: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 569, 9} true; + assume {:verifier.code 0} true; + $i698 := $add.i32($i692, 1); + call {:cexpr "c"} boogie_si_record_i32($i698); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 570, 5} true; + assume {:verifier.code 0} true; + $i697 := $i698; + goto $bb423; +$bb420: + assume !(($i695 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 20} true; + assume {:verifier.code 0} true; + $i696 := $sgt.i32($i691, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 9} true; + assume {:verifier.code 0} true; + $i697 := $i692; + assume {:branchcond $i696} true; + goto $bb421, $bb422; +$bb421: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 9} true; + assume {:verifier.code 0} true; + assume ($i696 == 1); + goto $bb419; +$bb422: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 9} true; + assume {:verifier.code 0} true; + assume !(($i696 == 1)); + goto $bb423; +$bb423: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 571, 3} true; + assume {:verifier.code 0} true; + $i694 := $i697; + goto $bb417; +$bb424: + assume ($i708 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 11} true; + assume {:verifier.code 0} true; + $i710 := $slt.i32($i706, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i710} true; + goto $bb427, $bb429; +$bb425: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 578, 7} true; + assume {:verifier.code 0} true; + assume !(($i708 == 1)); + goto $bb426; +$bb426: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 583, 7} true; + assume {:verifier.code 0} true; + $i714 := $sext.i32.i64($i702); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 583, 9} true; + assume {:verifier.code 0} true; + $i715 := $srem.i64($i714, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 583, 7} true; + assume {:verifier.code 0} true; + $i716 := $trunc.i64.i32($i715); + call {:cexpr "a"} boogie_si_record_i32($i716); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 584, 5} true; + assume {:verifier.code 0} true; + $i717 := $add.i32($i716, $i716); + call {:cexpr "a"} boogie_si_record_i32($i717); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 585, 7} true; + assume {:verifier.code 0} true; + $i718 := $sext.i32.i64($i706); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 585, 9} true; + assume {:verifier.code 0} true; + $i719 := $srem.i64($i718, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 585, 7} true; + assume {:verifier.code 0} true; + $i720 := $trunc.i64.i32($i719); + call {:cexpr "b"} boogie_si_record_i32($i720); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 586, 5} true; + assume {:verifier.code 0} true; + $i721 := $add.i32($i720, $i720); + call {:cexpr "b"} boogie_si_record_i32($i721); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 588, 5} true; + assume {:verifier.code 0} true; + $i722 := $add.i32($i709, $i709); + call {:cexpr "c"} boogie_si_record_i32($i722); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 589, 9} true; + assume {:verifier.code 0} true; + $i723 := $slt.i32($i717, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 589, 7} true; + assume {:verifier.code 0} true; + $i724 := $i722; + assume {:branchcond $i723} true; + goto $bb433, $bb434; +$bb427: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 15} true; + assume {:verifier.code 0} true; + assume ($i710 == 1); + goto $bb428; +$bb428: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 580, 9} true; + assume {:verifier.code 0} true; + $i713 := $add.i32($i707, 1); + call {:cexpr "c"} boogie_si_record_i32($i713); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 581, 5} true; + assume {:verifier.code 0} true; + $i712 := $i713; + goto $bb432; +$bb429: + assume !(($i710 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 20} true; + assume {:verifier.code 0} true; + $i711 := $sgt.i32($i706, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 9} true; + assume {:verifier.code 0} true; + $i712 := $i707; + assume {:branchcond $i711} true; + goto $bb430, $bb431; +$bb430: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 9} true; + assume {:verifier.code 0} true; + assume ($i711 == 1); + goto $bb428; +$bb431: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 9} true; + assume {:verifier.code 0} true; + assume !(($i711 == 1)); + goto $bb432; +$bb432: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 582, 3} true; + assume {:verifier.code 0} true; + $i709 := $i712; + goto $bb426; +$bb433: + assume ($i723 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 11} true; + assume {:verifier.code 0} true; + $i725 := $slt.i32($i721, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i725} true; + goto $bb436, $bb438; +$bb434: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 589, 7} true; + assume {:verifier.code 0} true; + assume !(($i723 == 1)); + goto $bb435; +$bb435: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 594, 7} true; + assume {:verifier.code 0} true; + $i729 := $sext.i32.i64($i717); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 594, 9} true; + assume {:verifier.code 0} true; + $i730 := $srem.i64($i729, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 594, 7} true; + assume {:verifier.code 0} true; + $i731 := $trunc.i64.i32($i730); + call {:cexpr "a"} boogie_si_record_i32($i731); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 595, 5} true; + assume {:verifier.code 0} true; + $i732 := $add.i32($i731, $i731); + call {:cexpr "a"} boogie_si_record_i32($i732); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 596, 7} true; + assume {:verifier.code 0} true; + $i733 := $sext.i32.i64($i721); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 596, 9} true; + assume {:verifier.code 0} true; + $i734 := $srem.i64($i733, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 596, 7} true; + assume {:verifier.code 0} true; + $i735 := $trunc.i64.i32($i734); + call {:cexpr "b"} boogie_si_record_i32($i735); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 597, 5} true; + assume {:verifier.code 0} true; + $i736 := $add.i32($i735, $i735); + call {:cexpr "b"} boogie_si_record_i32($i736); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 599, 5} true; + assume {:verifier.code 0} true; + $i737 := $add.i32($i724, $i724); + call {:cexpr "c"} boogie_si_record_i32($i737); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 600, 9} true; + assume {:verifier.code 0} true; + $i738 := $slt.i32($i732, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 600, 7} true; + assume {:verifier.code 0} true; + $i739 := $i737; + assume {:branchcond $i738} true; + goto $bb442, $bb443; +$bb436: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 15} true; + assume {:verifier.code 0} true; + assume ($i725 == 1); + goto $bb437; +$bb437: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 591, 9} true; + assume {:verifier.code 0} true; + $i728 := $add.i32($i722, 1); + call {:cexpr "c"} boogie_si_record_i32($i728); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 592, 5} true; + assume {:verifier.code 0} true; + $i727 := $i728; + goto $bb441; +$bb438: + assume !(($i725 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 20} true; + assume {:verifier.code 0} true; + $i726 := $sgt.i32($i721, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 9} true; + assume {:verifier.code 0} true; + $i727 := $i722; + assume {:branchcond $i726} true; + goto $bb439, $bb440; +$bb439: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 9} true; + assume {:verifier.code 0} true; + assume ($i726 == 1); + goto $bb437; +$bb440: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 9} true; + assume {:verifier.code 0} true; + assume !(($i726 == 1)); + goto $bb441; +$bb441: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 593, 3} true; + assume {:verifier.code 0} true; + $i724 := $i727; + goto $bb435; +$bb442: + assume ($i738 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 11} true; + assume {:verifier.code 0} true; + $i740 := $slt.i32($i736, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i740} true; + goto $bb445, $bb447; +$bb443: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 600, 7} true; + assume {:verifier.code 0} true; + assume !(($i738 == 1)); + goto $bb444; +$bb444: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 605, 7} true; + assume {:verifier.code 0} true; + $i744 := $sext.i32.i64($i732); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 605, 9} true; + assume {:verifier.code 0} true; + $i745 := $srem.i64($i744, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 605, 7} true; + assume {:verifier.code 0} true; + $i746 := $trunc.i64.i32($i745); + call {:cexpr "a"} boogie_si_record_i32($i746); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 606, 5} true; + assume {:verifier.code 0} true; + $i747 := $add.i32($i746, $i746); + call {:cexpr "a"} boogie_si_record_i32($i747); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 607, 7} true; + assume {:verifier.code 0} true; + $i748 := $sext.i32.i64($i736); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 607, 9} true; + assume {:verifier.code 0} true; + $i749 := $srem.i64($i748, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 607, 7} true; + assume {:verifier.code 0} true; + $i750 := $trunc.i64.i32($i749); + call {:cexpr "b"} boogie_si_record_i32($i750); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 608, 5} true; + assume {:verifier.code 0} true; + $i751 := $add.i32($i750, $i750); + call {:cexpr "b"} boogie_si_record_i32($i751); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 610, 5} true; + assume {:verifier.code 0} true; + $i752 := $add.i32($i739, $i739); + call {:cexpr "c"} boogie_si_record_i32($i752); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 611, 9} true; + assume {:verifier.code 0} true; + $i753 := $slt.i32($i747, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 611, 7} true; + assume {:verifier.code 0} true; + $i754 := $i752; + assume {:branchcond $i753} true; + goto $bb451, $bb452; +$bb445: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 15} true; + assume {:verifier.code 0} true; + assume ($i740 == 1); + goto $bb446; +$bb446: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 602, 9} true; + assume {:verifier.code 0} true; + $i743 := $add.i32($i737, 1); + call {:cexpr "c"} boogie_si_record_i32($i743); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 603, 5} true; + assume {:verifier.code 0} true; + $i742 := $i743; + goto $bb450; +$bb447: + assume !(($i740 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 20} true; + assume {:verifier.code 0} true; + $i741 := $sgt.i32($i736, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 9} true; + assume {:verifier.code 0} true; + $i742 := $i737; + assume {:branchcond $i741} true; + goto $bb448, $bb449; +$bb448: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 9} true; + assume {:verifier.code 0} true; + assume ($i741 == 1); + goto $bb446; +$bb449: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 9} true; + assume {:verifier.code 0} true; + assume !(($i741 == 1)); + goto $bb450; +$bb450: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 604, 3} true; + assume {:verifier.code 0} true; + $i739 := $i742; + goto $bb444; +$bb451: + assume ($i753 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 11} true; + assume {:verifier.code 0} true; + $i755 := $slt.i32($i751, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i755} true; + goto $bb454, $bb456; +$bb452: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 611, 7} true; + assume {:verifier.code 0} true; + assume !(($i753 == 1)); + goto $bb453; +$bb453: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 616, 7} true; + assume {:verifier.code 0} true; + $i759 := $sext.i32.i64($i747); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 616, 9} true; + assume {:verifier.code 0} true; + $i760 := $srem.i64($i759, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 616, 7} true; + assume {:verifier.code 0} true; + $i761 := $trunc.i64.i32($i760); + call {:cexpr "a"} boogie_si_record_i32($i761); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 617, 5} true; + assume {:verifier.code 0} true; + $i762 := $add.i32($i761, $i761); + call {:cexpr "a"} boogie_si_record_i32($i762); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 618, 7} true; + assume {:verifier.code 0} true; + $i763 := $sext.i32.i64($i751); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 618, 9} true; + assume {:verifier.code 0} true; + $i764 := $srem.i64($i763, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 618, 7} true; + assume {:verifier.code 0} true; + $i765 := $trunc.i64.i32($i764); + call {:cexpr "b"} boogie_si_record_i32($i765); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 619, 5} true; + assume {:verifier.code 0} true; + $i766 := $add.i32($i765, $i765); + call {:cexpr "b"} boogie_si_record_i32($i766); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 621, 5} true; + assume {:verifier.code 0} true; + $i767 := $add.i32($i754, $i754); + call {:cexpr "c"} boogie_si_record_i32($i767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 622, 9} true; + assume {:verifier.code 0} true; + $i768 := $slt.i32($i762, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 622, 7} true; + assume {:verifier.code 0} true; + $i769 := $i767; + assume {:branchcond $i768} true; + goto $bb460, $bb461; +$bb454: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 15} true; + assume {:verifier.code 0} true; + assume ($i755 == 1); + goto $bb455; +$bb455: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 613, 9} true; + assume {:verifier.code 0} true; + $i758 := $add.i32($i752, 1); + call {:cexpr "c"} boogie_si_record_i32($i758); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 614, 5} true; + assume {:verifier.code 0} true; + $i757 := $i758; + goto $bb459; +$bb456: + assume !(($i755 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 20} true; + assume {:verifier.code 0} true; + $i756 := $sgt.i32($i751, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 9} true; + assume {:verifier.code 0} true; + $i757 := $i752; + assume {:branchcond $i756} true; + goto $bb457, $bb458; +$bb457: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 9} true; + assume {:verifier.code 0} true; + assume ($i756 == 1); + goto $bb455; +$bb458: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 9} true; + assume {:verifier.code 0} true; + assume !(($i756 == 1)); + goto $bb459; +$bb459: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 615, 3} true; + assume {:verifier.code 0} true; + $i754 := $i757; + goto $bb453; +$bb460: + assume ($i768 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 11} true; + assume {:verifier.code 0} true; + $i770 := $slt.i32($i766, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i770} true; + goto $bb463, $bb465; +$bb461: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 622, 7} true; + assume {:verifier.code 0} true; + assume !(($i768 == 1)); + goto $bb462; +$bb462: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 627, 7} true; + assume {:verifier.code 0} true; + $i774 := $sext.i32.i64($i762); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 627, 9} true; + assume {:verifier.code 0} true; + $i775 := $srem.i64($i774, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 627, 7} true; + assume {:verifier.code 0} true; + $i776 := $trunc.i64.i32($i775); + call {:cexpr "a"} boogie_si_record_i32($i776); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 628, 5} true; + assume {:verifier.code 0} true; + $i777 := $add.i32($i776, $i776); + call {:cexpr "a"} boogie_si_record_i32($i777); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 629, 7} true; + assume {:verifier.code 0} true; + $i778 := $sext.i32.i64($i766); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 629, 9} true; + assume {:verifier.code 0} true; + $i779 := $srem.i64($i778, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 629, 7} true; + assume {:verifier.code 0} true; + $i780 := $trunc.i64.i32($i779); + call {:cexpr "b"} boogie_si_record_i32($i780); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 630, 5} true; + assume {:verifier.code 0} true; + $i781 := $add.i32($i780, $i780); + call {:cexpr "b"} boogie_si_record_i32($i781); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 632, 5} true; + assume {:verifier.code 0} true; + $i782 := $add.i32($i769, $i769); + call {:cexpr "c"} boogie_si_record_i32($i782); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 633, 9} true; + assume {:verifier.code 0} true; + $i783 := $slt.i32($i777, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 633, 7} true; + assume {:verifier.code 0} true; + $i784 := $i782; + assume {:branchcond $i783} true; + goto $bb469, $bb470; +$bb463: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 15} true; + assume {:verifier.code 0} true; + assume ($i770 == 1); + goto $bb464; +$bb464: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 624, 9} true; + assume {:verifier.code 0} true; + $i773 := $add.i32($i767, 1); + call {:cexpr "c"} boogie_si_record_i32($i773); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 625, 5} true; + assume {:verifier.code 0} true; + $i772 := $i773; + goto $bb468; +$bb465: + assume !(($i770 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 20} true; + assume {:verifier.code 0} true; + $i771 := $sgt.i32($i766, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 9} true; + assume {:verifier.code 0} true; + $i772 := $i767; + assume {:branchcond $i771} true; + goto $bb466, $bb467; +$bb466: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 9} true; + assume {:verifier.code 0} true; + assume ($i771 == 1); + goto $bb464; +$bb467: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 9} true; + assume {:verifier.code 0} true; + assume !(($i771 == 1)); + goto $bb468; +$bb468: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 626, 3} true; + assume {:verifier.code 0} true; + $i769 := $i772; + goto $bb462; +$bb469: + assume ($i783 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 11} true; + assume {:verifier.code 0} true; + $i785 := $slt.i32($i781, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i785} true; + goto $bb472, $bb474; +$bb470: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 633, 7} true; + assume {:verifier.code 0} true; + assume !(($i783 == 1)); + goto $bb471; +$bb471: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 638, 7} true; + assume {:verifier.code 0} true; + $i789 := $sext.i32.i64($i777); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 638, 9} true; + assume {:verifier.code 0} true; + $i790 := $srem.i64($i789, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 638, 7} true; + assume {:verifier.code 0} true; + $i791 := $trunc.i64.i32($i790); + call {:cexpr "a"} boogie_si_record_i32($i791); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 639, 5} true; + assume {:verifier.code 0} true; + $i792 := $add.i32($i791, $i791); + call {:cexpr "a"} boogie_si_record_i32($i792); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 640, 7} true; + assume {:verifier.code 0} true; + $i793 := $sext.i32.i64($i781); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 640, 9} true; + assume {:verifier.code 0} true; + $i794 := $srem.i64($i793, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 640, 7} true; + assume {:verifier.code 0} true; + $i795 := $trunc.i64.i32($i794); + call {:cexpr "b"} boogie_si_record_i32($i795); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 641, 5} true; + assume {:verifier.code 0} true; + $i796 := $add.i32($i795, $i795); + call {:cexpr "b"} boogie_si_record_i32($i796); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 643, 5} true; + assume {:verifier.code 0} true; + $i797 := $add.i32($i784, $i784); + call {:cexpr "c"} boogie_si_record_i32($i797); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 644, 9} true; + assume {:verifier.code 0} true; + $i798 := $slt.i32($i792, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 644, 7} true; + assume {:verifier.code 0} true; + $i799 := $i797; + assume {:branchcond $i798} true; + goto $bb478, $bb479; +$bb472: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 15} true; + assume {:verifier.code 0} true; + assume ($i785 == 1); + goto $bb473; +$bb473: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 635, 9} true; + assume {:verifier.code 0} true; + $i788 := $add.i32($i782, 1); + call {:cexpr "c"} boogie_si_record_i32($i788); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 636, 5} true; + assume {:verifier.code 0} true; + $i787 := $i788; + goto $bb477; +$bb474: + assume !(($i785 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 20} true; + assume {:verifier.code 0} true; + $i786 := $sgt.i32($i781, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 9} true; + assume {:verifier.code 0} true; + $i787 := $i782; + assume {:branchcond $i786} true; + goto $bb475, $bb476; +$bb475: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 9} true; + assume {:verifier.code 0} true; + assume ($i786 == 1); + goto $bb473; +$bb476: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 9} true; + assume {:verifier.code 0} true; + assume !(($i786 == 1)); + goto $bb477; +$bb477: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 637, 3} true; + assume {:verifier.code 0} true; + $i784 := $i787; + goto $bb471; +$bb478: + assume ($i798 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 11} true; + assume {:verifier.code 0} true; + $i800 := $slt.i32($i796, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i800} true; + goto $bb481, $bb483; +$bb479: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 644, 7} true; + assume {:verifier.code 0} true; + assume !(($i798 == 1)); + goto $bb480; +$bb480: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 649, 7} true; + assume {:verifier.code 0} true; + $i804 := $sext.i32.i64($i792); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 649, 9} true; + assume {:verifier.code 0} true; + $i805 := $srem.i64($i804, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 649, 7} true; + assume {:verifier.code 0} true; + $i806 := $trunc.i64.i32($i805); + call {:cexpr "a"} boogie_si_record_i32($i806); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 650, 5} true; + assume {:verifier.code 0} true; + $i807 := $add.i32($i806, $i806); + call {:cexpr "a"} boogie_si_record_i32($i807); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 651, 7} true; + assume {:verifier.code 0} true; + $i808 := $sext.i32.i64($i796); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 651, 9} true; + assume {:verifier.code 0} true; + $i809 := $srem.i64($i808, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 651, 7} true; + assume {:verifier.code 0} true; + $i810 := $trunc.i64.i32($i809); + call {:cexpr "b"} boogie_si_record_i32($i810); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 652, 5} true; + assume {:verifier.code 0} true; + $i811 := $add.i32($i810, $i810); + call {:cexpr "b"} boogie_si_record_i32($i811); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 654, 5} true; + assume {:verifier.code 0} true; + $i812 := $add.i32($i799, $i799); + call {:cexpr "c"} boogie_si_record_i32($i812); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 655, 9} true; + assume {:verifier.code 0} true; + $i813 := $slt.i32($i807, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 655, 7} true; + assume {:verifier.code 0} true; + $i814 := $i812; + assume {:branchcond $i813} true; + goto $bb487, $bb488; +$bb481: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 15} true; + assume {:verifier.code 0} true; + assume ($i800 == 1); + goto $bb482; +$bb482: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 646, 9} true; + assume {:verifier.code 0} true; + $i803 := $add.i32($i797, 1); + call {:cexpr "c"} boogie_si_record_i32($i803); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 647, 5} true; + assume {:verifier.code 0} true; + $i802 := $i803; + goto $bb486; +$bb483: + assume !(($i800 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 20} true; + assume {:verifier.code 0} true; + $i801 := $sgt.i32($i796, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 9} true; + assume {:verifier.code 0} true; + $i802 := $i797; + assume {:branchcond $i801} true; + goto $bb484, $bb485; +$bb484: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 9} true; + assume {:verifier.code 0} true; + assume ($i801 == 1); + goto $bb482; +$bb485: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 9} true; + assume {:verifier.code 0} true; + assume !(($i801 == 1)); + goto $bb486; +$bb486: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 648, 3} true; + assume {:verifier.code 0} true; + $i799 := $i802; + goto $bb480; +$bb487: + assume ($i813 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 11} true; + assume {:verifier.code 0} true; + $i815 := $slt.i32($i811, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i815} true; + goto $bb490, $bb492; +$bb488: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 655, 7} true; + assume {:verifier.code 0} true; + assume !(($i813 == 1)); + goto $bb489; +$bb489: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 660, 7} true; + assume {:verifier.code 0} true; + $i819 := $sext.i32.i64($i807); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 660, 9} true; + assume {:verifier.code 0} true; + $i820 := $srem.i64($i819, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 660, 7} true; + assume {:verifier.code 0} true; + $i821 := $trunc.i64.i32($i820); + call {:cexpr "a"} boogie_si_record_i32($i821); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 661, 5} true; + assume {:verifier.code 0} true; + $i822 := $add.i32($i821, $i821); + call {:cexpr "a"} boogie_si_record_i32($i822); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 662, 7} true; + assume {:verifier.code 0} true; + $i823 := $sext.i32.i64($i811); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 662, 9} true; + assume {:verifier.code 0} true; + $i824 := $srem.i64($i823, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 662, 7} true; + assume {:verifier.code 0} true; + $i825 := $trunc.i64.i32($i824); + call {:cexpr "b"} boogie_si_record_i32($i825); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 663, 5} true; + assume {:verifier.code 0} true; + $i826 := $add.i32($i825, $i825); + call {:cexpr "b"} boogie_si_record_i32($i826); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 665, 5} true; + assume {:verifier.code 0} true; + $i827 := $add.i32($i814, $i814); + call {:cexpr "c"} boogie_si_record_i32($i827); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 666, 9} true; + assume {:verifier.code 0} true; + $i828 := $slt.i32($i822, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 666, 7} true; + assume {:verifier.code 0} true; + $i829 := $i827; + assume {:branchcond $i828} true; + goto $bb496, $bb497; +$bb490: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 15} true; + assume {:verifier.code 0} true; + assume ($i815 == 1); + goto $bb491; +$bb491: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 657, 9} true; + assume {:verifier.code 0} true; + $i818 := $add.i32($i812, 1); + call {:cexpr "c"} boogie_si_record_i32($i818); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 658, 5} true; + assume {:verifier.code 0} true; + $i817 := $i818; + goto $bb495; +$bb492: + assume !(($i815 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 20} true; + assume {:verifier.code 0} true; + $i816 := $sgt.i32($i811, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 9} true; + assume {:verifier.code 0} true; + $i817 := $i812; + assume {:branchcond $i816} true; + goto $bb493, $bb494; +$bb493: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 9} true; + assume {:verifier.code 0} true; + assume ($i816 == 1); + goto $bb491; +$bb494: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 9} true; + assume {:verifier.code 0} true; + assume !(($i816 == 1)); + goto $bb495; +$bb495: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 659, 3} true; + assume {:verifier.code 0} true; + $i814 := $i817; + goto $bb489; +$bb496: + assume ($i828 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 11} true; + assume {:verifier.code 0} true; + $i830 := $slt.i32($i826, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i830} true; + goto $bb499, $bb501; +$bb497: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 666, 7} true; + assume {:verifier.code 0} true; + assume !(($i828 == 1)); + goto $bb498; +$bb498: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 671, 7} true; + assume {:verifier.code 0} true; + $i834 := $sext.i32.i64($i822); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 671, 9} true; + assume {:verifier.code 0} true; + $i835 := $srem.i64($i834, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 671, 7} true; + assume {:verifier.code 0} true; + $i836 := $trunc.i64.i32($i835); + call {:cexpr "a"} boogie_si_record_i32($i836); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 672, 5} true; + assume {:verifier.code 0} true; + $i837 := $add.i32($i836, $i836); + call {:cexpr "a"} boogie_si_record_i32($i837); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 673, 7} true; + assume {:verifier.code 0} true; + $i838 := $sext.i32.i64($i826); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 673, 9} true; + assume {:verifier.code 0} true; + $i839 := $srem.i64($i838, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 673, 7} true; + assume {:verifier.code 0} true; + $i840 := $trunc.i64.i32($i839); + call {:cexpr "b"} boogie_si_record_i32($i840); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 674, 5} true; + assume {:verifier.code 0} true; + $i841 := $add.i32($i840, $i840); + call {:cexpr "b"} boogie_si_record_i32($i841); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 676, 5} true; + assume {:verifier.code 0} true; + $i842 := $add.i32($i829, $i829); + call {:cexpr "c"} boogie_si_record_i32($i842); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 677, 9} true; + assume {:verifier.code 0} true; + $i843 := $slt.i32($i837, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 677, 7} true; + assume {:verifier.code 0} true; + $i844 := $i842; + assume {:branchcond $i843} true; + goto $bb505, $bb506; +$bb499: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 15} true; + assume {:verifier.code 0} true; + assume ($i830 == 1); + goto $bb500; +$bb500: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 668, 9} true; + assume {:verifier.code 0} true; + $i833 := $add.i32($i827, 1); + call {:cexpr "c"} boogie_si_record_i32($i833); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 669, 5} true; + assume {:verifier.code 0} true; + $i832 := $i833; + goto $bb504; +$bb501: + assume !(($i830 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 20} true; + assume {:verifier.code 0} true; + $i831 := $sgt.i32($i826, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 9} true; + assume {:verifier.code 0} true; + $i832 := $i827; + assume {:branchcond $i831} true; + goto $bb502, $bb503; +$bb502: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 9} true; + assume {:verifier.code 0} true; + assume ($i831 == 1); + goto $bb500; +$bb503: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 9} true; + assume {:verifier.code 0} true; + assume !(($i831 == 1)); + goto $bb504; +$bb504: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 670, 3} true; + assume {:verifier.code 0} true; + $i829 := $i832; + goto $bb498; +$bb505: + assume ($i843 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 11} true; + assume {:verifier.code 0} true; + $i845 := $slt.i32($i841, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i845} true; + goto $bb508, $bb510; +$bb506: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 677, 7} true; + assume {:verifier.code 0} true; + assume !(($i843 == 1)); + goto $bb507; +$bb507: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 682, 7} true; + assume {:verifier.code 0} true; + $i849 := $sext.i32.i64($i837); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 682, 9} true; + assume {:verifier.code 0} true; + $i850 := $srem.i64($i849, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 682, 7} true; + assume {:verifier.code 0} true; + $i851 := $trunc.i64.i32($i850); + call {:cexpr "a"} boogie_si_record_i32($i851); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 683, 5} true; + assume {:verifier.code 0} true; + $i852 := $add.i32($i851, $i851); + call {:cexpr "a"} boogie_si_record_i32($i852); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 684, 7} true; + assume {:verifier.code 0} true; + $i853 := $sext.i32.i64($i841); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 684, 9} true; + assume {:verifier.code 0} true; + $i854 := $srem.i64($i853, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 684, 7} true; + assume {:verifier.code 0} true; + $i855 := $trunc.i64.i32($i854); + call {:cexpr "b"} boogie_si_record_i32($i855); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 685, 5} true; + assume {:verifier.code 0} true; + $i856 := $add.i32($i855, $i855); + call {:cexpr "b"} boogie_si_record_i32($i856); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 687, 5} true; + assume {:verifier.code 0} true; + $i857 := $add.i32($i844, $i844); + call {:cexpr "c"} boogie_si_record_i32($i857); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 688, 9} true; + assume {:verifier.code 0} true; + $i858 := $slt.i32($i852, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 688, 7} true; + assume {:verifier.code 0} true; + $i859 := $i857; + assume {:branchcond $i858} true; + goto $bb514, $bb515; +$bb508: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 15} true; + assume {:verifier.code 0} true; + assume ($i845 == 1); + goto $bb509; +$bb509: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 679, 9} true; + assume {:verifier.code 0} true; + $i848 := $add.i32($i842, 1); + call {:cexpr "c"} boogie_si_record_i32($i848); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 680, 5} true; + assume {:verifier.code 0} true; + $i847 := $i848; + goto $bb513; +$bb510: + assume !(($i845 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 20} true; + assume {:verifier.code 0} true; + $i846 := $sgt.i32($i841, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 9} true; + assume {:verifier.code 0} true; + $i847 := $i842; + assume {:branchcond $i846} true; + goto $bb511, $bb512; +$bb511: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 9} true; + assume {:verifier.code 0} true; + assume ($i846 == 1); + goto $bb509; +$bb512: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 9} true; + assume {:verifier.code 0} true; + assume !(($i846 == 1)); + goto $bb513; +$bb513: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 681, 3} true; + assume {:verifier.code 0} true; + $i844 := $i847; + goto $bb507; +$bb514: + assume ($i858 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 11} true; + assume {:verifier.code 0} true; + $i860 := $slt.i32($i856, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i860} true; + goto $bb517, $bb519; +$bb515: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 688, 7} true; + assume {:verifier.code 0} true; + assume !(($i858 == 1)); + goto $bb516; +$bb516: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 693, 7} true; + assume {:verifier.code 0} true; + $i864 := $sext.i32.i64($i852); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 693, 9} true; + assume {:verifier.code 0} true; + $i865 := $srem.i64($i864, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 693, 7} true; + assume {:verifier.code 0} true; + $i866 := $trunc.i64.i32($i865); + call {:cexpr "a"} boogie_si_record_i32($i866); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 694, 5} true; + assume {:verifier.code 0} true; + $i867 := $add.i32($i866, $i866); + call {:cexpr "a"} boogie_si_record_i32($i867); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 695, 7} true; + assume {:verifier.code 0} true; + $i868 := $sext.i32.i64($i856); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 695, 9} true; + assume {:verifier.code 0} true; + $i869 := $srem.i64($i868, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 695, 7} true; + assume {:verifier.code 0} true; + $i870 := $trunc.i64.i32($i869); + call {:cexpr "b"} boogie_si_record_i32($i870); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 696, 5} true; + assume {:verifier.code 0} true; + $i871 := $add.i32($i870, $i870); + call {:cexpr "b"} boogie_si_record_i32($i871); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 698, 5} true; + assume {:verifier.code 0} true; + $i872 := $add.i32($i859, $i859); + call {:cexpr "c"} boogie_si_record_i32($i872); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 699, 9} true; + assume {:verifier.code 0} true; + $i873 := $slt.i32($i867, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 699, 7} true; + assume {:verifier.code 0} true; + $i874 := $i872; + assume {:branchcond $i873} true; + goto $bb523, $bb524; +$bb517: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 15} true; + assume {:verifier.code 0} true; + assume ($i860 == 1); + goto $bb518; +$bb518: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 690, 9} true; + assume {:verifier.code 0} true; + $i863 := $add.i32($i857, 1); + call {:cexpr "c"} boogie_si_record_i32($i863); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 691, 5} true; + assume {:verifier.code 0} true; + $i862 := $i863; + goto $bb522; +$bb519: + assume !(($i860 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 20} true; + assume {:verifier.code 0} true; + $i861 := $sgt.i32($i856, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 9} true; + assume {:verifier.code 0} true; + $i862 := $i857; + assume {:branchcond $i861} true; + goto $bb520, $bb521; +$bb520: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 9} true; + assume {:verifier.code 0} true; + assume ($i861 == 1); + goto $bb518; +$bb521: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 9} true; + assume {:verifier.code 0} true; + assume !(($i861 == 1)); + goto $bb522; +$bb522: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 692, 3} true; + assume {:verifier.code 0} true; + $i859 := $i862; + goto $bb516; +$bb523: + assume ($i873 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 11} true; + assume {:verifier.code 0} true; + $i875 := $slt.i32($i871, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i875} true; + goto $bb526, $bb528; +$bb524: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 699, 7} true; + assume {:verifier.code 0} true; + assume !(($i873 == 1)); + goto $bb525; +$bb525: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 704, 7} true; + assume {:verifier.code 0} true; + $i879 := $sext.i32.i64($i867); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 704, 9} true; + assume {:verifier.code 0} true; + $i880 := $srem.i64($i879, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 704, 7} true; + assume {:verifier.code 0} true; + $i881 := $trunc.i64.i32($i880); + call {:cexpr "a"} boogie_si_record_i32($i881); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 705, 5} true; + assume {:verifier.code 0} true; + $i882 := $add.i32($i881, $i881); + call {:cexpr "a"} boogie_si_record_i32($i882); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 706, 7} true; + assume {:verifier.code 0} true; + $i883 := $sext.i32.i64($i871); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 706, 9} true; + assume {:verifier.code 0} true; + $i884 := $srem.i64($i883, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 706, 7} true; + assume {:verifier.code 0} true; + $i885 := $trunc.i64.i32($i884); + call {:cexpr "b"} boogie_si_record_i32($i885); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 707, 5} true; + assume {:verifier.code 0} true; + $i886 := $add.i32($i885, $i885); + call {:cexpr "b"} boogie_si_record_i32($i886); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 709, 5} true; + assume {:verifier.code 0} true; + $i887 := $add.i32($i874, $i874); + call {:cexpr "c"} boogie_si_record_i32($i887); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 710, 9} true; + assume {:verifier.code 0} true; + $i888 := $slt.i32($i882, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 710, 7} true; + assume {:verifier.code 0} true; + $i889 := $i887; + assume {:branchcond $i888} true; + goto $bb532, $bb533; +$bb526: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 15} true; + assume {:verifier.code 0} true; + assume ($i875 == 1); + goto $bb527; +$bb527: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 701, 9} true; + assume {:verifier.code 0} true; + $i878 := $add.i32($i872, 1); + call {:cexpr "c"} boogie_si_record_i32($i878); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 702, 5} true; + assume {:verifier.code 0} true; + $i877 := $i878; + goto $bb531; +$bb528: + assume !(($i875 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 20} true; + assume {:verifier.code 0} true; + $i876 := $sgt.i32($i871, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 9} true; + assume {:verifier.code 0} true; + $i877 := $i872; + assume {:branchcond $i876} true; + goto $bb529, $bb530; +$bb529: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 9} true; + assume {:verifier.code 0} true; + assume ($i876 == 1); + goto $bb527; +$bb530: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 9} true; + assume {:verifier.code 0} true; + assume !(($i876 == 1)); + goto $bb531; +$bb531: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 703, 3} true; + assume {:verifier.code 0} true; + $i874 := $i877; + goto $bb525; +$bb532: + assume ($i888 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 11} true; + assume {:verifier.code 0} true; + $i890 := $slt.i32($i886, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i890} true; + goto $bb535, $bb537; +$bb533: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 710, 7} true; + assume {:verifier.code 0} true; + assume !(($i888 == 1)); + goto $bb534; +$bb534: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 715, 7} true; + assume {:verifier.code 0} true; + $i894 := $sext.i32.i64($i882); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 715, 9} true; + assume {:verifier.code 0} true; + $i895 := $srem.i64($i894, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 715, 7} true; + assume {:verifier.code 0} true; + $i896 := $trunc.i64.i32($i895); + call {:cexpr "a"} boogie_si_record_i32($i896); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 716, 5} true; + assume {:verifier.code 0} true; + $i897 := $add.i32($i896, $i896); + call {:cexpr "a"} boogie_si_record_i32($i897); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 717, 7} true; + assume {:verifier.code 0} true; + $i898 := $sext.i32.i64($i886); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 717, 9} true; + assume {:verifier.code 0} true; + $i899 := $srem.i64($i898, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 717, 7} true; + assume {:verifier.code 0} true; + $i900 := $trunc.i64.i32($i899); + call {:cexpr "b"} boogie_si_record_i32($i900); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 718, 5} true; + assume {:verifier.code 0} true; + $i901 := $add.i32($i900, $i900); + call {:cexpr "b"} boogie_si_record_i32($i901); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 720, 5} true; + assume {:verifier.code 0} true; + $i902 := $add.i32($i889, $i889); + call {:cexpr "c"} boogie_si_record_i32($i902); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 721, 9} true; + assume {:verifier.code 0} true; + $i903 := $slt.i32($i897, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 721, 7} true; + assume {:verifier.code 0} true; + $i904 := $i902; + assume {:branchcond $i903} true; + goto $bb541, $bb542; +$bb535: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 15} true; + assume {:verifier.code 0} true; + assume ($i890 == 1); + goto $bb536; +$bb536: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 712, 9} true; + assume {:verifier.code 0} true; + $i893 := $add.i32($i887, 1); + call {:cexpr "c"} boogie_si_record_i32($i893); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 713, 5} true; + assume {:verifier.code 0} true; + $i892 := $i893; + goto $bb540; +$bb537: + assume !(($i890 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 20} true; + assume {:verifier.code 0} true; + $i891 := $sgt.i32($i886, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 9} true; + assume {:verifier.code 0} true; + $i892 := $i887; + assume {:branchcond $i891} true; + goto $bb538, $bb539; +$bb538: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 9} true; + assume {:verifier.code 0} true; + assume ($i891 == 1); + goto $bb536; +$bb539: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 9} true; + assume {:verifier.code 0} true; + assume !(($i891 == 1)); + goto $bb540; +$bb540: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 714, 3} true; + assume {:verifier.code 0} true; + $i889 := $i892; + goto $bb534; +$bb541: + assume ($i903 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 11} true; + assume {:verifier.code 0} true; + $i905 := $slt.i32($i901, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i905} true; + goto $bb544, $bb546; +$bb542: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 721, 7} true; + assume {:verifier.code 0} true; + assume !(($i903 == 1)); + goto $bb543; +$bb543: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 726, 7} true; + assume {:verifier.code 0} true; + $i909 := $sext.i32.i64($i897); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 726, 9} true; + assume {:verifier.code 0} true; + $i910 := $srem.i64($i909, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 726, 7} true; + assume {:verifier.code 0} true; + $i911 := $trunc.i64.i32($i910); + call {:cexpr "a"} boogie_si_record_i32($i911); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 727, 5} true; + assume {:verifier.code 0} true; + $i912 := $add.i32($i911, $i911); + call {:cexpr "a"} boogie_si_record_i32($i912); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 728, 7} true; + assume {:verifier.code 0} true; + $i913 := $sext.i32.i64($i901); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 728, 9} true; + assume {:verifier.code 0} true; + $i914 := $srem.i64($i913, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 728, 7} true; + assume {:verifier.code 0} true; + $i915 := $trunc.i64.i32($i914); + call {:cexpr "b"} boogie_si_record_i32($i915); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 729, 5} true; + assume {:verifier.code 0} true; + $i916 := $add.i32($i915, $i915); + call {:cexpr "b"} boogie_si_record_i32($i916); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 731, 5} true; + assume {:verifier.code 0} true; + $i917 := $add.i32($i904, $i904); + call {:cexpr "c"} boogie_si_record_i32($i917); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 732, 9} true; + assume {:verifier.code 0} true; + $i918 := $slt.i32($i912, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 732, 7} true; + assume {:verifier.code 0} true; + $i919 := $i917; + assume {:branchcond $i918} true; + goto $bb550, $bb551; +$bb544: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 15} true; + assume {:verifier.code 0} true; + assume ($i905 == 1); + goto $bb545; +$bb545: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 723, 9} true; + assume {:verifier.code 0} true; + $i908 := $add.i32($i902, 1); + call {:cexpr "c"} boogie_si_record_i32($i908); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 724, 5} true; + assume {:verifier.code 0} true; + $i907 := $i908; + goto $bb549; +$bb546: + assume !(($i905 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 20} true; + assume {:verifier.code 0} true; + $i906 := $sgt.i32($i901, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 9} true; + assume {:verifier.code 0} true; + $i907 := $i902; + assume {:branchcond $i906} true; + goto $bb547, $bb548; +$bb547: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 9} true; + assume {:verifier.code 0} true; + assume ($i906 == 1); + goto $bb545; +$bb548: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 9} true; + assume {:verifier.code 0} true; + assume !(($i906 == 1)); + goto $bb549; +$bb549: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 725, 3} true; + assume {:verifier.code 0} true; + $i904 := $i907; + goto $bb543; +$bb550: + assume ($i918 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 11} true; + assume {:verifier.code 0} true; + $i920 := $slt.i32($i916, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i920} true; + goto $bb553, $bb555; +$bb551: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 732, 7} true; + assume {:verifier.code 0} true; + assume !(($i918 == 1)); + goto $bb552; +$bb552: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 737, 7} true; + assume {:verifier.code 0} true; + $i924 := $sext.i32.i64($i912); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 737, 9} true; + assume {:verifier.code 0} true; + $i925 := $srem.i64($i924, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 737, 7} true; + assume {:verifier.code 0} true; + $i926 := $trunc.i64.i32($i925); + call {:cexpr "a"} boogie_si_record_i32($i926); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 738, 5} true; + assume {:verifier.code 0} true; + $i927 := $add.i32($i926, $i926); + call {:cexpr "a"} boogie_si_record_i32($i927); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 739, 7} true; + assume {:verifier.code 0} true; + $i928 := $sext.i32.i64($i916); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 739, 9} true; + assume {:verifier.code 0} true; + $i929 := $srem.i64($i928, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 739, 7} true; + assume {:verifier.code 0} true; + $i930 := $trunc.i64.i32($i929); + call {:cexpr "b"} boogie_si_record_i32($i930); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 740, 5} true; + assume {:verifier.code 0} true; + $i931 := $add.i32($i930, $i930); + call {:cexpr "b"} boogie_si_record_i32($i931); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 742, 5} true; + assume {:verifier.code 0} true; + $i932 := $add.i32($i919, $i919); + call {:cexpr "c"} boogie_si_record_i32($i932); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 743, 9} true; + assume {:verifier.code 0} true; + $i933 := $slt.i32($i927, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 743, 7} true; + assume {:verifier.code 0} true; + $i934 := $i932; + assume {:branchcond $i933} true; + goto $bb559, $bb560; +$bb553: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 15} true; + assume {:verifier.code 0} true; + assume ($i920 == 1); + goto $bb554; +$bb554: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 734, 9} true; + assume {:verifier.code 0} true; + $i923 := $add.i32($i917, 1); + call {:cexpr "c"} boogie_si_record_i32($i923); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 735, 5} true; + assume {:verifier.code 0} true; + $i922 := $i923; + goto $bb558; +$bb555: + assume !(($i920 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 20} true; + assume {:verifier.code 0} true; + $i921 := $sgt.i32($i916, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 9} true; + assume {:verifier.code 0} true; + $i922 := $i917; + assume {:branchcond $i921} true; + goto $bb556, $bb557; +$bb556: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 9} true; + assume {:verifier.code 0} true; + assume ($i921 == 1); + goto $bb554; +$bb557: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 9} true; + assume {:verifier.code 0} true; + assume !(($i921 == 1)); + goto $bb558; +$bb558: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 736, 3} true; + assume {:verifier.code 0} true; + $i919 := $i922; + goto $bb552; +$bb559: + assume ($i933 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 11} true; + assume {:verifier.code 0} true; + $i935 := $slt.i32($i931, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i935} true; + goto $bb562, $bb564; +$bb560: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 743, 7} true; + assume {:verifier.code 0} true; + assume !(($i933 == 1)); + goto $bb561; +$bb561: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 748, 7} true; + assume {:verifier.code 0} true; + $i939 := $sext.i32.i64($i927); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 748, 9} true; + assume {:verifier.code 0} true; + $i940 := $srem.i64($i939, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 748, 7} true; + assume {:verifier.code 0} true; + $i941 := $trunc.i64.i32($i940); + call {:cexpr "a"} boogie_si_record_i32($i941); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 749, 5} true; + assume {:verifier.code 0} true; + $i942 := $add.i32($i941, $i941); + call {:cexpr "a"} boogie_si_record_i32($i942); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 750, 7} true; + assume {:verifier.code 0} true; + $i943 := $sext.i32.i64($i931); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 750, 9} true; + assume {:verifier.code 0} true; + $i944 := $srem.i64($i943, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 750, 7} true; + assume {:verifier.code 0} true; + $i945 := $trunc.i64.i32($i944); + call {:cexpr "b"} boogie_si_record_i32($i945); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 751, 5} true; + assume {:verifier.code 0} true; + $i946 := $add.i32($i945, $i945); + call {:cexpr "b"} boogie_si_record_i32($i946); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 753, 5} true; + assume {:verifier.code 0} true; + $i947 := $add.i32($i934, $i934); + call {:cexpr "c"} boogie_si_record_i32($i947); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 754, 9} true; + assume {:verifier.code 0} true; + $i948 := $slt.i32($i942, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 754, 7} true; + assume {:verifier.code 0} true; + $i949 := $i947; + assume {:branchcond $i948} true; + goto $bb568, $bb569; +$bb562: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 15} true; + assume {:verifier.code 0} true; + assume ($i935 == 1); + goto $bb563; +$bb563: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 745, 9} true; + assume {:verifier.code 0} true; + $i938 := $add.i32($i932, 1); + call {:cexpr "c"} boogie_si_record_i32($i938); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 746, 5} true; + assume {:verifier.code 0} true; + $i937 := $i938; + goto $bb567; +$bb564: + assume !(($i935 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 20} true; + assume {:verifier.code 0} true; + $i936 := $sgt.i32($i931, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 9} true; + assume {:verifier.code 0} true; + $i937 := $i932; + assume {:branchcond $i936} true; + goto $bb565, $bb566; +$bb565: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 9} true; + assume {:verifier.code 0} true; + assume ($i936 == 1); + goto $bb563; +$bb566: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 9} true; + assume {:verifier.code 0} true; + assume !(($i936 == 1)); + goto $bb567; +$bb567: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 747, 3} true; + assume {:verifier.code 0} true; + $i934 := $i937; + goto $bb561; +$bb568: + assume ($i948 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 11} true; + assume {:verifier.code 0} true; + $i950 := $slt.i32($i946, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i950} true; + goto $bb571, $bb573; +$bb569: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 754, 7} true; + assume {:verifier.code 0} true; + assume !(($i948 == 1)); + goto $bb570; +$bb570: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 764, 3} true; + assume {:verifier.code 0} true; + $r := $i949; + $exn := false; + return; +$bb571: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 15} true; + assume {:verifier.code 0} true; + assume ($i950 == 1); + goto $bb572; +$bb572: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 756, 9} true; + assume {:verifier.code 0} true; + $i953 := $add.i32($i947, 1); + call {:cexpr "c"} boogie_si_record_i32($i953); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 757, 5} true; + assume {:verifier.code 0} true; + $i952 := $i953; + goto $bb576; +$bb573: + assume !(($i950 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 20} true; + assume {:verifier.code 0} true; + $i951 := $sgt.i32($i946, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 9} true; + assume {:verifier.code 0} true; + $i952 := $i947; + assume {:branchcond $i951} true; + goto $bb574, $bb575; +$bb574: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 9} true; + assume {:verifier.code 0} true; + assume ($i951 == 1); + goto $bb572; +$bb575: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 9} true; + assume {:verifier.code 0} true; + assume !(($i951 == 1)); + goto $bb576; +$bb576: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 758, 3} true; + assume {:verifier.code 0} true; + $i949 := $i952; + goto $bb570; +} +const __SMACK_and64: ref; +axiom (__SMACK_and64 == $sub.ref(0, 18572)); +procedure __SMACK_and64($i0: i64, $i1: i64) + returns ($r: i64) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i64; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 65} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_and64:arg:a"} boogie_si_record_i64($i0); + call {:cexpr "__SMACK_and64:arg:b"} boogie_si_record_i64($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 65} true; + assume {:verifier.code 1} true; + $i2 := $trunc.i64.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 68} true; + assume {:verifier.code 1} true; + $i3 := $trunc.i64.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 51} true; + assume {:verifier.code 1} true; + call $i4 := __SMACK_and32($i2, $i3); + call {:cexpr "smack:ext:__SMACK_and32"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 45} true; + assume {:verifier.code 0} true; + $i5 := $sext.i32.i64($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 38} true; + assume {:verifier.code 0} true; + $r := $i5; + $exn := false; + return; +} +const __SMACK_and16: ref; +axiom (__SMACK_and16 == $sub.ref(0, 19604)); +procedure __SMACK_and16($i0: i16, $i1: i16) + returns ($r: i16) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i16; + var $i6: i32; + var $i7: i1; + var $i9: i32; + var $i10: i1; + var $i11: i32; + var $i12: i1; + var $i14: i32; + var $i15: i32; + var $i16: i16; + var $i13: i16; + var $i8: i16; + var $i17: i32; + var $i18: i32; + var $i19: i16; + var $i20: i32; + var $i21: i32; + var $i22: i32; + var $i23: i16; + var $i24: i32; + var $i25: i32; + var $i26: i16; + var $i27: i32; + var $i28: i32; + var $i29: i32; + var $i30: i16; + var $i31: i32; + var $i32: i32; + var $i33: i32; + var $i34: i16; + var $i35: i32; + var $i36: i1; + var $i38: i32; + var $i39: i1; + var $i40: i32; + var $i41: i1; + var $i43: i32; + var $i44: i32; + var $i45: i16; + var $i42: i16; + var $i37: i16; + var $i46: i32; + var $i47: i32; + var $i48: i16; + var $i49: i32; + var $i50: i32; + var $i51: i32; + var $i52: i16; + var $i53: i32; + var $i54: i32; + var $i55: i16; + var $i56: i32; + var $i57: i32; + var $i58: i32; + var $i59: i16; + var $i60: i32; + var $i61: i32; + var $i62: i32; + var $i63: i16; + var $i64: i32; + var $i65: i1; + var $i67: i32; + var $i68: i1; + var $i69: i32; + var $i70: i1; + var $i72: i32; + var $i73: i32; + var $i74: i16; + var $i71: i16; + var $i66: i16; + var $i75: i32; + var $i76: i32; + var $i77: i16; + var $i78: i32; + var $i79: i32; + var $i80: i32; + var $i81: i16; + var $i82: i32; + var $i83: i32; + var $i84: i16; + var $i85: i32; + var $i86: i32; + var $i87: i32; + var $i88: i16; + var $i89: i32; + var $i90: i32; + var $i91: i32; + var $i92: i16; + var $i93: i32; + var $i94: i1; + var $i96: i32; + var $i97: i1; + var $i98: i32; + var $i99: i1; + var $i101: i32; + var $i102: i32; + var $i103: i16; + var $i100: i16; + var $i95: i16; + var $i104: i32; + var $i105: i32; + var $i106: i16; + var $i107: i32; + var $i108: i32; + var $i109: i32; + var $i110: i16; + var $i111: i32; + var $i112: i32; + var $i113: i16; + var $i114: i32; + var $i115: i32; + var $i116: i32; + var $i117: i16; + var $i118: i32; + var $i119: i32; + var $i120: i32; + var $i121: i16; + var $i122: i32; + var $i123: i1; + var $i125: i32; + var $i126: i1; + var $i127: i32; + var $i128: i1; + var $i130: i32; + var $i131: i32; + var $i132: i16; + var $i129: i16; + var $i124: i16; + var $i133: i32; + var $i134: i32; + var $i135: i16; + var $i136: i32; + var $i137: i32; + var $i138: i32; + var $i139: i16; + var $i140: i32; + var $i141: i32; + var $i142: i16; + var $i143: i32; + var $i144: i32; + var $i145: i32; + var $i146: i16; + var $i147: i32; + var $i148: i32; + var $i149: i32; + var $i150: i16; + var $i151: i32; + var $i152: i1; + var $i154: i32; + var $i155: i1; + var $i156: i32; + var $i157: i1; + var $i159: i32; + var $i160: i32; + var $i161: i16; + var $i158: i16; + var $i153: i16; + var $i162: i32; + var $i163: i32; + var $i164: i16; + var $i165: i32; + var $i166: i32; + var $i167: i32; + var $i168: i16; + var $i169: i32; + var $i170: i32; + var $i171: i16; + var $i172: i32; + var $i173: i32; + var $i174: i32; + var $i175: i16; + var $i176: i32; + var $i177: i32; + var $i178: i32; + var $i179: i16; + var $i180: i32; + var $i181: i1; + var $i183: i32; + var $i184: i1; + var $i185: i32; + var $i186: i1; + var $i188: i32; + var $i189: i32; + var $i190: i16; + var $i187: i16; + var $i182: i16; + var $i191: i32; + var $i192: i32; + var $i193: i16; + var $i194: i32; + var $i195: i32; + var $i196: i32; + var $i197: i16; + var $i198: i32; + var $i199: i32; + var $i200: i16; + var $i201: i32; + var $i202: i32; + var $i203: i32; + var $i204: i16; + var $i205: i32; + var $i206: i32; + var $i207: i32; + var $i208: i16; + var $i209: i32; + var $i210: i1; + var $i212: i32; + var $i213: i1; + var $i214: i32; + var $i215: i1; + var $i217: i32; + var $i218: i32; + var $i219: i16; + var $i216: i16; + var $i211: i16; + var $i220: i32; + var $i221: i32; + var $i222: i16; + var $i223: i32; + var $i224: i32; + var $i225: i32; + var $i226: i16; + var $i227: i32; + var $i228: i32; + var $i229: i16; + var $i230: i32; + var $i231: i32; + var $i232: i32; + var $i233: i16; + var $i234: i32; + var $i235: i32; + var $i236: i32; + var $i237: i16; + var $i238: i32; + var $i239: i1; + var $i241: i32; + var $i242: i1; + var $i243: i32; + var $i244: i1; + var $i246: i32; + var $i247: i32; + var $i248: i16; + var $i245: i16; + var $i240: i16; + var $i249: i32; + var $i250: i32; + var $i251: i16; + var $i252: i32; + var $i253: i32; + var $i254: i32; + var $i255: i16; + var $i256: i32; + var $i257: i32; + var $i258: i16; + var $i259: i32; + var $i260: i32; + var $i261: i32; + var $i262: i16; + var $i263: i32; + var $i264: i32; + var $i265: i32; + var $i266: i16; + var $i267: i32; + var $i268: i1; + var $i270: i32; + var $i271: i1; + var $i272: i32; + var $i273: i1; + var $i275: i32; + var $i276: i32; + var $i277: i16; + var $i274: i16; + var $i269: i16; + var $i278: i32; + var $i279: i32; + var $i280: i16; + var $i281: i32; + var $i282: i32; + var $i283: i32; + var $i284: i16; + var $i285: i32; + var $i286: i32; + var $i287: i16; + var $i288: i32; + var $i289: i32; + var $i290: i32; + var $i291: i16; + var $i292: i32; + var $i293: i32; + var $i294: i32; + var $i295: i16; + var $i296: i32; + var $i297: i1; + var $i299: i32; + var $i300: i1; + var $i301: i32; + var $i302: i1; + var $i304: i32; + var $i305: i32; + var $i306: i16; + var $i303: i16; + var $i298: i16; + var $i307: i32; + var $i308: i32; + var $i309: i16; + var $i310: i32; + var $i311: i32; + var $i312: i32; + var $i313: i16; + var $i314: i32; + var $i315: i32; + var $i316: i16; + var $i317: i32; + var $i318: i32; + var $i319: i32; + var $i320: i16; + var $i321: i32; + var $i322: i32; + var $i323: i32; + var $i324: i16; + var $i325: i32; + var $i326: i1; + var $i328: i32; + var $i329: i1; + var $i330: i32; + var $i331: i1; + var $i333: i32; + var $i334: i32; + var $i335: i16; + var $i332: i16; + var $i327: i16; + var $i336: i32; + var $i337: i32; + var $i338: i16; + var $i339: i32; + var $i340: i32; + var $i341: i32; + var $i342: i16; + var $i343: i32; + var $i344: i32; + var $i345: i16; + var $i346: i32; + var $i347: i32; + var $i348: i32; + var $i349: i16; + var $i350: i32; + var $i351: i32; + var $i352: i32; + var $i353: i16; + var $i354: i32; + var $i355: i1; + var $i357: i32; + var $i358: i1; + var $i359: i32; + var $i360: i1; + var $i362: i32; + var $i363: i32; + var $i364: i16; + var $i361: i16; + var $i356: i16; + var $i365: i32; + var $i366: i32; + var $i367: i16; + var $i368: i32; + var $i369: i32; + var $i370: i32; + var $i371: i16; + var $i372: i32; + var $i373: i32; + var $i374: i16; + var $i375: i32; + var $i376: i32; + var $i377: i32; + var $i378: i16; + var $i379: i32; + var $i380: i32; + var $i381: i32; + var $i382: i16; + var $i383: i32; + var $i384: i1; + var $i386: i32; + var $i387: i1; + var $i388: i32; + var $i389: i1; + var $i391: i32; + var $i392: i32; + var $i393: i16; + var $i390: i16; + var $i385: i16; + var $i394: i32; + var $i395: i32; + var $i396: i16; + var $i397: i32; + var $i398: i32; + var $i399: i32; + var $i400: i16; + var $i401: i32; + var $i402: i32; + var $i403: i16; + var $i404: i32; + var $i405: i32; + var $i406: i32; + var $i407: i16; + var $i408: i32; + var $i409: i32; + var $i410: i32; + var $i411: i16; + var $i412: i32; + var $i413: i1; + var $i415: i32; + var $i416: i1; + var $i417: i32; + var $i418: i1; + var $i420: i32; + var $i421: i32; + var $i422: i16; + var $i419: i16; + var $i414: i16; + var $i423: i32; + var $i424: i32; + var $i425: i16; + var $i426: i32; + var $i427: i32; + var $i428: i32; + var $i429: i16; + var $i430: i32; + var $i431: i32; + var $i432: i16; + var $i433: i32; + var $i434: i32; + var $i435: i32; + var $i436: i16; + var $i437: i32; + var $i438: i32; + var $i439: i32; + var $i440: i16; + var $i441: i32; + var $i442: i1; + var $i444: i32; + var $i445: i1; + var $i446: i32; + var $i447: i1; + var $i449: i32; + var $i450: i32; + var $i451: i16; + var $i448: i16; + var $i443: i16; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 8} true; + assume {:verifier.code 0} true; + call {:cexpr "__SMACK_and16:arg:a"} boogie_si_record_i16($i0); + call {:cexpr "__SMACK_and16:arg:b"} boogie_si_record_i16($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 8} true; + assume {:verifier.code 0} true; + $i2 := $sext.i16.i32(0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 5} true; + assume {:verifier.code 0} true; + $i3 := $sext.i16.i32(0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 5} true; + assume {:verifier.code 0} true; + $i4 := $add.i32($i3, $i2); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 5} true; + assume {:verifier.code 0} true; + $i5 := $trunc.i32.i16($i4); + call {:cexpr "c"} boogie_si_record_i16($i5); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 773, 7} true; + assume {:verifier.code 0} true; + $i6 := $sext.i16.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 773, 9} true; + assume {:verifier.code 0} true; + $i7 := $slt.i32($i6, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 773, 7} true; + assume {:verifier.code 0} true; + $i8 := $i5; + assume {:branchcond $i7} true; + goto $bb1, $bb2; +$bb1: + assume ($i7 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 9} true; + assume {:verifier.code 0} true; + $i9 := $sext.i16.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 11} true; + assume {:verifier.code 0} true; + $i10 := $slt.i32($i9, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i10} true; + goto $bb4, $bb6; +$bb2: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 773, 7} true; + assume {:verifier.code 0} true; + assume !(($i7 == 1)); + goto $bb3; +$bb3: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 778, 7} true; + assume {:verifier.code 0} true; + $i17 := $sext.i16.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 778, 9} true; + assume {:verifier.code 0} true; + $i18 := $srem.i32($i17, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 778, 7} true; + assume {:verifier.code 0} true; + $i19 := $trunc.i32.i16($i18); + call {:cexpr "a"} boogie_si_record_i16($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 779, 8} true; + assume {:verifier.code 0} true; + $i20 := $sext.i16.i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 779, 5} true; + assume {:verifier.code 0} true; + $i21 := $sext.i16.i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 779, 5} true; + assume {:verifier.code 0} true; + $i22 := $add.i32($i21, $i20); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 779, 5} true; + assume {:verifier.code 0} true; + $i23 := $trunc.i32.i16($i22); + call {:cexpr "a"} boogie_si_record_i16($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 780, 7} true; + assume {:verifier.code 0} true; + $i24 := $sext.i16.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 780, 9} true; + assume {:verifier.code 0} true; + $i25 := $srem.i32($i24, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 780, 7} true; + assume {:verifier.code 0} true; + $i26 := $trunc.i32.i16($i25); + call {:cexpr "b"} boogie_si_record_i16($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 781, 8} true; + assume {:verifier.code 0} true; + $i27 := $sext.i16.i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 781, 5} true; + assume {:verifier.code 0} true; + $i28 := $sext.i16.i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 781, 5} true; + assume {:verifier.code 0} true; + $i29 := $add.i32($i28, $i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 781, 5} true; + assume {:verifier.code 0} true; + $i30 := $trunc.i32.i16($i29); + call {:cexpr "b"} boogie_si_record_i16($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 783, 8} true; + assume {:verifier.code 0} true; + $i31 := $sext.i16.i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 783, 5} true; + assume {:verifier.code 0} true; + $i32 := $sext.i16.i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 783, 5} true; + assume {:verifier.code 0} true; + $i33 := $add.i32($i32, $i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 783, 5} true; + assume {:verifier.code 0} true; + $i34 := $trunc.i32.i16($i33); + call {:cexpr "c"} boogie_si_record_i16($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 784, 7} true; + assume {:verifier.code 0} true; + $i35 := $sext.i16.i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 784, 9} true; + assume {:verifier.code 0} true; + $i36 := $slt.i32($i35, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 784, 7} true; + assume {:verifier.code 0} true; + $i37 := $i34; + assume {:branchcond $i36} true; + goto $bb10, $bb11; +$bb4: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 15} true; + assume {:verifier.code 0} true; + assume ($i10 == 1); + goto $bb5; +$bb5: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 775, 9} true; + assume {:verifier.code 0} true; + $i14 := $sext.i16.i32($i5); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 775, 9} true; + assume {:verifier.code 0} true; + $i15 := $add.i32($i14, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 775, 9} true; + assume {:verifier.code 0} true; + $i16 := $trunc.i32.i16($i15); + call {:cexpr "c"} boogie_si_record_i16($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 776, 5} true; + assume {:verifier.code 0} true; + $i13 := $i16; + goto $bb9; +$bb6: + assume !(($i10 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 18} true; + assume {:verifier.code 0} true; + $i11 := $sext.i16.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 20} true; + assume {:verifier.code 0} true; + $i12 := $sgt.i32($i11, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 9} true; + assume {:verifier.code 0} true; + $i13 := $i5; + assume {:branchcond $i12} true; + goto $bb7, $bb8; +$bb7: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 9} true; + assume {:verifier.code 0} true; + assume ($i12 == 1); + goto $bb5; +$bb8: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 9} true; + assume {:verifier.code 0} true; + assume !(($i12 == 1)); + goto $bb9; +$bb9: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 777, 3} true; + assume {:verifier.code 0} true; + $i8 := $i13; + goto $bb3; +$bb10: + assume ($i36 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 9} true; + assume {:verifier.code 0} true; + $i38 := $sext.i16.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 11} true; + assume {:verifier.code 0} true; + $i39 := $slt.i32($i38, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i39} true; + goto $bb13, $bb15; +$bb11: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 784, 7} true; + assume {:verifier.code 0} true; + assume !(($i36 == 1)); + goto $bb12; +$bb12: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 789, 7} true; + assume {:verifier.code 0} true; + $i46 := $sext.i16.i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 789, 9} true; + assume {:verifier.code 0} true; + $i47 := $srem.i32($i46, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 789, 7} true; + assume {:verifier.code 0} true; + $i48 := $trunc.i32.i16($i47); + call {:cexpr "a"} boogie_si_record_i16($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 790, 8} true; + assume {:verifier.code 0} true; + $i49 := $sext.i16.i32($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 790, 5} true; + assume {:verifier.code 0} true; + $i50 := $sext.i16.i32($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 790, 5} true; + assume {:verifier.code 0} true; + $i51 := $add.i32($i50, $i49); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 790, 5} true; + assume {:verifier.code 0} true; + $i52 := $trunc.i32.i16($i51); + call {:cexpr "a"} boogie_si_record_i16($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 791, 7} true; + assume {:verifier.code 0} true; + $i53 := $sext.i16.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 791, 9} true; + assume {:verifier.code 0} true; + $i54 := $srem.i32($i53, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 791, 7} true; + assume {:verifier.code 0} true; + $i55 := $trunc.i32.i16($i54); + call {:cexpr "b"} boogie_si_record_i16($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 792, 8} true; + assume {:verifier.code 0} true; + $i56 := $sext.i16.i32($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 792, 5} true; + assume {:verifier.code 0} true; + $i57 := $sext.i16.i32($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 792, 5} true; + assume {:verifier.code 0} true; + $i58 := $add.i32($i57, $i56); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 792, 5} true; + assume {:verifier.code 0} true; + $i59 := $trunc.i32.i16($i58); + call {:cexpr "b"} boogie_si_record_i16($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 794, 8} true; + assume {:verifier.code 0} true; + $i60 := $sext.i16.i32($i37); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 794, 5} true; + assume {:verifier.code 0} true; + $i61 := $sext.i16.i32($i37); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 794, 5} true; + assume {:verifier.code 0} true; + $i62 := $add.i32($i61, $i60); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 794, 5} true; + assume {:verifier.code 0} true; + $i63 := $trunc.i32.i16($i62); + call {:cexpr "c"} boogie_si_record_i16($i63); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 795, 7} true; + assume {:verifier.code 0} true; + $i64 := $sext.i16.i32($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 795, 9} true; + assume {:verifier.code 0} true; + $i65 := $slt.i32($i64, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 795, 7} true; + assume {:verifier.code 0} true; + $i66 := $i63; + assume {:branchcond $i65} true; + goto $bb19, $bb20; +$bb13: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 15} true; + assume {:verifier.code 0} true; + assume ($i39 == 1); + goto $bb14; +$bb14: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 786, 9} true; + assume {:verifier.code 0} true; + $i43 := $sext.i16.i32($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 786, 9} true; + assume {:verifier.code 0} true; + $i44 := $add.i32($i43, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 786, 9} true; + assume {:verifier.code 0} true; + $i45 := $trunc.i32.i16($i44); + call {:cexpr "c"} boogie_si_record_i16($i45); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 787, 5} true; + assume {:verifier.code 0} true; + $i42 := $i45; + goto $bb18; +$bb15: + assume !(($i39 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 18} true; + assume {:verifier.code 0} true; + $i40 := $sext.i16.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 20} true; + assume {:verifier.code 0} true; + $i41 := $sgt.i32($i40, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 9} true; + assume {:verifier.code 0} true; + $i42 := $i34; + assume {:branchcond $i41} true; + goto $bb16, $bb17; +$bb16: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 9} true; + assume {:verifier.code 0} true; + assume ($i41 == 1); + goto $bb14; +$bb17: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 9} true; + assume {:verifier.code 0} true; + assume !(($i41 == 1)); + goto $bb18; +$bb18: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 788, 3} true; + assume {:verifier.code 0} true; + $i37 := $i42; + goto $bb12; +$bb19: + assume ($i65 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 9} true; + assume {:verifier.code 0} true; + $i67 := $sext.i16.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 11} true; + assume {:verifier.code 0} true; + $i68 := $slt.i32($i67, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i68} true; + goto $bb22, $bb24; +$bb20: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 795, 7} true; + assume {:verifier.code 0} true; + assume !(($i65 == 1)); + goto $bb21; +$bb21: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 800, 7} true; + assume {:verifier.code 0} true; + $i75 := $sext.i16.i32($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 800, 9} true; + assume {:verifier.code 0} true; + $i76 := $srem.i32($i75, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 800, 7} true; + assume {:verifier.code 0} true; + $i77 := $trunc.i32.i16($i76); + call {:cexpr "a"} boogie_si_record_i16($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 801, 8} true; + assume {:verifier.code 0} true; + $i78 := $sext.i16.i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 801, 5} true; + assume {:verifier.code 0} true; + $i79 := $sext.i16.i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 801, 5} true; + assume {:verifier.code 0} true; + $i80 := $add.i32($i79, $i78); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 801, 5} true; + assume {:verifier.code 0} true; + $i81 := $trunc.i32.i16($i80); + call {:cexpr "a"} boogie_si_record_i16($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 802, 7} true; + assume {:verifier.code 0} true; + $i82 := $sext.i16.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 802, 9} true; + assume {:verifier.code 0} true; + $i83 := $srem.i32($i82, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 802, 7} true; + assume {:verifier.code 0} true; + $i84 := $trunc.i32.i16($i83); + call {:cexpr "b"} boogie_si_record_i16($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 803, 8} true; + assume {:verifier.code 0} true; + $i85 := $sext.i16.i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 803, 5} true; + assume {:verifier.code 0} true; + $i86 := $sext.i16.i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 803, 5} true; + assume {:verifier.code 0} true; + $i87 := $add.i32($i86, $i85); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 803, 5} true; + assume {:verifier.code 0} true; + $i88 := $trunc.i32.i16($i87); + call {:cexpr "b"} boogie_si_record_i16($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 805, 8} true; + assume {:verifier.code 0} true; + $i89 := $sext.i16.i32($i66); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 805, 5} true; + assume {:verifier.code 0} true; + $i90 := $sext.i16.i32($i66); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 805, 5} true; + assume {:verifier.code 0} true; + $i91 := $add.i32($i90, $i89); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 805, 5} true; + assume {:verifier.code 0} true; + $i92 := $trunc.i32.i16($i91); + call {:cexpr "c"} boogie_si_record_i16($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 806, 7} true; + assume {:verifier.code 0} true; + $i93 := $sext.i16.i32($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 806, 9} true; + assume {:verifier.code 0} true; + $i94 := $slt.i32($i93, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 806, 7} true; + assume {:verifier.code 0} true; + $i95 := $i92; + assume {:branchcond $i94} true; + goto $bb28, $bb29; +$bb22: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 15} true; + assume {:verifier.code 0} true; + assume ($i68 == 1); + goto $bb23; +$bb23: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 797, 9} true; + assume {:verifier.code 0} true; + $i72 := $sext.i16.i32($i63); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 797, 9} true; + assume {:verifier.code 0} true; + $i73 := $add.i32($i72, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 797, 9} true; + assume {:verifier.code 0} true; + $i74 := $trunc.i32.i16($i73); + call {:cexpr "c"} boogie_si_record_i16($i74); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 798, 5} true; + assume {:verifier.code 0} true; + $i71 := $i74; + goto $bb27; +$bb24: + assume !(($i68 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 18} true; + assume {:verifier.code 0} true; + $i69 := $sext.i16.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 20} true; + assume {:verifier.code 0} true; + $i70 := $sgt.i32($i69, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 9} true; + assume {:verifier.code 0} true; + $i71 := $i63; + assume {:branchcond $i70} true; + goto $bb25, $bb26; +$bb25: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 9} true; + assume {:verifier.code 0} true; + assume ($i70 == 1); + goto $bb23; +$bb26: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 9} true; + assume {:verifier.code 0} true; + assume !(($i70 == 1)); + goto $bb27; +$bb27: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 799, 3} true; + assume {:verifier.code 0} true; + $i66 := $i71; + goto $bb21; +$bb28: + assume ($i94 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 9} true; + assume {:verifier.code 0} true; + $i96 := $sext.i16.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 11} true; + assume {:verifier.code 0} true; + $i97 := $slt.i32($i96, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i97} true; + goto $bb31, $bb33; +$bb29: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 806, 7} true; + assume {:verifier.code 0} true; + assume !(($i94 == 1)); + goto $bb30; +$bb30: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 811, 7} true; + assume {:verifier.code 0} true; + $i104 := $sext.i16.i32($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 811, 9} true; + assume {:verifier.code 0} true; + $i105 := $srem.i32($i104, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 811, 7} true; + assume {:verifier.code 0} true; + $i106 := $trunc.i32.i16($i105); + call {:cexpr "a"} boogie_si_record_i16($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 812, 8} true; + assume {:verifier.code 0} true; + $i107 := $sext.i16.i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 812, 5} true; + assume {:verifier.code 0} true; + $i108 := $sext.i16.i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 812, 5} true; + assume {:verifier.code 0} true; + $i109 := $add.i32($i108, $i107); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 812, 5} true; + assume {:verifier.code 0} true; + $i110 := $trunc.i32.i16($i109); + call {:cexpr "a"} boogie_si_record_i16($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 813, 7} true; + assume {:verifier.code 0} true; + $i111 := $sext.i16.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 813, 9} true; + assume {:verifier.code 0} true; + $i112 := $srem.i32($i111, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 813, 7} true; + assume {:verifier.code 0} true; + $i113 := $trunc.i32.i16($i112); + call {:cexpr "b"} boogie_si_record_i16($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 814, 8} true; + assume {:verifier.code 0} true; + $i114 := $sext.i16.i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 814, 5} true; + assume {:verifier.code 0} true; + $i115 := $sext.i16.i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 814, 5} true; + assume {:verifier.code 0} true; + $i116 := $add.i32($i115, $i114); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 814, 5} true; + assume {:verifier.code 0} true; + $i117 := $trunc.i32.i16($i116); + call {:cexpr "b"} boogie_si_record_i16($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 816, 8} true; + assume {:verifier.code 0} true; + $i118 := $sext.i16.i32($i95); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 816, 5} true; + assume {:verifier.code 0} true; + $i119 := $sext.i16.i32($i95); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 816, 5} true; + assume {:verifier.code 0} true; + $i120 := $add.i32($i119, $i118); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 816, 5} true; + assume {:verifier.code 0} true; + $i121 := $trunc.i32.i16($i120); + call {:cexpr "c"} boogie_si_record_i16($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 817, 7} true; + assume {:verifier.code 0} true; + $i122 := $sext.i16.i32($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 817, 9} true; + assume {:verifier.code 0} true; + $i123 := $slt.i32($i122, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 817, 7} true; + assume {:verifier.code 0} true; + $i124 := $i121; + assume {:branchcond $i123} true; + goto $bb37, $bb38; +$bb31: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 15} true; + assume {:verifier.code 0} true; + assume ($i97 == 1); + goto $bb32; +$bb32: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 808, 9} true; + assume {:verifier.code 0} true; + $i101 := $sext.i16.i32($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 808, 9} true; + assume {:verifier.code 0} true; + $i102 := $add.i32($i101, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 808, 9} true; + assume {:verifier.code 0} true; + $i103 := $trunc.i32.i16($i102); + call {:cexpr "c"} boogie_si_record_i16($i103); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 809, 5} true; + assume {:verifier.code 0} true; + $i100 := $i103; + goto $bb36; +$bb33: + assume !(($i97 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 18} true; + assume {:verifier.code 0} true; + $i98 := $sext.i16.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 20} true; + assume {:verifier.code 0} true; + $i99 := $sgt.i32($i98, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 9} true; + assume {:verifier.code 0} true; + $i100 := $i92; + assume {:branchcond $i99} true; + goto $bb34, $bb35; +$bb34: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 9} true; + assume {:verifier.code 0} true; + assume ($i99 == 1); + goto $bb32; +$bb35: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 9} true; + assume {:verifier.code 0} true; + assume !(($i99 == 1)); + goto $bb36; +$bb36: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 810, 3} true; + assume {:verifier.code 0} true; + $i95 := $i100; + goto $bb30; +$bb37: + assume ($i123 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 9} true; + assume {:verifier.code 0} true; + $i125 := $sext.i16.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 11} true; + assume {:verifier.code 0} true; + $i126 := $slt.i32($i125, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i126} true; + goto $bb40, $bb42; +$bb38: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 817, 7} true; + assume {:verifier.code 0} true; + assume !(($i123 == 1)); + goto $bb39; +$bb39: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 822, 7} true; + assume {:verifier.code 0} true; + $i133 := $sext.i16.i32($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 822, 9} true; + assume {:verifier.code 0} true; + $i134 := $srem.i32($i133, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 822, 7} true; + assume {:verifier.code 0} true; + $i135 := $trunc.i32.i16($i134); + call {:cexpr "a"} boogie_si_record_i16($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 823, 8} true; + assume {:verifier.code 0} true; + $i136 := $sext.i16.i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 823, 5} true; + assume {:verifier.code 0} true; + $i137 := $sext.i16.i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 823, 5} true; + assume {:verifier.code 0} true; + $i138 := $add.i32($i137, $i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 823, 5} true; + assume {:verifier.code 0} true; + $i139 := $trunc.i32.i16($i138); + call {:cexpr "a"} boogie_si_record_i16($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 824, 7} true; + assume {:verifier.code 0} true; + $i140 := $sext.i16.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 824, 9} true; + assume {:verifier.code 0} true; + $i141 := $srem.i32($i140, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 824, 7} true; + assume {:verifier.code 0} true; + $i142 := $trunc.i32.i16($i141); + call {:cexpr "b"} boogie_si_record_i16($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 825, 8} true; + assume {:verifier.code 0} true; + $i143 := $sext.i16.i32($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 825, 5} true; + assume {:verifier.code 0} true; + $i144 := $sext.i16.i32($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 825, 5} true; + assume {:verifier.code 0} true; + $i145 := $add.i32($i144, $i143); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 825, 5} true; + assume {:verifier.code 0} true; + $i146 := $trunc.i32.i16($i145); + call {:cexpr "b"} boogie_si_record_i16($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 827, 8} true; + assume {:verifier.code 0} true; + $i147 := $sext.i16.i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 827, 5} true; + assume {:verifier.code 0} true; + $i148 := $sext.i16.i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 827, 5} true; + assume {:verifier.code 0} true; + $i149 := $add.i32($i148, $i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 827, 5} true; + assume {:verifier.code 0} true; + $i150 := $trunc.i32.i16($i149); + call {:cexpr "c"} boogie_si_record_i16($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 828, 7} true; + assume {:verifier.code 0} true; + $i151 := $sext.i16.i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 828, 9} true; + assume {:verifier.code 0} true; + $i152 := $slt.i32($i151, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 828, 7} true; + assume {:verifier.code 0} true; + $i153 := $i150; + assume {:branchcond $i152} true; + goto $bb46, $bb47; +$bb40: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 15} true; + assume {:verifier.code 0} true; + assume ($i126 == 1); + goto $bb41; +$bb41: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 819, 9} true; + assume {:verifier.code 0} true; + $i130 := $sext.i16.i32($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 819, 9} true; + assume {:verifier.code 0} true; + $i131 := $add.i32($i130, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 819, 9} true; + assume {:verifier.code 0} true; + $i132 := $trunc.i32.i16($i131); + call {:cexpr "c"} boogie_si_record_i16($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 820, 5} true; + assume {:verifier.code 0} true; + $i129 := $i132; + goto $bb45; +$bb42: + assume !(($i126 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 18} true; + assume {:verifier.code 0} true; + $i127 := $sext.i16.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 20} true; + assume {:verifier.code 0} true; + $i128 := $sgt.i32($i127, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 9} true; + assume {:verifier.code 0} true; + $i129 := $i121; + assume {:branchcond $i128} true; + goto $bb43, $bb44; +$bb43: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 9} true; + assume {:verifier.code 0} true; + assume ($i128 == 1); + goto $bb41; +$bb44: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 9} true; + assume {:verifier.code 0} true; + assume !(($i128 == 1)); + goto $bb45; +$bb45: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 821, 3} true; + assume {:verifier.code 0} true; + $i124 := $i129; + goto $bb39; +$bb46: + assume ($i152 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 9} true; + assume {:verifier.code 0} true; + $i154 := $sext.i16.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 11} true; + assume {:verifier.code 0} true; + $i155 := $slt.i32($i154, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i155} true; + goto $bb49, $bb51; +$bb47: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 828, 7} true; + assume {:verifier.code 0} true; + assume !(($i152 == 1)); + goto $bb48; +$bb48: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 833, 7} true; + assume {:verifier.code 0} true; + $i162 := $sext.i16.i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 833, 9} true; + assume {:verifier.code 0} true; + $i163 := $srem.i32($i162, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 833, 7} true; + assume {:verifier.code 0} true; + $i164 := $trunc.i32.i16($i163); + call {:cexpr "a"} boogie_si_record_i16($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 834, 8} true; + assume {:verifier.code 0} true; + $i165 := $sext.i16.i32($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 834, 5} true; + assume {:verifier.code 0} true; + $i166 := $sext.i16.i32($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 834, 5} true; + assume {:verifier.code 0} true; + $i167 := $add.i32($i166, $i165); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 834, 5} true; + assume {:verifier.code 0} true; + $i168 := $trunc.i32.i16($i167); + call {:cexpr "a"} boogie_si_record_i16($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 835, 7} true; + assume {:verifier.code 0} true; + $i169 := $sext.i16.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 835, 9} true; + assume {:verifier.code 0} true; + $i170 := $srem.i32($i169, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 835, 7} true; + assume {:verifier.code 0} true; + $i171 := $trunc.i32.i16($i170); + call {:cexpr "b"} boogie_si_record_i16($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 836, 8} true; + assume {:verifier.code 0} true; + $i172 := $sext.i16.i32($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 836, 5} true; + assume {:verifier.code 0} true; + $i173 := $sext.i16.i32($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 836, 5} true; + assume {:verifier.code 0} true; + $i174 := $add.i32($i173, $i172); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 836, 5} true; + assume {:verifier.code 0} true; + $i175 := $trunc.i32.i16($i174); + call {:cexpr "b"} boogie_si_record_i16($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 838, 8} true; + assume {:verifier.code 0} true; + $i176 := $sext.i16.i32($i153); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 838, 5} true; + assume {:verifier.code 0} true; + $i177 := $sext.i16.i32($i153); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 838, 5} true; + assume {:verifier.code 0} true; + $i178 := $add.i32($i177, $i176); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 838, 5} true; + assume {:verifier.code 0} true; + $i179 := $trunc.i32.i16($i178); + call {:cexpr "c"} boogie_si_record_i16($i179); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 839, 7} true; + assume {:verifier.code 0} true; + $i180 := $sext.i16.i32($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 839, 9} true; + assume {:verifier.code 0} true; + $i181 := $slt.i32($i180, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 839, 7} true; + assume {:verifier.code 0} true; + $i182 := $i179; + assume {:branchcond $i181} true; + goto $bb55, $bb56; +$bb49: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 15} true; + assume {:verifier.code 0} true; + assume ($i155 == 1); + goto $bb50; +$bb50: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 830, 9} true; + assume {:verifier.code 0} true; + $i159 := $sext.i16.i32($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 830, 9} true; + assume {:verifier.code 0} true; + $i160 := $add.i32($i159, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 830, 9} true; + assume {:verifier.code 0} true; + $i161 := $trunc.i32.i16($i160); + call {:cexpr "c"} boogie_si_record_i16($i161); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 831, 5} true; + assume {:verifier.code 0} true; + $i158 := $i161; + goto $bb54; +$bb51: + assume !(($i155 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 18} true; + assume {:verifier.code 0} true; + $i156 := $sext.i16.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 20} true; + assume {:verifier.code 0} true; + $i157 := $sgt.i32($i156, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 9} true; + assume {:verifier.code 0} true; + $i158 := $i150; + assume {:branchcond $i157} true; + goto $bb52, $bb53; +$bb52: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 9} true; + assume {:verifier.code 0} true; + assume ($i157 == 1); + goto $bb50; +$bb53: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 9} true; + assume {:verifier.code 0} true; + assume !(($i157 == 1)); + goto $bb54; +$bb54: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 832, 3} true; + assume {:verifier.code 0} true; + $i153 := $i158; + goto $bb48; +$bb55: + assume ($i181 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 9} true; + assume {:verifier.code 0} true; + $i183 := $sext.i16.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 11} true; + assume {:verifier.code 0} true; + $i184 := $slt.i32($i183, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i184} true; + goto $bb58, $bb60; +$bb56: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 839, 7} true; + assume {:verifier.code 0} true; + assume !(($i181 == 1)); + goto $bb57; +$bb57: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 844, 7} true; + assume {:verifier.code 0} true; + $i191 := $sext.i16.i32($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 844, 9} true; + assume {:verifier.code 0} true; + $i192 := $srem.i32($i191, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 844, 7} true; + assume {:verifier.code 0} true; + $i193 := $trunc.i32.i16($i192); + call {:cexpr "a"} boogie_si_record_i16($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 845, 8} true; + assume {:verifier.code 0} true; + $i194 := $sext.i16.i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 845, 5} true; + assume {:verifier.code 0} true; + $i195 := $sext.i16.i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 845, 5} true; + assume {:verifier.code 0} true; + $i196 := $add.i32($i195, $i194); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 845, 5} true; + assume {:verifier.code 0} true; + $i197 := $trunc.i32.i16($i196); + call {:cexpr "a"} boogie_si_record_i16($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 846, 7} true; + assume {:verifier.code 0} true; + $i198 := $sext.i16.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 846, 9} true; + assume {:verifier.code 0} true; + $i199 := $srem.i32($i198, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 846, 7} true; + assume {:verifier.code 0} true; + $i200 := $trunc.i32.i16($i199); + call {:cexpr "b"} boogie_si_record_i16($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 847, 8} true; + assume {:verifier.code 0} true; + $i201 := $sext.i16.i32($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 847, 5} true; + assume {:verifier.code 0} true; + $i202 := $sext.i16.i32($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 847, 5} true; + assume {:verifier.code 0} true; + $i203 := $add.i32($i202, $i201); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 847, 5} true; + assume {:verifier.code 0} true; + $i204 := $trunc.i32.i16($i203); + call {:cexpr "b"} boogie_si_record_i16($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 849, 8} true; + assume {:verifier.code 0} true; + $i205 := $sext.i16.i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 849, 5} true; + assume {:verifier.code 0} true; + $i206 := $sext.i16.i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 849, 5} true; + assume {:verifier.code 0} true; + $i207 := $add.i32($i206, $i205); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 849, 5} true; + assume {:verifier.code 0} true; + $i208 := $trunc.i32.i16($i207); + call {:cexpr "c"} boogie_si_record_i16($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 850, 7} true; + assume {:verifier.code 0} true; + $i209 := $sext.i16.i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 850, 9} true; + assume {:verifier.code 0} true; + $i210 := $slt.i32($i209, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 850, 7} true; + assume {:verifier.code 0} true; + $i211 := $i208; + assume {:branchcond $i210} true; + goto $bb64, $bb65; +$bb58: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 15} true; + assume {:verifier.code 0} true; + assume ($i184 == 1); + goto $bb59; +$bb59: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 841, 9} true; + assume {:verifier.code 0} true; + $i188 := $sext.i16.i32($i179); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 841, 9} true; + assume {:verifier.code 0} true; + $i189 := $add.i32($i188, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 841, 9} true; + assume {:verifier.code 0} true; + $i190 := $trunc.i32.i16($i189); + call {:cexpr "c"} boogie_si_record_i16($i190); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 842, 5} true; + assume {:verifier.code 0} true; + $i187 := $i190; + goto $bb63; +$bb60: + assume !(($i184 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 18} true; + assume {:verifier.code 0} true; + $i185 := $sext.i16.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 20} true; + assume {:verifier.code 0} true; + $i186 := $sgt.i32($i185, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 9} true; + assume {:verifier.code 0} true; + $i187 := $i179; + assume {:branchcond $i186} true; + goto $bb61, $bb62; +$bb61: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 9} true; + assume {:verifier.code 0} true; + assume ($i186 == 1); + goto $bb59; +$bb62: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 9} true; + assume {:verifier.code 0} true; + assume !(($i186 == 1)); + goto $bb63; +$bb63: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 843, 3} true; + assume {:verifier.code 0} true; + $i182 := $i187; + goto $bb57; +$bb64: + assume ($i210 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 9} true; + assume {:verifier.code 0} true; + $i212 := $sext.i16.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 11} true; + assume {:verifier.code 0} true; + $i213 := $slt.i32($i212, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i213} true; + goto $bb67, $bb69; +$bb65: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 850, 7} true; + assume {:verifier.code 0} true; + assume !(($i210 == 1)); + goto $bb66; +$bb66: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 855, 7} true; + assume {:verifier.code 0} true; + $i220 := $sext.i16.i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 855, 9} true; + assume {:verifier.code 0} true; + $i221 := $srem.i32($i220, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 855, 7} true; + assume {:verifier.code 0} true; + $i222 := $trunc.i32.i16($i221); + call {:cexpr "a"} boogie_si_record_i16($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 856, 8} true; + assume {:verifier.code 0} true; + $i223 := $sext.i16.i32($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 856, 5} true; + assume {:verifier.code 0} true; + $i224 := $sext.i16.i32($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 856, 5} true; + assume {:verifier.code 0} true; + $i225 := $add.i32($i224, $i223); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 856, 5} true; + assume {:verifier.code 0} true; + $i226 := $trunc.i32.i16($i225); + call {:cexpr "a"} boogie_si_record_i16($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 857, 7} true; + assume {:verifier.code 0} true; + $i227 := $sext.i16.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 857, 9} true; + assume {:verifier.code 0} true; + $i228 := $srem.i32($i227, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 857, 7} true; + assume {:verifier.code 0} true; + $i229 := $trunc.i32.i16($i228); + call {:cexpr "b"} boogie_si_record_i16($i229); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 858, 8} true; + assume {:verifier.code 0} true; + $i230 := $sext.i16.i32($i229); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 858, 5} true; + assume {:verifier.code 0} true; + $i231 := $sext.i16.i32($i229); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 858, 5} true; + assume {:verifier.code 0} true; + $i232 := $add.i32($i231, $i230); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 858, 5} true; + assume {:verifier.code 0} true; + $i233 := $trunc.i32.i16($i232); + call {:cexpr "b"} boogie_si_record_i16($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 860, 8} true; + assume {:verifier.code 0} true; + $i234 := $sext.i16.i32($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 860, 5} true; + assume {:verifier.code 0} true; + $i235 := $sext.i16.i32($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 860, 5} true; + assume {:verifier.code 0} true; + $i236 := $add.i32($i235, $i234); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 860, 5} true; + assume {:verifier.code 0} true; + $i237 := $trunc.i32.i16($i236); + call {:cexpr "c"} boogie_si_record_i16($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 861, 7} true; + assume {:verifier.code 0} true; + $i238 := $sext.i16.i32($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 861, 9} true; + assume {:verifier.code 0} true; + $i239 := $slt.i32($i238, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 861, 7} true; + assume {:verifier.code 0} true; + $i240 := $i237; + assume {:branchcond $i239} true; + goto $bb73, $bb74; +$bb67: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 15} true; + assume {:verifier.code 0} true; + assume ($i213 == 1); + goto $bb68; +$bb68: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 852, 9} true; + assume {:verifier.code 0} true; + $i217 := $sext.i16.i32($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 852, 9} true; + assume {:verifier.code 0} true; + $i218 := $add.i32($i217, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 852, 9} true; + assume {:verifier.code 0} true; + $i219 := $trunc.i32.i16($i218); + call {:cexpr "c"} boogie_si_record_i16($i219); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 853, 5} true; + assume {:verifier.code 0} true; + $i216 := $i219; + goto $bb72; +$bb69: + assume !(($i213 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 18} true; + assume {:verifier.code 0} true; + $i214 := $sext.i16.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 20} true; + assume {:verifier.code 0} true; + $i215 := $sgt.i32($i214, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 9} true; + assume {:verifier.code 0} true; + $i216 := $i208; + assume {:branchcond $i215} true; + goto $bb70, $bb71; +$bb70: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 9} true; + assume {:verifier.code 0} true; + assume ($i215 == 1); + goto $bb68; +$bb71: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 9} true; + assume {:verifier.code 0} true; + assume !(($i215 == 1)); + goto $bb72; +$bb72: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 854, 3} true; + assume {:verifier.code 0} true; + $i211 := $i216; + goto $bb66; +$bb73: + assume ($i239 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 9} true; + assume {:verifier.code 0} true; + $i241 := $sext.i16.i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 11} true; + assume {:verifier.code 0} true; + $i242 := $slt.i32($i241, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i242} true; + goto $bb76, $bb78; +$bb74: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 861, 7} true; + assume {:verifier.code 0} true; + assume !(($i239 == 1)); + goto $bb75; +$bb75: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 866, 7} true; + assume {:verifier.code 0} true; + $i249 := $sext.i16.i32($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 866, 9} true; + assume {:verifier.code 0} true; + $i250 := $srem.i32($i249, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 866, 7} true; + assume {:verifier.code 0} true; + $i251 := $trunc.i32.i16($i250); + call {:cexpr "a"} boogie_si_record_i16($i251); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 867, 8} true; + assume {:verifier.code 0} true; + $i252 := $sext.i16.i32($i251); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 867, 5} true; + assume {:verifier.code 0} true; + $i253 := $sext.i16.i32($i251); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 867, 5} true; + assume {:verifier.code 0} true; + $i254 := $add.i32($i253, $i252); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 867, 5} true; + assume {:verifier.code 0} true; + $i255 := $trunc.i32.i16($i254); + call {:cexpr "a"} boogie_si_record_i16($i255); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 868, 7} true; + assume {:verifier.code 0} true; + $i256 := $sext.i16.i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 868, 9} true; + assume {:verifier.code 0} true; + $i257 := $srem.i32($i256, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 868, 7} true; + assume {:verifier.code 0} true; + $i258 := $trunc.i32.i16($i257); + call {:cexpr "b"} boogie_si_record_i16($i258); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 869, 8} true; + assume {:verifier.code 0} true; + $i259 := $sext.i16.i32($i258); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 869, 5} true; + assume {:verifier.code 0} true; + $i260 := $sext.i16.i32($i258); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 869, 5} true; + assume {:verifier.code 0} true; + $i261 := $add.i32($i260, $i259); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 869, 5} true; + assume {:verifier.code 0} true; + $i262 := $trunc.i32.i16($i261); + call {:cexpr "b"} boogie_si_record_i16($i262); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 871, 8} true; + assume {:verifier.code 0} true; + $i263 := $sext.i16.i32($i240); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 871, 5} true; + assume {:verifier.code 0} true; + $i264 := $sext.i16.i32($i240); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 871, 5} true; + assume {:verifier.code 0} true; + $i265 := $add.i32($i264, $i263); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 871, 5} true; + assume {:verifier.code 0} true; + $i266 := $trunc.i32.i16($i265); + call {:cexpr "c"} boogie_si_record_i16($i266); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 872, 7} true; + assume {:verifier.code 0} true; + $i267 := $sext.i16.i32($i255); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 872, 9} true; + assume {:verifier.code 0} true; + $i268 := $slt.i32($i267, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 872, 7} true; + assume {:verifier.code 0} true; + $i269 := $i266; + assume {:branchcond $i268} true; + goto $bb82, $bb83; +$bb76: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 15} true; + assume {:verifier.code 0} true; + assume ($i242 == 1); + goto $bb77; +$bb77: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 863, 9} true; + assume {:verifier.code 0} true; + $i246 := $sext.i16.i32($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 863, 9} true; + assume {:verifier.code 0} true; + $i247 := $add.i32($i246, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 863, 9} true; + assume {:verifier.code 0} true; + $i248 := $trunc.i32.i16($i247); + call {:cexpr "c"} boogie_si_record_i16($i248); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 864, 5} true; + assume {:verifier.code 0} true; + $i245 := $i248; + goto $bb81; +$bb78: + assume !(($i242 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 18} true; + assume {:verifier.code 0} true; + $i243 := $sext.i16.i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 20} true; + assume {:verifier.code 0} true; + $i244 := $sgt.i32($i243, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 9} true; + assume {:verifier.code 0} true; + $i245 := $i237; + assume {:branchcond $i244} true; + goto $bb79, $bb80; +$bb79: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 9} true; + assume {:verifier.code 0} true; + assume ($i244 == 1); + goto $bb77; +$bb80: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 9} true; + assume {:verifier.code 0} true; + assume !(($i244 == 1)); + goto $bb81; +$bb81: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 865, 3} true; + assume {:verifier.code 0} true; + $i240 := $i245; + goto $bb75; +$bb82: + assume ($i268 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 9} true; + assume {:verifier.code 0} true; + $i270 := $sext.i16.i32($i262); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 11} true; + assume {:verifier.code 0} true; + $i271 := $slt.i32($i270, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i271} true; + goto $bb85, $bb87; +$bb83: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 872, 7} true; + assume {:verifier.code 0} true; + assume !(($i268 == 1)); + goto $bb84; +$bb84: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 877, 7} true; + assume {:verifier.code 0} true; + $i278 := $sext.i16.i32($i255); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 877, 9} true; + assume {:verifier.code 0} true; + $i279 := $srem.i32($i278, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 877, 7} true; + assume {:verifier.code 0} true; + $i280 := $trunc.i32.i16($i279); + call {:cexpr "a"} boogie_si_record_i16($i280); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 878, 8} true; + assume {:verifier.code 0} true; + $i281 := $sext.i16.i32($i280); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 878, 5} true; + assume {:verifier.code 0} true; + $i282 := $sext.i16.i32($i280); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 878, 5} true; + assume {:verifier.code 0} true; + $i283 := $add.i32($i282, $i281); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 878, 5} true; + assume {:verifier.code 0} true; + $i284 := $trunc.i32.i16($i283); + call {:cexpr "a"} boogie_si_record_i16($i284); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 879, 7} true; + assume {:verifier.code 0} true; + $i285 := $sext.i16.i32($i262); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 879, 9} true; + assume {:verifier.code 0} true; + $i286 := $srem.i32($i285, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 879, 7} true; + assume {:verifier.code 0} true; + $i287 := $trunc.i32.i16($i286); + call {:cexpr "b"} boogie_si_record_i16($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 880, 8} true; + assume {:verifier.code 0} true; + $i288 := $sext.i16.i32($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 880, 5} true; + assume {:verifier.code 0} true; + $i289 := $sext.i16.i32($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 880, 5} true; + assume {:verifier.code 0} true; + $i290 := $add.i32($i289, $i288); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 880, 5} true; + assume {:verifier.code 0} true; + $i291 := $trunc.i32.i16($i290); + call {:cexpr "b"} boogie_si_record_i16($i291); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 882, 8} true; + assume {:verifier.code 0} true; + $i292 := $sext.i16.i32($i269); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 882, 5} true; + assume {:verifier.code 0} true; + $i293 := $sext.i16.i32($i269); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 882, 5} true; + assume {:verifier.code 0} true; + $i294 := $add.i32($i293, $i292); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 882, 5} true; + assume {:verifier.code 0} true; + $i295 := $trunc.i32.i16($i294); + call {:cexpr "c"} boogie_si_record_i16($i295); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 883, 7} true; + assume {:verifier.code 0} true; + $i296 := $sext.i16.i32($i284); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 883, 9} true; + assume {:verifier.code 0} true; + $i297 := $slt.i32($i296, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 883, 7} true; + assume {:verifier.code 0} true; + $i298 := $i295; + assume {:branchcond $i297} true; + goto $bb91, $bb92; +$bb85: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 15} true; + assume {:verifier.code 0} true; + assume ($i271 == 1); + goto $bb86; +$bb86: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 874, 9} true; + assume {:verifier.code 0} true; + $i275 := $sext.i16.i32($i266); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 874, 9} true; + assume {:verifier.code 0} true; + $i276 := $add.i32($i275, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 874, 9} true; + assume {:verifier.code 0} true; + $i277 := $trunc.i32.i16($i276); + call {:cexpr "c"} boogie_si_record_i16($i277); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 875, 5} true; + assume {:verifier.code 0} true; + $i274 := $i277; + goto $bb90; +$bb87: + assume !(($i271 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 18} true; + assume {:verifier.code 0} true; + $i272 := $sext.i16.i32($i262); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 20} true; + assume {:verifier.code 0} true; + $i273 := $sgt.i32($i272, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 9} true; + assume {:verifier.code 0} true; + $i274 := $i266; + assume {:branchcond $i273} true; + goto $bb88, $bb89; +$bb88: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 9} true; + assume {:verifier.code 0} true; + assume ($i273 == 1); + goto $bb86; +$bb89: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 9} true; + assume {:verifier.code 0} true; + assume !(($i273 == 1)); + goto $bb90; +$bb90: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 876, 3} true; + assume {:verifier.code 0} true; + $i269 := $i274; + goto $bb84; +$bb91: + assume ($i297 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 9} true; + assume {:verifier.code 0} true; + $i299 := $sext.i16.i32($i291); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 11} true; + assume {:verifier.code 0} true; + $i300 := $slt.i32($i299, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i300} true; + goto $bb94, $bb96; +$bb92: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 883, 7} true; + assume {:verifier.code 0} true; + assume !(($i297 == 1)); + goto $bb93; +$bb93: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 888, 7} true; + assume {:verifier.code 0} true; + $i307 := $sext.i16.i32($i284); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 888, 9} true; + assume {:verifier.code 0} true; + $i308 := $srem.i32($i307, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 888, 7} true; + assume {:verifier.code 0} true; + $i309 := $trunc.i32.i16($i308); + call {:cexpr "a"} boogie_si_record_i16($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 889, 8} true; + assume {:verifier.code 0} true; + $i310 := $sext.i16.i32($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 889, 5} true; + assume {:verifier.code 0} true; + $i311 := $sext.i16.i32($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 889, 5} true; + assume {:verifier.code 0} true; + $i312 := $add.i32($i311, $i310); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 889, 5} true; + assume {:verifier.code 0} true; + $i313 := $trunc.i32.i16($i312); + call {:cexpr "a"} boogie_si_record_i16($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 890, 7} true; + assume {:verifier.code 0} true; + $i314 := $sext.i16.i32($i291); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 890, 9} true; + assume {:verifier.code 0} true; + $i315 := $srem.i32($i314, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 890, 7} true; + assume {:verifier.code 0} true; + $i316 := $trunc.i32.i16($i315); + call {:cexpr "b"} boogie_si_record_i16($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 891, 8} true; + assume {:verifier.code 0} true; + $i317 := $sext.i16.i32($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 891, 5} true; + assume {:verifier.code 0} true; + $i318 := $sext.i16.i32($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 891, 5} true; + assume {:verifier.code 0} true; + $i319 := $add.i32($i318, $i317); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 891, 5} true; + assume {:verifier.code 0} true; + $i320 := $trunc.i32.i16($i319); + call {:cexpr "b"} boogie_si_record_i16($i320); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 893, 8} true; + assume {:verifier.code 0} true; + $i321 := $sext.i16.i32($i298); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 893, 5} true; + assume {:verifier.code 0} true; + $i322 := $sext.i16.i32($i298); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 893, 5} true; + assume {:verifier.code 0} true; + $i323 := $add.i32($i322, $i321); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 893, 5} true; + assume {:verifier.code 0} true; + $i324 := $trunc.i32.i16($i323); + call {:cexpr "c"} boogie_si_record_i16($i324); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 894, 7} true; + assume {:verifier.code 0} true; + $i325 := $sext.i16.i32($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 894, 9} true; + assume {:verifier.code 0} true; + $i326 := $slt.i32($i325, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 894, 7} true; + assume {:verifier.code 0} true; + $i327 := $i324; + assume {:branchcond $i326} true; + goto $bb100, $bb101; +$bb94: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 15} true; + assume {:verifier.code 0} true; + assume ($i300 == 1); + goto $bb95; +$bb95: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 885, 9} true; + assume {:verifier.code 0} true; + $i304 := $sext.i16.i32($i295); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 885, 9} true; + assume {:verifier.code 0} true; + $i305 := $add.i32($i304, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 885, 9} true; + assume {:verifier.code 0} true; + $i306 := $trunc.i32.i16($i305); + call {:cexpr "c"} boogie_si_record_i16($i306); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 886, 5} true; + assume {:verifier.code 0} true; + $i303 := $i306; + goto $bb99; +$bb96: + assume !(($i300 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 18} true; + assume {:verifier.code 0} true; + $i301 := $sext.i16.i32($i291); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 20} true; + assume {:verifier.code 0} true; + $i302 := $sgt.i32($i301, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 9} true; + assume {:verifier.code 0} true; + $i303 := $i295; + assume {:branchcond $i302} true; + goto $bb97, $bb98; +$bb97: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 9} true; + assume {:verifier.code 0} true; + assume ($i302 == 1); + goto $bb95; +$bb98: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 9} true; + assume {:verifier.code 0} true; + assume !(($i302 == 1)); + goto $bb99; +$bb99: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 887, 3} true; + assume {:verifier.code 0} true; + $i298 := $i303; + goto $bb93; +$bb100: + assume ($i326 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 9} true; + assume {:verifier.code 0} true; + $i328 := $sext.i16.i32($i320); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 11} true; + assume {:verifier.code 0} true; + $i329 := $slt.i32($i328, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i329} true; + goto $bb103, $bb105; +$bb101: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 894, 7} true; + assume {:verifier.code 0} true; + assume !(($i326 == 1)); + goto $bb102; +$bb102: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 899, 7} true; + assume {:verifier.code 0} true; + $i336 := $sext.i16.i32($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 899, 9} true; + assume {:verifier.code 0} true; + $i337 := $srem.i32($i336, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 899, 7} true; + assume {:verifier.code 0} true; + $i338 := $trunc.i32.i16($i337); + call {:cexpr "a"} boogie_si_record_i16($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 900, 8} true; + assume {:verifier.code 0} true; + $i339 := $sext.i16.i32($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 900, 5} true; + assume {:verifier.code 0} true; + $i340 := $sext.i16.i32($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 900, 5} true; + assume {:verifier.code 0} true; + $i341 := $add.i32($i340, $i339); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 900, 5} true; + assume {:verifier.code 0} true; + $i342 := $trunc.i32.i16($i341); + call {:cexpr "a"} boogie_si_record_i16($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 901, 7} true; + assume {:verifier.code 0} true; + $i343 := $sext.i16.i32($i320); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 901, 9} true; + assume {:verifier.code 0} true; + $i344 := $srem.i32($i343, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 901, 7} true; + assume {:verifier.code 0} true; + $i345 := $trunc.i32.i16($i344); + call {:cexpr "b"} boogie_si_record_i16($i345); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 902, 8} true; + assume {:verifier.code 0} true; + $i346 := $sext.i16.i32($i345); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 902, 5} true; + assume {:verifier.code 0} true; + $i347 := $sext.i16.i32($i345); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 902, 5} true; + assume {:verifier.code 0} true; + $i348 := $add.i32($i347, $i346); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 902, 5} true; + assume {:verifier.code 0} true; + $i349 := $trunc.i32.i16($i348); + call {:cexpr "b"} boogie_si_record_i16($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 904, 8} true; + assume {:verifier.code 0} true; + $i350 := $sext.i16.i32($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 904, 5} true; + assume {:verifier.code 0} true; + $i351 := $sext.i16.i32($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 904, 5} true; + assume {:verifier.code 0} true; + $i352 := $add.i32($i351, $i350); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 904, 5} true; + assume {:verifier.code 0} true; + $i353 := $trunc.i32.i16($i352); + call {:cexpr "c"} boogie_si_record_i16($i353); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 905, 7} true; + assume {:verifier.code 0} true; + $i354 := $sext.i16.i32($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 905, 9} true; + assume {:verifier.code 0} true; + $i355 := $slt.i32($i354, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 905, 7} true; + assume {:verifier.code 0} true; + $i356 := $i353; + assume {:branchcond $i355} true; + goto $bb109, $bb110; +$bb103: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 15} true; + assume {:verifier.code 0} true; + assume ($i329 == 1); + goto $bb104; +$bb104: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 896, 9} true; + assume {:verifier.code 0} true; + $i333 := $sext.i16.i32($i324); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 896, 9} true; + assume {:verifier.code 0} true; + $i334 := $add.i32($i333, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 896, 9} true; + assume {:verifier.code 0} true; + $i335 := $trunc.i32.i16($i334); + call {:cexpr "c"} boogie_si_record_i16($i335); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 897, 5} true; + assume {:verifier.code 0} true; + $i332 := $i335; + goto $bb108; +$bb105: + assume !(($i329 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 18} true; + assume {:verifier.code 0} true; + $i330 := $sext.i16.i32($i320); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 20} true; + assume {:verifier.code 0} true; + $i331 := $sgt.i32($i330, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 9} true; + assume {:verifier.code 0} true; + $i332 := $i324; + assume {:branchcond $i331} true; + goto $bb106, $bb107; +$bb106: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 9} true; + assume {:verifier.code 0} true; + assume ($i331 == 1); + goto $bb104; +$bb107: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 9} true; + assume {:verifier.code 0} true; + assume !(($i331 == 1)); + goto $bb108; +$bb108: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 898, 3} true; + assume {:verifier.code 0} true; + $i327 := $i332; + goto $bb102; +$bb109: + assume ($i355 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 9} true; + assume {:verifier.code 0} true; + $i357 := $sext.i16.i32($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 11} true; + assume {:verifier.code 0} true; + $i358 := $slt.i32($i357, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i358} true; + goto $bb112, $bb114; +$bb110: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 905, 7} true; + assume {:verifier.code 0} true; + assume !(($i355 == 1)); + goto $bb111; +$bb111: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 910, 7} true; + assume {:verifier.code 0} true; + $i365 := $sext.i16.i32($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 910, 9} true; + assume {:verifier.code 0} true; + $i366 := $srem.i32($i365, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 910, 7} true; + assume {:verifier.code 0} true; + $i367 := $trunc.i32.i16($i366); + call {:cexpr "a"} boogie_si_record_i16($i367); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 911, 8} true; + assume {:verifier.code 0} true; + $i368 := $sext.i16.i32($i367); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 911, 5} true; + assume {:verifier.code 0} true; + $i369 := $sext.i16.i32($i367); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 911, 5} true; + assume {:verifier.code 0} true; + $i370 := $add.i32($i369, $i368); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 911, 5} true; + assume {:verifier.code 0} true; + $i371 := $trunc.i32.i16($i370); + call {:cexpr "a"} boogie_si_record_i16($i371); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 912, 7} true; + assume {:verifier.code 0} true; + $i372 := $sext.i16.i32($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 912, 9} true; + assume {:verifier.code 0} true; + $i373 := $srem.i32($i372, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 912, 7} true; + assume {:verifier.code 0} true; + $i374 := $trunc.i32.i16($i373); + call {:cexpr "b"} boogie_si_record_i16($i374); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 913, 8} true; + assume {:verifier.code 0} true; + $i375 := $sext.i16.i32($i374); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 913, 5} true; + assume {:verifier.code 0} true; + $i376 := $sext.i16.i32($i374); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 913, 5} true; + assume {:verifier.code 0} true; + $i377 := $add.i32($i376, $i375); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 913, 5} true; + assume {:verifier.code 0} true; + $i378 := $trunc.i32.i16($i377); + call {:cexpr "b"} boogie_si_record_i16($i378); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 915, 8} true; + assume {:verifier.code 0} true; + $i379 := $sext.i16.i32($i356); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 915, 5} true; + assume {:verifier.code 0} true; + $i380 := $sext.i16.i32($i356); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 915, 5} true; + assume {:verifier.code 0} true; + $i381 := $add.i32($i380, $i379); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 915, 5} true; + assume {:verifier.code 0} true; + $i382 := $trunc.i32.i16($i381); + call {:cexpr "c"} boogie_si_record_i16($i382); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 916, 7} true; + assume {:verifier.code 0} true; + $i383 := $sext.i16.i32($i371); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 916, 9} true; + assume {:verifier.code 0} true; + $i384 := $slt.i32($i383, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 916, 7} true; + assume {:verifier.code 0} true; + $i385 := $i382; + assume {:branchcond $i384} true; + goto $bb118, $bb119; +$bb112: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 15} true; + assume {:verifier.code 0} true; + assume ($i358 == 1); + goto $bb113; +$bb113: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 907, 9} true; + assume {:verifier.code 0} true; + $i362 := $sext.i16.i32($i353); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 907, 9} true; + assume {:verifier.code 0} true; + $i363 := $add.i32($i362, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 907, 9} true; + assume {:verifier.code 0} true; + $i364 := $trunc.i32.i16($i363); + call {:cexpr "c"} boogie_si_record_i16($i364); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 908, 5} true; + assume {:verifier.code 0} true; + $i361 := $i364; + goto $bb117; +$bb114: + assume !(($i358 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 18} true; + assume {:verifier.code 0} true; + $i359 := $sext.i16.i32($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 20} true; + assume {:verifier.code 0} true; + $i360 := $sgt.i32($i359, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 9} true; + assume {:verifier.code 0} true; + $i361 := $i353; + assume {:branchcond $i360} true; + goto $bb115, $bb116; +$bb115: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 9} true; + assume {:verifier.code 0} true; + assume ($i360 == 1); + goto $bb113; +$bb116: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 9} true; + assume {:verifier.code 0} true; + assume !(($i360 == 1)); + goto $bb117; +$bb117: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 909, 3} true; + assume {:verifier.code 0} true; + $i356 := $i361; + goto $bb111; +$bb118: + assume ($i384 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 9} true; + assume {:verifier.code 0} true; + $i386 := $sext.i16.i32($i378); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 11} true; + assume {:verifier.code 0} true; + $i387 := $slt.i32($i386, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i387} true; + goto $bb121, $bb123; +$bb119: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 916, 7} true; + assume {:verifier.code 0} true; + assume !(($i384 == 1)); + goto $bb120; +$bb120: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 921, 7} true; + assume {:verifier.code 0} true; + $i394 := $sext.i16.i32($i371); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 921, 9} true; + assume {:verifier.code 0} true; + $i395 := $srem.i32($i394, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 921, 7} true; + assume {:verifier.code 0} true; + $i396 := $trunc.i32.i16($i395); + call {:cexpr "a"} boogie_si_record_i16($i396); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 922, 8} true; + assume {:verifier.code 0} true; + $i397 := $sext.i16.i32($i396); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 922, 5} true; + assume {:verifier.code 0} true; + $i398 := $sext.i16.i32($i396); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 922, 5} true; + assume {:verifier.code 0} true; + $i399 := $add.i32($i398, $i397); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 922, 5} true; + assume {:verifier.code 0} true; + $i400 := $trunc.i32.i16($i399); + call {:cexpr "a"} boogie_si_record_i16($i400); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 923, 7} true; + assume {:verifier.code 0} true; + $i401 := $sext.i16.i32($i378); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 923, 9} true; + assume {:verifier.code 0} true; + $i402 := $srem.i32($i401, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 923, 7} true; + assume {:verifier.code 0} true; + $i403 := $trunc.i32.i16($i402); + call {:cexpr "b"} boogie_si_record_i16($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 924, 8} true; + assume {:verifier.code 0} true; + $i404 := $sext.i16.i32($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 924, 5} true; + assume {:verifier.code 0} true; + $i405 := $sext.i16.i32($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 924, 5} true; + assume {:verifier.code 0} true; + $i406 := $add.i32($i405, $i404); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 924, 5} true; + assume {:verifier.code 0} true; + $i407 := $trunc.i32.i16($i406); + call {:cexpr "b"} boogie_si_record_i16($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 926, 8} true; + assume {:verifier.code 0} true; + $i408 := $sext.i16.i32($i385); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 926, 5} true; + assume {:verifier.code 0} true; + $i409 := $sext.i16.i32($i385); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 926, 5} true; + assume {:verifier.code 0} true; + $i410 := $add.i32($i409, $i408); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 926, 5} true; + assume {:verifier.code 0} true; + $i411 := $trunc.i32.i16($i410); + call {:cexpr "c"} boogie_si_record_i16($i411); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 927, 7} true; + assume {:verifier.code 0} true; + $i412 := $sext.i16.i32($i400); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 927, 9} true; + assume {:verifier.code 0} true; + $i413 := $slt.i32($i412, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 927, 7} true; + assume {:verifier.code 0} true; + $i414 := $i411; + assume {:branchcond $i413} true; + goto $bb127, $bb128; +$bb121: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 15} true; + assume {:verifier.code 0} true; + assume ($i387 == 1); + goto $bb122; +$bb122: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 918, 9} true; + assume {:verifier.code 0} true; + $i391 := $sext.i16.i32($i382); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 918, 9} true; + assume {:verifier.code 0} true; + $i392 := $add.i32($i391, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 918, 9} true; + assume {:verifier.code 0} true; + $i393 := $trunc.i32.i16($i392); + call {:cexpr "c"} boogie_si_record_i16($i393); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 919, 5} true; + assume {:verifier.code 0} true; + $i390 := $i393; + goto $bb126; +$bb123: + assume !(($i387 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 18} true; + assume {:verifier.code 0} true; + $i388 := $sext.i16.i32($i378); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 20} true; + assume {:verifier.code 0} true; + $i389 := $sgt.i32($i388, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 9} true; + assume {:verifier.code 0} true; + $i390 := $i382; + assume {:branchcond $i389} true; + goto $bb124, $bb125; +$bb124: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 9} true; + assume {:verifier.code 0} true; + assume ($i389 == 1); + goto $bb122; +$bb125: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 9} true; + assume {:verifier.code 0} true; + assume !(($i389 == 1)); + goto $bb126; +$bb126: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 920, 3} true; + assume {:verifier.code 0} true; + $i385 := $i390; + goto $bb120; +$bb127: + assume ($i413 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 9} true; + assume {:verifier.code 0} true; + $i415 := $sext.i16.i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 11} true; + assume {:verifier.code 0} true; + $i416 := $slt.i32($i415, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i416} true; + goto $bb130, $bb132; +$bb128: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 927, 7} true; + assume {:verifier.code 0} true; + assume !(($i413 == 1)); + goto $bb129; +$bb129: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 932, 7} true; + assume {:verifier.code 0} true; + $i423 := $sext.i16.i32($i400); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 932, 9} true; + assume {:verifier.code 0} true; + $i424 := $srem.i32($i423, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 932, 7} true; + assume {:verifier.code 0} true; + $i425 := $trunc.i32.i16($i424); + call {:cexpr "a"} boogie_si_record_i16($i425); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 933, 8} true; + assume {:verifier.code 0} true; + $i426 := $sext.i16.i32($i425); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 933, 5} true; + assume {:verifier.code 0} true; + $i427 := $sext.i16.i32($i425); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 933, 5} true; + assume {:verifier.code 0} true; + $i428 := $add.i32($i427, $i426); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 933, 5} true; + assume {:verifier.code 0} true; + $i429 := $trunc.i32.i16($i428); + call {:cexpr "a"} boogie_si_record_i16($i429); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 934, 7} true; + assume {:verifier.code 0} true; + $i430 := $sext.i16.i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 934, 9} true; + assume {:verifier.code 0} true; + $i431 := $srem.i32($i430, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 934, 7} true; + assume {:verifier.code 0} true; + $i432 := $trunc.i32.i16($i431); + call {:cexpr "b"} boogie_si_record_i16($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 935, 8} true; + assume {:verifier.code 0} true; + $i433 := $sext.i16.i32($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 935, 5} true; + assume {:verifier.code 0} true; + $i434 := $sext.i16.i32($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 935, 5} true; + assume {:verifier.code 0} true; + $i435 := $add.i32($i434, $i433); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 935, 5} true; + assume {:verifier.code 0} true; + $i436 := $trunc.i32.i16($i435); + call {:cexpr "b"} boogie_si_record_i16($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 937, 8} true; + assume {:verifier.code 0} true; + $i437 := $sext.i16.i32($i414); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 937, 5} true; + assume {:verifier.code 0} true; + $i438 := $sext.i16.i32($i414); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 937, 5} true; + assume {:verifier.code 0} true; + $i439 := $add.i32($i438, $i437); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 937, 5} true; + assume {:verifier.code 0} true; + $i440 := $trunc.i32.i16($i439); + call {:cexpr "c"} boogie_si_record_i16($i440); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 938, 7} true; + assume {:verifier.code 0} true; + $i441 := $sext.i16.i32($i429); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 938, 9} true; + assume {:verifier.code 0} true; + $i442 := $slt.i32($i441, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 938, 7} true; + assume {:verifier.code 0} true; + $i443 := $i440; + assume {:branchcond $i442} true; + goto $bb136, $bb137; +$bb130: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 15} true; + assume {:verifier.code 0} true; + assume ($i416 == 1); + goto $bb131; +$bb131: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 929, 9} true; + assume {:verifier.code 0} true; + $i420 := $sext.i16.i32($i411); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 929, 9} true; + assume {:verifier.code 0} true; + $i421 := $add.i32($i420, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 929, 9} true; + assume {:verifier.code 0} true; + $i422 := $trunc.i32.i16($i421); + call {:cexpr "c"} boogie_si_record_i16($i422); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 930, 5} true; + assume {:verifier.code 0} true; + $i419 := $i422; + goto $bb135; +$bb132: + assume !(($i416 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 18} true; + assume {:verifier.code 0} true; + $i417 := $sext.i16.i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 20} true; + assume {:verifier.code 0} true; + $i418 := $sgt.i32($i417, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 9} true; + assume {:verifier.code 0} true; + $i419 := $i411; + assume {:branchcond $i418} true; + goto $bb133, $bb134; +$bb133: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 9} true; + assume {:verifier.code 0} true; + assume ($i418 == 1); + goto $bb131; +$bb134: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 9} true; + assume {:verifier.code 0} true; + assume !(($i418 == 1)); + goto $bb135; +$bb135: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 931, 3} true; + assume {:verifier.code 0} true; + $i414 := $i419; + goto $bb129; +$bb136: + assume ($i442 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 9} true; + assume {:verifier.code 0} true; + $i444 := $sext.i16.i32($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 11} true; + assume {:verifier.code 0} true; + $i445 := $slt.i32($i444, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i445} true; + goto $bb139, $bb141; +$bb137: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 938, 7} true; + assume {:verifier.code 0} true; + assume !(($i442 == 1)); + goto $bb138; +$bb138: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 948, 3} true; + assume {:verifier.code 0} true; + $r := $i443; + $exn := false; + return; +$bb139: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 15} true; + assume {:verifier.code 0} true; + assume ($i445 == 1); + goto $bb140; +$bb140: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 940, 9} true; + assume {:verifier.code 0} true; + $i449 := $sext.i16.i32($i440); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 940, 9} true; + assume {:verifier.code 0} true; + $i450 := $add.i32($i449, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 940, 9} true; + assume {:verifier.code 0} true; + $i451 := $trunc.i32.i16($i450); + call {:cexpr "c"} boogie_si_record_i16($i451); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 941, 5} true; + assume {:verifier.code 0} true; + $i448 := $i451; + goto $bb144; +$bb141: + assume !(($i445 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 18} true; + assume {:verifier.code 0} true; + $i446 := $sext.i16.i32($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 20} true; + assume {:verifier.code 0} true; + $i447 := $sgt.i32($i446, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 9} true; + assume {:verifier.code 0} true; + $i448 := $i440; + assume {:branchcond $i447} true; + goto $bb142, $bb143; +$bb142: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 9} true; + assume {:verifier.code 0} true; + assume ($i447 == 1); + goto $bb140; +$bb143: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 9} true; + assume {:verifier.code 0} true; + assume !(($i447 == 1)); + goto $bb144; +$bb144: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 942, 3} true; + assume {:verifier.code 0} true; + $i443 := $i448; + goto $bb138; +} +const __SMACK_and8: ref; +axiom (__SMACK_and8 == $sub.ref(0, 20636)); +procedure __SMACK_and8($i0: i8, $i1: i8) + returns ($r: i8) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i8; + var $i6: i32; + var $i7: i1; + var $i9: i32; + var $i10: i1; + var $i11: i32; + var $i12: i1; + var $i14: i32; + var $i15: i32; + var $i16: i8; + var $i13: i8; + var $i8: i8; + var $i17: i32; + var $i18: i32; + var $i19: i8; + var $i20: i32; + var $i21: i32; + var $i22: i32; + var $i23: i8; + var $i24: i32; + var $i25: i32; + var $i26: i8; + var $i27: i32; + var $i28: i32; + var $i29: i32; + var $i30: i8; + var $i31: i32; + var $i32: i32; + var $i33: i32; + var $i34: i8; + var $i35: i32; + var $i36: i1; + var $i38: i32; + var $i39: i1; + var $i40: i32; + var $i41: i1; + var $i43: i32; + var $i44: i32; + var $i45: i8; + var $i42: i8; + var $i37: i8; + var $i46: i32; + var $i47: i32; + var $i48: i8; + var $i49: i32; + var $i50: i32; + var $i51: i32; + var $i52: i8; + var $i53: i32; + var $i54: i32; + var $i55: i8; + var $i56: i32; + var $i57: i32; + var $i58: i32; + var $i59: i8; + var $i60: i32; + var $i61: i32; + var $i62: i32; + var $i63: i8; + var $i64: i32; + var $i65: i1; + var $i67: i32; + var $i68: i1; + var $i69: i32; + var $i70: i1; + var $i72: i32; + var $i73: i32; + var $i74: i8; + var $i71: i8; + var $i66: i8; + var $i75: i32; + var $i76: i32; + var $i77: i8; + var $i78: i32; + var $i79: i32; + var $i80: i32; + var $i81: i8; + var $i82: i32; + var $i83: i32; + var $i84: i8; + var $i85: i32; + var $i86: i32; + var $i87: i32; + var $i88: i8; + var $i89: i32; + var $i90: i32; + var $i91: i32; + var $i92: i8; + var $i93: i32; + var $i94: i1; + var $i96: i32; + var $i97: i1; + var $i98: i32; + var $i99: i1; + var $i101: i32; + var $i102: i32; + var $i103: i8; + var $i100: i8; + var $i95: i8; + var $i104: i32; + var $i105: i32; + var $i106: i8; + var $i107: i32; + var $i108: i32; + var $i109: i32; + var $i110: i8; + var $i111: i32; + var $i112: i32; + var $i113: i8; + var $i114: i32; + var $i115: i32; + var $i116: i32; + var $i117: i8; + var $i118: i32; + var $i119: i32; + var $i120: i32; + var $i121: i8; + var $i122: i32; + var $i123: i1; + var $i125: i32; + var $i126: i1; + var $i127: i32; + var $i128: i1; + var $i130: i32; + var $i131: i32; + var $i132: i8; + var $i129: i8; + var $i124: i8; + var $i133: i32; + var $i134: i32; + var $i135: i8; + var $i136: i32; + var $i137: i32; + var $i138: i32; + var $i139: i8; + var $i140: i32; + var $i141: i32; + var $i142: i8; + var $i143: i32; + var $i144: i32; + var $i145: i32; + var $i146: i8; + var $i147: i32; + var $i148: i32; + var $i149: i32; + var $i150: i8; + var $i151: i32; + var $i152: i1; + var $i154: i32; + var $i155: i1; + var $i156: i32; + var $i157: i1; + var $i159: i32; + var $i160: i32; + var $i161: i8; + var $i158: i8; + var $i153: i8; + var $i162: i32; + var $i163: i32; + var $i164: i8; + var $i165: i32; + var $i166: i32; + var $i167: i32; + var $i168: i8; + var $i169: i32; + var $i170: i32; + var $i171: i8; + var $i172: i32; + var $i173: i32; + var $i174: i32; + var $i175: i8; + var $i176: i32; + var $i177: i32; + var $i178: i32; + var $i179: i8; + var $i180: i32; + var $i181: i1; + var $i183: i32; + var $i184: i1; + var $i185: i32; + var $i186: i1; + var $i188: i32; + var $i189: i32; + var $i190: i8; + var $i187: i8; + var $i182: i8; + var $i191: i32; + var $i192: i32; + var $i193: i8; + var $i194: i32; + var $i195: i32; + var $i196: i32; + var $i197: i8; + var $i198: i32; + var $i199: i32; + var $i200: i8; + var $i201: i32; + var $i202: i32; + var $i203: i32; + var $i204: i8; + var $i205: i32; + var $i206: i32; + var $i207: i32; + var $i208: i8; + var $i209: i32; + var $i210: i1; + var $i212: i32; + var $i213: i1; + var $i214: i32; + var $i215: i1; + var $i217: i32; + var $i218: i32; + var $i219: i8; + var $i216: i8; + var $i211: i8; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 8} true; + assume {:verifier.code 0} true; + call {:cexpr "__SMACK_and8:arg:a"} boogie_si_record_i8($i0); + call {:cexpr "__SMACK_and8:arg:b"} boogie_si_record_i8($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 8} true; + assume {:verifier.code 0} true; + $i2 := $sext.i8.i32(0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 5} true; + assume {:verifier.code 0} true; + $i3 := $sext.i8.i32(0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 5} true; + assume {:verifier.code 0} true; + $i4 := $add.i32($i3, $i2); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 5} true; + assume {:verifier.code 0} true; + $i5 := $trunc.i32.i8($i4); + call {:cexpr "c"} boogie_si_record_i8($i5); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 955, 7} true; + assume {:verifier.code 0} true; + $i6 := $sext.i8.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 955, 9} true; + assume {:verifier.code 0} true; + $i7 := $slt.i32($i6, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 955, 7} true; + assume {:verifier.code 0} true; + $i8 := $i5; + assume {:branchcond $i7} true; + goto $bb1, $bb2; +$bb1: + assume ($i7 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 9} true; + assume {:verifier.code 0} true; + $i9 := $sext.i8.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 11} true; + assume {:verifier.code 0} true; + $i10 := $slt.i32($i9, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i10} true; + goto $bb4, $bb6; +$bb2: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 955, 7} true; + assume {:verifier.code 0} true; + assume !(($i7 == 1)); + goto $bb3; +$bb3: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 960, 7} true; + assume {:verifier.code 0} true; + $i17 := $sext.i8.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 960, 9} true; + assume {:verifier.code 0} true; + $i18 := $srem.i32($i17, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 960, 7} true; + assume {:verifier.code 0} true; + $i19 := $trunc.i32.i8($i18); + call {:cexpr "a"} boogie_si_record_i8($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 961, 8} true; + assume {:verifier.code 0} true; + $i20 := $sext.i8.i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 961, 5} true; + assume {:verifier.code 0} true; + $i21 := $sext.i8.i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 961, 5} true; + assume {:verifier.code 0} true; + $i22 := $add.i32($i21, $i20); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 961, 5} true; + assume {:verifier.code 0} true; + $i23 := $trunc.i32.i8($i22); + call {:cexpr "a"} boogie_si_record_i8($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 962, 7} true; + assume {:verifier.code 0} true; + $i24 := $sext.i8.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 962, 9} true; + assume {:verifier.code 0} true; + $i25 := $srem.i32($i24, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 962, 7} true; + assume {:verifier.code 0} true; + $i26 := $trunc.i32.i8($i25); + call {:cexpr "b"} boogie_si_record_i8($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 963, 8} true; + assume {:verifier.code 0} true; + $i27 := $sext.i8.i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 963, 5} true; + assume {:verifier.code 0} true; + $i28 := $sext.i8.i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 963, 5} true; + assume {:verifier.code 0} true; + $i29 := $add.i32($i28, $i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 963, 5} true; + assume {:verifier.code 0} true; + $i30 := $trunc.i32.i8($i29); + call {:cexpr "b"} boogie_si_record_i8($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 965, 8} true; + assume {:verifier.code 0} true; + $i31 := $sext.i8.i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 965, 5} true; + assume {:verifier.code 0} true; + $i32 := $sext.i8.i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 965, 5} true; + assume {:verifier.code 0} true; + $i33 := $add.i32($i32, $i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 965, 5} true; + assume {:verifier.code 0} true; + $i34 := $trunc.i32.i8($i33); + call {:cexpr "c"} boogie_si_record_i8($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 966, 7} true; + assume {:verifier.code 0} true; + $i35 := $sext.i8.i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 966, 9} true; + assume {:verifier.code 0} true; + $i36 := $slt.i32($i35, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 966, 7} true; + assume {:verifier.code 0} true; + $i37 := $i34; + assume {:branchcond $i36} true; + goto $bb10, $bb11; +$bb4: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 15} true; + assume {:verifier.code 0} true; + assume ($i10 == 1); + goto $bb5; +$bb5: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 957, 9} true; + assume {:verifier.code 0} true; + $i14 := $sext.i8.i32($i5); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 957, 9} true; + assume {:verifier.code 0} true; + $i15 := $add.i32($i14, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 957, 9} true; + assume {:verifier.code 0} true; + $i16 := $trunc.i32.i8($i15); + call {:cexpr "c"} boogie_si_record_i8($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 958, 5} true; + assume {:verifier.code 0} true; + $i13 := $i16; + goto $bb9; +$bb6: + assume !(($i10 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 18} true; + assume {:verifier.code 0} true; + $i11 := $sext.i8.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 20} true; + assume {:verifier.code 0} true; + $i12 := $sgt.i32($i11, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 9} true; + assume {:verifier.code 0} true; + $i13 := $i5; + assume {:branchcond $i12} true; + goto $bb7, $bb8; +$bb7: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 9} true; + assume {:verifier.code 0} true; + assume ($i12 == 1); + goto $bb5; +$bb8: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 9} true; + assume {:verifier.code 0} true; + assume !(($i12 == 1)); + goto $bb9; +$bb9: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 959, 3} true; + assume {:verifier.code 0} true; + $i8 := $i13; + goto $bb3; +$bb10: + assume ($i36 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 9} true; + assume {:verifier.code 0} true; + $i38 := $sext.i8.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 11} true; + assume {:verifier.code 0} true; + $i39 := $slt.i32($i38, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i39} true; + goto $bb13, $bb15; +$bb11: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 966, 7} true; + assume {:verifier.code 0} true; + assume !(($i36 == 1)); + goto $bb12; +$bb12: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 971, 7} true; + assume {:verifier.code 0} true; + $i46 := $sext.i8.i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 971, 9} true; + assume {:verifier.code 0} true; + $i47 := $srem.i32($i46, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 971, 7} true; + assume {:verifier.code 0} true; + $i48 := $trunc.i32.i8($i47); + call {:cexpr "a"} boogie_si_record_i8($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 972, 8} true; + assume {:verifier.code 0} true; + $i49 := $sext.i8.i32($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 972, 5} true; + assume {:verifier.code 0} true; + $i50 := $sext.i8.i32($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 972, 5} true; + assume {:verifier.code 0} true; + $i51 := $add.i32($i50, $i49); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 972, 5} true; + assume {:verifier.code 0} true; + $i52 := $trunc.i32.i8($i51); + call {:cexpr "a"} boogie_si_record_i8($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 973, 7} true; + assume {:verifier.code 0} true; + $i53 := $sext.i8.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 973, 9} true; + assume {:verifier.code 0} true; + $i54 := $srem.i32($i53, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 973, 7} true; + assume {:verifier.code 0} true; + $i55 := $trunc.i32.i8($i54); + call {:cexpr "b"} boogie_si_record_i8($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 974, 8} true; + assume {:verifier.code 0} true; + $i56 := $sext.i8.i32($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 974, 5} true; + assume {:verifier.code 0} true; + $i57 := $sext.i8.i32($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 974, 5} true; + assume {:verifier.code 0} true; + $i58 := $add.i32($i57, $i56); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 974, 5} true; + assume {:verifier.code 0} true; + $i59 := $trunc.i32.i8($i58); + call {:cexpr "b"} boogie_si_record_i8($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 976, 8} true; + assume {:verifier.code 0} true; + $i60 := $sext.i8.i32($i37); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 976, 5} true; + assume {:verifier.code 0} true; + $i61 := $sext.i8.i32($i37); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 976, 5} true; + assume {:verifier.code 0} true; + $i62 := $add.i32($i61, $i60); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 976, 5} true; + assume {:verifier.code 0} true; + $i63 := $trunc.i32.i8($i62); + call {:cexpr "c"} boogie_si_record_i8($i63); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 977, 7} true; + assume {:verifier.code 0} true; + $i64 := $sext.i8.i32($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 977, 9} true; + assume {:verifier.code 0} true; + $i65 := $slt.i32($i64, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 977, 7} true; + assume {:verifier.code 0} true; + $i66 := $i63; + assume {:branchcond $i65} true; + goto $bb19, $bb20; +$bb13: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 15} true; + assume {:verifier.code 0} true; + assume ($i39 == 1); + goto $bb14; +$bb14: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 968, 9} true; + assume {:verifier.code 0} true; + $i43 := $sext.i8.i32($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 968, 9} true; + assume {:verifier.code 0} true; + $i44 := $add.i32($i43, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 968, 9} true; + assume {:verifier.code 0} true; + $i45 := $trunc.i32.i8($i44); + call {:cexpr "c"} boogie_si_record_i8($i45); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 969, 5} true; + assume {:verifier.code 0} true; + $i42 := $i45; + goto $bb18; +$bb15: + assume !(($i39 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 18} true; + assume {:verifier.code 0} true; + $i40 := $sext.i8.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 20} true; + assume {:verifier.code 0} true; + $i41 := $sgt.i32($i40, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 9} true; + assume {:verifier.code 0} true; + $i42 := $i34; + assume {:branchcond $i41} true; + goto $bb16, $bb17; +$bb16: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 9} true; + assume {:verifier.code 0} true; + assume ($i41 == 1); + goto $bb14; +$bb17: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 9} true; + assume {:verifier.code 0} true; + assume !(($i41 == 1)); + goto $bb18; +$bb18: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 970, 3} true; + assume {:verifier.code 0} true; + $i37 := $i42; + goto $bb12; +$bb19: + assume ($i65 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 9} true; + assume {:verifier.code 0} true; + $i67 := $sext.i8.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 11} true; + assume {:verifier.code 0} true; + $i68 := $slt.i32($i67, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i68} true; + goto $bb22, $bb24; +$bb20: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 977, 7} true; + assume {:verifier.code 0} true; + assume !(($i65 == 1)); + goto $bb21; +$bb21: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 982, 7} true; + assume {:verifier.code 0} true; + $i75 := $sext.i8.i32($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 982, 9} true; + assume {:verifier.code 0} true; + $i76 := $srem.i32($i75, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 982, 7} true; + assume {:verifier.code 0} true; + $i77 := $trunc.i32.i8($i76); + call {:cexpr "a"} boogie_si_record_i8($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 983, 8} true; + assume {:verifier.code 0} true; + $i78 := $sext.i8.i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 983, 5} true; + assume {:verifier.code 0} true; + $i79 := $sext.i8.i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 983, 5} true; + assume {:verifier.code 0} true; + $i80 := $add.i32($i79, $i78); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 983, 5} true; + assume {:verifier.code 0} true; + $i81 := $trunc.i32.i8($i80); + call {:cexpr "a"} boogie_si_record_i8($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 984, 7} true; + assume {:verifier.code 0} true; + $i82 := $sext.i8.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 984, 9} true; + assume {:verifier.code 0} true; + $i83 := $srem.i32($i82, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 984, 7} true; + assume {:verifier.code 0} true; + $i84 := $trunc.i32.i8($i83); + call {:cexpr "b"} boogie_si_record_i8($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 985, 8} true; + assume {:verifier.code 0} true; + $i85 := $sext.i8.i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 985, 5} true; + assume {:verifier.code 0} true; + $i86 := $sext.i8.i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 985, 5} true; + assume {:verifier.code 0} true; + $i87 := $add.i32($i86, $i85); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 985, 5} true; + assume {:verifier.code 0} true; + $i88 := $trunc.i32.i8($i87); + call {:cexpr "b"} boogie_si_record_i8($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 987, 8} true; + assume {:verifier.code 0} true; + $i89 := $sext.i8.i32($i66); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 987, 5} true; + assume {:verifier.code 0} true; + $i90 := $sext.i8.i32($i66); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 987, 5} true; + assume {:verifier.code 0} true; + $i91 := $add.i32($i90, $i89); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 987, 5} true; + assume {:verifier.code 0} true; + $i92 := $trunc.i32.i8($i91); + call {:cexpr "c"} boogie_si_record_i8($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 988, 7} true; + assume {:verifier.code 0} true; + $i93 := $sext.i8.i32($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 988, 9} true; + assume {:verifier.code 0} true; + $i94 := $slt.i32($i93, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 988, 7} true; + assume {:verifier.code 0} true; + $i95 := $i92; + assume {:branchcond $i94} true; + goto $bb28, $bb29; +$bb22: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 15} true; + assume {:verifier.code 0} true; + assume ($i68 == 1); + goto $bb23; +$bb23: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 979, 9} true; + assume {:verifier.code 0} true; + $i72 := $sext.i8.i32($i63); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 979, 9} true; + assume {:verifier.code 0} true; + $i73 := $add.i32($i72, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 979, 9} true; + assume {:verifier.code 0} true; + $i74 := $trunc.i32.i8($i73); + call {:cexpr "c"} boogie_si_record_i8($i74); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 980, 5} true; + assume {:verifier.code 0} true; + $i71 := $i74; + goto $bb27; +$bb24: + assume !(($i68 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 18} true; + assume {:verifier.code 0} true; + $i69 := $sext.i8.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 20} true; + assume {:verifier.code 0} true; + $i70 := $sgt.i32($i69, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 9} true; + assume {:verifier.code 0} true; + $i71 := $i63; + assume {:branchcond $i70} true; + goto $bb25, $bb26; +$bb25: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 9} true; + assume {:verifier.code 0} true; + assume ($i70 == 1); + goto $bb23; +$bb26: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 9} true; + assume {:verifier.code 0} true; + assume !(($i70 == 1)); + goto $bb27; +$bb27: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 981, 3} true; + assume {:verifier.code 0} true; + $i66 := $i71; + goto $bb21; +$bb28: + assume ($i94 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 9} true; + assume {:verifier.code 0} true; + $i96 := $sext.i8.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 11} true; + assume {:verifier.code 0} true; + $i97 := $slt.i32($i96, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i97} true; + goto $bb31, $bb33; +$bb29: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 988, 7} true; + assume {:verifier.code 0} true; + assume !(($i94 == 1)); + goto $bb30; +$bb30: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 993, 7} true; + assume {:verifier.code 0} true; + $i104 := $sext.i8.i32($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 993, 9} true; + assume {:verifier.code 0} true; + $i105 := $srem.i32($i104, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 993, 7} true; + assume {:verifier.code 0} true; + $i106 := $trunc.i32.i8($i105); + call {:cexpr "a"} boogie_si_record_i8($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 994, 8} true; + assume {:verifier.code 0} true; + $i107 := $sext.i8.i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 994, 5} true; + assume {:verifier.code 0} true; + $i108 := $sext.i8.i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 994, 5} true; + assume {:verifier.code 0} true; + $i109 := $add.i32($i108, $i107); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 994, 5} true; + assume {:verifier.code 0} true; + $i110 := $trunc.i32.i8($i109); + call {:cexpr "a"} boogie_si_record_i8($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 995, 7} true; + assume {:verifier.code 0} true; + $i111 := $sext.i8.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 995, 9} true; + assume {:verifier.code 0} true; + $i112 := $srem.i32($i111, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 995, 7} true; + assume {:verifier.code 0} true; + $i113 := $trunc.i32.i8($i112); + call {:cexpr "b"} boogie_si_record_i8($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 996, 8} true; + assume {:verifier.code 0} true; + $i114 := $sext.i8.i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 996, 5} true; + assume {:verifier.code 0} true; + $i115 := $sext.i8.i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 996, 5} true; + assume {:verifier.code 0} true; + $i116 := $add.i32($i115, $i114); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 996, 5} true; + assume {:verifier.code 0} true; + $i117 := $trunc.i32.i8($i116); + call {:cexpr "b"} boogie_si_record_i8($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 998, 8} true; + assume {:verifier.code 0} true; + $i118 := $sext.i8.i32($i95); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 998, 5} true; + assume {:verifier.code 0} true; + $i119 := $sext.i8.i32($i95); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 998, 5} true; + assume {:verifier.code 0} true; + $i120 := $add.i32($i119, $i118); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 998, 5} true; + assume {:verifier.code 0} true; + $i121 := $trunc.i32.i8($i120); + call {:cexpr "c"} boogie_si_record_i8($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 999, 7} true; + assume {:verifier.code 0} true; + $i122 := $sext.i8.i32($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 999, 9} true; + assume {:verifier.code 0} true; + $i123 := $slt.i32($i122, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 999, 7} true; + assume {:verifier.code 0} true; + $i124 := $i121; + assume {:branchcond $i123} true; + goto $bb37, $bb38; +$bb31: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 15} true; + assume {:verifier.code 0} true; + assume ($i97 == 1); + goto $bb32; +$bb32: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 990, 9} true; + assume {:verifier.code 0} true; + $i101 := $sext.i8.i32($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 990, 9} true; + assume {:verifier.code 0} true; + $i102 := $add.i32($i101, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 990, 9} true; + assume {:verifier.code 0} true; + $i103 := $trunc.i32.i8($i102); + call {:cexpr "c"} boogie_si_record_i8($i103); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 991, 5} true; + assume {:verifier.code 0} true; + $i100 := $i103; + goto $bb36; +$bb33: + assume !(($i97 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 18} true; + assume {:verifier.code 0} true; + $i98 := $sext.i8.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 20} true; + assume {:verifier.code 0} true; + $i99 := $sgt.i32($i98, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 9} true; + assume {:verifier.code 0} true; + $i100 := $i92; + assume {:branchcond $i99} true; + goto $bb34, $bb35; +$bb34: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 9} true; + assume {:verifier.code 0} true; + assume ($i99 == 1); + goto $bb32; +$bb35: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 9} true; + assume {:verifier.code 0} true; + assume !(($i99 == 1)); + goto $bb36; +$bb36: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 992, 3} true; + assume {:verifier.code 0} true; + $i95 := $i100; + goto $bb30; +$bb37: + assume ($i123 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 9} true; + assume {:verifier.code 0} true; + $i125 := $sext.i8.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 11} true; + assume {:verifier.code 0} true; + $i126 := $slt.i32($i125, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i126} true; + goto $bb40, $bb42; +$bb38: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 999, 7} true; + assume {:verifier.code 0} true; + assume !(($i123 == 1)); + goto $bb39; +$bb39: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1004, 7} true; + assume {:verifier.code 0} true; + $i133 := $sext.i8.i32($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1004, 9} true; + assume {:verifier.code 0} true; + $i134 := $srem.i32($i133, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1004, 7} true; + assume {:verifier.code 0} true; + $i135 := $trunc.i32.i8($i134); + call {:cexpr "a"} boogie_si_record_i8($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1005, 8} true; + assume {:verifier.code 0} true; + $i136 := $sext.i8.i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1005, 5} true; + assume {:verifier.code 0} true; + $i137 := $sext.i8.i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1005, 5} true; + assume {:verifier.code 0} true; + $i138 := $add.i32($i137, $i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1005, 5} true; + assume {:verifier.code 0} true; + $i139 := $trunc.i32.i8($i138); + call {:cexpr "a"} boogie_si_record_i8($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1006, 7} true; + assume {:verifier.code 0} true; + $i140 := $sext.i8.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1006, 9} true; + assume {:verifier.code 0} true; + $i141 := $srem.i32($i140, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1006, 7} true; + assume {:verifier.code 0} true; + $i142 := $trunc.i32.i8($i141); + call {:cexpr "b"} boogie_si_record_i8($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1007, 8} true; + assume {:verifier.code 0} true; + $i143 := $sext.i8.i32($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1007, 5} true; + assume {:verifier.code 0} true; + $i144 := $sext.i8.i32($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1007, 5} true; + assume {:verifier.code 0} true; + $i145 := $add.i32($i144, $i143); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1007, 5} true; + assume {:verifier.code 0} true; + $i146 := $trunc.i32.i8($i145); + call {:cexpr "b"} boogie_si_record_i8($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1009, 8} true; + assume {:verifier.code 0} true; + $i147 := $sext.i8.i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1009, 5} true; + assume {:verifier.code 0} true; + $i148 := $sext.i8.i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1009, 5} true; + assume {:verifier.code 0} true; + $i149 := $add.i32($i148, $i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1009, 5} true; + assume {:verifier.code 0} true; + $i150 := $trunc.i32.i8($i149); + call {:cexpr "c"} boogie_si_record_i8($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1010, 7} true; + assume {:verifier.code 0} true; + $i151 := $sext.i8.i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1010, 9} true; + assume {:verifier.code 0} true; + $i152 := $slt.i32($i151, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1010, 7} true; + assume {:verifier.code 0} true; + $i153 := $i150; + assume {:branchcond $i152} true; + goto $bb46, $bb47; +$bb40: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 15} true; + assume {:verifier.code 0} true; + assume ($i126 == 1); + goto $bb41; +$bb41: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1001, 9} true; + assume {:verifier.code 0} true; + $i130 := $sext.i8.i32($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1001, 9} true; + assume {:verifier.code 0} true; + $i131 := $add.i32($i130, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1001, 9} true; + assume {:verifier.code 0} true; + $i132 := $trunc.i32.i8($i131); + call {:cexpr "c"} boogie_si_record_i8($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1002, 5} true; + assume {:verifier.code 0} true; + $i129 := $i132; + goto $bb45; +$bb42: + assume !(($i126 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 18} true; + assume {:verifier.code 0} true; + $i127 := $sext.i8.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 20} true; + assume {:verifier.code 0} true; + $i128 := $sgt.i32($i127, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 9} true; + assume {:verifier.code 0} true; + $i129 := $i121; + assume {:branchcond $i128} true; + goto $bb43, $bb44; +$bb43: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 9} true; + assume {:verifier.code 0} true; + assume ($i128 == 1); + goto $bb41; +$bb44: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 9} true; + assume {:verifier.code 0} true; + assume !(($i128 == 1)); + goto $bb45; +$bb45: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1003, 3} true; + assume {:verifier.code 0} true; + $i124 := $i129; + goto $bb39; +$bb46: + assume ($i152 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 9} true; + assume {:verifier.code 0} true; + $i154 := $sext.i8.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 11} true; + assume {:verifier.code 0} true; + $i155 := $slt.i32($i154, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i155} true; + goto $bb49, $bb51; +$bb47: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1010, 7} true; + assume {:verifier.code 0} true; + assume !(($i152 == 1)); + goto $bb48; +$bb48: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1015, 7} true; + assume {:verifier.code 0} true; + $i162 := $sext.i8.i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1015, 9} true; + assume {:verifier.code 0} true; + $i163 := $srem.i32($i162, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1015, 7} true; + assume {:verifier.code 0} true; + $i164 := $trunc.i32.i8($i163); + call {:cexpr "a"} boogie_si_record_i8($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1016, 8} true; + assume {:verifier.code 0} true; + $i165 := $sext.i8.i32($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1016, 5} true; + assume {:verifier.code 0} true; + $i166 := $sext.i8.i32($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1016, 5} true; + assume {:verifier.code 0} true; + $i167 := $add.i32($i166, $i165); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1016, 5} true; + assume {:verifier.code 0} true; + $i168 := $trunc.i32.i8($i167); + call {:cexpr "a"} boogie_si_record_i8($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1017, 7} true; + assume {:verifier.code 0} true; + $i169 := $sext.i8.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1017, 9} true; + assume {:verifier.code 0} true; + $i170 := $srem.i32($i169, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1017, 7} true; + assume {:verifier.code 0} true; + $i171 := $trunc.i32.i8($i170); + call {:cexpr "b"} boogie_si_record_i8($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1018, 8} true; + assume {:verifier.code 0} true; + $i172 := $sext.i8.i32($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1018, 5} true; + assume {:verifier.code 0} true; + $i173 := $sext.i8.i32($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1018, 5} true; + assume {:verifier.code 0} true; + $i174 := $add.i32($i173, $i172); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1018, 5} true; + assume {:verifier.code 0} true; + $i175 := $trunc.i32.i8($i174); + call {:cexpr "b"} boogie_si_record_i8($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1020, 8} true; + assume {:verifier.code 0} true; + $i176 := $sext.i8.i32($i153); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1020, 5} true; + assume {:verifier.code 0} true; + $i177 := $sext.i8.i32($i153); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1020, 5} true; + assume {:verifier.code 0} true; + $i178 := $add.i32($i177, $i176); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1020, 5} true; + assume {:verifier.code 0} true; + $i179 := $trunc.i32.i8($i178); + call {:cexpr "c"} boogie_si_record_i8($i179); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1021, 7} true; + assume {:verifier.code 0} true; + $i180 := $sext.i8.i32($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1021, 9} true; + assume {:verifier.code 0} true; + $i181 := $slt.i32($i180, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1021, 7} true; + assume {:verifier.code 0} true; + $i182 := $i179; + assume {:branchcond $i181} true; + goto $bb55, $bb56; +$bb49: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 15} true; + assume {:verifier.code 0} true; + assume ($i155 == 1); + goto $bb50; +$bb50: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1012, 9} true; + assume {:verifier.code 0} true; + $i159 := $sext.i8.i32($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1012, 9} true; + assume {:verifier.code 0} true; + $i160 := $add.i32($i159, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1012, 9} true; + assume {:verifier.code 0} true; + $i161 := $trunc.i32.i8($i160); + call {:cexpr "c"} boogie_si_record_i8($i161); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1013, 5} true; + assume {:verifier.code 0} true; + $i158 := $i161; + goto $bb54; +$bb51: + assume !(($i155 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 18} true; + assume {:verifier.code 0} true; + $i156 := $sext.i8.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 20} true; + assume {:verifier.code 0} true; + $i157 := $sgt.i32($i156, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 9} true; + assume {:verifier.code 0} true; + $i158 := $i150; + assume {:branchcond $i157} true; + goto $bb52, $bb53; +$bb52: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 9} true; + assume {:verifier.code 0} true; + assume ($i157 == 1); + goto $bb50; +$bb53: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 9} true; + assume {:verifier.code 0} true; + assume !(($i157 == 1)); + goto $bb54; +$bb54: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1014, 3} true; + assume {:verifier.code 0} true; + $i153 := $i158; + goto $bb48; +$bb55: + assume ($i181 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 9} true; + assume {:verifier.code 0} true; + $i183 := $sext.i8.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 11} true; + assume {:verifier.code 0} true; + $i184 := $slt.i32($i183, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i184} true; + goto $bb58, $bb60; +$bb56: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1021, 7} true; + assume {:verifier.code 0} true; + assume !(($i181 == 1)); + goto $bb57; +$bb57: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1026, 7} true; + assume {:verifier.code 0} true; + $i191 := $sext.i8.i32($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1026, 9} true; + assume {:verifier.code 0} true; + $i192 := $srem.i32($i191, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1026, 7} true; + assume {:verifier.code 0} true; + $i193 := $trunc.i32.i8($i192); + call {:cexpr "a"} boogie_si_record_i8($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1027, 8} true; + assume {:verifier.code 0} true; + $i194 := $sext.i8.i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1027, 5} true; + assume {:verifier.code 0} true; + $i195 := $sext.i8.i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1027, 5} true; + assume {:verifier.code 0} true; + $i196 := $add.i32($i195, $i194); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1027, 5} true; + assume {:verifier.code 0} true; + $i197 := $trunc.i32.i8($i196); + call {:cexpr "a"} boogie_si_record_i8($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1028, 7} true; + assume {:verifier.code 0} true; + $i198 := $sext.i8.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1028, 9} true; + assume {:verifier.code 0} true; + $i199 := $srem.i32($i198, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1028, 7} true; + assume {:verifier.code 0} true; + $i200 := $trunc.i32.i8($i199); + call {:cexpr "b"} boogie_si_record_i8($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1029, 8} true; + assume {:verifier.code 0} true; + $i201 := $sext.i8.i32($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1029, 5} true; + assume {:verifier.code 0} true; + $i202 := $sext.i8.i32($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1029, 5} true; + assume {:verifier.code 0} true; + $i203 := $add.i32($i202, $i201); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1029, 5} true; + assume {:verifier.code 0} true; + $i204 := $trunc.i32.i8($i203); + call {:cexpr "b"} boogie_si_record_i8($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1031, 8} true; + assume {:verifier.code 0} true; + $i205 := $sext.i8.i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1031, 5} true; + assume {:verifier.code 0} true; + $i206 := $sext.i8.i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1031, 5} true; + assume {:verifier.code 0} true; + $i207 := $add.i32($i206, $i205); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1031, 5} true; + assume {:verifier.code 0} true; + $i208 := $trunc.i32.i8($i207); + call {:cexpr "c"} boogie_si_record_i8($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1032, 7} true; + assume {:verifier.code 0} true; + $i209 := $sext.i8.i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1032, 9} true; + assume {:verifier.code 0} true; + $i210 := $slt.i32($i209, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1032, 7} true; + assume {:verifier.code 0} true; + $i211 := $i208; + assume {:branchcond $i210} true; + goto $bb64, $bb65; +$bb58: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 15} true; + assume {:verifier.code 0} true; + assume ($i184 == 1); + goto $bb59; +$bb59: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1023, 9} true; + assume {:verifier.code 0} true; + $i188 := $sext.i8.i32($i179); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1023, 9} true; + assume {:verifier.code 0} true; + $i189 := $add.i32($i188, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1023, 9} true; + assume {:verifier.code 0} true; + $i190 := $trunc.i32.i8($i189); + call {:cexpr "c"} boogie_si_record_i8($i190); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1024, 5} true; + assume {:verifier.code 0} true; + $i187 := $i190; + goto $bb63; +$bb60: + assume !(($i184 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 18} true; + assume {:verifier.code 0} true; + $i185 := $sext.i8.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 20} true; + assume {:verifier.code 0} true; + $i186 := $sgt.i32($i185, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 9} true; + assume {:verifier.code 0} true; + $i187 := $i179; + assume {:branchcond $i186} true; + goto $bb61, $bb62; +$bb61: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 9} true; + assume {:verifier.code 0} true; + assume ($i186 == 1); + goto $bb59; +$bb62: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 9} true; + assume {:verifier.code 0} true; + assume !(($i186 == 1)); + goto $bb63; +$bb63: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1025, 3} true; + assume {:verifier.code 0} true; + $i182 := $i187; + goto $bb57; +$bb64: + assume ($i210 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 9} true; + assume {:verifier.code 0} true; + $i212 := $sext.i8.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 11} true; + assume {:verifier.code 0} true; + $i213 := $slt.i32($i212, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i213} true; + goto $bb67, $bb69; +$bb65: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1032, 7} true; + assume {:verifier.code 0} true; + assume !(($i210 == 1)); + goto $bb66; +$bb66: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1042, 3} true; + assume {:verifier.code 0} true; + $r := $i211; + $exn := false; + return; +$bb67: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 15} true; + assume {:verifier.code 0} true; + assume ($i213 == 1); + goto $bb68; +$bb68: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1034, 9} true; + assume {:verifier.code 0} true; + $i217 := $sext.i8.i32($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1034, 9} true; + assume {:verifier.code 0} true; + $i218 := $add.i32($i217, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1034, 9} true; + assume {:verifier.code 0} true; + $i219 := $trunc.i32.i8($i218); + call {:cexpr "c"} boogie_si_record_i8($i219); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1035, 5} true; + assume {:verifier.code 0} true; + $i216 := $i219; + goto $bb72; +$bb69: + assume !(($i213 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 18} true; + assume {:verifier.code 0} true; + $i214 := $sext.i8.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 20} true; + assume {:verifier.code 0} true; + $i215 := $sgt.i32($i214, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 9} true; + assume {:verifier.code 0} true; + $i216 := $i208; + assume {:branchcond $i215} true; + goto $bb70, $bb71; +$bb70: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 9} true; + assume {:verifier.code 0} true; + assume ($i215 == 1); + goto $bb68; +$bb71: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 9} true; + assume {:verifier.code 0} true; + assume !(($i215 == 1)); + goto $bb72; +$bb72: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1036, 3} true; + assume {:verifier.code 0} true; + $i211 := $i216; + goto $bb66; +} +const __SMACK_or32: ref; +axiom (__SMACK_or32 == $sub.ref(0, 21668)); +procedure __SMACK_or32($i0: i32, $i1: i32) + returns ($r: i32) +{ + var $i2: i32; + var $i3: i1; + var $i4: i32; + var $i6: i1; + var $i8: i32; + var $i7: i32; + var $i5: i32; + var $i9: i32; + var $i10: i64; + var $i11: i64; + var $i12: i32; + var $i13: i32; + var $i14: i64; + var $i15: i64; + var $i16: i32; + var $i17: i32; + var $i18: i1; + var $i19: i32; + var $i21: i1; + var $i23: i32; + var $i22: i32; + var $i20: i32; + var $i24: i32; + var $i25: i64; + var $i26: i64; + var $i27: i32; + var $i28: i32; + var $i29: i64; + var $i30: i64; + var $i31: i32; + var $i32: i32; + var $i33: i1; + var $i34: i32; + var $i36: i1; + var $i38: i32; + var $i37: i32; + var $i35: i32; + var $i39: i32; + var $i40: i64; + var $i41: i64; + var $i42: i32; + var $i43: i32; + var $i44: i64; + var $i45: i64; + var $i46: i32; + var $i47: i32; + var $i48: i1; + var $i49: i32; + var $i51: i1; + var $i53: i32; + var $i52: i32; + var $i50: i32; + var $i54: i32; + var $i55: i64; + var $i56: i64; + var $i57: i32; + var $i58: i32; + var $i59: i64; + var $i60: i64; + var $i61: i32; + var $i62: i32; + var $i63: i1; + var $i64: i32; + var $i66: i1; + var $i68: i32; + var $i67: i32; + var $i65: i32; + var $i69: i32; + var $i70: i64; + var $i71: i64; + var $i72: i32; + var $i73: i32; + var $i74: i64; + var $i75: i64; + var $i76: i32; + var $i77: i32; + var $i78: i1; + var $i79: i32; + var $i81: i1; + var $i83: i32; + var $i82: i32; + var $i80: i32; + var $i84: i32; + var $i85: i64; + var $i86: i64; + var $i87: i32; + var $i88: i32; + var $i89: i64; + var $i90: i64; + var $i91: i32; + var $i92: i32; + var $i93: i1; + var $i94: i32; + var $i96: i1; + var $i98: i32; + var $i97: i32; + var $i95: i32; + var $i99: i32; + var $i100: i64; + var $i101: i64; + var $i102: i32; + var $i103: i32; + var $i104: i64; + var $i105: i64; + var $i106: i32; + var $i107: i32; + var $i108: i1; + var $i109: i32; + var $i111: i1; + var $i113: i32; + var $i112: i32; + var $i110: i32; + var $i114: i32; + var $i115: i64; + var $i116: i64; + var $i117: i32; + var $i118: i32; + var $i119: i64; + var $i120: i64; + var $i121: i32; + var $i122: i32; + var $i123: i1; + var $i124: i32; + var $i126: i1; + var $i128: i32; + var $i127: i32; + var $i125: i32; + var $i129: i32; + var $i130: i64; + var $i131: i64; + var $i132: i32; + var $i133: i32; + var $i134: i64; + var $i135: i64; + var $i136: i32; + var $i137: i32; + var $i138: i1; + var $i139: i32; + var $i141: i1; + var $i143: i32; + var $i142: i32; + var $i140: i32; + var $i144: i32; + var $i145: i64; + var $i146: i64; + var $i147: i32; + var $i148: i32; + var $i149: i64; + var $i150: i64; + var $i151: i32; + var $i152: i32; + var $i153: i1; + var $i154: i32; + var $i156: i1; + var $i158: i32; + var $i157: i32; + var $i155: i32; + var $i159: i32; + var $i160: i64; + var $i161: i64; + var $i162: i32; + var $i163: i32; + var $i164: i64; + var $i165: i64; + var $i166: i32; + var $i167: i32; + var $i168: i1; + var $i169: i32; + var $i171: i1; + var $i173: i32; + var $i172: i32; + var $i170: i32; + var $i174: i32; + var $i175: i64; + var $i176: i64; + var $i177: i32; + var $i178: i32; + var $i179: i64; + var $i180: i64; + var $i181: i32; + var $i182: i32; + var $i183: i1; + var $i184: i32; + var $i186: i1; + var $i188: i32; + var $i187: i32; + var $i185: i32; + var $i189: i32; + var $i190: i64; + var $i191: i64; + var $i192: i32; + var $i193: i32; + var $i194: i64; + var $i195: i64; + var $i196: i32; + var $i197: i32; + var $i198: i1; + var $i199: i32; + var $i201: i1; + var $i203: i32; + var $i202: i32; + var $i200: i32; + var $i204: i32; + var $i205: i64; + var $i206: i64; + var $i207: i32; + var $i208: i32; + var $i209: i64; + var $i210: i64; + var $i211: i32; + var $i212: i32; + var $i213: i1; + var $i214: i32; + var $i216: i1; + var $i218: i32; + var $i217: i32; + var $i215: i32; + var $i219: i32; + var $i220: i64; + var $i221: i64; + var $i222: i32; + var $i223: i32; + var $i224: i64; + var $i225: i64; + var $i226: i32; + var $i227: i32; + var $i228: i1; + var $i229: i32; + var $i231: i1; + var $i233: i32; + var $i232: i32; + var $i230: i32; + var $i234: i32; + var $i235: i64; + var $i236: i64; + var $i237: i32; + var $i238: i32; + var $i239: i64; + var $i240: i64; + var $i241: i32; + var $i242: i32; + var $i243: i1; + var $i244: i32; + var $i246: i1; + var $i248: i32; + var $i247: i32; + var $i245: i32; + var $i249: i32; + var $i250: i64; + var $i251: i64; + var $i252: i32; + var $i253: i32; + var $i254: i64; + var $i255: i64; + var $i256: i32; + var $i257: i32; + var $i258: i1; + var $i259: i32; + var $i261: i1; + var $i263: i32; + var $i262: i32; + var $i260: i32; + var $i264: i32; + var $i265: i64; + var $i266: i64; + var $i267: i32; + var $i268: i32; + var $i269: i64; + var $i270: i64; + var $i271: i32; + var $i272: i32; + var $i273: i1; + var $i274: i32; + var $i276: i1; + var $i278: i32; + var $i277: i32; + var $i275: i32; + var $i279: i32; + var $i280: i64; + var $i281: i64; + var $i282: i32; + var $i283: i32; + var $i284: i64; + var $i285: i64; + var $i286: i32; + var $i287: i32; + var $i288: i1; + var $i289: i32; + var $i291: i1; + var $i293: i32; + var $i292: i32; + var $i290: i32; + var $i294: i32; + var $i295: i64; + var $i296: i64; + var $i297: i32; + var $i298: i32; + var $i299: i64; + var $i300: i64; + var $i301: i32; + var $i302: i32; + var $i303: i1; + var $i304: i32; + var $i306: i1; + var $i308: i32; + var $i307: i32; + var $i305: i32; + var $i309: i32; + var $i310: i64; + var $i311: i64; + var $i312: i32; + var $i313: i32; + var $i314: i64; + var $i315: i64; + var $i316: i32; + var $i317: i32; + var $i318: i1; + var $i319: i32; + var $i321: i1; + var $i323: i32; + var $i322: i32; + var $i320: i32; + var $i324: i32; + var $i325: i64; + var $i326: i64; + var $i327: i32; + var $i328: i32; + var $i329: i64; + var $i330: i64; + var $i331: i32; + var $i332: i32; + var $i333: i1; + var $i334: i32; + var $i336: i1; + var $i338: i32; + var $i337: i32; + var $i335: i32; + var $i339: i32; + var $i340: i64; + var $i341: i64; + var $i342: i32; + var $i343: i32; + var $i344: i64; + var $i345: i64; + var $i346: i32; + var $i347: i32; + var $i348: i1; + var $i349: i32; + var $i351: i1; + var $i353: i32; + var $i352: i32; + var $i350: i32; + var $i354: i32; + var $i355: i64; + var $i356: i64; + var $i357: i32; + var $i358: i32; + var $i359: i64; + var $i360: i64; + var $i361: i32; + var $i362: i32; + var $i363: i1; + var $i364: i32; + var $i366: i1; + var $i368: i32; + var $i367: i32; + var $i365: i32; + var $i369: i32; + var $i370: i64; + var $i371: i64; + var $i372: i32; + var $i373: i32; + var $i374: i64; + var $i375: i64; + var $i376: i32; + var $i377: i32; + var $i378: i1; + var $i379: i32; + var $i381: i1; + var $i383: i32; + var $i382: i32; + var $i380: i32; + var $i384: i32; + var $i385: i64; + var $i386: i64; + var $i387: i32; + var $i388: i32; + var $i389: i64; + var $i390: i64; + var $i391: i32; + var $i392: i32; + var $i393: i1; + var $i394: i32; + var $i396: i1; + var $i398: i32; + var $i397: i32; + var $i395: i32; + var $i399: i32; + var $i400: i64; + var $i401: i64; + var $i402: i32; + var $i403: i32; + var $i404: i64; + var $i405: i64; + var $i406: i32; + var $i407: i32; + var $i408: i1; + var $i409: i32; + var $i411: i1; + var $i413: i32; + var $i412: i32; + var $i410: i32; + var $i414: i32; + var $i415: i64; + var $i416: i64; + var $i417: i32; + var $i418: i32; + var $i419: i64; + var $i420: i64; + var $i421: i32; + var $i422: i32; + var $i423: i1; + var $i424: i32; + var $i426: i1; + var $i428: i32; + var $i427: i32; + var $i425: i32; + var $i429: i32; + var $i430: i64; + var $i431: i64; + var $i432: i32; + var $i433: i32; + var $i434: i64; + var $i435: i64; + var $i436: i32; + var $i437: i32; + var $i438: i1; + var $i439: i32; + var $i441: i1; + var $i443: i32; + var $i442: i32; + var $i440: i32; + var $i444: i32; + var $i445: i64; + var $i446: i64; + var $i447: i32; + var $i448: i32; + var $i449: i64; + var $i450: i64; + var $i451: i32; + var $i452: i32; + var $i453: i1; + var $i454: i32; + var $i456: i1; + var $i458: i32; + var $i457: i32; + var $i455: i32; + var $i459: i32; + var $i460: i64; + var $i461: i64; + var $i462: i32; + var $i463: i32; + var $i464: i64; + var $i465: i64; + var $i466: i32; + var $i467: i32; + var $i468: i1; + var $i469: i32; + var $i471: i1; + var $i473: i32; + var $i472: i32; + var $i470: i32; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1048, 5} true; + assume {:verifier.code 0} true; + call {:cexpr "__SMACK_or32:arg:a"} boogie_si_record_i32($i0); + call {:cexpr "__SMACK_or32:arg:b"} boogie_si_record_i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1048, 5} true; + assume {:verifier.code 0} true; + $i2 := $add.i32(0, 0); + call {:cexpr "c"} boogie_si_record_i32($i2); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1049, 9} true; + assume {:verifier.code 0} true; + $i3 := $slt.i32($i0, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1049, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i3} true; + goto $bb1, $bb2; +$bb1: + assume ($i3 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1050, 7} true; + assume {:verifier.code 0} true; + $i4 := $add.i32($i2, 1); + call {:cexpr "c"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1051, 3} true; + assume {:verifier.code 0} true; + $i5 := $i4; + goto $bb3; +$bb2: + assume !(($i3 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1051, 16} true; + assume {:verifier.code 0} true; + $i6 := $slt.i32($i1, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1051, 14} true; + assume {:verifier.code 0} true; + $i7 := $i2; + assume {:branchcond $i6} true; + goto $bb4, $bb5; +$bb3: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1054, 5} true; + assume {:verifier.code 0} true; + $i9 := $add.i32($i0, $i0); + call {:cexpr "a"} boogie_si_record_i32($i9); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1055, 7} true; + assume {:verifier.code 0} true; + $i10 := $sext.i32.i64($i9); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1055, 9} true; + assume {:verifier.code 0} true; + $i11 := $srem.i64($i10, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1055, 7} true; + assume {:verifier.code 0} true; + $i12 := $trunc.i64.i32($i11); + call {:cexpr "a"} boogie_si_record_i32($i12); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1056, 5} true; + assume {:verifier.code 0} true; + $i13 := $add.i32($i1, $i1); + call {:cexpr "b"} boogie_si_record_i32($i13); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1057, 7} true; + assume {:verifier.code 0} true; + $i14 := $sext.i32.i64($i13); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1057, 9} true; + assume {:verifier.code 0} true; + $i15 := $srem.i64($i14, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1057, 7} true; + assume {:verifier.code 0} true; + $i16 := $trunc.i64.i32($i15); + call {:cexpr "b"} boogie_si_record_i32($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1059, 5} true; + assume {:verifier.code 0} true; + $i17 := $add.i32($i5, $i5); + call {:cexpr "c"} boogie_si_record_i32($i17); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1060, 9} true; + assume {:verifier.code 0} true; + $i18 := $slt.i32($i12, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1060, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i18} true; + goto $bb7, $bb8; +$bb4: + assume ($i6 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1052, 7} true; + assume {:verifier.code 0} true; + $i8 := $add.i32($i2, 1); + call {:cexpr "c"} boogie_si_record_i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1053, 3} true; + assume {:verifier.code 0} true; + $i7 := $i8; + goto $bb6; +$bb5: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1051, 14} true; + assume {:verifier.code 0} true; + assume !(($i6 == 1)); + goto $bb6; +$bb6: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i5 := $i7; + goto $bb3; +$bb7: + assume ($i18 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1061, 7} true; + assume {:verifier.code 0} true; + $i19 := $add.i32($i17, 1); + call {:cexpr "c"} boogie_si_record_i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1062, 3} true; + assume {:verifier.code 0} true; + $i20 := $i19; + goto $bb9; +$bb8: + assume !(($i18 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1062, 16} true; + assume {:verifier.code 0} true; + $i21 := $slt.i32($i16, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1062, 14} true; + assume {:verifier.code 0} true; + $i22 := $i17; + assume {:branchcond $i21} true; + goto $bb10, $bb11; +$bb9: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1065, 5} true; + assume {:verifier.code 0} true; + $i24 := $add.i32($i12, $i12); + call {:cexpr "a"} boogie_si_record_i32($i24); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1066, 7} true; + assume {:verifier.code 0} true; + $i25 := $sext.i32.i64($i24); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1066, 9} true; + assume {:verifier.code 0} true; + $i26 := $srem.i64($i25, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1066, 7} true; + assume {:verifier.code 0} true; + $i27 := $trunc.i64.i32($i26); + call {:cexpr "a"} boogie_si_record_i32($i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1067, 5} true; + assume {:verifier.code 0} true; + $i28 := $add.i32($i16, $i16); + call {:cexpr "b"} boogie_si_record_i32($i28); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1068, 7} true; + assume {:verifier.code 0} true; + $i29 := $sext.i32.i64($i28); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1068, 9} true; + assume {:verifier.code 0} true; + $i30 := $srem.i64($i29, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1068, 7} true; + assume {:verifier.code 0} true; + $i31 := $trunc.i64.i32($i30); + call {:cexpr "b"} boogie_si_record_i32($i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1070, 5} true; + assume {:verifier.code 0} true; + $i32 := $add.i32($i20, $i20); + call {:cexpr "c"} boogie_si_record_i32($i32); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1071, 9} true; + assume {:verifier.code 0} true; + $i33 := $slt.i32($i27, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1071, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i33} true; + goto $bb13, $bb14; +$bb10: + assume ($i21 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1063, 7} true; + assume {:verifier.code 0} true; + $i23 := $add.i32($i17, 1); + call {:cexpr "c"} boogie_si_record_i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1064, 3} true; + assume {:verifier.code 0} true; + $i22 := $i23; + goto $bb12; +$bb11: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1062, 14} true; + assume {:verifier.code 0} true; + assume !(($i21 == 1)); + goto $bb12; +$bb12: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i20 := $i22; + goto $bb9; +$bb13: + assume ($i33 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1072, 7} true; + assume {:verifier.code 0} true; + $i34 := $add.i32($i32, 1); + call {:cexpr "c"} boogie_si_record_i32($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1073, 3} true; + assume {:verifier.code 0} true; + $i35 := $i34; + goto $bb15; +$bb14: + assume !(($i33 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1073, 16} true; + assume {:verifier.code 0} true; + $i36 := $slt.i32($i31, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1073, 14} true; + assume {:verifier.code 0} true; + $i37 := $i32; + assume {:branchcond $i36} true; + goto $bb16, $bb17; +$bb15: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1076, 5} true; + assume {:verifier.code 0} true; + $i39 := $add.i32($i27, $i27); + call {:cexpr "a"} boogie_si_record_i32($i39); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1077, 7} true; + assume {:verifier.code 0} true; + $i40 := $sext.i32.i64($i39); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1077, 9} true; + assume {:verifier.code 0} true; + $i41 := $srem.i64($i40, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1077, 7} true; + assume {:verifier.code 0} true; + $i42 := $trunc.i64.i32($i41); + call {:cexpr "a"} boogie_si_record_i32($i42); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1078, 5} true; + assume {:verifier.code 0} true; + $i43 := $add.i32($i31, $i31); + call {:cexpr "b"} boogie_si_record_i32($i43); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1079, 7} true; + assume {:verifier.code 0} true; + $i44 := $sext.i32.i64($i43); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1079, 9} true; + assume {:verifier.code 0} true; + $i45 := $srem.i64($i44, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1079, 7} true; + assume {:verifier.code 0} true; + $i46 := $trunc.i64.i32($i45); + call {:cexpr "b"} boogie_si_record_i32($i46); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1081, 5} true; + assume {:verifier.code 0} true; + $i47 := $add.i32($i35, $i35); + call {:cexpr "c"} boogie_si_record_i32($i47); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1082, 9} true; + assume {:verifier.code 0} true; + $i48 := $slt.i32($i42, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1082, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i48} true; + goto $bb19, $bb20; +$bb16: + assume ($i36 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1074, 7} true; + assume {:verifier.code 0} true; + $i38 := $add.i32($i32, 1); + call {:cexpr "c"} boogie_si_record_i32($i38); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1075, 3} true; + assume {:verifier.code 0} true; + $i37 := $i38; + goto $bb18; +$bb17: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1073, 14} true; + assume {:verifier.code 0} true; + assume !(($i36 == 1)); + goto $bb18; +$bb18: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i35 := $i37; + goto $bb15; +$bb19: + assume ($i48 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1083, 7} true; + assume {:verifier.code 0} true; + $i49 := $add.i32($i47, 1); + call {:cexpr "c"} boogie_si_record_i32($i49); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1084, 3} true; + assume {:verifier.code 0} true; + $i50 := $i49; + goto $bb21; +$bb20: + assume !(($i48 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1084, 16} true; + assume {:verifier.code 0} true; + $i51 := $slt.i32($i46, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1084, 14} true; + assume {:verifier.code 0} true; + $i52 := $i47; + assume {:branchcond $i51} true; + goto $bb22, $bb23; +$bb21: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1087, 5} true; + assume {:verifier.code 0} true; + $i54 := $add.i32($i42, $i42); + call {:cexpr "a"} boogie_si_record_i32($i54); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1088, 7} true; + assume {:verifier.code 0} true; + $i55 := $sext.i32.i64($i54); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1088, 9} true; + assume {:verifier.code 0} true; + $i56 := $srem.i64($i55, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1088, 7} true; + assume {:verifier.code 0} true; + $i57 := $trunc.i64.i32($i56); + call {:cexpr "a"} boogie_si_record_i32($i57); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1089, 5} true; + assume {:verifier.code 0} true; + $i58 := $add.i32($i46, $i46); + call {:cexpr "b"} boogie_si_record_i32($i58); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1090, 7} true; + assume {:verifier.code 0} true; + $i59 := $sext.i32.i64($i58); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1090, 9} true; + assume {:verifier.code 0} true; + $i60 := $srem.i64($i59, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1090, 7} true; + assume {:verifier.code 0} true; + $i61 := $trunc.i64.i32($i60); + call {:cexpr "b"} boogie_si_record_i32($i61); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1092, 5} true; + assume {:verifier.code 0} true; + $i62 := $add.i32($i50, $i50); + call {:cexpr "c"} boogie_si_record_i32($i62); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1093, 9} true; + assume {:verifier.code 0} true; + $i63 := $slt.i32($i57, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1093, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i63} true; + goto $bb25, $bb26; +$bb22: + assume ($i51 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1085, 7} true; + assume {:verifier.code 0} true; + $i53 := $add.i32($i47, 1); + call {:cexpr "c"} boogie_si_record_i32($i53); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1086, 3} true; + assume {:verifier.code 0} true; + $i52 := $i53; + goto $bb24; +$bb23: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1084, 14} true; + assume {:verifier.code 0} true; + assume !(($i51 == 1)); + goto $bb24; +$bb24: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i50 := $i52; + goto $bb21; +$bb25: + assume ($i63 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1094, 7} true; + assume {:verifier.code 0} true; + $i64 := $add.i32($i62, 1); + call {:cexpr "c"} boogie_si_record_i32($i64); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1095, 3} true; + assume {:verifier.code 0} true; + $i65 := $i64; + goto $bb27; +$bb26: + assume !(($i63 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1095, 16} true; + assume {:verifier.code 0} true; + $i66 := $slt.i32($i61, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1095, 14} true; + assume {:verifier.code 0} true; + $i67 := $i62; + assume {:branchcond $i66} true; + goto $bb28, $bb29; +$bb27: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1098, 5} true; + assume {:verifier.code 0} true; + $i69 := $add.i32($i57, $i57); + call {:cexpr "a"} boogie_si_record_i32($i69); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1099, 7} true; + assume {:verifier.code 0} true; + $i70 := $sext.i32.i64($i69); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1099, 9} true; + assume {:verifier.code 0} true; + $i71 := $srem.i64($i70, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1099, 7} true; + assume {:verifier.code 0} true; + $i72 := $trunc.i64.i32($i71); + call {:cexpr "a"} boogie_si_record_i32($i72); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1100, 5} true; + assume {:verifier.code 0} true; + $i73 := $add.i32($i61, $i61); + call {:cexpr "b"} boogie_si_record_i32($i73); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1101, 7} true; + assume {:verifier.code 0} true; + $i74 := $sext.i32.i64($i73); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1101, 9} true; + assume {:verifier.code 0} true; + $i75 := $srem.i64($i74, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1101, 7} true; + assume {:verifier.code 0} true; + $i76 := $trunc.i64.i32($i75); + call {:cexpr "b"} boogie_si_record_i32($i76); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1103, 5} true; + assume {:verifier.code 0} true; + $i77 := $add.i32($i65, $i65); + call {:cexpr "c"} boogie_si_record_i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1104, 9} true; + assume {:verifier.code 0} true; + $i78 := $slt.i32($i72, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1104, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i78} true; + goto $bb31, $bb32; +$bb28: + assume ($i66 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1096, 7} true; + assume {:verifier.code 0} true; + $i68 := $add.i32($i62, 1); + call {:cexpr "c"} boogie_si_record_i32($i68); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1097, 3} true; + assume {:verifier.code 0} true; + $i67 := $i68; + goto $bb30; +$bb29: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1095, 14} true; + assume {:verifier.code 0} true; + assume !(($i66 == 1)); + goto $bb30; +$bb30: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i65 := $i67; + goto $bb27; +$bb31: + assume ($i78 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1105, 7} true; + assume {:verifier.code 0} true; + $i79 := $add.i32($i77, 1); + call {:cexpr "c"} boogie_si_record_i32($i79); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1106, 3} true; + assume {:verifier.code 0} true; + $i80 := $i79; + goto $bb33; +$bb32: + assume !(($i78 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1106, 16} true; + assume {:verifier.code 0} true; + $i81 := $slt.i32($i76, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1106, 14} true; + assume {:verifier.code 0} true; + $i82 := $i77; + assume {:branchcond $i81} true; + goto $bb34, $bb35; +$bb33: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1109, 5} true; + assume {:verifier.code 0} true; + $i84 := $add.i32($i72, $i72); + call {:cexpr "a"} boogie_si_record_i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1110, 7} true; + assume {:verifier.code 0} true; + $i85 := $sext.i32.i64($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1110, 9} true; + assume {:verifier.code 0} true; + $i86 := $srem.i64($i85, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1110, 7} true; + assume {:verifier.code 0} true; + $i87 := $trunc.i64.i32($i86); + call {:cexpr "a"} boogie_si_record_i32($i87); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1111, 5} true; + assume {:verifier.code 0} true; + $i88 := $add.i32($i76, $i76); + call {:cexpr "b"} boogie_si_record_i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1112, 7} true; + assume {:verifier.code 0} true; + $i89 := $sext.i32.i64($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1112, 9} true; + assume {:verifier.code 0} true; + $i90 := $srem.i64($i89, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1112, 7} true; + assume {:verifier.code 0} true; + $i91 := $trunc.i64.i32($i90); + call {:cexpr "b"} boogie_si_record_i32($i91); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1114, 5} true; + assume {:verifier.code 0} true; + $i92 := $add.i32($i80, $i80); + call {:cexpr "c"} boogie_si_record_i32($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1115, 9} true; + assume {:verifier.code 0} true; + $i93 := $slt.i32($i87, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1115, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i93} true; + goto $bb37, $bb38; +$bb34: + assume ($i81 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1107, 7} true; + assume {:verifier.code 0} true; + $i83 := $add.i32($i77, 1); + call {:cexpr "c"} boogie_si_record_i32($i83); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1108, 3} true; + assume {:verifier.code 0} true; + $i82 := $i83; + goto $bb36; +$bb35: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1106, 14} true; + assume {:verifier.code 0} true; + assume !(($i81 == 1)); + goto $bb36; +$bb36: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i80 := $i82; + goto $bb33; +$bb37: + assume ($i93 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1116, 7} true; + assume {:verifier.code 0} true; + $i94 := $add.i32($i92, 1); + call {:cexpr "c"} boogie_si_record_i32($i94); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1117, 3} true; + assume {:verifier.code 0} true; + $i95 := $i94; + goto $bb39; +$bb38: + assume !(($i93 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1117, 16} true; + assume {:verifier.code 0} true; + $i96 := $slt.i32($i91, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1117, 14} true; + assume {:verifier.code 0} true; + $i97 := $i92; + assume {:branchcond $i96} true; + goto $bb40, $bb41; +$bb39: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1120, 5} true; + assume {:verifier.code 0} true; + $i99 := $add.i32($i87, $i87); + call {:cexpr "a"} boogie_si_record_i32($i99); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1121, 7} true; + assume {:verifier.code 0} true; + $i100 := $sext.i32.i64($i99); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1121, 9} true; + assume {:verifier.code 0} true; + $i101 := $srem.i64($i100, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1121, 7} true; + assume {:verifier.code 0} true; + $i102 := $trunc.i64.i32($i101); + call {:cexpr "a"} boogie_si_record_i32($i102); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1122, 5} true; + assume {:verifier.code 0} true; + $i103 := $add.i32($i91, $i91); + call {:cexpr "b"} boogie_si_record_i32($i103); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1123, 7} true; + assume {:verifier.code 0} true; + $i104 := $sext.i32.i64($i103); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1123, 9} true; + assume {:verifier.code 0} true; + $i105 := $srem.i64($i104, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1123, 7} true; + assume {:verifier.code 0} true; + $i106 := $trunc.i64.i32($i105); + call {:cexpr "b"} boogie_si_record_i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1125, 5} true; + assume {:verifier.code 0} true; + $i107 := $add.i32($i95, $i95); + call {:cexpr "c"} boogie_si_record_i32($i107); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1126, 9} true; + assume {:verifier.code 0} true; + $i108 := $slt.i32($i102, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1126, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i108} true; + goto $bb43, $bb44; +$bb40: + assume ($i96 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1118, 7} true; + assume {:verifier.code 0} true; + $i98 := $add.i32($i92, 1); + call {:cexpr "c"} boogie_si_record_i32($i98); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1119, 3} true; + assume {:verifier.code 0} true; + $i97 := $i98; + goto $bb42; +$bb41: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1117, 14} true; + assume {:verifier.code 0} true; + assume !(($i96 == 1)); + goto $bb42; +$bb42: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i95 := $i97; + goto $bb39; +$bb43: + assume ($i108 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1127, 7} true; + assume {:verifier.code 0} true; + $i109 := $add.i32($i107, 1); + call {:cexpr "c"} boogie_si_record_i32($i109); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1128, 3} true; + assume {:verifier.code 0} true; + $i110 := $i109; + goto $bb45; +$bb44: + assume !(($i108 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1128, 16} true; + assume {:verifier.code 0} true; + $i111 := $slt.i32($i106, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1128, 14} true; + assume {:verifier.code 0} true; + $i112 := $i107; + assume {:branchcond $i111} true; + goto $bb46, $bb47; +$bb45: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1131, 5} true; + assume {:verifier.code 0} true; + $i114 := $add.i32($i102, $i102); + call {:cexpr "a"} boogie_si_record_i32($i114); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1132, 7} true; + assume {:verifier.code 0} true; + $i115 := $sext.i32.i64($i114); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1132, 9} true; + assume {:verifier.code 0} true; + $i116 := $srem.i64($i115, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1132, 7} true; + assume {:verifier.code 0} true; + $i117 := $trunc.i64.i32($i116); + call {:cexpr "a"} boogie_si_record_i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1133, 5} true; + assume {:verifier.code 0} true; + $i118 := $add.i32($i106, $i106); + call {:cexpr "b"} boogie_si_record_i32($i118); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1134, 7} true; + assume {:verifier.code 0} true; + $i119 := $sext.i32.i64($i118); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1134, 9} true; + assume {:verifier.code 0} true; + $i120 := $srem.i64($i119, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1134, 7} true; + assume {:verifier.code 0} true; + $i121 := $trunc.i64.i32($i120); + call {:cexpr "b"} boogie_si_record_i32($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1136, 5} true; + assume {:verifier.code 0} true; + $i122 := $add.i32($i110, $i110); + call {:cexpr "c"} boogie_si_record_i32($i122); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1137, 9} true; + assume {:verifier.code 0} true; + $i123 := $slt.i32($i117, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1137, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i123} true; + goto $bb49, $bb50; +$bb46: + assume ($i111 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1129, 7} true; + assume {:verifier.code 0} true; + $i113 := $add.i32($i107, 1); + call {:cexpr "c"} boogie_si_record_i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1130, 3} true; + assume {:verifier.code 0} true; + $i112 := $i113; + goto $bb48; +$bb47: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1128, 14} true; + assume {:verifier.code 0} true; + assume !(($i111 == 1)); + goto $bb48; +$bb48: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i110 := $i112; + goto $bb45; +$bb49: + assume ($i123 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1138, 7} true; + assume {:verifier.code 0} true; + $i124 := $add.i32($i122, 1); + call {:cexpr "c"} boogie_si_record_i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1139, 3} true; + assume {:verifier.code 0} true; + $i125 := $i124; + goto $bb51; +$bb50: + assume !(($i123 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1139, 16} true; + assume {:verifier.code 0} true; + $i126 := $slt.i32($i121, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1139, 14} true; + assume {:verifier.code 0} true; + $i127 := $i122; + assume {:branchcond $i126} true; + goto $bb52, $bb53; +$bb51: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1142, 5} true; + assume {:verifier.code 0} true; + $i129 := $add.i32($i117, $i117); + call {:cexpr "a"} boogie_si_record_i32($i129); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1143, 7} true; + assume {:verifier.code 0} true; + $i130 := $sext.i32.i64($i129); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1143, 9} true; + assume {:verifier.code 0} true; + $i131 := $srem.i64($i130, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1143, 7} true; + assume {:verifier.code 0} true; + $i132 := $trunc.i64.i32($i131); + call {:cexpr "a"} boogie_si_record_i32($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1144, 5} true; + assume {:verifier.code 0} true; + $i133 := $add.i32($i121, $i121); + call {:cexpr "b"} boogie_si_record_i32($i133); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1145, 7} true; + assume {:verifier.code 0} true; + $i134 := $sext.i32.i64($i133); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1145, 9} true; + assume {:verifier.code 0} true; + $i135 := $srem.i64($i134, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1145, 7} true; + assume {:verifier.code 0} true; + $i136 := $trunc.i64.i32($i135); + call {:cexpr "b"} boogie_si_record_i32($i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1147, 5} true; + assume {:verifier.code 0} true; + $i137 := $add.i32($i125, $i125); + call {:cexpr "c"} boogie_si_record_i32($i137); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1148, 9} true; + assume {:verifier.code 0} true; + $i138 := $slt.i32($i132, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1148, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i138} true; + goto $bb55, $bb56; +$bb52: + assume ($i126 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1140, 7} true; + assume {:verifier.code 0} true; + $i128 := $add.i32($i122, 1); + call {:cexpr "c"} boogie_si_record_i32($i128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1141, 3} true; + assume {:verifier.code 0} true; + $i127 := $i128; + goto $bb54; +$bb53: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1139, 14} true; + assume {:verifier.code 0} true; + assume !(($i126 == 1)); + goto $bb54; +$bb54: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i125 := $i127; + goto $bb51; +$bb55: + assume ($i138 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1149, 7} true; + assume {:verifier.code 0} true; + $i139 := $add.i32($i137, 1); + call {:cexpr "c"} boogie_si_record_i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1150, 3} true; + assume {:verifier.code 0} true; + $i140 := $i139; + goto $bb57; +$bb56: + assume !(($i138 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1150, 16} true; + assume {:verifier.code 0} true; + $i141 := $slt.i32($i136, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1150, 14} true; + assume {:verifier.code 0} true; + $i142 := $i137; + assume {:branchcond $i141} true; + goto $bb58, $bb59; +$bb57: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1153, 5} true; + assume {:verifier.code 0} true; + $i144 := $add.i32($i132, $i132); + call {:cexpr "a"} boogie_si_record_i32($i144); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1154, 7} true; + assume {:verifier.code 0} true; + $i145 := $sext.i32.i64($i144); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1154, 9} true; + assume {:verifier.code 0} true; + $i146 := $srem.i64($i145, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1154, 7} true; + assume {:verifier.code 0} true; + $i147 := $trunc.i64.i32($i146); + call {:cexpr "a"} boogie_si_record_i32($i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1155, 5} true; + assume {:verifier.code 0} true; + $i148 := $add.i32($i136, $i136); + call {:cexpr "b"} boogie_si_record_i32($i148); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1156, 7} true; + assume {:verifier.code 0} true; + $i149 := $sext.i32.i64($i148); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1156, 9} true; + assume {:verifier.code 0} true; + $i150 := $srem.i64($i149, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1156, 7} true; + assume {:verifier.code 0} true; + $i151 := $trunc.i64.i32($i150); + call {:cexpr "b"} boogie_si_record_i32($i151); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1158, 5} true; + assume {:verifier.code 0} true; + $i152 := $add.i32($i140, $i140); + call {:cexpr "c"} boogie_si_record_i32($i152); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1159, 9} true; + assume {:verifier.code 0} true; + $i153 := $slt.i32($i147, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1159, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i153} true; + goto $bb61, $bb62; +$bb58: + assume ($i141 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1151, 7} true; + assume {:verifier.code 0} true; + $i143 := $add.i32($i137, 1); + call {:cexpr "c"} boogie_si_record_i32($i143); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1152, 3} true; + assume {:verifier.code 0} true; + $i142 := $i143; + goto $bb60; +$bb59: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1150, 14} true; + assume {:verifier.code 0} true; + assume !(($i141 == 1)); + goto $bb60; +$bb60: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i140 := $i142; + goto $bb57; +$bb61: + assume ($i153 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1160, 7} true; + assume {:verifier.code 0} true; + $i154 := $add.i32($i152, 1); + call {:cexpr "c"} boogie_si_record_i32($i154); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1161, 3} true; + assume {:verifier.code 0} true; + $i155 := $i154; + goto $bb63; +$bb62: + assume !(($i153 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1161, 16} true; + assume {:verifier.code 0} true; + $i156 := $slt.i32($i151, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1161, 14} true; + assume {:verifier.code 0} true; + $i157 := $i152; + assume {:branchcond $i156} true; + goto $bb64, $bb65; +$bb63: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1164, 5} true; + assume {:verifier.code 0} true; + $i159 := $add.i32($i147, $i147); + call {:cexpr "a"} boogie_si_record_i32($i159); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1165, 7} true; + assume {:verifier.code 0} true; + $i160 := $sext.i32.i64($i159); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1165, 9} true; + assume {:verifier.code 0} true; + $i161 := $srem.i64($i160, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1165, 7} true; + assume {:verifier.code 0} true; + $i162 := $trunc.i64.i32($i161); + call {:cexpr "a"} boogie_si_record_i32($i162); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1166, 5} true; + assume {:verifier.code 0} true; + $i163 := $add.i32($i151, $i151); + call {:cexpr "b"} boogie_si_record_i32($i163); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1167, 7} true; + assume {:verifier.code 0} true; + $i164 := $sext.i32.i64($i163); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1167, 9} true; + assume {:verifier.code 0} true; + $i165 := $srem.i64($i164, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1167, 7} true; + assume {:verifier.code 0} true; + $i166 := $trunc.i64.i32($i165); + call {:cexpr "b"} boogie_si_record_i32($i166); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1169, 5} true; + assume {:verifier.code 0} true; + $i167 := $add.i32($i155, $i155); + call {:cexpr "c"} boogie_si_record_i32($i167); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1170, 9} true; + assume {:verifier.code 0} true; + $i168 := $slt.i32($i162, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1170, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i168} true; + goto $bb67, $bb68; +$bb64: + assume ($i156 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1162, 7} true; + assume {:verifier.code 0} true; + $i158 := $add.i32($i152, 1); + call {:cexpr "c"} boogie_si_record_i32($i158); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1163, 3} true; + assume {:verifier.code 0} true; + $i157 := $i158; + goto $bb66; +$bb65: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1161, 14} true; + assume {:verifier.code 0} true; + assume !(($i156 == 1)); + goto $bb66; +$bb66: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i155 := $i157; + goto $bb63; +$bb67: + assume ($i168 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1171, 7} true; + assume {:verifier.code 0} true; + $i169 := $add.i32($i167, 1); + call {:cexpr "c"} boogie_si_record_i32($i169); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1172, 3} true; + assume {:verifier.code 0} true; + $i170 := $i169; + goto $bb69; +$bb68: + assume !(($i168 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1172, 16} true; + assume {:verifier.code 0} true; + $i171 := $slt.i32($i166, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1172, 14} true; + assume {:verifier.code 0} true; + $i172 := $i167; + assume {:branchcond $i171} true; + goto $bb70, $bb71; +$bb69: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1175, 5} true; + assume {:verifier.code 0} true; + $i174 := $add.i32($i162, $i162); + call {:cexpr "a"} boogie_si_record_i32($i174); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1176, 7} true; + assume {:verifier.code 0} true; + $i175 := $sext.i32.i64($i174); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1176, 9} true; + assume {:verifier.code 0} true; + $i176 := $srem.i64($i175, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1176, 7} true; + assume {:verifier.code 0} true; + $i177 := $trunc.i64.i32($i176); + call {:cexpr "a"} boogie_si_record_i32($i177); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1177, 5} true; + assume {:verifier.code 0} true; + $i178 := $add.i32($i166, $i166); + call {:cexpr "b"} boogie_si_record_i32($i178); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1178, 7} true; + assume {:verifier.code 0} true; + $i179 := $sext.i32.i64($i178); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1178, 9} true; + assume {:verifier.code 0} true; + $i180 := $srem.i64($i179, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1178, 7} true; + assume {:verifier.code 0} true; + $i181 := $trunc.i64.i32($i180); + call {:cexpr "b"} boogie_si_record_i32($i181); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1180, 5} true; + assume {:verifier.code 0} true; + $i182 := $add.i32($i170, $i170); + call {:cexpr "c"} boogie_si_record_i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1181, 9} true; + assume {:verifier.code 0} true; + $i183 := $slt.i32($i177, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1181, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i183} true; + goto $bb73, $bb74; +$bb70: + assume ($i171 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1173, 7} true; + assume {:verifier.code 0} true; + $i173 := $add.i32($i167, 1); + call {:cexpr "c"} boogie_si_record_i32($i173); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1174, 3} true; + assume {:verifier.code 0} true; + $i172 := $i173; + goto $bb72; +$bb71: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1172, 14} true; + assume {:verifier.code 0} true; + assume !(($i171 == 1)); + goto $bb72; +$bb72: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i170 := $i172; + goto $bb69; +$bb73: + assume ($i183 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1182, 7} true; + assume {:verifier.code 0} true; + $i184 := $add.i32($i182, 1); + call {:cexpr "c"} boogie_si_record_i32($i184); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1183, 3} true; + assume {:verifier.code 0} true; + $i185 := $i184; + goto $bb75; +$bb74: + assume !(($i183 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1183, 16} true; + assume {:verifier.code 0} true; + $i186 := $slt.i32($i181, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1183, 14} true; + assume {:verifier.code 0} true; + $i187 := $i182; + assume {:branchcond $i186} true; + goto $bb76, $bb77; +$bb75: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1186, 5} true; + assume {:verifier.code 0} true; + $i189 := $add.i32($i177, $i177); + call {:cexpr "a"} boogie_si_record_i32($i189); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1187, 7} true; + assume {:verifier.code 0} true; + $i190 := $sext.i32.i64($i189); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1187, 9} true; + assume {:verifier.code 0} true; + $i191 := $srem.i64($i190, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1187, 7} true; + assume {:verifier.code 0} true; + $i192 := $trunc.i64.i32($i191); + call {:cexpr "a"} boogie_si_record_i32($i192); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1188, 5} true; + assume {:verifier.code 0} true; + $i193 := $add.i32($i181, $i181); + call {:cexpr "b"} boogie_si_record_i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1189, 7} true; + assume {:verifier.code 0} true; + $i194 := $sext.i32.i64($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1189, 9} true; + assume {:verifier.code 0} true; + $i195 := $srem.i64($i194, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1189, 7} true; + assume {:verifier.code 0} true; + $i196 := $trunc.i64.i32($i195); + call {:cexpr "b"} boogie_si_record_i32($i196); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1191, 5} true; + assume {:verifier.code 0} true; + $i197 := $add.i32($i185, $i185); + call {:cexpr "c"} boogie_si_record_i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1192, 9} true; + assume {:verifier.code 0} true; + $i198 := $slt.i32($i192, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1192, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i198} true; + goto $bb79, $bb80; +$bb76: + assume ($i186 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1184, 7} true; + assume {:verifier.code 0} true; + $i188 := $add.i32($i182, 1); + call {:cexpr "c"} boogie_si_record_i32($i188); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1185, 3} true; + assume {:verifier.code 0} true; + $i187 := $i188; + goto $bb78; +$bb77: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1183, 14} true; + assume {:verifier.code 0} true; + assume !(($i186 == 1)); + goto $bb78; +$bb78: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i185 := $i187; + goto $bb75; +$bb79: + assume ($i198 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1193, 7} true; + assume {:verifier.code 0} true; + $i199 := $add.i32($i197, 1); + call {:cexpr "c"} boogie_si_record_i32($i199); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1194, 3} true; + assume {:verifier.code 0} true; + $i200 := $i199; + goto $bb81; +$bb80: + assume !(($i198 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1194, 16} true; + assume {:verifier.code 0} true; + $i201 := $slt.i32($i196, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1194, 14} true; + assume {:verifier.code 0} true; + $i202 := $i197; + assume {:branchcond $i201} true; + goto $bb82, $bb83; +$bb81: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1197, 5} true; + assume {:verifier.code 0} true; + $i204 := $add.i32($i192, $i192); + call {:cexpr "a"} boogie_si_record_i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1198, 7} true; + assume {:verifier.code 0} true; + $i205 := $sext.i32.i64($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1198, 9} true; + assume {:verifier.code 0} true; + $i206 := $srem.i64($i205, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1198, 7} true; + assume {:verifier.code 0} true; + $i207 := $trunc.i64.i32($i206); + call {:cexpr "a"} boogie_si_record_i32($i207); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1199, 5} true; + assume {:verifier.code 0} true; + $i208 := $add.i32($i196, $i196); + call {:cexpr "b"} boogie_si_record_i32($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1200, 7} true; + assume {:verifier.code 0} true; + $i209 := $sext.i32.i64($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1200, 9} true; + assume {:verifier.code 0} true; + $i210 := $srem.i64($i209, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1200, 7} true; + assume {:verifier.code 0} true; + $i211 := $trunc.i64.i32($i210); + call {:cexpr "b"} boogie_si_record_i32($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1202, 5} true; + assume {:verifier.code 0} true; + $i212 := $add.i32($i200, $i200); + call {:cexpr "c"} boogie_si_record_i32($i212); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1203, 9} true; + assume {:verifier.code 0} true; + $i213 := $slt.i32($i207, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1203, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i213} true; + goto $bb85, $bb86; +$bb82: + assume ($i201 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1195, 7} true; + assume {:verifier.code 0} true; + $i203 := $add.i32($i197, 1); + call {:cexpr "c"} boogie_si_record_i32($i203); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1196, 3} true; + assume {:verifier.code 0} true; + $i202 := $i203; + goto $bb84; +$bb83: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1194, 14} true; + assume {:verifier.code 0} true; + assume !(($i201 == 1)); + goto $bb84; +$bb84: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i200 := $i202; + goto $bb81; +$bb85: + assume ($i213 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1204, 7} true; + assume {:verifier.code 0} true; + $i214 := $add.i32($i212, 1); + call {:cexpr "c"} boogie_si_record_i32($i214); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1205, 3} true; + assume {:verifier.code 0} true; + $i215 := $i214; + goto $bb87; +$bb86: + assume !(($i213 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1205, 16} true; + assume {:verifier.code 0} true; + $i216 := $slt.i32($i211, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1205, 14} true; + assume {:verifier.code 0} true; + $i217 := $i212; + assume {:branchcond $i216} true; + goto $bb88, $bb89; +$bb87: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1208, 5} true; + assume {:verifier.code 0} true; + $i219 := $add.i32($i207, $i207); + call {:cexpr "a"} boogie_si_record_i32($i219); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1209, 7} true; + assume {:verifier.code 0} true; + $i220 := $sext.i32.i64($i219); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1209, 9} true; + assume {:verifier.code 0} true; + $i221 := $srem.i64($i220, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1209, 7} true; + assume {:verifier.code 0} true; + $i222 := $trunc.i64.i32($i221); + call {:cexpr "a"} boogie_si_record_i32($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1210, 5} true; + assume {:verifier.code 0} true; + $i223 := $add.i32($i211, $i211); + call {:cexpr "b"} boogie_si_record_i32($i223); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1211, 7} true; + assume {:verifier.code 0} true; + $i224 := $sext.i32.i64($i223); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1211, 9} true; + assume {:verifier.code 0} true; + $i225 := $srem.i64($i224, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1211, 7} true; + assume {:verifier.code 0} true; + $i226 := $trunc.i64.i32($i225); + call {:cexpr "b"} boogie_si_record_i32($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1213, 5} true; + assume {:verifier.code 0} true; + $i227 := $add.i32($i215, $i215); + call {:cexpr "c"} boogie_si_record_i32($i227); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1214, 9} true; + assume {:verifier.code 0} true; + $i228 := $slt.i32($i222, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1214, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i228} true; + goto $bb91, $bb92; +$bb88: + assume ($i216 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1206, 7} true; + assume {:verifier.code 0} true; + $i218 := $add.i32($i212, 1); + call {:cexpr "c"} boogie_si_record_i32($i218); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1207, 3} true; + assume {:verifier.code 0} true; + $i217 := $i218; + goto $bb90; +$bb89: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1205, 14} true; + assume {:verifier.code 0} true; + assume !(($i216 == 1)); + goto $bb90; +$bb90: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i215 := $i217; + goto $bb87; +$bb91: + assume ($i228 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1215, 7} true; + assume {:verifier.code 0} true; + $i229 := $add.i32($i227, 1); + call {:cexpr "c"} boogie_si_record_i32($i229); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1216, 3} true; + assume {:verifier.code 0} true; + $i230 := $i229; + goto $bb93; +$bb92: + assume !(($i228 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1216, 16} true; + assume {:verifier.code 0} true; + $i231 := $slt.i32($i226, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1216, 14} true; + assume {:verifier.code 0} true; + $i232 := $i227; + assume {:branchcond $i231} true; + goto $bb94, $bb95; +$bb93: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1219, 5} true; + assume {:verifier.code 0} true; + $i234 := $add.i32($i222, $i222); + call {:cexpr "a"} boogie_si_record_i32($i234); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1220, 7} true; + assume {:verifier.code 0} true; + $i235 := $sext.i32.i64($i234); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1220, 9} true; + assume {:verifier.code 0} true; + $i236 := $srem.i64($i235, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1220, 7} true; + assume {:verifier.code 0} true; + $i237 := $trunc.i64.i32($i236); + call {:cexpr "a"} boogie_si_record_i32($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1221, 5} true; + assume {:verifier.code 0} true; + $i238 := $add.i32($i226, $i226); + call {:cexpr "b"} boogie_si_record_i32($i238); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1222, 7} true; + assume {:verifier.code 0} true; + $i239 := $sext.i32.i64($i238); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1222, 9} true; + assume {:verifier.code 0} true; + $i240 := $srem.i64($i239, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1222, 7} true; + assume {:verifier.code 0} true; + $i241 := $trunc.i64.i32($i240); + call {:cexpr "b"} boogie_si_record_i32($i241); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1224, 5} true; + assume {:verifier.code 0} true; + $i242 := $add.i32($i230, $i230); + call {:cexpr "c"} boogie_si_record_i32($i242); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1225, 9} true; + assume {:verifier.code 0} true; + $i243 := $slt.i32($i237, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1225, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i243} true; + goto $bb97, $bb98; +$bb94: + assume ($i231 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1217, 7} true; + assume {:verifier.code 0} true; + $i233 := $add.i32($i227, 1); + call {:cexpr "c"} boogie_si_record_i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1218, 3} true; + assume {:verifier.code 0} true; + $i232 := $i233; + goto $bb96; +$bb95: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1216, 14} true; + assume {:verifier.code 0} true; + assume !(($i231 == 1)); + goto $bb96; +$bb96: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i230 := $i232; + goto $bb93; +$bb97: + assume ($i243 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1226, 7} true; + assume {:verifier.code 0} true; + $i244 := $add.i32($i242, 1); + call {:cexpr "c"} boogie_si_record_i32($i244); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1227, 3} true; + assume {:verifier.code 0} true; + $i245 := $i244; + goto $bb99; +$bb98: + assume !(($i243 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1227, 16} true; + assume {:verifier.code 0} true; + $i246 := $slt.i32($i241, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1227, 14} true; + assume {:verifier.code 0} true; + $i247 := $i242; + assume {:branchcond $i246} true; + goto $bb100, $bb101; +$bb99: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1230, 5} true; + assume {:verifier.code 0} true; + $i249 := $add.i32($i237, $i237); + call {:cexpr "a"} boogie_si_record_i32($i249); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1231, 7} true; + assume {:verifier.code 0} true; + $i250 := $sext.i32.i64($i249); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1231, 9} true; + assume {:verifier.code 0} true; + $i251 := $srem.i64($i250, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1231, 7} true; + assume {:verifier.code 0} true; + $i252 := $trunc.i64.i32($i251); + call {:cexpr "a"} boogie_si_record_i32($i252); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1232, 5} true; + assume {:verifier.code 0} true; + $i253 := $add.i32($i241, $i241); + call {:cexpr "b"} boogie_si_record_i32($i253); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1233, 7} true; + assume {:verifier.code 0} true; + $i254 := $sext.i32.i64($i253); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1233, 9} true; + assume {:verifier.code 0} true; + $i255 := $srem.i64($i254, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1233, 7} true; + assume {:verifier.code 0} true; + $i256 := $trunc.i64.i32($i255); + call {:cexpr "b"} boogie_si_record_i32($i256); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1235, 5} true; + assume {:verifier.code 0} true; + $i257 := $add.i32($i245, $i245); + call {:cexpr "c"} boogie_si_record_i32($i257); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1236, 9} true; + assume {:verifier.code 0} true; + $i258 := $slt.i32($i252, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1236, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i258} true; + goto $bb103, $bb104; +$bb100: + assume ($i246 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1228, 7} true; + assume {:verifier.code 0} true; + $i248 := $add.i32($i242, 1); + call {:cexpr "c"} boogie_si_record_i32($i248); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1229, 3} true; + assume {:verifier.code 0} true; + $i247 := $i248; + goto $bb102; +$bb101: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1227, 14} true; + assume {:verifier.code 0} true; + assume !(($i246 == 1)); + goto $bb102; +$bb102: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i245 := $i247; + goto $bb99; +$bb103: + assume ($i258 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1237, 7} true; + assume {:verifier.code 0} true; + $i259 := $add.i32($i257, 1); + call {:cexpr "c"} boogie_si_record_i32($i259); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1238, 3} true; + assume {:verifier.code 0} true; + $i260 := $i259; + goto $bb105; +$bb104: + assume !(($i258 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1238, 16} true; + assume {:verifier.code 0} true; + $i261 := $slt.i32($i256, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1238, 14} true; + assume {:verifier.code 0} true; + $i262 := $i257; + assume {:branchcond $i261} true; + goto $bb106, $bb107; +$bb105: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1241, 5} true; + assume {:verifier.code 0} true; + $i264 := $add.i32($i252, $i252); + call {:cexpr "a"} boogie_si_record_i32($i264); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1242, 7} true; + assume {:verifier.code 0} true; + $i265 := $sext.i32.i64($i264); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1242, 9} true; + assume {:verifier.code 0} true; + $i266 := $srem.i64($i265, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1242, 7} true; + assume {:verifier.code 0} true; + $i267 := $trunc.i64.i32($i266); + call {:cexpr "a"} boogie_si_record_i32($i267); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1243, 5} true; + assume {:verifier.code 0} true; + $i268 := $add.i32($i256, $i256); + call {:cexpr "b"} boogie_si_record_i32($i268); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1244, 7} true; + assume {:verifier.code 0} true; + $i269 := $sext.i32.i64($i268); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1244, 9} true; + assume {:verifier.code 0} true; + $i270 := $srem.i64($i269, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1244, 7} true; + assume {:verifier.code 0} true; + $i271 := $trunc.i64.i32($i270); + call {:cexpr "b"} boogie_si_record_i32($i271); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1246, 5} true; + assume {:verifier.code 0} true; + $i272 := $add.i32($i260, $i260); + call {:cexpr "c"} boogie_si_record_i32($i272); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1247, 9} true; + assume {:verifier.code 0} true; + $i273 := $slt.i32($i267, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1247, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i273} true; + goto $bb109, $bb110; +$bb106: + assume ($i261 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1239, 7} true; + assume {:verifier.code 0} true; + $i263 := $add.i32($i257, 1); + call {:cexpr "c"} boogie_si_record_i32($i263); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1240, 3} true; + assume {:verifier.code 0} true; + $i262 := $i263; + goto $bb108; +$bb107: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1238, 14} true; + assume {:verifier.code 0} true; + assume !(($i261 == 1)); + goto $bb108; +$bb108: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i260 := $i262; + goto $bb105; +$bb109: + assume ($i273 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1248, 7} true; + assume {:verifier.code 0} true; + $i274 := $add.i32($i272, 1); + call {:cexpr "c"} boogie_si_record_i32($i274); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1249, 3} true; + assume {:verifier.code 0} true; + $i275 := $i274; + goto $bb111; +$bb110: + assume !(($i273 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1249, 16} true; + assume {:verifier.code 0} true; + $i276 := $slt.i32($i271, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1249, 14} true; + assume {:verifier.code 0} true; + $i277 := $i272; + assume {:branchcond $i276} true; + goto $bb112, $bb113; +$bb111: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1252, 5} true; + assume {:verifier.code 0} true; + $i279 := $add.i32($i267, $i267); + call {:cexpr "a"} boogie_si_record_i32($i279); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1253, 7} true; + assume {:verifier.code 0} true; + $i280 := $sext.i32.i64($i279); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1253, 9} true; + assume {:verifier.code 0} true; + $i281 := $srem.i64($i280, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1253, 7} true; + assume {:verifier.code 0} true; + $i282 := $trunc.i64.i32($i281); + call {:cexpr "a"} boogie_si_record_i32($i282); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1254, 5} true; + assume {:verifier.code 0} true; + $i283 := $add.i32($i271, $i271); + call {:cexpr "b"} boogie_si_record_i32($i283); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1255, 7} true; + assume {:verifier.code 0} true; + $i284 := $sext.i32.i64($i283); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1255, 9} true; + assume {:verifier.code 0} true; + $i285 := $srem.i64($i284, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1255, 7} true; + assume {:verifier.code 0} true; + $i286 := $trunc.i64.i32($i285); + call {:cexpr "b"} boogie_si_record_i32($i286); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1257, 5} true; + assume {:verifier.code 0} true; + $i287 := $add.i32($i275, $i275); + call {:cexpr "c"} boogie_si_record_i32($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1258, 9} true; + assume {:verifier.code 0} true; + $i288 := $slt.i32($i282, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1258, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i288} true; + goto $bb115, $bb116; +$bb112: + assume ($i276 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1250, 7} true; + assume {:verifier.code 0} true; + $i278 := $add.i32($i272, 1); + call {:cexpr "c"} boogie_si_record_i32($i278); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1251, 3} true; + assume {:verifier.code 0} true; + $i277 := $i278; + goto $bb114; +$bb113: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1249, 14} true; + assume {:verifier.code 0} true; + assume !(($i276 == 1)); + goto $bb114; +$bb114: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i275 := $i277; + goto $bb111; +$bb115: + assume ($i288 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1259, 7} true; + assume {:verifier.code 0} true; + $i289 := $add.i32($i287, 1); + call {:cexpr "c"} boogie_si_record_i32($i289); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1260, 3} true; + assume {:verifier.code 0} true; + $i290 := $i289; + goto $bb117; +$bb116: + assume !(($i288 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1260, 16} true; + assume {:verifier.code 0} true; + $i291 := $slt.i32($i286, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1260, 14} true; + assume {:verifier.code 0} true; + $i292 := $i287; + assume {:branchcond $i291} true; + goto $bb118, $bb119; +$bb117: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1263, 5} true; + assume {:verifier.code 0} true; + $i294 := $add.i32($i282, $i282); + call {:cexpr "a"} boogie_si_record_i32($i294); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1264, 7} true; + assume {:verifier.code 0} true; + $i295 := $sext.i32.i64($i294); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1264, 9} true; + assume {:verifier.code 0} true; + $i296 := $srem.i64($i295, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1264, 7} true; + assume {:verifier.code 0} true; + $i297 := $trunc.i64.i32($i296); + call {:cexpr "a"} boogie_si_record_i32($i297); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1265, 5} true; + assume {:verifier.code 0} true; + $i298 := $add.i32($i286, $i286); + call {:cexpr "b"} boogie_si_record_i32($i298); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1266, 7} true; + assume {:verifier.code 0} true; + $i299 := $sext.i32.i64($i298); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1266, 9} true; + assume {:verifier.code 0} true; + $i300 := $srem.i64($i299, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1266, 7} true; + assume {:verifier.code 0} true; + $i301 := $trunc.i64.i32($i300); + call {:cexpr "b"} boogie_si_record_i32($i301); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1268, 5} true; + assume {:verifier.code 0} true; + $i302 := $add.i32($i290, $i290); + call {:cexpr "c"} boogie_si_record_i32($i302); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1269, 9} true; + assume {:verifier.code 0} true; + $i303 := $slt.i32($i297, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1269, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i303} true; + goto $bb121, $bb122; +$bb118: + assume ($i291 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1261, 7} true; + assume {:verifier.code 0} true; + $i293 := $add.i32($i287, 1); + call {:cexpr "c"} boogie_si_record_i32($i293); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1262, 3} true; + assume {:verifier.code 0} true; + $i292 := $i293; + goto $bb120; +$bb119: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1260, 14} true; + assume {:verifier.code 0} true; + assume !(($i291 == 1)); + goto $bb120; +$bb120: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i290 := $i292; + goto $bb117; +$bb121: + assume ($i303 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1270, 7} true; + assume {:verifier.code 0} true; + $i304 := $add.i32($i302, 1); + call {:cexpr "c"} boogie_si_record_i32($i304); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1271, 3} true; + assume {:verifier.code 0} true; + $i305 := $i304; + goto $bb123; +$bb122: + assume !(($i303 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1271, 16} true; + assume {:verifier.code 0} true; + $i306 := $slt.i32($i301, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1271, 14} true; + assume {:verifier.code 0} true; + $i307 := $i302; + assume {:branchcond $i306} true; + goto $bb124, $bb125; +$bb123: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1274, 5} true; + assume {:verifier.code 0} true; + $i309 := $add.i32($i297, $i297); + call {:cexpr "a"} boogie_si_record_i32($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1275, 7} true; + assume {:verifier.code 0} true; + $i310 := $sext.i32.i64($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1275, 9} true; + assume {:verifier.code 0} true; + $i311 := $srem.i64($i310, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1275, 7} true; + assume {:verifier.code 0} true; + $i312 := $trunc.i64.i32($i311); + call {:cexpr "a"} boogie_si_record_i32($i312); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1276, 5} true; + assume {:verifier.code 0} true; + $i313 := $add.i32($i301, $i301); + call {:cexpr "b"} boogie_si_record_i32($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1277, 7} true; + assume {:verifier.code 0} true; + $i314 := $sext.i32.i64($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1277, 9} true; + assume {:verifier.code 0} true; + $i315 := $srem.i64($i314, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1277, 7} true; + assume {:verifier.code 0} true; + $i316 := $trunc.i64.i32($i315); + call {:cexpr "b"} boogie_si_record_i32($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1279, 5} true; + assume {:verifier.code 0} true; + $i317 := $add.i32($i305, $i305); + call {:cexpr "c"} boogie_si_record_i32($i317); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1280, 9} true; + assume {:verifier.code 0} true; + $i318 := $slt.i32($i312, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1280, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i318} true; + goto $bb127, $bb128; +$bb124: + assume ($i306 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1272, 7} true; + assume {:verifier.code 0} true; + $i308 := $add.i32($i302, 1); + call {:cexpr "c"} boogie_si_record_i32($i308); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1273, 3} true; + assume {:verifier.code 0} true; + $i307 := $i308; + goto $bb126; +$bb125: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1271, 14} true; + assume {:verifier.code 0} true; + assume !(($i306 == 1)); + goto $bb126; +$bb126: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i305 := $i307; + goto $bb123; +$bb127: + assume ($i318 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1281, 7} true; + assume {:verifier.code 0} true; + $i319 := $add.i32($i317, 1); + call {:cexpr "c"} boogie_si_record_i32($i319); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1282, 3} true; + assume {:verifier.code 0} true; + $i320 := $i319; + goto $bb129; +$bb128: + assume !(($i318 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1282, 16} true; + assume {:verifier.code 0} true; + $i321 := $slt.i32($i316, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1282, 14} true; + assume {:verifier.code 0} true; + $i322 := $i317; + assume {:branchcond $i321} true; + goto $bb130, $bb131; +$bb129: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1285, 5} true; + assume {:verifier.code 0} true; + $i324 := $add.i32($i312, $i312); + call {:cexpr "a"} boogie_si_record_i32($i324); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1286, 7} true; + assume {:verifier.code 0} true; + $i325 := $sext.i32.i64($i324); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1286, 9} true; + assume {:verifier.code 0} true; + $i326 := $srem.i64($i325, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1286, 7} true; + assume {:verifier.code 0} true; + $i327 := $trunc.i64.i32($i326); + call {:cexpr "a"} boogie_si_record_i32($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1287, 5} true; + assume {:verifier.code 0} true; + $i328 := $add.i32($i316, $i316); + call {:cexpr "b"} boogie_si_record_i32($i328); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1288, 7} true; + assume {:verifier.code 0} true; + $i329 := $sext.i32.i64($i328); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1288, 9} true; + assume {:verifier.code 0} true; + $i330 := $srem.i64($i329, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1288, 7} true; + assume {:verifier.code 0} true; + $i331 := $trunc.i64.i32($i330); + call {:cexpr "b"} boogie_si_record_i32($i331); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1290, 5} true; + assume {:verifier.code 0} true; + $i332 := $add.i32($i320, $i320); + call {:cexpr "c"} boogie_si_record_i32($i332); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1291, 9} true; + assume {:verifier.code 0} true; + $i333 := $slt.i32($i327, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1291, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i333} true; + goto $bb133, $bb134; +$bb130: + assume ($i321 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1283, 7} true; + assume {:verifier.code 0} true; + $i323 := $add.i32($i317, 1); + call {:cexpr "c"} boogie_si_record_i32($i323); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1284, 3} true; + assume {:verifier.code 0} true; + $i322 := $i323; + goto $bb132; +$bb131: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1282, 14} true; + assume {:verifier.code 0} true; + assume !(($i321 == 1)); + goto $bb132; +$bb132: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i320 := $i322; + goto $bb129; +$bb133: + assume ($i333 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1292, 7} true; + assume {:verifier.code 0} true; + $i334 := $add.i32($i332, 1); + call {:cexpr "c"} boogie_si_record_i32($i334); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1293, 3} true; + assume {:verifier.code 0} true; + $i335 := $i334; + goto $bb135; +$bb134: + assume !(($i333 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1293, 16} true; + assume {:verifier.code 0} true; + $i336 := $slt.i32($i331, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1293, 14} true; + assume {:verifier.code 0} true; + $i337 := $i332; + assume {:branchcond $i336} true; + goto $bb136, $bb137; +$bb135: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1296, 5} true; + assume {:verifier.code 0} true; + $i339 := $add.i32($i327, $i327); + call {:cexpr "a"} boogie_si_record_i32($i339); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1297, 7} true; + assume {:verifier.code 0} true; + $i340 := $sext.i32.i64($i339); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1297, 9} true; + assume {:verifier.code 0} true; + $i341 := $srem.i64($i340, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1297, 7} true; + assume {:verifier.code 0} true; + $i342 := $trunc.i64.i32($i341); + call {:cexpr "a"} boogie_si_record_i32($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1298, 5} true; + assume {:verifier.code 0} true; + $i343 := $add.i32($i331, $i331); + call {:cexpr "b"} boogie_si_record_i32($i343); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1299, 7} true; + assume {:verifier.code 0} true; + $i344 := $sext.i32.i64($i343); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1299, 9} true; + assume {:verifier.code 0} true; + $i345 := $srem.i64($i344, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1299, 7} true; + assume {:verifier.code 0} true; + $i346 := $trunc.i64.i32($i345); + call {:cexpr "b"} boogie_si_record_i32($i346); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1301, 5} true; + assume {:verifier.code 0} true; + $i347 := $add.i32($i335, $i335); + call {:cexpr "c"} boogie_si_record_i32($i347); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1302, 9} true; + assume {:verifier.code 0} true; + $i348 := $slt.i32($i342, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1302, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i348} true; + goto $bb139, $bb140; +$bb136: + assume ($i336 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1294, 7} true; + assume {:verifier.code 0} true; + $i338 := $add.i32($i332, 1); + call {:cexpr "c"} boogie_si_record_i32($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1295, 3} true; + assume {:verifier.code 0} true; + $i337 := $i338; + goto $bb138; +$bb137: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1293, 14} true; + assume {:verifier.code 0} true; + assume !(($i336 == 1)); + goto $bb138; +$bb138: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i335 := $i337; + goto $bb135; +$bb139: + assume ($i348 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1303, 7} true; + assume {:verifier.code 0} true; + $i349 := $add.i32($i347, 1); + call {:cexpr "c"} boogie_si_record_i32($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1304, 3} true; + assume {:verifier.code 0} true; + $i350 := $i349; + goto $bb141; +$bb140: + assume !(($i348 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1304, 16} true; + assume {:verifier.code 0} true; + $i351 := $slt.i32($i346, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1304, 14} true; + assume {:verifier.code 0} true; + $i352 := $i347; + assume {:branchcond $i351} true; + goto $bb142, $bb143; +$bb141: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1307, 5} true; + assume {:verifier.code 0} true; + $i354 := $add.i32($i342, $i342); + call {:cexpr "a"} boogie_si_record_i32($i354); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1308, 7} true; + assume {:verifier.code 0} true; + $i355 := $sext.i32.i64($i354); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1308, 9} true; + assume {:verifier.code 0} true; + $i356 := $srem.i64($i355, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1308, 7} true; + assume {:verifier.code 0} true; + $i357 := $trunc.i64.i32($i356); + call {:cexpr "a"} boogie_si_record_i32($i357); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1309, 5} true; + assume {:verifier.code 0} true; + $i358 := $add.i32($i346, $i346); + call {:cexpr "b"} boogie_si_record_i32($i358); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1310, 7} true; + assume {:verifier.code 0} true; + $i359 := $sext.i32.i64($i358); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1310, 9} true; + assume {:verifier.code 0} true; + $i360 := $srem.i64($i359, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1310, 7} true; + assume {:verifier.code 0} true; + $i361 := $trunc.i64.i32($i360); + call {:cexpr "b"} boogie_si_record_i32($i361); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1312, 5} true; + assume {:verifier.code 0} true; + $i362 := $add.i32($i350, $i350); + call {:cexpr "c"} boogie_si_record_i32($i362); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1313, 9} true; + assume {:verifier.code 0} true; + $i363 := $slt.i32($i357, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1313, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i363} true; + goto $bb145, $bb146; +$bb142: + assume ($i351 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1305, 7} true; + assume {:verifier.code 0} true; + $i353 := $add.i32($i347, 1); + call {:cexpr "c"} boogie_si_record_i32($i353); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1306, 3} true; + assume {:verifier.code 0} true; + $i352 := $i353; + goto $bb144; +$bb143: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1304, 14} true; + assume {:verifier.code 0} true; + assume !(($i351 == 1)); + goto $bb144; +$bb144: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i350 := $i352; + goto $bb141; +$bb145: + assume ($i363 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1314, 7} true; + assume {:verifier.code 0} true; + $i364 := $add.i32($i362, 1); + call {:cexpr "c"} boogie_si_record_i32($i364); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1315, 3} true; + assume {:verifier.code 0} true; + $i365 := $i364; + goto $bb147; +$bb146: + assume !(($i363 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1315, 16} true; + assume {:verifier.code 0} true; + $i366 := $slt.i32($i361, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1315, 14} true; + assume {:verifier.code 0} true; + $i367 := $i362; + assume {:branchcond $i366} true; + goto $bb148, $bb149; +$bb147: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1318, 5} true; + assume {:verifier.code 0} true; + $i369 := $add.i32($i357, $i357); + call {:cexpr "a"} boogie_si_record_i32($i369); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1319, 7} true; + assume {:verifier.code 0} true; + $i370 := $sext.i32.i64($i369); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1319, 9} true; + assume {:verifier.code 0} true; + $i371 := $srem.i64($i370, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1319, 7} true; + assume {:verifier.code 0} true; + $i372 := $trunc.i64.i32($i371); + call {:cexpr "a"} boogie_si_record_i32($i372); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1320, 5} true; + assume {:verifier.code 0} true; + $i373 := $add.i32($i361, $i361); + call {:cexpr "b"} boogie_si_record_i32($i373); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1321, 7} true; + assume {:verifier.code 0} true; + $i374 := $sext.i32.i64($i373); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1321, 9} true; + assume {:verifier.code 0} true; + $i375 := $srem.i64($i374, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1321, 7} true; + assume {:verifier.code 0} true; + $i376 := $trunc.i64.i32($i375); + call {:cexpr "b"} boogie_si_record_i32($i376); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1323, 5} true; + assume {:verifier.code 0} true; + $i377 := $add.i32($i365, $i365); + call {:cexpr "c"} boogie_si_record_i32($i377); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1324, 9} true; + assume {:verifier.code 0} true; + $i378 := $slt.i32($i372, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1324, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i378} true; + goto $bb151, $bb152; +$bb148: + assume ($i366 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1316, 7} true; + assume {:verifier.code 0} true; + $i368 := $add.i32($i362, 1); + call {:cexpr "c"} boogie_si_record_i32($i368); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1317, 3} true; + assume {:verifier.code 0} true; + $i367 := $i368; + goto $bb150; +$bb149: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1315, 14} true; + assume {:verifier.code 0} true; + assume !(($i366 == 1)); + goto $bb150; +$bb150: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i365 := $i367; + goto $bb147; +$bb151: + assume ($i378 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1325, 7} true; + assume {:verifier.code 0} true; + $i379 := $add.i32($i377, 1); + call {:cexpr "c"} boogie_si_record_i32($i379); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1326, 3} true; + assume {:verifier.code 0} true; + $i380 := $i379; + goto $bb153; +$bb152: + assume !(($i378 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1326, 16} true; + assume {:verifier.code 0} true; + $i381 := $slt.i32($i376, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1326, 14} true; + assume {:verifier.code 0} true; + $i382 := $i377; + assume {:branchcond $i381} true; + goto $bb154, $bb155; +$bb153: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1329, 5} true; + assume {:verifier.code 0} true; + $i384 := $add.i32($i372, $i372); + call {:cexpr "a"} boogie_si_record_i32($i384); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1330, 7} true; + assume {:verifier.code 0} true; + $i385 := $sext.i32.i64($i384); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1330, 9} true; + assume {:verifier.code 0} true; + $i386 := $srem.i64($i385, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1330, 7} true; + assume {:verifier.code 0} true; + $i387 := $trunc.i64.i32($i386); + call {:cexpr "a"} boogie_si_record_i32($i387); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1331, 5} true; + assume {:verifier.code 0} true; + $i388 := $add.i32($i376, $i376); + call {:cexpr "b"} boogie_si_record_i32($i388); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1332, 7} true; + assume {:verifier.code 0} true; + $i389 := $sext.i32.i64($i388); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1332, 9} true; + assume {:verifier.code 0} true; + $i390 := $srem.i64($i389, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1332, 7} true; + assume {:verifier.code 0} true; + $i391 := $trunc.i64.i32($i390); + call {:cexpr "b"} boogie_si_record_i32($i391); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1334, 5} true; + assume {:verifier.code 0} true; + $i392 := $add.i32($i380, $i380); + call {:cexpr "c"} boogie_si_record_i32($i392); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1335, 9} true; + assume {:verifier.code 0} true; + $i393 := $slt.i32($i387, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1335, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i393} true; + goto $bb157, $bb158; +$bb154: + assume ($i381 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1327, 7} true; + assume {:verifier.code 0} true; + $i383 := $add.i32($i377, 1); + call {:cexpr "c"} boogie_si_record_i32($i383); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1328, 3} true; + assume {:verifier.code 0} true; + $i382 := $i383; + goto $bb156; +$bb155: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1326, 14} true; + assume {:verifier.code 0} true; + assume !(($i381 == 1)); + goto $bb156; +$bb156: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i380 := $i382; + goto $bb153; +$bb157: + assume ($i393 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1336, 7} true; + assume {:verifier.code 0} true; + $i394 := $add.i32($i392, 1); + call {:cexpr "c"} boogie_si_record_i32($i394); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1337, 3} true; + assume {:verifier.code 0} true; + $i395 := $i394; + goto $bb159; +$bb158: + assume !(($i393 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1337, 16} true; + assume {:verifier.code 0} true; + $i396 := $slt.i32($i391, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1337, 14} true; + assume {:verifier.code 0} true; + $i397 := $i392; + assume {:branchcond $i396} true; + goto $bb160, $bb161; +$bb159: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1340, 5} true; + assume {:verifier.code 0} true; + $i399 := $add.i32($i387, $i387); + call {:cexpr "a"} boogie_si_record_i32($i399); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1341, 7} true; + assume {:verifier.code 0} true; + $i400 := $sext.i32.i64($i399); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1341, 9} true; + assume {:verifier.code 0} true; + $i401 := $srem.i64($i400, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1341, 7} true; + assume {:verifier.code 0} true; + $i402 := $trunc.i64.i32($i401); + call {:cexpr "a"} boogie_si_record_i32($i402); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1342, 5} true; + assume {:verifier.code 0} true; + $i403 := $add.i32($i391, $i391); + call {:cexpr "b"} boogie_si_record_i32($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1343, 7} true; + assume {:verifier.code 0} true; + $i404 := $sext.i32.i64($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1343, 9} true; + assume {:verifier.code 0} true; + $i405 := $srem.i64($i404, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1343, 7} true; + assume {:verifier.code 0} true; + $i406 := $trunc.i64.i32($i405); + call {:cexpr "b"} boogie_si_record_i32($i406); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1345, 5} true; + assume {:verifier.code 0} true; + $i407 := $add.i32($i395, $i395); + call {:cexpr "c"} boogie_si_record_i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1346, 9} true; + assume {:verifier.code 0} true; + $i408 := $slt.i32($i402, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1346, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i408} true; + goto $bb163, $bb164; +$bb160: + assume ($i396 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1338, 7} true; + assume {:verifier.code 0} true; + $i398 := $add.i32($i392, 1); + call {:cexpr "c"} boogie_si_record_i32($i398); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1339, 3} true; + assume {:verifier.code 0} true; + $i397 := $i398; + goto $bb162; +$bb161: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1337, 14} true; + assume {:verifier.code 0} true; + assume !(($i396 == 1)); + goto $bb162; +$bb162: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i395 := $i397; + goto $bb159; +$bb163: + assume ($i408 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1347, 7} true; + assume {:verifier.code 0} true; + $i409 := $add.i32($i407, 1); + call {:cexpr "c"} boogie_si_record_i32($i409); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1348, 3} true; + assume {:verifier.code 0} true; + $i410 := $i409; + goto $bb165; +$bb164: + assume !(($i408 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1348, 16} true; + assume {:verifier.code 0} true; + $i411 := $slt.i32($i406, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1348, 14} true; + assume {:verifier.code 0} true; + $i412 := $i407; + assume {:branchcond $i411} true; + goto $bb166, $bb167; +$bb165: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1351, 5} true; + assume {:verifier.code 0} true; + $i414 := $add.i32($i402, $i402); + call {:cexpr "a"} boogie_si_record_i32($i414); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1352, 7} true; + assume {:verifier.code 0} true; + $i415 := $sext.i32.i64($i414); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1352, 9} true; + assume {:verifier.code 0} true; + $i416 := $srem.i64($i415, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1352, 7} true; + assume {:verifier.code 0} true; + $i417 := $trunc.i64.i32($i416); + call {:cexpr "a"} boogie_si_record_i32($i417); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1353, 5} true; + assume {:verifier.code 0} true; + $i418 := $add.i32($i406, $i406); + call {:cexpr "b"} boogie_si_record_i32($i418); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1354, 7} true; + assume {:verifier.code 0} true; + $i419 := $sext.i32.i64($i418); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1354, 9} true; + assume {:verifier.code 0} true; + $i420 := $srem.i64($i419, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1354, 7} true; + assume {:verifier.code 0} true; + $i421 := $trunc.i64.i32($i420); + call {:cexpr "b"} boogie_si_record_i32($i421); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1356, 5} true; + assume {:verifier.code 0} true; + $i422 := $add.i32($i410, $i410); + call {:cexpr "c"} boogie_si_record_i32($i422); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1357, 9} true; + assume {:verifier.code 0} true; + $i423 := $slt.i32($i417, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1357, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i423} true; + goto $bb169, $bb170; +$bb166: + assume ($i411 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1349, 7} true; + assume {:verifier.code 0} true; + $i413 := $add.i32($i407, 1); + call {:cexpr "c"} boogie_si_record_i32($i413); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1350, 3} true; + assume {:verifier.code 0} true; + $i412 := $i413; + goto $bb168; +$bb167: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1348, 14} true; + assume {:verifier.code 0} true; + assume !(($i411 == 1)); + goto $bb168; +$bb168: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i410 := $i412; + goto $bb165; +$bb169: + assume ($i423 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1358, 7} true; + assume {:verifier.code 0} true; + $i424 := $add.i32($i422, 1); + call {:cexpr "c"} boogie_si_record_i32($i424); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1359, 3} true; + assume {:verifier.code 0} true; + $i425 := $i424; + goto $bb171; +$bb170: + assume !(($i423 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1359, 16} true; + assume {:verifier.code 0} true; + $i426 := $slt.i32($i421, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1359, 14} true; + assume {:verifier.code 0} true; + $i427 := $i422; + assume {:branchcond $i426} true; + goto $bb172, $bb173; +$bb171: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1362, 5} true; + assume {:verifier.code 0} true; + $i429 := $add.i32($i417, $i417); + call {:cexpr "a"} boogie_si_record_i32($i429); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1363, 7} true; + assume {:verifier.code 0} true; + $i430 := $sext.i32.i64($i429); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1363, 9} true; + assume {:verifier.code 0} true; + $i431 := $srem.i64($i430, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1363, 7} true; + assume {:verifier.code 0} true; + $i432 := $trunc.i64.i32($i431); + call {:cexpr "a"} boogie_si_record_i32($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1364, 5} true; + assume {:verifier.code 0} true; + $i433 := $add.i32($i421, $i421); + call {:cexpr "b"} boogie_si_record_i32($i433); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1365, 7} true; + assume {:verifier.code 0} true; + $i434 := $sext.i32.i64($i433); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1365, 9} true; + assume {:verifier.code 0} true; + $i435 := $srem.i64($i434, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1365, 7} true; + assume {:verifier.code 0} true; + $i436 := $trunc.i64.i32($i435); + call {:cexpr "b"} boogie_si_record_i32($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1367, 5} true; + assume {:verifier.code 0} true; + $i437 := $add.i32($i425, $i425); + call {:cexpr "c"} boogie_si_record_i32($i437); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1368, 9} true; + assume {:verifier.code 0} true; + $i438 := $slt.i32($i432, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1368, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i438} true; + goto $bb175, $bb176; +$bb172: + assume ($i426 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1360, 7} true; + assume {:verifier.code 0} true; + $i428 := $add.i32($i422, 1); + call {:cexpr "c"} boogie_si_record_i32($i428); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1361, 3} true; + assume {:verifier.code 0} true; + $i427 := $i428; + goto $bb174; +$bb173: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1359, 14} true; + assume {:verifier.code 0} true; + assume !(($i426 == 1)); + goto $bb174; +$bb174: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i425 := $i427; + goto $bb171; +$bb175: + assume ($i438 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1369, 7} true; + assume {:verifier.code 0} true; + $i439 := $add.i32($i437, 1); + call {:cexpr "c"} boogie_si_record_i32($i439); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1370, 3} true; + assume {:verifier.code 0} true; + $i440 := $i439; + goto $bb177; +$bb176: + assume !(($i438 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1370, 16} true; + assume {:verifier.code 0} true; + $i441 := $slt.i32($i436, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1370, 14} true; + assume {:verifier.code 0} true; + $i442 := $i437; + assume {:branchcond $i441} true; + goto $bb178, $bb179; +$bb177: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1373, 5} true; + assume {:verifier.code 0} true; + $i444 := $add.i32($i432, $i432); + call {:cexpr "a"} boogie_si_record_i32($i444); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1374, 7} true; + assume {:verifier.code 0} true; + $i445 := $sext.i32.i64($i444); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1374, 9} true; + assume {:verifier.code 0} true; + $i446 := $srem.i64($i445, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1374, 7} true; + assume {:verifier.code 0} true; + $i447 := $trunc.i64.i32($i446); + call {:cexpr "a"} boogie_si_record_i32($i447); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1375, 5} true; + assume {:verifier.code 0} true; + $i448 := $add.i32($i436, $i436); + call {:cexpr "b"} boogie_si_record_i32($i448); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1376, 7} true; + assume {:verifier.code 0} true; + $i449 := $sext.i32.i64($i448); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1376, 9} true; + assume {:verifier.code 0} true; + $i450 := $srem.i64($i449, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1376, 7} true; + assume {:verifier.code 0} true; + $i451 := $trunc.i64.i32($i450); + call {:cexpr "b"} boogie_si_record_i32($i451); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1378, 5} true; + assume {:verifier.code 0} true; + $i452 := $add.i32($i440, $i440); + call {:cexpr "c"} boogie_si_record_i32($i452); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1379, 9} true; + assume {:verifier.code 0} true; + $i453 := $slt.i32($i447, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1379, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i453} true; + goto $bb181, $bb182; +$bb178: + assume ($i441 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1371, 7} true; + assume {:verifier.code 0} true; + $i443 := $add.i32($i437, 1); + call {:cexpr "c"} boogie_si_record_i32($i443); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1372, 3} true; + assume {:verifier.code 0} true; + $i442 := $i443; + goto $bb180; +$bb179: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1370, 14} true; + assume {:verifier.code 0} true; + assume !(($i441 == 1)); + goto $bb180; +$bb180: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i440 := $i442; + goto $bb177; +$bb181: + assume ($i453 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1380, 7} true; + assume {:verifier.code 0} true; + $i454 := $add.i32($i452, 1); + call {:cexpr "c"} boogie_si_record_i32($i454); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1381, 3} true; + assume {:verifier.code 0} true; + $i455 := $i454; + goto $bb183; +$bb182: + assume !(($i453 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1381, 16} true; + assume {:verifier.code 0} true; + $i456 := $slt.i32($i451, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1381, 14} true; + assume {:verifier.code 0} true; + $i457 := $i452; + assume {:branchcond $i456} true; + goto $bb184, $bb185; +$bb183: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1384, 5} true; + assume {:verifier.code 0} true; + $i459 := $add.i32($i447, $i447); + call {:cexpr "a"} boogie_si_record_i32($i459); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1385, 7} true; + assume {:verifier.code 0} true; + $i460 := $sext.i32.i64($i459); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1385, 9} true; + assume {:verifier.code 0} true; + $i461 := $srem.i64($i460, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1385, 7} true; + assume {:verifier.code 0} true; + $i462 := $trunc.i64.i32($i461); + call {:cexpr "a"} boogie_si_record_i32($i462); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1386, 5} true; + assume {:verifier.code 0} true; + $i463 := $add.i32($i451, $i451); + call {:cexpr "b"} boogie_si_record_i32($i463); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1387, 7} true; + assume {:verifier.code 0} true; + $i464 := $sext.i32.i64($i463); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1387, 9} true; + assume {:verifier.code 0} true; + $i465 := $srem.i64($i464, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1387, 7} true; + assume {:verifier.code 0} true; + $i466 := $trunc.i64.i32($i465); + call {:cexpr "b"} boogie_si_record_i32($i466); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1389, 5} true; + assume {:verifier.code 0} true; + $i467 := $add.i32($i455, $i455); + call {:cexpr "c"} boogie_si_record_i32($i467); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1390, 9} true; + assume {:verifier.code 0} true; + $i468 := $slt.i32($i462, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1390, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i468} true; + goto $bb187, $bb188; +$bb184: + assume ($i456 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1382, 7} true; + assume {:verifier.code 0} true; + $i458 := $add.i32($i452, 1); + call {:cexpr "c"} boogie_si_record_i32($i458); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1383, 3} true; + assume {:verifier.code 0} true; + $i457 := $i458; + goto $bb186; +$bb185: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1381, 14} true; + assume {:verifier.code 0} true; + assume !(($i456 == 1)); + goto $bb186; +$bb186: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i455 := $i457; + goto $bb183; +$bb187: + assume ($i468 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1391, 7} true; + assume {:verifier.code 0} true; + $i469 := $add.i32($i467, 1); + call {:cexpr "c"} boogie_si_record_i32($i469); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1392, 3} true; + assume {:verifier.code 0} true; + $i470 := $i469; + goto $bb189; +$bb188: + assume !(($i468 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1392, 16} true; + assume {:verifier.code 0} true; + $i471 := $slt.i32($i466, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1392, 14} true; + assume {:verifier.code 0} true; + $i472 := $i467; + assume {:branchcond $i471} true; + goto $bb190, $bb191; +$bb189: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1400, 3} true; + assume {:verifier.code 0} true; + $r := $i470; + $exn := false; + return; +$bb190: + assume ($i471 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1393, 7} true; + assume {:verifier.code 0} true; + $i473 := $add.i32($i467, 1); + call {:cexpr "c"} boogie_si_record_i32($i473); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1394, 3} true; + assume {:verifier.code 0} true; + $i472 := $i473; + goto $bb192; +$bb191: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1392, 14} true; + assume {:verifier.code 0} true; + assume !(($i471 == 1)); + goto $bb192; +$bb192: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i470 := $i472; + goto $bb189; +} +const __SMACK_or64: ref; +axiom (__SMACK_or64 == $sub.ref(0, 22700)); +procedure __SMACK_or64($i0: i64, $i1: i64) + returns ($r: i64) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i64; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 63} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_or64:arg:a"} boogie_si_record_i64($i0); + call {:cexpr "__SMACK_or64:arg:b"} boogie_si_record_i64($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 63} true; + assume {:verifier.code 1} true; + $i2 := $trunc.i64.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 66} true; + assume {:verifier.code 1} true; + $i3 := $trunc.i64.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 50} true; + assume {:verifier.code 1} true; + call $i4 := __SMACK_or32($i2, $i3); + call {:cexpr "smack:ext:__SMACK_or32"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 44} true; + assume {:verifier.code 0} true; + $i5 := $sext.i32.i64($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 37} true; + assume {:verifier.code 0} true; + $r := $i5; + $exn := false; + return; +} +const __SMACK_or16: ref; +axiom (__SMACK_or16 == $sub.ref(0, 23732)); +procedure __SMACK_or16($i0: i16, $i1: i16) + returns ($r: i16) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i16; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 67} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_or16:arg:a"} boogie_si_record_i16($i0); + call {:cexpr "__SMACK_or16:arg:b"} boogie_si_record_i16($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 67} true; + assume {:verifier.code 1} true; + $i2 := $sext.i16.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 70} true; + assume {:verifier.code 1} true; + $i3 := $sext.i16.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 54} true; + assume {:verifier.code 1} true; + call $i4 := __SMACK_or32($i2, $i3); + call {:cexpr "smack:ext:__SMACK_or32"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 47} true; + assume {:verifier.code 0} true; + $i5 := $trunc.i32.i16($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 40} true; + assume {:verifier.code 0} true; + $r := $i5; + $exn := false; + return; +} +const __SMACK_or8: ref; +axiom (__SMACK_or8 == $sub.ref(0, 24764)); +procedure __SMACK_or8($i0: i8, $i1: i8) + returns ($r: i8) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i8; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 62} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_or8:arg:a"} boogie_si_record_i8($i0); + call {:cexpr "__SMACK_or8:arg:b"} boogie_si_record_i8($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 62} true; + assume {:verifier.code 1} true; + $i2 := $sext.i8.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 65} true; + assume {:verifier.code 1} true; + $i3 := $sext.i8.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 49} true; + assume {:verifier.code 1} true; + call $i4 := __SMACK_or32($i2, $i3); + call {:cexpr "smack:ext:__SMACK_or32"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 43} true; + assume {:verifier.code 0} true; + $i5 := $trunc.i32.i8($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 36} true; + assume {:verifier.code 0} true; + $r := $i5; + $exn := false; + return; +} +const __SMACK_check_overflow: ref; +axiom (__SMACK_check_overflow == $sub.ref(0, 25796)); +procedure __SMACK_check_overflow($i0: i32) +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_check_overflow:arg:flag"} boogie_si_record_i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + assume true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1409, 3} true; + assume {:verifier.code 1} true; + assert {:overflow} $i0 == $0; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1410, 1} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_loop_exit: ref; +axiom (__SMACK_loop_exit == $sub.ref(0, 26828)); +procedure __SMACK_loop_exit() +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1412, 32} true; + assume {:verifier.code 1} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1412, 32} true; + assume {:verifier.code 1} true; + assert {:loopexit} false; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1412, 75} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_decls: ref; +axiom (__SMACK_decls == $sub.ref(0, 27860)); +type $mop; +procedure boogie_si_record_mop(m: $mop); +const $MOP: $mop; +var $exn: bool; +var $exnv: int; +procedure corral_atomic_begin(); +procedure corral_atomic_end(); +procedure $alloc(n: ref) returns (p: ref) +{ + call corral_atomic_begin(); + call p := $$alloc(n); + call corral_atomic_end(); +} + +procedure $malloc(n: ref) returns (p: ref) +{ + call corral_atomic_begin(); + call p := $$alloc(n); + call corral_atomic_end(); +} + +var $CurrAddr:ref; + +procedure {:inline 1} $$alloc(n: ref) returns (p: ref) +modifies $CurrAddr; +{ + assume $sge.ref.bool(n, $0.ref); + if ($sgt.ref.bool(n, $0.ref)) { + p := $CurrAddr; + havoc $CurrAddr; + assume $sge.ref.bool($sub.ref($CurrAddr, n), p); + assume $sgt.ref.bool($CurrAddr, $0.ref) && $slt.ref.bool($CurrAddr, $MALLOC_TOP); + } +} + +procedure $free(p: ref); + +const __SMACK_top_decl: ref; +axiom (__SMACK_top_decl == $sub.ref(0, 28892)); +procedure __SMACK_top_decl.ref($p0: ref); +const __SMACK_init_func_memory_model: ref; +axiom (__SMACK_init_func_memory_model == $sub.ref(0, 29924)); +procedure __SMACK_init_func_memory_model() +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1885, 3} true; + assume {:verifier.code 1} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1885, 3} true; + assume {:verifier.code 1} true; + $CurrAddr := $1024.ref; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1890, 1} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_static_init: ref; +axiom (__SMACK_static_init == $sub.ref(0, 30956)); +procedure __SMACK_static_init() +{ +$bb0: + $exn := false; + return; +} +const $u0: ref; +procedure boogie_si_record_i16(x: i16); +procedure boogie_si_record_i32(x: i32); +procedure boogie_si_record_i64(x: i64); +procedure boogie_si_record_i8(x: i8); +procedure boogie_si_record_ref(x: ref); +procedure $initialize() +{ + call __SMACK_static_init(); + call __SMACK_init_func_memory_model(); + return; +} diff --git a/dartagnan/src/test/resources/miscellaneous/thread_local.bpl b/dartagnan/src/test/resources/miscellaneous/thread_local.bpl new file mode 100644 index 0000000000..1033d08595 --- /dev/null +++ b/dartagnan/src/test/resources/miscellaneous/thread_local.bpl @@ -0,0 +1,16242 @@ +// generated by SMACK version 2.8.0 for corral +// via /usr/local/bin/smack -q -t --no-memory-splitting --clang-options= -bpl /Users/thomashaas/IdeaProjects/Dat3M/output/thread_local-opt.bpl /Users/thomashaas/IdeaProjects/Dat3M/output/thread_local-opt.ll + +// Basic types +type i1 = int; +type i5 = int; +type i6 = int; +type i8 = int; +type i16 = int; +type i24 = int; +type i32 = int; +type i33 = int; +type i40 = int; +type i48 = int; +type i56 = int; +type i64 = int; +type i80 = int; +type i88 = int; +type i96 = int; +type i128 = int; +type i160 = int; +type i256 = int; +type ref = i64; +type float; + +// Basic constants +const $0: i32; +axiom ($0 == 0); +const $1: i32; +axiom ($1 == 1); +const $0.ref: ref; +axiom ($0.ref == 0); +const $1.ref: ref; +axiom ($1.ref == 1); +const $1024.ref: ref; +axiom ($1024.ref == 1024); +// Memory model constants +const $GLOBALS_BOTTOM: ref; +const $EXTERNS_BOTTOM: ref; +const $MALLOC_TOP: ref; + +// Memory maps (1 regions) +var $M.0: [ref] i8; + +// Memory address bounds +axiom ($GLOBALS_BOTTOM == $sub.ref(0, 30952)); +axiom ($EXTERNS_BOTTOM == $add.ref($GLOBALS_BOTTOM, $sub.ref(0, 32768))); +axiom ($MALLOC_TOP == 9223372036854775807); +function {:inline} $isExternal(p: ref) returns (bool) { $slt.ref.bool(p, $EXTERNS_BOTTOM) } + +// SMT bit-vector/integer conversion +function {:builtin "(_ int2bv 64)"} $int2bv.64(i: i64) returns (bv64); +function {:builtin "bv2nat"} $bv2int.64(i: bv64) returns (i64); + +// Integer arithmetic operations +function {:inline} $add.i1(i1: i1, i2: i1) returns (i1) { (i1 + i2) } +function {:inline} $add.i5(i1: i5, i2: i5) returns (i5) { (i1 + i2) } +function {:inline} $add.i6(i1: i6, i2: i6) returns (i6) { (i1 + i2) } +function {:inline} $add.i8(i1: i8, i2: i8) returns (i8) { (i1 + i2) } +function {:inline} $add.i16(i1: i16, i2: i16) returns (i16) { (i1 + i2) } +function {:inline} $add.i24(i1: i24, i2: i24) returns (i24) { (i1 + i2) } +function {:inline} $add.i32(i1: i32, i2: i32) returns (i32) { (i1 + i2) } +function {:inline} $add.i33(i1: i33, i2: i33) returns (i33) { (i1 + i2) } +function {:inline} $add.i40(i1: i40, i2: i40) returns (i40) { (i1 + i2) } +function {:inline} $add.i48(i1: i48, i2: i48) returns (i48) { (i1 + i2) } +function {:inline} $add.i56(i1: i56, i2: i56) returns (i56) { (i1 + i2) } +function {:inline} $add.i64(i1: i64, i2: i64) returns (i64) { (i1 + i2) } +function {:inline} $add.i80(i1: i80, i2: i80) returns (i80) { (i1 + i2) } +function {:inline} $add.i88(i1: i88, i2: i88) returns (i88) { (i1 + i2) } +function {:inline} $add.i96(i1: i96, i2: i96) returns (i96) { (i1 + i2) } +function {:inline} $add.i128(i1: i128, i2: i128) returns (i128) { (i1 + i2) } +function {:inline} $add.i160(i1: i160, i2: i160) returns (i160) { (i1 + i2) } +function {:inline} $add.i256(i1: i256, i2: i256) returns (i256) { (i1 + i2) } +function {:inline} $sub.i1(i1: i1, i2: i1) returns (i1) { (i1 - i2) } +function {:inline} $sub.i5(i1: i5, i2: i5) returns (i5) { (i1 - i2) } +function {:inline} $sub.i6(i1: i6, i2: i6) returns (i6) { (i1 - i2) } +function {:inline} $sub.i8(i1: i8, i2: i8) returns (i8) { (i1 - i2) } +function {:inline} $sub.i16(i1: i16, i2: i16) returns (i16) { (i1 - i2) } +function {:inline} $sub.i24(i1: i24, i2: i24) returns (i24) { (i1 - i2) } +function {:inline} $sub.i32(i1: i32, i2: i32) returns (i32) { (i1 - i2) } +function {:inline} $sub.i33(i1: i33, i2: i33) returns (i33) { (i1 - i2) } +function {:inline} $sub.i40(i1: i40, i2: i40) returns (i40) { (i1 - i2) } +function {:inline} $sub.i48(i1: i48, i2: i48) returns (i48) { (i1 - i2) } +function {:inline} $sub.i56(i1: i56, i2: i56) returns (i56) { (i1 - i2) } +function {:inline} $sub.i64(i1: i64, i2: i64) returns (i64) { (i1 - i2) } +function {:inline} $sub.i80(i1: i80, i2: i80) returns (i80) { (i1 - i2) } +function {:inline} $sub.i88(i1: i88, i2: i88) returns (i88) { (i1 - i2) } +function {:inline} $sub.i96(i1: i96, i2: i96) returns (i96) { (i1 - i2) } +function {:inline} $sub.i128(i1: i128, i2: i128) returns (i128) { (i1 - i2) } +function {:inline} $sub.i160(i1: i160, i2: i160) returns (i160) { (i1 - i2) } +function {:inline} $sub.i256(i1: i256, i2: i256) returns (i256) { (i1 - i2) } +function {:inline} $mul.i1(i1: i1, i2: i1) returns (i1) { (i1 * i2) } +function {:inline} $mul.i5(i1: i5, i2: i5) returns (i5) { (i1 * i2) } +function {:inline} $mul.i6(i1: i6, i2: i6) returns (i6) { (i1 * i2) } +function {:inline} $mul.i8(i1: i8, i2: i8) returns (i8) { (i1 * i2) } +function {:inline} $mul.i16(i1: i16, i2: i16) returns (i16) { (i1 * i2) } +function {:inline} $mul.i24(i1: i24, i2: i24) returns (i24) { (i1 * i2) } +function {:inline} $mul.i32(i1: i32, i2: i32) returns (i32) { (i1 * i2) } +function {:inline} $mul.i33(i1: i33, i2: i33) returns (i33) { (i1 * i2) } +function {:inline} $mul.i40(i1: i40, i2: i40) returns (i40) { (i1 * i2) } +function {:inline} $mul.i48(i1: i48, i2: i48) returns (i48) { (i1 * i2) } +function {:inline} $mul.i56(i1: i56, i2: i56) returns (i56) { (i1 * i2) } +function {:inline} $mul.i64(i1: i64, i2: i64) returns (i64) { (i1 * i2) } +function {:inline} $mul.i80(i1: i80, i2: i80) returns (i80) { (i1 * i2) } +function {:inline} $mul.i88(i1: i88, i2: i88) returns (i88) { (i1 * i2) } +function {:inline} $mul.i96(i1: i96, i2: i96) returns (i96) { (i1 * i2) } +function {:inline} $mul.i128(i1: i128, i2: i128) returns (i128) { (i1 * i2) } +function {:inline} $mul.i160(i1: i160, i2: i160) returns (i160) { (i1 * i2) } +function {:inline} $mul.i256(i1: i256, i2: i256) returns (i256) { (i1 * i2) } +function {:builtin "div"} $idiv.i1(i1: i1, i2: i1) returns (i1); +function {:builtin "div"} $idiv.i5(i1: i5, i2: i5) returns (i5); +function {:builtin "div"} $idiv.i6(i1: i6, i2: i6) returns (i6); +function {:builtin "div"} $idiv.i8(i1: i8, i2: i8) returns (i8); +function {:builtin "div"} $idiv.i16(i1: i16, i2: i16) returns (i16); +function {:builtin "div"} $idiv.i24(i1: i24, i2: i24) returns (i24); +function {:builtin "div"} $idiv.i32(i1: i32, i2: i32) returns (i32); +function {:builtin "div"} $idiv.i33(i1: i33, i2: i33) returns (i33); +function {:builtin "div"} $idiv.i40(i1: i40, i2: i40) returns (i40); +function {:builtin "div"} $idiv.i48(i1: i48, i2: i48) returns (i48); +function {:builtin "div"} $idiv.i56(i1: i56, i2: i56) returns (i56); +function {:builtin "div"} $idiv.i64(i1: i64, i2: i64) returns (i64); +function {:builtin "div"} $idiv.i80(i1: i80, i2: i80) returns (i80); +function {:builtin "div"} $idiv.i88(i1: i88, i2: i88) returns (i88); +function {:builtin "div"} $idiv.i96(i1: i96, i2: i96) returns (i96); +function {:builtin "div"} $idiv.i128(i1: i128, i2: i128) returns (i128); +function {:builtin "div"} $idiv.i160(i1: i160, i2: i160) returns (i160); +function {:builtin "div"} $idiv.i256(i1: i256, i2: i256) returns (i256); +function {:inline} $sdiv.i1(i1: i1, i2: i1) returns (i1) { $idiv.i1(i1, i2) } +function {:inline} $sdiv.i5(i1: i5, i2: i5) returns (i5) { $idiv.i5(i1, i2) } +function {:inline} $sdiv.i6(i1: i6, i2: i6) returns (i6) { $idiv.i6(i1, i2) } +function {:inline} $sdiv.i8(i1: i8, i2: i8) returns (i8) { $idiv.i8(i1, i2) } +function {:inline} $sdiv.i16(i1: i16, i2: i16) returns (i16) { $idiv.i16(i1, i2) } +function {:inline} $sdiv.i24(i1: i24, i2: i24) returns (i24) { $idiv.i24(i1, i2) } +function {:inline} $sdiv.i32(i1: i32, i2: i32) returns (i32) { $idiv.i32(i1, i2) } +function {:inline} $sdiv.i33(i1: i33, i2: i33) returns (i33) { $idiv.i33(i1, i2) } +function {:inline} $sdiv.i40(i1: i40, i2: i40) returns (i40) { $idiv.i40(i1, i2) } +function {:inline} $sdiv.i48(i1: i48, i2: i48) returns (i48) { $idiv.i48(i1, i2) } +function {:inline} $sdiv.i56(i1: i56, i2: i56) returns (i56) { $idiv.i56(i1, i2) } +function {:inline} $sdiv.i64(i1: i64, i2: i64) returns (i64) { $idiv.i64(i1, i2) } +function {:inline} $sdiv.i80(i1: i80, i2: i80) returns (i80) { $idiv.i80(i1, i2) } +function {:inline} $sdiv.i88(i1: i88, i2: i88) returns (i88) { $idiv.i88(i1, i2) } +function {:inline} $sdiv.i96(i1: i96, i2: i96) returns (i96) { $idiv.i96(i1, i2) } +function {:inline} $sdiv.i128(i1: i128, i2: i128) returns (i128) { $idiv.i128(i1, i2) } +function {:inline} $sdiv.i160(i1: i160, i2: i160) returns (i160) { $idiv.i160(i1, i2) } +function {:inline} $sdiv.i256(i1: i256, i2: i256) returns (i256) { $idiv.i256(i1, i2) } +function {:inline} $udiv.i1(i1: i1, i2: i1) returns (i1) { $idiv.i1(i1, i2) } +function {:inline} $udiv.i5(i1: i5, i2: i5) returns (i5) { $idiv.i5(i1, i2) } +function {:inline} $udiv.i6(i1: i6, i2: i6) returns (i6) { $idiv.i6(i1, i2) } +function {:inline} $udiv.i8(i1: i8, i2: i8) returns (i8) { $idiv.i8(i1, i2) } +function {:inline} $udiv.i16(i1: i16, i2: i16) returns (i16) { $idiv.i16(i1, i2) } +function {:inline} $udiv.i24(i1: i24, i2: i24) returns (i24) { $idiv.i24(i1, i2) } +function {:inline} $udiv.i32(i1: i32, i2: i32) returns (i32) { $idiv.i32(i1, i2) } +function {:inline} $udiv.i33(i1: i33, i2: i33) returns (i33) { $idiv.i33(i1, i2) } +function {:inline} $udiv.i40(i1: i40, i2: i40) returns (i40) { $idiv.i40(i1, i2) } +function {:inline} $udiv.i48(i1: i48, i2: i48) returns (i48) { $idiv.i48(i1, i2) } +function {:inline} $udiv.i56(i1: i56, i2: i56) returns (i56) { $idiv.i56(i1, i2) } +function {:inline} $udiv.i64(i1: i64, i2: i64) returns (i64) { $idiv.i64(i1, i2) } +function {:inline} $udiv.i80(i1: i80, i2: i80) returns (i80) { $idiv.i80(i1, i2) } +function {:inline} $udiv.i88(i1: i88, i2: i88) returns (i88) { $idiv.i88(i1, i2) } +function {:inline} $udiv.i96(i1: i96, i2: i96) returns (i96) { $idiv.i96(i1, i2) } +function {:inline} $udiv.i128(i1: i128, i2: i128) returns (i128) { $idiv.i128(i1, i2) } +function {:inline} $udiv.i160(i1: i160, i2: i160) returns (i160) { $idiv.i160(i1, i2) } +function {:inline} $udiv.i256(i1: i256, i2: i256) returns (i256) { $idiv.i256(i1, i2) } +function {:builtin "mod"} $smod.i1(i1: i1, i2: i1) returns (i1); +function {:builtin "mod"} $smod.i5(i1: i5, i2: i5) returns (i5); +function {:builtin "mod"} $smod.i6(i1: i6, i2: i6) returns (i6); +function {:builtin "mod"} $smod.i8(i1: i8, i2: i8) returns (i8); +function {:builtin "mod"} $smod.i16(i1: i16, i2: i16) returns (i16); +function {:builtin "mod"} $smod.i24(i1: i24, i2: i24) returns (i24); +function {:builtin "mod"} $smod.i32(i1: i32, i2: i32) returns (i32); +function {:builtin "mod"} $smod.i33(i1: i33, i2: i33) returns (i33); +function {:builtin "mod"} $smod.i40(i1: i40, i2: i40) returns (i40); +function {:builtin "mod"} $smod.i48(i1: i48, i2: i48) returns (i48); +function {:builtin "mod"} $smod.i56(i1: i56, i2: i56) returns (i56); +function {:builtin "mod"} $smod.i64(i1: i64, i2: i64) returns (i64); +function {:builtin "mod"} $smod.i80(i1: i80, i2: i80) returns (i80); +function {:builtin "mod"} $smod.i88(i1: i88, i2: i88) returns (i88); +function {:builtin "mod"} $smod.i96(i1: i96, i2: i96) returns (i96); +function {:builtin "mod"} $smod.i128(i1: i128, i2: i128) returns (i128); +function {:builtin "mod"} $smod.i160(i1: i160, i2: i160) returns (i160); +function {:builtin "mod"} $smod.i256(i1: i256, i2: i256) returns (i256); +function {:inline} $srem.i1(i1: i1, i2: i1) returns (i1) { (if ($ne.i1.bool($smod.i1(i1, i2), 0) && $slt.i1.bool(i1, 0)) then $sub.i1($smod.i1(i1, i2), $smax.i1(i2, $sub.i1(0, i2))) else $smod.i1(i1, i2)) } +function {:inline} $srem.i5(i1: i5, i2: i5) returns (i5) { (if ($ne.i5.bool($smod.i5(i1, i2), 0) && $slt.i5.bool(i1, 0)) then $sub.i5($smod.i5(i1, i2), $smax.i5(i2, $sub.i5(0, i2))) else $smod.i5(i1, i2)) } +function {:inline} $srem.i6(i1: i6, i2: i6) returns (i6) { (if ($ne.i6.bool($smod.i6(i1, i2), 0) && $slt.i6.bool(i1, 0)) then $sub.i6($smod.i6(i1, i2), $smax.i6(i2, $sub.i6(0, i2))) else $smod.i6(i1, i2)) } +function {:inline} $srem.i8(i1: i8, i2: i8) returns (i8) { (if ($ne.i8.bool($smod.i8(i1, i2), 0) && $slt.i8.bool(i1, 0)) then $sub.i8($smod.i8(i1, i2), $smax.i8(i2, $sub.i8(0, i2))) else $smod.i8(i1, i2)) } +function {:inline} $srem.i16(i1: i16, i2: i16) returns (i16) { (if ($ne.i16.bool($smod.i16(i1, i2), 0) && $slt.i16.bool(i1, 0)) then $sub.i16($smod.i16(i1, i2), $smax.i16(i2, $sub.i16(0, i2))) else $smod.i16(i1, i2)) } +function {:inline} $srem.i24(i1: i24, i2: i24) returns (i24) { (if ($ne.i24.bool($smod.i24(i1, i2), 0) && $slt.i24.bool(i1, 0)) then $sub.i24($smod.i24(i1, i2), $smax.i24(i2, $sub.i24(0, i2))) else $smod.i24(i1, i2)) } +function {:inline} $srem.i32(i1: i32, i2: i32) returns (i32) { (if ($ne.i32.bool($smod.i32(i1, i2), 0) && $slt.i32.bool(i1, 0)) then $sub.i32($smod.i32(i1, i2), $smax.i32(i2, $sub.i32(0, i2))) else $smod.i32(i1, i2)) } +function {:inline} $srem.i33(i1: i33, i2: i33) returns (i33) { (if ($ne.i33.bool($smod.i33(i1, i2), 0) && $slt.i33.bool(i1, 0)) then $sub.i33($smod.i33(i1, i2), $smax.i33(i2, $sub.i33(0, i2))) else $smod.i33(i1, i2)) } +function {:inline} $srem.i40(i1: i40, i2: i40) returns (i40) { (if ($ne.i40.bool($smod.i40(i1, i2), 0) && $slt.i40.bool(i1, 0)) then $sub.i40($smod.i40(i1, i2), $smax.i40(i2, $sub.i40(0, i2))) else $smod.i40(i1, i2)) } +function {:inline} $srem.i48(i1: i48, i2: i48) returns (i48) { (if ($ne.i48.bool($smod.i48(i1, i2), 0) && $slt.i48.bool(i1, 0)) then $sub.i48($smod.i48(i1, i2), $smax.i48(i2, $sub.i48(0, i2))) else $smod.i48(i1, i2)) } +function {:inline} $srem.i56(i1: i56, i2: i56) returns (i56) { (if ($ne.i56.bool($smod.i56(i1, i2), 0) && $slt.i56.bool(i1, 0)) then $sub.i56($smod.i56(i1, i2), $smax.i56(i2, $sub.i56(0, i2))) else $smod.i56(i1, i2)) } +function {:inline} $srem.i64(i1: i64, i2: i64) returns (i64) { (if ($ne.i64.bool($smod.i64(i1, i2), 0) && $slt.i64.bool(i1, 0)) then $sub.i64($smod.i64(i1, i2), $smax.i64(i2, $sub.i64(0, i2))) else $smod.i64(i1, i2)) } +function {:inline} $srem.i80(i1: i80, i2: i80) returns (i80) { (if ($ne.i80.bool($smod.i80(i1, i2), 0) && $slt.i80.bool(i1, 0)) then $sub.i80($smod.i80(i1, i2), $smax.i80(i2, $sub.i80(0, i2))) else $smod.i80(i1, i2)) } +function {:inline} $srem.i88(i1: i88, i2: i88) returns (i88) { (if ($ne.i88.bool($smod.i88(i1, i2), 0) && $slt.i88.bool(i1, 0)) then $sub.i88($smod.i88(i1, i2), $smax.i88(i2, $sub.i88(0, i2))) else $smod.i88(i1, i2)) } +function {:inline} $srem.i96(i1: i96, i2: i96) returns (i96) { (if ($ne.i96.bool($smod.i96(i1, i2), 0) && $slt.i96.bool(i1, 0)) then $sub.i96($smod.i96(i1, i2), $smax.i96(i2, $sub.i96(0, i2))) else $smod.i96(i1, i2)) } +function {:inline} $srem.i128(i1: i128, i2: i128) returns (i128) { (if ($ne.i128.bool($smod.i128(i1, i2), 0) && $slt.i128.bool(i1, 0)) then $sub.i128($smod.i128(i1, i2), $smax.i128(i2, $sub.i128(0, i2))) else $smod.i128(i1, i2)) } +function {:inline} $srem.i160(i1: i160, i2: i160) returns (i160) { (if ($ne.i160.bool($smod.i160(i1, i2), 0) && $slt.i160.bool(i1, 0)) then $sub.i160($smod.i160(i1, i2), $smax.i160(i2, $sub.i160(0, i2))) else $smod.i160(i1, i2)) } +function {:inline} $srem.i256(i1: i256, i2: i256) returns (i256) { (if ($ne.i256.bool($smod.i256(i1, i2), 0) && $slt.i256.bool(i1, 0)) then $sub.i256($smod.i256(i1, i2), $smax.i256(i2, $sub.i256(0, i2))) else $smod.i256(i1, i2)) } +function {:inline} $urem.i1(i1: i1, i2: i1) returns (i1) { $smod.i1(i1, i2) } +function {:inline} $urem.i5(i1: i5, i2: i5) returns (i5) { $smod.i5(i1, i2) } +function {:inline} $urem.i6(i1: i6, i2: i6) returns (i6) { $smod.i6(i1, i2) } +function {:inline} $urem.i8(i1: i8, i2: i8) returns (i8) { $smod.i8(i1, i2) } +function {:inline} $urem.i16(i1: i16, i2: i16) returns (i16) { $smod.i16(i1, i2) } +function {:inline} $urem.i24(i1: i24, i2: i24) returns (i24) { $smod.i24(i1, i2) } +function {:inline} $urem.i32(i1: i32, i2: i32) returns (i32) { $smod.i32(i1, i2) } +function {:inline} $urem.i33(i1: i33, i2: i33) returns (i33) { $smod.i33(i1, i2) } +function {:inline} $urem.i40(i1: i40, i2: i40) returns (i40) { $smod.i40(i1, i2) } +function {:inline} $urem.i48(i1: i48, i2: i48) returns (i48) { $smod.i48(i1, i2) } +function {:inline} $urem.i56(i1: i56, i2: i56) returns (i56) { $smod.i56(i1, i2) } +function {:inline} $urem.i64(i1: i64, i2: i64) returns (i64) { $smod.i64(i1, i2) } +function {:inline} $urem.i80(i1: i80, i2: i80) returns (i80) { $smod.i80(i1, i2) } +function {:inline} $urem.i88(i1: i88, i2: i88) returns (i88) { $smod.i88(i1, i2) } +function {:inline} $urem.i96(i1: i96, i2: i96) returns (i96) { $smod.i96(i1, i2) } +function {:inline} $urem.i128(i1: i128, i2: i128) returns (i128) { $smod.i128(i1, i2) } +function {:inline} $urem.i160(i1: i160, i2: i160) returns (i160) { $smod.i160(i1, i2) } +function {:inline} $urem.i256(i1: i256, i2: i256) returns (i256) { $smod.i256(i1, i2) } +function $shl.i1(i1: i1, i2: i1) returns (i1); +function $shl.i5(i1: i5, i2: i5) returns (i5); +function $shl.i6(i1: i6, i2: i6) returns (i6); +function $shl.i8(i1: i8, i2: i8) returns (i8); +function $shl.i16(i1: i16, i2: i16) returns (i16); +function $shl.i24(i1: i24, i2: i24) returns (i24); +function $shl.i32(i1: i32, i2: i32) returns (i32); +function $shl.i33(i1: i33, i2: i33) returns (i33); +function $shl.i40(i1: i40, i2: i40) returns (i40); +function $shl.i48(i1: i48, i2: i48) returns (i48); +function $shl.i56(i1: i56, i2: i56) returns (i56); +function $shl.i64(i1: i64, i2: i64) returns (i64); +function $shl.i80(i1: i80, i2: i80) returns (i80); +function $shl.i88(i1: i88, i2: i88) returns (i88); +function $shl.i96(i1: i96, i2: i96) returns (i96); +function $shl.i128(i1: i128, i2: i128) returns (i128); +function $shl.i160(i1: i160, i2: i160) returns (i160); +function $shl.i256(i1: i256, i2: i256) returns (i256); +function $lshr.i1(i1: i1, i2: i1) returns (i1); +function $lshr.i5(i1: i5, i2: i5) returns (i5); +function $lshr.i6(i1: i6, i2: i6) returns (i6); +function $lshr.i8(i1: i8, i2: i8) returns (i8); +function $lshr.i16(i1: i16, i2: i16) returns (i16); +function $lshr.i24(i1: i24, i2: i24) returns (i24); +function $lshr.i32(i1: i32, i2: i32) returns (i32); +function $lshr.i33(i1: i33, i2: i33) returns (i33); +function $lshr.i40(i1: i40, i2: i40) returns (i40); +function $lshr.i48(i1: i48, i2: i48) returns (i48); +function $lshr.i56(i1: i56, i2: i56) returns (i56); +function $lshr.i64(i1: i64, i2: i64) returns (i64); +function $lshr.i80(i1: i80, i2: i80) returns (i80); +function $lshr.i88(i1: i88, i2: i88) returns (i88); +function $lshr.i96(i1: i96, i2: i96) returns (i96); +function $lshr.i128(i1: i128, i2: i128) returns (i128); +function $lshr.i160(i1: i160, i2: i160) returns (i160); +function $lshr.i256(i1: i256, i2: i256) returns (i256); +function $ashr.i1(i1: i1, i2: i1) returns (i1); +function $ashr.i5(i1: i5, i2: i5) returns (i5); +function $ashr.i6(i1: i6, i2: i6) returns (i6); +function $ashr.i8(i1: i8, i2: i8) returns (i8); +function $ashr.i16(i1: i16, i2: i16) returns (i16); +function $ashr.i24(i1: i24, i2: i24) returns (i24); +function $ashr.i32(i1: i32, i2: i32) returns (i32); +function $ashr.i33(i1: i33, i2: i33) returns (i33); +function $ashr.i40(i1: i40, i2: i40) returns (i40); +function $ashr.i48(i1: i48, i2: i48) returns (i48); +function $ashr.i56(i1: i56, i2: i56) returns (i56); +function $ashr.i64(i1: i64, i2: i64) returns (i64); +function $ashr.i80(i1: i80, i2: i80) returns (i80); +function $ashr.i88(i1: i88, i2: i88) returns (i88); +function $ashr.i96(i1: i96, i2: i96) returns (i96); +function $ashr.i128(i1: i128, i2: i128) returns (i128); +function $ashr.i160(i1: i160, i2: i160) returns (i160); +function $ashr.i256(i1: i256, i2: i256) returns (i256); +function $and.i1(i1: i1, i2: i1) returns (i1); +function $and.i5(i1: i5, i2: i5) returns (i5); +function $and.i6(i1: i6, i2: i6) returns (i6); +function $and.i8(i1: i8, i2: i8) returns (i8); +function $and.i16(i1: i16, i2: i16) returns (i16); +function $and.i24(i1: i24, i2: i24) returns (i24); +function $and.i32(i1: i32, i2: i32) returns (i32); +function $and.i33(i1: i33, i2: i33) returns (i33); +function $and.i40(i1: i40, i2: i40) returns (i40); +function $and.i48(i1: i48, i2: i48) returns (i48); +function $and.i56(i1: i56, i2: i56) returns (i56); +function $and.i64(i1: i64, i2: i64) returns (i64); +function $and.i80(i1: i80, i2: i80) returns (i80); +function $and.i88(i1: i88, i2: i88) returns (i88); +function $and.i96(i1: i96, i2: i96) returns (i96); +function $and.i128(i1: i128, i2: i128) returns (i128); +function $and.i160(i1: i160, i2: i160) returns (i160); +function $and.i256(i1: i256, i2: i256) returns (i256); +function $or.i1(i1: i1, i2: i1) returns (i1); +function $or.i5(i1: i5, i2: i5) returns (i5); +function $or.i6(i1: i6, i2: i6) returns (i6); +function $or.i8(i1: i8, i2: i8) returns (i8); +function $or.i16(i1: i16, i2: i16) returns (i16); +function $or.i24(i1: i24, i2: i24) returns (i24); +function $or.i32(i1: i32, i2: i32) returns (i32); +function $or.i33(i1: i33, i2: i33) returns (i33); +function $or.i40(i1: i40, i2: i40) returns (i40); +function $or.i48(i1: i48, i2: i48) returns (i48); +function $or.i56(i1: i56, i2: i56) returns (i56); +function $or.i64(i1: i64, i2: i64) returns (i64); +function $or.i80(i1: i80, i2: i80) returns (i80); +function $or.i88(i1: i88, i2: i88) returns (i88); +function $or.i96(i1: i96, i2: i96) returns (i96); +function $or.i128(i1: i128, i2: i128) returns (i128); +function $or.i160(i1: i160, i2: i160) returns (i160); +function $or.i256(i1: i256, i2: i256) returns (i256); +function $xor.i1(i1: i1, i2: i1) returns (i1); +function $xor.i5(i1: i5, i2: i5) returns (i5); +function $xor.i6(i1: i6, i2: i6) returns (i6); +function $xor.i8(i1: i8, i2: i8) returns (i8); +function $xor.i16(i1: i16, i2: i16) returns (i16); +function $xor.i24(i1: i24, i2: i24) returns (i24); +function $xor.i32(i1: i32, i2: i32) returns (i32); +function $xor.i33(i1: i33, i2: i33) returns (i33); +function $xor.i40(i1: i40, i2: i40) returns (i40); +function $xor.i48(i1: i48, i2: i48) returns (i48); +function $xor.i56(i1: i56, i2: i56) returns (i56); +function $xor.i64(i1: i64, i2: i64) returns (i64); +function $xor.i80(i1: i80, i2: i80) returns (i80); +function $xor.i88(i1: i88, i2: i88) returns (i88); +function $xor.i96(i1: i96, i2: i96) returns (i96); +function $xor.i128(i1: i128, i2: i128) returns (i128); +function $xor.i160(i1: i160, i2: i160) returns (i160); +function $xor.i256(i1: i256, i2: i256) returns (i256); +function $nand.i1(i1: i1, i2: i1) returns (i1); +function $nand.i5(i1: i5, i2: i5) returns (i5); +function $nand.i6(i1: i6, i2: i6) returns (i6); +function $nand.i8(i1: i8, i2: i8) returns (i8); +function $nand.i16(i1: i16, i2: i16) returns (i16); +function $nand.i24(i1: i24, i2: i24) returns (i24); +function $nand.i32(i1: i32, i2: i32) returns (i32); +function $nand.i33(i1: i33, i2: i33) returns (i33); +function $nand.i40(i1: i40, i2: i40) returns (i40); +function $nand.i48(i1: i48, i2: i48) returns (i48); +function $nand.i56(i1: i56, i2: i56) returns (i56); +function $nand.i64(i1: i64, i2: i64) returns (i64); +function $nand.i80(i1: i80, i2: i80) returns (i80); +function $nand.i88(i1: i88, i2: i88) returns (i88); +function $nand.i96(i1: i96, i2: i96) returns (i96); +function $nand.i128(i1: i128, i2: i128) returns (i128); +function $nand.i160(i1: i160, i2: i160) returns (i160); +function $nand.i256(i1: i256, i2: i256) returns (i256); +function $not.i1(i: i1) returns (i1); +function $not.i5(i: i5) returns (i5); +function $not.i6(i: i6) returns (i6); +function $not.i8(i: i8) returns (i8); +function $not.i16(i: i16) returns (i16); +function $not.i24(i: i24) returns (i24); +function $not.i32(i: i32) returns (i32); +function $not.i33(i: i33) returns (i33); +function $not.i40(i: i40) returns (i40); +function $not.i48(i: i48) returns (i48); +function $not.i56(i: i56) returns (i56); +function $not.i64(i: i64) returns (i64); +function $not.i80(i: i80) returns (i80); +function $not.i88(i: i88) returns (i88); +function $not.i96(i: i96) returns (i96); +function $not.i128(i: i128) returns (i128); +function $not.i160(i: i160) returns (i160); +function $not.i256(i: i256) returns (i256); +function {:inline} $smin.i1(i1: i1, i2: i1) returns (i1) { (if $slt.i1.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i5(i1: i5, i2: i5) returns (i5) { (if $slt.i5.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i6(i1: i6, i2: i6) returns (i6) { (if $slt.i6.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i8(i1: i8, i2: i8) returns (i8) { (if $slt.i8.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i16(i1: i16, i2: i16) returns (i16) { (if $slt.i16.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i24(i1: i24, i2: i24) returns (i24) { (if $slt.i24.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i32(i1: i32, i2: i32) returns (i32) { (if $slt.i32.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i33(i1: i33, i2: i33) returns (i33) { (if $slt.i33.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i40(i1: i40, i2: i40) returns (i40) { (if $slt.i40.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i48(i1: i48, i2: i48) returns (i48) { (if $slt.i48.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i56(i1: i56, i2: i56) returns (i56) { (if $slt.i56.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i64(i1: i64, i2: i64) returns (i64) { (if $slt.i64.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i80(i1: i80, i2: i80) returns (i80) { (if $slt.i80.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i88(i1: i88, i2: i88) returns (i88) { (if $slt.i88.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i96(i1: i96, i2: i96) returns (i96) { (if $slt.i96.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i128(i1: i128, i2: i128) returns (i128) { (if $slt.i128.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i160(i1: i160, i2: i160) returns (i160) { (if $slt.i160.bool(i1, i2) then i1 else i2) } +function {:inline} $smin.i256(i1: i256, i2: i256) returns (i256) { (if $slt.i256.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i1(i1: i1, i2: i1) returns (i1) { (if $sgt.i1.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i5(i1: i5, i2: i5) returns (i5) { (if $sgt.i5.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i6(i1: i6, i2: i6) returns (i6) { (if $sgt.i6.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i8(i1: i8, i2: i8) returns (i8) { (if $sgt.i8.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i16(i1: i16, i2: i16) returns (i16) { (if $sgt.i16.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i24(i1: i24, i2: i24) returns (i24) { (if $sgt.i24.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i32(i1: i32, i2: i32) returns (i32) { (if $sgt.i32.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i33(i1: i33, i2: i33) returns (i33) { (if $sgt.i33.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i40(i1: i40, i2: i40) returns (i40) { (if $sgt.i40.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i48(i1: i48, i2: i48) returns (i48) { (if $sgt.i48.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i56(i1: i56, i2: i56) returns (i56) { (if $sgt.i56.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i64(i1: i64, i2: i64) returns (i64) { (if $sgt.i64.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i80(i1: i80, i2: i80) returns (i80) { (if $sgt.i80.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i88(i1: i88, i2: i88) returns (i88) { (if $sgt.i88.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i96(i1: i96, i2: i96) returns (i96) { (if $sgt.i96.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i128(i1: i128, i2: i128) returns (i128) { (if $sgt.i128.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i160(i1: i160, i2: i160) returns (i160) { (if $sgt.i160.bool(i1, i2) then i1 else i2) } +function {:inline} $smax.i256(i1: i256, i2: i256) returns (i256) { (if $sgt.i256.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i1(i1: i1, i2: i1) returns (i1) { (if $ult.i1.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i5(i1: i5, i2: i5) returns (i5) { (if $ult.i5.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i6(i1: i6, i2: i6) returns (i6) { (if $ult.i6.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i8(i1: i8, i2: i8) returns (i8) { (if $ult.i8.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i16(i1: i16, i2: i16) returns (i16) { (if $ult.i16.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i24(i1: i24, i2: i24) returns (i24) { (if $ult.i24.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i32(i1: i32, i2: i32) returns (i32) { (if $ult.i32.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i33(i1: i33, i2: i33) returns (i33) { (if $ult.i33.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i40(i1: i40, i2: i40) returns (i40) { (if $ult.i40.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i48(i1: i48, i2: i48) returns (i48) { (if $ult.i48.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i56(i1: i56, i2: i56) returns (i56) { (if $ult.i56.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i64(i1: i64, i2: i64) returns (i64) { (if $ult.i64.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i80(i1: i80, i2: i80) returns (i80) { (if $ult.i80.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i88(i1: i88, i2: i88) returns (i88) { (if $ult.i88.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i96(i1: i96, i2: i96) returns (i96) { (if $ult.i96.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i128(i1: i128, i2: i128) returns (i128) { (if $ult.i128.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i160(i1: i160, i2: i160) returns (i160) { (if $ult.i160.bool(i1, i2) then i1 else i2) } +function {:inline} $umin.i256(i1: i256, i2: i256) returns (i256) { (if $ult.i256.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i1(i1: i1, i2: i1) returns (i1) { (if $ugt.i1.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i5(i1: i5, i2: i5) returns (i5) { (if $ugt.i5.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i6(i1: i6, i2: i6) returns (i6) { (if $ugt.i6.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i8(i1: i8, i2: i8) returns (i8) { (if $ugt.i8.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i16(i1: i16, i2: i16) returns (i16) { (if $ugt.i16.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i24(i1: i24, i2: i24) returns (i24) { (if $ugt.i24.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i32(i1: i32, i2: i32) returns (i32) { (if $ugt.i32.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i33(i1: i33, i2: i33) returns (i33) { (if $ugt.i33.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i40(i1: i40, i2: i40) returns (i40) { (if $ugt.i40.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i48(i1: i48, i2: i48) returns (i48) { (if $ugt.i48.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i56(i1: i56, i2: i56) returns (i56) { (if $ugt.i56.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i64(i1: i64, i2: i64) returns (i64) { (if $ugt.i64.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i80(i1: i80, i2: i80) returns (i80) { (if $ugt.i80.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i88(i1: i88, i2: i88) returns (i88) { (if $ugt.i88.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i96(i1: i96, i2: i96) returns (i96) { (if $ugt.i96.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i128(i1: i128, i2: i128) returns (i128) { (if $ugt.i128.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i160(i1: i160, i2: i160) returns (i160) { (if $ugt.i160.bool(i1, i2) then i1 else i2) } +function {:inline} $umax.i256(i1: i256, i2: i256) returns (i256) { (if $ugt.i256.bool(i1, i2) then i1 else i2) } +axiom ($and.i1(0, 0) == 0); +axiom ($or.i1(0, 0) == 0); +axiom ($xor.i1(0, 0) == 0); +axiom ($and.i1(0, 1) == 0); +axiom ($or.i1(0, 1) == 1); +axiom ($xor.i1(0, 1) == 1); +axiom ($and.i1(1, 0) == 0); +axiom ($or.i1(1, 0) == 1); +axiom ($xor.i1(1, 0) == 1); +axiom ($and.i1(1, 1) == 1); +axiom ($or.i1(1, 1) == 1); +axiom ($xor.i1(1, 1) == 0); +axiom ($and.i32(32, 16) == 0); +// Integer predicates +function {:inline} $ule.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i1(i1: i1, i2: i1) returns (i1) { (if $ule.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i5(i1: i5, i2: i5) returns (i1) { (if $ule.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i6(i1: i6, i2: i6) returns (i1) { (if $ule.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i8(i1: i8, i2: i8) returns (i1) { (if $ule.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i16(i1: i16, i2: i16) returns (i1) { (if $ule.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i24(i1: i24, i2: i24) returns (i1) { (if $ule.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i32(i1: i32, i2: i32) returns (i1) { (if $ule.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i33(i1: i33, i2: i33) returns (i1) { (if $ule.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i40(i1: i40, i2: i40) returns (i1) { (if $ule.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i48(i1: i48, i2: i48) returns (i1) { (if $ule.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i56(i1: i56, i2: i56) returns (i1) { (if $ule.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i64(i1: i64, i2: i64) returns (i1) { (if $ule.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i80(i1: i80, i2: i80) returns (i1) { (if $ule.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i88(i1: i88, i2: i88) returns (i1) { (if $ule.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i96(i1: i96, i2: i96) returns (i1) { (if $ule.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i128(i1: i128, i2: i128) returns (i1) { (if $ule.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i160(i1: i160, i2: i160) returns (i1) { (if $ule.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $ule.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 <= i2) } +function {:inline} $ule.i256(i1: i256, i2: i256) returns (i1) { (if $ule.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 < i2) } +function {:inline} $ult.i1(i1: i1, i2: i1) returns (i1) { (if $ult.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 < i2) } +function {:inline} $ult.i5(i1: i5, i2: i5) returns (i1) { (if $ult.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 < i2) } +function {:inline} $ult.i6(i1: i6, i2: i6) returns (i1) { (if $ult.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 < i2) } +function {:inline} $ult.i8(i1: i8, i2: i8) returns (i1) { (if $ult.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 < i2) } +function {:inline} $ult.i16(i1: i16, i2: i16) returns (i1) { (if $ult.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 < i2) } +function {:inline} $ult.i24(i1: i24, i2: i24) returns (i1) { (if $ult.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 < i2) } +function {:inline} $ult.i32(i1: i32, i2: i32) returns (i1) { (if $ult.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 < i2) } +function {:inline} $ult.i33(i1: i33, i2: i33) returns (i1) { (if $ult.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 < i2) } +function {:inline} $ult.i40(i1: i40, i2: i40) returns (i1) { (if $ult.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 < i2) } +function {:inline} $ult.i48(i1: i48, i2: i48) returns (i1) { (if $ult.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 < i2) } +function {:inline} $ult.i56(i1: i56, i2: i56) returns (i1) { (if $ult.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 < i2) } +function {:inline} $ult.i64(i1: i64, i2: i64) returns (i1) { (if $ult.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 < i2) } +function {:inline} $ult.i80(i1: i80, i2: i80) returns (i1) { (if $ult.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 < i2) } +function {:inline} $ult.i88(i1: i88, i2: i88) returns (i1) { (if $ult.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 < i2) } +function {:inline} $ult.i96(i1: i96, i2: i96) returns (i1) { (if $ult.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 < i2) } +function {:inline} $ult.i128(i1: i128, i2: i128) returns (i1) { (if $ult.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 < i2) } +function {:inline} $ult.i160(i1: i160, i2: i160) returns (i1) { (if $ult.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $ult.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 < i2) } +function {:inline} $ult.i256(i1: i256, i2: i256) returns (i1) { (if $ult.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i1(i1: i1, i2: i1) returns (i1) { (if $uge.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i5(i1: i5, i2: i5) returns (i1) { (if $uge.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i6(i1: i6, i2: i6) returns (i1) { (if $uge.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i8(i1: i8, i2: i8) returns (i1) { (if $uge.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i16(i1: i16, i2: i16) returns (i1) { (if $uge.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i24(i1: i24, i2: i24) returns (i1) { (if $uge.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i32(i1: i32, i2: i32) returns (i1) { (if $uge.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i33(i1: i33, i2: i33) returns (i1) { (if $uge.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i40(i1: i40, i2: i40) returns (i1) { (if $uge.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i48(i1: i48, i2: i48) returns (i1) { (if $uge.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i56(i1: i56, i2: i56) returns (i1) { (if $uge.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i64(i1: i64, i2: i64) returns (i1) { (if $uge.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i80(i1: i80, i2: i80) returns (i1) { (if $uge.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i88(i1: i88, i2: i88) returns (i1) { (if $uge.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i96(i1: i96, i2: i96) returns (i1) { (if $uge.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i128(i1: i128, i2: i128) returns (i1) { (if $uge.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i160(i1: i160, i2: i160) returns (i1) { (if $uge.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $uge.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 >= i2) } +function {:inline} $uge.i256(i1: i256, i2: i256) returns (i1) { (if $uge.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i1(i1: i1, i2: i1) returns (i1) { (if $ugt.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i5(i1: i5, i2: i5) returns (i1) { (if $ugt.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i6(i1: i6, i2: i6) returns (i1) { (if $ugt.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i8(i1: i8, i2: i8) returns (i1) { (if $ugt.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i16(i1: i16, i2: i16) returns (i1) { (if $ugt.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i24(i1: i24, i2: i24) returns (i1) { (if $ugt.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i32(i1: i32, i2: i32) returns (i1) { (if $ugt.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i33(i1: i33, i2: i33) returns (i1) { (if $ugt.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i40(i1: i40, i2: i40) returns (i1) { (if $ugt.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i48(i1: i48, i2: i48) returns (i1) { (if $ugt.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i56(i1: i56, i2: i56) returns (i1) { (if $ugt.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i64(i1: i64, i2: i64) returns (i1) { (if $ugt.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i80(i1: i80, i2: i80) returns (i1) { (if $ugt.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i88(i1: i88, i2: i88) returns (i1) { (if $ugt.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i96(i1: i96, i2: i96) returns (i1) { (if $ugt.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i128(i1: i128, i2: i128) returns (i1) { (if $ugt.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i160(i1: i160, i2: i160) returns (i1) { (if $ugt.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $ugt.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 > i2) } +function {:inline} $ugt.i256(i1: i256, i2: i256) returns (i1) { (if $ugt.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i1(i1: i1, i2: i1) returns (i1) { (if $sle.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i5(i1: i5, i2: i5) returns (i1) { (if $sle.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i6(i1: i6, i2: i6) returns (i1) { (if $sle.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i8(i1: i8, i2: i8) returns (i1) { (if $sle.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i16(i1: i16, i2: i16) returns (i1) { (if $sle.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i24(i1: i24, i2: i24) returns (i1) { (if $sle.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i32(i1: i32, i2: i32) returns (i1) { (if $sle.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i33(i1: i33, i2: i33) returns (i1) { (if $sle.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i40(i1: i40, i2: i40) returns (i1) { (if $sle.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i48(i1: i48, i2: i48) returns (i1) { (if $sle.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i56(i1: i56, i2: i56) returns (i1) { (if $sle.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i64(i1: i64, i2: i64) returns (i1) { (if $sle.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i80(i1: i80, i2: i80) returns (i1) { (if $sle.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i88(i1: i88, i2: i88) returns (i1) { (if $sle.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i96(i1: i96, i2: i96) returns (i1) { (if $sle.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i128(i1: i128, i2: i128) returns (i1) { (if $sle.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i160(i1: i160, i2: i160) returns (i1) { (if $sle.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $sle.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 <= i2) } +function {:inline} $sle.i256(i1: i256, i2: i256) returns (i1) { (if $sle.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 < i2) } +function {:inline} $slt.i1(i1: i1, i2: i1) returns (i1) { (if $slt.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 < i2) } +function {:inline} $slt.i5(i1: i5, i2: i5) returns (i1) { (if $slt.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 < i2) } +function {:inline} $slt.i6(i1: i6, i2: i6) returns (i1) { (if $slt.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 < i2) } +function {:inline} $slt.i8(i1: i8, i2: i8) returns (i1) { (if $slt.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 < i2) } +function {:inline} $slt.i16(i1: i16, i2: i16) returns (i1) { (if $slt.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 < i2) } +function {:inline} $slt.i24(i1: i24, i2: i24) returns (i1) { (if $slt.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 < i2) } +function {:inline} $slt.i32(i1: i32, i2: i32) returns (i1) { (if $slt.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 < i2) } +function {:inline} $slt.i33(i1: i33, i2: i33) returns (i1) { (if $slt.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 < i2) } +function {:inline} $slt.i40(i1: i40, i2: i40) returns (i1) { (if $slt.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 < i2) } +function {:inline} $slt.i48(i1: i48, i2: i48) returns (i1) { (if $slt.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 < i2) } +function {:inline} $slt.i56(i1: i56, i2: i56) returns (i1) { (if $slt.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 < i2) } +function {:inline} $slt.i64(i1: i64, i2: i64) returns (i1) { (if $slt.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 < i2) } +function {:inline} $slt.i80(i1: i80, i2: i80) returns (i1) { (if $slt.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 < i2) } +function {:inline} $slt.i88(i1: i88, i2: i88) returns (i1) { (if $slt.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 < i2) } +function {:inline} $slt.i96(i1: i96, i2: i96) returns (i1) { (if $slt.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 < i2) } +function {:inline} $slt.i128(i1: i128, i2: i128) returns (i1) { (if $slt.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 < i2) } +function {:inline} $slt.i160(i1: i160, i2: i160) returns (i1) { (if $slt.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $slt.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 < i2) } +function {:inline} $slt.i256(i1: i256, i2: i256) returns (i1) { (if $slt.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i1(i1: i1, i2: i1) returns (i1) { (if $sge.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i5(i1: i5, i2: i5) returns (i1) { (if $sge.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i6(i1: i6, i2: i6) returns (i1) { (if $sge.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i8(i1: i8, i2: i8) returns (i1) { (if $sge.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i16(i1: i16, i2: i16) returns (i1) { (if $sge.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i24(i1: i24, i2: i24) returns (i1) { (if $sge.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i32(i1: i32, i2: i32) returns (i1) { (if $sge.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i33(i1: i33, i2: i33) returns (i1) { (if $sge.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i40(i1: i40, i2: i40) returns (i1) { (if $sge.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i48(i1: i48, i2: i48) returns (i1) { (if $sge.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i56(i1: i56, i2: i56) returns (i1) { (if $sge.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i64(i1: i64, i2: i64) returns (i1) { (if $sge.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i80(i1: i80, i2: i80) returns (i1) { (if $sge.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i88(i1: i88, i2: i88) returns (i1) { (if $sge.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i96(i1: i96, i2: i96) returns (i1) { (if $sge.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i128(i1: i128, i2: i128) returns (i1) { (if $sge.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i160(i1: i160, i2: i160) returns (i1) { (if $sge.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $sge.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 >= i2) } +function {:inline} $sge.i256(i1: i256, i2: i256) returns (i1) { (if $sge.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i1(i1: i1, i2: i1) returns (i1) { (if $sgt.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i5(i1: i5, i2: i5) returns (i1) { (if $sgt.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i6(i1: i6, i2: i6) returns (i1) { (if $sgt.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i8(i1: i8, i2: i8) returns (i1) { (if $sgt.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i16(i1: i16, i2: i16) returns (i1) { (if $sgt.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i24(i1: i24, i2: i24) returns (i1) { (if $sgt.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i32(i1: i32, i2: i32) returns (i1) { (if $sgt.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i33(i1: i33, i2: i33) returns (i1) { (if $sgt.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i40(i1: i40, i2: i40) returns (i1) { (if $sgt.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i48(i1: i48, i2: i48) returns (i1) { (if $sgt.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i56(i1: i56, i2: i56) returns (i1) { (if $sgt.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i64(i1: i64, i2: i64) returns (i1) { (if $sgt.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i80(i1: i80, i2: i80) returns (i1) { (if $sgt.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i88(i1: i88, i2: i88) returns (i1) { (if $sgt.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i96(i1: i96, i2: i96) returns (i1) { (if $sgt.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i128(i1: i128, i2: i128) returns (i1) { (if $sgt.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i160(i1: i160, i2: i160) returns (i1) { (if $sgt.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $sgt.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 > i2) } +function {:inline} $sgt.i256(i1: i256, i2: i256) returns (i1) { (if $sgt.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 == i2) } +function {:inline} $eq.i1(i1: i1, i2: i1) returns (i1) { (if $eq.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 == i2) } +function {:inline} $eq.i5(i1: i5, i2: i5) returns (i1) { (if $eq.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 == i2) } +function {:inline} $eq.i6(i1: i6, i2: i6) returns (i1) { (if $eq.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 == i2) } +function {:inline} $eq.i8(i1: i8, i2: i8) returns (i1) { (if $eq.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 == i2) } +function {:inline} $eq.i16(i1: i16, i2: i16) returns (i1) { (if $eq.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 == i2) } +function {:inline} $eq.i24(i1: i24, i2: i24) returns (i1) { (if $eq.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 == i2) } +function {:inline} $eq.i32(i1: i32, i2: i32) returns (i1) { (if $eq.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 == i2) } +function {:inline} $eq.i33(i1: i33, i2: i33) returns (i1) { (if $eq.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 == i2) } +function {:inline} $eq.i40(i1: i40, i2: i40) returns (i1) { (if $eq.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 == i2) } +function {:inline} $eq.i48(i1: i48, i2: i48) returns (i1) { (if $eq.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 == i2) } +function {:inline} $eq.i56(i1: i56, i2: i56) returns (i1) { (if $eq.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 == i2) } +function {:inline} $eq.i64(i1: i64, i2: i64) returns (i1) { (if $eq.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 == i2) } +function {:inline} $eq.i80(i1: i80, i2: i80) returns (i1) { (if $eq.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 == i2) } +function {:inline} $eq.i88(i1: i88, i2: i88) returns (i1) { (if $eq.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 == i2) } +function {:inline} $eq.i96(i1: i96, i2: i96) returns (i1) { (if $eq.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 == i2) } +function {:inline} $eq.i128(i1: i128, i2: i128) returns (i1) { (if $eq.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 == i2) } +function {:inline} $eq.i160(i1: i160, i2: i160) returns (i1) { (if $eq.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $eq.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 == i2) } +function {:inline} $eq.i256(i1: i256, i2: i256) returns (i1) { (if $eq.i256.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i1.bool(i1: i1, i2: i1) returns (bool) { (i1 != i2) } +function {:inline} $ne.i1(i1: i1, i2: i1) returns (i1) { (if $ne.i1.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i5.bool(i1: i5, i2: i5) returns (bool) { (i1 != i2) } +function {:inline} $ne.i5(i1: i5, i2: i5) returns (i1) { (if $ne.i5.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i6.bool(i1: i6, i2: i6) returns (bool) { (i1 != i2) } +function {:inline} $ne.i6(i1: i6, i2: i6) returns (i1) { (if $ne.i6.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i8.bool(i1: i8, i2: i8) returns (bool) { (i1 != i2) } +function {:inline} $ne.i8(i1: i8, i2: i8) returns (i1) { (if $ne.i8.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i16.bool(i1: i16, i2: i16) returns (bool) { (i1 != i2) } +function {:inline} $ne.i16(i1: i16, i2: i16) returns (i1) { (if $ne.i16.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i24.bool(i1: i24, i2: i24) returns (bool) { (i1 != i2) } +function {:inline} $ne.i24(i1: i24, i2: i24) returns (i1) { (if $ne.i24.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i32.bool(i1: i32, i2: i32) returns (bool) { (i1 != i2) } +function {:inline} $ne.i32(i1: i32, i2: i32) returns (i1) { (if $ne.i32.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i33.bool(i1: i33, i2: i33) returns (bool) { (i1 != i2) } +function {:inline} $ne.i33(i1: i33, i2: i33) returns (i1) { (if $ne.i33.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i40.bool(i1: i40, i2: i40) returns (bool) { (i1 != i2) } +function {:inline} $ne.i40(i1: i40, i2: i40) returns (i1) { (if $ne.i40.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i48.bool(i1: i48, i2: i48) returns (bool) { (i1 != i2) } +function {:inline} $ne.i48(i1: i48, i2: i48) returns (i1) { (if $ne.i48.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i56.bool(i1: i56, i2: i56) returns (bool) { (i1 != i2) } +function {:inline} $ne.i56(i1: i56, i2: i56) returns (i1) { (if $ne.i56.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i64.bool(i1: i64, i2: i64) returns (bool) { (i1 != i2) } +function {:inline} $ne.i64(i1: i64, i2: i64) returns (i1) { (if $ne.i64.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i80.bool(i1: i80, i2: i80) returns (bool) { (i1 != i2) } +function {:inline} $ne.i80(i1: i80, i2: i80) returns (i1) { (if $ne.i80.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i88.bool(i1: i88, i2: i88) returns (bool) { (i1 != i2) } +function {:inline} $ne.i88(i1: i88, i2: i88) returns (i1) { (if $ne.i88.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i96.bool(i1: i96, i2: i96) returns (bool) { (i1 != i2) } +function {:inline} $ne.i96(i1: i96, i2: i96) returns (i1) { (if $ne.i96.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i128.bool(i1: i128, i2: i128) returns (bool) { (i1 != i2) } +function {:inline} $ne.i128(i1: i128, i2: i128) returns (i1) { (if $ne.i128.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i160.bool(i1: i160, i2: i160) returns (bool) { (i1 != i2) } +function {:inline} $ne.i160(i1: i160, i2: i160) returns (i1) { (if $ne.i160.bool(i1, i2) then 1 else 0) } +function {:inline} $ne.i256.bool(i1: i256, i2: i256) returns (bool) { (i1 != i2) } +function {:inline} $ne.i256(i1: i256, i2: i256) returns (i1) { (if $ne.i256.bool(i1, i2) then 1 else 0) } +// Integer load/store operations +function {:inline} $load.i1(M: [ref] i1, p: ref) returns (i1) { M[p] } +function {:inline} $store.i1(M: [ref] i1, p: ref, i: i1) returns ([ref] i1) { M[p := i] } +function {:inline} $load.i5(M: [ref] i5, p: ref) returns (i5) { M[p] } +function {:inline} $store.i5(M: [ref] i5, p: ref, i: i5) returns ([ref] i5) { M[p := i] } +function {:inline} $load.i6(M: [ref] i6, p: ref) returns (i6) { M[p] } +function {:inline} $store.i6(M: [ref] i6, p: ref, i: i6) returns ([ref] i6) { M[p := i] } +function {:inline} $load.i8(M: [ref] i8, p: ref) returns (i8) { M[p] } +function {:inline} $store.i8(M: [ref] i8, p: ref, i: i8) returns ([ref] i8) { M[p := i] } +function {:inline} $load.i16(M: [ref] i16, p: ref) returns (i16) { M[p] } +function {:inline} $store.i16(M: [ref] i16, p: ref, i: i16) returns ([ref] i16) { M[p := i] } +function {:inline} $load.i24(M: [ref] i24, p: ref) returns (i24) { M[p] } +function {:inline} $store.i24(M: [ref] i24, p: ref, i: i24) returns ([ref] i24) { M[p := i] } +function {:inline} $load.i32(M: [ref] i32, p: ref) returns (i32) { M[p] } +function {:inline} $store.i32(M: [ref] i32, p: ref, i: i32) returns ([ref] i32) { M[p := i] } +function {:inline} $load.i33(M: [ref] i33, p: ref) returns (i33) { M[p] } +function {:inline} $store.i33(M: [ref] i33, p: ref, i: i33) returns ([ref] i33) { M[p := i] } +function {:inline} $load.i40(M: [ref] i40, p: ref) returns (i40) { M[p] } +function {:inline} $store.i40(M: [ref] i40, p: ref, i: i40) returns ([ref] i40) { M[p := i] } +function {:inline} $load.i48(M: [ref] i48, p: ref) returns (i48) { M[p] } +function {:inline} $store.i48(M: [ref] i48, p: ref, i: i48) returns ([ref] i48) { M[p := i] } +function {:inline} $load.i56(M: [ref] i56, p: ref) returns (i56) { M[p] } +function {:inline} $store.i56(M: [ref] i56, p: ref, i: i56) returns ([ref] i56) { M[p := i] } +function {:inline} $load.i64(M: [ref] i64, p: ref) returns (i64) { M[p] } +function {:inline} $store.i64(M: [ref] i64, p: ref, i: i64) returns ([ref] i64) { M[p := i] } +function {:inline} $load.i80(M: [ref] i80, p: ref) returns (i80) { M[p] } +function {:inline} $store.i80(M: [ref] i80, p: ref, i: i80) returns ([ref] i80) { M[p := i] } +function {:inline} $load.i88(M: [ref] i88, p: ref) returns (i88) { M[p] } +function {:inline} $store.i88(M: [ref] i88, p: ref, i: i88) returns ([ref] i88) { M[p := i] } +function {:inline} $load.i96(M: [ref] i96, p: ref) returns (i96) { M[p] } +function {:inline} $store.i96(M: [ref] i96, p: ref, i: i96) returns ([ref] i96) { M[p := i] } +function {:inline} $load.i128(M: [ref] i128, p: ref) returns (i128) { M[p] } +function {:inline} $store.i128(M: [ref] i128, p: ref, i: i128) returns ([ref] i128) { M[p := i] } +function {:inline} $load.i160(M: [ref] i160, p: ref) returns (i160) { M[p] } +function {:inline} $store.i160(M: [ref] i160, p: ref, i: i160) returns ([ref] i160) { M[p := i] } +function {:inline} $load.i256(M: [ref] i256, p: ref) returns (i256) { M[p] } +function {:inline} $store.i256(M: [ref] i256, p: ref, i: i256) returns ([ref] i256) { M[p := i] } +// Conversion between integer types +function {:inline} $trunc.i5.i1(i: i5) returns (i1) { i } +function {:inline} $trunc.i6.i1(i: i6) returns (i1) { i } +function {:inline} $trunc.i8.i1(i: i8) returns (i1) { i } +function {:inline} $trunc.i16.i1(i: i16) returns (i1) { i } +function {:inline} $trunc.i24.i1(i: i24) returns (i1) { i } +function {:inline} $trunc.i32.i1(i: i32) returns (i1) { i } +function {:inline} $trunc.i33.i1(i: i33) returns (i1) { i } +function {:inline} $trunc.i40.i1(i: i40) returns (i1) { i } +function {:inline} $trunc.i48.i1(i: i48) returns (i1) { i } +function {:inline} $trunc.i56.i1(i: i56) returns (i1) { i } +function {:inline} $trunc.i64.i1(i: i64) returns (i1) { i } +function {:inline} $trunc.i80.i1(i: i80) returns (i1) { i } +function {:inline} $trunc.i88.i1(i: i88) returns (i1) { i } +function {:inline} $trunc.i96.i1(i: i96) returns (i1) { i } +function {:inline} $trunc.i128.i1(i: i128) returns (i1) { i } +function {:inline} $trunc.i160.i1(i: i160) returns (i1) { i } +function {:inline} $trunc.i256.i1(i: i256) returns (i1) { i } +function {:inline} $trunc.i6.i5(i: i6) returns (i5) { i } +function {:inline} $trunc.i8.i5(i: i8) returns (i5) { i } +function {:inline} $trunc.i16.i5(i: i16) returns (i5) { i } +function {:inline} $trunc.i24.i5(i: i24) returns (i5) { i } +function {:inline} $trunc.i32.i5(i: i32) returns (i5) { i } +function {:inline} $trunc.i33.i5(i: i33) returns (i5) { i } +function {:inline} $trunc.i40.i5(i: i40) returns (i5) { i } +function {:inline} $trunc.i48.i5(i: i48) returns (i5) { i } +function {:inline} $trunc.i56.i5(i: i56) returns (i5) { i } +function {:inline} $trunc.i64.i5(i: i64) returns (i5) { i } +function {:inline} $trunc.i80.i5(i: i80) returns (i5) { i } +function {:inline} $trunc.i88.i5(i: i88) returns (i5) { i } +function {:inline} $trunc.i96.i5(i: i96) returns (i5) { i } +function {:inline} $trunc.i128.i5(i: i128) returns (i5) { i } +function {:inline} $trunc.i160.i5(i: i160) returns (i5) { i } +function {:inline} $trunc.i256.i5(i: i256) returns (i5) { i } +function {:inline} $trunc.i8.i6(i: i8) returns (i6) { i } +function {:inline} $trunc.i16.i6(i: i16) returns (i6) { i } +function {:inline} $trunc.i24.i6(i: i24) returns (i6) { i } +function {:inline} $trunc.i32.i6(i: i32) returns (i6) { i } +function {:inline} $trunc.i33.i6(i: i33) returns (i6) { i } +function {:inline} $trunc.i40.i6(i: i40) returns (i6) { i } +function {:inline} $trunc.i48.i6(i: i48) returns (i6) { i } +function {:inline} $trunc.i56.i6(i: i56) returns (i6) { i } +function {:inline} $trunc.i64.i6(i: i64) returns (i6) { i } +function {:inline} $trunc.i80.i6(i: i80) returns (i6) { i } +function {:inline} $trunc.i88.i6(i: i88) returns (i6) { i } +function {:inline} $trunc.i96.i6(i: i96) returns (i6) { i } +function {:inline} $trunc.i128.i6(i: i128) returns (i6) { i } +function {:inline} $trunc.i160.i6(i: i160) returns (i6) { i } +function {:inline} $trunc.i256.i6(i: i256) returns (i6) { i } +function {:inline} $trunc.i16.i8(i: i16) returns (i8) { i } +function {:inline} $trunc.i24.i8(i: i24) returns (i8) { i } +function {:inline} $trunc.i32.i8(i: i32) returns (i8) { i } +function {:inline} $trunc.i33.i8(i: i33) returns (i8) { i } +function {:inline} $trunc.i40.i8(i: i40) returns (i8) { i } +function {:inline} $trunc.i48.i8(i: i48) returns (i8) { i } +function {:inline} $trunc.i56.i8(i: i56) returns (i8) { i } +function {:inline} $trunc.i64.i8(i: i64) returns (i8) { i } +function {:inline} $trunc.i80.i8(i: i80) returns (i8) { i } +function {:inline} $trunc.i88.i8(i: i88) returns (i8) { i } +function {:inline} $trunc.i96.i8(i: i96) returns (i8) { i } +function {:inline} $trunc.i128.i8(i: i128) returns (i8) { i } +function {:inline} $trunc.i160.i8(i: i160) returns (i8) { i } +function {:inline} $trunc.i256.i8(i: i256) returns (i8) { i } +function {:inline} $trunc.i24.i16(i: i24) returns (i16) { i } +function {:inline} $trunc.i32.i16(i: i32) returns (i16) { i } +function {:inline} $trunc.i33.i16(i: i33) returns (i16) { i } +function {:inline} $trunc.i40.i16(i: i40) returns (i16) { i } +function {:inline} $trunc.i48.i16(i: i48) returns (i16) { i } +function {:inline} $trunc.i56.i16(i: i56) returns (i16) { i } +function {:inline} $trunc.i64.i16(i: i64) returns (i16) { i } +function {:inline} $trunc.i80.i16(i: i80) returns (i16) { i } +function {:inline} $trunc.i88.i16(i: i88) returns (i16) { i } +function {:inline} $trunc.i96.i16(i: i96) returns (i16) { i } +function {:inline} $trunc.i128.i16(i: i128) returns (i16) { i } +function {:inline} $trunc.i160.i16(i: i160) returns (i16) { i } +function {:inline} $trunc.i256.i16(i: i256) returns (i16) { i } +function {:inline} $trunc.i32.i24(i: i32) returns (i24) { i } +function {:inline} $trunc.i33.i24(i: i33) returns (i24) { i } +function {:inline} $trunc.i40.i24(i: i40) returns (i24) { i } +function {:inline} $trunc.i48.i24(i: i48) returns (i24) { i } +function {:inline} $trunc.i56.i24(i: i56) returns (i24) { i } +function {:inline} $trunc.i64.i24(i: i64) returns (i24) { i } +function {:inline} $trunc.i80.i24(i: i80) returns (i24) { i } +function {:inline} $trunc.i88.i24(i: i88) returns (i24) { i } +function {:inline} $trunc.i96.i24(i: i96) returns (i24) { i } +function {:inline} $trunc.i128.i24(i: i128) returns (i24) { i } +function {:inline} $trunc.i160.i24(i: i160) returns (i24) { i } +function {:inline} $trunc.i256.i24(i: i256) returns (i24) { i } +function {:inline} $trunc.i33.i32(i: i33) returns (i32) { i } +function {:inline} $trunc.i40.i32(i: i40) returns (i32) { i } +function {:inline} $trunc.i48.i32(i: i48) returns (i32) { i } +function {:inline} $trunc.i56.i32(i: i56) returns (i32) { i } +function {:inline} $trunc.i64.i32(i: i64) returns (i32) { i } +function {:inline} $trunc.i80.i32(i: i80) returns (i32) { i } +function {:inline} $trunc.i88.i32(i: i88) returns (i32) { i } +function {:inline} $trunc.i96.i32(i: i96) returns (i32) { i } +function {:inline} $trunc.i128.i32(i: i128) returns (i32) { i } +function {:inline} $trunc.i160.i32(i: i160) returns (i32) { i } +function {:inline} $trunc.i256.i32(i: i256) returns (i32) { i } +function {:inline} $trunc.i40.i33(i: i40) returns (i33) { i } +function {:inline} $trunc.i48.i33(i: i48) returns (i33) { i } +function {:inline} $trunc.i56.i33(i: i56) returns (i33) { i } +function {:inline} $trunc.i64.i33(i: i64) returns (i33) { i } +function {:inline} $trunc.i80.i33(i: i80) returns (i33) { i } +function {:inline} $trunc.i88.i33(i: i88) returns (i33) { i } +function {:inline} $trunc.i96.i33(i: i96) returns (i33) { i } +function {:inline} $trunc.i128.i33(i: i128) returns (i33) { i } +function {:inline} $trunc.i160.i33(i: i160) returns (i33) { i } +function {:inline} $trunc.i256.i33(i: i256) returns (i33) { i } +function {:inline} $trunc.i48.i40(i: i48) returns (i40) { i } +function {:inline} $trunc.i56.i40(i: i56) returns (i40) { i } +function {:inline} $trunc.i64.i40(i: i64) returns (i40) { i } +function {:inline} $trunc.i80.i40(i: i80) returns (i40) { i } +function {:inline} $trunc.i88.i40(i: i88) returns (i40) { i } +function {:inline} $trunc.i96.i40(i: i96) returns (i40) { i } +function {:inline} $trunc.i128.i40(i: i128) returns (i40) { i } +function {:inline} $trunc.i160.i40(i: i160) returns (i40) { i } +function {:inline} $trunc.i256.i40(i: i256) returns (i40) { i } +function {:inline} $trunc.i56.i48(i: i56) returns (i48) { i } +function {:inline} $trunc.i64.i48(i: i64) returns (i48) { i } +function {:inline} $trunc.i80.i48(i: i80) returns (i48) { i } +function {:inline} $trunc.i88.i48(i: i88) returns (i48) { i } +function {:inline} $trunc.i96.i48(i: i96) returns (i48) { i } +function {:inline} $trunc.i128.i48(i: i128) returns (i48) { i } +function {:inline} $trunc.i160.i48(i: i160) returns (i48) { i } +function {:inline} $trunc.i256.i48(i: i256) returns (i48) { i } +function {:inline} $trunc.i64.i56(i: i64) returns (i56) { i } +function {:inline} $trunc.i80.i56(i: i80) returns (i56) { i } +function {:inline} $trunc.i88.i56(i: i88) returns (i56) { i } +function {:inline} $trunc.i96.i56(i: i96) returns (i56) { i } +function {:inline} $trunc.i128.i56(i: i128) returns (i56) { i } +function {:inline} $trunc.i160.i56(i: i160) returns (i56) { i } +function {:inline} $trunc.i256.i56(i: i256) returns (i56) { i } +function {:inline} $trunc.i80.i64(i: i80) returns (i64) { i } +function {:inline} $trunc.i88.i64(i: i88) returns (i64) { i } +function {:inline} $trunc.i96.i64(i: i96) returns (i64) { i } +function {:inline} $trunc.i128.i64(i: i128) returns (i64) { i } +function {:inline} $trunc.i160.i64(i: i160) returns (i64) { i } +function {:inline} $trunc.i256.i64(i: i256) returns (i64) { i } +function {:inline} $trunc.i88.i80(i: i88) returns (i80) { i } +function {:inline} $trunc.i96.i80(i: i96) returns (i80) { i } +function {:inline} $trunc.i128.i80(i: i128) returns (i80) { i } +function {:inline} $trunc.i160.i80(i: i160) returns (i80) { i } +function {:inline} $trunc.i256.i80(i: i256) returns (i80) { i } +function {:inline} $trunc.i96.i88(i: i96) returns (i88) { i } +function {:inline} $trunc.i128.i88(i: i128) returns (i88) { i } +function {:inline} $trunc.i160.i88(i: i160) returns (i88) { i } +function {:inline} $trunc.i256.i88(i: i256) returns (i88) { i } +function {:inline} $trunc.i128.i96(i: i128) returns (i96) { i } +function {:inline} $trunc.i160.i96(i: i160) returns (i96) { i } +function {:inline} $trunc.i256.i96(i: i256) returns (i96) { i } +function {:inline} $trunc.i160.i128(i: i160) returns (i128) { i } +function {:inline} $trunc.i256.i128(i: i256) returns (i128) { i } +function {:inline} $trunc.i256.i160(i: i256) returns (i160) { i } +function {:inline} $sext.i1.i5(i: i1) returns (i5) { i } +function {:inline} $sext.i1.i6(i: i1) returns (i6) { i } +function {:inline} $sext.i1.i8(i: i1) returns (i8) { i } +function {:inline} $sext.i1.i16(i: i1) returns (i16) { i } +function {:inline} $sext.i1.i24(i: i1) returns (i24) { i } +function {:inline} $sext.i1.i32(i: i1) returns (i32) { i } +function {:inline} $sext.i1.i33(i: i1) returns (i33) { i } +function {:inline} $sext.i1.i40(i: i1) returns (i40) { i } +function {:inline} $sext.i1.i48(i: i1) returns (i48) { i } +function {:inline} $sext.i1.i56(i: i1) returns (i56) { i } +function {:inline} $sext.i1.i64(i: i1) returns (i64) { i } +function {:inline} $sext.i1.i80(i: i1) returns (i80) { i } +function {:inline} $sext.i1.i88(i: i1) returns (i88) { i } +function {:inline} $sext.i1.i96(i: i1) returns (i96) { i } +function {:inline} $sext.i1.i128(i: i1) returns (i128) { i } +function {:inline} $sext.i1.i160(i: i1) returns (i160) { i } +function {:inline} $sext.i1.i256(i: i1) returns (i256) { i } +function {:inline} $sext.i5.i6(i: i5) returns (i6) { i } +function {:inline} $sext.i5.i8(i: i5) returns (i8) { i } +function {:inline} $sext.i5.i16(i: i5) returns (i16) { i } +function {:inline} $sext.i5.i24(i: i5) returns (i24) { i } +function {:inline} $sext.i5.i32(i: i5) returns (i32) { i } +function {:inline} $sext.i5.i33(i: i5) returns (i33) { i } +function {:inline} $sext.i5.i40(i: i5) returns (i40) { i } +function {:inline} $sext.i5.i48(i: i5) returns (i48) { i } +function {:inline} $sext.i5.i56(i: i5) returns (i56) { i } +function {:inline} $sext.i5.i64(i: i5) returns (i64) { i } +function {:inline} $sext.i5.i80(i: i5) returns (i80) { i } +function {:inline} $sext.i5.i88(i: i5) returns (i88) { i } +function {:inline} $sext.i5.i96(i: i5) returns (i96) { i } +function {:inline} $sext.i5.i128(i: i5) returns (i128) { i } +function {:inline} $sext.i5.i160(i: i5) returns (i160) { i } +function {:inline} $sext.i5.i256(i: i5) returns (i256) { i } +function {:inline} $sext.i6.i8(i: i6) returns (i8) { i } +function {:inline} $sext.i6.i16(i: i6) returns (i16) { i } +function {:inline} $sext.i6.i24(i: i6) returns (i24) { i } +function {:inline} $sext.i6.i32(i: i6) returns (i32) { i } +function {:inline} $sext.i6.i33(i: i6) returns (i33) { i } +function {:inline} $sext.i6.i40(i: i6) returns (i40) { i } +function {:inline} $sext.i6.i48(i: i6) returns (i48) { i } +function {:inline} $sext.i6.i56(i: i6) returns (i56) { i } +function {:inline} $sext.i6.i64(i: i6) returns (i64) { i } +function {:inline} $sext.i6.i80(i: i6) returns (i80) { i } +function {:inline} $sext.i6.i88(i: i6) returns (i88) { i } +function {:inline} $sext.i6.i96(i: i6) returns (i96) { i } +function {:inline} $sext.i6.i128(i: i6) returns (i128) { i } +function {:inline} $sext.i6.i160(i: i6) returns (i160) { i } +function {:inline} $sext.i6.i256(i: i6) returns (i256) { i } +function {:inline} $sext.i8.i16(i: i8) returns (i16) { i } +function {:inline} $sext.i8.i24(i: i8) returns (i24) { i } +function {:inline} $sext.i8.i32(i: i8) returns (i32) { i } +function {:inline} $sext.i8.i33(i: i8) returns (i33) { i } +function {:inline} $sext.i8.i40(i: i8) returns (i40) { i } +function {:inline} $sext.i8.i48(i: i8) returns (i48) { i } +function {:inline} $sext.i8.i56(i: i8) returns (i56) { i } +function {:inline} $sext.i8.i64(i: i8) returns (i64) { i } +function {:inline} $sext.i8.i80(i: i8) returns (i80) { i } +function {:inline} $sext.i8.i88(i: i8) returns (i88) { i } +function {:inline} $sext.i8.i96(i: i8) returns (i96) { i } +function {:inline} $sext.i8.i128(i: i8) returns (i128) { i } +function {:inline} $sext.i8.i160(i: i8) returns (i160) { i } +function {:inline} $sext.i8.i256(i: i8) returns (i256) { i } +function {:inline} $sext.i16.i24(i: i16) returns (i24) { i } +function {:inline} $sext.i16.i32(i: i16) returns (i32) { i } +function {:inline} $sext.i16.i33(i: i16) returns (i33) { i } +function {:inline} $sext.i16.i40(i: i16) returns (i40) { i } +function {:inline} $sext.i16.i48(i: i16) returns (i48) { i } +function {:inline} $sext.i16.i56(i: i16) returns (i56) { i } +function {:inline} $sext.i16.i64(i: i16) returns (i64) { i } +function {:inline} $sext.i16.i80(i: i16) returns (i80) { i } +function {:inline} $sext.i16.i88(i: i16) returns (i88) { i } +function {:inline} $sext.i16.i96(i: i16) returns (i96) { i } +function {:inline} $sext.i16.i128(i: i16) returns (i128) { i } +function {:inline} $sext.i16.i160(i: i16) returns (i160) { i } +function {:inline} $sext.i16.i256(i: i16) returns (i256) { i } +function {:inline} $sext.i24.i32(i: i24) returns (i32) { i } +function {:inline} $sext.i24.i33(i: i24) returns (i33) { i } +function {:inline} $sext.i24.i40(i: i24) returns (i40) { i } +function {:inline} $sext.i24.i48(i: i24) returns (i48) { i } +function {:inline} $sext.i24.i56(i: i24) returns (i56) { i } +function {:inline} $sext.i24.i64(i: i24) returns (i64) { i } +function {:inline} $sext.i24.i80(i: i24) returns (i80) { i } +function {:inline} $sext.i24.i88(i: i24) returns (i88) { i } +function {:inline} $sext.i24.i96(i: i24) returns (i96) { i } +function {:inline} $sext.i24.i128(i: i24) returns (i128) { i } +function {:inline} $sext.i24.i160(i: i24) returns (i160) { i } +function {:inline} $sext.i24.i256(i: i24) returns (i256) { i } +function {:inline} $sext.i32.i33(i: i32) returns (i33) { i } +function {:inline} $sext.i32.i40(i: i32) returns (i40) { i } +function {:inline} $sext.i32.i48(i: i32) returns (i48) { i } +function {:inline} $sext.i32.i56(i: i32) returns (i56) { i } +function {:inline} $sext.i32.i64(i: i32) returns (i64) { i } +function {:inline} $sext.i32.i80(i: i32) returns (i80) { i } +function {:inline} $sext.i32.i88(i: i32) returns (i88) { i } +function {:inline} $sext.i32.i96(i: i32) returns (i96) { i } +function {:inline} $sext.i32.i128(i: i32) returns (i128) { i } +function {:inline} $sext.i32.i160(i: i32) returns (i160) { i } +function {:inline} $sext.i32.i256(i: i32) returns (i256) { i } +function {:inline} $sext.i33.i40(i: i33) returns (i40) { i } +function {:inline} $sext.i33.i48(i: i33) returns (i48) { i } +function {:inline} $sext.i33.i56(i: i33) returns (i56) { i } +function {:inline} $sext.i33.i64(i: i33) returns (i64) { i } +function {:inline} $sext.i33.i80(i: i33) returns (i80) { i } +function {:inline} $sext.i33.i88(i: i33) returns (i88) { i } +function {:inline} $sext.i33.i96(i: i33) returns (i96) { i } +function {:inline} $sext.i33.i128(i: i33) returns (i128) { i } +function {:inline} $sext.i33.i160(i: i33) returns (i160) { i } +function {:inline} $sext.i33.i256(i: i33) returns (i256) { i } +function {:inline} $sext.i40.i48(i: i40) returns (i48) { i } +function {:inline} $sext.i40.i56(i: i40) returns (i56) { i } +function {:inline} $sext.i40.i64(i: i40) returns (i64) { i } +function {:inline} $sext.i40.i80(i: i40) returns (i80) { i } +function {:inline} $sext.i40.i88(i: i40) returns (i88) { i } +function {:inline} $sext.i40.i96(i: i40) returns (i96) { i } +function {:inline} $sext.i40.i128(i: i40) returns (i128) { i } +function {:inline} $sext.i40.i160(i: i40) returns (i160) { i } +function {:inline} $sext.i40.i256(i: i40) returns (i256) { i } +function {:inline} $sext.i48.i56(i: i48) returns (i56) { i } +function {:inline} $sext.i48.i64(i: i48) returns (i64) { i } +function {:inline} $sext.i48.i80(i: i48) returns (i80) { i } +function {:inline} $sext.i48.i88(i: i48) returns (i88) { i } +function {:inline} $sext.i48.i96(i: i48) returns (i96) { i } +function {:inline} $sext.i48.i128(i: i48) returns (i128) { i } +function {:inline} $sext.i48.i160(i: i48) returns (i160) { i } +function {:inline} $sext.i48.i256(i: i48) returns (i256) { i } +function {:inline} $sext.i56.i64(i: i56) returns (i64) { i } +function {:inline} $sext.i56.i80(i: i56) returns (i80) { i } +function {:inline} $sext.i56.i88(i: i56) returns (i88) { i } +function {:inline} $sext.i56.i96(i: i56) returns (i96) { i } +function {:inline} $sext.i56.i128(i: i56) returns (i128) { i } +function {:inline} $sext.i56.i160(i: i56) returns (i160) { i } +function {:inline} $sext.i56.i256(i: i56) returns (i256) { i } +function {:inline} $sext.i64.i80(i: i64) returns (i80) { i } +function {:inline} $sext.i64.i88(i: i64) returns (i88) { i } +function {:inline} $sext.i64.i96(i: i64) returns (i96) { i } +function {:inline} $sext.i64.i128(i: i64) returns (i128) { i } +function {:inline} $sext.i64.i160(i: i64) returns (i160) { i } +function {:inline} $sext.i64.i256(i: i64) returns (i256) { i } +function {:inline} $sext.i80.i88(i: i80) returns (i88) { i } +function {:inline} $sext.i80.i96(i: i80) returns (i96) { i } +function {:inline} $sext.i80.i128(i: i80) returns (i128) { i } +function {:inline} $sext.i80.i160(i: i80) returns (i160) { i } +function {:inline} $sext.i80.i256(i: i80) returns (i256) { i } +function {:inline} $sext.i88.i96(i: i88) returns (i96) { i } +function {:inline} $sext.i88.i128(i: i88) returns (i128) { i } +function {:inline} $sext.i88.i160(i: i88) returns (i160) { i } +function {:inline} $sext.i88.i256(i: i88) returns (i256) { i } +function {:inline} $sext.i96.i128(i: i96) returns (i128) { i } +function {:inline} $sext.i96.i160(i: i96) returns (i160) { i } +function {:inline} $sext.i96.i256(i: i96) returns (i256) { i } +function {:inline} $sext.i128.i160(i: i128) returns (i160) { i } +function {:inline} $sext.i128.i256(i: i128) returns (i256) { i } +function {:inline} $sext.i160.i256(i: i160) returns (i256) { i } +function {:inline} $zext.i1.i5(i: i1) returns (i5) { i } +function {:inline} $zext.i1.i6(i: i1) returns (i6) { i } +function {:inline} $zext.i1.i8(i: i1) returns (i8) { i } +function {:inline} $zext.i1.i16(i: i1) returns (i16) { i } +function {:inline} $zext.i1.i24(i: i1) returns (i24) { i } +function {:inline} $zext.i1.i32(i: i1) returns (i32) { i } +function {:inline} $zext.i1.i33(i: i1) returns (i33) { i } +function {:inline} $zext.i1.i40(i: i1) returns (i40) { i } +function {:inline} $zext.i1.i48(i: i1) returns (i48) { i } +function {:inline} $zext.i1.i56(i: i1) returns (i56) { i } +function {:inline} $zext.i1.i64(i: i1) returns (i64) { i } +function {:inline} $zext.i1.i80(i: i1) returns (i80) { i } +function {:inline} $zext.i1.i88(i: i1) returns (i88) { i } +function {:inline} $zext.i1.i96(i: i1) returns (i96) { i } +function {:inline} $zext.i1.i128(i: i1) returns (i128) { i } +function {:inline} $zext.i1.i160(i: i1) returns (i160) { i } +function {:inline} $zext.i1.i256(i: i1) returns (i256) { i } +function {:inline} $zext.i5.i6(i: i5) returns (i6) { i } +function {:inline} $zext.i5.i8(i: i5) returns (i8) { i } +function {:inline} $zext.i5.i16(i: i5) returns (i16) { i } +function {:inline} $zext.i5.i24(i: i5) returns (i24) { i } +function {:inline} $zext.i5.i32(i: i5) returns (i32) { i } +function {:inline} $zext.i5.i33(i: i5) returns (i33) { i } +function {:inline} $zext.i5.i40(i: i5) returns (i40) { i } +function {:inline} $zext.i5.i48(i: i5) returns (i48) { i } +function {:inline} $zext.i5.i56(i: i5) returns (i56) { i } +function {:inline} $zext.i5.i64(i: i5) returns (i64) { i } +function {:inline} $zext.i5.i80(i: i5) returns (i80) { i } +function {:inline} $zext.i5.i88(i: i5) returns (i88) { i } +function {:inline} $zext.i5.i96(i: i5) returns (i96) { i } +function {:inline} $zext.i5.i128(i: i5) returns (i128) { i } +function {:inline} $zext.i5.i160(i: i5) returns (i160) { i } +function {:inline} $zext.i5.i256(i: i5) returns (i256) { i } +function {:inline} $zext.i6.i8(i: i6) returns (i8) { i } +function {:inline} $zext.i6.i16(i: i6) returns (i16) { i } +function {:inline} $zext.i6.i24(i: i6) returns (i24) { i } +function {:inline} $zext.i6.i32(i: i6) returns (i32) { i } +function {:inline} $zext.i6.i33(i: i6) returns (i33) { i } +function {:inline} $zext.i6.i40(i: i6) returns (i40) { i } +function {:inline} $zext.i6.i48(i: i6) returns (i48) { i } +function {:inline} $zext.i6.i56(i: i6) returns (i56) { i } +function {:inline} $zext.i6.i64(i: i6) returns (i64) { i } +function {:inline} $zext.i6.i80(i: i6) returns (i80) { i } +function {:inline} $zext.i6.i88(i: i6) returns (i88) { i } +function {:inline} $zext.i6.i96(i: i6) returns (i96) { i } +function {:inline} $zext.i6.i128(i: i6) returns (i128) { i } +function {:inline} $zext.i6.i160(i: i6) returns (i160) { i } +function {:inline} $zext.i6.i256(i: i6) returns (i256) { i } +function {:inline} $zext.i8.i16(i: i8) returns (i16) { i } +function {:inline} $zext.i8.i24(i: i8) returns (i24) { i } +function {:inline} $zext.i8.i32(i: i8) returns (i32) { i } +function {:inline} $zext.i8.i33(i: i8) returns (i33) { i } +function {:inline} $zext.i8.i40(i: i8) returns (i40) { i } +function {:inline} $zext.i8.i48(i: i8) returns (i48) { i } +function {:inline} $zext.i8.i56(i: i8) returns (i56) { i } +function {:inline} $zext.i8.i64(i: i8) returns (i64) { i } +function {:inline} $zext.i8.i80(i: i8) returns (i80) { i } +function {:inline} $zext.i8.i88(i: i8) returns (i88) { i } +function {:inline} $zext.i8.i96(i: i8) returns (i96) { i } +function {:inline} $zext.i8.i128(i: i8) returns (i128) { i } +function {:inline} $zext.i8.i160(i: i8) returns (i160) { i } +function {:inline} $zext.i8.i256(i: i8) returns (i256) { i } +function {:inline} $zext.i16.i24(i: i16) returns (i24) { i } +function {:inline} $zext.i16.i32(i: i16) returns (i32) { i } +function {:inline} $zext.i16.i33(i: i16) returns (i33) { i } +function {:inline} $zext.i16.i40(i: i16) returns (i40) { i } +function {:inline} $zext.i16.i48(i: i16) returns (i48) { i } +function {:inline} $zext.i16.i56(i: i16) returns (i56) { i } +function {:inline} $zext.i16.i64(i: i16) returns (i64) { i } +function {:inline} $zext.i16.i80(i: i16) returns (i80) { i } +function {:inline} $zext.i16.i88(i: i16) returns (i88) { i } +function {:inline} $zext.i16.i96(i: i16) returns (i96) { i } +function {:inline} $zext.i16.i128(i: i16) returns (i128) { i } +function {:inline} $zext.i16.i160(i: i16) returns (i160) { i } +function {:inline} $zext.i16.i256(i: i16) returns (i256) { i } +function {:inline} $zext.i24.i32(i: i24) returns (i32) { i } +function {:inline} $zext.i24.i33(i: i24) returns (i33) { i } +function {:inline} $zext.i24.i40(i: i24) returns (i40) { i } +function {:inline} $zext.i24.i48(i: i24) returns (i48) { i } +function {:inline} $zext.i24.i56(i: i24) returns (i56) { i } +function {:inline} $zext.i24.i64(i: i24) returns (i64) { i } +function {:inline} $zext.i24.i80(i: i24) returns (i80) { i } +function {:inline} $zext.i24.i88(i: i24) returns (i88) { i } +function {:inline} $zext.i24.i96(i: i24) returns (i96) { i } +function {:inline} $zext.i24.i128(i: i24) returns (i128) { i } +function {:inline} $zext.i24.i160(i: i24) returns (i160) { i } +function {:inline} $zext.i24.i256(i: i24) returns (i256) { i } +function {:inline} $zext.i32.i33(i: i32) returns (i33) { i } +function {:inline} $zext.i32.i40(i: i32) returns (i40) { i } +function {:inline} $zext.i32.i48(i: i32) returns (i48) { i } +function {:inline} $zext.i32.i56(i: i32) returns (i56) { i } +function {:inline} $zext.i32.i64(i: i32) returns (i64) { i } +function {:inline} $zext.i32.i80(i: i32) returns (i80) { i } +function {:inline} $zext.i32.i88(i: i32) returns (i88) { i } +function {:inline} $zext.i32.i96(i: i32) returns (i96) { i } +function {:inline} $zext.i32.i128(i: i32) returns (i128) { i } +function {:inline} $zext.i32.i160(i: i32) returns (i160) { i } +function {:inline} $zext.i32.i256(i: i32) returns (i256) { i } +function {:inline} $zext.i33.i40(i: i33) returns (i40) { i } +function {:inline} $zext.i33.i48(i: i33) returns (i48) { i } +function {:inline} $zext.i33.i56(i: i33) returns (i56) { i } +function {:inline} $zext.i33.i64(i: i33) returns (i64) { i } +function {:inline} $zext.i33.i80(i: i33) returns (i80) { i } +function {:inline} $zext.i33.i88(i: i33) returns (i88) { i } +function {:inline} $zext.i33.i96(i: i33) returns (i96) { i } +function {:inline} $zext.i33.i128(i: i33) returns (i128) { i } +function {:inline} $zext.i33.i160(i: i33) returns (i160) { i } +function {:inline} $zext.i33.i256(i: i33) returns (i256) { i } +function {:inline} $zext.i40.i48(i: i40) returns (i48) { i } +function {:inline} $zext.i40.i56(i: i40) returns (i56) { i } +function {:inline} $zext.i40.i64(i: i40) returns (i64) { i } +function {:inline} $zext.i40.i80(i: i40) returns (i80) { i } +function {:inline} $zext.i40.i88(i: i40) returns (i88) { i } +function {:inline} $zext.i40.i96(i: i40) returns (i96) { i } +function {:inline} $zext.i40.i128(i: i40) returns (i128) { i } +function {:inline} $zext.i40.i160(i: i40) returns (i160) { i } +function {:inline} $zext.i40.i256(i: i40) returns (i256) { i } +function {:inline} $zext.i48.i56(i: i48) returns (i56) { i } +function {:inline} $zext.i48.i64(i: i48) returns (i64) { i } +function {:inline} $zext.i48.i80(i: i48) returns (i80) { i } +function {:inline} $zext.i48.i88(i: i48) returns (i88) { i } +function {:inline} $zext.i48.i96(i: i48) returns (i96) { i } +function {:inline} $zext.i48.i128(i: i48) returns (i128) { i } +function {:inline} $zext.i48.i160(i: i48) returns (i160) { i } +function {:inline} $zext.i48.i256(i: i48) returns (i256) { i } +function {:inline} $zext.i56.i64(i: i56) returns (i64) { i } +function {:inline} $zext.i56.i80(i: i56) returns (i80) { i } +function {:inline} $zext.i56.i88(i: i56) returns (i88) { i } +function {:inline} $zext.i56.i96(i: i56) returns (i96) { i } +function {:inline} $zext.i56.i128(i: i56) returns (i128) { i } +function {:inline} $zext.i56.i160(i: i56) returns (i160) { i } +function {:inline} $zext.i56.i256(i: i56) returns (i256) { i } +function {:inline} $zext.i64.i80(i: i64) returns (i80) { i } +function {:inline} $zext.i64.i88(i: i64) returns (i88) { i } +function {:inline} $zext.i64.i96(i: i64) returns (i96) { i } +function {:inline} $zext.i64.i128(i: i64) returns (i128) { i } +function {:inline} $zext.i64.i160(i: i64) returns (i160) { i } +function {:inline} $zext.i64.i256(i: i64) returns (i256) { i } +function {:inline} $zext.i80.i88(i: i80) returns (i88) { i } +function {:inline} $zext.i80.i96(i: i80) returns (i96) { i } +function {:inline} $zext.i80.i128(i: i80) returns (i128) { i } +function {:inline} $zext.i80.i160(i: i80) returns (i160) { i } +function {:inline} $zext.i80.i256(i: i80) returns (i256) { i } +function {:inline} $zext.i88.i96(i: i88) returns (i96) { i } +function {:inline} $zext.i88.i128(i: i88) returns (i128) { i } +function {:inline} $zext.i88.i160(i: i88) returns (i160) { i } +function {:inline} $zext.i88.i256(i: i88) returns (i256) { i } +function {:inline} $zext.i96.i128(i: i96) returns (i128) { i } +function {:inline} $zext.i96.i160(i: i96) returns (i160) { i } +function {:inline} $zext.i96.i256(i: i96) returns (i256) { i } +function {:inline} $zext.i128.i160(i: i128) returns (i160) { i } +function {:inline} $zext.i128.i256(i: i128) returns (i256) { i } +function {:inline} $zext.i160.i256(i: i160) returns (i256) { i } +function $extractvalue.i1(p: ref, i: int) returns (i1); +function $extractvalue.i5(p: ref, i: int) returns (i5); +function $extractvalue.i6(p: ref, i: int) returns (i6); +function $extractvalue.i8(p: ref, i: int) returns (i8); +function $extractvalue.i16(p: ref, i: int) returns (i16); +function $extractvalue.i24(p: ref, i: int) returns (i24); +function $extractvalue.i32(p: ref, i: int) returns (i32); +function $extractvalue.i33(p: ref, i: int) returns (i33); +function $extractvalue.i40(p: ref, i: int) returns (i40); +function $extractvalue.i48(p: ref, i: int) returns (i48); +function $extractvalue.i56(p: ref, i: int) returns (i56); +function $extractvalue.i64(p: ref, i: int) returns (i64); +function $extractvalue.i80(p: ref, i: int) returns (i80); +function $extractvalue.i88(p: ref, i: int) returns (i88); +function $extractvalue.i96(p: ref, i: int) returns (i96); +function $extractvalue.i128(p: ref, i: int) returns (i128); +function $extractvalue.i160(p: ref, i: int) returns (i160); +function $extractvalue.i256(p: ref, i: int) returns (i256); +// Pointer arithmetic operations +function {:inline} $add.ref(p1: ref, p2: ref) returns (ref) { $add.i64(p1, p2) } +function {:inline} $sub.ref(p1: ref, p2: ref) returns (ref) { $sub.i64(p1, p2) } +function {:inline} $mul.ref(p1: ref, p2: ref) returns (ref) { $mul.i64(p1, p2) } + +// Pointer predicates +function {:inline} $eq.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 == p2) } +function {:inline} $eq.ref(p1: ref, p2: ref) returns (i1) { (if $eq.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $ne.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 != p2) } +function {:inline} $ne.ref(p1: ref, p2: ref) returns (i1) { (if $ne.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $ugt.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 > p2) } +function {:inline} $ugt.ref(p1: ref, p2: ref) returns (i1) { (if $ugt.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $uge.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 >= p2) } +function {:inline} $uge.ref(p1: ref, p2: ref) returns (i1) { (if $uge.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $ult.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 < p2) } +function {:inline} $ult.ref(p1: ref, p2: ref) returns (i1) { (if $ult.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $ule.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 <= p2) } +function {:inline} $ule.ref(p1: ref, p2: ref) returns (i1) { (if $ule.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $sgt.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 > p2) } +function {:inline} $sgt.ref(p1: ref, p2: ref) returns (i1) { (if $sgt.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $sge.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 >= p2) } +function {:inline} $sge.ref(p1: ref, p2: ref) returns (i1) { (if $sge.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $slt.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 < p2) } +function {:inline} $slt.ref(p1: ref, p2: ref) returns (i1) { (if $slt.ref.bool(p1, p2) then 1 else 0) } +function {:inline} $sle.ref.bool(p1: ref, p2: ref) returns (bool) { (p1 <= p2) } +function {:inline} $sle.ref(p1: ref, p2: ref) returns (i1) { (if $sle.ref.bool(p1, p2) then 1 else 0) } + +// Pointer load/store operations +function {:inline} $load.ref(M: [ref] ref, p: ref) returns (ref) { M[p] } +function {:inline} $store.ref(M: [ref] ref, p: ref, i: ref) returns ([ref] ref) { M[p := i] } + +// Pointer conversion +function {:inline} $bitcast.ref.ref(p: ref) returns (ref) { p } +function $extractvalue.ref(p: ref, i: int) returns (ref); +// Pointer-number conversion +function {:inline} $p2i.ref.i8(p: ref) returns (i8) { $trunc.i64.i8(p) } +function {:inline} $i2p.i8.ref(i: i8) returns (ref) { $zext.i8.i64(i) } +function {:inline} $p2i.ref.i16(p: ref) returns (i16) { $trunc.i64.i16(p) } +function {:inline} $i2p.i16.ref(i: i16) returns (ref) { $zext.i16.i64(i) } +function {:inline} $p2i.ref.i32(p: ref) returns (i32) { $trunc.i64.i32(p) } +function {:inline} $i2p.i32.ref(i: i32) returns (ref) { $zext.i32.i64(i) } +function {:inline} $p2i.ref.i64(p: ref) returns (i64) { p } +function {:inline} $i2p.i64.ref(i: i64) returns (ref) { i } + +function $fp(ipart: int, fpart: int, epart: int) returns (float); +// Floating-point arithmetic operations +function $abs.float(f: float) returns (float); +function $round.float(f: float) returns (float); +function $sqrt.float(f: float) returns (float); +function $fadd.float(f1: float, f2: float) returns (float); +function $fsub.float(f1: float, f2: float) returns (float); +function $fmul.float(f1: float, f2: float) returns (float); +function $fdiv.float(f1: float, f2: float) returns (float); +function $frem.float(f1: float, f2: float) returns (float); +function $min.float(f1: float, f2: float) returns (float); +function $max.float(f1: float, f2: float) returns (float); +function $fma.float(f1: float, f2: float, f3: float) returns (float); +function $fneg.float(f: float) returns (float); +// Floating-point predicates +function $foeq.float.bool(f1: float, f2: float) returns (bool); +function $fole.float.bool(f1: float, f2: float) returns (bool); +function $folt.float.bool(f1: float, f2: float) returns (bool); +function $foge.float.bool(f1: float, f2: float) returns (bool); +function $fogt.float.bool(f1: float, f2: float) returns (bool); +function $fone.float.bool(f1: float, f2: float) returns (bool); +function $ford.float.bool(f1: float, f2: float) returns (bool); +function $fueq.float.bool(f1: float, f2: float) returns (bool); +function $fugt.float.bool(f1: float, f2: float) returns (bool); +function $fuge.float.bool(f1: float, f2: float) returns (bool); +function $fult.float.bool(f1: float, f2: float) returns (bool); +function $fule.float.bool(f1: float, f2: float) returns (bool); +function $fune.float.bool(f1: float, f2: float) returns (bool); +function $funo.float.bool(f1: float, f2: float) returns (bool); +function $ffalse.float.bool(f1: float, f2: float) returns (bool); +function $ftrue.float.bool(f1: float, f2: float) returns (bool); +// Floating-point/integer conversion +function $bitcast.float.i8(f: float) returns (i8); +function $bitcast.float.i16(f: float) returns (i16); +function $bitcast.float.i32(f: float) returns (i32); +function $bitcast.float.i64(f: float) returns (i64); +function $bitcast.float.i80(f: float) returns (i80); +function $bitcast.i8.float(i: i8) returns (float); +function $bitcast.i16.float(i: i16) returns (float); +function $bitcast.i32.float(i: i32) returns (float); +function $bitcast.i64.float(i: i64) returns (float); +function $bitcast.i80.float(i: i80) returns (float); +function $fp2si.float.i1(f: float) returns (i1); +function $fp2si.float.i5(f: float) returns (i5); +function $fp2si.float.i6(f: float) returns (i6); +function $fp2si.float.i8(f: float) returns (i8); +function $fp2si.float.i16(f: float) returns (i16); +function $fp2si.float.i24(f: float) returns (i24); +function $fp2si.float.i32(f: float) returns (i32); +function $fp2si.float.i33(f: float) returns (i33); +function $fp2si.float.i40(f: float) returns (i40); +function $fp2si.float.i48(f: float) returns (i48); +function $fp2si.float.i56(f: float) returns (i56); +function $fp2si.float.i64(f: float) returns (i64); +function $fp2si.float.i80(f: float) returns (i80); +function $fp2si.float.i88(f: float) returns (i88); +function $fp2si.float.i96(f: float) returns (i96); +function $fp2si.float.i128(f: float) returns (i128); +function $fp2si.float.i160(f: float) returns (i160); +function $fp2si.float.i256(f: float) returns (i256); +function $fp2ui.float.i1(f: float) returns (i1); +function $fp2ui.float.i5(f: float) returns (i5); +function $fp2ui.float.i6(f: float) returns (i6); +function $fp2ui.float.i8(f: float) returns (i8); +function $fp2ui.float.i16(f: float) returns (i16); +function $fp2ui.float.i24(f: float) returns (i24); +function $fp2ui.float.i32(f: float) returns (i32); +function $fp2ui.float.i33(f: float) returns (i33); +function $fp2ui.float.i40(f: float) returns (i40); +function $fp2ui.float.i48(f: float) returns (i48); +function $fp2ui.float.i56(f: float) returns (i56); +function $fp2ui.float.i64(f: float) returns (i64); +function $fp2ui.float.i80(f: float) returns (i80); +function $fp2ui.float.i88(f: float) returns (i88); +function $fp2ui.float.i96(f: float) returns (i96); +function $fp2ui.float.i128(f: float) returns (i128); +function $fp2ui.float.i160(f: float) returns (i160); +function $fp2ui.float.i256(f: float) returns (i256); +function $si2fp.i1.float(i: i1) returns (float); +function $si2fp.i5.float(i: i5) returns (float); +function $si2fp.i6.float(i: i6) returns (float); +function $si2fp.i8.float(i: i8) returns (float); +function $si2fp.i16.float(i: i16) returns (float); +function $si2fp.i24.float(i: i24) returns (float); +function $si2fp.i32.float(i: i32) returns (float); +function $si2fp.i33.float(i: i33) returns (float); +function $si2fp.i40.float(i: i40) returns (float); +function $si2fp.i48.float(i: i48) returns (float); +function $si2fp.i56.float(i: i56) returns (float); +function $si2fp.i64.float(i: i64) returns (float); +function $si2fp.i80.float(i: i80) returns (float); +function $si2fp.i88.float(i: i88) returns (float); +function $si2fp.i96.float(i: i96) returns (float); +function $si2fp.i128.float(i: i128) returns (float); +function $si2fp.i160.float(i: i160) returns (float); +function $si2fp.i256.float(i: i256) returns (float); +function $ui2fp.i1.float(i: i1) returns (float); +function $ui2fp.i5.float(i: i5) returns (float); +function $ui2fp.i6.float(i: i6) returns (float); +function $ui2fp.i8.float(i: i8) returns (float); +function $ui2fp.i16.float(i: i16) returns (float); +function $ui2fp.i24.float(i: i24) returns (float); +function $ui2fp.i32.float(i: i32) returns (float); +function $ui2fp.i33.float(i: i33) returns (float); +function $ui2fp.i40.float(i: i40) returns (float); +function $ui2fp.i48.float(i: i48) returns (float); +function $ui2fp.i56.float(i: i56) returns (float); +function $ui2fp.i64.float(i: i64) returns (float); +function $ui2fp.i80.float(i: i80) returns (float); +function $ui2fp.i88.float(i: i88) returns (float); +function $ui2fp.i96.float(i: i96) returns (float); +function $ui2fp.i128.float(i: i128) returns (float); +function $ui2fp.i160.float(i: i160) returns (float); +function $ui2fp.i256.float(i: i256) returns (float); +// Floating-point conversion +function $fpext.float.float(f: float) returns (float); +function $fptrunc.float.float(f: float) returns (float); +// Floating-point load/store operations +function {:inline} $load.float(M: [ref] float, p: ref) returns (float) { M[p] } +function {:inline} $store.float(M: [ref] float, p: ref, f: float) returns ([ref] float) { M[p := f] } +function {:inline} $load.unsafe.float(M: [ref] i8, p: ref) returns (float) { $bitcast.i8.float(M[p]) } +function {:inline} $store.unsafe.float(M: [ref] i8, p: ref, f: float) returns ([ref] i8) { M[p := $bitcast.float.i8(f)] } +function $extractvalue.float(p: ref, i: int) returns (float); +const {:treadLocal} {:allocSize 4} val: ref; +axiom (val == $sub.ref(0, 1028)); +const {:treadLocal} {:allocSize 4} data: ref; +axiom (data == $sub.ref(0, 2056)); +const check: ref; +axiom (check == $sub.ref(0, 3088)); +procedure check($i0: i32) +{ + var $i1: i32; + var $i2: i1; + var $i3: i32; + var $i4: i32; + var $i5: i32; + var $i6: i1; + var $i7: i32; + var $i8: i32; +$bb0: + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 15, 20} true; + assume {:verifier.code 0} true; + call {:cexpr "check:arg:value"} boogie_si_record_i32($i0); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 15, 20} true; + assume {:verifier.code 0} true; + call $i1 := __llvm_atomic32_load(data, 5); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 15, 17} true; + assume {:verifier.code 0} true; + $i2 := $eq.i32($i1, $i0); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 15, 17} true; + assume {:verifier.code 0} true; + $i3 := $zext.i1.i32($i2); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 15, 4} true; + assume {:verifier.code 0} true; + call $i4 := assert_.i32($i3); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 16, 12} true; + assume {:verifier.code 0} true; + $i5 := $load.i32($M.0, val); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 16, 16} true; + assume {:verifier.code 0} true; + $i6 := $eq.i32($i5, 5); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 16, 16} true; + assume {:verifier.code 0} true; + $i7 := $zext.i1.i32($i6); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 16, 4} true; + assume {:verifier.code 0} true; + call $i8 := assert_.i32($i7); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 17, 1} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const llvm.dbg.value: ref; +axiom (llvm.dbg.value == $sub.ref(0, 4120)); +procedure llvm.dbg.value($p0: ref, $p1: ref, $p2: ref); +const __llvm_atomic32_load: ref; +axiom (__llvm_atomic32_load == $sub.ref(0, 5152)); +procedure __llvm_atomic32_load($p0: ref, $i1: i32) + returns ($r: i32); +const assert_: ref; +axiom (assert_ == $sub.ref(0, 6184)); +procedure assert_.i32(p.0: i32) + returns ($r: i32); +const thread2: ref; +axiom (thread2 == $sub.ref(0, 7216)); +procedure thread2($p0: ref) + returns ($r: ref) +{ + var $i1: i32; +$bb0: + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 21, 11} true; + assume {:verifier.code 0} true; + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 21, 11} true; + assume {:verifier.code 0} true; + $i1 := $p2i.ref.i32($p0); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 22, 4} true; + assume {:verifier.code 0} true; + call __llvm_atomic32_store(data, $i1, 5); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 22, 4} true; + assume {:verifier.code 0} true; + call check(2); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 23, 1} true; + assume {:verifier.code 0} true; + $r := $u0; + $exn := false; + return; +} +const __llvm_atomic32_store: ref; +axiom (__llvm_atomic32_store == $sub.ref(0, 8248)); +procedure __llvm_atomic32_store($p0: ref, $i1: i32, $i2: i32); +const thread1: ref; +axiom (thread1 == $sub.ref(0, 9280)); +procedure thread1($p0: ref) + returns ($r: ref) +{ + var $p1: ref; + var $i2: i32; + var $i3: i32; + var $p4: ref; + var $i5: i32; +$bb0: + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 27, 12} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + call $p1 := $alloc($mul.ref(8, $zext.i32.i64(1))); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 27, 12} true; + assume {:verifier.code 0} true; + $i2 := $p2i.ref.i32($p0); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 29, 15} true; + assume {:verifier.code 0} true; + call __llvm_atomic32_store(data, $i2, 5); + assume true; + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 30, 5} true; + assume {:verifier.code 0} true; + call $i3 := pthread_create($p1, $0.ref, thread2, $i2p.i64.ref(2)); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 31, 18} true; + assume {:verifier.code 0} true; + $p4 := $load.ref($M.0, $p1); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 31, 5} true; + assume {:verifier.code 0} true; + call $i5 := __pthread_join($p4, $0.ref); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 33, 5} true; + assume {:verifier.code 0} true; + call check(1); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 34, 1} true; + assume {:verifier.code 0} true; + $r := $u0; + $exn := false; + return; +} +const llvm.dbg.declare: ref; +axiom (llvm.dbg.declare == $sub.ref(0, 10312)); +procedure llvm.dbg.declare($p0: ref, $p1: ref, $p2: ref); +const pthread_create: ref; +axiom (pthread_create == $sub.ref(0, 11344)); +procedure pthread_create($p0: ref, $p1: ref, $p2: ref, $p3: ref) + returns ($r: i32); +const __pthread_join: ref; +axiom (__pthread_join == $sub.ref(0, 12376)); +procedure __pthread_join($p0: ref, $p1: ref) + returns ($r: i32); +const main: ref; +axiom (main == $sub.ref(0, 13408)); +procedure {:entrypoint} main() + returns ($r: i32) +{ + var $p0: ref; + var $i1: i32; + var $p2: ref; + var $i3: i32; +$bb0: + call $initialize(); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 39, 5} true; + assume {:verifier.code 0} true; + call {:cexpr "smack:entry:main"} boogie_si_record_ref(main); + assume {:verifier.code 0} true; + call $p0 := $alloc($mul.ref(8, $zext.i32.i64(1))); + assume true; + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 39, 5} true; + assume {:verifier.code 0} true; + call $i1 := pthread_create($p0, $0.ref, thread1, $i2p.i64.ref(1)); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 40, 18} true; + assume {:verifier.code 0} true; + $p2 := $load.ref($M.0, $p0); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 40, 5} true; + assume {:verifier.code 0} true; + call $i3 := __pthread_join($p2, $0.ref); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 42, 5} true; + assume {:verifier.code 0} true; + call check(0); + assume {:sourceloc "benchmarks/c/miscellaneous/thread_local.c", 43, 1} true; + assume {:verifier.code 0} true; + $r := 0; + $exn := false; + return; +} +const __SMACK_code: ref; +axiom (__SMACK_code == $sub.ref(0, 14440)); +procedure __SMACK_code.ref($p0: ref); +procedure __SMACK_code.ref.i32($p0: ref, p.1: i32); +const __VERIFIER_assume: ref; +axiom (__VERIFIER_assume == $sub.ref(0, 15472)); +procedure __VERIFIER_assume($i0: i32) +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + call {:cexpr "__VERIFIER_assume:arg:x"} boogie_si_record_i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + assume true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 45, 3} true; + assume {:verifier.code 1} true; + assume $i0 != $0; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 46, 1} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_dummy: ref; +axiom (__SMACK_dummy == $sub.ref(0, 16504)); +procedure __SMACK_dummy($i0: i32) +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_dummy:arg:v"} boogie_si_record_i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + assume true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 59} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_and32: ref; +axiom (__SMACK_and32 == $sub.ref(0, 17536)); +procedure __SMACK_and32($i0: i32, $i1: i32) + returns ($r: i32) +{ + var $i2: i32; + var $i3: i1; + var $i5: i1; + var $i6: i1; + var $i8: i32; + var $i7: i32; + var $i4: i32; + var $i9: i64; + var $i10: i64; + var $i11: i32; + var $i12: i32; + var $i13: i64; + var $i14: i64; + var $i15: i32; + var $i16: i32; + var $i17: i32; + var $i18: i1; + var $i20: i1; + var $i21: i1; + var $i23: i32; + var $i22: i32; + var $i19: i32; + var $i24: i64; + var $i25: i64; + var $i26: i32; + var $i27: i32; + var $i28: i64; + var $i29: i64; + var $i30: i32; + var $i31: i32; + var $i32: i32; + var $i33: i1; + var $i35: i1; + var $i36: i1; + var $i38: i32; + var $i37: i32; + var $i34: i32; + var $i39: i64; + var $i40: i64; + var $i41: i32; + var $i42: i32; + var $i43: i64; + var $i44: i64; + var $i45: i32; + var $i46: i32; + var $i47: i32; + var $i48: i1; + var $i50: i1; + var $i51: i1; + var $i53: i32; + var $i52: i32; + var $i49: i32; + var $i54: i64; + var $i55: i64; + var $i56: i32; + var $i57: i32; + var $i58: i64; + var $i59: i64; + var $i60: i32; + var $i61: i32; + var $i62: i32; + var $i63: i1; + var $i65: i1; + var $i66: i1; + var $i68: i32; + var $i67: i32; + var $i64: i32; + var $i69: i64; + var $i70: i64; + var $i71: i32; + var $i72: i32; + var $i73: i64; + var $i74: i64; + var $i75: i32; + var $i76: i32; + var $i77: i32; + var $i78: i1; + var $i80: i1; + var $i81: i1; + var $i83: i32; + var $i82: i32; + var $i79: i32; + var $i84: i64; + var $i85: i64; + var $i86: i32; + var $i87: i32; + var $i88: i64; + var $i89: i64; + var $i90: i32; + var $i91: i32; + var $i92: i32; + var $i93: i1; + var $i95: i1; + var $i96: i1; + var $i98: i32; + var $i97: i32; + var $i94: i32; + var $i99: i64; + var $i100: i64; + var $i101: i32; + var $i102: i32; + var $i103: i64; + var $i104: i64; + var $i105: i32; + var $i106: i32; + var $i107: i32; + var $i108: i1; + var $i110: i1; + var $i111: i1; + var $i113: i32; + var $i112: i32; + var $i109: i32; + var $i114: i64; + var $i115: i64; + var $i116: i32; + var $i117: i32; + var $i118: i64; + var $i119: i64; + var $i120: i32; + var $i121: i32; + var $i122: i32; + var $i123: i1; + var $i125: i1; + var $i126: i1; + var $i128: i32; + var $i127: i32; + var $i124: i32; + var $i129: i64; + var $i130: i64; + var $i131: i32; + var $i132: i32; + var $i133: i64; + var $i134: i64; + var $i135: i32; + var $i136: i32; + var $i137: i32; + var $i138: i1; + var $i140: i1; + var $i141: i1; + var $i143: i32; + var $i142: i32; + var $i139: i32; + var $i144: i64; + var $i145: i64; + var $i146: i32; + var $i147: i32; + var $i148: i64; + var $i149: i64; + var $i150: i32; + var $i151: i32; + var $i152: i32; + var $i153: i1; + var $i155: i1; + var $i156: i1; + var $i158: i32; + var $i157: i32; + var $i154: i32; + var $i159: i64; + var $i160: i64; + var $i161: i32; + var $i162: i32; + var $i163: i64; + var $i164: i64; + var $i165: i32; + var $i166: i32; + var $i167: i32; + var $i168: i1; + var $i170: i1; + var $i171: i1; + var $i173: i32; + var $i172: i32; + var $i169: i32; + var $i174: i64; + var $i175: i64; + var $i176: i32; + var $i177: i32; + var $i178: i64; + var $i179: i64; + var $i180: i32; + var $i181: i32; + var $i182: i32; + var $i183: i1; + var $i185: i1; + var $i186: i1; + var $i188: i32; + var $i187: i32; + var $i184: i32; + var $i189: i64; + var $i190: i64; + var $i191: i32; + var $i192: i32; + var $i193: i64; + var $i194: i64; + var $i195: i32; + var $i196: i32; + var $i197: i32; + var $i198: i1; + var $i200: i1; + var $i201: i1; + var $i203: i32; + var $i202: i32; + var $i199: i32; + var $i204: i64; + var $i205: i64; + var $i206: i32; + var $i207: i32; + var $i208: i64; + var $i209: i64; + var $i210: i32; + var $i211: i32; + var $i212: i32; + var $i213: i1; + var $i215: i1; + var $i216: i1; + var $i218: i32; + var $i217: i32; + var $i214: i32; + var $i219: i64; + var $i220: i64; + var $i221: i32; + var $i222: i32; + var $i223: i64; + var $i224: i64; + var $i225: i32; + var $i226: i32; + var $i227: i32; + var $i228: i1; + var $i230: i1; + var $i231: i1; + var $i233: i32; + var $i232: i32; + var $i229: i32; + var $i234: i64; + var $i235: i64; + var $i236: i32; + var $i237: i32; + var $i238: i64; + var $i239: i64; + var $i240: i32; + var $i241: i32; + var $i242: i32; + var $i243: i1; + var $i245: i1; + var $i246: i1; + var $i248: i32; + var $i247: i32; + var $i244: i32; + var $i249: i64; + var $i250: i64; + var $i251: i32; + var $i252: i32; + var $i253: i64; + var $i254: i64; + var $i255: i32; + var $i256: i32; + var $i257: i32; + var $i258: i1; + var $i260: i1; + var $i261: i1; + var $i263: i32; + var $i262: i32; + var $i259: i32; + var $i264: i64; + var $i265: i64; + var $i266: i32; + var $i267: i32; + var $i268: i64; + var $i269: i64; + var $i270: i32; + var $i271: i32; + var $i272: i32; + var $i273: i1; + var $i275: i1; + var $i276: i1; + var $i278: i32; + var $i277: i32; + var $i274: i32; + var $i279: i64; + var $i280: i64; + var $i281: i32; + var $i282: i32; + var $i283: i64; + var $i284: i64; + var $i285: i32; + var $i286: i32; + var $i287: i32; + var $i288: i1; + var $i290: i1; + var $i291: i1; + var $i293: i32; + var $i292: i32; + var $i289: i32; + var $i294: i64; + var $i295: i64; + var $i296: i32; + var $i297: i32; + var $i298: i64; + var $i299: i64; + var $i300: i32; + var $i301: i32; + var $i302: i32; + var $i303: i1; + var $i305: i1; + var $i306: i1; + var $i308: i32; + var $i307: i32; + var $i304: i32; + var $i309: i64; + var $i310: i64; + var $i311: i32; + var $i312: i32; + var $i313: i64; + var $i314: i64; + var $i315: i32; + var $i316: i32; + var $i317: i32; + var $i318: i1; + var $i320: i1; + var $i321: i1; + var $i323: i32; + var $i322: i32; + var $i319: i32; + var $i324: i64; + var $i325: i64; + var $i326: i32; + var $i327: i32; + var $i328: i64; + var $i329: i64; + var $i330: i32; + var $i331: i32; + var $i332: i32; + var $i333: i1; + var $i335: i1; + var $i336: i1; + var $i338: i32; + var $i337: i32; + var $i334: i32; + var $i339: i64; + var $i340: i64; + var $i341: i32; + var $i342: i32; + var $i343: i64; + var $i344: i64; + var $i345: i32; + var $i346: i32; + var $i347: i32; + var $i348: i1; + var $i350: i1; + var $i351: i1; + var $i353: i32; + var $i352: i32; + var $i349: i32; + var $i354: i64; + var $i355: i64; + var $i356: i32; + var $i357: i32; + var $i358: i64; + var $i359: i64; + var $i360: i32; + var $i361: i32; + var $i362: i32; + var $i363: i1; + var $i365: i1; + var $i366: i1; + var $i368: i32; + var $i367: i32; + var $i364: i32; + var $i369: i64; + var $i370: i64; + var $i371: i32; + var $i372: i32; + var $i373: i64; + var $i374: i64; + var $i375: i32; + var $i376: i32; + var $i377: i32; + var $i378: i1; + var $i380: i1; + var $i381: i1; + var $i383: i32; + var $i382: i32; + var $i379: i32; + var $i384: i64; + var $i385: i64; + var $i386: i32; + var $i387: i32; + var $i388: i64; + var $i389: i64; + var $i390: i32; + var $i391: i32; + var $i392: i32; + var $i393: i1; + var $i395: i1; + var $i396: i1; + var $i398: i32; + var $i397: i32; + var $i394: i32; + var $i399: i64; + var $i400: i64; + var $i401: i32; + var $i402: i32; + var $i403: i64; + var $i404: i64; + var $i405: i32; + var $i406: i32; + var $i407: i32; + var $i408: i1; + var $i410: i1; + var $i411: i1; + var $i413: i32; + var $i412: i32; + var $i409: i32; + var $i414: i64; + var $i415: i64; + var $i416: i32; + var $i417: i32; + var $i418: i64; + var $i419: i64; + var $i420: i32; + var $i421: i32; + var $i422: i32; + var $i423: i1; + var $i425: i1; + var $i426: i1; + var $i428: i32; + var $i427: i32; + var $i424: i32; + var $i429: i64; + var $i430: i64; + var $i431: i32; + var $i432: i32; + var $i433: i64; + var $i434: i64; + var $i435: i32; + var $i436: i32; + var $i437: i32; + var $i438: i1; + var $i440: i1; + var $i441: i1; + var $i443: i32; + var $i442: i32; + var $i439: i32; + var $i444: i64; + var $i445: i64; + var $i446: i32; + var $i447: i32; + var $i448: i64; + var $i449: i64; + var $i450: i32; + var $i451: i32; + var $i452: i32; + var $i453: i1; + var $i455: i1; + var $i456: i1; + var $i458: i32; + var $i457: i32; + var $i454: i32; + var $i459: i64; + var $i460: i64; + var $i461: i32; + var $i462: i32; + var $i463: i64; + var $i464: i64; + var $i465: i32; + var $i466: i32; + var $i467: i32; + var $i468: i1; + var $i470: i1; + var $i471: i1; + var $i473: i32; + var $i472: i32; + var $i469: i32; + var $i474: i64; + var $i475: i64; + var $i476: i32; + var $i477: i32; + var $i478: i64; + var $i479: i64; + var $i480: i32; + var $i481: i32; + var $i482: i32; + var $i483: i1; + var $i485: i1; + var $i486: i1; + var $i488: i32; + var $i487: i32; + var $i484: i32; + var $i489: i64; + var $i490: i64; + var $i491: i32; + var $i492: i32; + var $i493: i64; + var $i494: i64; + var $i495: i32; + var $i496: i32; + var $i497: i32; + var $i498: i1; + var $i500: i1; + var $i501: i1; + var $i503: i32; + var $i502: i32; + var $i499: i32; + var $i504: i64; + var $i505: i64; + var $i506: i32; + var $i507: i32; + var $i508: i64; + var $i509: i64; + var $i510: i32; + var $i511: i32; + var $i512: i32; + var $i513: i1; + var $i515: i1; + var $i516: i1; + var $i518: i32; + var $i517: i32; + var $i514: i32; + var $i519: i64; + var $i520: i64; + var $i521: i32; + var $i522: i32; + var $i523: i64; + var $i524: i64; + var $i525: i32; + var $i526: i32; + var $i527: i32; + var $i528: i1; + var $i530: i1; + var $i531: i1; + var $i533: i32; + var $i532: i32; + var $i529: i32; + var $i534: i64; + var $i535: i64; + var $i536: i32; + var $i537: i32; + var $i538: i64; + var $i539: i64; + var $i540: i32; + var $i541: i32; + var $i542: i32; + var $i543: i1; + var $i545: i1; + var $i546: i1; + var $i548: i32; + var $i547: i32; + var $i544: i32; + var $i549: i64; + var $i550: i64; + var $i551: i32; + var $i552: i32; + var $i553: i64; + var $i554: i64; + var $i555: i32; + var $i556: i32; + var $i557: i32; + var $i558: i1; + var $i560: i1; + var $i561: i1; + var $i563: i32; + var $i562: i32; + var $i559: i32; + var $i564: i64; + var $i565: i64; + var $i566: i32; + var $i567: i32; + var $i568: i64; + var $i569: i64; + var $i570: i32; + var $i571: i32; + var $i572: i32; + var $i573: i1; + var $i575: i1; + var $i576: i1; + var $i578: i32; + var $i577: i32; + var $i574: i32; + var $i579: i64; + var $i580: i64; + var $i581: i32; + var $i582: i32; + var $i583: i64; + var $i584: i64; + var $i585: i32; + var $i586: i32; + var $i587: i32; + var $i588: i1; + var $i590: i1; + var $i591: i1; + var $i593: i32; + var $i592: i32; + var $i589: i32; + var $i594: i64; + var $i595: i64; + var $i596: i32; + var $i597: i32; + var $i598: i64; + var $i599: i64; + var $i600: i32; + var $i601: i32; + var $i602: i32; + var $i603: i1; + var $i605: i1; + var $i606: i1; + var $i608: i32; + var $i607: i32; + var $i604: i32; + var $i609: i64; + var $i610: i64; + var $i611: i32; + var $i612: i32; + var $i613: i64; + var $i614: i64; + var $i615: i32; + var $i616: i32; + var $i617: i32; + var $i618: i1; + var $i620: i1; + var $i621: i1; + var $i623: i32; + var $i622: i32; + var $i619: i32; + var $i624: i64; + var $i625: i64; + var $i626: i32; + var $i627: i32; + var $i628: i64; + var $i629: i64; + var $i630: i32; + var $i631: i32; + var $i632: i32; + var $i633: i1; + var $i635: i1; + var $i636: i1; + var $i638: i32; + var $i637: i32; + var $i634: i32; + var $i639: i64; + var $i640: i64; + var $i641: i32; + var $i642: i32; + var $i643: i64; + var $i644: i64; + var $i645: i32; + var $i646: i32; + var $i647: i32; + var $i648: i1; + var $i650: i1; + var $i651: i1; + var $i653: i32; + var $i652: i32; + var $i649: i32; + var $i654: i64; + var $i655: i64; + var $i656: i32; + var $i657: i32; + var $i658: i64; + var $i659: i64; + var $i660: i32; + var $i661: i32; + var $i662: i32; + var $i663: i1; + var $i665: i1; + var $i666: i1; + var $i668: i32; + var $i667: i32; + var $i664: i32; + var $i669: i64; + var $i670: i64; + var $i671: i32; + var $i672: i32; + var $i673: i64; + var $i674: i64; + var $i675: i32; + var $i676: i32; + var $i677: i32; + var $i678: i1; + var $i680: i1; + var $i681: i1; + var $i683: i32; + var $i682: i32; + var $i679: i32; + var $i684: i64; + var $i685: i64; + var $i686: i32; + var $i687: i32; + var $i688: i64; + var $i689: i64; + var $i690: i32; + var $i691: i32; + var $i692: i32; + var $i693: i1; + var $i695: i1; + var $i696: i1; + var $i698: i32; + var $i697: i32; + var $i694: i32; + var $i699: i64; + var $i700: i64; + var $i701: i32; + var $i702: i32; + var $i703: i64; + var $i704: i64; + var $i705: i32; + var $i706: i32; + var $i707: i32; + var $i708: i1; + var $i710: i1; + var $i711: i1; + var $i713: i32; + var $i712: i32; + var $i709: i32; + var $i714: i64; + var $i715: i64; + var $i716: i32; + var $i717: i32; + var $i718: i64; + var $i719: i64; + var $i720: i32; + var $i721: i32; + var $i722: i32; + var $i723: i1; + var $i725: i1; + var $i726: i1; + var $i728: i32; + var $i727: i32; + var $i724: i32; + var $i729: i64; + var $i730: i64; + var $i731: i32; + var $i732: i32; + var $i733: i64; + var $i734: i64; + var $i735: i32; + var $i736: i32; + var $i737: i32; + var $i738: i1; + var $i740: i1; + var $i741: i1; + var $i743: i32; + var $i742: i32; + var $i739: i32; + var $i744: i64; + var $i745: i64; + var $i746: i32; + var $i747: i32; + var $i748: i64; + var $i749: i64; + var $i750: i32; + var $i751: i32; + var $i752: i32; + var $i753: i1; + var $i755: i1; + var $i756: i1; + var $i758: i32; + var $i757: i32; + var $i754: i32; + var $i759: i64; + var $i760: i64; + var $i761: i32; + var $i762: i32; + var $i763: i64; + var $i764: i64; + var $i765: i32; + var $i766: i32; + var $i767: i32; + var $i768: i1; + var $i770: i1; + var $i771: i1; + var $i773: i32; + var $i772: i32; + var $i769: i32; + var $i774: i64; + var $i775: i64; + var $i776: i32; + var $i777: i32; + var $i778: i64; + var $i779: i64; + var $i780: i32; + var $i781: i32; + var $i782: i32; + var $i783: i1; + var $i785: i1; + var $i786: i1; + var $i788: i32; + var $i787: i32; + var $i784: i32; + var $i789: i64; + var $i790: i64; + var $i791: i32; + var $i792: i32; + var $i793: i64; + var $i794: i64; + var $i795: i32; + var $i796: i32; + var $i797: i32; + var $i798: i1; + var $i800: i1; + var $i801: i1; + var $i803: i32; + var $i802: i32; + var $i799: i32; + var $i804: i64; + var $i805: i64; + var $i806: i32; + var $i807: i32; + var $i808: i64; + var $i809: i64; + var $i810: i32; + var $i811: i32; + var $i812: i32; + var $i813: i1; + var $i815: i1; + var $i816: i1; + var $i818: i32; + var $i817: i32; + var $i814: i32; + var $i819: i64; + var $i820: i64; + var $i821: i32; + var $i822: i32; + var $i823: i64; + var $i824: i64; + var $i825: i32; + var $i826: i32; + var $i827: i32; + var $i828: i1; + var $i830: i1; + var $i831: i1; + var $i833: i32; + var $i832: i32; + var $i829: i32; + var $i834: i64; + var $i835: i64; + var $i836: i32; + var $i837: i32; + var $i838: i64; + var $i839: i64; + var $i840: i32; + var $i841: i32; + var $i842: i32; + var $i843: i1; + var $i845: i1; + var $i846: i1; + var $i848: i32; + var $i847: i32; + var $i844: i32; + var $i849: i64; + var $i850: i64; + var $i851: i32; + var $i852: i32; + var $i853: i64; + var $i854: i64; + var $i855: i32; + var $i856: i32; + var $i857: i32; + var $i858: i1; + var $i860: i1; + var $i861: i1; + var $i863: i32; + var $i862: i32; + var $i859: i32; + var $i864: i64; + var $i865: i64; + var $i866: i32; + var $i867: i32; + var $i868: i64; + var $i869: i64; + var $i870: i32; + var $i871: i32; + var $i872: i32; + var $i873: i1; + var $i875: i1; + var $i876: i1; + var $i878: i32; + var $i877: i32; + var $i874: i32; + var $i879: i64; + var $i880: i64; + var $i881: i32; + var $i882: i32; + var $i883: i64; + var $i884: i64; + var $i885: i32; + var $i886: i32; + var $i887: i32; + var $i888: i1; + var $i890: i1; + var $i891: i1; + var $i893: i32; + var $i892: i32; + var $i889: i32; + var $i894: i64; + var $i895: i64; + var $i896: i32; + var $i897: i32; + var $i898: i64; + var $i899: i64; + var $i900: i32; + var $i901: i32; + var $i902: i32; + var $i903: i1; + var $i905: i1; + var $i906: i1; + var $i908: i32; + var $i907: i32; + var $i904: i32; + var $i909: i64; + var $i910: i64; + var $i911: i32; + var $i912: i32; + var $i913: i64; + var $i914: i64; + var $i915: i32; + var $i916: i32; + var $i917: i32; + var $i918: i1; + var $i920: i1; + var $i921: i1; + var $i923: i32; + var $i922: i32; + var $i919: i32; + var $i924: i64; + var $i925: i64; + var $i926: i32; + var $i927: i32; + var $i928: i64; + var $i929: i64; + var $i930: i32; + var $i931: i32; + var $i932: i32; + var $i933: i1; + var $i935: i1; + var $i936: i1; + var $i938: i32; + var $i937: i32; + var $i934: i32; + var $i939: i64; + var $i940: i64; + var $i941: i32; + var $i942: i32; + var $i943: i64; + var $i944: i64; + var $i945: i32; + var $i946: i32; + var $i947: i32; + var $i948: i1; + var $i950: i1; + var $i951: i1; + var $i953: i32; + var $i952: i32; + var $i949: i32; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 60, 5} true; + assume {:verifier.code 0} true; + call {:cexpr "__SMACK_and32:arg:a"} boogie_si_record_i32($i0); + call {:cexpr "__SMACK_and32:arg:b"} boogie_si_record_i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 60, 5} true; + assume {:verifier.code 0} true; + $i2 := $add.i32(0, 0); + call {:cexpr "c"} boogie_si_record_i32($i2); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 61, 9} true; + assume {:verifier.code 0} true; + $i3 := $slt.i32($i0, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 61, 7} true; + assume {:verifier.code 0} true; + $i4 := $i2; + assume {:branchcond $i3} true; + goto $bb1, $bb2; +$bb1: + assume ($i3 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 11} true; + assume {:verifier.code 0} true; + $i5 := $slt.i32($i1, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i5} true; + goto $bb4, $bb6; +$bb2: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 61, 7} true; + assume {:verifier.code 0} true; + assume !(($i3 == 1)); + goto $bb3; +$bb3: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 66, 7} true; + assume {:verifier.code 0} true; + $i9 := $sext.i32.i64($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 66, 9} true; + assume {:verifier.code 0} true; + $i10 := $srem.i64($i9, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 66, 7} true; + assume {:verifier.code 0} true; + $i11 := $trunc.i64.i32($i10); + call {:cexpr "a"} boogie_si_record_i32($i11); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 67, 5} true; + assume {:verifier.code 0} true; + $i12 := $add.i32($i11, $i11); + call {:cexpr "a"} boogie_si_record_i32($i12); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 68, 7} true; + assume {:verifier.code 0} true; + $i13 := $sext.i32.i64($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 68, 9} true; + assume {:verifier.code 0} true; + $i14 := $srem.i64($i13, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 68, 7} true; + assume {:verifier.code 0} true; + $i15 := $trunc.i64.i32($i14); + call {:cexpr "b"} boogie_si_record_i32($i15); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 69, 5} true; + assume {:verifier.code 0} true; + $i16 := $add.i32($i15, $i15); + call {:cexpr "b"} boogie_si_record_i32($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 71, 5} true; + assume {:verifier.code 0} true; + $i17 := $add.i32($i4, $i4); + call {:cexpr "c"} boogie_si_record_i32($i17); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 72, 9} true; + assume {:verifier.code 0} true; + $i18 := $slt.i32($i12, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 72, 7} true; + assume {:verifier.code 0} true; + $i19 := $i17; + assume {:branchcond $i18} true; + goto $bb10, $bb11; +$bb4: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 15} true; + assume {:verifier.code 0} true; + assume ($i5 == 1); + goto $bb5; +$bb5: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 63, 9} true; + assume {:verifier.code 0} true; + $i8 := $add.i32($i2, 1); + call {:cexpr "c"} boogie_si_record_i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 64, 5} true; + assume {:verifier.code 0} true; + $i7 := $i8; + goto $bb9; +$bb6: + assume !(($i5 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 20} true; + assume {:verifier.code 0} true; + $i6 := $sgt.i32($i1, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 9} true; + assume {:verifier.code 0} true; + $i7 := $i2; + assume {:branchcond $i6} true; + goto $bb7, $bb8; +$bb7: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 9} true; + assume {:verifier.code 0} true; + assume ($i6 == 1); + goto $bb5; +$bb8: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 62, 9} true; + assume {:verifier.code 0} true; + assume !(($i6 == 1)); + goto $bb9; +$bb9: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 65, 3} true; + assume {:verifier.code 0} true; + $i4 := $i7; + goto $bb3; +$bb10: + assume ($i18 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 11} true; + assume {:verifier.code 0} true; + $i20 := $slt.i32($i16, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i20} true; + goto $bb13, $bb15; +$bb11: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 72, 7} true; + assume {:verifier.code 0} true; + assume !(($i18 == 1)); + goto $bb12; +$bb12: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 77, 7} true; + assume {:verifier.code 0} true; + $i24 := $sext.i32.i64($i12); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 77, 9} true; + assume {:verifier.code 0} true; + $i25 := $srem.i64($i24, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 77, 7} true; + assume {:verifier.code 0} true; + $i26 := $trunc.i64.i32($i25); + call {:cexpr "a"} boogie_si_record_i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 78, 5} true; + assume {:verifier.code 0} true; + $i27 := $add.i32($i26, $i26); + call {:cexpr "a"} boogie_si_record_i32($i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 79, 7} true; + assume {:verifier.code 0} true; + $i28 := $sext.i32.i64($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 79, 9} true; + assume {:verifier.code 0} true; + $i29 := $srem.i64($i28, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 79, 7} true; + assume {:verifier.code 0} true; + $i30 := $trunc.i64.i32($i29); + call {:cexpr "b"} boogie_si_record_i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 80, 5} true; + assume {:verifier.code 0} true; + $i31 := $add.i32($i30, $i30); + call {:cexpr "b"} boogie_si_record_i32($i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 82, 5} true; + assume {:verifier.code 0} true; + $i32 := $add.i32($i19, $i19); + call {:cexpr "c"} boogie_si_record_i32($i32); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 83, 9} true; + assume {:verifier.code 0} true; + $i33 := $slt.i32($i27, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 83, 7} true; + assume {:verifier.code 0} true; + $i34 := $i32; + assume {:branchcond $i33} true; + goto $bb19, $bb20; +$bb13: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 15} true; + assume {:verifier.code 0} true; + assume ($i20 == 1); + goto $bb14; +$bb14: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 74, 9} true; + assume {:verifier.code 0} true; + $i23 := $add.i32($i17, 1); + call {:cexpr "c"} boogie_si_record_i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 75, 5} true; + assume {:verifier.code 0} true; + $i22 := $i23; + goto $bb18; +$bb15: + assume !(($i20 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 20} true; + assume {:verifier.code 0} true; + $i21 := $sgt.i32($i16, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 9} true; + assume {:verifier.code 0} true; + $i22 := $i17; + assume {:branchcond $i21} true; + goto $bb16, $bb17; +$bb16: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 9} true; + assume {:verifier.code 0} true; + assume ($i21 == 1); + goto $bb14; +$bb17: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 73, 9} true; + assume {:verifier.code 0} true; + assume !(($i21 == 1)); + goto $bb18; +$bb18: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 76, 3} true; + assume {:verifier.code 0} true; + $i19 := $i22; + goto $bb12; +$bb19: + assume ($i33 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 11} true; + assume {:verifier.code 0} true; + $i35 := $slt.i32($i31, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i35} true; + goto $bb22, $bb24; +$bb20: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 83, 7} true; + assume {:verifier.code 0} true; + assume !(($i33 == 1)); + goto $bb21; +$bb21: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 88, 7} true; + assume {:verifier.code 0} true; + $i39 := $sext.i32.i64($i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 88, 9} true; + assume {:verifier.code 0} true; + $i40 := $srem.i64($i39, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 88, 7} true; + assume {:verifier.code 0} true; + $i41 := $trunc.i64.i32($i40); + call {:cexpr "a"} boogie_si_record_i32($i41); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 89, 5} true; + assume {:verifier.code 0} true; + $i42 := $add.i32($i41, $i41); + call {:cexpr "a"} boogie_si_record_i32($i42); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 90, 7} true; + assume {:verifier.code 0} true; + $i43 := $sext.i32.i64($i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 90, 9} true; + assume {:verifier.code 0} true; + $i44 := $srem.i64($i43, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 90, 7} true; + assume {:verifier.code 0} true; + $i45 := $trunc.i64.i32($i44); + call {:cexpr "b"} boogie_si_record_i32($i45); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 91, 5} true; + assume {:verifier.code 0} true; + $i46 := $add.i32($i45, $i45); + call {:cexpr "b"} boogie_si_record_i32($i46); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 93, 5} true; + assume {:verifier.code 0} true; + $i47 := $add.i32($i34, $i34); + call {:cexpr "c"} boogie_si_record_i32($i47); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 94, 9} true; + assume {:verifier.code 0} true; + $i48 := $slt.i32($i42, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 94, 7} true; + assume {:verifier.code 0} true; + $i49 := $i47; + assume {:branchcond $i48} true; + goto $bb28, $bb29; +$bb22: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 15} true; + assume {:verifier.code 0} true; + assume ($i35 == 1); + goto $bb23; +$bb23: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 85, 9} true; + assume {:verifier.code 0} true; + $i38 := $add.i32($i32, 1); + call {:cexpr "c"} boogie_si_record_i32($i38); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 86, 5} true; + assume {:verifier.code 0} true; + $i37 := $i38; + goto $bb27; +$bb24: + assume !(($i35 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 20} true; + assume {:verifier.code 0} true; + $i36 := $sgt.i32($i31, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 9} true; + assume {:verifier.code 0} true; + $i37 := $i32; + assume {:branchcond $i36} true; + goto $bb25, $bb26; +$bb25: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 9} true; + assume {:verifier.code 0} true; + assume ($i36 == 1); + goto $bb23; +$bb26: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 84, 9} true; + assume {:verifier.code 0} true; + assume !(($i36 == 1)); + goto $bb27; +$bb27: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 87, 3} true; + assume {:verifier.code 0} true; + $i34 := $i37; + goto $bb21; +$bb28: + assume ($i48 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 11} true; + assume {:verifier.code 0} true; + $i50 := $slt.i32($i46, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i50} true; + goto $bb31, $bb33; +$bb29: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 94, 7} true; + assume {:verifier.code 0} true; + assume !(($i48 == 1)); + goto $bb30; +$bb30: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 99, 7} true; + assume {:verifier.code 0} true; + $i54 := $sext.i32.i64($i42); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 99, 9} true; + assume {:verifier.code 0} true; + $i55 := $srem.i64($i54, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 99, 7} true; + assume {:verifier.code 0} true; + $i56 := $trunc.i64.i32($i55); + call {:cexpr "a"} boogie_si_record_i32($i56); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 100, 5} true; + assume {:verifier.code 0} true; + $i57 := $add.i32($i56, $i56); + call {:cexpr "a"} boogie_si_record_i32($i57); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 101, 7} true; + assume {:verifier.code 0} true; + $i58 := $sext.i32.i64($i46); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 101, 9} true; + assume {:verifier.code 0} true; + $i59 := $srem.i64($i58, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 101, 7} true; + assume {:verifier.code 0} true; + $i60 := $trunc.i64.i32($i59); + call {:cexpr "b"} boogie_si_record_i32($i60); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 102, 5} true; + assume {:verifier.code 0} true; + $i61 := $add.i32($i60, $i60); + call {:cexpr "b"} boogie_si_record_i32($i61); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 104, 5} true; + assume {:verifier.code 0} true; + $i62 := $add.i32($i49, $i49); + call {:cexpr "c"} boogie_si_record_i32($i62); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 105, 9} true; + assume {:verifier.code 0} true; + $i63 := $slt.i32($i57, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 105, 7} true; + assume {:verifier.code 0} true; + $i64 := $i62; + assume {:branchcond $i63} true; + goto $bb37, $bb38; +$bb31: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 15} true; + assume {:verifier.code 0} true; + assume ($i50 == 1); + goto $bb32; +$bb32: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 96, 9} true; + assume {:verifier.code 0} true; + $i53 := $add.i32($i47, 1); + call {:cexpr "c"} boogie_si_record_i32($i53); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 97, 5} true; + assume {:verifier.code 0} true; + $i52 := $i53; + goto $bb36; +$bb33: + assume !(($i50 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 20} true; + assume {:verifier.code 0} true; + $i51 := $sgt.i32($i46, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 9} true; + assume {:verifier.code 0} true; + $i52 := $i47; + assume {:branchcond $i51} true; + goto $bb34, $bb35; +$bb34: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 9} true; + assume {:verifier.code 0} true; + assume ($i51 == 1); + goto $bb32; +$bb35: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 95, 9} true; + assume {:verifier.code 0} true; + assume !(($i51 == 1)); + goto $bb36; +$bb36: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 98, 3} true; + assume {:verifier.code 0} true; + $i49 := $i52; + goto $bb30; +$bb37: + assume ($i63 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 11} true; + assume {:verifier.code 0} true; + $i65 := $slt.i32($i61, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i65} true; + goto $bb40, $bb42; +$bb38: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 105, 7} true; + assume {:verifier.code 0} true; + assume !(($i63 == 1)); + goto $bb39; +$bb39: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 110, 7} true; + assume {:verifier.code 0} true; + $i69 := $sext.i32.i64($i57); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 110, 9} true; + assume {:verifier.code 0} true; + $i70 := $srem.i64($i69, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 110, 7} true; + assume {:verifier.code 0} true; + $i71 := $trunc.i64.i32($i70); + call {:cexpr "a"} boogie_si_record_i32($i71); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 111, 5} true; + assume {:verifier.code 0} true; + $i72 := $add.i32($i71, $i71); + call {:cexpr "a"} boogie_si_record_i32($i72); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 112, 7} true; + assume {:verifier.code 0} true; + $i73 := $sext.i32.i64($i61); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 112, 9} true; + assume {:verifier.code 0} true; + $i74 := $srem.i64($i73, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 112, 7} true; + assume {:verifier.code 0} true; + $i75 := $trunc.i64.i32($i74); + call {:cexpr "b"} boogie_si_record_i32($i75); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 113, 5} true; + assume {:verifier.code 0} true; + $i76 := $add.i32($i75, $i75); + call {:cexpr "b"} boogie_si_record_i32($i76); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 115, 5} true; + assume {:verifier.code 0} true; + $i77 := $add.i32($i64, $i64); + call {:cexpr "c"} boogie_si_record_i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 116, 9} true; + assume {:verifier.code 0} true; + $i78 := $slt.i32($i72, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 116, 7} true; + assume {:verifier.code 0} true; + $i79 := $i77; + assume {:branchcond $i78} true; + goto $bb46, $bb47; +$bb40: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 15} true; + assume {:verifier.code 0} true; + assume ($i65 == 1); + goto $bb41; +$bb41: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 107, 9} true; + assume {:verifier.code 0} true; + $i68 := $add.i32($i62, 1); + call {:cexpr "c"} boogie_si_record_i32($i68); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 108, 5} true; + assume {:verifier.code 0} true; + $i67 := $i68; + goto $bb45; +$bb42: + assume !(($i65 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 20} true; + assume {:verifier.code 0} true; + $i66 := $sgt.i32($i61, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 9} true; + assume {:verifier.code 0} true; + $i67 := $i62; + assume {:branchcond $i66} true; + goto $bb43, $bb44; +$bb43: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 9} true; + assume {:verifier.code 0} true; + assume ($i66 == 1); + goto $bb41; +$bb44: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 106, 9} true; + assume {:verifier.code 0} true; + assume !(($i66 == 1)); + goto $bb45; +$bb45: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 109, 3} true; + assume {:verifier.code 0} true; + $i64 := $i67; + goto $bb39; +$bb46: + assume ($i78 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 11} true; + assume {:verifier.code 0} true; + $i80 := $slt.i32($i76, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i80} true; + goto $bb49, $bb51; +$bb47: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 116, 7} true; + assume {:verifier.code 0} true; + assume !(($i78 == 1)); + goto $bb48; +$bb48: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 121, 7} true; + assume {:verifier.code 0} true; + $i84 := $sext.i32.i64($i72); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 121, 9} true; + assume {:verifier.code 0} true; + $i85 := $srem.i64($i84, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 121, 7} true; + assume {:verifier.code 0} true; + $i86 := $trunc.i64.i32($i85); + call {:cexpr "a"} boogie_si_record_i32($i86); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 122, 5} true; + assume {:verifier.code 0} true; + $i87 := $add.i32($i86, $i86); + call {:cexpr "a"} boogie_si_record_i32($i87); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 123, 7} true; + assume {:verifier.code 0} true; + $i88 := $sext.i32.i64($i76); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 123, 9} true; + assume {:verifier.code 0} true; + $i89 := $srem.i64($i88, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 123, 7} true; + assume {:verifier.code 0} true; + $i90 := $trunc.i64.i32($i89); + call {:cexpr "b"} boogie_si_record_i32($i90); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 124, 5} true; + assume {:verifier.code 0} true; + $i91 := $add.i32($i90, $i90); + call {:cexpr "b"} boogie_si_record_i32($i91); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 126, 5} true; + assume {:verifier.code 0} true; + $i92 := $add.i32($i79, $i79); + call {:cexpr "c"} boogie_si_record_i32($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 127, 9} true; + assume {:verifier.code 0} true; + $i93 := $slt.i32($i87, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 127, 7} true; + assume {:verifier.code 0} true; + $i94 := $i92; + assume {:branchcond $i93} true; + goto $bb55, $bb56; +$bb49: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 15} true; + assume {:verifier.code 0} true; + assume ($i80 == 1); + goto $bb50; +$bb50: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 118, 9} true; + assume {:verifier.code 0} true; + $i83 := $add.i32($i77, 1); + call {:cexpr "c"} boogie_si_record_i32($i83); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 119, 5} true; + assume {:verifier.code 0} true; + $i82 := $i83; + goto $bb54; +$bb51: + assume !(($i80 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 20} true; + assume {:verifier.code 0} true; + $i81 := $sgt.i32($i76, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 9} true; + assume {:verifier.code 0} true; + $i82 := $i77; + assume {:branchcond $i81} true; + goto $bb52, $bb53; +$bb52: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 9} true; + assume {:verifier.code 0} true; + assume ($i81 == 1); + goto $bb50; +$bb53: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 117, 9} true; + assume {:verifier.code 0} true; + assume !(($i81 == 1)); + goto $bb54; +$bb54: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 120, 3} true; + assume {:verifier.code 0} true; + $i79 := $i82; + goto $bb48; +$bb55: + assume ($i93 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 11} true; + assume {:verifier.code 0} true; + $i95 := $slt.i32($i91, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i95} true; + goto $bb58, $bb60; +$bb56: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 127, 7} true; + assume {:verifier.code 0} true; + assume !(($i93 == 1)); + goto $bb57; +$bb57: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 132, 7} true; + assume {:verifier.code 0} true; + $i99 := $sext.i32.i64($i87); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 132, 9} true; + assume {:verifier.code 0} true; + $i100 := $srem.i64($i99, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 132, 7} true; + assume {:verifier.code 0} true; + $i101 := $trunc.i64.i32($i100); + call {:cexpr "a"} boogie_si_record_i32($i101); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 133, 5} true; + assume {:verifier.code 0} true; + $i102 := $add.i32($i101, $i101); + call {:cexpr "a"} boogie_si_record_i32($i102); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 134, 7} true; + assume {:verifier.code 0} true; + $i103 := $sext.i32.i64($i91); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 134, 9} true; + assume {:verifier.code 0} true; + $i104 := $srem.i64($i103, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 134, 7} true; + assume {:verifier.code 0} true; + $i105 := $trunc.i64.i32($i104); + call {:cexpr "b"} boogie_si_record_i32($i105); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 135, 5} true; + assume {:verifier.code 0} true; + $i106 := $add.i32($i105, $i105); + call {:cexpr "b"} boogie_si_record_i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 137, 5} true; + assume {:verifier.code 0} true; + $i107 := $add.i32($i94, $i94); + call {:cexpr "c"} boogie_si_record_i32($i107); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 138, 9} true; + assume {:verifier.code 0} true; + $i108 := $slt.i32($i102, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 138, 7} true; + assume {:verifier.code 0} true; + $i109 := $i107; + assume {:branchcond $i108} true; + goto $bb64, $bb65; +$bb58: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 15} true; + assume {:verifier.code 0} true; + assume ($i95 == 1); + goto $bb59; +$bb59: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 129, 9} true; + assume {:verifier.code 0} true; + $i98 := $add.i32($i92, 1); + call {:cexpr "c"} boogie_si_record_i32($i98); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 130, 5} true; + assume {:verifier.code 0} true; + $i97 := $i98; + goto $bb63; +$bb60: + assume !(($i95 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 20} true; + assume {:verifier.code 0} true; + $i96 := $sgt.i32($i91, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 9} true; + assume {:verifier.code 0} true; + $i97 := $i92; + assume {:branchcond $i96} true; + goto $bb61, $bb62; +$bb61: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 9} true; + assume {:verifier.code 0} true; + assume ($i96 == 1); + goto $bb59; +$bb62: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 128, 9} true; + assume {:verifier.code 0} true; + assume !(($i96 == 1)); + goto $bb63; +$bb63: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 131, 3} true; + assume {:verifier.code 0} true; + $i94 := $i97; + goto $bb57; +$bb64: + assume ($i108 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 11} true; + assume {:verifier.code 0} true; + $i110 := $slt.i32($i106, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i110} true; + goto $bb67, $bb69; +$bb65: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 138, 7} true; + assume {:verifier.code 0} true; + assume !(($i108 == 1)); + goto $bb66; +$bb66: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 143, 7} true; + assume {:verifier.code 0} true; + $i114 := $sext.i32.i64($i102); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 143, 9} true; + assume {:verifier.code 0} true; + $i115 := $srem.i64($i114, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 143, 7} true; + assume {:verifier.code 0} true; + $i116 := $trunc.i64.i32($i115); + call {:cexpr "a"} boogie_si_record_i32($i116); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 144, 5} true; + assume {:verifier.code 0} true; + $i117 := $add.i32($i116, $i116); + call {:cexpr "a"} boogie_si_record_i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 145, 7} true; + assume {:verifier.code 0} true; + $i118 := $sext.i32.i64($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 145, 9} true; + assume {:verifier.code 0} true; + $i119 := $srem.i64($i118, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 145, 7} true; + assume {:verifier.code 0} true; + $i120 := $trunc.i64.i32($i119); + call {:cexpr "b"} boogie_si_record_i32($i120); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 146, 5} true; + assume {:verifier.code 0} true; + $i121 := $add.i32($i120, $i120); + call {:cexpr "b"} boogie_si_record_i32($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 148, 5} true; + assume {:verifier.code 0} true; + $i122 := $add.i32($i109, $i109); + call {:cexpr "c"} boogie_si_record_i32($i122); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 149, 9} true; + assume {:verifier.code 0} true; + $i123 := $slt.i32($i117, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 149, 7} true; + assume {:verifier.code 0} true; + $i124 := $i122; + assume {:branchcond $i123} true; + goto $bb73, $bb74; +$bb67: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 15} true; + assume {:verifier.code 0} true; + assume ($i110 == 1); + goto $bb68; +$bb68: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 140, 9} true; + assume {:verifier.code 0} true; + $i113 := $add.i32($i107, 1); + call {:cexpr "c"} boogie_si_record_i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 141, 5} true; + assume {:verifier.code 0} true; + $i112 := $i113; + goto $bb72; +$bb69: + assume !(($i110 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 20} true; + assume {:verifier.code 0} true; + $i111 := $sgt.i32($i106, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 9} true; + assume {:verifier.code 0} true; + $i112 := $i107; + assume {:branchcond $i111} true; + goto $bb70, $bb71; +$bb70: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 9} true; + assume {:verifier.code 0} true; + assume ($i111 == 1); + goto $bb68; +$bb71: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 139, 9} true; + assume {:verifier.code 0} true; + assume !(($i111 == 1)); + goto $bb72; +$bb72: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 142, 3} true; + assume {:verifier.code 0} true; + $i109 := $i112; + goto $bb66; +$bb73: + assume ($i123 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 11} true; + assume {:verifier.code 0} true; + $i125 := $slt.i32($i121, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i125} true; + goto $bb76, $bb78; +$bb74: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 149, 7} true; + assume {:verifier.code 0} true; + assume !(($i123 == 1)); + goto $bb75; +$bb75: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 154, 7} true; + assume {:verifier.code 0} true; + $i129 := $sext.i32.i64($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 154, 9} true; + assume {:verifier.code 0} true; + $i130 := $srem.i64($i129, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 154, 7} true; + assume {:verifier.code 0} true; + $i131 := $trunc.i64.i32($i130); + call {:cexpr "a"} boogie_si_record_i32($i131); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 155, 5} true; + assume {:verifier.code 0} true; + $i132 := $add.i32($i131, $i131); + call {:cexpr "a"} boogie_si_record_i32($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 156, 7} true; + assume {:verifier.code 0} true; + $i133 := $sext.i32.i64($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 156, 9} true; + assume {:verifier.code 0} true; + $i134 := $srem.i64($i133, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 156, 7} true; + assume {:verifier.code 0} true; + $i135 := $trunc.i64.i32($i134); + call {:cexpr "b"} boogie_si_record_i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 157, 5} true; + assume {:verifier.code 0} true; + $i136 := $add.i32($i135, $i135); + call {:cexpr "b"} boogie_si_record_i32($i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 159, 5} true; + assume {:verifier.code 0} true; + $i137 := $add.i32($i124, $i124); + call {:cexpr "c"} boogie_si_record_i32($i137); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 160, 9} true; + assume {:verifier.code 0} true; + $i138 := $slt.i32($i132, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 160, 7} true; + assume {:verifier.code 0} true; + $i139 := $i137; + assume {:branchcond $i138} true; + goto $bb82, $bb83; +$bb76: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 15} true; + assume {:verifier.code 0} true; + assume ($i125 == 1); + goto $bb77; +$bb77: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 151, 9} true; + assume {:verifier.code 0} true; + $i128 := $add.i32($i122, 1); + call {:cexpr "c"} boogie_si_record_i32($i128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 152, 5} true; + assume {:verifier.code 0} true; + $i127 := $i128; + goto $bb81; +$bb78: + assume !(($i125 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 20} true; + assume {:verifier.code 0} true; + $i126 := $sgt.i32($i121, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 9} true; + assume {:verifier.code 0} true; + $i127 := $i122; + assume {:branchcond $i126} true; + goto $bb79, $bb80; +$bb79: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 9} true; + assume {:verifier.code 0} true; + assume ($i126 == 1); + goto $bb77; +$bb80: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 150, 9} true; + assume {:verifier.code 0} true; + assume !(($i126 == 1)); + goto $bb81; +$bb81: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 153, 3} true; + assume {:verifier.code 0} true; + $i124 := $i127; + goto $bb75; +$bb82: + assume ($i138 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 11} true; + assume {:verifier.code 0} true; + $i140 := $slt.i32($i136, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i140} true; + goto $bb85, $bb87; +$bb83: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 160, 7} true; + assume {:verifier.code 0} true; + assume !(($i138 == 1)); + goto $bb84; +$bb84: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 165, 7} true; + assume {:verifier.code 0} true; + $i144 := $sext.i32.i64($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 165, 9} true; + assume {:verifier.code 0} true; + $i145 := $srem.i64($i144, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 165, 7} true; + assume {:verifier.code 0} true; + $i146 := $trunc.i64.i32($i145); + call {:cexpr "a"} boogie_si_record_i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 166, 5} true; + assume {:verifier.code 0} true; + $i147 := $add.i32($i146, $i146); + call {:cexpr "a"} boogie_si_record_i32($i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 167, 7} true; + assume {:verifier.code 0} true; + $i148 := $sext.i32.i64($i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 167, 9} true; + assume {:verifier.code 0} true; + $i149 := $srem.i64($i148, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 167, 7} true; + assume {:verifier.code 0} true; + $i150 := $trunc.i64.i32($i149); + call {:cexpr "b"} boogie_si_record_i32($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 168, 5} true; + assume {:verifier.code 0} true; + $i151 := $add.i32($i150, $i150); + call {:cexpr "b"} boogie_si_record_i32($i151); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 170, 5} true; + assume {:verifier.code 0} true; + $i152 := $add.i32($i139, $i139); + call {:cexpr "c"} boogie_si_record_i32($i152); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 171, 9} true; + assume {:verifier.code 0} true; + $i153 := $slt.i32($i147, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 171, 7} true; + assume {:verifier.code 0} true; + $i154 := $i152; + assume {:branchcond $i153} true; + goto $bb91, $bb92; +$bb85: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 15} true; + assume {:verifier.code 0} true; + assume ($i140 == 1); + goto $bb86; +$bb86: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 162, 9} true; + assume {:verifier.code 0} true; + $i143 := $add.i32($i137, 1); + call {:cexpr "c"} boogie_si_record_i32($i143); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 163, 5} true; + assume {:verifier.code 0} true; + $i142 := $i143; + goto $bb90; +$bb87: + assume !(($i140 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 20} true; + assume {:verifier.code 0} true; + $i141 := $sgt.i32($i136, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 9} true; + assume {:verifier.code 0} true; + $i142 := $i137; + assume {:branchcond $i141} true; + goto $bb88, $bb89; +$bb88: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 9} true; + assume {:verifier.code 0} true; + assume ($i141 == 1); + goto $bb86; +$bb89: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 161, 9} true; + assume {:verifier.code 0} true; + assume !(($i141 == 1)); + goto $bb90; +$bb90: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 164, 3} true; + assume {:verifier.code 0} true; + $i139 := $i142; + goto $bb84; +$bb91: + assume ($i153 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 11} true; + assume {:verifier.code 0} true; + $i155 := $slt.i32($i151, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i155} true; + goto $bb94, $bb96; +$bb92: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 171, 7} true; + assume {:verifier.code 0} true; + assume !(($i153 == 1)); + goto $bb93; +$bb93: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 176, 7} true; + assume {:verifier.code 0} true; + $i159 := $sext.i32.i64($i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 176, 9} true; + assume {:verifier.code 0} true; + $i160 := $srem.i64($i159, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 176, 7} true; + assume {:verifier.code 0} true; + $i161 := $trunc.i64.i32($i160); + call {:cexpr "a"} boogie_si_record_i32($i161); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 177, 5} true; + assume {:verifier.code 0} true; + $i162 := $add.i32($i161, $i161); + call {:cexpr "a"} boogie_si_record_i32($i162); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 178, 7} true; + assume {:verifier.code 0} true; + $i163 := $sext.i32.i64($i151); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 178, 9} true; + assume {:verifier.code 0} true; + $i164 := $srem.i64($i163, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 178, 7} true; + assume {:verifier.code 0} true; + $i165 := $trunc.i64.i32($i164); + call {:cexpr "b"} boogie_si_record_i32($i165); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 179, 5} true; + assume {:verifier.code 0} true; + $i166 := $add.i32($i165, $i165); + call {:cexpr "b"} boogie_si_record_i32($i166); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 181, 5} true; + assume {:verifier.code 0} true; + $i167 := $add.i32($i154, $i154); + call {:cexpr "c"} boogie_si_record_i32($i167); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 182, 9} true; + assume {:verifier.code 0} true; + $i168 := $slt.i32($i162, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 182, 7} true; + assume {:verifier.code 0} true; + $i169 := $i167; + assume {:branchcond $i168} true; + goto $bb100, $bb101; +$bb94: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 15} true; + assume {:verifier.code 0} true; + assume ($i155 == 1); + goto $bb95; +$bb95: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 173, 9} true; + assume {:verifier.code 0} true; + $i158 := $add.i32($i152, 1); + call {:cexpr "c"} boogie_si_record_i32($i158); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 174, 5} true; + assume {:verifier.code 0} true; + $i157 := $i158; + goto $bb99; +$bb96: + assume !(($i155 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 20} true; + assume {:verifier.code 0} true; + $i156 := $sgt.i32($i151, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 9} true; + assume {:verifier.code 0} true; + $i157 := $i152; + assume {:branchcond $i156} true; + goto $bb97, $bb98; +$bb97: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 9} true; + assume {:verifier.code 0} true; + assume ($i156 == 1); + goto $bb95; +$bb98: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 172, 9} true; + assume {:verifier.code 0} true; + assume !(($i156 == 1)); + goto $bb99; +$bb99: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 175, 3} true; + assume {:verifier.code 0} true; + $i154 := $i157; + goto $bb93; +$bb100: + assume ($i168 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 11} true; + assume {:verifier.code 0} true; + $i170 := $slt.i32($i166, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i170} true; + goto $bb103, $bb105; +$bb101: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 182, 7} true; + assume {:verifier.code 0} true; + assume !(($i168 == 1)); + goto $bb102; +$bb102: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 187, 7} true; + assume {:verifier.code 0} true; + $i174 := $sext.i32.i64($i162); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 187, 9} true; + assume {:verifier.code 0} true; + $i175 := $srem.i64($i174, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 187, 7} true; + assume {:verifier.code 0} true; + $i176 := $trunc.i64.i32($i175); + call {:cexpr "a"} boogie_si_record_i32($i176); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 188, 5} true; + assume {:verifier.code 0} true; + $i177 := $add.i32($i176, $i176); + call {:cexpr "a"} boogie_si_record_i32($i177); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 189, 7} true; + assume {:verifier.code 0} true; + $i178 := $sext.i32.i64($i166); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 189, 9} true; + assume {:verifier.code 0} true; + $i179 := $srem.i64($i178, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 189, 7} true; + assume {:verifier.code 0} true; + $i180 := $trunc.i64.i32($i179); + call {:cexpr "b"} boogie_si_record_i32($i180); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 190, 5} true; + assume {:verifier.code 0} true; + $i181 := $add.i32($i180, $i180); + call {:cexpr "b"} boogie_si_record_i32($i181); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 192, 5} true; + assume {:verifier.code 0} true; + $i182 := $add.i32($i169, $i169); + call {:cexpr "c"} boogie_si_record_i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 193, 9} true; + assume {:verifier.code 0} true; + $i183 := $slt.i32($i177, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 193, 7} true; + assume {:verifier.code 0} true; + $i184 := $i182; + assume {:branchcond $i183} true; + goto $bb109, $bb110; +$bb103: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 15} true; + assume {:verifier.code 0} true; + assume ($i170 == 1); + goto $bb104; +$bb104: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 184, 9} true; + assume {:verifier.code 0} true; + $i173 := $add.i32($i167, 1); + call {:cexpr "c"} boogie_si_record_i32($i173); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 185, 5} true; + assume {:verifier.code 0} true; + $i172 := $i173; + goto $bb108; +$bb105: + assume !(($i170 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 20} true; + assume {:verifier.code 0} true; + $i171 := $sgt.i32($i166, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 9} true; + assume {:verifier.code 0} true; + $i172 := $i167; + assume {:branchcond $i171} true; + goto $bb106, $bb107; +$bb106: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 9} true; + assume {:verifier.code 0} true; + assume ($i171 == 1); + goto $bb104; +$bb107: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 183, 9} true; + assume {:verifier.code 0} true; + assume !(($i171 == 1)); + goto $bb108; +$bb108: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 186, 3} true; + assume {:verifier.code 0} true; + $i169 := $i172; + goto $bb102; +$bb109: + assume ($i183 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 11} true; + assume {:verifier.code 0} true; + $i185 := $slt.i32($i181, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i185} true; + goto $bb112, $bb114; +$bb110: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 193, 7} true; + assume {:verifier.code 0} true; + assume !(($i183 == 1)); + goto $bb111; +$bb111: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 198, 7} true; + assume {:verifier.code 0} true; + $i189 := $sext.i32.i64($i177); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 198, 9} true; + assume {:verifier.code 0} true; + $i190 := $srem.i64($i189, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 198, 7} true; + assume {:verifier.code 0} true; + $i191 := $trunc.i64.i32($i190); + call {:cexpr "a"} boogie_si_record_i32($i191); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 199, 5} true; + assume {:verifier.code 0} true; + $i192 := $add.i32($i191, $i191); + call {:cexpr "a"} boogie_si_record_i32($i192); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 200, 7} true; + assume {:verifier.code 0} true; + $i193 := $sext.i32.i64($i181); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 200, 9} true; + assume {:verifier.code 0} true; + $i194 := $srem.i64($i193, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 200, 7} true; + assume {:verifier.code 0} true; + $i195 := $trunc.i64.i32($i194); + call {:cexpr "b"} boogie_si_record_i32($i195); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 201, 5} true; + assume {:verifier.code 0} true; + $i196 := $add.i32($i195, $i195); + call {:cexpr "b"} boogie_si_record_i32($i196); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 203, 5} true; + assume {:verifier.code 0} true; + $i197 := $add.i32($i184, $i184); + call {:cexpr "c"} boogie_si_record_i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 204, 9} true; + assume {:verifier.code 0} true; + $i198 := $slt.i32($i192, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 204, 7} true; + assume {:verifier.code 0} true; + $i199 := $i197; + assume {:branchcond $i198} true; + goto $bb118, $bb119; +$bb112: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 15} true; + assume {:verifier.code 0} true; + assume ($i185 == 1); + goto $bb113; +$bb113: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 195, 9} true; + assume {:verifier.code 0} true; + $i188 := $add.i32($i182, 1); + call {:cexpr "c"} boogie_si_record_i32($i188); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 196, 5} true; + assume {:verifier.code 0} true; + $i187 := $i188; + goto $bb117; +$bb114: + assume !(($i185 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 20} true; + assume {:verifier.code 0} true; + $i186 := $sgt.i32($i181, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 9} true; + assume {:verifier.code 0} true; + $i187 := $i182; + assume {:branchcond $i186} true; + goto $bb115, $bb116; +$bb115: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 9} true; + assume {:verifier.code 0} true; + assume ($i186 == 1); + goto $bb113; +$bb116: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 194, 9} true; + assume {:verifier.code 0} true; + assume !(($i186 == 1)); + goto $bb117; +$bb117: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 197, 3} true; + assume {:verifier.code 0} true; + $i184 := $i187; + goto $bb111; +$bb118: + assume ($i198 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 11} true; + assume {:verifier.code 0} true; + $i200 := $slt.i32($i196, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i200} true; + goto $bb121, $bb123; +$bb119: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 204, 7} true; + assume {:verifier.code 0} true; + assume !(($i198 == 1)); + goto $bb120; +$bb120: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 209, 7} true; + assume {:verifier.code 0} true; + $i204 := $sext.i32.i64($i192); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 209, 9} true; + assume {:verifier.code 0} true; + $i205 := $srem.i64($i204, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 209, 7} true; + assume {:verifier.code 0} true; + $i206 := $trunc.i64.i32($i205); + call {:cexpr "a"} boogie_si_record_i32($i206); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 210, 5} true; + assume {:verifier.code 0} true; + $i207 := $add.i32($i206, $i206); + call {:cexpr "a"} boogie_si_record_i32($i207); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 211, 7} true; + assume {:verifier.code 0} true; + $i208 := $sext.i32.i64($i196); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 211, 9} true; + assume {:verifier.code 0} true; + $i209 := $srem.i64($i208, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 211, 7} true; + assume {:verifier.code 0} true; + $i210 := $trunc.i64.i32($i209); + call {:cexpr "b"} boogie_si_record_i32($i210); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 212, 5} true; + assume {:verifier.code 0} true; + $i211 := $add.i32($i210, $i210); + call {:cexpr "b"} boogie_si_record_i32($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 214, 5} true; + assume {:verifier.code 0} true; + $i212 := $add.i32($i199, $i199); + call {:cexpr "c"} boogie_si_record_i32($i212); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 215, 9} true; + assume {:verifier.code 0} true; + $i213 := $slt.i32($i207, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 215, 7} true; + assume {:verifier.code 0} true; + $i214 := $i212; + assume {:branchcond $i213} true; + goto $bb127, $bb128; +$bb121: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 15} true; + assume {:verifier.code 0} true; + assume ($i200 == 1); + goto $bb122; +$bb122: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 206, 9} true; + assume {:verifier.code 0} true; + $i203 := $add.i32($i197, 1); + call {:cexpr "c"} boogie_si_record_i32($i203); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 207, 5} true; + assume {:verifier.code 0} true; + $i202 := $i203; + goto $bb126; +$bb123: + assume !(($i200 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 20} true; + assume {:verifier.code 0} true; + $i201 := $sgt.i32($i196, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 9} true; + assume {:verifier.code 0} true; + $i202 := $i197; + assume {:branchcond $i201} true; + goto $bb124, $bb125; +$bb124: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 9} true; + assume {:verifier.code 0} true; + assume ($i201 == 1); + goto $bb122; +$bb125: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 205, 9} true; + assume {:verifier.code 0} true; + assume !(($i201 == 1)); + goto $bb126; +$bb126: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 208, 3} true; + assume {:verifier.code 0} true; + $i199 := $i202; + goto $bb120; +$bb127: + assume ($i213 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 11} true; + assume {:verifier.code 0} true; + $i215 := $slt.i32($i211, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i215} true; + goto $bb130, $bb132; +$bb128: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 215, 7} true; + assume {:verifier.code 0} true; + assume !(($i213 == 1)); + goto $bb129; +$bb129: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 220, 7} true; + assume {:verifier.code 0} true; + $i219 := $sext.i32.i64($i207); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 220, 9} true; + assume {:verifier.code 0} true; + $i220 := $srem.i64($i219, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 220, 7} true; + assume {:verifier.code 0} true; + $i221 := $trunc.i64.i32($i220); + call {:cexpr "a"} boogie_si_record_i32($i221); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 221, 5} true; + assume {:verifier.code 0} true; + $i222 := $add.i32($i221, $i221); + call {:cexpr "a"} boogie_si_record_i32($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 222, 7} true; + assume {:verifier.code 0} true; + $i223 := $sext.i32.i64($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 222, 9} true; + assume {:verifier.code 0} true; + $i224 := $srem.i64($i223, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 222, 7} true; + assume {:verifier.code 0} true; + $i225 := $trunc.i64.i32($i224); + call {:cexpr "b"} boogie_si_record_i32($i225); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 223, 5} true; + assume {:verifier.code 0} true; + $i226 := $add.i32($i225, $i225); + call {:cexpr "b"} boogie_si_record_i32($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 225, 5} true; + assume {:verifier.code 0} true; + $i227 := $add.i32($i214, $i214); + call {:cexpr "c"} boogie_si_record_i32($i227); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 226, 9} true; + assume {:verifier.code 0} true; + $i228 := $slt.i32($i222, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 226, 7} true; + assume {:verifier.code 0} true; + $i229 := $i227; + assume {:branchcond $i228} true; + goto $bb136, $bb137; +$bb130: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 15} true; + assume {:verifier.code 0} true; + assume ($i215 == 1); + goto $bb131; +$bb131: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 217, 9} true; + assume {:verifier.code 0} true; + $i218 := $add.i32($i212, 1); + call {:cexpr "c"} boogie_si_record_i32($i218); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 218, 5} true; + assume {:verifier.code 0} true; + $i217 := $i218; + goto $bb135; +$bb132: + assume !(($i215 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 20} true; + assume {:verifier.code 0} true; + $i216 := $sgt.i32($i211, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 9} true; + assume {:verifier.code 0} true; + $i217 := $i212; + assume {:branchcond $i216} true; + goto $bb133, $bb134; +$bb133: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 9} true; + assume {:verifier.code 0} true; + assume ($i216 == 1); + goto $bb131; +$bb134: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 216, 9} true; + assume {:verifier.code 0} true; + assume !(($i216 == 1)); + goto $bb135; +$bb135: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 219, 3} true; + assume {:verifier.code 0} true; + $i214 := $i217; + goto $bb129; +$bb136: + assume ($i228 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 11} true; + assume {:verifier.code 0} true; + $i230 := $slt.i32($i226, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i230} true; + goto $bb139, $bb141; +$bb137: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 226, 7} true; + assume {:verifier.code 0} true; + assume !(($i228 == 1)); + goto $bb138; +$bb138: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 231, 7} true; + assume {:verifier.code 0} true; + $i234 := $sext.i32.i64($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 231, 9} true; + assume {:verifier.code 0} true; + $i235 := $srem.i64($i234, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 231, 7} true; + assume {:verifier.code 0} true; + $i236 := $trunc.i64.i32($i235); + call {:cexpr "a"} boogie_si_record_i32($i236); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 232, 5} true; + assume {:verifier.code 0} true; + $i237 := $add.i32($i236, $i236); + call {:cexpr "a"} boogie_si_record_i32($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 233, 7} true; + assume {:verifier.code 0} true; + $i238 := $sext.i32.i64($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 233, 9} true; + assume {:verifier.code 0} true; + $i239 := $srem.i64($i238, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 233, 7} true; + assume {:verifier.code 0} true; + $i240 := $trunc.i64.i32($i239); + call {:cexpr "b"} boogie_si_record_i32($i240); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 234, 5} true; + assume {:verifier.code 0} true; + $i241 := $add.i32($i240, $i240); + call {:cexpr "b"} boogie_si_record_i32($i241); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 236, 5} true; + assume {:verifier.code 0} true; + $i242 := $add.i32($i229, $i229); + call {:cexpr "c"} boogie_si_record_i32($i242); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 237, 9} true; + assume {:verifier.code 0} true; + $i243 := $slt.i32($i237, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 237, 7} true; + assume {:verifier.code 0} true; + $i244 := $i242; + assume {:branchcond $i243} true; + goto $bb145, $bb146; +$bb139: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 15} true; + assume {:verifier.code 0} true; + assume ($i230 == 1); + goto $bb140; +$bb140: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 228, 9} true; + assume {:verifier.code 0} true; + $i233 := $add.i32($i227, 1); + call {:cexpr "c"} boogie_si_record_i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 229, 5} true; + assume {:verifier.code 0} true; + $i232 := $i233; + goto $bb144; +$bb141: + assume !(($i230 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 20} true; + assume {:verifier.code 0} true; + $i231 := $sgt.i32($i226, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 9} true; + assume {:verifier.code 0} true; + $i232 := $i227; + assume {:branchcond $i231} true; + goto $bb142, $bb143; +$bb142: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 9} true; + assume {:verifier.code 0} true; + assume ($i231 == 1); + goto $bb140; +$bb143: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 227, 9} true; + assume {:verifier.code 0} true; + assume !(($i231 == 1)); + goto $bb144; +$bb144: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 230, 3} true; + assume {:verifier.code 0} true; + $i229 := $i232; + goto $bb138; +$bb145: + assume ($i243 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 11} true; + assume {:verifier.code 0} true; + $i245 := $slt.i32($i241, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i245} true; + goto $bb148, $bb150; +$bb146: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 237, 7} true; + assume {:verifier.code 0} true; + assume !(($i243 == 1)); + goto $bb147; +$bb147: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 242, 7} true; + assume {:verifier.code 0} true; + $i249 := $sext.i32.i64($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 242, 9} true; + assume {:verifier.code 0} true; + $i250 := $srem.i64($i249, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 242, 7} true; + assume {:verifier.code 0} true; + $i251 := $trunc.i64.i32($i250); + call {:cexpr "a"} boogie_si_record_i32($i251); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 243, 5} true; + assume {:verifier.code 0} true; + $i252 := $add.i32($i251, $i251); + call {:cexpr "a"} boogie_si_record_i32($i252); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 244, 7} true; + assume {:verifier.code 0} true; + $i253 := $sext.i32.i64($i241); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 244, 9} true; + assume {:verifier.code 0} true; + $i254 := $srem.i64($i253, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 244, 7} true; + assume {:verifier.code 0} true; + $i255 := $trunc.i64.i32($i254); + call {:cexpr "b"} boogie_si_record_i32($i255); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 245, 5} true; + assume {:verifier.code 0} true; + $i256 := $add.i32($i255, $i255); + call {:cexpr "b"} boogie_si_record_i32($i256); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 247, 5} true; + assume {:verifier.code 0} true; + $i257 := $add.i32($i244, $i244); + call {:cexpr "c"} boogie_si_record_i32($i257); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 248, 9} true; + assume {:verifier.code 0} true; + $i258 := $slt.i32($i252, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 248, 7} true; + assume {:verifier.code 0} true; + $i259 := $i257; + assume {:branchcond $i258} true; + goto $bb154, $bb155; +$bb148: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 15} true; + assume {:verifier.code 0} true; + assume ($i245 == 1); + goto $bb149; +$bb149: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 239, 9} true; + assume {:verifier.code 0} true; + $i248 := $add.i32($i242, 1); + call {:cexpr "c"} boogie_si_record_i32($i248); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 240, 5} true; + assume {:verifier.code 0} true; + $i247 := $i248; + goto $bb153; +$bb150: + assume !(($i245 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 20} true; + assume {:verifier.code 0} true; + $i246 := $sgt.i32($i241, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 9} true; + assume {:verifier.code 0} true; + $i247 := $i242; + assume {:branchcond $i246} true; + goto $bb151, $bb152; +$bb151: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 9} true; + assume {:verifier.code 0} true; + assume ($i246 == 1); + goto $bb149; +$bb152: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 238, 9} true; + assume {:verifier.code 0} true; + assume !(($i246 == 1)); + goto $bb153; +$bb153: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 241, 3} true; + assume {:verifier.code 0} true; + $i244 := $i247; + goto $bb147; +$bb154: + assume ($i258 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 11} true; + assume {:verifier.code 0} true; + $i260 := $slt.i32($i256, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i260} true; + goto $bb157, $bb159; +$bb155: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 248, 7} true; + assume {:verifier.code 0} true; + assume !(($i258 == 1)); + goto $bb156; +$bb156: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 253, 7} true; + assume {:verifier.code 0} true; + $i264 := $sext.i32.i64($i252); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 253, 9} true; + assume {:verifier.code 0} true; + $i265 := $srem.i64($i264, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 253, 7} true; + assume {:verifier.code 0} true; + $i266 := $trunc.i64.i32($i265); + call {:cexpr "a"} boogie_si_record_i32($i266); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 254, 5} true; + assume {:verifier.code 0} true; + $i267 := $add.i32($i266, $i266); + call {:cexpr "a"} boogie_si_record_i32($i267); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 255, 7} true; + assume {:verifier.code 0} true; + $i268 := $sext.i32.i64($i256); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 255, 9} true; + assume {:verifier.code 0} true; + $i269 := $srem.i64($i268, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 255, 7} true; + assume {:verifier.code 0} true; + $i270 := $trunc.i64.i32($i269); + call {:cexpr "b"} boogie_si_record_i32($i270); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 256, 5} true; + assume {:verifier.code 0} true; + $i271 := $add.i32($i270, $i270); + call {:cexpr "b"} boogie_si_record_i32($i271); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 258, 5} true; + assume {:verifier.code 0} true; + $i272 := $add.i32($i259, $i259); + call {:cexpr "c"} boogie_si_record_i32($i272); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 259, 9} true; + assume {:verifier.code 0} true; + $i273 := $slt.i32($i267, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 259, 7} true; + assume {:verifier.code 0} true; + $i274 := $i272; + assume {:branchcond $i273} true; + goto $bb163, $bb164; +$bb157: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 15} true; + assume {:verifier.code 0} true; + assume ($i260 == 1); + goto $bb158; +$bb158: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 250, 9} true; + assume {:verifier.code 0} true; + $i263 := $add.i32($i257, 1); + call {:cexpr "c"} boogie_si_record_i32($i263); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 251, 5} true; + assume {:verifier.code 0} true; + $i262 := $i263; + goto $bb162; +$bb159: + assume !(($i260 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 20} true; + assume {:verifier.code 0} true; + $i261 := $sgt.i32($i256, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 9} true; + assume {:verifier.code 0} true; + $i262 := $i257; + assume {:branchcond $i261} true; + goto $bb160, $bb161; +$bb160: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 9} true; + assume {:verifier.code 0} true; + assume ($i261 == 1); + goto $bb158; +$bb161: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 249, 9} true; + assume {:verifier.code 0} true; + assume !(($i261 == 1)); + goto $bb162; +$bb162: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 252, 3} true; + assume {:verifier.code 0} true; + $i259 := $i262; + goto $bb156; +$bb163: + assume ($i273 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 11} true; + assume {:verifier.code 0} true; + $i275 := $slt.i32($i271, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i275} true; + goto $bb166, $bb168; +$bb164: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 259, 7} true; + assume {:verifier.code 0} true; + assume !(($i273 == 1)); + goto $bb165; +$bb165: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 264, 7} true; + assume {:verifier.code 0} true; + $i279 := $sext.i32.i64($i267); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 264, 9} true; + assume {:verifier.code 0} true; + $i280 := $srem.i64($i279, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 264, 7} true; + assume {:verifier.code 0} true; + $i281 := $trunc.i64.i32($i280); + call {:cexpr "a"} boogie_si_record_i32($i281); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 265, 5} true; + assume {:verifier.code 0} true; + $i282 := $add.i32($i281, $i281); + call {:cexpr "a"} boogie_si_record_i32($i282); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 266, 7} true; + assume {:verifier.code 0} true; + $i283 := $sext.i32.i64($i271); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 266, 9} true; + assume {:verifier.code 0} true; + $i284 := $srem.i64($i283, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 266, 7} true; + assume {:verifier.code 0} true; + $i285 := $trunc.i64.i32($i284); + call {:cexpr "b"} boogie_si_record_i32($i285); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 267, 5} true; + assume {:verifier.code 0} true; + $i286 := $add.i32($i285, $i285); + call {:cexpr "b"} boogie_si_record_i32($i286); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 269, 5} true; + assume {:verifier.code 0} true; + $i287 := $add.i32($i274, $i274); + call {:cexpr "c"} boogie_si_record_i32($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 270, 9} true; + assume {:verifier.code 0} true; + $i288 := $slt.i32($i282, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 270, 7} true; + assume {:verifier.code 0} true; + $i289 := $i287; + assume {:branchcond $i288} true; + goto $bb172, $bb173; +$bb166: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 15} true; + assume {:verifier.code 0} true; + assume ($i275 == 1); + goto $bb167; +$bb167: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 261, 9} true; + assume {:verifier.code 0} true; + $i278 := $add.i32($i272, 1); + call {:cexpr "c"} boogie_si_record_i32($i278); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 262, 5} true; + assume {:verifier.code 0} true; + $i277 := $i278; + goto $bb171; +$bb168: + assume !(($i275 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 20} true; + assume {:verifier.code 0} true; + $i276 := $sgt.i32($i271, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 9} true; + assume {:verifier.code 0} true; + $i277 := $i272; + assume {:branchcond $i276} true; + goto $bb169, $bb170; +$bb169: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 9} true; + assume {:verifier.code 0} true; + assume ($i276 == 1); + goto $bb167; +$bb170: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 260, 9} true; + assume {:verifier.code 0} true; + assume !(($i276 == 1)); + goto $bb171; +$bb171: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 263, 3} true; + assume {:verifier.code 0} true; + $i274 := $i277; + goto $bb165; +$bb172: + assume ($i288 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 11} true; + assume {:verifier.code 0} true; + $i290 := $slt.i32($i286, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i290} true; + goto $bb175, $bb177; +$bb173: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 270, 7} true; + assume {:verifier.code 0} true; + assume !(($i288 == 1)); + goto $bb174; +$bb174: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 275, 7} true; + assume {:verifier.code 0} true; + $i294 := $sext.i32.i64($i282); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 275, 9} true; + assume {:verifier.code 0} true; + $i295 := $srem.i64($i294, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 275, 7} true; + assume {:verifier.code 0} true; + $i296 := $trunc.i64.i32($i295); + call {:cexpr "a"} boogie_si_record_i32($i296); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 276, 5} true; + assume {:verifier.code 0} true; + $i297 := $add.i32($i296, $i296); + call {:cexpr "a"} boogie_si_record_i32($i297); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 277, 7} true; + assume {:verifier.code 0} true; + $i298 := $sext.i32.i64($i286); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 277, 9} true; + assume {:verifier.code 0} true; + $i299 := $srem.i64($i298, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 277, 7} true; + assume {:verifier.code 0} true; + $i300 := $trunc.i64.i32($i299); + call {:cexpr "b"} boogie_si_record_i32($i300); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 278, 5} true; + assume {:verifier.code 0} true; + $i301 := $add.i32($i300, $i300); + call {:cexpr "b"} boogie_si_record_i32($i301); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 280, 5} true; + assume {:verifier.code 0} true; + $i302 := $add.i32($i289, $i289); + call {:cexpr "c"} boogie_si_record_i32($i302); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 281, 9} true; + assume {:verifier.code 0} true; + $i303 := $slt.i32($i297, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 281, 7} true; + assume {:verifier.code 0} true; + $i304 := $i302; + assume {:branchcond $i303} true; + goto $bb181, $bb182; +$bb175: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 15} true; + assume {:verifier.code 0} true; + assume ($i290 == 1); + goto $bb176; +$bb176: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 272, 9} true; + assume {:verifier.code 0} true; + $i293 := $add.i32($i287, 1); + call {:cexpr "c"} boogie_si_record_i32($i293); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 273, 5} true; + assume {:verifier.code 0} true; + $i292 := $i293; + goto $bb180; +$bb177: + assume !(($i290 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 20} true; + assume {:verifier.code 0} true; + $i291 := $sgt.i32($i286, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 9} true; + assume {:verifier.code 0} true; + $i292 := $i287; + assume {:branchcond $i291} true; + goto $bb178, $bb179; +$bb178: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 9} true; + assume {:verifier.code 0} true; + assume ($i291 == 1); + goto $bb176; +$bb179: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 271, 9} true; + assume {:verifier.code 0} true; + assume !(($i291 == 1)); + goto $bb180; +$bb180: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 274, 3} true; + assume {:verifier.code 0} true; + $i289 := $i292; + goto $bb174; +$bb181: + assume ($i303 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 11} true; + assume {:verifier.code 0} true; + $i305 := $slt.i32($i301, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i305} true; + goto $bb184, $bb186; +$bb182: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 281, 7} true; + assume {:verifier.code 0} true; + assume !(($i303 == 1)); + goto $bb183; +$bb183: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 286, 7} true; + assume {:verifier.code 0} true; + $i309 := $sext.i32.i64($i297); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 286, 9} true; + assume {:verifier.code 0} true; + $i310 := $srem.i64($i309, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 286, 7} true; + assume {:verifier.code 0} true; + $i311 := $trunc.i64.i32($i310); + call {:cexpr "a"} boogie_si_record_i32($i311); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 287, 5} true; + assume {:verifier.code 0} true; + $i312 := $add.i32($i311, $i311); + call {:cexpr "a"} boogie_si_record_i32($i312); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 288, 7} true; + assume {:verifier.code 0} true; + $i313 := $sext.i32.i64($i301); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 288, 9} true; + assume {:verifier.code 0} true; + $i314 := $srem.i64($i313, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 288, 7} true; + assume {:verifier.code 0} true; + $i315 := $trunc.i64.i32($i314); + call {:cexpr "b"} boogie_si_record_i32($i315); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 289, 5} true; + assume {:verifier.code 0} true; + $i316 := $add.i32($i315, $i315); + call {:cexpr "b"} boogie_si_record_i32($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 291, 5} true; + assume {:verifier.code 0} true; + $i317 := $add.i32($i304, $i304); + call {:cexpr "c"} boogie_si_record_i32($i317); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 292, 9} true; + assume {:verifier.code 0} true; + $i318 := $slt.i32($i312, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 292, 7} true; + assume {:verifier.code 0} true; + $i319 := $i317; + assume {:branchcond $i318} true; + goto $bb190, $bb191; +$bb184: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 15} true; + assume {:verifier.code 0} true; + assume ($i305 == 1); + goto $bb185; +$bb185: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 283, 9} true; + assume {:verifier.code 0} true; + $i308 := $add.i32($i302, 1); + call {:cexpr "c"} boogie_si_record_i32($i308); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 284, 5} true; + assume {:verifier.code 0} true; + $i307 := $i308; + goto $bb189; +$bb186: + assume !(($i305 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 20} true; + assume {:verifier.code 0} true; + $i306 := $sgt.i32($i301, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 9} true; + assume {:verifier.code 0} true; + $i307 := $i302; + assume {:branchcond $i306} true; + goto $bb187, $bb188; +$bb187: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 9} true; + assume {:verifier.code 0} true; + assume ($i306 == 1); + goto $bb185; +$bb188: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 282, 9} true; + assume {:verifier.code 0} true; + assume !(($i306 == 1)); + goto $bb189; +$bb189: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 285, 3} true; + assume {:verifier.code 0} true; + $i304 := $i307; + goto $bb183; +$bb190: + assume ($i318 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 11} true; + assume {:verifier.code 0} true; + $i320 := $slt.i32($i316, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i320} true; + goto $bb193, $bb195; +$bb191: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 292, 7} true; + assume {:verifier.code 0} true; + assume !(($i318 == 1)); + goto $bb192; +$bb192: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 297, 7} true; + assume {:verifier.code 0} true; + $i324 := $sext.i32.i64($i312); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 297, 9} true; + assume {:verifier.code 0} true; + $i325 := $srem.i64($i324, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 297, 7} true; + assume {:verifier.code 0} true; + $i326 := $trunc.i64.i32($i325); + call {:cexpr "a"} boogie_si_record_i32($i326); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 298, 5} true; + assume {:verifier.code 0} true; + $i327 := $add.i32($i326, $i326); + call {:cexpr "a"} boogie_si_record_i32($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 299, 7} true; + assume {:verifier.code 0} true; + $i328 := $sext.i32.i64($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 299, 9} true; + assume {:verifier.code 0} true; + $i329 := $srem.i64($i328, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 299, 7} true; + assume {:verifier.code 0} true; + $i330 := $trunc.i64.i32($i329); + call {:cexpr "b"} boogie_si_record_i32($i330); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 300, 5} true; + assume {:verifier.code 0} true; + $i331 := $add.i32($i330, $i330); + call {:cexpr "b"} boogie_si_record_i32($i331); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 302, 5} true; + assume {:verifier.code 0} true; + $i332 := $add.i32($i319, $i319); + call {:cexpr "c"} boogie_si_record_i32($i332); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 303, 9} true; + assume {:verifier.code 0} true; + $i333 := $slt.i32($i327, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 303, 7} true; + assume {:verifier.code 0} true; + $i334 := $i332; + assume {:branchcond $i333} true; + goto $bb199, $bb200; +$bb193: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 15} true; + assume {:verifier.code 0} true; + assume ($i320 == 1); + goto $bb194; +$bb194: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 294, 9} true; + assume {:verifier.code 0} true; + $i323 := $add.i32($i317, 1); + call {:cexpr "c"} boogie_si_record_i32($i323); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 295, 5} true; + assume {:verifier.code 0} true; + $i322 := $i323; + goto $bb198; +$bb195: + assume !(($i320 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 20} true; + assume {:verifier.code 0} true; + $i321 := $sgt.i32($i316, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 9} true; + assume {:verifier.code 0} true; + $i322 := $i317; + assume {:branchcond $i321} true; + goto $bb196, $bb197; +$bb196: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 9} true; + assume {:verifier.code 0} true; + assume ($i321 == 1); + goto $bb194; +$bb197: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 293, 9} true; + assume {:verifier.code 0} true; + assume !(($i321 == 1)); + goto $bb198; +$bb198: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 296, 3} true; + assume {:verifier.code 0} true; + $i319 := $i322; + goto $bb192; +$bb199: + assume ($i333 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 11} true; + assume {:verifier.code 0} true; + $i335 := $slt.i32($i331, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i335} true; + goto $bb202, $bb204; +$bb200: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 303, 7} true; + assume {:verifier.code 0} true; + assume !(($i333 == 1)); + goto $bb201; +$bb201: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 308, 7} true; + assume {:verifier.code 0} true; + $i339 := $sext.i32.i64($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 308, 9} true; + assume {:verifier.code 0} true; + $i340 := $srem.i64($i339, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 308, 7} true; + assume {:verifier.code 0} true; + $i341 := $trunc.i64.i32($i340); + call {:cexpr "a"} boogie_si_record_i32($i341); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 309, 5} true; + assume {:verifier.code 0} true; + $i342 := $add.i32($i341, $i341); + call {:cexpr "a"} boogie_si_record_i32($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 310, 7} true; + assume {:verifier.code 0} true; + $i343 := $sext.i32.i64($i331); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 310, 9} true; + assume {:verifier.code 0} true; + $i344 := $srem.i64($i343, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 310, 7} true; + assume {:verifier.code 0} true; + $i345 := $trunc.i64.i32($i344); + call {:cexpr "b"} boogie_si_record_i32($i345); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 311, 5} true; + assume {:verifier.code 0} true; + $i346 := $add.i32($i345, $i345); + call {:cexpr "b"} boogie_si_record_i32($i346); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 313, 5} true; + assume {:verifier.code 0} true; + $i347 := $add.i32($i334, $i334); + call {:cexpr "c"} boogie_si_record_i32($i347); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 314, 9} true; + assume {:verifier.code 0} true; + $i348 := $slt.i32($i342, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 314, 7} true; + assume {:verifier.code 0} true; + $i349 := $i347; + assume {:branchcond $i348} true; + goto $bb208, $bb209; +$bb202: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 15} true; + assume {:verifier.code 0} true; + assume ($i335 == 1); + goto $bb203; +$bb203: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 305, 9} true; + assume {:verifier.code 0} true; + $i338 := $add.i32($i332, 1); + call {:cexpr "c"} boogie_si_record_i32($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 306, 5} true; + assume {:verifier.code 0} true; + $i337 := $i338; + goto $bb207; +$bb204: + assume !(($i335 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 20} true; + assume {:verifier.code 0} true; + $i336 := $sgt.i32($i331, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 9} true; + assume {:verifier.code 0} true; + $i337 := $i332; + assume {:branchcond $i336} true; + goto $bb205, $bb206; +$bb205: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 9} true; + assume {:verifier.code 0} true; + assume ($i336 == 1); + goto $bb203; +$bb206: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 304, 9} true; + assume {:verifier.code 0} true; + assume !(($i336 == 1)); + goto $bb207; +$bb207: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 307, 3} true; + assume {:verifier.code 0} true; + $i334 := $i337; + goto $bb201; +$bb208: + assume ($i348 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 11} true; + assume {:verifier.code 0} true; + $i350 := $slt.i32($i346, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i350} true; + goto $bb211, $bb213; +$bb209: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 314, 7} true; + assume {:verifier.code 0} true; + assume !(($i348 == 1)); + goto $bb210; +$bb210: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 319, 7} true; + assume {:verifier.code 0} true; + $i354 := $sext.i32.i64($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 319, 9} true; + assume {:verifier.code 0} true; + $i355 := $srem.i64($i354, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 319, 7} true; + assume {:verifier.code 0} true; + $i356 := $trunc.i64.i32($i355); + call {:cexpr "a"} boogie_si_record_i32($i356); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 320, 5} true; + assume {:verifier.code 0} true; + $i357 := $add.i32($i356, $i356); + call {:cexpr "a"} boogie_si_record_i32($i357); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 321, 7} true; + assume {:verifier.code 0} true; + $i358 := $sext.i32.i64($i346); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 321, 9} true; + assume {:verifier.code 0} true; + $i359 := $srem.i64($i358, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 321, 7} true; + assume {:verifier.code 0} true; + $i360 := $trunc.i64.i32($i359); + call {:cexpr "b"} boogie_si_record_i32($i360); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 322, 5} true; + assume {:verifier.code 0} true; + $i361 := $add.i32($i360, $i360); + call {:cexpr "b"} boogie_si_record_i32($i361); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 324, 5} true; + assume {:verifier.code 0} true; + $i362 := $add.i32($i349, $i349); + call {:cexpr "c"} boogie_si_record_i32($i362); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 325, 9} true; + assume {:verifier.code 0} true; + $i363 := $slt.i32($i357, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 325, 7} true; + assume {:verifier.code 0} true; + $i364 := $i362; + assume {:branchcond $i363} true; + goto $bb217, $bb218; +$bb211: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 15} true; + assume {:verifier.code 0} true; + assume ($i350 == 1); + goto $bb212; +$bb212: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 316, 9} true; + assume {:verifier.code 0} true; + $i353 := $add.i32($i347, 1); + call {:cexpr "c"} boogie_si_record_i32($i353); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 317, 5} true; + assume {:verifier.code 0} true; + $i352 := $i353; + goto $bb216; +$bb213: + assume !(($i350 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 20} true; + assume {:verifier.code 0} true; + $i351 := $sgt.i32($i346, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 9} true; + assume {:verifier.code 0} true; + $i352 := $i347; + assume {:branchcond $i351} true; + goto $bb214, $bb215; +$bb214: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 9} true; + assume {:verifier.code 0} true; + assume ($i351 == 1); + goto $bb212; +$bb215: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 315, 9} true; + assume {:verifier.code 0} true; + assume !(($i351 == 1)); + goto $bb216; +$bb216: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 318, 3} true; + assume {:verifier.code 0} true; + $i349 := $i352; + goto $bb210; +$bb217: + assume ($i363 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 11} true; + assume {:verifier.code 0} true; + $i365 := $slt.i32($i361, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i365} true; + goto $bb220, $bb222; +$bb218: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 325, 7} true; + assume {:verifier.code 0} true; + assume !(($i363 == 1)); + goto $bb219; +$bb219: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 330, 7} true; + assume {:verifier.code 0} true; + $i369 := $sext.i32.i64($i357); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 330, 9} true; + assume {:verifier.code 0} true; + $i370 := $srem.i64($i369, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 330, 7} true; + assume {:verifier.code 0} true; + $i371 := $trunc.i64.i32($i370); + call {:cexpr "a"} boogie_si_record_i32($i371); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 331, 5} true; + assume {:verifier.code 0} true; + $i372 := $add.i32($i371, $i371); + call {:cexpr "a"} boogie_si_record_i32($i372); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 332, 7} true; + assume {:verifier.code 0} true; + $i373 := $sext.i32.i64($i361); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 332, 9} true; + assume {:verifier.code 0} true; + $i374 := $srem.i64($i373, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 332, 7} true; + assume {:verifier.code 0} true; + $i375 := $trunc.i64.i32($i374); + call {:cexpr "b"} boogie_si_record_i32($i375); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 333, 5} true; + assume {:verifier.code 0} true; + $i376 := $add.i32($i375, $i375); + call {:cexpr "b"} boogie_si_record_i32($i376); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 335, 5} true; + assume {:verifier.code 0} true; + $i377 := $add.i32($i364, $i364); + call {:cexpr "c"} boogie_si_record_i32($i377); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 336, 9} true; + assume {:verifier.code 0} true; + $i378 := $slt.i32($i372, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 336, 7} true; + assume {:verifier.code 0} true; + $i379 := $i377; + assume {:branchcond $i378} true; + goto $bb226, $bb227; +$bb220: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 15} true; + assume {:verifier.code 0} true; + assume ($i365 == 1); + goto $bb221; +$bb221: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 327, 9} true; + assume {:verifier.code 0} true; + $i368 := $add.i32($i362, 1); + call {:cexpr "c"} boogie_si_record_i32($i368); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 328, 5} true; + assume {:verifier.code 0} true; + $i367 := $i368; + goto $bb225; +$bb222: + assume !(($i365 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 20} true; + assume {:verifier.code 0} true; + $i366 := $sgt.i32($i361, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 9} true; + assume {:verifier.code 0} true; + $i367 := $i362; + assume {:branchcond $i366} true; + goto $bb223, $bb224; +$bb223: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 9} true; + assume {:verifier.code 0} true; + assume ($i366 == 1); + goto $bb221; +$bb224: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 326, 9} true; + assume {:verifier.code 0} true; + assume !(($i366 == 1)); + goto $bb225; +$bb225: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 329, 3} true; + assume {:verifier.code 0} true; + $i364 := $i367; + goto $bb219; +$bb226: + assume ($i378 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 11} true; + assume {:verifier.code 0} true; + $i380 := $slt.i32($i376, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i380} true; + goto $bb229, $bb231; +$bb227: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 336, 7} true; + assume {:verifier.code 0} true; + assume !(($i378 == 1)); + goto $bb228; +$bb228: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 341, 7} true; + assume {:verifier.code 0} true; + $i384 := $sext.i32.i64($i372); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 341, 9} true; + assume {:verifier.code 0} true; + $i385 := $srem.i64($i384, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 341, 7} true; + assume {:verifier.code 0} true; + $i386 := $trunc.i64.i32($i385); + call {:cexpr "a"} boogie_si_record_i32($i386); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 342, 5} true; + assume {:verifier.code 0} true; + $i387 := $add.i32($i386, $i386); + call {:cexpr "a"} boogie_si_record_i32($i387); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 343, 7} true; + assume {:verifier.code 0} true; + $i388 := $sext.i32.i64($i376); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 343, 9} true; + assume {:verifier.code 0} true; + $i389 := $srem.i64($i388, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 343, 7} true; + assume {:verifier.code 0} true; + $i390 := $trunc.i64.i32($i389); + call {:cexpr "b"} boogie_si_record_i32($i390); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 344, 5} true; + assume {:verifier.code 0} true; + $i391 := $add.i32($i390, $i390); + call {:cexpr "b"} boogie_si_record_i32($i391); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 346, 5} true; + assume {:verifier.code 0} true; + $i392 := $add.i32($i379, $i379); + call {:cexpr "c"} boogie_si_record_i32($i392); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 347, 9} true; + assume {:verifier.code 0} true; + $i393 := $slt.i32($i387, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 347, 7} true; + assume {:verifier.code 0} true; + $i394 := $i392; + assume {:branchcond $i393} true; + goto $bb235, $bb236; +$bb229: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 15} true; + assume {:verifier.code 0} true; + assume ($i380 == 1); + goto $bb230; +$bb230: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 338, 9} true; + assume {:verifier.code 0} true; + $i383 := $add.i32($i377, 1); + call {:cexpr "c"} boogie_si_record_i32($i383); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 339, 5} true; + assume {:verifier.code 0} true; + $i382 := $i383; + goto $bb234; +$bb231: + assume !(($i380 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 20} true; + assume {:verifier.code 0} true; + $i381 := $sgt.i32($i376, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 9} true; + assume {:verifier.code 0} true; + $i382 := $i377; + assume {:branchcond $i381} true; + goto $bb232, $bb233; +$bb232: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 9} true; + assume {:verifier.code 0} true; + assume ($i381 == 1); + goto $bb230; +$bb233: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 337, 9} true; + assume {:verifier.code 0} true; + assume !(($i381 == 1)); + goto $bb234; +$bb234: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 340, 3} true; + assume {:verifier.code 0} true; + $i379 := $i382; + goto $bb228; +$bb235: + assume ($i393 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 11} true; + assume {:verifier.code 0} true; + $i395 := $slt.i32($i391, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i395} true; + goto $bb238, $bb240; +$bb236: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 347, 7} true; + assume {:verifier.code 0} true; + assume !(($i393 == 1)); + goto $bb237; +$bb237: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 352, 7} true; + assume {:verifier.code 0} true; + $i399 := $sext.i32.i64($i387); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 352, 9} true; + assume {:verifier.code 0} true; + $i400 := $srem.i64($i399, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 352, 7} true; + assume {:verifier.code 0} true; + $i401 := $trunc.i64.i32($i400); + call {:cexpr "a"} boogie_si_record_i32($i401); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 353, 5} true; + assume {:verifier.code 0} true; + $i402 := $add.i32($i401, $i401); + call {:cexpr "a"} boogie_si_record_i32($i402); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 354, 7} true; + assume {:verifier.code 0} true; + $i403 := $sext.i32.i64($i391); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 354, 9} true; + assume {:verifier.code 0} true; + $i404 := $srem.i64($i403, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 354, 7} true; + assume {:verifier.code 0} true; + $i405 := $trunc.i64.i32($i404); + call {:cexpr "b"} boogie_si_record_i32($i405); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 355, 5} true; + assume {:verifier.code 0} true; + $i406 := $add.i32($i405, $i405); + call {:cexpr "b"} boogie_si_record_i32($i406); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 357, 5} true; + assume {:verifier.code 0} true; + $i407 := $add.i32($i394, $i394); + call {:cexpr "c"} boogie_si_record_i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 358, 9} true; + assume {:verifier.code 0} true; + $i408 := $slt.i32($i402, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 358, 7} true; + assume {:verifier.code 0} true; + $i409 := $i407; + assume {:branchcond $i408} true; + goto $bb244, $bb245; +$bb238: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 15} true; + assume {:verifier.code 0} true; + assume ($i395 == 1); + goto $bb239; +$bb239: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 349, 9} true; + assume {:verifier.code 0} true; + $i398 := $add.i32($i392, 1); + call {:cexpr "c"} boogie_si_record_i32($i398); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 350, 5} true; + assume {:verifier.code 0} true; + $i397 := $i398; + goto $bb243; +$bb240: + assume !(($i395 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 20} true; + assume {:verifier.code 0} true; + $i396 := $sgt.i32($i391, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 9} true; + assume {:verifier.code 0} true; + $i397 := $i392; + assume {:branchcond $i396} true; + goto $bb241, $bb242; +$bb241: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 9} true; + assume {:verifier.code 0} true; + assume ($i396 == 1); + goto $bb239; +$bb242: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 348, 9} true; + assume {:verifier.code 0} true; + assume !(($i396 == 1)); + goto $bb243; +$bb243: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 351, 3} true; + assume {:verifier.code 0} true; + $i394 := $i397; + goto $bb237; +$bb244: + assume ($i408 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 11} true; + assume {:verifier.code 0} true; + $i410 := $slt.i32($i406, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i410} true; + goto $bb247, $bb249; +$bb245: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 358, 7} true; + assume {:verifier.code 0} true; + assume !(($i408 == 1)); + goto $bb246; +$bb246: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 363, 7} true; + assume {:verifier.code 0} true; + $i414 := $sext.i32.i64($i402); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 363, 9} true; + assume {:verifier.code 0} true; + $i415 := $srem.i64($i414, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 363, 7} true; + assume {:verifier.code 0} true; + $i416 := $trunc.i64.i32($i415); + call {:cexpr "a"} boogie_si_record_i32($i416); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 364, 5} true; + assume {:verifier.code 0} true; + $i417 := $add.i32($i416, $i416); + call {:cexpr "a"} boogie_si_record_i32($i417); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 365, 7} true; + assume {:verifier.code 0} true; + $i418 := $sext.i32.i64($i406); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 365, 9} true; + assume {:verifier.code 0} true; + $i419 := $srem.i64($i418, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 365, 7} true; + assume {:verifier.code 0} true; + $i420 := $trunc.i64.i32($i419); + call {:cexpr "b"} boogie_si_record_i32($i420); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 366, 5} true; + assume {:verifier.code 0} true; + $i421 := $add.i32($i420, $i420); + call {:cexpr "b"} boogie_si_record_i32($i421); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 368, 5} true; + assume {:verifier.code 0} true; + $i422 := $add.i32($i409, $i409); + call {:cexpr "c"} boogie_si_record_i32($i422); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 369, 9} true; + assume {:verifier.code 0} true; + $i423 := $slt.i32($i417, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 369, 7} true; + assume {:verifier.code 0} true; + $i424 := $i422; + assume {:branchcond $i423} true; + goto $bb253, $bb254; +$bb247: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 15} true; + assume {:verifier.code 0} true; + assume ($i410 == 1); + goto $bb248; +$bb248: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 360, 9} true; + assume {:verifier.code 0} true; + $i413 := $add.i32($i407, 1); + call {:cexpr "c"} boogie_si_record_i32($i413); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 361, 5} true; + assume {:verifier.code 0} true; + $i412 := $i413; + goto $bb252; +$bb249: + assume !(($i410 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 20} true; + assume {:verifier.code 0} true; + $i411 := $sgt.i32($i406, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 9} true; + assume {:verifier.code 0} true; + $i412 := $i407; + assume {:branchcond $i411} true; + goto $bb250, $bb251; +$bb250: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 9} true; + assume {:verifier.code 0} true; + assume ($i411 == 1); + goto $bb248; +$bb251: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 359, 9} true; + assume {:verifier.code 0} true; + assume !(($i411 == 1)); + goto $bb252; +$bb252: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 362, 3} true; + assume {:verifier.code 0} true; + $i409 := $i412; + goto $bb246; +$bb253: + assume ($i423 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 11} true; + assume {:verifier.code 0} true; + $i425 := $slt.i32($i421, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i425} true; + goto $bb256, $bb258; +$bb254: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 369, 7} true; + assume {:verifier.code 0} true; + assume !(($i423 == 1)); + goto $bb255; +$bb255: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 374, 7} true; + assume {:verifier.code 0} true; + $i429 := $sext.i32.i64($i417); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 374, 9} true; + assume {:verifier.code 0} true; + $i430 := $srem.i64($i429, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 374, 7} true; + assume {:verifier.code 0} true; + $i431 := $trunc.i64.i32($i430); + call {:cexpr "a"} boogie_si_record_i32($i431); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 375, 5} true; + assume {:verifier.code 0} true; + $i432 := $add.i32($i431, $i431); + call {:cexpr "a"} boogie_si_record_i32($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 376, 7} true; + assume {:verifier.code 0} true; + $i433 := $sext.i32.i64($i421); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 376, 9} true; + assume {:verifier.code 0} true; + $i434 := $srem.i64($i433, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 376, 7} true; + assume {:verifier.code 0} true; + $i435 := $trunc.i64.i32($i434); + call {:cexpr "b"} boogie_si_record_i32($i435); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 377, 5} true; + assume {:verifier.code 0} true; + $i436 := $add.i32($i435, $i435); + call {:cexpr "b"} boogie_si_record_i32($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 379, 5} true; + assume {:verifier.code 0} true; + $i437 := $add.i32($i424, $i424); + call {:cexpr "c"} boogie_si_record_i32($i437); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 380, 9} true; + assume {:verifier.code 0} true; + $i438 := $slt.i32($i432, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 380, 7} true; + assume {:verifier.code 0} true; + $i439 := $i437; + assume {:branchcond $i438} true; + goto $bb262, $bb263; +$bb256: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 15} true; + assume {:verifier.code 0} true; + assume ($i425 == 1); + goto $bb257; +$bb257: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 371, 9} true; + assume {:verifier.code 0} true; + $i428 := $add.i32($i422, 1); + call {:cexpr "c"} boogie_si_record_i32($i428); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 372, 5} true; + assume {:verifier.code 0} true; + $i427 := $i428; + goto $bb261; +$bb258: + assume !(($i425 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 20} true; + assume {:verifier.code 0} true; + $i426 := $sgt.i32($i421, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 9} true; + assume {:verifier.code 0} true; + $i427 := $i422; + assume {:branchcond $i426} true; + goto $bb259, $bb260; +$bb259: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 9} true; + assume {:verifier.code 0} true; + assume ($i426 == 1); + goto $bb257; +$bb260: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 370, 9} true; + assume {:verifier.code 0} true; + assume !(($i426 == 1)); + goto $bb261; +$bb261: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 373, 3} true; + assume {:verifier.code 0} true; + $i424 := $i427; + goto $bb255; +$bb262: + assume ($i438 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 11} true; + assume {:verifier.code 0} true; + $i440 := $slt.i32($i436, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i440} true; + goto $bb265, $bb267; +$bb263: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 380, 7} true; + assume {:verifier.code 0} true; + assume !(($i438 == 1)); + goto $bb264; +$bb264: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 385, 7} true; + assume {:verifier.code 0} true; + $i444 := $sext.i32.i64($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 385, 9} true; + assume {:verifier.code 0} true; + $i445 := $srem.i64($i444, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 385, 7} true; + assume {:verifier.code 0} true; + $i446 := $trunc.i64.i32($i445); + call {:cexpr "a"} boogie_si_record_i32($i446); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 386, 5} true; + assume {:verifier.code 0} true; + $i447 := $add.i32($i446, $i446); + call {:cexpr "a"} boogie_si_record_i32($i447); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 387, 7} true; + assume {:verifier.code 0} true; + $i448 := $sext.i32.i64($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 387, 9} true; + assume {:verifier.code 0} true; + $i449 := $srem.i64($i448, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 387, 7} true; + assume {:verifier.code 0} true; + $i450 := $trunc.i64.i32($i449); + call {:cexpr "b"} boogie_si_record_i32($i450); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 388, 5} true; + assume {:verifier.code 0} true; + $i451 := $add.i32($i450, $i450); + call {:cexpr "b"} boogie_si_record_i32($i451); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 390, 5} true; + assume {:verifier.code 0} true; + $i452 := $add.i32($i439, $i439); + call {:cexpr "c"} boogie_si_record_i32($i452); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 391, 9} true; + assume {:verifier.code 0} true; + $i453 := $slt.i32($i447, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 391, 7} true; + assume {:verifier.code 0} true; + $i454 := $i452; + assume {:branchcond $i453} true; + goto $bb271, $bb272; +$bb265: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 15} true; + assume {:verifier.code 0} true; + assume ($i440 == 1); + goto $bb266; +$bb266: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 382, 9} true; + assume {:verifier.code 0} true; + $i443 := $add.i32($i437, 1); + call {:cexpr "c"} boogie_si_record_i32($i443); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 383, 5} true; + assume {:verifier.code 0} true; + $i442 := $i443; + goto $bb270; +$bb267: + assume !(($i440 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 20} true; + assume {:verifier.code 0} true; + $i441 := $sgt.i32($i436, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 9} true; + assume {:verifier.code 0} true; + $i442 := $i437; + assume {:branchcond $i441} true; + goto $bb268, $bb269; +$bb268: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 9} true; + assume {:verifier.code 0} true; + assume ($i441 == 1); + goto $bb266; +$bb269: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 381, 9} true; + assume {:verifier.code 0} true; + assume !(($i441 == 1)); + goto $bb270; +$bb270: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 384, 3} true; + assume {:verifier.code 0} true; + $i439 := $i442; + goto $bb264; +$bb271: + assume ($i453 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 11} true; + assume {:verifier.code 0} true; + $i455 := $slt.i32($i451, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i455} true; + goto $bb274, $bb276; +$bb272: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 391, 7} true; + assume {:verifier.code 0} true; + assume !(($i453 == 1)); + goto $bb273; +$bb273: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 396, 7} true; + assume {:verifier.code 0} true; + $i459 := $sext.i32.i64($i447); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 396, 9} true; + assume {:verifier.code 0} true; + $i460 := $srem.i64($i459, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 396, 7} true; + assume {:verifier.code 0} true; + $i461 := $trunc.i64.i32($i460); + call {:cexpr "a"} boogie_si_record_i32($i461); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 397, 5} true; + assume {:verifier.code 0} true; + $i462 := $add.i32($i461, $i461); + call {:cexpr "a"} boogie_si_record_i32($i462); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 398, 7} true; + assume {:verifier.code 0} true; + $i463 := $sext.i32.i64($i451); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 398, 9} true; + assume {:verifier.code 0} true; + $i464 := $srem.i64($i463, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 398, 7} true; + assume {:verifier.code 0} true; + $i465 := $trunc.i64.i32($i464); + call {:cexpr "b"} boogie_si_record_i32($i465); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 399, 5} true; + assume {:verifier.code 0} true; + $i466 := $add.i32($i465, $i465); + call {:cexpr "b"} boogie_si_record_i32($i466); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 401, 5} true; + assume {:verifier.code 0} true; + $i467 := $add.i32($i454, $i454); + call {:cexpr "c"} boogie_si_record_i32($i467); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 402, 9} true; + assume {:verifier.code 0} true; + $i468 := $slt.i32($i462, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 402, 7} true; + assume {:verifier.code 0} true; + $i469 := $i467; + assume {:branchcond $i468} true; + goto $bb280, $bb281; +$bb274: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 15} true; + assume {:verifier.code 0} true; + assume ($i455 == 1); + goto $bb275; +$bb275: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 393, 9} true; + assume {:verifier.code 0} true; + $i458 := $add.i32($i452, 1); + call {:cexpr "c"} boogie_si_record_i32($i458); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 394, 5} true; + assume {:verifier.code 0} true; + $i457 := $i458; + goto $bb279; +$bb276: + assume !(($i455 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 20} true; + assume {:verifier.code 0} true; + $i456 := $sgt.i32($i451, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 9} true; + assume {:verifier.code 0} true; + $i457 := $i452; + assume {:branchcond $i456} true; + goto $bb277, $bb278; +$bb277: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 9} true; + assume {:verifier.code 0} true; + assume ($i456 == 1); + goto $bb275; +$bb278: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 392, 9} true; + assume {:verifier.code 0} true; + assume !(($i456 == 1)); + goto $bb279; +$bb279: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 395, 3} true; + assume {:verifier.code 0} true; + $i454 := $i457; + goto $bb273; +$bb280: + assume ($i468 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 11} true; + assume {:verifier.code 0} true; + $i470 := $slt.i32($i466, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i470} true; + goto $bb283, $bb285; +$bb281: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 402, 7} true; + assume {:verifier.code 0} true; + assume !(($i468 == 1)); + goto $bb282; +$bb282: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 407, 7} true; + assume {:verifier.code 0} true; + $i474 := $sext.i32.i64($i462); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 407, 9} true; + assume {:verifier.code 0} true; + $i475 := $srem.i64($i474, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 407, 7} true; + assume {:verifier.code 0} true; + $i476 := $trunc.i64.i32($i475); + call {:cexpr "a"} boogie_si_record_i32($i476); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 408, 5} true; + assume {:verifier.code 0} true; + $i477 := $add.i32($i476, $i476); + call {:cexpr "a"} boogie_si_record_i32($i477); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 409, 7} true; + assume {:verifier.code 0} true; + $i478 := $sext.i32.i64($i466); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 409, 9} true; + assume {:verifier.code 0} true; + $i479 := $srem.i64($i478, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 409, 7} true; + assume {:verifier.code 0} true; + $i480 := $trunc.i64.i32($i479); + call {:cexpr "b"} boogie_si_record_i32($i480); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 410, 5} true; + assume {:verifier.code 0} true; + $i481 := $add.i32($i480, $i480); + call {:cexpr "b"} boogie_si_record_i32($i481); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 412, 5} true; + assume {:verifier.code 0} true; + $i482 := $add.i32($i469, $i469); + call {:cexpr "c"} boogie_si_record_i32($i482); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 413, 9} true; + assume {:verifier.code 0} true; + $i483 := $slt.i32($i477, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 413, 7} true; + assume {:verifier.code 0} true; + $i484 := $i482; + assume {:branchcond $i483} true; + goto $bb289, $bb290; +$bb283: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 15} true; + assume {:verifier.code 0} true; + assume ($i470 == 1); + goto $bb284; +$bb284: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 404, 9} true; + assume {:verifier.code 0} true; + $i473 := $add.i32($i467, 1); + call {:cexpr "c"} boogie_si_record_i32($i473); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 405, 5} true; + assume {:verifier.code 0} true; + $i472 := $i473; + goto $bb288; +$bb285: + assume !(($i470 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 20} true; + assume {:verifier.code 0} true; + $i471 := $sgt.i32($i466, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 9} true; + assume {:verifier.code 0} true; + $i472 := $i467; + assume {:branchcond $i471} true; + goto $bb286, $bb287; +$bb286: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 9} true; + assume {:verifier.code 0} true; + assume ($i471 == 1); + goto $bb284; +$bb287: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 403, 9} true; + assume {:verifier.code 0} true; + assume !(($i471 == 1)); + goto $bb288; +$bb288: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 406, 3} true; + assume {:verifier.code 0} true; + $i469 := $i472; + goto $bb282; +$bb289: + assume ($i483 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 11} true; + assume {:verifier.code 0} true; + $i485 := $slt.i32($i481, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i485} true; + goto $bb292, $bb294; +$bb290: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 413, 7} true; + assume {:verifier.code 0} true; + assume !(($i483 == 1)); + goto $bb291; +$bb291: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 418, 7} true; + assume {:verifier.code 0} true; + $i489 := $sext.i32.i64($i477); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 418, 9} true; + assume {:verifier.code 0} true; + $i490 := $srem.i64($i489, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 418, 7} true; + assume {:verifier.code 0} true; + $i491 := $trunc.i64.i32($i490); + call {:cexpr "a"} boogie_si_record_i32($i491); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 419, 5} true; + assume {:verifier.code 0} true; + $i492 := $add.i32($i491, $i491); + call {:cexpr "a"} boogie_si_record_i32($i492); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 420, 7} true; + assume {:verifier.code 0} true; + $i493 := $sext.i32.i64($i481); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 420, 9} true; + assume {:verifier.code 0} true; + $i494 := $srem.i64($i493, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 420, 7} true; + assume {:verifier.code 0} true; + $i495 := $trunc.i64.i32($i494); + call {:cexpr "b"} boogie_si_record_i32($i495); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 421, 5} true; + assume {:verifier.code 0} true; + $i496 := $add.i32($i495, $i495); + call {:cexpr "b"} boogie_si_record_i32($i496); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 423, 5} true; + assume {:verifier.code 0} true; + $i497 := $add.i32($i484, $i484); + call {:cexpr "c"} boogie_si_record_i32($i497); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 424, 9} true; + assume {:verifier.code 0} true; + $i498 := $slt.i32($i492, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 424, 7} true; + assume {:verifier.code 0} true; + $i499 := $i497; + assume {:branchcond $i498} true; + goto $bb298, $bb299; +$bb292: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 15} true; + assume {:verifier.code 0} true; + assume ($i485 == 1); + goto $bb293; +$bb293: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 415, 9} true; + assume {:verifier.code 0} true; + $i488 := $add.i32($i482, 1); + call {:cexpr "c"} boogie_si_record_i32($i488); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 416, 5} true; + assume {:verifier.code 0} true; + $i487 := $i488; + goto $bb297; +$bb294: + assume !(($i485 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 20} true; + assume {:verifier.code 0} true; + $i486 := $sgt.i32($i481, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 9} true; + assume {:verifier.code 0} true; + $i487 := $i482; + assume {:branchcond $i486} true; + goto $bb295, $bb296; +$bb295: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 9} true; + assume {:verifier.code 0} true; + assume ($i486 == 1); + goto $bb293; +$bb296: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 414, 9} true; + assume {:verifier.code 0} true; + assume !(($i486 == 1)); + goto $bb297; +$bb297: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 417, 3} true; + assume {:verifier.code 0} true; + $i484 := $i487; + goto $bb291; +$bb298: + assume ($i498 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 11} true; + assume {:verifier.code 0} true; + $i500 := $slt.i32($i496, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i500} true; + goto $bb301, $bb303; +$bb299: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 424, 7} true; + assume {:verifier.code 0} true; + assume !(($i498 == 1)); + goto $bb300; +$bb300: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 429, 7} true; + assume {:verifier.code 0} true; + $i504 := $sext.i32.i64($i492); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 429, 9} true; + assume {:verifier.code 0} true; + $i505 := $srem.i64($i504, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 429, 7} true; + assume {:verifier.code 0} true; + $i506 := $trunc.i64.i32($i505); + call {:cexpr "a"} boogie_si_record_i32($i506); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 430, 5} true; + assume {:verifier.code 0} true; + $i507 := $add.i32($i506, $i506); + call {:cexpr "a"} boogie_si_record_i32($i507); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 431, 7} true; + assume {:verifier.code 0} true; + $i508 := $sext.i32.i64($i496); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 431, 9} true; + assume {:verifier.code 0} true; + $i509 := $srem.i64($i508, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 431, 7} true; + assume {:verifier.code 0} true; + $i510 := $trunc.i64.i32($i509); + call {:cexpr "b"} boogie_si_record_i32($i510); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 432, 5} true; + assume {:verifier.code 0} true; + $i511 := $add.i32($i510, $i510); + call {:cexpr "b"} boogie_si_record_i32($i511); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 434, 5} true; + assume {:verifier.code 0} true; + $i512 := $add.i32($i499, $i499); + call {:cexpr "c"} boogie_si_record_i32($i512); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 435, 9} true; + assume {:verifier.code 0} true; + $i513 := $slt.i32($i507, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 435, 7} true; + assume {:verifier.code 0} true; + $i514 := $i512; + assume {:branchcond $i513} true; + goto $bb307, $bb308; +$bb301: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 15} true; + assume {:verifier.code 0} true; + assume ($i500 == 1); + goto $bb302; +$bb302: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 426, 9} true; + assume {:verifier.code 0} true; + $i503 := $add.i32($i497, 1); + call {:cexpr "c"} boogie_si_record_i32($i503); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 427, 5} true; + assume {:verifier.code 0} true; + $i502 := $i503; + goto $bb306; +$bb303: + assume !(($i500 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 20} true; + assume {:verifier.code 0} true; + $i501 := $sgt.i32($i496, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 9} true; + assume {:verifier.code 0} true; + $i502 := $i497; + assume {:branchcond $i501} true; + goto $bb304, $bb305; +$bb304: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 9} true; + assume {:verifier.code 0} true; + assume ($i501 == 1); + goto $bb302; +$bb305: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 425, 9} true; + assume {:verifier.code 0} true; + assume !(($i501 == 1)); + goto $bb306; +$bb306: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 428, 3} true; + assume {:verifier.code 0} true; + $i499 := $i502; + goto $bb300; +$bb307: + assume ($i513 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 11} true; + assume {:verifier.code 0} true; + $i515 := $slt.i32($i511, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i515} true; + goto $bb310, $bb312; +$bb308: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 435, 7} true; + assume {:verifier.code 0} true; + assume !(($i513 == 1)); + goto $bb309; +$bb309: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 440, 7} true; + assume {:verifier.code 0} true; + $i519 := $sext.i32.i64($i507); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 440, 9} true; + assume {:verifier.code 0} true; + $i520 := $srem.i64($i519, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 440, 7} true; + assume {:verifier.code 0} true; + $i521 := $trunc.i64.i32($i520); + call {:cexpr "a"} boogie_si_record_i32($i521); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 441, 5} true; + assume {:verifier.code 0} true; + $i522 := $add.i32($i521, $i521); + call {:cexpr "a"} boogie_si_record_i32($i522); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 442, 7} true; + assume {:verifier.code 0} true; + $i523 := $sext.i32.i64($i511); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 442, 9} true; + assume {:verifier.code 0} true; + $i524 := $srem.i64($i523, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 442, 7} true; + assume {:verifier.code 0} true; + $i525 := $trunc.i64.i32($i524); + call {:cexpr "b"} boogie_si_record_i32($i525); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 443, 5} true; + assume {:verifier.code 0} true; + $i526 := $add.i32($i525, $i525); + call {:cexpr "b"} boogie_si_record_i32($i526); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 445, 5} true; + assume {:verifier.code 0} true; + $i527 := $add.i32($i514, $i514); + call {:cexpr "c"} boogie_si_record_i32($i527); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 446, 9} true; + assume {:verifier.code 0} true; + $i528 := $slt.i32($i522, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 446, 7} true; + assume {:verifier.code 0} true; + $i529 := $i527; + assume {:branchcond $i528} true; + goto $bb316, $bb317; +$bb310: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 15} true; + assume {:verifier.code 0} true; + assume ($i515 == 1); + goto $bb311; +$bb311: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 437, 9} true; + assume {:verifier.code 0} true; + $i518 := $add.i32($i512, 1); + call {:cexpr "c"} boogie_si_record_i32($i518); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 438, 5} true; + assume {:verifier.code 0} true; + $i517 := $i518; + goto $bb315; +$bb312: + assume !(($i515 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 20} true; + assume {:verifier.code 0} true; + $i516 := $sgt.i32($i511, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 9} true; + assume {:verifier.code 0} true; + $i517 := $i512; + assume {:branchcond $i516} true; + goto $bb313, $bb314; +$bb313: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 9} true; + assume {:verifier.code 0} true; + assume ($i516 == 1); + goto $bb311; +$bb314: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 436, 9} true; + assume {:verifier.code 0} true; + assume !(($i516 == 1)); + goto $bb315; +$bb315: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 439, 3} true; + assume {:verifier.code 0} true; + $i514 := $i517; + goto $bb309; +$bb316: + assume ($i528 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 11} true; + assume {:verifier.code 0} true; + $i530 := $slt.i32($i526, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i530} true; + goto $bb319, $bb321; +$bb317: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 446, 7} true; + assume {:verifier.code 0} true; + assume !(($i528 == 1)); + goto $bb318; +$bb318: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 451, 7} true; + assume {:verifier.code 0} true; + $i534 := $sext.i32.i64($i522); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 451, 9} true; + assume {:verifier.code 0} true; + $i535 := $srem.i64($i534, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 451, 7} true; + assume {:verifier.code 0} true; + $i536 := $trunc.i64.i32($i535); + call {:cexpr "a"} boogie_si_record_i32($i536); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 452, 5} true; + assume {:verifier.code 0} true; + $i537 := $add.i32($i536, $i536); + call {:cexpr "a"} boogie_si_record_i32($i537); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 453, 7} true; + assume {:verifier.code 0} true; + $i538 := $sext.i32.i64($i526); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 453, 9} true; + assume {:verifier.code 0} true; + $i539 := $srem.i64($i538, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 453, 7} true; + assume {:verifier.code 0} true; + $i540 := $trunc.i64.i32($i539); + call {:cexpr "b"} boogie_si_record_i32($i540); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 454, 5} true; + assume {:verifier.code 0} true; + $i541 := $add.i32($i540, $i540); + call {:cexpr "b"} boogie_si_record_i32($i541); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 456, 5} true; + assume {:verifier.code 0} true; + $i542 := $add.i32($i529, $i529); + call {:cexpr "c"} boogie_si_record_i32($i542); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 457, 9} true; + assume {:verifier.code 0} true; + $i543 := $slt.i32($i537, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 457, 7} true; + assume {:verifier.code 0} true; + $i544 := $i542; + assume {:branchcond $i543} true; + goto $bb325, $bb326; +$bb319: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 15} true; + assume {:verifier.code 0} true; + assume ($i530 == 1); + goto $bb320; +$bb320: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 448, 9} true; + assume {:verifier.code 0} true; + $i533 := $add.i32($i527, 1); + call {:cexpr "c"} boogie_si_record_i32($i533); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 449, 5} true; + assume {:verifier.code 0} true; + $i532 := $i533; + goto $bb324; +$bb321: + assume !(($i530 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 20} true; + assume {:verifier.code 0} true; + $i531 := $sgt.i32($i526, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 9} true; + assume {:verifier.code 0} true; + $i532 := $i527; + assume {:branchcond $i531} true; + goto $bb322, $bb323; +$bb322: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 9} true; + assume {:verifier.code 0} true; + assume ($i531 == 1); + goto $bb320; +$bb323: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 447, 9} true; + assume {:verifier.code 0} true; + assume !(($i531 == 1)); + goto $bb324; +$bb324: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 450, 3} true; + assume {:verifier.code 0} true; + $i529 := $i532; + goto $bb318; +$bb325: + assume ($i543 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 11} true; + assume {:verifier.code 0} true; + $i545 := $slt.i32($i541, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i545} true; + goto $bb328, $bb330; +$bb326: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 457, 7} true; + assume {:verifier.code 0} true; + assume !(($i543 == 1)); + goto $bb327; +$bb327: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 462, 7} true; + assume {:verifier.code 0} true; + $i549 := $sext.i32.i64($i537); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 462, 9} true; + assume {:verifier.code 0} true; + $i550 := $srem.i64($i549, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 462, 7} true; + assume {:verifier.code 0} true; + $i551 := $trunc.i64.i32($i550); + call {:cexpr "a"} boogie_si_record_i32($i551); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 463, 5} true; + assume {:verifier.code 0} true; + $i552 := $add.i32($i551, $i551); + call {:cexpr "a"} boogie_si_record_i32($i552); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 464, 7} true; + assume {:verifier.code 0} true; + $i553 := $sext.i32.i64($i541); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 464, 9} true; + assume {:verifier.code 0} true; + $i554 := $srem.i64($i553, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 464, 7} true; + assume {:verifier.code 0} true; + $i555 := $trunc.i64.i32($i554); + call {:cexpr "b"} boogie_si_record_i32($i555); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 465, 5} true; + assume {:verifier.code 0} true; + $i556 := $add.i32($i555, $i555); + call {:cexpr "b"} boogie_si_record_i32($i556); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 467, 5} true; + assume {:verifier.code 0} true; + $i557 := $add.i32($i544, $i544); + call {:cexpr "c"} boogie_si_record_i32($i557); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 468, 9} true; + assume {:verifier.code 0} true; + $i558 := $slt.i32($i552, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 468, 7} true; + assume {:verifier.code 0} true; + $i559 := $i557; + assume {:branchcond $i558} true; + goto $bb334, $bb335; +$bb328: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 15} true; + assume {:verifier.code 0} true; + assume ($i545 == 1); + goto $bb329; +$bb329: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 459, 9} true; + assume {:verifier.code 0} true; + $i548 := $add.i32($i542, 1); + call {:cexpr "c"} boogie_si_record_i32($i548); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 460, 5} true; + assume {:verifier.code 0} true; + $i547 := $i548; + goto $bb333; +$bb330: + assume !(($i545 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 20} true; + assume {:verifier.code 0} true; + $i546 := $sgt.i32($i541, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 9} true; + assume {:verifier.code 0} true; + $i547 := $i542; + assume {:branchcond $i546} true; + goto $bb331, $bb332; +$bb331: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 9} true; + assume {:verifier.code 0} true; + assume ($i546 == 1); + goto $bb329; +$bb332: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 458, 9} true; + assume {:verifier.code 0} true; + assume !(($i546 == 1)); + goto $bb333; +$bb333: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 461, 3} true; + assume {:verifier.code 0} true; + $i544 := $i547; + goto $bb327; +$bb334: + assume ($i558 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 11} true; + assume {:verifier.code 0} true; + $i560 := $slt.i32($i556, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i560} true; + goto $bb337, $bb339; +$bb335: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 468, 7} true; + assume {:verifier.code 0} true; + assume !(($i558 == 1)); + goto $bb336; +$bb336: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 473, 7} true; + assume {:verifier.code 0} true; + $i564 := $sext.i32.i64($i552); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 473, 9} true; + assume {:verifier.code 0} true; + $i565 := $srem.i64($i564, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 473, 7} true; + assume {:verifier.code 0} true; + $i566 := $trunc.i64.i32($i565); + call {:cexpr "a"} boogie_si_record_i32($i566); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 474, 5} true; + assume {:verifier.code 0} true; + $i567 := $add.i32($i566, $i566); + call {:cexpr "a"} boogie_si_record_i32($i567); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 475, 7} true; + assume {:verifier.code 0} true; + $i568 := $sext.i32.i64($i556); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 475, 9} true; + assume {:verifier.code 0} true; + $i569 := $srem.i64($i568, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 475, 7} true; + assume {:verifier.code 0} true; + $i570 := $trunc.i64.i32($i569); + call {:cexpr "b"} boogie_si_record_i32($i570); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 476, 5} true; + assume {:verifier.code 0} true; + $i571 := $add.i32($i570, $i570); + call {:cexpr "b"} boogie_si_record_i32($i571); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 478, 5} true; + assume {:verifier.code 0} true; + $i572 := $add.i32($i559, $i559); + call {:cexpr "c"} boogie_si_record_i32($i572); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 479, 9} true; + assume {:verifier.code 0} true; + $i573 := $slt.i32($i567, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 479, 7} true; + assume {:verifier.code 0} true; + $i574 := $i572; + assume {:branchcond $i573} true; + goto $bb343, $bb344; +$bb337: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 15} true; + assume {:verifier.code 0} true; + assume ($i560 == 1); + goto $bb338; +$bb338: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 470, 9} true; + assume {:verifier.code 0} true; + $i563 := $add.i32($i557, 1); + call {:cexpr "c"} boogie_si_record_i32($i563); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 471, 5} true; + assume {:verifier.code 0} true; + $i562 := $i563; + goto $bb342; +$bb339: + assume !(($i560 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 20} true; + assume {:verifier.code 0} true; + $i561 := $sgt.i32($i556, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 9} true; + assume {:verifier.code 0} true; + $i562 := $i557; + assume {:branchcond $i561} true; + goto $bb340, $bb341; +$bb340: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 9} true; + assume {:verifier.code 0} true; + assume ($i561 == 1); + goto $bb338; +$bb341: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 469, 9} true; + assume {:verifier.code 0} true; + assume !(($i561 == 1)); + goto $bb342; +$bb342: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 472, 3} true; + assume {:verifier.code 0} true; + $i559 := $i562; + goto $bb336; +$bb343: + assume ($i573 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 11} true; + assume {:verifier.code 0} true; + $i575 := $slt.i32($i571, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i575} true; + goto $bb346, $bb348; +$bb344: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 479, 7} true; + assume {:verifier.code 0} true; + assume !(($i573 == 1)); + goto $bb345; +$bb345: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 484, 7} true; + assume {:verifier.code 0} true; + $i579 := $sext.i32.i64($i567); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 484, 9} true; + assume {:verifier.code 0} true; + $i580 := $srem.i64($i579, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 484, 7} true; + assume {:verifier.code 0} true; + $i581 := $trunc.i64.i32($i580); + call {:cexpr "a"} boogie_si_record_i32($i581); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 485, 5} true; + assume {:verifier.code 0} true; + $i582 := $add.i32($i581, $i581); + call {:cexpr "a"} boogie_si_record_i32($i582); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 486, 7} true; + assume {:verifier.code 0} true; + $i583 := $sext.i32.i64($i571); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 486, 9} true; + assume {:verifier.code 0} true; + $i584 := $srem.i64($i583, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 486, 7} true; + assume {:verifier.code 0} true; + $i585 := $trunc.i64.i32($i584); + call {:cexpr "b"} boogie_si_record_i32($i585); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 487, 5} true; + assume {:verifier.code 0} true; + $i586 := $add.i32($i585, $i585); + call {:cexpr "b"} boogie_si_record_i32($i586); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 489, 5} true; + assume {:verifier.code 0} true; + $i587 := $add.i32($i574, $i574); + call {:cexpr "c"} boogie_si_record_i32($i587); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 490, 9} true; + assume {:verifier.code 0} true; + $i588 := $slt.i32($i582, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 490, 7} true; + assume {:verifier.code 0} true; + $i589 := $i587; + assume {:branchcond $i588} true; + goto $bb352, $bb353; +$bb346: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 15} true; + assume {:verifier.code 0} true; + assume ($i575 == 1); + goto $bb347; +$bb347: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 481, 9} true; + assume {:verifier.code 0} true; + $i578 := $add.i32($i572, 1); + call {:cexpr "c"} boogie_si_record_i32($i578); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 482, 5} true; + assume {:verifier.code 0} true; + $i577 := $i578; + goto $bb351; +$bb348: + assume !(($i575 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 20} true; + assume {:verifier.code 0} true; + $i576 := $sgt.i32($i571, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 9} true; + assume {:verifier.code 0} true; + $i577 := $i572; + assume {:branchcond $i576} true; + goto $bb349, $bb350; +$bb349: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 9} true; + assume {:verifier.code 0} true; + assume ($i576 == 1); + goto $bb347; +$bb350: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 480, 9} true; + assume {:verifier.code 0} true; + assume !(($i576 == 1)); + goto $bb351; +$bb351: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 483, 3} true; + assume {:verifier.code 0} true; + $i574 := $i577; + goto $bb345; +$bb352: + assume ($i588 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 11} true; + assume {:verifier.code 0} true; + $i590 := $slt.i32($i586, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i590} true; + goto $bb355, $bb357; +$bb353: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 490, 7} true; + assume {:verifier.code 0} true; + assume !(($i588 == 1)); + goto $bb354; +$bb354: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 495, 7} true; + assume {:verifier.code 0} true; + $i594 := $sext.i32.i64($i582); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 495, 9} true; + assume {:verifier.code 0} true; + $i595 := $srem.i64($i594, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 495, 7} true; + assume {:verifier.code 0} true; + $i596 := $trunc.i64.i32($i595); + call {:cexpr "a"} boogie_si_record_i32($i596); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 496, 5} true; + assume {:verifier.code 0} true; + $i597 := $add.i32($i596, $i596); + call {:cexpr "a"} boogie_si_record_i32($i597); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 497, 7} true; + assume {:verifier.code 0} true; + $i598 := $sext.i32.i64($i586); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 497, 9} true; + assume {:verifier.code 0} true; + $i599 := $srem.i64($i598, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 497, 7} true; + assume {:verifier.code 0} true; + $i600 := $trunc.i64.i32($i599); + call {:cexpr "b"} boogie_si_record_i32($i600); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 498, 5} true; + assume {:verifier.code 0} true; + $i601 := $add.i32($i600, $i600); + call {:cexpr "b"} boogie_si_record_i32($i601); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 500, 5} true; + assume {:verifier.code 0} true; + $i602 := $add.i32($i589, $i589); + call {:cexpr "c"} boogie_si_record_i32($i602); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 501, 9} true; + assume {:verifier.code 0} true; + $i603 := $slt.i32($i597, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 501, 7} true; + assume {:verifier.code 0} true; + $i604 := $i602; + assume {:branchcond $i603} true; + goto $bb361, $bb362; +$bb355: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 15} true; + assume {:verifier.code 0} true; + assume ($i590 == 1); + goto $bb356; +$bb356: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 492, 9} true; + assume {:verifier.code 0} true; + $i593 := $add.i32($i587, 1); + call {:cexpr "c"} boogie_si_record_i32($i593); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 493, 5} true; + assume {:verifier.code 0} true; + $i592 := $i593; + goto $bb360; +$bb357: + assume !(($i590 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 20} true; + assume {:verifier.code 0} true; + $i591 := $sgt.i32($i586, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 9} true; + assume {:verifier.code 0} true; + $i592 := $i587; + assume {:branchcond $i591} true; + goto $bb358, $bb359; +$bb358: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 9} true; + assume {:verifier.code 0} true; + assume ($i591 == 1); + goto $bb356; +$bb359: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 491, 9} true; + assume {:verifier.code 0} true; + assume !(($i591 == 1)); + goto $bb360; +$bb360: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 494, 3} true; + assume {:verifier.code 0} true; + $i589 := $i592; + goto $bb354; +$bb361: + assume ($i603 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 11} true; + assume {:verifier.code 0} true; + $i605 := $slt.i32($i601, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i605} true; + goto $bb364, $bb366; +$bb362: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 501, 7} true; + assume {:verifier.code 0} true; + assume !(($i603 == 1)); + goto $bb363; +$bb363: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 506, 7} true; + assume {:verifier.code 0} true; + $i609 := $sext.i32.i64($i597); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 506, 9} true; + assume {:verifier.code 0} true; + $i610 := $srem.i64($i609, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 506, 7} true; + assume {:verifier.code 0} true; + $i611 := $trunc.i64.i32($i610); + call {:cexpr "a"} boogie_si_record_i32($i611); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 507, 5} true; + assume {:verifier.code 0} true; + $i612 := $add.i32($i611, $i611); + call {:cexpr "a"} boogie_si_record_i32($i612); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 508, 7} true; + assume {:verifier.code 0} true; + $i613 := $sext.i32.i64($i601); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 508, 9} true; + assume {:verifier.code 0} true; + $i614 := $srem.i64($i613, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 508, 7} true; + assume {:verifier.code 0} true; + $i615 := $trunc.i64.i32($i614); + call {:cexpr "b"} boogie_si_record_i32($i615); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 509, 5} true; + assume {:verifier.code 0} true; + $i616 := $add.i32($i615, $i615); + call {:cexpr "b"} boogie_si_record_i32($i616); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 511, 5} true; + assume {:verifier.code 0} true; + $i617 := $add.i32($i604, $i604); + call {:cexpr "c"} boogie_si_record_i32($i617); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 512, 9} true; + assume {:verifier.code 0} true; + $i618 := $slt.i32($i612, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 512, 7} true; + assume {:verifier.code 0} true; + $i619 := $i617; + assume {:branchcond $i618} true; + goto $bb370, $bb371; +$bb364: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 15} true; + assume {:verifier.code 0} true; + assume ($i605 == 1); + goto $bb365; +$bb365: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 503, 9} true; + assume {:verifier.code 0} true; + $i608 := $add.i32($i602, 1); + call {:cexpr "c"} boogie_si_record_i32($i608); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 504, 5} true; + assume {:verifier.code 0} true; + $i607 := $i608; + goto $bb369; +$bb366: + assume !(($i605 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 20} true; + assume {:verifier.code 0} true; + $i606 := $sgt.i32($i601, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 9} true; + assume {:verifier.code 0} true; + $i607 := $i602; + assume {:branchcond $i606} true; + goto $bb367, $bb368; +$bb367: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 9} true; + assume {:verifier.code 0} true; + assume ($i606 == 1); + goto $bb365; +$bb368: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 502, 9} true; + assume {:verifier.code 0} true; + assume !(($i606 == 1)); + goto $bb369; +$bb369: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 505, 3} true; + assume {:verifier.code 0} true; + $i604 := $i607; + goto $bb363; +$bb370: + assume ($i618 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 11} true; + assume {:verifier.code 0} true; + $i620 := $slt.i32($i616, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i620} true; + goto $bb373, $bb375; +$bb371: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 512, 7} true; + assume {:verifier.code 0} true; + assume !(($i618 == 1)); + goto $bb372; +$bb372: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 517, 7} true; + assume {:verifier.code 0} true; + $i624 := $sext.i32.i64($i612); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 517, 9} true; + assume {:verifier.code 0} true; + $i625 := $srem.i64($i624, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 517, 7} true; + assume {:verifier.code 0} true; + $i626 := $trunc.i64.i32($i625); + call {:cexpr "a"} boogie_si_record_i32($i626); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 518, 5} true; + assume {:verifier.code 0} true; + $i627 := $add.i32($i626, $i626); + call {:cexpr "a"} boogie_si_record_i32($i627); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 519, 7} true; + assume {:verifier.code 0} true; + $i628 := $sext.i32.i64($i616); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 519, 9} true; + assume {:verifier.code 0} true; + $i629 := $srem.i64($i628, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 519, 7} true; + assume {:verifier.code 0} true; + $i630 := $trunc.i64.i32($i629); + call {:cexpr "b"} boogie_si_record_i32($i630); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 520, 5} true; + assume {:verifier.code 0} true; + $i631 := $add.i32($i630, $i630); + call {:cexpr "b"} boogie_si_record_i32($i631); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 522, 5} true; + assume {:verifier.code 0} true; + $i632 := $add.i32($i619, $i619); + call {:cexpr "c"} boogie_si_record_i32($i632); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 523, 9} true; + assume {:verifier.code 0} true; + $i633 := $slt.i32($i627, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 523, 7} true; + assume {:verifier.code 0} true; + $i634 := $i632; + assume {:branchcond $i633} true; + goto $bb379, $bb380; +$bb373: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 15} true; + assume {:verifier.code 0} true; + assume ($i620 == 1); + goto $bb374; +$bb374: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 514, 9} true; + assume {:verifier.code 0} true; + $i623 := $add.i32($i617, 1); + call {:cexpr "c"} boogie_si_record_i32($i623); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 515, 5} true; + assume {:verifier.code 0} true; + $i622 := $i623; + goto $bb378; +$bb375: + assume !(($i620 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 20} true; + assume {:verifier.code 0} true; + $i621 := $sgt.i32($i616, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 9} true; + assume {:verifier.code 0} true; + $i622 := $i617; + assume {:branchcond $i621} true; + goto $bb376, $bb377; +$bb376: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 9} true; + assume {:verifier.code 0} true; + assume ($i621 == 1); + goto $bb374; +$bb377: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 513, 9} true; + assume {:verifier.code 0} true; + assume !(($i621 == 1)); + goto $bb378; +$bb378: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 516, 3} true; + assume {:verifier.code 0} true; + $i619 := $i622; + goto $bb372; +$bb379: + assume ($i633 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 11} true; + assume {:verifier.code 0} true; + $i635 := $slt.i32($i631, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i635} true; + goto $bb382, $bb384; +$bb380: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 523, 7} true; + assume {:verifier.code 0} true; + assume !(($i633 == 1)); + goto $bb381; +$bb381: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 528, 7} true; + assume {:verifier.code 0} true; + $i639 := $sext.i32.i64($i627); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 528, 9} true; + assume {:verifier.code 0} true; + $i640 := $srem.i64($i639, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 528, 7} true; + assume {:verifier.code 0} true; + $i641 := $trunc.i64.i32($i640); + call {:cexpr "a"} boogie_si_record_i32($i641); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 529, 5} true; + assume {:verifier.code 0} true; + $i642 := $add.i32($i641, $i641); + call {:cexpr "a"} boogie_si_record_i32($i642); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 530, 7} true; + assume {:verifier.code 0} true; + $i643 := $sext.i32.i64($i631); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 530, 9} true; + assume {:verifier.code 0} true; + $i644 := $srem.i64($i643, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 530, 7} true; + assume {:verifier.code 0} true; + $i645 := $trunc.i64.i32($i644); + call {:cexpr "b"} boogie_si_record_i32($i645); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 531, 5} true; + assume {:verifier.code 0} true; + $i646 := $add.i32($i645, $i645); + call {:cexpr "b"} boogie_si_record_i32($i646); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 533, 5} true; + assume {:verifier.code 0} true; + $i647 := $add.i32($i634, $i634); + call {:cexpr "c"} boogie_si_record_i32($i647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 534, 9} true; + assume {:verifier.code 0} true; + $i648 := $slt.i32($i642, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 534, 7} true; + assume {:verifier.code 0} true; + $i649 := $i647; + assume {:branchcond $i648} true; + goto $bb388, $bb389; +$bb382: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 15} true; + assume {:verifier.code 0} true; + assume ($i635 == 1); + goto $bb383; +$bb383: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 525, 9} true; + assume {:verifier.code 0} true; + $i638 := $add.i32($i632, 1); + call {:cexpr "c"} boogie_si_record_i32($i638); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 526, 5} true; + assume {:verifier.code 0} true; + $i637 := $i638; + goto $bb387; +$bb384: + assume !(($i635 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 20} true; + assume {:verifier.code 0} true; + $i636 := $sgt.i32($i631, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 9} true; + assume {:verifier.code 0} true; + $i637 := $i632; + assume {:branchcond $i636} true; + goto $bb385, $bb386; +$bb385: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 9} true; + assume {:verifier.code 0} true; + assume ($i636 == 1); + goto $bb383; +$bb386: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 524, 9} true; + assume {:verifier.code 0} true; + assume !(($i636 == 1)); + goto $bb387; +$bb387: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 527, 3} true; + assume {:verifier.code 0} true; + $i634 := $i637; + goto $bb381; +$bb388: + assume ($i648 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 11} true; + assume {:verifier.code 0} true; + $i650 := $slt.i32($i646, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i650} true; + goto $bb391, $bb393; +$bb389: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 534, 7} true; + assume {:verifier.code 0} true; + assume !(($i648 == 1)); + goto $bb390; +$bb390: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 539, 7} true; + assume {:verifier.code 0} true; + $i654 := $sext.i32.i64($i642); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 539, 9} true; + assume {:verifier.code 0} true; + $i655 := $srem.i64($i654, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 539, 7} true; + assume {:verifier.code 0} true; + $i656 := $trunc.i64.i32($i655); + call {:cexpr "a"} boogie_si_record_i32($i656); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 540, 5} true; + assume {:verifier.code 0} true; + $i657 := $add.i32($i656, $i656); + call {:cexpr "a"} boogie_si_record_i32($i657); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 541, 7} true; + assume {:verifier.code 0} true; + $i658 := $sext.i32.i64($i646); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 541, 9} true; + assume {:verifier.code 0} true; + $i659 := $srem.i64($i658, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 541, 7} true; + assume {:verifier.code 0} true; + $i660 := $trunc.i64.i32($i659); + call {:cexpr "b"} boogie_si_record_i32($i660); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 542, 5} true; + assume {:verifier.code 0} true; + $i661 := $add.i32($i660, $i660); + call {:cexpr "b"} boogie_si_record_i32($i661); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 544, 5} true; + assume {:verifier.code 0} true; + $i662 := $add.i32($i649, $i649); + call {:cexpr "c"} boogie_si_record_i32($i662); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 545, 9} true; + assume {:verifier.code 0} true; + $i663 := $slt.i32($i657, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 545, 7} true; + assume {:verifier.code 0} true; + $i664 := $i662; + assume {:branchcond $i663} true; + goto $bb397, $bb398; +$bb391: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 15} true; + assume {:verifier.code 0} true; + assume ($i650 == 1); + goto $bb392; +$bb392: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 536, 9} true; + assume {:verifier.code 0} true; + $i653 := $add.i32($i647, 1); + call {:cexpr "c"} boogie_si_record_i32($i653); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 537, 5} true; + assume {:verifier.code 0} true; + $i652 := $i653; + goto $bb396; +$bb393: + assume !(($i650 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 20} true; + assume {:verifier.code 0} true; + $i651 := $sgt.i32($i646, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 9} true; + assume {:verifier.code 0} true; + $i652 := $i647; + assume {:branchcond $i651} true; + goto $bb394, $bb395; +$bb394: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 9} true; + assume {:verifier.code 0} true; + assume ($i651 == 1); + goto $bb392; +$bb395: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 535, 9} true; + assume {:verifier.code 0} true; + assume !(($i651 == 1)); + goto $bb396; +$bb396: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 538, 3} true; + assume {:verifier.code 0} true; + $i649 := $i652; + goto $bb390; +$bb397: + assume ($i663 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 11} true; + assume {:verifier.code 0} true; + $i665 := $slt.i32($i661, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i665} true; + goto $bb400, $bb402; +$bb398: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 545, 7} true; + assume {:verifier.code 0} true; + assume !(($i663 == 1)); + goto $bb399; +$bb399: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 550, 7} true; + assume {:verifier.code 0} true; + $i669 := $sext.i32.i64($i657); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 550, 9} true; + assume {:verifier.code 0} true; + $i670 := $srem.i64($i669, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 550, 7} true; + assume {:verifier.code 0} true; + $i671 := $trunc.i64.i32($i670); + call {:cexpr "a"} boogie_si_record_i32($i671); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 551, 5} true; + assume {:verifier.code 0} true; + $i672 := $add.i32($i671, $i671); + call {:cexpr "a"} boogie_si_record_i32($i672); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 552, 7} true; + assume {:verifier.code 0} true; + $i673 := $sext.i32.i64($i661); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 552, 9} true; + assume {:verifier.code 0} true; + $i674 := $srem.i64($i673, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 552, 7} true; + assume {:verifier.code 0} true; + $i675 := $trunc.i64.i32($i674); + call {:cexpr "b"} boogie_si_record_i32($i675); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 553, 5} true; + assume {:verifier.code 0} true; + $i676 := $add.i32($i675, $i675); + call {:cexpr "b"} boogie_si_record_i32($i676); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 555, 5} true; + assume {:verifier.code 0} true; + $i677 := $add.i32($i664, $i664); + call {:cexpr "c"} boogie_si_record_i32($i677); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 556, 9} true; + assume {:verifier.code 0} true; + $i678 := $slt.i32($i672, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 556, 7} true; + assume {:verifier.code 0} true; + $i679 := $i677; + assume {:branchcond $i678} true; + goto $bb406, $bb407; +$bb400: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 15} true; + assume {:verifier.code 0} true; + assume ($i665 == 1); + goto $bb401; +$bb401: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 547, 9} true; + assume {:verifier.code 0} true; + $i668 := $add.i32($i662, 1); + call {:cexpr "c"} boogie_si_record_i32($i668); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 548, 5} true; + assume {:verifier.code 0} true; + $i667 := $i668; + goto $bb405; +$bb402: + assume !(($i665 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 20} true; + assume {:verifier.code 0} true; + $i666 := $sgt.i32($i661, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 9} true; + assume {:verifier.code 0} true; + $i667 := $i662; + assume {:branchcond $i666} true; + goto $bb403, $bb404; +$bb403: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 9} true; + assume {:verifier.code 0} true; + assume ($i666 == 1); + goto $bb401; +$bb404: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 546, 9} true; + assume {:verifier.code 0} true; + assume !(($i666 == 1)); + goto $bb405; +$bb405: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 549, 3} true; + assume {:verifier.code 0} true; + $i664 := $i667; + goto $bb399; +$bb406: + assume ($i678 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 11} true; + assume {:verifier.code 0} true; + $i680 := $slt.i32($i676, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i680} true; + goto $bb409, $bb411; +$bb407: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 556, 7} true; + assume {:verifier.code 0} true; + assume !(($i678 == 1)); + goto $bb408; +$bb408: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 561, 7} true; + assume {:verifier.code 0} true; + $i684 := $sext.i32.i64($i672); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 561, 9} true; + assume {:verifier.code 0} true; + $i685 := $srem.i64($i684, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 561, 7} true; + assume {:verifier.code 0} true; + $i686 := $trunc.i64.i32($i685); + call {:cexpr "a"} boogie_si_record_i32($i686); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 562, 5} true; + assume {:verifier.code 0} true; + $i687 := $add.i32($i686, $i686); + call {:cexpr "a"} boogie_si_record_i32($i687); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 563, 7} true; + assume {:verifier.code 0} true; + $i688 := $sext.i32.i64($i676); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 563, 9} true; + assume {:verifier.code 0} true; + $i689 := $srem.i64($i688, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 563, 7} true; + assume {:verifier.code 0} true; + $i690 := $trunc.i64.i32($i689); + call {:cexpr "b"} boogie_si_record_i32($i690); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 564, 5} true; + assume {:verifier.code 0} true; + $i691 := $add.i32($i690, $i690); + call {:cexpr "b"} boogie_si_record_i32($i691); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 566, 5} true; + assume {:verifier.code 0} true; + $i692 := $add.i32($i679, $i679); + call {:cexpr "c"} boogie_si_record_i32($i692); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 567, 9} true; + assume {:verifier.code 0} true; + $i693 := $slt.i32($i687, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 567, 7} true; + assume {:verifier.code 0} true; + $i694 := $i692; + assume {:branchcond $i693} true; + goto $bb415, $bb416; +$bb409: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 15} true; + assume {:verifier.code 0} true; + assume ($i680 == 1); + goto $bb410; +$bb410: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 558, 9} true; + assume {:verifier.code 0} true; + $i683 := $add.i32($i677, 1); + call {:cexpr "c"} boogie_si_record_i32($i683); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 559, 5} true; + assume {:verifier.code 0} true; + $i682 := $i683; + goto $bb414; +$bb411: + assume !(($i680 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 20} true; + assume {:verifier.code 0} true; + $i681 := $sgt.i32($i676, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 9} true; + assume {:verifier.code 0} true; + $i682 := $i677; + assume {:branchcond $i681} true; + goto $bb412, $bb413; +$bb412: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 9} true; + assume {:verifier.code 0} true; + assume ($i681 == 1); + goto $bb410; +$bb413: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 557, 9} true; + assume {:verifier.code 0} true; + assume !(($i681 == 1)); + goto $bb414; +$bb414: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 560, 3} true; + assume {:verifier.code 0} true; + $i679 := $i682; + goto $bb408; +$bb415: + assume ($i693 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 11} true; + assume {:verifier.code 0} true; + $i695 := $slt.i32($i691, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i695} true; + goto $bb418, $bb420; +$bb416: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 567, 7} true; + assume {:verifier.code 0} true; + assume !(($i693 == 1)); + goto $bb417; +$bb417: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 572, 7} true; + assume {:verifier.code 0} true; + $i699 := $sext.i32.i64($i687); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 572, 9} true; + assume {:verifier.code 0} true; + $i700 := $srem.i64($i699, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 572, 7} true; + assume {:verifier.code 0} true; + $i701 := $trunc.i64.i32($i700); + call {:cexpr "a"} boogie_si_record_i32($i701); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 573, 5} true; + assume {:verifier.code 0} true; + $i702 := $add.i32($i701, $i701); + call {:cexpr "a"} boogie_si_record_i32($i702); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 574, 7} true; + assume {:verifier.code 0} true; + $i703 := $sext.i32.i64($i691); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 574, 9} true; + assume {:verifier.code 0} true; + $i704 := $srem.i64($i703, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 574, 7} true; + assume {:verifier.code 0} true; + $i705 := $trunc.i64.i32($i704); + call {:cexpr "b"} boogie_si_record_i32($i705); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 575, 5} true; + assume {:verifier.code 0} true; + $i706 := $add.i32($i705, $i705); + call {:cexpr "b"} boogie_si_record_i32($i706); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 577, 5} true; + assume {:verifier.code 0} true; + $i707 := $add.i32($i694, $i694); + call {:cexpr "c"} boogie_si_record_i32($i707); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 578, 9} true; + assume {:verifier.code 0} true; + $i708 := $slt.i32($i702, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 578, 7} true; + assume {:verifier.code 0} true; + $i709 := $i707; + assume {:branchcond $i708} true; + goto $bb424, $bb425; +$bb418: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 15} true; + assume {:verifier.code 0} true; + assume ($i695 == 1); + goto $bb419; +$bb419: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 569, 9} true; + assume {:verifier.code 0} true; + $i698 := $add.i32($i692, 1); + call {:cexpr "c"} boogie_si_record_i32($i698); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 570, 5} true; + assume {:verifier.code 0} true; + $i697 := $i698; + goto $bb423; +$bb420: + assume !(($i695 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 20} true; + assume {:verifier.code 0} true; + $i696 := $sgt.i32($i691, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 9} true; + assume {:verifier.code 0} true; + $i697 := $i692; + assume {:branchcond $i696} true; + goto $bb421, $bb422; +$bb421: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 9} true; + assume {:verifier.code 0} true; + assume ($i696 == 1); + goto $bb419; +$bb422: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 568, 9} true; + assume {:verifier.code 0} true; + assume !(($i696 == 1)); + goto $bb423; +$bb423: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 571, 3} true; + assume {:verifier.code 0} true; + $i694 := $i697; + goto $bb417; +$bb424: + assume ($i708 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 11} true; + assume {:verifier.code 0} true; + $i710 := $slt.i32($i706, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i710} true; + goto $bb427, $bb429; +$bb425: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 578, 7} true; + assume {:verifier.code 0} true; + assume !(($i708 == 1)); + goto $bb426; +$bb426: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 583, 7} true; + assume {:verifier.code 0} true; + $i714 := $sext.i32.i64($i702); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 583, 9} true; + assume {:verifier.code 0} true; + $i715 := $srem.i64($i714, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 583, 7} true; + assume {:verifier.code 0} true; + $i716 := $trunc.i64.i32($i715); + call {:cexpr "a"} boogie_si_record_i32($i716); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 584, 5} true; + assume {:verifier.code 0} true; + $i717 := $add.i32($i716, $i716); + call {:cexpr "a"} boogie_si_record_i32($i717); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 585, 7} true; + assume {:verifier.code 0} true; + $i718 := $sext.i32.i64($i706); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 585, 9} true; + assume {:verifier.code 0} true; + $i719 := $srem.i64($i718, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 585, 7} true; + assume {:verifier.code 0} true; + $i720 := $trunc.i64.i32($i719); + call {:cexpr "b"} boogie_si_record_i32($i720); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 586, 5} true; + assume {:verifier.code 0} true; + $i721 := $add.i32($i720, $i720); + call {:cexpr "b"} boogie_si_record_i32($i721); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 588, 5} true; + assume {:verifier.code 0} true; + $i722 := $add.i32($i709, $i709); + call {:cexpr "c"} boogie_si_record_i32($i722); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 589, 9} true; + assume {:verifier.code 0} true; + $i723 := $slt.i32($i717, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 589, 7} true; + assume {:verifier.code 0} true; + $i724 := $i722; + assume {:branchcond $i723} true; + goto $bb433, $bb434; +$bb427: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 15} true; + assume {:verifier.code 0} true; + assume ($i710 == 1); + goto $bb428; +$bb428: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 580, 9} true; + assume {:verifier.code 0} true; + $i713 := $add.i32($i707, 1); + call {:cexpr "c"} boogie_si_record_i32($i713); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 581, 5} true; + assume {:verifier.code 0} true; + $i712 := $i713; + goto $bb432; +$bb429: + assume !(($i710 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 20} true; + assume {:verifier.code 0} true; + $i711 := $sgt.i32($i706, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 9} true; + assume {:verifier.code 0} true; + $i712 := $i707; + assume {:branchcond $i711} true; + goto $bb430, $bb431; +$bb430: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 9} true; + assume {:verifier.code 0} true; + assume ($i711 == 1); + goto $bb428; +$bb431: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 579, 9} true; + assume {:verifier.code 0} true; + assume !(($i711 == 1)); + goto $bb432; +$bb432: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 582, 3} true; + assume {:verifier.code 0} true; + $i709 := $i712; + goto $bb426; +$bb433: + assume ($i723 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 11} true; + assume {:verifier.code 0} true; + $i725 := $slt.i32($i721, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i725} true; + goto $bb436, $bb438; +$bb434: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 589, 7} true; + assume {:verifier.code 0} true; + assume !(($i723 == 1)); + goto $bb435; +$bb435: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 594, 7} true; + assume {:verifier.code 0} true; + $i729 := $sext.i32.i64($i717); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 594, 9} true; + assume {:verifier.code 0} true; + $i730 := $srem.i64($i729, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 594, 7} true; + assume {:verifier.code 0} true; + $i731 := $trunc.i64.i32($i730); + call {:cexpr "a"} boogie_si_record_i32($i731); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 595, 5} true; + assume {:verifier.code 0} true; + $i732 := $add.i32($i731, $i731); + call {:cexpr "a"} boogie_si_record_i32($i732); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 596, 7} true; + assume {:verifier.code 0} true; + $i733 := $sext.i32.i64($i721); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 596, 9} true; + assume {:verifier.code 0} true; + $i734 := $srem.i64($i733, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 596, 7} true; + assume {:verifier.code 0} true; + $i735 := $trunc.i64.i32($i734); + call {:cexpr "b"} boogie_si_record_i32($i735); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 597, 5} true; + assume {:verifier.code 0} true; + $i736 := $add.i32($i735, $i735); + call {:cexpr "b"} boogie_si_record_i32($i736); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 599, 5} true; + assume {:verifier.code 0} true; + $i737 := $add.i32($i724, $i724); + call {:cexpr "c"} boogie_si_record_i32($i737); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 600, 9} true; + assume {:verifier.code 0} true; + $i738 := $slt.i32($i732, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 600, 7} true; + assume {:verifier.code 0} true; + $i739 := $i737; + assume {:branchcond $i738} true; + goto $bb442, $bb443; +$bb436: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 15} true; + assume {:verifier.code 0} true; + assume ($i725 == 1); + goto $bb437; +$bb437: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 591, 9} true; + assume {:verifier.code 0} true; + $i728 := $add.i32($i722, 1); + call {:cexpr "c"} boogie_si_record_i32($i728); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 592, 5} true; + assume {:verifier.code 0} true; + $i727 := $i728; + goto $bb441; +$bb438: + assume !(($i725 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 20} true; + assume {:verifier.code 0} true; + $i726 := $sgt.i32($i721, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 9} true; + assume {:verifier.code 0} true; + $i727 := $i722; + assume {:branchcond $i726} true; + goto $bb439, $bb440; +$bb439: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 9} true; + assume {:verifier.code 0} true; + assume ($i726 == 1); + goto $bb437; +$bb440: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 590, 9} true; + assume {:verifier.code 0} true; + assume !(($i726 == 1)); + goto $bb441; +$bb441: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 593, 3} true; + assume {:verifier.code 0} true; + $i724 := $i727; + goto $bb435; +$bb442: + assume ($i738 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 11} true; + assume {:verifier.code 0} true; + $i740 := $slt.i32($i736, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i740} true; + goto $bb445, $bb447; +$bb443: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 600, 7} true; + assume {:verifier.code 0} true; + assume !(($i738 == 1)); + goto $bb444; +$bb444: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 605, 7} true; + assume {:verifier.code 0} true; + $i744 := $sext.i32.i64($i732); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 605, 9} true; + assume {:verifier.code 0} true; + $i745 := $srem.i64($i744, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 605, 7} true; + assume {:verifier.code 0} true; + $i746 := $trunc.i64.i32($i745); + call {:cexpr "a"} boogie_si_record_i32($i746); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 606, 5} true; + assume {:verifier.code 0} true; + $i747 := $add.i32($i746, $i746); + call {:cexpr "a"} boogie_si_record_i32($i747); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 607, 7} true; + assume {:verifier.code 0} true; + $i748 := $sext.i32.i64($i736); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 607, 9} true; + assume {:verifier.code 0} true; + $i749 := $srem.i64($i748, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 607, 7} true; + assume {:verifier.code 0} true; + $i750 := $trunc.i64.i32($i749); + call {:cexpr "b"} boogie_si_record_i32($i750); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 608, 5} true; + assume {:verifier.code 0} true; + $i751 := $add.i32($i750, $i750); + call {:cexpr "b"} boogie_si_record_i32($i751); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 610, 5} true; + assume {:verifier.code 0} true; + $i752 := $add.i32($i739, $i739); + call {:cexpr "c"} boogie_si_record_i32($i752); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 611, 9} true; + assume {:verifier.code 0} true; + $i753 := $slt.i32($i747, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 611, 7} true; + assume {:verifier.code 0} true; + $i754 := $i752; + assume {:branchcond $i753} true; + goto $bb451, $bb452; +$bb445: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 15} true; + assume {:verifier.code 0} true; + assume ($i740 == 1); + goto $bb446; +$bb446: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 602, 9} true; + assume {:verifier.code 0} true; + $i743 := $add.i32($i737, 1); + call {:cexpr "c"} boogie_si_record_i32($i743); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 603, 5} true; + assume {:verifier.code 0} true; + $i742 := $i743; + goto $bb450; +$bb447: + assume !(($i740 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 20} true; + assume {:verifier.code 0} true; + $i741 := $sgt.i32($i736, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 9} true; + assume {:verifier.code 0} true; + $i742 := $i737; + assume {:branchcond $i741} true; + goto $bb448, $bb449; +$bb448: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 9} true; + assume {:verifier.code 0} true; + assume ($i741 == 1); + goto $bb446; +$bb449: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 601, 9} true; + assume {:verifier.code 0} true; + assume !(($i741 == 1)); + goto $bb450; +$bb450: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 604, 3} true; + assume {:verifier.code 0} true; + $i739 := $i742; + goto $bb444; +$bb451: + assume ($i753 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 11} true; + assume {:verifier.code 0} true; + $i755 := $slt.i32($i751, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i755} true; + goto $bb454, $bb456; +$bb452: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 611, 7} true; + assume {:verifier.code 0} true; + assume !(($i753 == 1)); + goto $bb453; +$bb453: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 616, 7} true; + assume {:verifier.code 0} true; + $i759 := $sext.i32.i64($i747); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 616, 9} true; + assume {:verifier.code 0} true; + $i760 := $srem.i64($i759, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 616, 7} true; + assume {:verifier.code 0} true; + $i761 := $trunc.i64.i32($i760); + call {:cexpr "a"} boogie_si_record_i32($i761); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 617, 5} true; + assume {:verifier.code 0} true; + $i762 := $add.i32($i761, $i761); + call {:cexpr "a"} boogie_si_record_i32($i762); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 618, 7} true; + assume {:verifier.code 0} true; + $i763 := $sext.i32.i64($i751); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 618, 9} true; + assume {:verifier.code 0} true; + $i764 := $srem.i64($i763, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 618, 7} true; + assume {:verifier.code 0} true; + $i765 := $trunc.i64.i32($i764); + call {:cexpr "b"} boogie_si_record_i32($i765); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 619, 5} true; + assume {:verifier.code 0} true; + $i766 := $add.i32($i765, $i765); + call {:cexpr "b"} boogie_si_record_i32($i766); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 621, 5} true; + assume {:verifier.code 0} true; + $i767 := $add.i32($i754, $i754); + call {:cexpr "c"} boogie_si_record_i32($i767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 622, 9} true; + assume {:verifier.code 0} true; + $i768 := $slt.i32($i762, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 622, 7} true; + assume {:verifier.code 0} true; + $i769 := $i767; + assume {:branchcond $i768} true; + goto $bb460, $bb461; +$bb454: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 15} true; + assume {:verifier.code 0} true; + assume ($i755 == 1); + goto $bb455; +$bb455: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 613, 9} true; + assume {:verifier.code 0} true; + $i758 := $add.i32($i752, 1); + call {:cexpr "c"} boogie_si_record_i32($i758); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 614, 5} true; + assume {:verifier.code 0} true; + $i757 := $i758; + goto $bb459; +$bb456: + assume !(($i755 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 20} true; + assume {:verifier.code 0} true; + $i756 := $sgt.i32($i751, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 9} true; + assume {:verifier.code 0} true; + $i757 := $i752; + assume {:branchcond $i756} true; + goto $bb457, $bb458; +$bb457: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 9} true; + assume {:verifier.code 0} true; + assume ($i756 == 1); + goto $bb455; +$bb458: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 612, 9} true; + assume {:verifier.code 0} true; + assume !(($i756 == 1)); + goto $bb459; +$bb459: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 615, 3} true; + assume {:verifier.code 0} true; + $i754 := $i757; + goto $bb453; +$bb460: + assume ($i768 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 11} true; + assume {:verifier.code 0} true; + $i770 := $slt.i32($i766, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i770} true; + goto $bb463, $bb465; +$bb461: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 622, 7} true; + assume {:verifier.code 0} true; + assume !(($i768 == 1)); + goto $bb462; +$bb462: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 627, 7} true; + assume {:verifier.code 0} true; + $i774 := $sext.i32.i64($i762); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 627, 9} true; + assume {:verifier.code 0} true; + $i775 := $srem.i64($i774, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 627, 7} true; + assume {:verifier.code 0} true; + $i776 := $trunc.i64.i32($i775); + call {:cexpr "a"} boogie_si_record_i32($i776); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 628, 5} true; + assume {:verifier.code 0} true; + $i777 := $add.i32($i776, $i776); + call {:cexpr "a"} boogie_si_record_i32($i777); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 629, 7} true; + assume {:verifier.code 0} true; + $i778 := $sext.i32.i64($i766); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 629, 9} true; + assume {:verifier.code 0} true; + $i779 := $srem.i64($i778, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 629, 7} true; + assume {:verifier.code 0} true; + $i780 := $trunc.i64.i32($i779); + call {:cexpr "b"} boogie_si_record_i32($i780); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 630, 5} true; + assume {:verifier.code 0} true; + $i781 := $add.i32($i780, $i780); + call {:cexpr "b"} boogie_si_record_i32($i781); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 632, 5} true; + assume {:verifier.code 0} true; + $i782 := $add.i32($i769, $i769); + call {:cexpr "c"} boogie_si_record_i32($i782); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 633, 9} true; + assume {:verifier.code 0} true; + $i783 := $slt.i32($i777, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 633, 7} true; + assume {:verifier.code 0} true; + $i784 := $i782; + assume {:branchcond $i783} true; + goto $bb469, $bb470; +$bb463: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 15} true; + assume {:verifier.code 0} true; + assume ($i770 == 1); + goto $bb464; +$bb464: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 624, 9} true; + assume {:verifier.code 0} true; + $i773 := $add.i32($i767, 1); + call {:cexpr "c"} boogie_si_record_i32($i773); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 625, 5} true; + assume {:verifier.code 0} true; + $i772 := $i773; + goto $bb468; +$bb465: + assume !(($i770 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 20} true; + assume {:verifier.code 0} true; + $i771 := $sgt.i32($i766, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 9} true; + assume {:verifier.code 0} true; + $i772 := $i767; + assume {:branchcond $i771} true; + goto $bb466, $bb467; +$bb466: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 9} true; + assume {:verifier.code 0} true; + assume ($i771 == 1); + goto $bb464; +$bb467: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 623, 9} true; + assume {:verifier.code 0} true; + assume !(($i771 == 1)); + goto $bb468; +$bb468: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 626, 3} true; + assume {:verifier.code 0} true; + $i769 := $i772; + goto $bb462; +$bb469: + assume ($i783 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 11} true; + assume {:verifier.code 0} true; + $i785 := $slt.i32($i781, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i785} true; + goto $bb472, $bb474; +$bb470: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 633, 7} true; + assume {:verifier.code 0} true; + assume !(($i783 == 1)); + goto $bb471; +$bb471: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 638, 7} true; + assume {:verifier.code 0} true; + $i789 := $sext.i32.i64($i777); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 638, 9} true; + assume {:verifier.code 0} true; + $i790 := $srem.i64($i789, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 638, 7} true; + assume {:verifier.code 0} true; + $i791 := $trunc.i64.i32($i790); + call {:cexpr "a"} boogie_si_record_i32($i791); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 639, 5} true; + assume {:verifier.code 0} true; + $i792 := $add.i32($i791, $i791); + call {:cexpr "a"} boogie_si_record_i32($i792); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 640, 7} true; + assume {:verifier.code 0} true; + $i793 := $sext.i32.i64($i781); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 640, 9} true; + assume {:verifier.code 0} true; + $i794 := $srem.i64($i793, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 640, 7} true; + assume {:verifier.code 0} true; + $i795 := $trunc.i64.i32($i794); + call {:cexpr "b"} boogie_si_record_i32($i795); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 641, 5} true; + assume {:verifier.code 0} true; + $i796 := $add.i32($i795, $i795); + call {:cexpr "b"} boogie_si_record_i32($i796); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 643, 5} true; + assume {:verifier.code 0} true; + $i797 := $add.i32($i784, $i784); + call {:cexpr "c"} boogie_si_record_i32($i797); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 644, 9} true; + assume {:verifier.code 0} true; + $i798 := $slt.i32($i792, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 644, 7} true; + assume {:verifier.code 0} true; + $i799 := $i797; + assume {:branchcond $i798} true; + goto $bb478, $bb479; +$bb472: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 15} true; + assume {:verifier.code 0} true; + assume ($i785 == 1); + goto $bb473; +$bb473: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 635, 9} true; + assume {:verifier.code 0} true; + $i788 := $add.i32($i782, 1); + call {:cexpr "c"} boogie_si_record_i32($i788); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 636, 5} true; + assume {:verifier.code 0} true; + $i787 := $i788; + goto $bb477; +$bb474: + assume !(($i785 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 20} true; + assume {:verifier.code 0} true; + $i786 := $sgt.i32($i781, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 9} true; + assume {:verifier.code 0} true; + $i787 := $i782; + assume {:branchcond $i786} true; + goto $bb475, $bb476; +$bb475: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 9} true; + assume {:verifier.code 0} true; + assume ($i786 == 1); + goto $bb473; +$bb476: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 634, 9} true; + assume {:verifier.code 0} true; + assume !(($i786 == 1)); + goto $bb477; +$bb477: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 637, 3} true; + assume {:verifier.code 0} true; + $i784 := $i787; + goto $bb471; +$bb478: + assume ($i798 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 11} true; + assume {:verifier.code 0} true; + $i800 := $slt.i32($i796, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i800} true; + goto $bb481, $bb483; +$bb479: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 644, 7} true; + assume {:verifier.code 0} true; + assume !(($i798 == 1)); + goto $bb480; +$bb480: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 649, 7} true; + assume {:verifier.code 0} true; + $i804 := $sext.i32.i64($i792); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 649, 9} true; + assume {:verifier.code 0} true; + $i805 := $srem.i64($i804, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 649, 7} true; + assume {:verifier.code 0} true; + $i806 := $trunc.i64.i32($i805); + call {:cexpr "a"} boogie_si_record_i32($i806); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 650, 5} true; + assume {:verifier.code 0} true; + $i807 := $add.i32($i806, $i806); + call {:cexpr "a"} boogie_si_record_i32($i807); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 651, 7} true; + assume {:verifier.code 0} true; + $i808 := $sext.i32.i64($i796); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 651, 9} true; + assume {:verifier.code 0} true; + $i809 := $srem.i64($i808, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 651, 7} true; + assume {:verifier.code 0} true; + $i810 := $trunc.i64.i32($i809); + call {:cexpr "b"} boogie_si_record_i32($i810); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 652, 5} true; + assume {:verifier.code 0} true; + $i811 := $add.i32($i810, $i810); + call {:cexpr "b"} boogie_si_record_i32($i811); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 654, 5} true; + assume {:verifier.code 0} true; + $i812 := $add.i32($i799, $i799); + call {:cexpr "c"} boogie_si_record_i32($i812); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 655, 9} true; + assume {:verifier.code 0} true; + $i813 := $slt.i32($i807, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 655, 7} true; + assume {:verifier.code 0} true; + $i814 := $i812; + assume {:branchcond $i813} true; + goto $bb487, $bb488; +$bb481: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 15} true; + assume {:verifier.code 0} true; + assume ($i800 == 1); + goto $bb482; +$bb482: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 646, 9} true; + assume {:verifier.code 0} true; + $i803 := $add.i32($i797, 1); + call {:cexpr "c"} boogie_si_record_i32($i803); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 647, 5} true; + assume {:verifier.code 0} true; + $i802 := $i803; + goto $bb486; +$bb483: + assume !(($i800 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 20} true; + assume {:verifier.code 0} true; + $i801 := $sgt.i32($i796, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 9} true; + assume {:verifier.code 0} true; + $i802 := $i797; + assume {:branchcond $i801} true; + goto $bb484, $bb485; +$bb484: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 9} true; + assume {:verifier.code 0} true; + assume ($i801 == 1); + goto $bb482; +$bb485: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 645, 9} true; + assume {:verifier.code 0} true; + assume !(($i801 == 1)); + goto $bb486; +$bb486: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 648, 3} true; + assume {:verifier.code 0} true; + $i799 := $i802; + goto $bb480; +$bb487: + assume ($i813 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 11} true; + assume {:verifier.code 0} true; + $i815 := $slt.i32($i811, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i815} true; + goto $bb490, $bb492; +$bb488: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 655, 7} true; + assume {:verifier.code 0} true; + assume !(($i813 == 1)); + goto $bb489; +$bb489: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 660, 7} true; + assume {:verifier.code 0} true; + $i819 := $sext.i32.i64($i807); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 660, 9} true; + assume {:verifier.code 0} true; + $i820 := $srem.i64($i819, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 660, 7} true; + assume {:verifier.code 0} true; + $i821 := $trunc.i64.i32($i820); + call {:cexpr "a"} boogie_si_record_i32($i821); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 661, 5} true; + assume {:verifier.code 0} true; + $i822 := $add.i32($i821, $i821); + call {:cexpr "a"} boogie_si_record_i32($i822); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 662, 7} true; + assume {:verifier.code 0} true; + $i823 := $sext.i32.i64($i811); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 662, 9} true; + assume {:verifier.code 0} true; + $i824 := $srem.i64($i823, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 662, 7} true; + assume {:verifier.code 0} true; + $i825 := $trunc.i64.i32($i824); + call {:cexpr "b"} boogie_si_record_i32($i825); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 663, 5} true; + assume {:verifier.code 0} true; + $i826 := $add.i32($i825, $i825); + call {:cexpr "b"} boogie_si_record_i32($i826); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 665, 5} true; + assume {:verifier.code 0} true; + $i827 := $add.i32($i814, $i814); + call {:cexpr "c"} boogie_si_record_i32($i827); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 666, 9} true; + assume {:verifier.code 0} true; + $i828 := $slt.i32($i822, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 666, 7} true; + assume {:verifier.code 0} true; + $i829 := $i827; + assume {:branchcond $i828} true; + goto $bb496, $bb497; +$bb490: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 15} true; + assume {:verifier.code 0} true; + assume ($i815 == 1); + goto $bb491; +$bb491: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 657, 9} true; + assume {:verifier.code 0} true; + $i818 := $add.i32($i812, 1); + call {:cexpr "c"} boogie_si_record_i32($i818); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 658, 5} true; + assume {:verifier.code 0} true; + $i817 := $i818; + goto $bb495; +$bb492: + assume !(($i815 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 20} true; + assume {:verifier.code 0} true; + $i816 := $sgt.i32($i811, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 9} true; + assume {:verifier.code 0} true; + $i817 := $i812; + assume {:branchcond $i816} true; + goto $bb493, $bb494; +$bb493: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 9} true; + assume {:verifier.code 0} true; + assume ($i816 == 1); + goto $bb491; +$bb494: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 656, 9} true; + assume {:verifier.code 0} true; + assume !(($i816 == 1)); + goto $bb495; +$bb495: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 659, 3} true; + assume {:verifier.code 0} true; + $i814 := $i817; + goto $bb489; +$bb496: + assume ($i828 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 11} true; + assume {:verifier.code 0} true; + $i830 := $slt.i32($i826, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i830} true; + goto $bb499, $bb501; +$bb497: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 666, 7} true; + assume {:verifier.code 0} true; + assume !(($i828 == 1)); + goto $bb498; +$bb498: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 671, 7} true; + assume {:verifier.code 0} true; + $i834 := $sext.i32.i64($i822); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 671, 9} true; + assume {:verifier.code 0} true; + $i835 := $srem.i64($i834, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 671, 7} true; + assume {:verifier.code 0} true; + $i836 := $trunc.i64.i32($i835); + call {:cexpr "a"} boogie_si_record_i32($i836); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 672, 5} true; + assume {:verifier.code 0} true; + $i837 := $add.i32($i836, $i836); + call {:cexpr "a"} boogie_si_record_i32($i837); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 673, 7} true; + assume {:verifier.code 0} true; + $i838 := $sext.i32.i64($i826); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 673, 9} true; + assume {:verifier.code 0} true; + $i839 := $srem.i64($i838, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 673, 7} true; + assume {:verifier.code 0} true; + $i840 := $trunc.i64.i32($i839); + call {:cexpr "b"} boogie_si_record_i32($i840); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 674, 5} true; + assume {:verifier.code 0} true; + $i841 := $add.i32($i840, $i840); + call {:cexpr "b"} boogie_si_record_i32($i841); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 676, 5} true; + assume {:verifier.code 0} true; + $i842 := $add.i32($i829, $i829); + call {:cexpr "c"} boogie_si_record_i32($i842); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 677, 9} true; + assume {:verifier.code 0} true; + $i843 := $slt.i32($i837, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 677, 7} true; + assume {:verifier.code 0} true; + $i844 := $i842; + assume {:branchcond $i843} true; + goto $bb505, $bb506; +$bb499: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 15} true; + assume {:verifier.code 0} true; + assume ($i830 == 1); + goto $bb500; +$bb500: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 668, 9} true; + assume {:verifier.code 0} true; + $i833 := $add.i32($i827, 1); + call {:cexpr "c"} boogie_si_record_i32($i833); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 669, 5} true; + assume {:verifier.code 0} true; + $i832 := $i833; + goto $bb504; +$bb501: + assume !(($i830 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 20} true; + assume {:verifier.code 0} true; + $i831 := $sgt.i32($i826, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 9} true; + assume {:verifier.code 0} true; + $i832 := $i827; + assume {:branchcond $i831} true; + goto $bb502, $bb503; +$bb502: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 9} true; + assume {:verifier.code 0} true; + assume ($i831 == 1); + goto $bb500; +$bb503: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 667, 9} true; + assume {:verifier.code 0} true; + assume !(($i831 == 1)); + goto $bb504; +$bb504: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 670, 3} true; + assume {:verifier.code 0} true; + $i829 := $i832; + goto $bb498; +$bb505: + assume ($i843 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 11} true; + assume {:verifier.code 0} true; + $i845 := $slt.i32($i841, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i845} true; + goto $bb508, $bb510; +$bb506: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 677, 7} true; + assume {:verifier.code 0} true; + assume !(($i843 == 1)); + goto $bb507; +$bb507: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 682, 7} true; + assume {:verifier.code 0} true; + $i849 := $sext.i32.i64($i837); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 682, 9} true; + assume {:verifier.code 0} true; + $i850 := $srem.i64($i849, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 682, 7} true; + assume {:verifier.code 0} true; + $i851 := $trunc.i64.i32($i850); + call {:cexpr "a"} boogie_si_record_i32($i851); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 683, 5} true; + assume {:verifier.code 0} true; + $i852 := $add.i32($i851, $i851); + call {:cexpr "a"} boogie_si_record_i32($i852); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 684, 7} true; + assume {:verifier.code 0} true; + $i853 := $sext.i32.i64($i841); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 684, 9} true; + assume {:verifier.code 0} true; + $i854 := $srem.i64($i853, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 684, 7} true; + assume {:verifier.code 0} true; + $i855 := $trunc.i64.i32($i854); + call {:cexpr "b"} boogie_si_record_i32($i855); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 685, 5} true; + assume {:verifier.code 0} true; + $i856 := $add.i32($i855, $i855); + call {:cexpr "b"} boogie_si_record_i32($i856); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 687, 5} true; + assume {:verifier.code 0} true; + $i857 := $add.i32($i844, $i844); + call {:cexpr "c"} boogie_si_record_i32($i857); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 688, 9} true; + assume {:verifier.code 0} true; + $i858 := $slt.i32($i852, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 688, 7} true; + assume {:verifier.code 0} true; + $i859 := $i857; + assume {:branchcond $i858} true; + goto $bb514, $bb515; +$bb508: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 15} true; + assume {:verifier.code 0} true; + assume ($i845 == 1); + goto $bb509; +$bb509: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 679, 9} true; + assume {:verifier.code 0} true; + $i848 := $add.i32($i842, 1); + call {:cexpr "c"} boogie_si_record_i32($i848); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 680, 5} true; + assume {:verifier.code 0} true; + $i847 := $i848; + goto $bb513; +$bb510: + assume !(($i845 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 20} true; + assume {:verifier.code 0} true; + $i846 := $sgt.i32($i841, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 9} true; + assume {:verifier.code 0} true; + $i847 := $i842; + assume {:branchcond $i846} true; + goto $bb511, $bb512; +$bb511: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 9} true; + assume {:verifier.code 0} true; + assume ($i846 == 1); + goto $bb509; +$bb512: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 678, 9} true; + assume {:verifier.code 0} true; + assume !(($i846 == 1)); + goto $bb513; +$bb513: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 681, 3} true; + assume {:verifier.code 0} true; + $i844 := $i847; + goto $bb507; +$bb514: + assume ($i858 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 11} true; + assume {:verifier.code 0} true; + $i860 := $slt.i32($i856, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i860} true; + goto $bb517, $bb519; +$bb515: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 688, 7} true; + assume {:verifier.code 0} true; + assume !(($i858 == 1)); + goto $bb516; +$bb516: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 693, 7} true; + assume {:verifier.code 0} true; + $i864 := $sext.i32.i64($i852); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 693, 9} true; + assume {:verifier.code 0} true; + $i865 := $srem.i64($i864, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 693, 7} true; + assume {:verifier.code 0} true; + $i866 := $trunc.i64.i32($i865); + call {:cexpr "a"} boogie_si_record_i32($i866); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 694, 5} true; + assume {:verifier.code 0} true; + $i867 := $add.i32($i866, $i866); + call {:cexpr "a"} boogie_si_record_i32($i867); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 695, 7} true; + assume {:verifier.code 0} true; + $i868 := $sext.i32.i64($i856); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 695, 9} true; + assume {:verifier.code 0} true; + $i869 := $srem.i64($i868, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 695, 7} true; + assume {:verifier.code 0} true; + $i870 := $trunc.i64.i32($i869); + call {:cexpr "b"} boogie_si_record_i32($i870); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 696, 5} true; + assume {:verifier.code 0} true; + $i871 := $add.i32($i870, $i870); + call {:cexpr "b"} boogie_si_record_i32($i871); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 698, 5} true; + assume {:verifier.code 0} true; + $i872 := $add.i32($i859, $i859); + call {:cexpr "c"} boogie_si_record_i32($i872); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 699, 9} true; + assume {:verifier.code 0} true; + $i873 := $slt.i32($i867, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 699, 7} true; + assume {:verifier.code 0} true; + $i874 := $i872; + assume {:branchcond $i873} true; + goto $bb523, $bb524; +$bb517: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 15} true; + assume {:verifier.code 0} true; + assume ($i860 == 1); + goto $bb518; +$bb518: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 690, 9} true; + assume {:verifier.code 0} true; + $i863 := $add.i32($i857, 1); + call {:cexpr "c"} boogie_si_record_i32($i863); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 691, 5} true; + assume {:verifier.code 0} true; + $i862 := $i863; + goto $bb522; +$bb519: + assume !(($i860 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 20} true; + assume {:verifier.code 0} true; + $i861 := $sgt.i32($i856, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 9} true; + assume {:verifier.code 0} true; + $i862 := $i857; + assume {:branchcond $i861} true; + goto $bb520, $bb521; +$bb520: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 9} true; + assume {:verifier.code 0} true; + assume ($i861 == 1); + goto $bb518; +$bb521: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 689, 9} true; + assume {:verifier.code 0} true; + assume !(($i861 == 1)); + goto $bb522; +$bb522: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 692, 3} true; + assume {:verifier.code 0} true; + $i859 := $i862; + goto $bb516; +$bb523: + assume ($i873 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 11} true; + assume {:verifier.code 0} true; + $i875 := $slt.i32($i871, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i875} true; + goto $bb526, $bb528; +$bb524: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 699, 7} true; + assume {:verifier.code 0} true; + assume !(($i873 == 1)); + goto $bb525; +$bb525: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 704, 7} true; + assume {:verifier.code 0} true; + $i879 := $sext.i32.i64($i867); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 704, 9} true; + assume {:verifier.code 0} true; + $i880 := $srem.i64($i879, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 704, 7} true; + assume {:verifier.code 0} true; + $i881 := $trunc.i64.i32($i880); + call {:cexpr "a"} boogie_si_record_i32($i881); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 705, 5} true; + assume {:verifier.code 0} true; + $i882 := $add.i32($i881, $i881); + call {:cexpr "a"} boogie_si_record_i32($i882); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 706, 7} true; + assume {:verifier.code 0} true; + $i883 := $sext.i32.i64($i871); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 706, 9} true; + assume {:verifier.code 0} true; + $i884 := $srem.i64($i883, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 706, 7} true; + assume {:verifier.code 0} true; + $i885 := $trunc.i64.i32($i884); + call {:cexpr "b"} boogie_si_record_i32($i885); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 707, 5} true; + assume {:verifier.code 0} true; + $i886 := $add.i32($i885, $i885); + call {:cexpr "b"} boogie_si_record_i32($i886); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 709, 5} true; + assume {:verifier.code 0} true; + $i887 := $add.i32($i874, $i874); + call {:cexpr "c"} boogie_si_record_i32($i887); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 710, 9} true; + assume {:verifier.code 0} true; + $i888 := $slt.i32($i882, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 710, 7} true; + assume {:verifier.code 0} true; + $i889 := $i887; + assume {:branchcond $i888} true; + goto $bb532, $bb533; +$bb526: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 15} true; + assume {:verifier.code 0} true; + assume ($i875 == 1); + goto $bb527; +$bb527: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 701, 9} true; + assume {:verifier.code 0} true; + $i878 := $add.i32($i872, 1); + call {:cexpr "c"} boogie_si_record_i32($i878); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 702, 5} true; + assume {:verifier.code 0} true; + $i877 := $i878; + goto $bb531; +$bb528: + assume !(($i875 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 20} true; + assume {:verifier.code 0} true; + $i876 := $sgt.i32($i871, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 9} true; + assume {:verifier.code 0} true; + $i877 := $i872; + assume {:branchcond $i876} true; + goto $bb529, $bb530; +$bb529: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 9} true; + assume {:verifier.code 0} true; + assume ($i876 == 1); + goto $bb527; +$bb530: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 700, 9} true; + assume {:verifier.code 0} true; + assume !(($i876 == 1)); + goto $bb531; +$bb531: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 703, 3} true; + assume {:verifier.code 0} true; + $i874 := $i877; + goto $bb525; +$bb532: + assume ($i888 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 11} true; + assume {:verifier.code 0} true; + $i890 := $slt.i32($i886, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i890} true; + goto $bb535, $bb537; +$bb533: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 710, 7} true; + assume {:verifier.code 0} true; + assume !(($i888 == 1)); + goto $bb534; +$bb534: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 715, 7} true; + assume {:verifier.code 0} true; + $i894 := $sext.i32.i64($i882); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 715, 9} true; + assume {:verifier.code 0} true; + $i895 := $srem.i64($i894, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 715, 7} true; + assume {:verifier.code 0} true; + $i896 := $trunc.i64.i32($i895); + call {:cexpr "a"} boogie_si_record_i32($i896); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 716, 5} true; + assume {:verifier.code 0} true; + $i897 := $add.i32($i896, $i896); + call {:cexpr "a"} boogie_si_record_i32($i897); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 717, 7} true; + assume {:verifier.code 0} true; + $i898 := $sext.i32.i64($i886); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 717, 9} true; + assume {:verifier.code 0} true; + $i899 := $srem.i64($i898, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 717, 7} true; + assume {:verifier.code 0} true; + $i900 := $trunc.i64.i32($i899); + call {:cexpr "b"} boogie_si_record_i32($i900); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 718, 5} true; + assume {:verifier.code 0} true; + $i901 := $add.i32($i900, $i900); + call {:cexpr "b"} boogie_si_record_i32($i901); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 720, 5} true; + assume {:verifier.code 0} true; + $i902 := $add.i32($i889, $i889); + call {:cexpr "c"} boogie_si_record_i32($i902); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 721, 9} true; + assume {:verifier.code 0} true; + $i903 := $slt.i32($i897, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 721, 7} true; + assume {:verifier.code 0} true; + $i904 := $i902; + assume {:branchcond $i903} true; + goto $bb541, $bb542; +$bb535: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 15} true; + assume {:verifier.code 0} true; + assume ($i890 == 1); + goto $bb536; +$bb536: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 712, 9} true; + assume {:verifier.code 0} true; + $i893 := $add.i32($i887, 1); + call {:cexpr "c"} boogie_si_record_i32($i893); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 713, 5} true; + assume {:verifier.code 0} true; + $i892 := $i893; + goto $bb540; +$bb537: + assume !(($i890 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 20} true; + assume {:verifier.code 0} true; + $i891 := $sgt.i32($i886, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 9} true; + assume {:verifier.code 0} true; + $i892 := $i887; + assume {:branchcond $i891} true; + goto $bb538, $bb539; +$bb538: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 9} true; + assume {:verifier.code 0} true; + assume ($i891 == 1); + goto $bb536; +$bb539: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 711, 9} true; + assume {:verifier.code 0} true; + assume !(($i891 == 1)); + goto $bb540; +$bb540: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 714, 3} true; + assume {:verifier.code 0} true; + $i889 := $i892; + goto $bb534; +$bb541: + assume ($i903 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 11} true; + assume {:verifier.code 0} true; + $i905 := $slt.i32($i901, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i905} true; + goto $bb544, $bb546; +$bb542: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 721, 7} true; + assume {:verifier.code 0} true; + assume !(($i903 == 1)); + goto $bb543; +$bb543: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 726, 7} true; + assume {:verifier.code 0} true; + $i909 := $sext.i32.i64($i897); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 726, 9} true; + assume {:verifier.code 0} true; + $i910 := $srem.i64($i909, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 726, 7} true; + assume {:verifier.code 0} true; + $i911 := $trunc.i64.i32($i910); + call {:cexpr "a"} boogie_si_record_i32($i911); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 727, 5} true; + assume {:verifier.code 0} true; + $i912 := $add.i32($i911, $i911); + call {:cexpr "a"} boogie_si_record_i32($i912); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 728, 7} true; + assume {:verifier.code 0} true; + $i913 := $sext.i32.i64($i901); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 728, 9} true; + assume {:verifier.code 0} true; + $i914 := $srem.i64($i913, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 728, 7} true; + assume {:verifier.code 0} true; + $i915 := $trunc.i64.i32($i914); + call {:cexpr "b"} boogie_si_record_i32($i915); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 729, 5} true; + assume {:verifier.code 0} true; + $i916 := $add.i32($i915, $i915); + call {:cexpr "b"} boogie_si_record_i32($i916); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 731, 5} true; + assume {:verifier.code 0} true; + $i917 := $add.i32($i904, $i904); + call {:cexpr "c"} boogie_si_record_i32($i917); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 732, 9} true; + assume {:verifier.code 0} true; + $i918 := $slt.i32($i912, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 732, 7} true; + assume {:verifier.code 0} true; + $i919 := $i917; + assume {:branchcond $i918} true; + goto $bb550, $bb551; +$bb544: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 15} true; + assume {:verifier.code 0} true; + assume ($i905 == 1); + goto $bb545; +$bb545: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 723, 9} true; + assume {:verifier.code 0} true; + $i908 := $add.i32($i902, 1); + call {:cexpr "c"} boogie_si_record_i32($i908); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 724, 5} true; + assume {:verifier.code 0} true; + $i907 := $i908; + goto $bb549; +$bb546: + assume !(($i905 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 20} true; + assume {:verifier.code 0} true; + $i906 := $sgt.i32($i901, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 9} true; + assume {:verifier.code 0} true; + $i907 := $i902; + assume {:branchcond $i906} true; + goto $bb547, $bb548; +$bb547: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 9} true; + assume {:verifier.code 0} true; + assume ($i906 == 1); + goto $bb545; +$bb548: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 722, 9} true; + assume {:verifier.code 0} true; + assume !(($i906 == 1)); + goto $bb549; +$bb549: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 725, 3} true; + assume {:verifier.code 0} true; + $i904 := $i907; + goto $bb543; +$bb550: + assume ($i918 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 11} true; + assume {:verifier.code 0} true; + $i920 := $slt.i32($i916, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i920} true; + goto $bb553, $bb555; +$bb551: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 732, 7} true; + assume {:verifier.code 0} true; + assume !(($i918 == 1)); + goto $bb552; +$bb552: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 737, 7} true; + assume {:verifier.code 0} true; + $i924 := $sext.i32.i64($i912); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 737, 9} true; + assume {:verifier.code 0} true; + $i925 := $srem.i64($i924, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 737, 7} true; + assume {:verifier.code 0} true; + $i926 := $trunc.i64.i32($i925); + call {:cexpr "a"} boogie_si_record_i32($i926); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 738, 5} true; + assume {:verifier.code 0} true; + $i927 := $add.i32($i926, $i926); + call {:cexpr "a"} boogie_si_record_i32($i927); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 739, 7} true; + assume {:verifier.code 0} true; + $i928 := $sext.i32.i64($i916); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 739, 9} true; + assume {:verifier.code 0} true; + $i929 := $srem.i64($i928, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 739, 7} true; + assume {:verifier.code 0} true; + $i930 := $trunc.i64.i32($i929); + call {:cexpr "b"} boogie_si_record_i32($i930); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 740, 5} true; + assume {:verifier.code 0} true; + $i931 := $add.i32($i930, $i930); + call {:cexpr "b"} boogie_si_record_i32($i931); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 742, 5} true; + assume {:verifier.code 0} true; + $i932 := $add.i32($i919, $i919); + call {:cexpr "c"} boogie_si_record_i32($i932); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 743, 9} true; + assume {:verifier.code 0} true; + $i933 := $slt.i32($i927, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 743, 7} true; + assume {:verifier.code 0} true; + $i934 := $i932; + assume {:branchcond $i933} true; + goto $bb559, $bb560; +$bb553: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 15} true; + assume {:verifier.code 0} true; + assume ($i920 == 1); + goto $bb554; +$bb554: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 734, 9} true; + assume {:verifier.code 0} true; + $i923 := $add.i32($i917, 1); + call {:cexpr "c"} boogie_si_record_i32($i923); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 735, 5} true; + assume {:verifier.code 0} true; + $i922 := $i923; + goto $bb558; +$bb555: + assume !(($i920 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 20} true; + assume {:verifier.code 0} true; + $i921 := $sgt.i32($i916, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 9} true; + assume {:verifier.code 0} true; + $i922 := $i917; + assume {:branchcond $i921} true; + goto $bb556, $bb557; +$bb556: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 9} true; + assume {:verifier.code 0} true; + assume ($i921 == 1); + goto $bb554; +$bb557: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 733, 9} true; + assume {:verifier.code 0} true; + assume !(($i921 == 1)); + goto $bb558; +$bb558: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 736, 3} true; + assume {:verifier.code 0} true; + $i919 := $i922; + goto $bb552; +$bb559: + assume ($i933 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 11} true; + assume {:verifier.code 0} true; + $i935 := $slt.i32($i931, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i935} true; + goto $bb562, $bb564; +$bb560: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 743, 7} true; + assume {:verifier.code 0} true; + assume !(($i933 == 1)); + goto $bb561; +$bb561: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 748, 7} true; + assume {:verifier.code 0} true; + $i939 := $sext.i32.i64($i927); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 748, 9} true; + assume {:verifier.code 0} true; + $i940 := $srem.i64($i939, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 748, 7} true; + assume {:verifier.code 0} true; + $i941 := $trunc.i64.i32($i940); + call {:cexpr "a"} boogie_si_record_i32($i941); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 749, 5} true; + assume {:verifier.code 0} true; + $i942 := $add.i32($i941, $i941); + call {:cexpr "a"} boogie_si_record_i32($i942); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 750, 7} true; + assume {:verifier.code 0} true; + $i943 := $sext.i32.i64($i931); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 750, 9} true; + assume {:verifier.code 0} true; + $i944 := $srem.i64($i943, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 750, 7} true; + assume {:verifier.code 0} true; + $i945 := $trunc.i64.i32($i944); + call {:cexpr "b"} boogie_si_record_i32($i945); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 751, 5} true; + assume {:verifier.code 0} true; + $i946 := $add.i32($i945, $i945); + call {:cexpr "b"} boogie_si_record_i32($i946); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 753, 5} true; + assume {:verifier.code 0} true; + $i947 := $add.i32($i934, $i934); + call {:cexpr "c"} boogie_si_record_i32($i947); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 754, 9} true; + assume {:verifier.code 0} true; + $i948 := $slt.i32($i942, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 754, 7} true; + assume {:verifier.code 0} true; + $i949 := $i947; + assume {:branchcond $i948} true; + goto $bb568, $bb569; +$bb562: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 15} true; + assume {:verifier.code 0} true; + assume ($i935 == 1); + goto $bb563; +$bb563: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 745, 9} true; + assume {:verifier.code 0} true; + $i938 := $add.i32($i932, 1); + call {:cexpr "c"} boogie_si_record_i32($i938); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 746, 5} true; + assume {:verifier.code 0} true; + $i937 := $i938; + goto $bb567; +$bb564: + assume !(($i935 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 20} true; + assume {:verifier.code 0} true; + $i936 := $sgt.i32($i931, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 9} true; + assume {:verifier.code 0} true; + $i937 := $i932; + assume {:branchcond $i936} true; + goto $bb565, $bb566; +$bb565: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 9} true; + assume {:verifier.code 0} true; + assume ($i936 == 1); + goto $bb563; +$bb566: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 744, 9} true; + assume {:verifier.code 0} true; + assume !(($i936 == 1)); + goto $bb567; +$bb567: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 747, 3} true; + assume {:verifier.code 0} true; + $i934 := $i937; + goto $bb561; +$bb568: + assume ($i948 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 11} true; + assume {:verifier.code 0} true; + $i950 := $slt.i32($i946, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i950} true; + goto $bb571, $bb573; +$bb569: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 754, 7} true; + assume {:verifier.code 0} true; + assume !(($i948 == 1)); + goto $bb570; +$bb570: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 764, 3} true; + assume {:verifier.code 0} true; + $r := $i949; + $exn := false; + return; +$bb571: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 15} true; + assume {:verifier.code 0} true; + assume ($i950 == 1); + goto $bb572; +$bb572: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 756, 9} true; + assume {:verifier.code 0} true; + $i953 := $add.i32($i947, 1); + call {:cexpr "c"} boogie_si_record_i32($i953); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 757, 5} true; + assume {:verifier.code 0} true; + $i952 := $i953; + goto $bb576; +$bb573: + assume !(($i950 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 20} true; + assume {:verifier.code 0} true; + $i951 := $sgt.i32($i946, 2147483647); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 9} true; + assume {:verifier.code 0} true; + $i952 := $i947; + assume {:branchcond $i951} true; + goto $bb574, $bb575; +$bb574: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 9} true; + assume {:verifier.code 0} true; + assume ($i951 == 1); + goto $bb572; +$bb575: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 755, 9} true; + assume {:verifier.code 0} true; + assume !(($i951 == 1)); + goto $bb576; +$bb576: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 758, 3} true; + assume {:verifier.code 0} true; + $i949 := $i952; + goto $bb570; +} +const __SMACK_and64: ref; +axiom (__SMACK_and64 == $sub.ref(0, 18568)); +procedure __SMACK_and64($i0: i64, $i1: i64) + returns ($r: i64) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i64; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 65} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_and64:arg:a"} boogie_si_record_i64($i0); + call {:cexpr "__SMACK_and64:arg:b"} boogie_si_record_i64($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 65} true; + assume {:verifier.code 1} true; + $i2 := $trunc.i64.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 68} true; + assume {:verifier.code 1} true; + $i3 := $trunc.i64.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 51} true; + assume {:verifier.code 1} true; + call $i4 := __SMACK_and32($i2, $i3); + call {:cexpr "smack:ext:__SMACK_and32"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 45} true; + assume {:verifier.code 0} true; + $i5 := $sext.i32.i64($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 767, 38} true; + assume {:verifier.code 0} true; + $r := $i5; + $exn := false; + return; +} +const __SMACK_and16: ref; +axiom (__SMACK_and16 == $sub.ref(0, 19600)); +procedure __SMACK_and16($i0: i16, $i1: i16) + returns ($r: i16) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i16; + var $i6: i32; + var $i7: i1; + var $i9: i32; + var $i10: i1; + var $i11: i32; + var $i12: i1; + var $i14: i32; + var $i15: i32; + var $i16: i16; + var $i13: i16; + var $i8: i16; + var $i17: i32; + var $i18: i32; + var $i19: i16; + var $i20: i32; + var $i21: i32; + var $i22: i32; + var $i23: i16; + var $i24: i32; + var $i25: i32; + var $i26: i16; + var $i27: i32; + var $i28: i32; + var $i29: i32; + var $i30: i16; + var $i31: i32; + var $i32: i32; + var $i33: i32; + var $i34: i16; + var $i35: i32; + var $i36: i1; + var $i38: i32; + var $i39: i1; + var $i40: i32; + var $i41: i1; + var $i43: i32; + var $i44: i32; + var $i45: i16; + var $i42: i16; + var $i37: i16; + var $i46: i32; + var $i47: i32; + var $i48: i16; + var $i49: i32; + var $i50: i32; + var $i51: i32; + var $i52: i16; + var $i53: i32; + var $i54: i32; + var $i55: i16; + var $i56: i32; + var $i57: i32; + var $i58: i32; + var $i59: i16; + var $i60: i32; + var $i61: i32; + var $i62: i32; + var $i63: i16; + var $i64: i32; + var $i65: i1; + var $i67: i32; + var $i68: i1; + var $i69: i32; + var $i70: i1; + var $i72: i32; + var $i73: i32; + var $i74: i16; + var $i71: i16; + var $i66: i16; + var $i75: i32; + var $i76: i32; + var $i77: i16; + var $i78: i32; + var $i79: i32; + var $i80: i32; + var $i81: i16; + var $i82: i32; + var $i83: i32; + var $i84: i16; + var $i85: i32; + var $i86: i32; + var $i87: i32; + var $i88: i16; + var $i89: i32; + var $i90: i32; + var $i91: i32; + var $i92: i16; + var $i93: i32; + var $i94: i1; + var $i96: i32; + var $i97: i1; + var $i98: i32; + var $i99: i1; + var $i101: i32; + var $i102: i32; + var $i103: i16; + var $i100: i16; + var $i95: i16; + var $i104: i32; + var $i105: i32; + var $i106: i16; + var $i107: i32; + var $i108: i32; + var $i109: i32; + var $i110: i16; + var $i111: i32; + var $i112: i32; + var $i113: i16; + var $i114: i32; + var $i115: i32; + var $i116: i32; + var $i117: i16; + var $i118: i32; + var $i119: i32; + var $i120: i32; + var $i121: i16; + var $i122: i32; + var $i123: i1; + var $i125: i32; + var $i126: i1; + var $i127: i32; + var $i128: i1; + var $i130: i32; + var $i131: i32; + var $i132: i16; + var $i129: i16; + var $i124: i16; + var $i133: i32; + var $i134: i32; + var $i135: i16; + var $i136: i32; + var $i137: i32; + var $i138: i32; + var $i139: i16; + var $i140: i32; + var $i141: i32; + var $i142: i16; + var $i143: i32; + var $i144: i32; + var $i145: i32; + var $i146: i16; + var $i147: i32; + var $i148: i32; + var $i149: i32; + var $i150: i16; + var $i151: i32; + var $i152: i1; + var $i154: i32; + var $i155: i1; + var $i156: i32; + var $i157: i1; + var $i159: i32; + var $i160: i32; + var $i161: i16; + var $i158: i16; + var $i153: i16; + var $i162: i32; + var $i163: i32; + var $i164: i16; + var $i165: i32; + var $i166: i32; + var $i167: i32; + var $i168: i16; + var $i169: i32; + var $i170: i32; + var $i171: i16; + var $i172: i32; + var $i173: i32; + var $i174: i32; + var $i175: i16; + var $i176: i32; + var $i177: i32; + var $i178: i32; + var $i179: i16; + var $i180: i32; + var $i181: i1; + var $i183: i32; + var $i184: i1; + var $i185: i32; + var $i186: i1; + var $i188: i32; + var $i189: i32; + var $i190: i16; + var $i187: i16; + var $i182: i16; + var $i191: i32; + var $i192: i32; + var $i193: i16; + var $i194: i32; + var $i195: i32; + var $i196: i32; + var $i197: i16; + var $i198: i32; + var $i199: i32; + var $i200: i16; + var $i201: i32; + var $i202: i32; + var $i203: i32; + var $i204: i16; + var $i205: i32; + var $i206: i32; + var $i207: i32; + var $i208: i16; + var $i209: i32; + var $i210: i1; + var $i212: i32; + var $i213: i1; + var $i214: i32; + var $i215: i1; + var $i217: i32; + var $i218: i32; + var $i219: i16; + var $i216: i16; + var $i211: i16; + var $i220: i32; + var $i221: i32; + var $i222: i16; + var $i223: i32; + var $i224: i32; + var $i225: i32; + var $i226: i16; + var $i227: i32; + var $i228: i32; + var $i229: i16; + var $i230: i32; + var $i231: i32; + var $i232: i32; + var $i233: i16; + var $i234: i32; + var $i235: i32; + var $i236: i32; + var $i237: i16; + var $i238: i32; + var $i239: i1; + var $i241: i32; + var $i242: i1; + var $i243: i32; + var $i244: i1; + var $i246: i32; + var $i247: i32; + var $i248: i16; + var $i245: i16; + var $i240: i16; + var $i249: i32; + var $i250: i32; + var $i251: i16; + var $i252: i32; + var $i253: i32; + var $i254: i32; + var $i255: i16; + var $i256: i32; + var $i257: i32; + var $i258: i16; + var $i259: i32; + var $i260: i32; + var $i261: i32; + var $i262: i16; + var $i263: i32; + var $i264: i32; + var $i265: i32; + var $i266: i16; + var $i267: i32; + var $i268: i1; + var $i270: i32; + var $i271: i1; + var $i272: i32; + var $i273: i1; + var $i275: i32; + var $i276: i32; + var $i277: i16; + var $i274: i16; + var $i269: i16; + var $i278: i32; + var $i279: i32; + var $i280: i16; + var $i281: i32; + var $i282: i32; + var $i283: i32; + var $i284: i16; + var $i285: i32; + var $i286: i32; + var $i287: i16; + var $i288: i32; + var $i289: i32; + var $i290: i32; + var $i291: i16; + var $i292: i32; + var $i293: i32; + var $i294: i32; + var $i295: i16; + var $i296: i32; + var $i297: i1; + var $i299: i32; + var $i300: i1; + var $i301: i32; + var $i302: i1; + var $i304: i32; + var $i305: i32; + var $i306: i16; + var $i303: i16; + var $i298: i16; + var $i307: i32; + var $i308: i32; + var $i309: i16; + var $i310: i32; + var $i311: i32; + var $i312: i32; + var $i313: i16; + var $i314: i32; + var $i315: i32; + var $i316: i16; + var $i317: i32; + var $i318: i32; + var $i319: i32; + var $i320: i16; + var $i321: i32; + var $i322: i32; + var $i323: i32; + var $i324: i16; + var $i325: i32; + var $i326: i1; + var $i328: i32; + var $i329: i1; + var $i330: i32; + var $i331: i1; + var $i333: i32; + var $i334: i32; + var $i335: i16; + var $i332: i16; + var $i327: i16; + var $i336: i32; + var $i337: i32; + var $i338: i16; + var $i339: i32; + var $i340: i32; + var $i341: i32; + var $i342: i16; + var $i343: i32; + var $i344: i32; + var $i345: i16; + var $i346: i32; + var $i347: i32; + var $i348: i32; + var $i349: i16; + var $i350: i32; + var $i351: i32; + var $i352: i32; + var $i353: i16; + var $i354: i32; + var $i355: i1; + var $i357: i32; + var $i358: i1; + var $i359: i32; + var $i360: i1; + var $i362: i32; + var $i363: i32; + var $i364: i16; + var $i361: i16; + var $i356: i16; + var $i365: i32; + var $i366: i32; + var $i367: i16; + var $i368: i32; + var $i369: i32; + var $i370: i32; + var $i371: i16; + var $i372: i32; + var $i373: i32; + var $i374: i16; + var $i375: i32; + var $i376: i32; + var $i377: i32; + var $i378: i16; + var $i379: i32; + var $i380: i32; + var $i381: i32; + var $i382: i16; + var $i383: i32; + var $i384: i1; + var $i386: i32; + var $i387: i1; + var $i388: i32; + var $i389: i1; + var $i391: i32; + var $i392: i32; + var $i393: i16; + var $i390: i16; + var $i385: i16; + var $i394: i32; + var $i395: i32; + var $i396: i16; + var $i397: i32; + var $i398: i32; + var $i399: i32; + var $i400: i16; + var $i401: i32; + var $i402: i32; + var $i403: i16; + var $i404: i32; + var $i405: i32; + var $i406: i32; + var $i407: i16; + var $i408: i32; + var $i409: i32; + var $i410: i32; + var $i411: i16; + var $i412: i32; + var $i413: i1; + var $i415: i32; + var $i416: i1; + var $i417: i32; + var $i418: i1; + var $i420: i32; + var $i421: i32; + var $i422: i16; + var $i419: i16; + var $i414: i16; + var $i423: i32; + var $i424: i32; + var $i425: i16; + var $i426: i32; + var $i427: i32; + var $i428: i32; + var $i429: i16; + var $i430: i32; + var $i431: i32; + var $i432: i16; + var $i433: i32; + var $i434: i32; + var $i435: i32; + var $i436: i16; + var $i437: i32; + var $i438: i32; + var $i439: i32; + var $i440: i16; + var $i441: i32; + var $i442: i1; + var $i444: i32; + var $i445: i1; + var $i446: i32; + var $i447: i1; + var $i449: i32; + var $i450: i32; + var $i451: i16; + var $i448: i16; + var $i443: i16; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 8} true; + assume {:verifier.code 0} true; + call {:cexpr "__SMACK_and16:arg:a"} boogie_si_record_i16($i0); + call {:cexpr "__SMACK_and16:arg:b"} boogie_si_record_i16($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 8} true; + assume {:verifier.code 0} true; + $i2 := $sext.i16.i32(0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 5} true; + assume {:verifier.code 0} true; + $i3 := $sext.i16.i32(0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 5} true; + assume {:verifier.code 0} true; + $i4 := $add.i32($i3, $i2); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 772, 5} true; + assume {:verifier.code 0} true; + $i5 := $trunc.i32.i16($i4); + call {:cexpr "c"} boogie_si_record_i16($i5); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 773, 7} true; + assume {:verifier.code 0} true; + $i6 := $sext.i16.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 773, 9} true; + assume {:verifier.code 0} true; + $i7 := $slt.i32($i6, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 773, 7} true; + assume {:verifier.code 0} true; + $i8 := $i5; + assume {:branchcond $i7} true; + goto $bb1, $bb2; +$bb1: + assume ($i7 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 9} true; + assume {:verifier.code 0} true; + $i9 := $sext.i16.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 11} true; + assume {:verifier.code 0} true; + $i10 := $slt.i32($i9, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i10} true; + goto $bb4, $bb6; +$bb2: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 773, 7} true; + assume {:verifier.code 0} true; + assume !(($i7 == 1)); + goto $bb3; +$bb3: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 778, 7} true; + assume {:verifier.code 0} true; + $i17 := $sext.i16.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 778, 9} true; + assume {:verifier.code 0} true; + $i18 := $srem.i32($i17, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 778, 7} true; + assume {:verifier.code 0} true; + $i19 := $trunc.i32.i16($i18); + call {:cexpr "a"} boogie_si_record_i16($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 779, 8} true; + assume {:verifier.code 0} true; + $i20 := $sext.i16.i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 779, 5} true; + assume {:verifier.code 0} true; + $i21 := $sext.i16.i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 779, 5} true; + assume {:verifier.code 0} true; + $i22 := $add.i32($i21, $i20); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 779, 5} true; + assume {:verifier.code 0} true; + $i23 := $trunc.i32.i16($i22); + call {:cexpr "a"} boogie_si_record_i16($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 780, 7} true; + assume {:verifier.code 0} true; + $i24 := $sext.i16.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 780, 9} true; + assume {:verifier.code 0} true; + $i25 := $srem.i32($i24, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 780, 7} true; + assume {:verifier.code 0} true; + $i26 := $trunc.i32.i16($i25); + call {:cexpr "b"} boogie_si_record_i16($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 781, 8} true; + assume {:verifier.code 0} true; + $i27 := $sext.i16.i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 781, 5} true; + assume {:verifier.code 0} true; + $i28 := $sext.i16.i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 781, 5} true; + assume {:verifier.code 0} true; + $i29 := $add.i32($i28, $i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 781, 5} true; + assume {:verifier.code 0} true; + $i30 := $trunc.i32.i16($i29); + call {:cexpr "b"} boogie_si_record_i16($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 783, 8} true; + assume {:verifier.code 0} true; + $i31 := $sext.i16.i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 783, 5} true; + assume {:verifier.code 0} true; + $i32 := $sext.i16.i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 783, 5} true; + assume {:verifier.code 0} true; + $i33 := $add.i32($i32, $i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 783, 5} true; + assume {:verifier.code 0} true; + $i34 := $trunc.i32.i16($i33); + call {:cexpr "c"} boogie_si_record_i16($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 784, 7} true; + assume {:verifier.code 0} true; + $i35 := $sext.i16.i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 784, 9} true; + assume {:verifier.code 0} true; + $i36 := $slt.i32($i35, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 784, 7} true; + assume {:verifier.code 0} true; + $i37 := $i34; + assume {:branchcond $i36} true; + goto $bb10, $bb11; +$bb4: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 15} true; + assume {:verifier.code 0} true; + assume ($i10 == 1); + goto $bb5; +$bb5: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 775, 9} true; + assume {:verifier.code 0} true; + $i14 := $sext.i16.i32($i5); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 775, 9} true; + assume {:verifier.code 0} true; + $i15 := $add.i32($i14, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 775, 9} true; + assume {:verifier.code 0} true; + $i16 := $trunc.i32.i16($i15); + call {:cexpr "c"} boogie_si_record_i16($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 776, 5} true; + assume {:verifier.code 0} true; + $i13 := $i16; + goto $bb9; +$bb6: + assume !(($i10 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 18} true; + assume {:verifier.code 0} true; + $i11 := $sext.i16.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 20} true; + assume {:verifier.code 0} true; + $i12 := $sgt.i32($i11, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 9} true; + assume {:verifier.code 0} true; + $i13 := $i5; + assume {:branchcond $i12} true; + goto $bb7, $bb8; +$bb7: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 9} true; + assume {:verifier.code 0} true; + assume ($i12 == 1); + goto $bb5; +$bb8: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 774, 9} true; + assume {:verifier.code 0} true; + assume !(($i12 == 1)); + goto $bb9; +$bb9: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 777, 3} true; + assume {:verifier.code 0} true; + $i8 := $i13; + goto $bb3; +$bb10: + assume ($i36 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 9} true; + assume {:verifier.code 0} true; + $i38 := $sext.i16.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 11} true; + assume {:verifier.code 0} true; + $i39 := $slt.i32($i38, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i39} true; + goto $bb13, $bb15; +$bb11: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 784, 7} true; + assume {:verifier.code 0} true; + assume !(($i36 == 1)); + goto $bb12; +$bb12: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 789, 7} true; + assume {:verifier.code 0} true; + $i46 := $sext.i16.i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 789, 9} true; + assume {:verifier.code 0} true; + $i47 := $srem.i32($i46, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 789, 7} true; + assume {:verifier.code 0} true; + $i48 := $trunc.i32.i16($i47); + call {:cexpr "a"} boogie_si_record_i16($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 790, 8} true; + assume {:verifier.code 0} true; + $i49 := $sext.i16.i32($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 790, 5} true; + assume {:verifier.code 0} true; + $i50 := $sext.i16.i32($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 790, 5} true; + assume {:verifier.code 0} true; + $i51 := $add.i32($i50, $i49); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 790, 5} true; + assume {:verifier.code 0} true; + $i52 := $trunc.i32.i16($i51); + call {:cexpr "a"} boogie_si_record_i16($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 791, 7} true; + assume {:verifier.code 0} true; + $i53 := $sext.i16.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 791, 9} true; + assume {:verifier.code 0} true; + $i54 := $srem.i32($i53, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 791, 7} true; + assume {:verifier.code 0} true; + $i55 := $trunc.i32.i16($i54); + call {:cexpr "b"} boogie_si_record_i16($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 792, 8} true; + assume {:verifier.code 0} true; + $i56 := $sext.i16.i32($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 792, 5} true; + assume {:verifier.code 0} true; + $i57 := $sext.i16.i32($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 792, 5} true; + assume {:verifier.code 0} true; + $i58 := $add.i32($i57, $i56); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 792, 5} true; + assume {:verifier.code 0} true; + $i59 := $trunc.i32.i16($i58); + call {:cexpr "b"} boogie_si_record_i16($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 794, 8} true; + assume {:verifier.code 0} true; + $i60 := $sext.i16.i32($i37); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 794, 5} true; + assume {:verifier.code 0} true; + $i61 := $sext.i16.i32($i37); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 794, 5} true; + assume {:verifier.code 0} true; + $i62 := $add.i32($i61, $i60); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 794, 5} true; + assume {:verifier.code 0} true; + $i63 := $trunc.i32.i16($i62); + call {:cexpr "c"} boogie_si_record_i16($i63); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 795, 7} true; + assume {:verifier.code 0} true; + $i64 := $sext.i16.i32($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 795, 9} true; + assume {:verifier.code 0} true; + $i65 := $slt.i32($i64, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 795, 7} true; + assume {:verifier.code 0} true; + $i66 := $i63; + assume {:branchcond $i65} true; + goto $bb19, $bb20; +$bb13: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 15} true; + assume {:verifier.code 0} true; + assume ($i39 == 1); + goto $bb14; +$bb14: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 786, 9} true; + assume {:verifier.code 0} true; + $i43 := $sext.i16.i32($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 786, 9} true; + assume {:verifier.code 0} true; + $i44 := $add.i32($i43, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 786, 9} true; + assume {:verifier.code 0} true; + $i45 := $trunc.i32.i16($i44); + call {:cexpr "c"} boogie_si_record_i16($i45); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 787, 5} true; + assume {:verifier.code 0} true; + $i42 := $i45; + goto $bb18; +$bb15: + assume !(($i39 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 18} true; + assume {:verifier.code 0} true; + $i40 := $sext.i16.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 20} true; + assume {:verifier.code 0} true; + $i41 := $sgt.i32($i40, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 9} true; + assume {:verifier.code 0} true; + $i42 := $i34; + assume {:branchcond $i41} true; + goto $bb16, $bb17; +$bb16: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 9} true; + assume {:verifier.code 0} true; + assume ($i41 == 1); + goto $bb14; +$bb17: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 785, 9} true; + assume {:verifier.code 0} true; + assume !(($i41 == 1)); + goto $bb18; +$bb18: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 788, 3} true; + assume {:verifier.code 0} true; + $i37 := $i42; + goto $bb12; +$bb19: + assume ($i65 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 9} true; + assume {:verifier.code 0} true; + $i67 := $sext.i16.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 11} true; + assume {:verifier.code 0} true; + $i68 := $slt.i32($i67, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i68} true; + goto $bb22, $bb24; +$bb20: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 795, 7} true; + assume {:verifier.code 0} true; + assume !(($i65 == 1)); + goto $bb21; +$bb21: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 800, 7} true; + assume {:verifier.code 0} true; + $i75 := $sext.i16.i32($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 800, 9} true; + assume {:verifier.code 0} true; + $i76 := $srem.i32($i75, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 800, 7} true; + assume {:verifier.code 0} true; + $i77 := $trunc.i32.i16($i76); + call {:cexpr "a"} boogie_si_record_i16($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 801, 8} true; + assume {:verifier.code 0} true; + $i78 := $sext.i16.i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 801, 5} true; + assume {:verifier.code 0} true; + $i79 := $sext.i16.i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 801, 5} true; + assume {:verifier.code 0} true; + $i80 := $add.i32($i79, $i78); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 801, 5} true; + assume {:verifier.code 0} true; + $i81 := $trunc.i32.i16($i80); + call {:cexpr "a"} boogie_si_record_i16($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 802, 7} true; + assume {:verifier.code 0} true; + $i82 := $sext.i16.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 802, 9} true; + assume {:verifier.code 0} true; + $i83 := $srem.i32($i82, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 802, 7} true; + assume {:verifier.code 0} true; + $i84 := $trunc.i32.i16($i83); + call {:cexpr "b"} boogie_si_record_i16($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 803, 8} true; + assume {:verifier.code 0} true; + $i85 := $sext.i16.i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 803, 5} true; + assume {:verifier.code 0} true; + $i86 := $sext.i16.i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 803, 5} true; + assume {:verifier.code 0} true; + $i87 := $add.i32($i86, $i85); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 803, 5} true; + assume {:verifier.code 0} true; + $i88 := $trunc.i32.i16($i87); + call {:cexpr "b"} boogie_si_record_i16($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 805, 8} true; + assume {:verifier.code 0} true; + $i89 := $sext.i16.i32($i66); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 805, 5} true; + assume {:verifier.code 0} true; + $i90 := $sext.i16.i32($i66); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 805, 5} true; + assume {:verifier.code 0} true; + $i91 := $add.i32($i90, $i89); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 805, 5} true; + assume {:verifier.code 0} true; + $i92 := $trunc.i32.i16($i91); + call {:cexpr "c"} boogie_si_record_i16($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 806, 7} true; + assume {:verifier.code 0} true; + $i93 := $sext.i16.i32($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 806, 9} true; + assume {:verifier.code 0} true; + $i94 := $slt.i32($i93, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 806, 7} true; + assume {:verifier.code 0} true; + $i95 := $i92; + assume {:branchcond $i94} true; + goto $bb28, $bb29; +$bb22: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 15} true; + assume {:verifier.code 0} true; + assume ($i68 == 1); + goto $bb23; +$bb23: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 797, 9} true; + assume {:verifier.code 0} true; + $i72 := $sext.i16.i32($i63); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 797, 9} true; + assume {:verifier.code 0} true; + $i73 := $add.i32($i72, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 797, 9} true; + assume {:verifier.code 0} true; + $i74 := $trunc.i32.i16($i73); + call {:cexpr "c"} boogie_si_record_i16($i74); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 798, 5} true; + assume {:verifier.code 0} true; + $i71 := $i74; + goto $bb27; +$bb24: + assume !(($i68 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 18} true; + assume {:verifier.code 0} true; + $i69 := $sext.i16.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 20} true; + assume {:verifier.code 0} true; + $i70 := $sgt.i32($i69, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 9} true; + assume {:verifier.code 0} true; + $i71 := $i63; + assume {:branchcond $i70} true; + goto $bb25, $bb26; +$bb25: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 9} true; + assume {:verifier.code 0} true; + assume ($i70 == 1); + goto $bb23; +$bb26: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 796, 9} true; + assume {:verifier.code 0} true; + assume !(($i70 == 1)); + goto $bb27; +$bb27: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 799, 3} true; + assume {:verifier.code 0} true; + $i66 := $i71; + goto $bb21; +$bb28: + assume ($i94 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 9} true; + assume {:verifier.code 0} true; + $i96 := $sext.i16.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 11} true; + assume {:verifier.code 0} true; + $i97 := $slt.i32($i96, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i97} true; + goto $bb31, $bb33; +$bb29: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 806, 7} true; + assume {:verifier.code 0} true; + assume !(($i94 == 1)); + goto $bb30; +$bb30: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 811, 7} true; + assume {:verifier.code 0} true; + $i104 := $sext.i16.i32($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 811, 9} true; + assume {:verifier.code 0} true; + $i105 := $srem.i32($i104, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 811, 7} true; + assume {:verifier.code 0} true; + $i106 := $trunc.i32.i16($i105); + call {:cexpr "a"} boogie_si_record_i16($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 812, 8} true; + assume {:verifier.code 0} true; + $i107 := $sext.i16.i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 812, 5} true; + assume {:verifier.code 0} true; + $i108 := $sext.i16.i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 812, 5} true; + assume {:verifier.code 0} true; + $i109 := $add.i32($i108, $i107); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 812, 5} true; + assume {:verifier.code 0} true; + $i110 := $trunc.i32.i16($i109); + call {:cexpr "a"} boogie_si_record_i16($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 813, 7} true; + assume {:verifier.code 0} true; + $i111 := $sext.i16.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 813, 9} true; + assume {:verifier.code 0} true; + $i112 := $srem.i32($i111, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 813, 7} true; + assume {:verifier.code 0} true; + $i113 := $trunc.i32.i16($i112); + call {:cexpr "b"} boogie_si_record_i16($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 814, 8} true; + assume {:verifier.code 0} true; + $i114 := $sext.i16.i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 814, 5} true; + assume {:verifier.code 0} true; + $i115 := $sext.i16.i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 814, 5} true; + assume {:verifier.code 0} true; + $i116 := $add.i32($i115, $i114); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 814, 5} true; + assume {:verifier.code 0} true; + $i117 := $trunc.i32.i16($i116); + call {:cexpr "b"} boogie_si_record_i16($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 816, 8} true; + assume {:verifier.code 0} true; + $i118 := $sext.i16.i32($i95); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 816, 5} true; + assume {:verifier.code 0} true; + $i119 := $sext.i16.i32($i95); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 816, 5} true; + assume {:verifier.code 0} true; + $i120 := $add.i32($i119, $i118); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 816, 5} true; + assume {:verifier.code 0} true; + $i121 := $trunc.i32.i16($i120); + call {:cexpr "c"} boogie_si_record_i16($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 817, 7} true; + assume {:verifier.code 0} true; + $i122 := $sext.i16.i32($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 817, 9} true; + assume {:verifier.code 0} true; + $i123 := $slt.i32($i122, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 817, 7} true; + assume {:verifier.code 0} true; + $i124 := $i121; + assume {:branchcond $i123} true; + goto $bb37, $bb38; +$bb31: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 15} true; + assume {:verifier.code 0} true; + assume ($i97 == 1); + goto $bb32; +$bb32: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 808, 9} true; + assume {:verifier.code 0} true; + $i101 := $sext.i16.i32($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 808, 9} true; + assume {:verifier.code 0} true; + $i102 := $add.i32($i101, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 808, 9} true; + assume {:verifier.code 0} true; + $i103 := $trunc.i32.i16($i102); + call {:cexpr "c"} boogie_si_record_i16($i103); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 809, 5} true; + assume {:verifier.code 0} true; + $i100 := $i103; + goto $bb36; +$bb33: + assume !(($i97 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 18} true; + assume {:verifier.code 0} true; + $i98 := $sext.i16.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 20} true; + assume {:verifier.code 0} true; + $i99 := $sgt.i32($i98, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 9} true; + assume {:verifier.code 0} true; + $i100 := $i92; + assume {:branchcond $i99} true; + goto $bb34, $bb35; +$bb34: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 9} true; + assume {:verifier.code 0} true; + assume ($i99 == 1); + goto $bb32; +$bb35: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 807, 9} true; + assume {:verifier.code 0} true; + assume !(($i99 == 1)); + goto $bb36; +$bb36: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 810, 3} true; + assume {:verifier.code 0} true; + $i95 := $i100; + goto $bb30; +$bb37: + assume ($i123 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 9} true; + assume {:verifier.code 0} true; + $i125 := $sext.i16.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 11} true; + assume {:verifier.code 0} true; + $i126 := $slt.i32($i125, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i126} true; + goto $bb40, $bb42; +$bb38: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 817, 7} true; + assume {:verifier.code 0} true; + assume !(($i123 == 1)); + goto $bb39; +$bb39: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 822, 7} true; + assume {:verifier.code 0} true; + $i133 := $sext.i16.i32($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 822, 9} true; + assume {:verifier.code 0} true; + $i134 := $srem.i32($i133, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 822, 7} true; + assume {:verifier.code 0} true; + $i135 := $trunc.i32.i16($i134); + call {:cexpr "a"} boogie_si_record_i16($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 823, 8} true; + assume {:verifier.code 0} true; + $i136 := $sext.i16.i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 823, 5} true; + assume {:verifier.code 0} true; + $i137 := $sext.i16.i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 823, 5} true; + assume {:verifier.code 0} true; + $i138 := $add.i32($i137, $i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 823, 5} true; + assume {:verifier.code 0} true; + $i139 := $trunc.i32.i16($i138); + call {:cexpr "a"} boogie_si_record_i16($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 824, 7} true; + assume {:verifier.code 0} true; + $i140 := $sext.i16.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 824, 9} true; + assume {:verifier.code 0} true; + $i141 := $srem.i32($i140, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 824, 7} true; + assume {:verifier.code 0} true; + $i142 := $trunc.i32.i16($i141); + call {:cexpr "b"} boogie_si_record_i16($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 825, 8} true; + assume {:verifier.code 0} true; + $i143 := $sext.i16.i32($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 825, 5} true; + assume {:verifier.code 0} true; + $i144 := $sext.i16.i32($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 825, 5} true; + assume {:verifier.code 0} true; + $i145 := $add.i32($i144, $i143); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 825, 5} true; + assume {:verifier.code 0} true; + $i146 := $trunc.i32.i16($i145); + call {:cexpr "b"} boogie_si_record_i16($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 827, 8} true; + assume {:verifier.code 0} true; + $i147 := $sext.i16.i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 827, 5} true; + assume {:verifier.code 0} true; + $i148 := $sext.i16.i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 827, 5} true; + assume {:verifier.code 0} true; + $i149 := $add.i32($i148, $i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 827, 5} true; + assume {:verifier.code 0} true; + $i150 := $trunc.i32.i16($i149); + call {:cexpr "c"} boogie_si_record_i16($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 828, 7} true; + assume {:verifier.code 0} true; + $i151 := $sext.i16.i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 828, 9} true; + assume {:verifier.code 0} true; + $i152 := $slt.i32($i151, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 828, 7} true; + assume {:verifier.code 0} true; + $i153 := $i150; + assume {:branchcond $i152} true; + goto $bb46, $bb47; +$bb40: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 15} true; + assume {:verifier.code 0} true; + assume ($i126 == 1); + goto $bb41; +$bb41: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 819, 9} true; + assume {:verifier.code 0} true; + $i130 := $sext.i16.i32($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 819, 9} true; + assume {:verifier.code 0} true; + $i131 := $add.i32($i130, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 819, 9} true; + assume {:verifier.code 0} true; + $i132 := $trunc.i32.i16($i131); + call {:cexpr "c"} boogie_si_record_i16($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 820, 5} true; + assume {:verifier.code 0} true; + $i129 := $i132; + goto $bb45; +$bb42: + assume !(($i126 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 18} true; + assume {:verifier.code 0} true; + $i127 := $sext.i16.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 20} true; + assume {:verifier.code 0} true; + $i128 := $sgt.i32($i127, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 9} true; + assume {:verifier.code 0} true; + $i129 := $i121; + assume {:branchcond $i128} true; + goto $bb43, $bb44; +$bb43: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 9} true; + assume {:verifier.code 0} true; + assume ($i128 == 1); + goto $bb41; +$bb44: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 818, 9} true; + assume {:verifier.code 0} true; + assume !(($i128 == 1)); + goto $bb45; +$bb45: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 821, 3} true; + assume {:verifier.code 0} true; + $i124 := $i129; + goto $bb39; +$bb46: + assume ($i152 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 9} true; + assume {:verifier.code 0} true; + $i154 := $sext.i16.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 11} true; + assume {:verifier.code 0} true; + $i155 := $slt.i32($i154, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i155} true; + goto $bb49, $bb51; +$bb47: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 828, 7} true; + assume {:verifier.code 0} true; + assume !(($i152 == 1)); + goto $bb48; +$bb48: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 833, 7} true; + assume {:verifier.code 0} true; + $i162 := $sext.i16.i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 833, 9} true; + assume {:verifier.code 0} true; + $i163 := $srem.i32($i162, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 833, 7} true; + assume {:verifier.code 0} true; + $i164 := $trunc.i32.i16($i163); + call {:cexpr "a"} boogie_si_record_i16($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 834, 8} true; + assume {:verifier.code 0} true; + $i165 := $sext.i16.i32($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 834, 5} true; + assume {:verifier.code 0} true; + $i166 := $sext.i16.i32($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 834, 5} true; + assume {:verifier.code 0} true; + $i167 := $add.i32($i166, $i165); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 834, 5} true; + assume {:verifier.code 0} true; + $i168 := $trunc.i32.i16($i167); + call {:cexpr "a"} boogie_si_record_i16($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 835, 7} true; + assume {:verifier.code 0} true; + $i169 := $sext.i16.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 835, 9} true; + assume {:verifier.code 0} true; + $i170 := $srem.i32($i169, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 835, 7} true; + assume {:verifier.code 0} true; + $i171 := $trunc.i32.i16($i170); + call {:cexpr "b"} boogie_si_record_i16($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 836, 8} true; + assume {:verifier.code 0} true; + $i172 := $sext.i16.i32($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 836, 5} true; + assume {:verifier.code 0} true; + $i173 := $sext.i16.i32($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 836, 5} true; + assume {:verifier.code 0} true; + $i174 := $add.i32($i173, $i172); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 836, 5} true; + assume {:verifier.code 0} true; + $i175 := $trunc.i32.i16($i174); + call {:cexpr "b"} boogie_si_record_i16($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 838, 8} true; + assume {:verifier.code 0} true; + $i176 := $sext.i16.i32($i153); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 838, 5} true; + assume {:verifier.code 0} true; + $i177 := $sext.i16.i32($i153); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 838, 5} true; + assume {:verifier.code 0} true; + $i178 := $add.i32($i177, $i176); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 838, 5} true; + assume {:verifier.code 0} true; + $i179 := $trunc.i32.i16($i178); + call {:cexpr "c"} boogie_si_record_i16($i179); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 839, 7} true; + assume {:verifier.code 0} true; + $i180 := $sext.i16.i32($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 839, 9} true; + assume {:verifier.code 0} true; + $i181 := $slt.i32($i180, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 839, 7} true; + assume {:verifier.code 0} true; + $i182 := $i179; + assume {:branchcond $i181} true; + goto $bb55, $bb56; +$bb49: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 15} true; + assume {:verifier.code 0} true; + assume ($i155 == 1); + goto $bb50; +$bb50: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 830, 9} true; + assume {:verifier.code 0} true; + $i159 := $sext.i16.i32($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 830, 9} true; + assume {:verifier.code 0} true; + $i160 := $add.i32($i159, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 830, 9} true; + assume {:verifier.code 0} true; + $i161 := $trunc.i32.i16($i160); + call {:cexpr "c"} boogie_si_record_i16($i161); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 831, 5} true; + assume {:verifier.code 0} true; + $i158 := $i161; + goto $bb54; +$bb51: + assume !(($i155 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 18} true; + assume {:verifier.code 0} true; + $i156 := $sext.i16.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 20} true; + assume {:verifier.code 0} true; + $i157 := $sgt.i32($i156, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 9} true; + assume {:verifier.code 0} true; + $i158 := $i150; + assume {:branchcond $i157} true; + goto $bb52, $bb53; +$bb52: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 9} true; + assume {:verifier.code 0} true; + assume ($i157 == 1); + goto $bb50; +$bb53: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 829, 9} true; + assume {:verifier.code 0} true; + assume !(($i157 == 1)); + goto $bb54; +$bb54: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 832, 3} true; + assume {:verifier.code 0} true; + $i153 := $i158; + goto $bb48; +$bb55: + assume ($i181 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 9} true; + assume {:verifier.code 0} true; + $i183 := $sext.i16.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 11} true; + assume {:verifier.code 0} true; + $i184 := $slt.i32($i183, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i184} true; + goto $bb58, $bb60; +$bb56: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 839, 7} true; + assume {:verifier.code 0} true; + assume !(($i181 == 1)); + goto $bb57; +$bb57: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 844, 7} true; + assume {:verifier.code 0} true; + $i191 := $sext.i16.i32($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 844, 9} true; + assume {:verifier.code 0} true; + $i192 := $srem.i32($i191, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 844, 7} true; + assume {:verifier.code 0} true; + $i193 := $trunc.i32.i16($i192); + call {:cexpr "a"} boogie_si_record_i16($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 845, 8} true; + assume {:verifier.code 0} true; + $i194 := $sext.i16.i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 845, 5} true; + assume {:verifier.code 0} true; + $i195 := $sext.i16.i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 845, 5} true; + assume {:verifier.code 0} true; + $i196 := $add.i32($i195, $i194); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 845, 5} true; + assume {:verifier.code 0} true; + $i197 := $trunc.i32.i16($i196); + call {:cexpr "a"} boogie_si_record_i16($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 846, 7} true; + assume {:verifier.code 0} true; + $i198 := $sext.i16.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 846, 9} true; + assume {:verifier.code 0} true; + $i199 := $srem.i32($i198, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 846, 7} true; + assume {:verifier.code 0} true; + $i200 := $trunc.i32.i16($i199); + call {:cexpr "b"} boogie_si_record_i16($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 847, 8} true; + assume {:verifier.code 0} true; + $i201 := $sext.i16.i32($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 847, 5} true; + assume {:verifier.code 0} true; + $i202 := $sext.i16.i32($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 847, 5} true; + assume {:verifier.code 0} true; + $i203 := $add.i32($i202, $i201); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 847, 5} true; + assume {:verifier.code 0} true; + $i204 := $trunc.i32.i16($i203); + call {:cexpr "b"} boogie_si_record_i16($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 849, 8} true; + assume {:verifier.code 0} true; + $i205 := $sext.i16.i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 849, 5} true; + assume {:verifier.code 0} true; + $i206 := $sext.i16.i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 849, 5} true; + assume {:verifier.code 0} true; + $i207 := $add.i32($i206, $i205); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 849, 5} true; + assume {:verifier.code 0} true; + $i208 := $trunc.i32.i16($i207); + call {:cexpr "c"} boogie_si_record_i16($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 850, 7} true; + assume {:verifier.code 0} true; + $i209 := $sext.i16.i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 850, 9} true; + assume {:verifier.code 0} true; + $i210 := $slt.i32($i209, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 850, 7} true; + assume {:verifier.code 0} true; + $i211 := $i208; + assume {:branchcond $i210} true; + goto $bb64, $bb65; +$bb58: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 15} true; + assume {:verifier.code 0} true; + assume ($i184 == 1); + goto $bb59; +$bb59: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 841, 9} true; + assume {:verifier.code 0} true; + $i188 := $sext.i16.i32($i179); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 841, 9} true; + assume {:verifier.code 0} true; + $i189 := $add.i32($i188, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 841, 9} true; + assume {:verifier.code 0} true; + $i190 := $trunc.i32.i16($i189); + call {:cexpr "c"} boogie_si_record_i16($i190); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 842, 5} true; + assume {:verifier.code 0} true; + $i187 := $i190; + goto $bb63; +$bb60: + assume !(($i184 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 18} true; + assume {:verifier.code 0} true; + $i185 := $sext.i16.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 20} true; + assume {:verifier.code 0} true; + $i186 := $sgt.i32($i185, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 9} true; + assume {:verifier.code 0} true; + $i187 := $i179; + assume {:branchcond $i186} true; + goto $bb61, $bb62; +$bb61: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 9} true; + assume {:verifier.code 0} true; + assume ($i186 == 1); + goto $bb59; +$bb62: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 840, 9} true; + assume {:verifier.code 0} true; + assume !(($i186 == 1)); + goto $bb63; +$bb63: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 843, 3} true; + assume {:verifier.code 0} true; + $i182 := $i187; + goto $bb57; +$bb64: + assume ($i210 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 9} true; + assume {:verifier.code 0} true; + $i212 := $sext.i16.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 11} true; + assume {:verifier.code 0} true; + $i213 := $slt.i32($i212, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i213} true; + goto $bb67, $bb69; +$bb65: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 850, 7} true; + assume {:verifier.code 0} true; + assume !(($i210 == 1)); + goto $bb66; +$bb66: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 855, 7} true; + assume {:verifier.code 0} true; + $i220 := $sext.i16.i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 855, 9} true; + assume {:verifier.code 0} true; + $i221 := $srem.i32($i220, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 855, 7} true; + assume {:verifier.code 0} true; + $i222 := $trunc.i32.i16($i221); + call {:cexpr "a"} boogie_si_record_i16($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 856, 8} true; + assume {:verifier.code 0} true; + $i223 := $sext.i16.i32($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 856, 5} true; + assume {:verifier.code 0} true; + $i224 := $sext.i16.i32($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 856, 5} true; + assume {:verifier.code 0} true; + $i225 := $add.i32($i224, $i223); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 856, 5} true; + assume {:verifier.code 0} true; + $i226 := $trunc.i32.i16($i225); + call {:cexpr "a"} boogie_si_record_i16($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 857, 7} true; + assume {:verifier.code 0} true; + $i227 := $sext.i16.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 857, 9} true; + assume {:verifier.code 0} true; + $i228 := $srem.i32($i227, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 857, 7} true; + assume {:verifier.code 0} true; + $i229 := $trunc.i32.i16($i228); + call {:cexpr "b"} boogie_si_record_i16($i229); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 858, 8} true; + assume {:verifier.code 0} true; + $i230 := $sext.i16.i32($i229); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 858, 5} true; + assume {:verifier.code 0} true; + $i231 := $sext.i16.i32($i229); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 858, 5} true; + assume {:verifier.code 0} true; + $i232 := $add.i32($i231, $i230); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 858, 5} true; + assume {:verifier.code 0} true; + $i233 := $trunc.i32.i16($i232); + call {:cexpr "b"} boogie_si_record_i16($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 860, 8} true; + assume {:verifier.code 0} true; + $i234 := $sext.i16.i32($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 860, 5} true; + assume {:verifier.code 0} true; + $i235 := $sext.i16.i32($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 860, 5} true; + assume {:verifier.code 0} true; + $i236 := $add.i32($i235, $i234); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 860, 5} true; + assume {:verifier.code 0} true; + $i237 := $trunc.i32.i16($i236); + call {:cexpr "c"} boogie_si_record_i16($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 861, 7} true; + assume {:verifier.code 0} true; + $i238 := $sext.i16.i32($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 861, 9} true; + assume {:verifier.code 0} true; + $i239 := $slt.i32($i238, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 861, 7} true; + assume {:verifier.code 0} true; + $i240 := $i237; + assume {:branchcond $i239} true; + goto $bb73, $bb74; +$bb67: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 15} true; + assume {:verifier.code 0} true; + assume ($i213 == 1); + goto $bb68; +$bb68: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 852, 9} true; + assume {:verifier.code 0} true; + $i217 := $sext.i16.i32($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 852, 9} true; + assume {:verifier.code 0} true; + $i218 := $add.i32($i217, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 852, 9} true; + assume {:verifier.code 0} true; + $i219 := $trunc.i32.i16($i218); + call {:cexpr "c"} boogie_si_record_i16($i219); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 853, 5} true; + assume {:verifier.code 0} true; + $i216 := $i219; + goto $bb72; +$bb69: + assume !(($i213 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 18} true; + assume {:verifier.code 0} true; + $i214 := $sext.i16.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 20} true; + assume {:verifier.code 0} true; + $i215 := $sgt.i32($i214, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 9} true; + assume {:verifier.code 0} true; + $i216 := $i208; + assume {:branchcond $i215} true; + goto $bb70, $bb71; +$bb70: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 9} true; + assume {:verifier.code 0} true; + assume ($i215 == 1); + goto $bb68; +$bb71: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 851, 9} true; + assume {:verifier.code 0} true; + assume !(($i215 == 1)); + goto $bb72; +$bb72: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 854, 3} true; + assume {:verifier.code 0} true; + $i211 := $i216; + goto $bb66; +$bb73: + assume ($i239 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 9} true; + assume {:verifier.code 0} true; + $i241 := $sext.i16.i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 11} true; + assume {:verifier.code 0} true; + $i242 := $slt.i32($i241, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i242} true; + goto $bb76, $bb78; +$bb74: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 861, 7} true; + assume {:verifier.code 0} true; + assume !(($i239 == 1)); + goto $bb75; +$bb75: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 866, 7} true; + assume {:verifier.code 0} true; + $i249 := $sext.i16.i32($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 866, 9} true; + assume {:verifier.code 0} true; + $i250 := $srem.i32($i249, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 866, 7} true; + assume {:verifier.code 0} true; + $i251 := $trunc.i32.i16($i250); + call {:cexpr "a"} boogie_si_record_i16($i251); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 867, 8} true; + assume {:verifier.code 0} true; + $i252 := $sext.i16.i32($i251); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 867, 5} true; + assume {:verifier.code 0} true; + $i253 := $sext.i16.i32($i251); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 867, 5} true; + assume {:verifier.code 0} true; + $i254 := $add.i32($i253, $i252); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 867, 5} true; + assume {:verifier.code 0} true; + $i255 := $trunc.i32.i16($i254); + call {:cexpr "a"} boogie_si_record_i16($i255); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 868, 7} true; + assume {:verifier.code 0} true; + $i256 := $sext.i16.i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 868, 9} true; + assume {:verifier.code 0} true; + $i257 := $srem.i32($i256, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 868, 7} true; + assume {:verifier.code 0} true; + $i258 := $trunc.i32.i16($i257); + call {:cexpr "b"} boogie_si_record_i16($i258); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 869, 8} true; + assume {:verifier.code 0} true; + $i259 := $sext.i16.i32($i258); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 869, 5} true; + assume {:verifier.code 0} true; + $i260 := $sext.i16.i32($i258); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 869, 5} true; + assume {:verifier.code 0} true; + $i261 := $add.i32($i260, $i259); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 869, 5} true; + assume {:verifier.code 0} true; + $i262 := $trunc.i32.i16($i261); + call {:cexpr "b"} boogie_si_record_i16($i262); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 871, 8} true; + assume {:verifier.code 0} true; + $i263 := $sext.i16.i32($i240); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 871, 5} true; + assume {:verifier.code 0} true; + $i264 := $sext.i16.i32($i240); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 871, 5} true; + assume {:verifier.code 0} true; + $i265 := $add.i32($i264, $i263); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 871, 5} true; + assume {:verifier.code 0} true; + $i266 := $trunc.i32.i16($i265); + call {:cexpr "c"} boogie_si_record_i16($i266); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 872, 7} true; + assume {:verifier.code 0} true; + $i267 := $sext.i16.i32($i255); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 872, 9} true; + assume {:verifier.code 0} true; + $i268 := $slt.i32($i267, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 872, 7} true; + assume {:verifier.code 0} true; + $i269 := $i266; + assume {:branchcond $i268} true; + goto $bb82, $bb83; +$bb76: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 15} true; + assume {:verifier.code 0} true; + assume ($i242 == 1); + goto $bb77; +$bb77: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 863, 9} true; + assume {:verifier.code 0} true; + $i246 := $sext.i16.i32($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 863, 9} true; + assume {:verifier.code 0} true; + $i247 := $add.i32($i246, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 863, 9} true; + assume {:verifier.code 0} true; + $i248 := $trunc.i32.i16($i247); + call {:cexpr "c"} boogie_si_record_i16($i248); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 864, 5} true; + assume {:verifier.code 0} true; + $i245 := $i248; + goto $bb81; +$bb78: + assume !(($i242 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 18} true; + assume {:verifier.code 0} true; + $i243 := $sext.i16.i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 20} true; + assume {:verifier.code 0} true; + $i244 := $sgt.i32($i243, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 9} true; + assume {:verifier.code 0} true; + $i245 := $i237; + assume {:branchcond $i244} true; + goto $bb79, $bb80; +$bb79: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 9} true; + assume {:verifier.code 0} true; + assume ($i244 == 1); + goto $bb77; +$bb80: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 862, 9} true; + assume {:verifier.code 0} true; + assume !(($i244 == 1)); + goto $bb81; +$bb81: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 865, 3} true; + assume {:verifier.code 0} true; + $i240 := $i245; + goto $bb75; +$bb82: + assume ($i268 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 9} true; + assume {:verifier.code 0} true; + $i270 := $sext.i16.i32($i262); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 11} true; + assume {:verifier.code 0} true; + $i271 := $slt.i32($i270, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i271} true; + goto $bb85, $bb87; +$bb83: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 872, 7} true; + assume {:verifier.code 0} true; + assume !(($i268 == 1)); + goto $bb84; +$bb84: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 877, 7} true; + assume {:verifier.code 0} true; + $i278 := $sext.i16.i32($i255); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 877, 9} true; + assume {:verifier.code 0} true; + $i279 := $srem.i32($i278, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 877, 7} true; + assume {:verifier.code 0} true; + $i280 := $trunc.i32.i16($i279); + call {:cexpr "a"} boogie_si_record_i16($i280); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 878, 8} true; + assume {:verifier.code 0} true; + $i281 := $sext.i16.i32($i280); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 878, 5} true; + assume {:verifier.code 0} true; + $i282 := $sext.i16.i32($i280); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 878, 5} true; + assume {:verifier.code 0} true; + $i283 := $add.i32($i282, $i281); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 878, 5} true; + assume {:verifier.code 0} true; + $i284 := $trunc.i32.i16($i283); + call {:cexpr "a"} boogie_si_record_i16($i284); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 879, 7} true; + assume {:verifier.code 0} true; + $i285 := $sext.i16.i32($i262); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 879, 9} true; + assume {:verifier.code 0} true; + $i286 := $srem.i32($i285, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 879, 7} true; + assume {:verifier.code 0} true; + $i287 := $trunc.i32.i16($i286); + call {:cexpr "b"} boogie_si_record_i16($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 880, 8} true; + assume {:verifier.code 0} true; + $i288 := $sext.i16.i32($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 880, 5} true; + assume {:verifier.code 0} true; + $i289 := $sext.i16.i32($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 880, 5} true; + assume {:verifier.code 0} true; + $i290 := $add.i32($i289, $i288); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 880, 5} true; + assume {:verifier.code 0} true; + $i291 := $trunc.i32.i16($i290); + call {:cexpr "b"} boogie_si_record_i16($i291); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 882, 8} true; + assume {:verifier.code 0} true; + $i292 := $sext.i16.i32($i269); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 882, 5} true; + assume {:verifier.code 0} true; + $i293 := $sext.i16.i32($i269); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 882, 5} true; + assume {:verifier.code 0} true; + $i294 := $add.i32($i293, $i292); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 882, 5} true; + assume {:verifier.code 0} true; + $i295 := $trunc.i32.i16($i294); + call {:cexpr "c"} boogie_si_record_i16($i295); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 883, 7} true; + assume {:verifier.code 0} true; + $i296 := $sext.i16.i32($i284); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 883, 9} true; + assume {:verifier.code 0} true; + $i297 := $slt.i32($i296, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 883, 7} true; + assume {:verifier.code 0} true; + $i298 := $i295; + assume {:branchcond $i297} true; + goto $bb91, $bb92; +$bb85: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 15} true; + assume {:verifier.code 0} true; + assume ($i271 == 1); + goto $bb86; +$bb86: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 874, 9} true; + assume {:verifier.code 0} true; + $i275 := $sext.i16.i32($i266); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 874, 9} true; + assume {:verifier.code 0} true; + $i276 := $add.i32($i275, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 874, 9} true; + assume {:verifier.code 0} true; + $i277 := $trunc.i32.i16($i276); + call {:cexpr "c"} boogie_si_record_i16($i277); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 875, 5} true; + assume {:verifier.code 0} true; + $i274 := $i277; + goto $bb90; +$bb87: + assume !(($i271 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 18} true; + assume {:verifier.code 0} true; + $i272 := $sext.i16.i32($i262); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 20} true; + assume {:verifier.code 0} true; + $i273 := $sgt.i32($i272, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 9} true; + assume {:verifier.code 0} true; + $i274 := $i266; + assume {:branchcond $i273} true; + goto $bb88, $bb89; +$bb88: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 9} true; + assume {:verifier.code 0} true; + assume ($i273 == 1); + goto $bb86; +$bb89: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 873, 9} true; + assume {:verifier.code 0} true; + assume !(($i273 == 1)); + goto $bb90; +$bb90: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 876, 3} true; + assume {:verifier.code 0} true; + $i269 := $i274; + goto $bb84; +$bb91: + assume ($i297 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 9} true; + assume {:verifier.code 0} true; + $i299 := $sext.i16.i32($i291); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 11} true; + assume {:verifier.code 0} true; + $i300 := $slt.i32($i299, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i300} true; + goto $bb94, $bb96; +$bb92: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 883, 7} true; + assume {:verifier.code 0} true; + assume !(($i297 == 1)); + goto $bb93; +$bb93: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 888, 7} true; + assume {:verifier.code 0} true; + $i307 := $sext.i16.i32($i284); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 888, 9} true; + assume {:verifier.code 0} true; + $i308 := $srem.i32($i307, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 888, 7} true; + assume {:verifier.code 0} true; + $i309 := $trunc.i32.i16($i308); + call {:cexpr "a"} boogie_si_record_i16($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 889, 8} true; + assume {:verifier.code 0} true; + $i310 := $sext.i16.i32($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 889, 5} true; + assume {:verifier.code 0} true; + $i311 := $sext.i16.i32($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 889, 5} true; + assume {:verifier.code 0} true; + $i312 := $add.i32($i311, $i310); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 889, 5} true; + assume {:verifier.code 0} true; + $i313 := $trunc.i32.i16($i312); + call {:cexpr "a"} boogie_si_record_i16($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 890, 7} true; + assume {:verifier.code 0} true; + $i314 := $sext.i16.i32($i291); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 890, 9} true; + assume {:verifier.code 0} true; + $i315 := $srem.i32($i314, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 890, 7} true; + assume {:verifier.code 0} true; + $i316 := $trunc.i32.i16($i315); + call {:cexpr "b"} boogie_si_record_i16($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 891, 8} true; + assume {:verifier.code 0} true; + $i317 := $sext.i16.i32($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 891, 5} true; + assume {:verifier.code 0} true; + $i318 := $sext.i16.i32($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 891, 5} true; + assume {:verifier.code 0} true; + $i319 := $add.i32($i318, $i317); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 891, 5} true; + assume {:verifier.code 0} true; + $i320 := $trunc.i32.i16($i319); + call {:cexpr "b"} boogie_si_record_i16($i320); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 893, 8} true; + assume {:verifier.code 0} true; + $i321 := $sext.i16.i32($i298); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 893, 5} true; + assume {:verifier.code 0} true; + $i322 := $sext.i16.i32($i298); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 893, 5} true; + assume {:verifier.code 0} true; + $i323 := $add.i32($i322, $i321); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 893, 5} true; + assume {:verifier.code 0} true; + $i324 := $trunc.i32.i16($i323); + call {:cexpr "c"} boogie_si_record_i16($i324); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 894, 7} true; + assume {:verifier.code 0} true; + $i325 := $sext.i16.i32($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 894, 9} true; + assume {:verifier.code 0} true; + $i326 := $slt.i32($i325, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 894, 7} true; + assume {:verifier.code 0} true; + $i327 := $i324; + assume {:branchcond $i326} true; + goto $bb100, $bb101; +$bb94: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 15} true; + assume {:verifier.code 0} true; + assume ($i300 == 1); + goto $bb95; +$bb95: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 885, 9} true; + assume {:verifier.code 0} true; + $i304 := $sext.i16.i32($i295); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 885, 9} true; + assume {:verifier.code 0} true; + $i305 := $add.i32($i304, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 885, 9} true; + assume {:verifier.code 0} true; + $i306 := $trunc.i32.i16($i305); + call {:cexpr "c"} boogie_si_record_i16($i306); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 886, 5} true; + assume {:verifier.code 0} true; + $i303 := $i306; + goto $bb99; +$bb96: + assume !(($i300 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 18} true; + assume {:verifier.code 0} true; + $i301 := $sext.i16.i32($i291); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 20} true; + assume {:verifier.code 0} true; + $i302 := $sgt.i32($i301, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 9} true; + assume {:verifier.code 0} true; + $i303 := $i295; + assume {:branchcond $i302} true; + goto $bb97, $bb98; +$bb97: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 9} true; + assume {:verifier.code 0} true; + assume ($i302 == 1); + goto $bb95; +$bb98: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 884, 9} true; + assume {:verifier.code 0} true; + assume !(($i302 == 1)); + goto $bb99; +$bb99: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 887, 3} true; + assume {:verifier.code 0} true; + $i298 := $i303; + goto $bb93; +$bb100: + assume ($i326 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 9} true; + assume {:verifier.code 0} true; + $i328 := $sext.i16.i32($i320); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 11} true; + assume {:verifier.code 0} true; + $i329 := $slt.i32($i328, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i329} true; + goto $bb103, $bb105; +$bb101: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 894, 7} true; + assume {:verifier.code 0} true; + assume !(($i326 == 1)); + goto $bb102; +$bb102: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 899, 7} true; + assume {:verifier.code 0} true; + $i336 := $sext.i16.i32($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 899, 9} true; + assume {:verifier.code 0} true; + $i337 := $srem.i32($i336, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 899, 7} true; + assume {:verifier.code 0} true; + $i338 := $trunc.i32.i16($i337); + call {:cexpr "a"} boogie_si_record_i16($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 900, 8} true; + assume {:verifier.code 0} true; + $i339 := $sext.i16.i32($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 900, 5} true; + assume {:verifier.code 0} true; + $i340 := $sext.i16.i32($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 900, 5} true; + assume {:verifier.code 0} true; + $i341 := $add.i32($i340, $i339); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 900, 5} true; + assume {:verifier.code 0} true; + $i342 := $trunc.i32.i16($i341); + call {:cexpr "a"} boogie_si_record_i16($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 901, 7} true; + assume {:verifier.code 0} true; + $i343 := $sext.i16.i32($i320); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 901, 9} true; + assume {:verifier.code 0} true; + $i344 := $srem.i32($i343, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 901, 7} true; + assume {:verifier.code 0} true; + $i345 := $trunc.i32.i16($i344); + call {:cexpr "b"} boogie_si_record_i16($i345); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 902, 8} true; + assume {:verifier.code 0} true; + $i346 := $sext.i16.i32($i345); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 902, 5} true; + assume {:verifier.code 0} true; + $i347 := $sext.i16.i32($i345); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 902, 5} true; + assume {:verifier.code 0} true; + $i348 := $add.i32($i347, $i346); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 902, 5} true; + assume {:verifier.code 0} true; + $i349 := $trunc.i32.i16($i348); + call {:cexpr "b"} boogie_si_record_i16($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 904, 8} true; + assume {:verifier.code 0} true; + $i350 := $sext.i16.i32($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 904, 5} true; + assume {:verifier.code 0} true; + $i351 := $sext.i16.i32($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 904, 5} true; + assume {:verifier.code 0} true; + $i352 := $add.i32($i351, $i350); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 904, 5} true; + assume {:verifier.code 0} true; + $i353 := $trunc.i32.i16($i352); + call {:cexpr "c"} boogie_si_record_i16($i353); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 905, 7} true; + assume {:verifier.code 0} true; + $i354 := $sext.i16.i32($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 905, 9} true; + assume {:verifier.code 0} true; + $i355 := $slt.i32($i354, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 905, 7} true; + assume {:verifier.code 0} true; + $i356 := $i353; + assume {:branchcond $i355} true; + goto $bb109, $bb110; +$bb103: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 15} true; + assume {:verifier.code 0} true; + assume ($i329 == 1); + goto $bb104; +$bb104: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 896, 9} true; + assume {:verifier.code 0} true; + $i333 := $sext.i16.i32($i324); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 896, 9} true; + assume {:verifier.code 0} true; + $i334 := $add.i32($i333, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 896, 9} true; + assume {:verifier.code 0} true; + $i335 := $trunc.i32.i16($i334); + call {:cexpr "c"} boogie_si_record_i16($i335); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 897, 5} true; + assume {:verifier.code 0} true; + $i332 := $i335; + goto $bb108; +$bb105: + assume !(($i329 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 18} true; + assume {:verifier.code 0} true; + $i330 := $sext.i16.i32($i320); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 20} true; + assume {:verifier.code 0} true; + $i331 := $sgt.i32($i330, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 9} true; + assume {:verifier.code 0} true; + $i332 := $i324; + assume {:branchcond $i331} true; + goto $bb106, $bb107; +$bb106: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 9} true; + assume {:verifier.code 0} true; + assume ($i331 == 1); + goto $bb104; +$bb107: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 895, 9} true; + assume {:verifier.code 0} true; + assume !(($i331 == 1)); + goto $bb108; +$bb108: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 898, 3} true; + assume {:verifier.code 0} true; + $i327 := $i332; + goto $bb102; +$bb109: + assume ($i355 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 9} true; + assume {:verifier.code 0} true; + $i357 := $sext.i16.i32($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 11} true; + assume {:verifier.code 0} true; + $i358 := $slt.i32($i357, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i358} true; + goto $bb112, $bb114; +$bb110: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 905, 7} true; + assume {:verifier.code 0} true; + assume !(($i355 == 1)); + goto $bb111; +$bb111: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 910, 7} true; + assume {:verifier.code 0} true; + $i365 := $sext.i16.i32($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 910, 9} true; + assume {:verifier.code 0} true; + $i366 := $srem.i32($i365, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 910, 7} true; + assume {:verifier.code 0} true; + $i367 := $trunc.i32.i16($i366); + call {:cexpr "a"} boogie_si_record_i16($i367); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 911, 8} true; + assume {:verifier.code 0} true; + $i368 := $sext.i16.i32($i367); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 911, 5} true; + assume {:verifier.code 0} true; + $i369 := $sext.i16.i32($i367); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 911, 5} true; + assume {:verifier.code 0} true; + $i370 := $add.i32($i369, $i368); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 911, 5} true; + assume {:verifier.code 0} true; + $i371 := $trunc.i32.i16($i370); + call {:cexpr "a"} boogie_si_record_i16($i371); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 912, 7} true; + assume {:verifier.code 0} true; + $i372 := $sext.i16.i32($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 912, 9} true; + assume {:verifier.code 0} true; + $i373 := $srem.i32($i372, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 912, 7} true; + assume {:verifier.code 0} true; + $i374 := $trunc.i32.i16($i373); + call {:cexpr "b"} boogie_si_record_i16($i374); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 913, 8} true; + assume {:verifier.code 0} true; + $i375 := $sext.i16.i32($i374); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 913, 5} true; + assume {:verifier.code 0} true; + $i376 := $sext.i16.i32($i374); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 913, 5} true; + assume {:verifier.code 0} true; + $i377 := $add.i32($i376, $i375); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 913, 5} true; + assume {:verifier.code 0} true; + $i378 := $trunc.i32.i16($i377); + call {:cexpr "b"} boogie_si_record_i16($i378); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 915, 8} true; + assume {:verifier.code 0} true; + $i379 := $sext.i16.i32($i356); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 915, 5} true; + assume {:verifier.code 0} true; + $i380 := $sext.i16.i32($i356); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 915, 5} true; + assume {:verifier.code 0} true; + $i381 := $add.i32($i380, $i379); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 915, 5} true; + assume {:verifier.code 0} true; + $i382 := $trunc.i32.i16($i381); + call {:cexpr "c"} boogie_si_record_i16($i382); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 916, 7} true; + assume {:verifier.code 0} true; + $i383 := $sext.i16.i32($i371); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 916, 9} true; + assume {:verifier.code 0} true; + $i384 := $slt.i32($i383, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 916, 7} true; + assume {:verifier.code 0} true; + $i385 := $i382; + assume {:branchcond $i384} true; + goto $bb118, $bb119; +$bb112: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 15} true; + assume {:verifier.code 0} true; + assume ($i358 == 1); + goto $bb113; +$bb113: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 907, 9} true; + assume {:verifier.code 0} true; + $i362 := $sext.i16.i32($i353); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 907, 9} true; + assume {:verifier.code 0} true; + $i363 := $add.i32($i362, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 907, 9} true; + assume {:verifier.code 0} true; + $i364 := $trunc.i32.i16($i363); + call {:cexpr "c"} boogie_si_record_i16($i364); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 908, 5} true; + assume {:verifier.code 0} true; + $i361 := $i364; + goto $bb117; +$bb114: + assume !(($i358 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 18} true; + assume {:verifier.code 0} true; + $i359 := $sext.i16.i32($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 20} true; + assume {:verifier.code 0} true; + $i360 := $sgt.i32($i359, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 9} true; + assume {:verifier.code 0} true; + $i361 := $i353; + assume {:branchcond $i360} true; + goto $bb115, $bb116; +$bb115: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 9} true; + assume {:verifier.code 0} true; + assume ($i360 == 1); + goto $bb113; +$bb116: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 906, 9} true; + assume {:verifier.code 0} true; + assume !(($i360 == 1)); + goto $bb117; +$bb117: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 909, 3} true; + assume {:verifier.code 0} true; + $i356 := $i361; + goto $bb111; +$bb118: + assume ($i384 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 9} true; + assume {:verifier.code 0} true; + $i386 := $sext.i16.i32($i378); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 11} true; + assume {:verifier.code 0} true; + $i387 := $slt.i32($i386, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i387} true; + goto $bb121, $bb123; +$bb119: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 916, 7} true; + assume {:verifier.code 0} true; + assume !(($i384 == 1)); + goto $bb120; +$bb120: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 921, 7} true; + assume {:verifier.code 0} true; + $i394 := $sext.i16.i32($i371); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 921, 9} true; + assume {:verifier.code 0} true; + $i395 := $srem.i32($i394, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 921, 7} true; + assume {:verifier.code 0} true; + $i396 := $trunc.i32.i16($i395); + call {:cexpr "a"} boogie_si_record_i16($i396); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 922, 8} true; + assume {:verifier.code 0} true; + $i397 := $sext.i16.i32($i396); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 922, 5} true; + assume {:verifier.code 0} true; + $i398 := $sext.i16.i32($i396); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 922, 5} true; + assume {:verifier.code 0} true; + $i399 := $add.i32($i398, $i397); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 922, 5} true; + assume {:verifier.code 0} true; + $i400 := $trunc.i32.i16($i399); + call {:cexpr "a"} boogie_si_record_i16($i400); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 923, 7} true; + assume {:verifier.code 0} true; + $i401 := $sext.i16.i32($i378); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 923, 9} true; + assume {:verifier.code 0} true; + $i402 := $srem.i32($i401, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 923, 7} true; + assume {:verifier.code 0} true; + $i403 := $trunc.i32.i16($i402); + call {:cexpr "b"} boogie_si_record_i16($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 924, 8} true; + assume {:verifier.code 0} true; + $i404 := $sext.i16.i32($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 924, 5} true; + assume {:verifier.code 0} true; + $i405 := $sext.i16.i32($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 924, 5} true; + assume {:verifier.code 0} true; + $i406 := $add.i32($i405, $i404); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 924, 5} true; + assume {:verifier.code 0} true; + $i407 := $trunc.i32.i16($i406); + call {:cexpr "b"} boogie_si_record_i16($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 926, 8} true; + assume {:verifier.code 0} true; + $i408 := $sext.i16.i32($i385); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 926, 5} true; + assume {:verifier.code 0} true; + $i409 := $sext.i16.i32($i385); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 926, 5} true; + assume {:verifier.code 0} true; + $i410 := $add.i32($i409, $i408); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 926, 5} true; + assume {:verifier.code 0} true; + $i411 := $trunc.i32.i16($i410); + call {:cexpr "c"} boogie_si_record_i16($i411); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 927, 7} true; + assume {:verifier.code 0} true; + $i412 := $sext.i16.i32($i400); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 927, 9} true; + assume {:verifier.code 0} true; + $i413 := $slt.i32($i412, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 927, 7} true; + assume {:verifier.code 0} true; + $i414 := $i411; + assume {:branchcond $i413} true; + goto $bb127, $bb128; +$bb121: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 15} true; + assume {:verifier.code 0} true; + assume ($i387 == 1); + goto $bb122; +$bb122: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 918, 9} true; + assume {:verifier.code 0} true; + $i391 := $sext.i16.i32($i382); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 918, 9} true; + assume {:verifier.code 0} true; + $i392 := $add.i32($i391, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 918, 9} true; + assume {:verifier.code 0} true; + $i393 := $trunc.i32.i16($i392); + call {:cexpr "c"} boogie_si_record_i16($i393); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 919, 5} true; + assume {:verifier.code 0} true; + $i390 := $i393; + goto $bb126; +$bb123: + assume !(($i387 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 18} true; + assume {:verifier.code 0} true; + $i388 := $sext.i16.i32($i378); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 20} true; + assume {:verifier.code 0} true; + $i389 := $sgt.i32($i388, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 9} true; + assume {:verifier.code 0} true; + $i390 := $i382; + assume {:branchcond $i389} true; + goto $bb124, $bb125; +$bb124: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 9} true; + assume {:verifier.code 0} true; + assume ($i389 == 1); + goto $bb122; +$bb125: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 917, 9} true; + assume {:verifier.code 0} true; + assume !(($i389 == 1)); + goto $bb126; +$bb126: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 920, 3} true; + assume {:verifier.code 0} true; + $i385 := $i390; + goto $bb120; +$bb127: + assume ($i413 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 9} true; + assume {:verifier.code 0} true; + $i415 := $sext.i16.i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 11} true; + assume {:verifier.code 0} true; + $i416 := $slt.i32($i415, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i416} true; + goto $bb130, $bb132; +$bb128: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 927, 7} true; + assume {:verifier.code 0} true; + assume !(($i413 == 1)); + goto $bb129; +$bb129: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 932, 7} true; + assume {:verifier.code 0} true; + $i423 := $sext.i16.i32($i400); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 932, 9} true; + assume {:verifier.code 0} true; + $i424 := $srem.i32($i423, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 932, 7} true; + assume {:verifier.code 0} true; + $i425 := $trunc.i32.i16($i424); + call {:cexpr "a"} boogie_si_record_i16($i425); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 933, 8} true; + assume {:verifier.code 0} true; + $i426 := $sext.i16.i32($i425); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 933, 5} true; + assume {:verifier.code 0} true; + $i427 := $sext.i16.i32($i425); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 933, 5} true; + assume {:verifier.code 0} true; + $i428 := $add.i32($i427, $i426); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 933, 5} true; + assume {:verifier.code 0} true; + $i429 := $trunc.i32.i16($i428); + call {:cexpr "a"} boogie_si_record_i16($i429); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 934, 7} true; + assume {:verifier.code 0} true; + $i430 := $sext.i16.i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 934, 9} true; + assume {:verifier.code 0} true; + $i431 := $srem.i32($i430, 32768); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 934, 7} true; + assume {:verifier.code 0} true; + $i432 := $trunc.i32.i16($i431); + call {:cexpr "b"} boogie_si_record_i16($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 935, 8} true; + assume {:verifier.code 0} true; + $i433 := $sext.i16.i32($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 935, 5} true; + assume {:verifier.code 0} true; + $i434 := $sext.i16.i32($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 935, 5} true; + assume {:verifier.code 0} true; + $i435 := $add.i32($i434, $i433); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 935, 5} true; + assume {:verifier.code 0} true; + $i436 := $trunc.i32.i16($i435); + call {:cexpr "b"} boogie_si_record_i16($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 937, 8} true; + assume {:verifier.code 0} true; + $i437 := $sext.i16.i32($i414); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 937, 5} true; + assume {:verifier.code 0} true; + $i438 := $sext.i16.i32($i414); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 937, 5} true; + assume {:verifier.code 0} true; + $i439 := $add.i32($i438, $i437); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 937, 5} true; + assume {:verifier.code 0} true; + $i440 := $trunc.i32.i16($i439); + call {:cexpr "c"} boogie_si_record_i16($i440); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 938, 7} true; + assume {:verifier.code 0} true; + $i441 := $sext.i16.i32($i429); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 938, 9} true; + assume {:verifier.code 0} true; + $i442 := $slt.i32($i441, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 938, 7} true; + assume {:verifier.code 0} true; + $i443 := $i440; + assume {:branchcond $i442} true; + goto $bb136, $bb137; +$bb130: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 15} true; + assume {:verifier.code 0} true; + assume ($i416 == 1); + goto $bb131; +$bb131: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 929, 9} true; + assume {:verifier.code 0} true; + $i420 := $sext.i16.i32($i411); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 929, 9} true; + assume {:verifier.code 0} true; + $i421 := $add.i32($i420, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 929, 9} true; + assume {:verifier.code 0} true; + $i422 := $trunc.i32.i16($i421); + call {:cexpr "c"} boogie_si_record_i16($i422); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 930, 5} true; + assume {:verifier.code 0} true; + $i419 := $i422; + goto $bb135; +$bb132: + assume !(($i416 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 18} true; + assume {:verifier.code 0} true; + $i417 := $sext.i16.i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 20} true; + assume {:verifier.code 0} true; + $i418 := $sgt.i32($i417, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 9} true; + assume {:verifier.code 0} true; + $i419 := $i411; + assume {:branchcond $i418} true; + goto $bb133, $bb134; +$bb133: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 9} true; + assume {:verifier.code 0} true; + assume ($i418 == 1); + goto $bb131; +$bb134: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 928, 9} true; + assume {:verifier.code 0} true; + assume !(($i418 == 1)); + goto $bb135; +$bb135: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 931, 3} true; + assume {:verifier.code 0} true; + $i414 := $i419; + goto $bb129; +$bb136: + assume ($i442 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 9} true; + assume {:verifier.code 0} true; + $i444 := $sext.i16.i32($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 11} true; + assume {:verifier.code 0} true; + $i445 := $slt.i32($i444, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i445} true; + goto $bb139, $bb141; +$bb137: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 938, 7} true; + assume {:verifier.code 0} true; + assume !(($i442 == 1)); + goto $bb138; +$bb138: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 948, 3} true; + assume {:verifier.code 0} true; + $r := $i443; + $exn := false; + return; +$bb139: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 15} true; + assume {:verifier.code 0} true; + assume ($i445 == 1); + goto $bb140; +$bb140: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 940, 9} true; + assume {:verifier.code 0} true; + $i449 := $sext.i16.i32($i440); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 940, 9} true; + assume {:verifier.code 0} true; + $i450 := $add.i32($i449, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 940, 9} true; + assume {:verifier.code 0} true; + $i451 := $trunc.i32.i16($i450); + call {:cexpr "c"} boogie_si_record_i16($i451); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 941, 5} true; + assume {:verifier.code 0} true; + $i448 := $i451; + goto $bb144; +$bb141: + assume !(($i445 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 18} true; + assume {:verifier.code 0} true; + $i446 := $sext.i16.i32($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 20} true; + assume {:verifier.code 0} true; + $i447 := $sgt.i32($i446, 32767); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 9} true; + assume {:verifier.code 0} true; + $i448 := $i440; + assume {:branchcond $i447} true; + goto $bb142, $bb143; +$bb142: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 9} true; + assume {:verifier.code 0} true; + assume ($i447 == 1); + goto $bb140; +$bb143: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 939, 9} true; + assume {:verifier.code 0} true; + assume !(($i447 == 1)); + goto $bb144; +$bb144: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 942, 3} true; + assume {:verifier.code 0} true; + $i443 := $i448; + goto $bb138; +} +const __SMACK_and8: ref; +axiom (__SMACK_and8 == $sub.ref(0, 20632)); +procedure __SMACK_and8($i0: i8, $i1: i8) + returns ($r: i8) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i8; + var $i6: i32; + var $i7: i1; + var $i9: i32; + var $i10: i1; + var $i11: i32; + var $i12: i1; + var $i14: i32; + var $i15: i32; + var $i16: i8; + var $i13: i8; + var $i8: i8; + var $i17: i32; + var $i18: i32; + var $i19: i8; + var $i20: i32; + var $i21: i32; + var $i22: i32; + var $i23: i8; + var $i24: i32; + var $i25: i32; + var $i26: i8; + var $i27: i32; + var $i28: i32; + var $i29: i32; + var $i30: i8; + var $i31: i32; + var $i32: i32; + var $i33: i32; + var $i34: i8; + var $i35: i32; + var $i36: i1; + var $i38: i32; + var $i39: i1; + var $i40: i32; + var $i41: i1; + var $i43: i32; + var $i44: i32; + var $i45: i8; + var $i42: i8; + var $i37: i8; + var $i46: i32; + var $i47: i32; + var $i48: i8; + var $i49: i32; + var $i50: i32; + var $i51: i32; + var $i52: i8; + var $i53: i32; + var $i54: i32; + var $i55: i8; + var $i56: i32; + var $i57: i32; + var $i58: i32; + var $i59: i8; + var $i60: i32; + var $i61: i32; + var $i62: i32; + var $i63: i8; + var $i64: i32; + var $i65: i1; + var $i67: i32; + var $i68: i1; + var $i69: i32; + var $i70: i1; + var $i72: i32; + var $i73: i32; + var $i74: i8; + var $i71: i8; + var $i66: i8; + var $i75: i32; + var $i76: i32; + var $i77: i8; + var $i78: i32; + var $i79: i32; + var $i80: i32; + var $i81: i8; + var $i82: i32; + var $i83: i32; + var $i84: i8; + var $i85: i32; + var $i86: i32; + var $i87: i32; + var $i88: i8; + var $i89: i32; + var $i90: i32; + var $i91: i32; + var $i92: i8; + var $i93: i32; + var $i94: i1; + var $i96: i32; + var $i97: i1; + var $i98: i32; + var $i99: i1; + var $i101: i32; + var $i102: i32; + var $i103: i8; + var $i100: i8; + var $i95: i8; + var $i104: i32; + var $i105: i32; + var $i106: i8; + var $i107: i32; + var $i108: i32; + var $i109: i32; + var $i110: i8; + var $i111: i32; + var $i112: i32; + var $i113: i8; + var $i114: i32; + var $i115: i32; + var $i116: i32; + var $i117: i8; + var $i118: i32; + var $i119: i32; + var $i120: i32; + var $i121: i8; + var $i122: i32; + var $i123: i1; + var $i125: i32; + var $i126: i1; + var $i127: i32; + var $i128: i1; + var $i130: i32; + var $i131: i32; + var $i132: i8; + var $i129: i8; + var $i124: i8; + var $i133: i32; + var $i134: i32; + var $i135: i8; + var $i136: i32; + var $i137: i32; + var $i138: i32; + var $i139: i8; + var $i140: i32; + var $i141: i32; + var $i142: i8; + var $i143: i32; + var $i144: i32; + var $i145: i32; + var $i146: i8; + var $i147: i32; + var $i148: i32; + var $i149: i32; + var $i150: i8; + var $i151: i32; + var $i152: i1; + var $i154: i32; + var $i155: i1; + var $i156: i32; + var $i157: i1; + var $i159: i32; + var $i160: i32; + var $i161: i8; + var $i158: i8; + var $i153: i8; + var $i162: i32; + var $i163: i32; + var $i164: i8; + var $i165: i32; + var $i166: i32; + var $i167: i32; + var $i168: i8; + var $i169: i32; + var $i170: i32; + var $i171: i8; + var $i172: i32; + var $i173: i32; + var $i174: i32; + var $i175: i8; + var $i176: i32; + var $i177: i32; + var $i178: i32; + var $i179: i8; + var $i180: i32; + var $i181: i1; + var $i183: i32; + var $i184: i1; + var $i185: i32; + var $i186: i1; + var $i188: i32; + var $i189: i32; + var $i190: i8; + var $i187: i8; + var $i182: i8; + var $i191: i32; + var $i192: i32; + var $i193: i8; + var $i194: i32; + var $i195: i32; + var $i196: i32; + var $i197: i8; + var $i198: i32; + var $i199: i32; + var $i200: i8; + var $i201: i32; + var $i202: i32; + var $i203: i32; + var $i204: i8; + var $i205: i32; + var $i206: i32; + var $i207: i32; + var $i208: i8; + var $i209: i32; + var $i210: i1; + var $i212: i32; + var $i213: i1; + var $i214: i32; + var $i215: i1; + var $i217: i32; + var $i218: i32; + var $i219: i8; + var $i216: i8; + var $i211: i8; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 8} true; + assume {:verifier.code 0} true; + call {:cexpr "__SMACK_and8:arg:a"} boogie_si_record_i8($i0); + call {:cexpr "__SMACK_and8:arg:b"} boogie_si_record_i8($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 8} true; + assume {:verifier.code 0} true; + $i2 := $sext.i8.i32(0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 5} true; + assume {:verifier.code 0} true; + $i3 := $sext.i8.i32(0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 5} true; + assume {:verifier.code 0} true; + $i4 := $add.i32($i3, $i2); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 954, 5} true; + assume {:verifier.code 0} true; + $i5 := $trunc.i32.i8($i4); + call {:cexpr "c"} boogie_si_record_i8($i5); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 955, 7} true; + assume {:verifier.code 0} true; + $i6 := $sext.i8.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 955, 9} true; + assume {:verifier.code 0} true; + $i7 := $slt.i32($i6, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 955, 7} true; + assume {:verifier.code 0} true; + $i8 := $i5; + assume {:branchcond $i7} true; + goto $bb1, $bb2; +$bb1: + assume ($i7 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 9} true; + assume {:verifier.code 0} true; + $i9 := $sext.i8.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 11} true; + assume {:verifier.code 0} true; + $i10 := $slt.i32($i9, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i10} true; + goto $bb4, $bb6; +$bb2: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 955, 7} true; + assume {:verifier.code 0} true; + assume !(($i7 == 1)); + goto $bb3; +$bb3: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 960, 7} true; + assume {:verifier.code 0} true; + $i17 := $sext.i8.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 960, 9} true; + assume {:verifier.code 0} true; + $i18 := $srem.i32($i17, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 960, 7} true; + assume {:verifier.code 0} true; + $i19 := $trunc.i32.i8($i18); + call {:cexpr "a"} boogie_si_record_i8($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 961, 8} true; + assume {:verifier.code 0} true; + $i20 := $sext.i8.i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 961, 5} true; + assume {:verifier.code 0} true; + $i21 := $sext.i8.i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 961, 5} true; + assume {:verifier.code 0} true; + $i22 := $add.i32($i21, $i20); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 961, 5} true; + assume {:verifier.code 0} true; + $i23 := $trunc.i32.i8($i22); + call {:cexpr "a"} boogie_si_record_i8($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 962, 7} true; + assume {:verifier.code 0} true; + $i24 := $sext.i8.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 962, 9} true; + assume {:verifier.code 0} true; + $i25 := $srem.i32($i24, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 962, 7} true; + assume {:verifier.code 0} true; + $i26 := $trunc.i32.i8($i25); + call {:cexpr "b"} boogie_si_record_i8($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 963, 8} true; + assume {:verifier.code 0} true; + $i27 := $sext.i8.i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 963, 5} true; + assume {:verifier.code 0} true; + $i28 := $sext.i8.i32($i26); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 963, 5} true; + assume {:verifier.code 0} true; + $i29 := $add.i32($i28, $i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 963, 5} true; + assume {:verifier.code 0} true; + $i30 := $trunc.i32.i8($i29); + call {:cexpr "b"} boogie_si_record_i8($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 965, 8} true; + assume {:verifier.code 0} true; + $i31 := $sext.i8.i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 965, 5} true; + assume {:verifier.code 0} true; + $i32 := $sext.i8.i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 965, 5} true; + assume {:verifier.code 0} true; + $i33 := $add.i32($i32, $i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 965, 5} true; + assume {:verifier.code 0} true; + $i34 := $trunc.i32.i8($i33); + call {:cexpr "c"} boogie_si_record_i8($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 966, 7} true; + assume {:verifier.code 0} true; + $i35 := $sext.i8.i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 966, 9} true; + assume {:verifier.code 0} true; + $i36 := $slt.i32($i35, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 966, 7} true; + assume {:verifier.code 0} true; + $i37 := $i34; + assume {:branchcond $i36} true; + goto $bb10, $bb11; +$bb4: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 15} true; + assume {:verifier.code 0} true; + assume ($i10 == 1); + goto $bb5; +$bb5: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 957, 9} true; + assume {:verifier.code 0} true; + $i14 := $sext.i8.i32($i5); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 957, 9} true; + assume {:verifier.code 0} true; + $i15 := $add.i32($i14, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 957, 9} true; + assume {:verifier.code 0} true; + $i16 := $trunc.i32.i8($i15); + call {:cexpr "c"} boogie_si_record_i8($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 958, 5} true; + assume {:verifier.code 0} true; + $i13 := $i16; + goto $bb9; +$bb6: + assume !(($i10 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 18} true; + assume {:verifier.code 0} true; + $i11 := $sext.i8.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 20} true; + assume {:verifier.code 0} true; + $i12 := $sgt.i32($i11, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 9} true; + assume {:verifier.code 0} true; + $i13 := $i5; + assume {:branchcond $i12} true; + goto $bb7, $bb8; +$bb7: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 9} true; + assume {:verifier.code 0} true; + assume ($i12 == 1); + goto $bb5; +$bb8: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 956, 9} true; + assume {:verifier.code 0} true; + assume !(($i12 == 1)); + goto $bb9; +$bb9: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 959, 3} true; + assume {:verifier.code 0} true; + $i8 := $i13; + goto $bb3; +$bb10: + assume ($i36 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 9} true; + assume {:verifier.code 0} true; + $i38 := $sext.i8.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 11} true; + assume {:verifier.code 0} true; + $i39 := $slt.i32($i38, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i39} true; + goto $bb13, $bb15; +$bb11: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 966, 7} true; + assume {:verifier.code 0} true; + assume !(($i36 == 1)); + goto $bb12; +$bb12: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 971, 7} true; + assume {:verifier.code 0} true; + $i46 := $sext.i8.i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 971, 9} true; + assume {:verifier.code 0} true; + $i47 := $srem.i32($i46, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 971, 7} true; + assume {:verifier.code 0} true; + $i48 := $trunc.i32.i8($i47); + call {:cexpr "a"} boogie_si_record_i8($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 972, 8} true; + assume {:verifier.code 0} true; + $i49 := $sext.i8.i32($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 972, 5} true; + assume {:verifier.code 0} true; + $i50 := $sext.i8.i32($i48); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 972, 5} true; + assume {:verifier.code 0} true; + $i51 := $add.i32($i50, $i49); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 972, 5} true; + assume {:verifier.code 0} true; + $i52 := $trunc.i32.i8($i51); + call {:cexpr "a"} boogie_si_record_i8($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 973, 7} true; + assume {:verifier.code 0} true; + $i53 := $sext.i8.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 973, 9} true; + assume {:verifier.code 0} true; + $i54 := $srem.i32($i53, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 973, 7} true; + assume {:verifier.code 0} true; + $i55 := $trunc.i32.i8($i54); + call {:cexpr "b"} boogie_si_record_i8($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 974, 8} true; + assume {:verifier.code 0} true; + $i56 := $sext.i8.i32($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 974, 5} true; + assume {:verifier.code 0} true; + $i57 := $sext.i8.i32($i55); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 974, 5} true; + assume {:verifier.code 0} true; + $i58 := $add.i32($i57, $i56); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 974, 5} true; + assume {:verifier.code 0} true; + $i59 := $trunc.i32.i8($i58); + call {:cexpr "b"} boogie_si_record_i8($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 976, 8} true; + assume {:verifier.code 0} true; + $i60 := $sext.i8.i32($i37); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 976, 5} true; + assume {:verifier.code 0} true; + $i61 := $sext.i8.i32($i37); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 976, 5} true; + assume {:verifier.code 0} true; + $i62 := $add.i32($i61, $i60); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 976, 5} true; + assume {:verifier.code 0} true; + $i63 := $trunc.i32.i8($i62); + call {:cexpr "c"} boogie_si_record_i8($i63); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 977, 7} true; + assume {:verifier.code 0} true; + $i64 := $sext.i8.i32($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 977, 9} true; + assume {:verifier.code 0} true; + $i65 := $slt.i32($i64, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 977, 7} true; + assume {:verifier.code 0} true; + $i66 := $i63; + assume {:branchcond $i65} true; + goto $bb19, $bb20; +$bb13: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 15} true; + assume {:verifier.code 0} true; + assume ($i39 == 1); + goto $bb14; +$bb14: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 968, 9} true; + assume {:verifier.code 0} true; + $i43 := $sext.i8.i32($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 968, 9} true; + assume {:verifier.code 0} true; + $i44 := $add.i32($i43, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 968, 9} true; + assume {:verifier.code 0} true; + $i45 := $trunc.i32.i8($i44); + call {:cexpr "c"} boogie_si_record_i8($i45); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 969, 5} true; + assume {:verifier.code 0} true; + $i42 := $i45; + goto $bb18; +$bb15: + assume !(($i39 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 18} true; + assume {:verifier.code 0} true; + $i40 := $sext.i8.i32($i30); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 20} true; + assume {:verifier.code 0} true; + $i41 := $sgt.i32($i40, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 9} true; + assume {:verifier.code 0} true; + $i42 := $i34; + assume {:branchcond $i41} true; + goto $bb16, $bb17; +$bb16: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 9} true; + assume {:verifier.code 0} true; + assume ($i41 == 1); + goto $bb14; +$bb17: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 967, 9} true; + assume {:verifier.code 0} true; + assume !(($i41 == 1)); + goto $bb18; +$bb18: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 970, 3} true; + assume {:verifier.code 0} true; + $i37 := $i42; + goto $bb12; +$bb19: + assume ($i65 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 9} true; + assume {:verifier.code 0} true; + $i67 := $sext.i8.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 11} true; + assume {:verifier.code 0} true; + $i68 := $slt.i32($i67, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i68} true; + goto $bb22, $bb24; +$bb20: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 977, 7} true; + assume {:verifier.code 0} true; + assume !(($i65 == 1)); + goto $bb21; +$bb21: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 982, 7} true; + assume {:verifier.code 0} true; + $i75 := $sext.i8.i32($i52); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 982, 9} true; + assume {:verifier.code 0} true; + $i76 := $srem.i32($i75, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 982, 7} true; + assume {:verifier.code 0} true; + $i77 := $trunc.i32.i8($i76); + call {:cexpr "a"} boogie_si_record_i8($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 983, 8} true; + assume {:verifier.code 0} true; + $i78 := $sext.i8.i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 983, 5} true; + assume {:verifier.code 0} true; + $i79 := $sext.i8.i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 983, 5} true; + assume {:verifier.code 0} true; + $i80 := $add.i32($i79, $i78); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 983, 5} true; + assume {:verifier.code 0} true; + $i81 := $trunc.i32.i8($i80); + call {:cexpr "a"} boogie_si_record_i8($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 984, 7} true; + assume {:verifier.code 0} true; + $i82 := $sext.i8.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 984, 9} true; + assume {:verifier.code 0} true; + $i83 := $srem.i32($i82, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 984, 7} true; + assume {:verifier.code 0} true; + $i84 := $trunc.i32.i8($i83); + call {:cexpr "b"} boogie_si_record_i8($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 985, 8} true; + assume {:verifier.code 0} true; + $i85 := $sext.i8.i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 985, 5} true; + assume {:verifier.code 0} true; + $i86 := $sext.i8.i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 985, 5} true; + assume {:verifier.code 0} true; + $i87 := $add.i32($i86, $i85); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 985, 5} true; + assume {:verifier.code 0} true; + $i88 := $trunc.i32.i8($i87); + call {:cexpr "b"} boogie_si_record_i8($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 987, 8} true; + assume {:verifier.code 0} true; + $i89 := $sext.i8.i32($i66); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 987, 5} true; + assume {:verifier.code 0} true; + $i90 := $sext.i8.i32($i66); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 987, 5} true; + assume {:verifier.code 0} true; + $i91 := $add.i32($i90, $i89); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 987, 5} true; + assume {:verifier.code 0} true; + $i92 := $trunc.i32.i8($i91); + call {:cexpr "c"} boogie_si_record_i8($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 988, 7} true; + assume {:verifier.code 0} true; + $i93 := $sext.i8.i32($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 988, 9} true; + assume {:verifier.code 0} true; + $i94 := $slt.i32($i93, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 988, 7} true; + assume {:verifier.code 0} true; + $i95 := $i92; + assume {:branchcond $i94} true; + goto $bb28, $bb29; +$bb22: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 15} true; + assume {:verifier.code 0} true; + assume ($i68 == 1); + goto $bb23; +$bb23: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 979, 9} true; + assume {:verifier.code 0} true; + $i72 := $sext.i8.i32($i63); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 979, 9} true; + assume {:verifier.code 0} true; + $i73 := $add.i32($i72, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 979, 9} true; + assume {:verifier.code 0} true; + $i74 := $trunc.i32.i8($i73); + call {:cexpr "c"} boogie_si_record_i8($i74); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 980, 5} true; + assume {:verifier.code 0} true; + $i71 := $i74; + goto $bb27; +$bb24: + assume !(($i68 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 18} true; + assume {:verifier.code 0} true; + $i69 := $sext.i8.i32($i59); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 20} true; + assume {:verifier.code 0} true; + $i70 := $sgt.i32($i69, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 9} true; + assume {:verifier.code 0} true; + $i71 := $i63; + assume {:branchcond $i70} true; + goto $bb25, $bb26; +$bb25: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 9} true; + assume {:verifier.code 0} true; + assume ($i70 == 1); + goto $bb23; +$bb26: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 978, 9} true; + assume {:verifier.code 0} true; + assume !(($i70 == 1)); + goto $bb27; +$bb27: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 981, 3} true; + assume {:verifier.code 0} true; + $i66 := $i71; + goto $bb21; +$bb28: + assume ($i94 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 9} true; + assume {:verifier.code 0} true; + $i96 := $sext.i8.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 11} true; + assume {:verifier.code 0} true; + $i97 := $slt.i32($i96, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i97} true; + goto $bb31, $bb33; +$bb29: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 988, 7} true; + assume {:verifier.code 0} true; + assume !(($i94 == 1)); + goto $bb30; +$bb30: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 993, 7} true; + assume {:verifier.code 0} true; + $i104 := $sext.i8.i32($i81); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 993, 9} true; + assume {:verifier.code 0} true; + $i105 := $srem.i32($i104, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 993, 7} true; + assume {:verifier.code 0} true; + $i106 := $trunc.i32.i8($i105); + call {:cexpr "a"} boogie_si_record_i8($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 994, 8} true; + assume {:verifier.code 0} true; + $i107 := $sext.i8.i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 994, 5} true; + assume {:verifier.code 0} true; + $i108 := $sext.i8.i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 994, 5} true; + assume {:verifier.code 0} true; + $i109 := $add.i32($i108, $i107); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 994, 5} true; + assume {:verifier.code 0} true; + $i110 := $trunc.i32.i8($i109); + call {:cexpr "a"} boogie_si_record_i8($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 995, 7} true; + assume {:verifier.code 0} true; + $i111 := $sext.i8.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 995, 9} true; + assume {:verifier.code 0} true; + $i112 := $srem.i32($i111, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 995, 7} true; + assume {:verifier.code 0} true; + $i113 := $trunc.i32.i8($i112); + call {:cexpr "b"} boogie_si_record_i8($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 996, 8} true; + assume {:verifier.code 0} true; + $i114 := $sext.i8.i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 996, 5} true; + assume {:verifier.code 0} true; + $i115 := $sext.i8.i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 996, 5} true; + assume {:verifier.code 0} true; + $i116 := $add.i32($i115, $i114); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 996, 5} true; + assume {:verifier.code 0} true; + $i117 := $trunc.i32.i8($i116); + call {:cexpr "b"} boogie_si_record_i8($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 998, 8} true; + assume {:verifier.code 0} true; + $i118 := $sext.i8.i32($i95); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 998, 5} true; + assume {:verifier.code 0} true; + $i119 := $sext.i8.i32($i95); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 998, 5} true; + assume {:verifier.code 0} true; + $i120 := $add.i32($i119, $i118); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 998, 5} true; + assume {:verifier.code 0} true; + $i121 := $trunc.i32.i8($i120); + call {:cexpr "c"} boogie_si_record_i8($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 999, 7} true; + assume {:verifier.code 0} true; + $i122 := $sext.i8.i32($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 999, 9} true; + assume {:verifier.code 0} true; + $i123 := $slt.i32($i122, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 999, 7} true; + assume {:verifier.code 0} true; + $i124 := $i121; + assume {:branchcond $i123} true; + goto $bb37, $bb38; +$bb31: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 15} true; + assume {:verifier.code 0} true; + assume ($i97 == 1); + goto $bb32; +$bb32: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 990, 9} true; + assume {:verifier.code 0} true; + $i101 := $sext.i8.i32($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 990, 9} true; + assume {:verifier.code 0} true; + $i102 := $add.i32($i101, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 990, 9} true; + assume {:verifier.code 0} true; + $i103 := $trunc.i32.i8($i102); + call {:cexpr "c"} boogie_si_record_i8($i103); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 991, 5} true; + assume {:verifier.code 0} true; + $i100 := $i103; + goto $bb36; +$bb33: + assume !(($i97 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 18} true; + assume {:verifier.code 0} true; + $i98 := $sext.i8.i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 20} true; + assume {:verifier.code 0} true; + $i99 := $sgt.i32($i98, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 9} true; + assume {:verifier.code 0} true; + $i100 := $i92; + assume {:branchcond $i99} true; + goto $bb34, $bb35; +$bb34: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 9} true; + assume {:verifier.code 0} true; + assume ($i99 == 1); + goto $bb32; +$bb35: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 989, 9} true; + assume {:verifier.code 0} true; + assume !(($i99 == 1)); + goto $bb36; +$bb36: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 992, 3} true; + assume {:verifier.code 0} true; + $i95 := $i100; + goto $bb30; +$bb37: + assume ($i123 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 9} true; + assume {:verifier.code 0} true; + $i125 := $sext.i8.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 11} true; + assume {:verifier.code 0} true; + $i126 := $slt.i32($i125, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i126} true; + goto $bb40, $bb42; +$bb38: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 999, 7} true; + assume {:verifier.code 0} true; + assume !(($i123 == 1)); + goto $bb39; +$bb39: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1004, 7} true; + assume {:verifier.code 0} true; + $i133 := $sext.i8.i32($i110); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1004, 9} true; + assume {:verifier.code 0} true; + $i134 := $srem.i32($i133, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1004, 7} true; + assume {:verifier.code 0} true; + $i135 := $trunc.i32.i8($i134); + call {:cexpr "a"} boogie_si_record_i8($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1005, 8} true; + assume {:verifier.code 0} true; + $i136 := $sext.i8.i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1005, 5} true; + assume {:verifier.code 0} true; + $i137 := $sext.i8.i32($i135); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1005, 5} true; + assume {:verifier.code 0} true; + $i138 := $add.i32($i137, $i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1005, 5} true; + assume {:verifier.code 0} true; + $i139 := $trunc.i32.i8($i138); + call {:cexpr "a"} boogie_si_record_i8($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1006, 7} true; + assume {:verifier.code 0} true; + $i140 := $sext.i8.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1006, 9} true; + assume {:verifier.code 0} true; + $i141 := $srem.i32($i140, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1006, 7} true; + assume {:verifier.code 0} true; + $i142 := $trunc.i32.i8($i141); + call {:cexpr "b"} boogie_si_record_i8($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1007, 8} true; + assume {:verifier.code 0} true; + $i143 := $sext.i8.i32($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1007, 5} true; + assume {:verifier.code 0} true; + $i144 := $sext.i8.i32($i142); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1007, 5} true; + assume {:verifier.code 0} true; + $i145 := $add.i32($i144, $i143); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1007, 5} true; + assume {:verifier.code 0} true; + $i146 := $trunc.i32.i8($i145); + call {:cexpr "b"} boogie_si_record_i8($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1009, 8} true; + assume {:verifier.code 0} true; + $i147 := $sext.i8.i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1009, 5} true; + assume {:verifier.code 0} true; + $i148 := $sext.i8.i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1009, 5} true; + assume {:verifier.code 0} true; + $i149 := $add.i32($i148, $i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1009, 5} true; + assume {:verifier.code 0} true; + $i150 := $trunc.i32.i8($i149); + call {:cexpr "c"} boogie_si_record_i8($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1010, 7} true; + assume {:verifier.code 0} true; + $i151 := $sext.i8.i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1010, 9} true; + assume {:verifier.code 0} true; + $i152 := $slt.i32($i151, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1010, 7} true; + assume {:verifier.code 0} true; + $i153 := $i150; + assume {:branchcond $i152} true; + goto $bb46, $bb47; +$bb40: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 15} true; + assume {:verifier.code 0} true; + assume ($i126 == 1); + goto $bb41; +$bb41: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1001, 9} true; + assume {:verifier.code 0} true; + $i130 := $sext.i8.i32($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1001, 9} true; + assume {:verifier.code 0} true; + $i131 := $add.i32($i130, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1001, 9} true; + assume {:verifier.code 0} true; + $i132 := $trunc.i32.i8($i131); + call {:cexpr "c"} boogie_si_record_i8($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1002, 5} true; + assume {:verifier.code 0} true; + $i129 := $i132; + goto $bb45; +$bb42: + assume !(($i126 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 18} true; + assume {:verifier.code 0} true; + $i127 := $sext.i8.i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 20} true; + assume {:verifier.code 0} true; + $i128 := $sgt.i32($i127, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 9} true; + assume {:verifier.code 0} true; + $i129 := $i121; + assume {:branchcond $i128} true; + goto $bb43, $bb44; +$bb43: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 9} true; + assume {:verifier.code 0} true; + assume ($i128 == 1); + goto $bb41; +$bb44: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1000, 9} true; + assume {:verifier.code 0} true; + assume !(($i128 == 1)); + goto $bb45; +$bb45: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1003, 3} true; + assume {:verifier.code 0} true; + $i124 := $i129; + goto $bb39; +$bb46: + assume ($i152 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 9} true; + assume {:verifier.code 0} true; + $i154 := $sext.i8.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 11} true; + assume {:verifier.code 0} true; + $i155 := $slt.i32($i154, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i155} true; + goto $bb49, $bb51; +$bb47: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1010, 7} true; + assume {:verifier.code 0} true; + assume !(($i152 == 1)); + goto $bb48; +$bb48: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1015, 7} true; + assume {:verifier.code 0} true; + $i162 := $sext.i8.i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1015, 9} true; + assume {:verifier.code 0} true; + $i163 := $srem.i32($i162, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1015, 7} true; + assume {:verifier.code 0} true; + $i164 := $trunc.i32.i8($i163); + call {:cexpr "a"} boogie_si_record_i8($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1016, 8} true; + assume {:verifier.code 0} true; + $i165 := $sext.i8.i32($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1016, 5} true; + assume {:verifier.code 0} true; + $i166 := $sext.i8.i32($i164); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1016, 5} true; + assume {:verifier.code 0} true; + $i167 := $add.i32($i166, $i165); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1016, 5} true; + assume {:verifier.code 0} true; + $i168 := $trunc.i32.i8($i167); + call {:cexpr "a"} boogie_si_record_i8($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1017, 7} true; + assume {:verifier.code 0} true; + $i169 := $sext.i8.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1017, 9} true; + assume {:verifier.code 0} true; + $i170 := $srem.i32($i169, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1017, 7} true; + assume {:verifier.code 0} true; + $i171 := $trunc.i32.i8($i170); + call {:cexpr "b"} boogie_si_record_i8($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1018, 8} true; + assume {:verifier.code 0} true; + $i172 := $sext.i8.i32($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1018, 5} true; + assume {:verifier.code 0} true; + $i173 := $sext.i8.i32($i171); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1018, 5} true; + assume {:verifier.code 0} true; + $i174 := $add.i32($i173, $i172); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1018, 5} true; + assume {:verifier.code 0} true; + $i175 := $trunc.i32.i8($i174); + call {:cexpr "b"} boogie_si_record_i8($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1020, 8} true; + assume {:verifier.code 0} true; + $i176 := $sext.i8.i32($i153); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1020, 5} true; + assume {:verifier.code 0} true; + $i177 := $sext.i8.i32($i153); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1020, 5} true; + assume {:verifier.code 0} true; + $i178 := $add.i32($i177, $i176); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1020, 5} true; + assume {:verifier.code 0} true; + $i179 := $trunc.i32.i8($i178); + call {:cexpr "c"} boogie_si_record_i8($i179); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1021, 7} true; + assume {:verifier.code 0} true; + $i180 := $sext.i8.i32($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1021, 9} true; + assume {:verifier.code 0} true; + $i181 := $slt.i32($i180, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1021, 7} true; + assume {:verifier.code 0} true; + $i182 := $i179; + assume {:branchcond $i181} true; + goto $bb55, $bb56; +$bb49: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 15} true; + assume {:verifier.code 0} true; + assume ($i155 == 1); + goto $bb50; +$bb50: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1012, 9} true; + assume {:verifier.code 0} true; + $i159 := $sext.i8.i32($i150); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1012, 9} true; + assume {:verifier.code 0} true; + $i160 := $add.i32($i159, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1012, 9} true; + assume {:verifier.code 0} true; + $i161 := $trunc.i32.i8($i160); + call {:cexpr "c"} boogie_si_record_i8($i161); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1013, 5} true; + assume {:verifier.code 0} true; + $i158 := $i161; + goto $bb54; +$bb51: + assume !(($i155 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 18} true; + assume {:verifier.code 0} true; + $i156 := $sext.i8.i32($i146); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 20} true; + assume {:verifier.code 0} true; + $i157 := $sgt.i32($i156, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 9} true; + assume {:verifier.code 0} true; + $i158 := $i150; + assume {:branchcond $i157} true; + goto $bb52, $bb53; +$bb52: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 9} true; + assume {:verifier.code 0} true; + assume ($i157 == 1); + goto $bb50; +$bb53: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1011, 9} true; + assume {:verifier.code 0} true; + assume !(($i157 == 1)); + goto $bb54; +$bb54: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1014, 3} true; + assume {:verifier.code 0} true; + $i153 := $i158; + goto $bb48; +$bb55: + assume ($i181 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 9} true; + assume {:verifier.code 0} true; + $i183 := $sext.i8.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 11} true; + assume {:verifier.code 0} true; + $i184 := $slt.i32($i183, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i184} true; + goto $bb58, $bb60; +$bb56: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1021, 7} true; + assume {:verifier.code 0} true; + assume !(($i181 == 1)); + goto $bb57; +$bb57: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1026, 7} true; + assume {:verifier.code 0} true; + $i191 := $sext.i8.i32($i168); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1026, 9} true; + assume {:verifier.code 0} true; + $i192 := $srem.i32($i191, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1026, 7} true; + assume {:verifier.code 0} true; + $i193 := $trunc.i32.i8($i192); + call {:cexpr "a"} boogie_si_record_i8($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1027, 8} true; + assume {:verifier.code 0} true; + $i194 := $sext.i8.i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1027, 5} true; + assume {:verifier.code 0} true; + $i195 := $sext.i8.i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1027, 5} true; + assume {:verifier.code 0} true; + $i196 := $add.i32($i195, $i194); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1027, 5} true; + assume {:verifier.code 0} true; + $i197 := $trunc.i32.i8($i196); + call {:cexpr "a"} boogie_si_record_i8($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1028, 7} true; + assume {:verifier.code 0} true; + $i198 := $sext.i8.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1028, 9} true; + assume {:verifier.code 0} true; + $i199 := $srem.i32($i198, 128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1028, 7} true; + assume {:verifier.code 0} true; + $i200 := $trunc.i32.i8($i199); + call {:cexpr "b"} boogie_si_record_i8($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1029, 8} true; + assume {:verifier.code 0} true; + $i201 := $sext.i8.i32($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1029, 5} true; + assume {:verifier.code 0} true; + $i202 := $sext.i8.i32($i200); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1029, 5} true; + assume {:verifier.code 0} true; + $i203 := $add.i32($i202, $i201); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1029, 5} true; + assume {:verifier.code 0} true; + $i204 := $trunc.i32.i8($i203); + call {:cexpr "b"} boogie_si_record_i8($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1031, 8} true; + assume {:verifier.code 0} true; + $i205 := $sext.i8.i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1031, 5} true; + assume {:verifier.code 0} true; + $i206 := $sext.i8.i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1031, 5} true; + assume {:verifier.code 0} true; + $i207 := $add.i32($i206, $i205); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1031, 5} true; + assume {:verifier.code 0} true; + $i208 := $trunc.i32.i8($i207); + call {:cexpr "c"} boogie_si_record_i8($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1032, 7} true; + assume {:verifier.code 0} true; + $i209 := $sext.i8.i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1032, 9} true; + assume {:verifier.code 0} true; + $i210 := $slt.i32($i209, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1032, 7} true; + assume {:verifier.code 0} true; + $i211 := $i208; + assume {:branchcond $i210} true; + goto $bb64, $bb65; +$bb58: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 15} true; + assume {:verifier.code 0} true; + assume ($i184 == 1); + goto $bb59; +$bb59: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1023, 9} true; + assume {:verifier.code 0} true; + $i188 := $sext.i8.i32($i179); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1023, 9} true; + assume {:verifier.code 0} true; + $i189 := $add.i32($i188, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1023, 9} true; + assume {:verifier.code 0} true; + $i190 := $trunc.i32.i8($i189); + call {:cexpr "c"} boogie_si_record_i8($i190); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1024, 5} true; + assume {:verifier.code 0} true; + $i187 := $i190; + goto $bb63; +$bb60: + assume !(($i184 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 18} true; + assume {:verifier.code 0} true; + $i185 := $sext.i8.i32($i175); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 20} true; + assume {:verifier.code 0} true; + $i186 := $sgt.i32($i185, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 9} true; + assume {:verifier.code 0} true; + $i187 := $i179; + assume {:branchcond $i186} true; + goto $bb61, $bb62; +$bb61: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 9} true; + assume {:verifier.code 0} true; + assume ($i186 == 1); + goto $bb59; +$bb62: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1022, 9} true; + assume {:verifier.code 0} true; + assume !(($i186 == 1)); + goto $bb63; +$bb63: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1025, 3} true; + assume {:verifier.code 0} true; + $i182 := $i187; + goto $bb57; +$bb64: + assume ($i210 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 9} true; + assume {:verifier.code 0} true; + $i212 := $sext.i8.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 11} true; + assume {:verifier.code 0} true; + $i213 := $slt.i32($i212, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 15} true; + assume {:verifier.code 0} true; + assume {:branchcond $i213} true; + goto $bb67, $bb69; +$bb65: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1032, 7} true; + assume {:verifier.code 0} true; + assume !(($i210 == 1)); + goto $bb66; +$bb66: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1042, 3} true; + assume {:verifier.code 0} true; + $r := $i211; + $exn := false; + return; +$bb67: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 15} true; + assume {:verifier.code 0} true; + assume ($i213 == 1); + goto $bb68; +$bb68: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1034, 9} true; + assume {:verifier.code 0} true; + $i217 := $sext.i8.i32($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1034, 9} true; + assume {:verifier.code 0} true; + $i218 := $add.i32($i217, 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1034, 9} true; + assume {:verifier.code 0} true; + $i219 := $trunc.i32.i8($i218); + call {:cexpr "c"} boogie_si_record_i8($i219); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1035, 5} true; + assume {:verifier.code 0} true; + $i216 := $i219; + goto $bb72; +$bb69: + assume !(($i213 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 18} true; + assume {:verifier.code 0} true; + $i214 := $sext.i8.i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 20} true; + assume {:verifier.code 0} true; + $i215 := $sgt.i32($i214, 127); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 9} true; + assume {:verifier.code 0} true; + $i216 := $i208; + assume {:branchcond $i215} true; + goto $bb70, $bb71; +$bb70: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 9} true; + assume {:verifier.code 0} true; + assume ($i215 == 1); + goto $bb68; +$bb71: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1033, 9} true; + assume {:verifier.code 0} true; + assume !(($i215 == 1)); + goto $bb72; +$bb72: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1036, 3} true; + assume {:verifier.code 0} true; + $i211 := $i216; + goto $bb66; +} +const __SMACK_or32: ref; +axiom (__SMACK_or32 == $sub.ref(0, 21664)); +procedure __SMACK_or32($i0: i32, $i1: i32) + returns ($r: i32) +{ + var $i2: i32; + var $i3: i1; + var $i4: i32; + var $i6: i1; + var $i8: i32; + var $i7: i32; + var $i5: i32; + var $i9: i32; + var $i10: i64; + var $i11: i64; + var $i12: i32; + var $i13: i32; + var $i14: i64; + var $i15: i64; + var $i16: i32; + var $i17: i32; + var $i18: i1; + var $i19: i32; + var $i21: i1; + var $i23: i32; + var $i22: i32; + var $i20: i32; + var $i24: i32; + var $i25: i64; + var $i26: i64; + var $i27: i32; + var $i28: i32; + var $i29: i64; + var $i30: i64; + var $i31: i32; + var $i32: i32; + var $i33: i1; + var $i34: i32; + var $i36: i1; + var $i38: i32; + var $i37: i32; + var $i35: i32; + var $i39: i32; + var $i40: i64; + var $i41: i64; + var $i42: i32; + var $i43: i32; + var $i44: i64; + var $i45: i64; + var $i46: i32; + var $i47: i32; + var $i48: i1; + var $i49: i32; + var $i51: i1; + var $i53: i32; + var $i52: i32; + var $i50: i32; + var $i54: i32; + var $i55: i64; + var $i56: i64; + var $i57: i32; + var $i58: i32; + var $i59: i64; + var $i60: i64; + var $i61: i32; + var $i62: i32; + var $i63: i1; + var $i64: i32; + var $i66: i1; + var $i68: i32; + var $i67: i32; + var $i65: i32; + var $i69: i32; + var $i70: i64; + var $i71: i64; + var $i72: i32; + var $i73: i32; + var $i74: i64; + var $i75: i64; + var $i76: i32; + var $i77: i32; + var $i78: i1; + var $i79: i32; + var $i81: i1; + var $i83: i32; + var $i82: i32; + var $i80: i32; + var $i84: i32; + var $i85: i64; + var $i86: i64; + var $i87: i32; + var $i88: i32; + var $i89: i64; + var $i90: i64; + var $i91: i32; + var $i92: i32; + var $i93: i1; + var $i94: i32; + var $i96: i1; + var $i98: i32; + var $i97: i32; + var $i95: i32; + var $i99: i32; + var $i100: i64; + var $i101: i64; + var $i102: i32; + var $i103: i32; + var $i104: i64; + var $i105: i64; + var $i106: i32; + var $i107: i32; + var $i108: i1; + var $i109: i32; + var $i111: i1; + var $i113: i32; + var $i112: i32; + var $i110: i32; + var $i114: i32; + var $i115: i64; + var $i116: i64; + var $i117: i32; + var $i118: i32; + var $i119: i64; + var $i120: i64; + var $i121: i32; + var $i122: i32; + var $i123: i1; + var $i124: i32; + var $i126: i1; + var $i128: i32; + var $i127: i32; + var $i125: i32; + var $i129: i32; + var $i130: i64; + var $i131: i64; + var $i132: i32; + var $i133: i32; + var $i134: i64; + var $i135: i64; + var $i136: i32; + var $i137: i32; + var $i138: i1; + var $i139: i32; + var $i141: i1; + var $i143: i32; + var $i142: i32; + var $i140: i32; + var $i144: i32; + var $i145: i64; + var $i146: i64; + var $i147: i32; + var $i148: i32; + var $i149: i64; + var $i150: i64; + var $i151: i32; + var $i152: i32; + var $i153: i1; + var $i154: i32; + var $i156: i1; + var $i158: i32; + var $i157: i32; + var $i155: i32; + var $i159: i32; + var $i160: i64; + var $i161: i64; + var $i162: i32; + var $i163: i32; + var $i164: i64; + var $i165: i64; + var $i166: i32; + var $i167: i32; + var $i168: i1; + var $i169: i32; + var $i171: i1; + var $i173: i32; + var $i172: i32; + var $i170: i32; + var $i174: i32; + var $i175: i64; + var $i176: i64; + var $i177: i32; + var $i178: i32; + var $i179: i64; + var $i180: i64; + var $i181: i32; + var $i182: i32; + var $i183: i1; + var $i184: i32; + var $i186: i1; + var $i188: i32; + var $i187: i32; + var $i185: i32; + var $i189: i32; + var $i190: i64; + var $i191: i64; + var $i192: i32; + var $i193: i32; + var $i194: i64; + var $i195: i64; + var $i196: i32; + var $i197: i32; + var $i198: i1; + var $i199: i32; + var $i201: i1; + var $i203: i32; + var $i202: i32; + var $i200: i32; + var $i204: i32; + var $i205: i64; + var $i206: i64; + var $i207: i32; + var $i208: i32; + var $i209: i64; + var $i210: i64; + var $i211: i32; + var $i212: i32; + var $i213: i1; + var $i214: i32; + var $i216: i1; + var $i218: i32; + var $i217: i32; + var $i215: i32; + var $i219: i32; + var $i220: i64; + var $i221: i64; + var $i222: i32; + var $i223: i32; + var $i224: i64; + var $i225: i64; + var $i226: i32; + var $i227: i32; + var $i228: i1; + var $i229: i32; + var $i231: i1; + var $i233: i32; + var $i232: i32; + var $i230: i32; + var $i234: i32; + var $i235: i64; + var $i236: i64; + var $i237: i32; + var $i238: i32; + var $i239: i64; + var $i240: i64; + var $i241: i32; + var $i242: i32; + var $i243: i1; + var $i244: i32; + var $i246: i1; + var $i248: i32; + var $i247: i32; + var $i245: i32; + var $i249: i32; + var $i250: i64; + var $i251: i64; + var $i252: i32; + var $i253: i32; + var $i254: i64; + var $i255: i64; + var $i256: i32; + var $i257: i32; + var $i258: i1; + var $i259: i32; + var $i261: i1; + var $i263: i32; + var $i262: i32; + var $i260: i32; + var $i264: i32; + var $i265: i64; + var $i266: i64; + var $i267: i32; + var $i268: i32; + var $i269: i64; + var $i270: i64; + var $i271: i32; + var $i272: i32; + var $i273: i1; + var $i274: i32; + var $i276: i1; + var $i278: i32; + var $i277: i32; + var $i275: i32; + var $i279: i32; + var $i280: i64; + var $i281: i64; + var $i282: i32; + var $i283: i32; + var $i284: i64; + var $i285: i64; + var $i286: i32; + var $i287: i32; + var $i288: i1; + var $i289: i32; + var $i291: i1; + var $i293: i32; + var $i292: i32; + var $i290: i32; + var $i294: i32; + var $i295: i64; + var $i296: i64; + var $i297: i32; + var $i298: i32; + var $i299: i64; + var $i300: i64; + var $i301: i32; + var $i302: i32; + var $i303: i1; + var $i304: i32; + var $i306: i1; + var $i308: i32; + var $i307: i32; + var $i305: i32; + var $i309: i32; + var $i310: i64; + var $i311: i64; + var $i312: i32; + var $i313: i32; + var $i314: i64; + var $i315: i64; + var $i316: i32; + var $i317: i32; + var $i318: i1; + var $i319: i32; + var $i321: i1; + var $i323: i32; + var $i322: i32; + var $i320: i32; + var $i324: i32; + var $i325: i64; + var $i326: i64; + var $i327: i32; + var $i328: i32; + var $i329: i64; + var $i330: i64; + var $i331: i32; + var $i332: i32; + var $i333: i1; + var $i334: i32; + var $i336: i1; + var $i338: i32; + var $i337: i32; + var $i335: i32; + var $i339: i32; + var $i340: i64; + var $i341: i64; + var $i342: i32; + var $i343: i32; + var $i344: i64; + var $i345: i64; + var $i346: i32; + var $i347: i32; + var $i348: i1; + var $i349: i32; + var $i351: i1; + var $i353: i32; + var $i352: i32; + var $i350: i32; + var $i354: i32; + var $i355: i64; + var $i356: i64; + var $i357: i32; + var $i358: i32; + var $i359: i64; + var $i360: i64; + var $i361: i32; + var $i362: i32; + var $i363: i1; + var $i364: i32; + var $i366: i1; + var $i368: i32; + var $i367: i32; + var $i365: i32; + var $i369: i32; + var $i370: i64; + var $i371: i64; + var $i372: i32; + var $i373: i32; + var $i374: i64; + var $i375: i64; + var $i376: i32; + var $i377: i32; + var $i378: i1; + var $i379: i32; + var $i381: i1; + var $i383: i32; + var $i382: i32; + var $i380: i32; + var $i384: i32; + var $i385: i64; + var $i386: i64; + var $i387: i32; + var $i388: i32; + var $i389: i64; + var $i390: i64; + var $i391: i32; + var $i392: i32; + var $i393: i1; + var $i394: i32; + var $i396: i1; + var $i398: i32; + var $i397: i32; + var $i395: i32; + var $i399: i32; + var $i400: i64; + var $i401: i64; + var $i402: i32; + var $i403: i32; + var $i404: i64; + var $i405: i64; + var $i406: i32; + var $i407: i32; + var $i408: i1; + var $i409: i32; + var $i411: i1; + var $i413: i32; + var $i412: i32; + var $i410: i32; + var $i414: i32; + var $i415: i64; + var $i416: i64; + var $i417: i32; + var $i418: i32; + var $i419: i64; + var $i420: i64; + var $i421: i32; + var $i422: i32; + var $i423: i1; + var $i424: i32; + var $i426: i1; + var $i428: i32; + var $i427: i32; + var $i425: i32; + var $i429: i32; + var $i430: i64; + var $i431: i64; + var $i432: i32; + var $i433: i32; + var $i434: i64; + var $i435: i64; + var $i436: i32; + var $i437: i32; + var $i438: i1; + var $i439: i32; + var $i441: i1; + var $i443: i32; + var $i442: i32; + var $i440: i32; + var $i444: i32; + var $i445: i64; + var $i446: i64; + var $i447: i32; + var $i448: i32; + var $i449: i64; + var $i450: i64; + var $i451: i32; + var $i452: i32; + var $i453: i1; + var $i454: i32; + var $i456: i1; + var $i458: i32; + var $i457: i32; + var $i455: i32; + var $i459: i32; + var $i460: i64; + var $i461: i64; + var $i462: i32; + var $i463: i32; + var $i464: i64; + var $i465: i64; + var $i466: i32; + var $i467: i32; + var $i468: i1; + var $i469: i32; + var $i471: i1; + var $i473: i32; + var $i472: i32; + var $i470: i32; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1048, 5} true; + assume {:verifier.code 0} true; + call {:cexpr "__SMACK_or32:arg:a"} boogie_si_record_i32($i0); + call {:cexpr "__SMACK_or32:arg:b"} boogie_si_record_i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1048, 5} true; + assume {:verifier.code 0} true; + $i2 := $add.i32(0, 0); + call {:cexpr "c"} boogie_si_record_i32($i2); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1049, 9} true; + assume {:verifier.code 0} true; + $i3 := $slt.i32($i0, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1049, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i3} true; + goto $bb1, $bb2; +$bb1: + assume ($i3 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1050, 7} true; + assume {:verifier.code 0} true; + $i4 := $add.i32($i2, 1); + call {:cexpr "c"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1051, 3} true; + assume {:verifier.code 0} true; + $i5 := $i4; + goto $bb3; +$bb2: + assume !(($i3 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1051, 16} true; + assume {:verifier.code 0} true; + $i6 := $slt.i32($i1, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1051, 14} true; + assume {:verifier.code 0} true; + $i7 := $i2; + assume {:branchcond $i6} true; + goto $bb4, $bb5; +$bb3: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1054, 5} true; + assume {:verifier.code 0} true; + $i9 := $add.i32($i0, $i0); + call {:cexpr "a"} boogie_si_record_i32($i9); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1055, 7} true; + assume {:verifier.code 0} true; + $i10 := $sext.i32.i64($i9); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1055, 9} true; + assume {:verifier.code 0} true; + $i11 := $srem.i64($i10, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1055, 7} true; + assume {:verifier.code 0} true; + $i12 := $trunc.i64.i32($i11); + call {:cexpr "a"} boogie_si_record_i32($i12); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1056, 5} true; + assume {:verifier.code 0} true; + $i13 := $add.i32($i1, $i1); + call {:cexpr "b"} boogie_si_record_i32($i13); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1057, 7} true; + assume {:verifier.code 0} true; + $i14 := $sext.i32.i64($i13); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1057, 9} true; + assume {:verifier.code 0} true; + $i15 := $srem.i64($i14, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1057, 7} true; + assume {:verifier.code 0} true; + $i16 := $trunc.i64.i32($i15); + call {:cexpr "b"} boogie_si_record_i32($i16); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1059, 5} true; + assume {:verifier.code 0} true; + $i17 := $add.i32($i5, $i5); + call {:cexpr "c"} boogie_si_record_i32($i17); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1060, 9} true; + assume {:verifier.code 0} true; + $i18 := $slt.i32($i12, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1060, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i18} true; + goto $bb7, $bb8; +$bb4: + assume ($i6 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1052, 7} true; + assume {:verifier.code 0} true; + $i8 := $add.i32($i2, 1); + call {:cexpr "c"} boogie_si_record_i32($i8); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1053, 3} true; + assume {:verifier.code 0} true; + $i7 := $i8; + goto $bb6; +$bb5: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1051, 14} true; + assume {:verifier.code 0} true; + assume !(($i6 == 1)); + goto $bb6; +$bb6: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i5 := $i7; + goto $bb3; +$bb7: + assume ($i18 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1061, 7} true; + assume {:verifier.code 0} true; + $i19 := $add.i32($i17, 1); + call {:cexpr "c"} boogie_si_record_i32($i19); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1062, 3} true; + assume {:verifier.code 0} true; + $i20 := $i19; + goto $bb9; +$bb8: + assume !(($i18 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1062, 16} true; + assume {:verifier.code 0} true; + $i21 := $slt.i32($i16, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1062, 14} true; + assume {:verifier.code 0} true; + $i22 := $i17; + assume {:branchcond $i21} true; + goto $bb10, $bb11; +$bb9: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1065, 5} true; + assume {:verifier.code 0} true; + $i24 := $add.i32($i12, $i12); + call {:cexpr "a"} boogie_si_record_i32($i24); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1066, 7} true; + assume {:verifier.code 0} true; + $i25 := $sext.i32.i64($i24); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1066, 9} true; + assume {:verifier.code 0} true; + $i26 := $srem.i64($i25, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1066, 7} true; + assume {:verifier.code 0} true; + $i27 := $trunc.i64.i32($i26); + call {:cexpr "a"} boogie_si_record_i32($i27); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1067, 5} true; + assume {:verifier.code 0} true; + $i28 := $add.i32($i16, $i16); + call {:cexpr "b"} boogie_si_record_i32($i28); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1068, 7} true; + assume {:verifier.code 0} true; + $i29 := $sext.i32.i64($i28); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1068, 9} true; + assume {:verifier.code 0} true; + $i30 := $srem.i64($i29, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1068, 7} true; + assume {:verifier.code 0} true; + $i31 := $trunc.i64.i32($i30); + call {:cexpr "b"} boogie_si_record_i32($i31); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1070, 5} true; + assume {:verifier.code 0} true; + $i32 := $add.i32($i20, $i20); + call {:cexpr "c"} boogie_si_record_i32($i32); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1071, 9} true; + assume {:verifier.code 0} true; + $i33 := $slt.i32($i27, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1071, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i33} true; + goto $bb13, $bb14; +$bb10: + assume ($i21 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1063, 7} true; + assume {:verifier.code 0} true; + $i23 := $add.i32($i17, 1); + call {:cexpr "c"} boogie_si_record_i32($i23); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1064, 3} true; + assume {:verifier.code 0} true; + $i22 := $i23; + goto $bb12; +$bb11: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1062, 14} true; + assume {:verifier.code 0} true; + assume !(($i21 == 1)); + goto $bb12; +$bb12: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i20 := $i22; + goto $bb9; +$bb13: + assume ($i33 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1072, 7} true; + assume {:verifier.code 0} true; + $i34 := $add.i32($i32, 1); + call {:cexpr "c"} boogie_si_record_i32($i34); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1073, 3} true; + assume {:verifier.code 0} true; + $i35 := $i34; + goto $bb15; +$bb14: + assume !(($i33 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1073, 16} true; + assume {:verifier.code 0} true; + $i36 := $slt.i32($i31, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1073, 14} true; + assume {:verifier.code 0} true; + $i37 := $i32; + assume {:branchcond $i36} true; + goto $bb16, $bb17; +$bb15: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1076, 5} true; + assume {:verifier.code 0} true; + $i39 := $add.i32($i27, $i27); + call {:cexpr "a"} boogie_si_record_i32($i39); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1077, 7} true; + assume {:verifier.code 0} true; + $i40 := $sext.i32.i64($i39); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1077, 9} true; + assume {:verifier.code 0} true; + $i41 := $srem.i64($i40, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1077, 7} true; + assume {:verifier.code 0} true; + $i42 := $trunc.i64.i32($i41); + call {:cexpr "a"} boogie_si_record_i32($i42); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1078, 5} true; + assume {:verifier.code 0} true; + $i43 := $add.i32($i31, $i31); + call {:cexpr "b"} boogie_si_record_i32($i43); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1079, 7} true; + assume {:verifier.code 0} true; + $i44 := $sext.i32.i64($i43); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1079, 9} true; + assume {:verifier.code 0} true; + $i45 := $srem.i64($i44, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1079, 7} true; + assume {:verifier.code 0} true; + $i46 := $trunc.i64.i32($i45); + call {:cexpr "b"} boogie_si_record_i32($i46); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1081, 5} true; + assume {:verifier.code 0} true; + $i47 := $add.i32($i35, $i35); + call {:cexpr "c"} boogie_si_record_i32($i47); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1082, 9} true; + assume {:verifier.code 0} true; + $i48 := $slt.i32($i42, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1082, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i48} true; + goto $bb19, $bb20; +$bb16: + assume ($i36 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1074, 7} true; + assume {:verifier.code 0} true; + $i38 := $add.i32($i32, 1); + call {:cexpr "c"} boogie_si_record_i32($i38); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1075, 3} true; + assume {:verifier.code 0} true; + $i37 := $i38; + goto $bb18; +$bb17: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1073, 14} true; + assume {:verifier.code 0} true; + assume !(($i36 == 1)); + goto $bb18; +$bb18: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i35 := $i37; + goto $bb15; +$bb19: + assume ($i48 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1083, 7} true; + assume {:verifier.code 0} true; + $i49 := $add.i32($i47, 1); + call {:cexpr "c"} boogie_si_record_i32($i49); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1084, 3} true; + assume {:verifier.code 0} true; + $i50 := $i49; + goto $bb21; +$bb20: + assume !(($i48 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1084, 16} true; + assume {:verifier.code 0} true; + $i51 := $slt.i32($i46, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1084, 14} true; + assume {:verifier.code 0} true; + $i52 := $i47; + assume {:branchcond $i51} true; + goto $bb22, $bb23; +$bb21: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1087, 5} true; + assume {:verifier.code 0} true; + $i54 := $add.i32($i42, $i42); + call {:cexpr "a"} boogie_si_record_i32($i54); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1088, 7} true; + assume {:verifier.code 0} true; + $i55 := $sext.i32.i64($i54); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1088, 9} true; + assume {:verifier.code 0} true; + $i56 := $srem.i64($i55, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1088, 7} true; + assume {:verifier.code 0} true; + $i57 := $trunc.i64.i32($i56); + call {:cexpr "a"} boogie_si_record_i32($i57); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1089, 5} true; + assume {:verifier.code 0} true; + $i58 := $add.i32($i46, $i46); + call {:cexpr "b"} boogie_si_record_i32($i58); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1090, 7} true; + assume {:verifier.code 0} true; + $i59 := $sext.i32.i64($i58); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1090, 9} true; + assume {:verifier.code 0} true; + $i60 := $srem.i64($i59, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1090, 7} true; + assume {:verifier.code 0} true; + $i61 := $trunc.i64.i32($i60); + call {:cexpr "b"} boogie_si_record_i32($i61); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1092, 5} true; + assume {:verifier.code 0} true; + $i62 := $add.i32($i50, $i50); + call {:cexpr "c"} boogie_si_record_i32($i62); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1093, 9} true; + assume {:verifier.code 0} true; + $i63 := $slt.i32($i57, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1093, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i63} true; + goto $bb25, $bb26; +$bb22: + assume ($i51 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1085, 7} true; + assume {:verifier.code 0} true; + $i53 := $add.i32($i47, 1); + call {:cexpr "c"} boogie_si_record_i32($i53); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1086, 3} true; + assume {:verifier.code 0} true; + $i52 := $i53; + goto $bb24; +$bb23: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1084, 14} true; + assume {:verifier.code 0} true; + assume !(($i51 == 1)); + goto $bb24; +$bb24: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i50 := $i52; + goto $bb21; +$bb25: + assume ($i63 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1094, 7} true; + assume {:verifier.code 0} true; + $i64 := $add.i32($i62, 1); + call {:cexpr "c"} boogie_si_record_i32($i64); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1095, 3} true; + assume {:verifier.code 0} true; + $i65 := $i64; + goto $bb27; +$bb26: + assume !(($i63 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1095, 16} true; + assume {:verifier.code 0} true; + $i66 := $slt.i32($i61, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1095, 14} true; + assume {:verifier.code 0} true; + $i67 := $i62; + assume {:branchcond $i66} true; + goto $bb28, $bb29; +$bb27: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1098, 5} true; + assume {:verifier.code 0} true; + $i69 := $add.i32($i57, $i57); + call {:cexpr "a"} boogie_si_record_i32($i69); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1099, 7} true; + assume {:verifier.code 0} true; + $i70 := $sext.i32.i64($i69); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1099, 9} true; + assume {:verifier.code 0} true; + $i71 := $srem.i64($i70, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1099, 7} true; + assume {:verifier.code 0} true; + $i72 := $trunc.i64.i32($i71); + call {:cexpr "a"} boogie_si_record_i32($i72); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1100, 5} true; + assume {:verifier.code 0} true; + $i73 := $add.i32($i61, $i61); + call {:cexpr "b"} boogie_si_record_i32($i73); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1101, 7} true; + assume {:verifier.code 0} true; + $i74 := $sext.i32.i64($i73); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1101, 9} true; + assume {:verifier.code 0} true; + $i75 := $srem.i64($i74, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1101, 7} true; + assume {:verifier.code 0} true; + $i76 := $trunc.i64.i32($i75); + call {:cexpr "b"} boogie_si_record_i32($i76); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1103, 5} true; + assume {:verifier.code 0} true; + $i77 := $add.i32($i65, $i65); + call {:cexpr "c"} boogie_si_record_i32($i77); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1104, 9} true; + assume {:verifier.code 0} true; + $i78 := $slt.i32($i72, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1104, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i78} true; + goto $bb31, $bb32; +$bb28: + assume ($i66 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1096, 7} true; + assume {:verifier.code 0} true; + $i68 := $add.i32($i62, 1); + call {:cexpr "c"} boogie_si_record_i32($i68); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1097, 3} true; + assume {:verifier.code 0} true; + $i67 := $i68; + goto $bb30; +$bb29: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1095, 14} true; + assume {:verifier.code 0} true; + assume !(($i66 == 1)); + goto $bb30; +$bb30: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i65 := $i67; + goto $bb27; +$bb31: + assume ($i78 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1105, 7} true; + assume {:verifier.code 0} true; + $i79 := $add.i32($i77, 1); + call {:cexpr "c"} boogie_si_record_i32($i79); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1106, 3} true; + assume {:verifier.code 0} true; + $i80 := $i79; + goto $bb33; +$bb32: + assume !(($i78 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1106, 16} true; + assume {:verifier.code 0} true; + $i81 := $slt.i32($i76, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1106, 14} true; + assume {:verifier.code 0} true; + $i82 := $i77; + assume {:branchcond $i81} true; + goto $bb34, $bb35; +$bb33: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1109, 5} true; + assume {:verifier.code 0} true; + $i84 := $add.i32($i72, $i72); + call {:cexpr "a"} boogie_si_record_i32($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1110, 7} true; + assume {:verifier.code 0} true; + $i85 := $sext.i32.i64($i84); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1110, 9} true; + assume {:verifier.code 0} true; + $i86 := $srem.i64($i85, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1110, 7} true; + assume {:verifier.code 0} true; + $i87 := $trunc.i64.i32($i86); + call {:cexpr "a"} boogie_si_record_i32($i87); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1111, 5} true; + assume {:verifier.code 0} true; + $i88 := $add.i32($i76, $i76); + call {:cexpr "b"} boogie_si_record_i32($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1112, 7} true; + assume {:verifier.code 0} true; + $i89 := $sext.i32.i64($i88); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1112, 9} true; + assume {:verifier.code 0} true; + $i90 := $srem.i64($i89, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1112, 7} true; + assume {:verifier.code 0} true; + $i91 := $trunc.i64.i32($i90); + call {:cexpr "b"} boogie_si_record_i32($i91); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1114, 5} true; + assume {:verifier.code 0} true; + $i92 := $add.i32($i80, $i80); + call {:cexpr "c"} boogie_si_record_i32($i92); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1115, 9} true; + assume {:verifier.code 0} true; + $i93 := $slt.i32($i87, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1115, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i93} true; + goto $bb37, $bb38; +$bb34: + assume ($i81 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1107, 7} true; + assume {:verifier.code 0} true; + $i83 := $add.i32($i77, 1); + call {:cexpr "c"} boogie_si_record_i32($i83); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1108, 3} true; + assume {:verifier.code 0} true; + $i82 := $i83; + goto $bb36; +$bb35: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1106, 14} true; + assume {:verifier.code 0} true; + assume !(($i81 == 1)); + goto $bb36; +$bb36: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i80 := $i82; + goto $bb33; +$bb37: + assume ($i93 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1116, 7} true; + assume {:verifier.code 0} true; + $i94 := $add.i32($i92, 1); + call {:cexpr "c"} boogie_si_record_i32($i94); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1117, 3} true; + assume {:verifier.code 0} true; + $i95 := $i94; + goto $bb39; +$bb38: + assume !(($i93 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1117, 16} true; + assume {:verifier.code 0} true; + $i96 := $slt.i32($i91, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1117, 14} true; + assume {:verifier.code 0} true; + $i97 := $i92; + assume {:branchcond $i96} true; + goto $bb40, $bb41; +$bb39: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1120, 5} true; + assume {:verifier.code 0} true; + $i99 := $add.i32($i87, $i87); + call {:cexpr "a"} boogie_si_record_i32($i99); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1121, 7} true; + assume {:verifier.code 0} true; + $i100 := $sext.i32.i64($i99); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1121, 9} true; + assume {:verifier.code 0} true; + $i101 := $srem.i64($i100, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1121, 7} true; + assume {:verifier.code 0} true; + $i102 := $trunc.i64.i32($i101); + call {:cexpr "a"} boogie_si_record_i32($i102); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1122, 5} true; + assume {:verifier.code 0} true; + $i103 := $add.i32($i91, $i91); + call {:cexpr "b"} boogie_si_record_i32($i103); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1123, 7} true; + assume {:verifier.code 0} true; + $i104 := $sext.i32.i64($i103); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1123, 9} true; + assume {:verifier.code 0} true; + $i105 := $srem.i64($i104, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1123, 7} true; + assume {:verifier.code 0} true; + $i106 := $trunc.i64.i32($i105); + call {:cexpr "b"} boogie_si_record_i32($i106); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1125, 5} true; + assume {:verifier.code 0} true; + $i107 := $add.i32($i95, $i95); + call {:cexpr "c"} boogie_si_record_i32($i107); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1126, 9} true; + assume {:verifier.code 0} true; + $i108 := $slt.i32($i102, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1126, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i108} true; + goto $bb43, $bb44; +$bb40: + assume ($i96 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1118, 7} true; + assume {:verifier.code 0} true; + $i98 := $add.i32($i92, 1); + call {:cexpr "c"} boogie_si_record_i32($i98); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1119, 3} true; + assume {:verifier.code 0} true; + $i97 := $i98; + goto $bb42; +$bb41: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1117, 14} true; + assume {:verifier.code 0} true; + assume !(($i96 == 1)); + goto $bb42; +$bb42: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i95 := $i97; + goto $bb39; +$bb43: + assume ($i108 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1127, 7} true; + assume {:verifier.code 0} true; + $i109 := $add.i32($i107, 1); + call {:cexpr "c"} boogie_si_record_i32($i109); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1128, 3} true; + assume {:verifier.code 0} true; + $i110 := $i109; + goto $bb45; +$bb44: + assume !(($i108 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1128, 16} true; + assume {:verifier.code 0} true; + $i111 := $slt.i32($i106, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1128, 14} true; + assume {:verifier.code 0} true; + $i112 := $i107; + assume {:branchcond $i111} true; + goto $bb46, $bb47; +$bb45: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1131, 5} true; + assume {:verifier.code 0} true; + $i114 := $add.i32($i102, $i102); + call {:cexpr "a"} boogie_si_record_i32($i114); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1132, 7} true; + assume {:verifier.code 0} true; + $i115 := $sext.i32.i64($i114); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1132, 9} true; + assume {:verifier.code 0} true; + $i116 := $srem.i64($i115, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1132, 7} true; + assume {:verifier.code 0} true; + $i117 := $trunc.i64.i32($i116); + call {:cexpr "a"} boogie_si_record_i32($i117); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1133, 5} true; + assume {:verifier.code 0} true; + $i118 := $add.i32($i106, $i106); + call {:cexpr "b"} boogie_si_record_i32($i118); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1134, 7} true; + assume {:verifier.code 0} true; + $i119 := $sext.i32.i64($i118); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1134, 9} true; + assume {:verifier.code 0} true; + $i120 := $srem.i64($i119, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1134, 7} true; + assume {:verifier.code 0} true; + $i121 := $trunc.i64.i32($i120); + call {:cexpr "b"} boogie_si_record_i32($i121); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1136, 5} true; + assume {:verifier.code 0} true; + $i122 := $add.i32($i110, $i110); + call {:cexpr "c"} boogie_si_record_i32($i122); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1137, 9} true; + assume {:verifier.code 0} true; + $i123 := $slt.i32($i117, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1137, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i123} true; + goto $bb49, $bb50; +$bb46: + assume ($i111 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1129, 7} true; + assume {:verifier.code 0} true; + $i113 := $add.i32($i107, 1); + call {:cexpr "c"} boogie_si_record_i32($i113); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1130, 3} true; + assume {:verifier.code 0} true; + $i112 := $i113; + goto $bb48; +$bb47: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1128, 14} true; + assume {:verifier.code 0} true; + assume !(($i111 == 1)); + goto $bb48; +$bb48: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i110 := $i112; + goto $bb45; +$bb49: + assume ($i123 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1138, 7} true; + assume {:verifier.code 0} true; + $i124 := $add.i32($i122, 1); + call {:cexpr "c"} boogie_si_record_i32($i124); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1139, 3} true; + assume {:verifier.code 0} true; + $i125 := $i124; + goto $bb51; +$bb50: + assume !(($i123 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1139, 16} true; + assume {:verifier.code 0} true; + $i126 := $slt.i32($i121, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1139, 14} true; + assume {:verifier.code 0} true; + $i127 := $i122; + assume {:branchcond $i126} true; + goto $bb52, $bb53; +$bb51: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1142, 5} true; + assume {:verifier.code 0} true; + $i129 := $add.i32($i117, $i117); + call {:cexpr "a"} boogie_si_record_i32($i129); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1143, 7} true; + assume {:verifier.code 0} true; + $i130 := $sext.i32.i64($i129); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1143, 9} true; + assume {:verifier.code 0} true; + $i131 := $srem.i64($i130, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1143, 7} true; + assume {:verifier.code 0} true; + $i132 := $trunc.i64.i32($i131); + call {:cexpr "a"} boogie_si_record_i32($i132); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1144, 5} true; + assume {:verifier.code 0} true; + $i133 := $add.i32($i121, $i121); + call {:cexpr "b"} boogie_si_record_i32($i133); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1145, 7} true; + assume {:verifier.code 0} true; + $i134 := $sext.i32.i64($i133); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1145, 9} true; + assume {:verifier.code 0} true; + $i135 := $srem.i64($i134, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1145, 7} true; + assume {:verifier.code 0} true; + $i136 := $trunc.i64.i32($i135); + call {:cexpr "b"} boogie_si_record_i32($i136); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1147, 5} true; + assume {:verifier.code 0} true; + $i137 := $add.i32($i125, $i125); + call {:cexpr "c"} boogie_si_record_i32($i137); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1148, 9} true; + assume {:verifier.code 0} true; + $i138 := $slt.i32($i132, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1148, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i138} true; + goto $bb55, $bb56; +$bb52: + assume ($i126 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1140, 7} true; + assume {:verifier.code 0} true; + $i128 := $add.i32($i122, 1); + call {:cexpr "c"} boogie_si_record_i32($i128); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1141, 3} true; + assume {:verifier.code 0} true; + $i127 := $i128; + goto $bb54; +$bb53: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1139, 14} true; + assume {:verifier.code 0} true; + assume !(($i126 == 1)); + goto $bb54; +$bb54: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i125 := $i127; + goto $bb51; +$bb55: + assume ($i138 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1149, 7} true; + assume {:verifier.code 0} true; + $i139 := $add.i32($i137, 1); + call {:cexpr "c"} boogie_si_record_i32($i139); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1150, 3} true; + assume {:verifier.code 0} true; + $i140 := $i139; + goto $bb57; +$bb56: + assume !(($i138 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1150, 16} true; + assume {:verifier.code 0} true; + $i141 := $slt.i32($i136, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1150, 14} true; + assume {:verifier.code 0} true; + $i142 := $i137; + assume {:branchcond $i141} true; + goto $bb58, $bb59; +$bb57: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1153, 5} true; + assume {:verifier.code 0} true; + $i144 := $add.i32($i132, $i132); + call {:cexpr "a"} boogie_si_record_i32($i144); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1154, 7} true; + assume {:verifier.code 0} true; + $i145 := $sext.i32.i64($i144); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1154, 9} true; + assume {:verifier.code 0} true; + $i146 := $srem.i64($i145, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1154, 7} true; + assume {:verifier.code 0} true; + $i147 := $trunc.i64.i32($i146); + call {:cexpr "a"} boogie_si_record_i32($i147); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1155, 5} true; + assume {:verifier.code 0} true; + $i148 := $add.i32($i136, $i136); + call {:cexpr "b"} boogie_si_record_i32($i148); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1156, 7} true; + assume {:verifier.code 0} true; + $i149 := $sext.i32.i64($i148); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1156, 9} true; + assume {:verifier.code 0} true; + $i150 := $srem.i64($i149, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1156, 7} true; + assume {:verifier.code 0} true; + $i151 := $trunc.i64.i32($i150); + call {:cexpr "b"} boogie_si_record_i32($i151); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1158, 5} true; + assume {:verifier.code 0} true; + $i152 := $add.i32($i140, $i140); + call {:cexpr "c"} boogie_si_record_i32($i152); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1159, 9} true; + assume {:verifier.code 0} true; + $i153 := $slt.i32($i147, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1159, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i153} true; + goto $bb61, $bb62; +$bb58: + assume ($i141 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1151, 7} true; + assume {:verifier.code 0} true; + $i143 := $add.i32($i137, 1); + call {:cexpr "c"} boogie_si_record_i32($i143); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1152, 3} true; + assume {:verifier.code 0} true; + $i142 := $i143; + goto $bb60; +$bb59: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1150, 14} true; + assume {:verifier.code 0} true; + assume !(($i141 == 1)); + goto $bb60; +$bb60: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i140 := $i142; + goto $bb57; +$bb61: + assume ($i153 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1160, 7} true; + assume {:verifier.code 0} true; + $i154 := $add.i32($i152, 1); + call {:cexpr "c"} boogie_si_record_i32($i154); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1161, 3} true; + assume {:verifier.code 0} true; + $i155 := $i154; + goto $bb63; +$bb62: + assume !(($i153 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1161, 16} true; + assume {:verifier.code 0} true; + $i156 := $slt.i32($i151, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1161, 14} true; + assume {:verifier.code 0} true; + $i157 := $i152; + assume {:branchcond $i156} true; + goto $bb64, $bb65; +$bb63: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1164, 5} true; + assume {:verifier.code 0} true; + $i159 := $add.i32($i147, $i147); + call {:cexpr "a"} boogie_si_record_i32($i159); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1165, 7} true; + assume {:verifier.code 0} true; + $i160 := $sext.i32.i64($i159); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1165, 9} true; + assume {:verifier.code 0} true; + $i161 := $srem.i64($i160, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1165, 7} true; + assume {:verifier.code 0} true; + $i162 := $trunc.i64.i32($i161); + call {:cexpr "a"} boogie_si_record_i32($i162); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1166, 5} true; + assume {:verifier.code 0} true; + $i163 := $add.i32($i151, $i151); + call {:cexpr "b"} boogie_si_record_i32($i163); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1167, 7} true; + assume {:verifier.code 0} true; + $i164 := $sext.i32.i64($i163); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1167, 9} true; + assume {:verifier.code 0} true; + $i165 := $srem.i64($i164, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1167, 7} true; + assume {:verifier.code 0} true; + $i166 := $trunc.i64.i32($i165); + call {:cexpr "b"} boogie_si_record_i32($i166); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1169, 5} true; + assume {:verifier.code 0} true; + $i167 := $add.i32($i155, $i155); + call {:cexpr "c"} boogie_si_record_i32($i167); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1170, 9} true; + assume {:verifier.code 0} true; + $i168 := $slt.i32($i162, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1170, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i168} true; + goto $bb67, $bb68; +$bb64: + assume ($i156 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1162, 7} true; + assume {:verifier.code 0} true; + $i158 := $add.i32($i152, 1); + call {:cexpr "c"} boogie_si_record_i32($i158); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1163, 3} true; + assume {:verifier.code 0} true; + $i157 := $i158; + goto $bb66; +$bb65: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1161, 14} true; + assume {:verifier.code 0} true; + assume !(($i156 == 1)); + goto $bb66; +$bb66: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i155 := $i157; + goto $bb63; +$bb67: + assume ($i168 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1171, 7} true; + assume {:verifier.code 0} true; + $i169 := $add.i32($i167, 1); + call {:cexpr "c"} boogie_si_record_i32($i169); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1172, 3} true; + assume {:verifier.code 0} true; + $i170 := $i169; + goto $bb69; +$bb68: + assume !(($i168 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1172, 16} true; + assume {:verifier.code 0} true; + $i171 := $slt.i32($i166, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1172, 14} true; + assume {:verifier.code 0} true; + $i172 := $i167; + assume {:branchcond $i171} true; + goto $bb70, $bb71; +$bb69: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1175, 5} true; + assume {:verifier.code 0} true; + $i174 := $add.i32($i162, $i162); + call {:cexpr "a"} boogie_si_record_i32($i174); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1176, 7} true; + assume {:verifier.code 0} true; + $i175 := $sext.i32.i64($i174); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1176, 9} true; + assume {:verifier.code 0} true; + $i176 := $srem.i64($i175, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1176, 7} true; + assume {:verifier.code 0} true; + $i177 := $trunc.i64.i32($i176); + call {:cexpr "a"} boogie_si_record_i32($i177); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1177, 5} true; + assume {:verifier.code 0} true; + $i178 := $add.i32($i166, $i166); + call {:cexpr "b"} boogie_si_record_i32($i178); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1178, 7} true; + assume {:verifier.code 0} true; + $i179 := $sext.i32.i64($i178); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1178, 9} true; + assume {:verifier.code 0} true; + $i180 := $srem.i64($i179, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1178, 7} true; + assume {:verifier.code 0} true; + $i181 := $trunc.i64.i32($i180); + call {:cexpr "b"} boogie_si_record_i32($i181); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1180, 5} true; + assume {:verifier.code 0} true; + $i182 := $add.i32($i170, $i170); + call {:cexpr "c"} boogie_si_record_i32($i182); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1181, 9} true; + assume {:verifier.code 0} true; + $i183 := $slt.i32($i177, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1181, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i183} true; + goto $bb73, $bb74; +$bb70: + assume ($i171 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1173, 7} true; + assume {:verifier.code 0} true; + $i173 := $add.i32($i167, 1); + call {:cexpr "c"} boogie_si_record_i32($i173); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1174, 3} true; + assume {:verifier.code 0} true; + $i172 := $i173; + goto $bb72; +$bb71: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1172, 14} true; + assume {:verifier.code 0} true; + assume !(($i171 == 1)); + goto $bb72; +$bb72: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i170 := $i172; + goto $bb69; +$bb73: + assume ($i183 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1182, 7} true; + assume {:verifier.code 0} true; + $i184 := $add.i32($i182, 1); + call {:cexpr "c"} boogie_si_record_i32($i184); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1183, 3} true; + assume {:verifier.code 0} true; + $i185 := $i184; + goto $bb75; +$bb74: + assume !(($i183 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1183, 16} true; + assume {:verifier.code 0} true; + $i186 := $slt.i32($i181, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1183, 14} true; + assume {:verifier.code 0} true; + $i187 := $i182; + assume {:branchcond $i186} true; + goto $bb76, $bb77; +$bb75: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1186, 5} true; + assume {:verifier.code 0} true; + $i189 := $add.i32($i177, $i177); + call {:cexpr "a"} boogie_si_record_i32($i189); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1187, 7} true; + assume {:verifier.code 0} true; + $i190 := $sext.i32.i64($i189); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1187, 9} true; + assume {:verifier.code 0} true; + $i191 := $srem.i64($i190, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1187, 7} true; + assume {:verifier.code 0} true; + $i192 := $trunc.i64.i32($i191); + call {:cexpr "a"} boogie_si_record_i32($i192); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1188, 5} true; + assume {:verifier.code 0} true; + $i193 := $add.i32($i181, $i181); + call {:cexpr "b"} boogie_si_record_i32($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1189, 7} true; + assume {:verifier.code 0} true; + $i194 := $sext.i32.i64($i193); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1189, 9} true; + assume {:verifier.code 0} true; + $i195 := $srem.i64($i194, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1189, 7} true; + assume {:verifier.code 0} true; + $i196 := $trunc.i64.i32($i195); + call {:cexpr "b"} boogie_si_record_i32($i196); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1191, 5} true; + assume {:verifier.code 0} true; + $i197 := $add.i32($i185, $i185); + call {:cexpr "c"} boogie_si_record_i32($i197); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1192, 9} true; + assume {:verifier.code 0} true; + $i198 := $slt.i32($i192, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1192, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i198} true; + goto $bb79, $bb80; +$bb76: + assume ($i186 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1184, 7} true; + assume {:verifier.code 0} true; + $i188 := $add.i32($i182, 1); + call {:cexpr "c"} boogie_si_record_i32($i188); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1185, 3} true; + assume {:verifier.code 0} true; + $i187 := $i188; + goto $bb78; +$bb77: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1183, 14} true; + assume {:verifier.code 0} true; + assume !(($i186 == 1)); + goto $bb78; +$bb78: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i185 := $i187; + goto $bb75; +$bb79: + assume ($i198 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1193, 7} true; + assume {:verifier.code 0} true; + $i199 := $add.i32($i197, 1); + call {:cexpr "c"} boogie_si_record_i32($i199); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1194, 3} true; + assume {:verifier.code 0} true; + $i200 := $i199; + goto $bb81; +$bb80: + assume !(($i198 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1194, 16} true; + assume {:verifier.code 0} true; + $i201 := $slt.i32($i196, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1194, 14} true; + assume {:verifier.code 0} true; + $i202 := $i197; + assume {:branchcond $i201} true; + goto $bb82, $bb83; +$bb81: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1197, 5} true; + assume {:verifier.code 0} true; + $i204 := $add.i32($i192, $i192); + call {:cexpr "a"} boogie_si_record_i32($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1198, 7} true; + assume {:verifier.code 0} true; + $i205 := $sext.i32.i64($i204); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1198, 9} true; + assume {:verifier.code 0} true; + $i206 := $srem.i64($i205, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1198, 7} true; + assume {:verifier.code 0} true; + $i207 := $trunc.i64.i32($i206); + call {:cexpr "a"} boogie_si_record_i32($i207); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1199, 5} true; + assume {:verifier.code 0} true; + $i208 := $add.i32($i196, $i196); + call {:cexpr "b"} boogie_si_record_i32($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1200, 7} true; + assume {:verifier.code 0} true; + $i209 := $sext.i32.i64($i208); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1200, 9} true; + assume {:verifier.code 0} true; + $i210 := $srem.i64($i209, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1200, 7} true; + assume {:verifier.code 0} true; + $i211 := $trunc.i64.i32($i210); + call {:cexpr "b"} boogie_si_record_i32($i211); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1202, 5} true; + assume {:verifier.code 0} true; + $i212 := $add.i32($i200, $i200); + call {:cexpr "c"} boogie_si_record_i32($i212); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1203, 9} true; + assume {:verifier.code 0} true; + $i213 := $slt.i32($i207, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1203, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i213} true; + goto $bb85, $bb86; +$bb82: + assume ($i201 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1195, 7} true; + assume {:verifier.code 0} true; + $i203 := $add.i32($i197, 1); + call {:cexpr "c"} boogie_si_record_i32($i203); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1196, 3} true; + assume {:verifier.code 0} true; + $i202 := $i203; + goto $bb84; +$bb83: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1194, 14} true; + assume {:verifier.code 0} true; + assume !(($i201 == 1)); + goto $bb84; +$bb84: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i200 := $i202; + goto $bb81; +$bb85: + assume ($i213 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1204, 7} true; + assume {:verifier.code 0} true; + $i214 := $add.i32($i212, 1); + call {:cexpr "c"} boogie_si_record_i32($i214); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1205, 3} true; + assume {:verifier.code 0} true; + $i215 := $i214; + goto $bb87; +$bb86: + assume !(($i213 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1205, 16} true; + assume {:verifier.code 0} true; + $i216 := $slt.i32($i211, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1205, 14} true; + assume {:verifier.code 0} true; + $i217 := $i212; + assume {:branchcond $i216} true; + goto $bb88, $bb89; +$bb87: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1208, 5} true; + assume {:verifier.code 0} true; + $i219 := $add.i32($i207, $i207); + call {:cexpr "a"} boogie_si_record_i32($i219); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1209, 7} true; + assume {:verifier.code 0} true; + $i220 := $sext.i32.i64($i219); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1209, 9} true; + assume {:verifier.code 0} true; + $i221 := $srem.i64($i220, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1209, 7} true; + assume {:verifier.code 0} true; + $i222 := $trunc.i64.i32($i221); + call {:cexpr "a"} boogie_si_record_i32($i222); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1210, 5} true; + assume {:verifier.code 0} true; + $i223 := $add.i32($i211, $i211); + call {:cexpr "b"} boogie_si_record_i32($i223); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1211, 7} true; + assume {:verifier.code 0} true; + $i224 := $sext.i32.i64($i223); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1211, 9} true; + assume {:verifier.code 0} true; + $i225 := $srem.i64($i224, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1211, 7} true; + assume {:verifier.code 0} true; + $i226 := $trunc.i64.i32($i225); + call {:cexpr "b"} boogie_si_record_i32($i226); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1213, 5} true; + assume {:verifier.code 0} true; + $i227 := $add.i32($i215, $i215); + call {:cexpr "c"} boogie_si_record_i32($i227); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1214, 9} true; + assume {:verifier.code 0} true; + $i228 := $slt.i32($i222, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1214, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i228} true; + goto $bb91, $bb92; +$bb88: + assume ($i216 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1206, 7} true; + assume {:verifier.code 0} true; + $i218 := $add.i32($i212, 1); + call {:cexpr "c"} boogie_si_record_i32($i218); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1207, 3} true; + assume {:verifier.code 0} true; + $i217 := $i218; + goto $bb90; +$bb89: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1205, 14} true; + assume {:verifier.code 0} true; + assume !(($i216 == 1)); + goto $bb90; +$bb90: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i215 := $i217; + goto $bb87; +$bb91: + assume ($i228 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1215, 7} true; + assume {:verifier.code 0} true; + $i229 := $add.i32($i227, 1); + call {:cexpr "c"} boogie_si_record_i32($i229); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1216, 3} true; + assume {:verifier.code 0} true; + $i230 := $i229; + goto $bb93; +$bb92: + assume !(($i228 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1216, 16} true; + assume {:verifier.code 0} true; + $i231 := $slt.i32($i226, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1216, 14} true; + assume {:verifier.code 0} true; + $i232 := $i227; + assume {:branchcond $i231} true; + goto $bb94, $bb95; +$bb93: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1219, 5} true; + assume {:verifier.code 0} true; + $i234 := $add.i32($i222, $i222); + call {:cexpr "a"} boogie_si_record_i32($i234); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1220, 7} true; + assume {:verifier.code 0} true; + $i235 := $sext.i32.i64($i234); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1220, 9} true; + assume {:verifier.code 0} true; + $i236 := $srem.i64($i235, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1220, 7} true; + assume {:verifier.code 0} true; + $i237 := $trunc.i64.i32($i236); + call {:cexpr "a"} boogie_si_record_i32($i237); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1221, 5} true; + assume {:verifier.code 0} true; + $i238 := $add.i32($i226, $i226); + call {:cexpr "b"} boogie_si_record_i32($i238); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1222, 7} true; + assume {:verifier.code 0} true; + $i239 := $sext.i32.i64($i238); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1222, 9} true; + assume {:verifier.code 0} true; + $i240 := $srem.i64($i239, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1222, 7} true; + assume {:verifier.code 0} true; + $i241 := $trunc.i64.i32($i240); + call {:cexpr "b"} boogie_si_record_i32($i241); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1224, 5} true; + assume {:verifier.code 0} true; + $i242 := $add.i32($i230, $i230); + call {:cexpr "c"} boogie_si_record_i32($i242); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1225, 9} true; + assume {:verifier.code 0} true; + $i243 := $slt.i32($i237, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1225, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i243} true; + goto $bb97, $bb98; +$bb94: + assume ($i231 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1217, 7} true; + assume {:verifier.code 0} true; + $i233 := $add.i32($i227, 1); + call {:cexpr "c"} boogie_si_record_i32($i233); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1218, 3} true; + assume {:verifier.code 0} true; + $i232 := $i233; + goto $bb96; +$bb95: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1216, 14} true; + assume {:verifier.code 0} true; + assume !(($i231 == 1)); + goto $bb96; +$bb96: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i230 := $i232; + goto $bb93; +$bb97: + assume ($i243 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1226, 7} true; + assume {:verifier.code 0} true; + $i244 := $add.i32($i242, 1); + call {:cexpr "c"} boogie_si_record_i32($i244); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1227, 3} true; + assume {:verifier.code 0} true; + $i245 := $i244; + goto $bb99; +$bb98: + assume !(($i243 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1227, 16} true; + assume {:verifier.code 0} true; + $i246 := $slt.i32($i241, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1227, 14} true; + assume {:verifier.code 0} true; + $i247 := $i242; + assume {:branchcond $i246} true; + goto $bb100, $bb101; +$bb99: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1230, 5} true; + assume {:verifier.code 0} true; + $i249 := $add.i32($i237, $i237); + call {:cexpr "a"} boogie_si_record_i32($i249); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1231, 7} true; + assume {:verifier.code 0} true; + $i250 := $sext.i32.i64($i249); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1231, 9} true; + assume {:verifier.code 0} true; + $i251 := $srem.i64($i250, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1231, 7} true; + assume {:verifier.code 0} true; + $i252 := $trunc.i64.i32($i251); + call {:cexpr "a"} boogie_si_record_i32($i252); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1232, 5} true; + assume {:verifier.code 0} true; + $i253 := $add.i32($i241, $i241); + call {:cexpr "b"} boogie_si_record_i32($i253); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1233, 7} true; + assume {:verifier.code 0} true; + $i254 := $sext.i32.i64($i253); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1233, 9} true; + assume {:verifier.code 0} true; + $i255 := $srem.i64($i254, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1233, 7} true; + assume {:verifier.code 0} true; + $i256 := $trunc.i64.i32($i255); + call {:cexpr "b"} boogie_si_record_i32($i256); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1235, 5} true; + assume {:verifier.code 0} true; + $i257 := $add.i32($i245, $i245); + call {:cexpr "c"} boogie_si_record_i32($i257); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1236, 9} true; + assume {:verifier.code 0} true; + $i258 := $slt.i32($i252, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1236, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i258} true; + goto $bb103, $bb104; +$bb100: + assume ($i246 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1228, 7} true; + assume {:verifier.code 0} true; + $i248 := $add.i32($i242, 1); + call {:cexpr "c"} boogie_si_record_i32($i248); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1229, 3} true; + assume {:verifier.code 0} true; + $i247 := $i248; + goto $bb102; +$bb101: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1227, 14} true; + assume {:verifier.code 0} true; + assume !(($i246 == 1)); + goto $bb102; +$bb102: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i245 := $i247; + goto $bb99; +$bb103: + assume ($i258 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1237, 7} true; + assume {:verifier.code 0} true; + $i259 := $add.i32($i257, 1); + call {:cexpr "c"} boogie_si_record_i32($i259); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1238, 3} true; + assume {:verifier.code 0} true; + $i260 := $i259; + goto $bb105; +$bb104: + assume !(($i258 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1238, 16} true; + assume {:verifier.code 0} true; + $i261 := $slt.i32($i256, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1238, 14} true; + assume {:verifier.code 0} true; + $i262 := $i257; + assume {:branchcond $i261} true; + goto $bb106, $bb107; +$bb105: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1241, 5} true; + assume {:verifier.code 0} true; + $i264 := $add.i32($i252, $i252); + call {:cexpr "a"} boogie_si_record_i32($i264); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1242, 7} true; + assume {:verifier.code 0} true; + $i265 := $sext.i32.i64($i264); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1242, 9} true; + assume {:verifier.code 0} true; + $i266 := $srem.i64($i265, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1242, 7} true; + assume {:verifier.code 0} true; + $i267 := $trunc.i64.i32($i266); + call {:cexpr "a"} boogie_si_record_i32($i267); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1243, 5} true; + assume {:verifier.code 0} true; + $i268 := $add.i32($i256, $i256); + call {:cexpr "b"} boogie_si_record_i32($i268); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1244, 7} true; + assume {:verifier.code 0} true; + $i269 := $sext.i32.i64($i268); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1244, 9} true; + assume {:verifier.code 0} true; + $i270 := $srem.i64($i269, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1244, 7} true; + assume {:verifier.code 0} true; + $i271 := $trunc.i64.i32($i270); + call {:cexpr "b"} boogie_si_record_i32($i271); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1246, 5} true; + assume {:verifier.code 0} true; + $i272 := $add.i32($i260, $i260); + call {:cexpr "c"} boogie_si_record_i32($i272); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1247, 9} true; + assume {:verifier.code 0} true; + $i273 := $slt.i32($i267, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1247, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i273} true; + goto $bb109, $bb110; +$bb106: + assume ($i261 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1239, 7} true; + assume {:verifier.code 0} true; + $i263 := $add.i32($i257, 1); + call {:cexpr "c"} boogie_si_record_i32($i263); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1240, 3} true; + assume {:verifier.code 0} true; + $i262 := $i263; + goto $bb108; +$bb107: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1238, 14} true; + assume {:verifier.code 0} true; + assume !(($i261 == 1)); + goto $bb108; +$bb108: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i260 := $i262; + goto $bb105; +$bb109: + assume ($i273 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1248, 7} true; + assume {:verifier.code 0} true; + $i274 := $add.i32($i272, 1); + call {:cexpr "c"} boogie_si_record_i32($i274); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1249, 3} true; + assume {:verifier.code 0} true; + $i275 := $i274; + goto $bb111; +$bb110: + assume !(($i273 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1249, 16} true; + assume {:verifier.code 0} true; + $i276 := $slt.i32($i271, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1249, 14} true; + assume {:verifier.code 0} true; + $i277 := $i272; + assume {:branchcond $i276} true; + goto $bb112, $bb113; +$bb111: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1252, 5} true; + assume {:verifier.code 0} true; + $i279 := $add.i32($i267, $i267); + call {:cexpr "a"} boogie_si_record_i32($i279); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1253, 7} true; + assume {:verifier.code 0} true; + $i280 := $sext.i32.i64($i279); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1253, 9} true; + assume {:verifier.code 0} true; + $i281 := $srem.i64($i280, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1253, 7} true; + assume {:verifier.code 0} true; + $i282 := $trunc.i64.i32($i281); + call {:cexpr "a"} boogie_si_record_i32($i282); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1254, 5} true; + assume {:verifier.code 0} true; + $i283 := $add.i32($i271, $i271); + call {:cexpr "b"} boogie_si_record_i32($i283); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1255, 7} true; + assume {:verifier.code 0} true; + $i284 := $sext.i32.i64($i283); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1255, 9} true; + assume {:verifier.code 0} true; + $i285 := $srem.i64($i284, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1255, 7} true; + assume {:verifier.code 0} true; + $i286 := $trunc.i64.i32($i285); + call {:cexpr "b"} boogie_si_record_i32($i286); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1257, 5} true; + assume {:verifier.code 0} true; + $i287 := $add.i32($i275, $i275); + call {:cexpr "c"} boogie_si_record_i32($i287); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1258, 9} true; + assume {:verifier.code 0} true; + $i288 := $slt.i32($i282, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1258, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i288} true; + goto $bb115, $bb116; +$bb112: + assume ($i276 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1250, 7} true; + assume {:verifier.code 0} true; + $i278 := $add.i32($i272, 1); + call {:cexpr "c"} boogie_si_record_i32($i278); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1251, 3} true; + assume {:verifier.code 0} true; + $i277 := $i278; + goto $bb114; +$bb113: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1249, 14} true; + assume {:verifier.code 0} true; + assume !(($i276 == 1)); + goto $bb114; +$bb114: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i275 := $i277; + goto $bb111; +$bb115: + assume ($i288 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1259, 7} true; + assume {:verifier.code 0} true; + $i289 := $add.i32($i287, 1); + call {:cexpr "c"} boogie_si_record_i32($i289); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1260, 3} true; + assume {:verifier.code 0} true; + $i290 := $i289; + goto $bb117; +$bb116: + assume !(($i288 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1260, 16} true; + assume {:verifier.code 0} true; + $i291 := $slt.i32($i286, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1260, 14} true; + assume {:verifier.code 0} true; + $i292 := $i287; + assume {:branchcond $i291} true; + goto $bb118, $bb119; +$bb117: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1263, 5} true; + assume {:verifier.code 0} true; + $i294 := $add.i32($i282, $i282); + call {:cexpr "a"} boogie_si_record_i32($i294); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1264, 7} true; + assume {:verifier.code 0} true; + $i295 := $sext.i32.i64($i294); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1264, 9} true; + assume {:verifier.code 0} true; + $i296 := $srem.i64($i295, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1264, 7} true; + assume {:verifier.code 0} true; + $i297 := $trunc.i64.i32($i296); + call {:cexpr "a"} boogie_si_record_i32($i297); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1265, 5} true; + assume {:verifier.code 0} true; + $i298 := $add.i32($i286, $i286); + call {:cexpr "b"} boogie_si_record_i32($i298); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1266, 7} true; + assume {:verifier.code 0} true; + $i299 := $sext.i32.i64($i298); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1266, 9} true; + assume {:verifier.code 0} true; + $i300 := $srem.i64($i299, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1266, 7} true; + assume {:verifier.code 0} true; + $i301 := $trunc.i64.i32($i300); + call {:cexpr "b"} boogie_si_record_i32($i301); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1268, 5} true; + assume {:verifier.code 0} true; + $i302 := $add.i32($i290, $i290); + call {:cexpr "c"} boogie_si_record_i32($i302); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1269, 9} true; + assume {:verifier.code 0} true; + $i303 := $slt.i32($i297, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1269, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i303} true; + goto $bb121, $bb122; +$bb118: + assume ($i291 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1261, 7} true; + assume {:verifier.code 0} true; + $i293 := $add.i32($i287, 1); + call {:cexpr "c"} boogie_si_record_i32($i293); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1262, 3} true; + assume {:verifier.code 0} true; + $i292 := $i293; + goto $bb120; +$bb119: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1260, 14} true; + assume {:verifier.code 0} true; + assume !(($i291 == 1)); + goto $bb120; +$bb120: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i290 := $i292; + goto $bb117; +$bb121: + assume ($i303 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1270, 7} true; + assume {:verifier.code 0} true; + $i304 := $add.i32($i302, 1); + call {:cexpr "c"} boogie_si_record_i32($i304); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1271, 3} true; + assume {:verifier.code 0} true; + $i305 := $i304; + goto $bb123; +$bb122: + assume !(($i303 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1271, 16} true; + assume {:verifier.code 0} true; + $i306 := $slt.i32($i301, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1271, 14} true; + assume {:verifier.code 0} true; + $i307 := $i302; + assume {:branchcond $i306} true; + goto $bb124, $bb125; +$bb123: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1274, 5} true; + assume {:verifier.code 0} true; + $i309 := $add.i32($i297, $i297); + call {:cexpr "a"} boogie_si_record_i32($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1275, 7} true; + assume {:verifier.code 0} true; + $i310 := $sext.i32.i64($i309); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1275, 9} true; + assume {:verifier.code 0} true; + $i311 := $srem.i64($i310, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1275, 7} true; + assume {:verifier.code 0} true; + $i312 := $trunc.i64.i32($i311); + call {:cexpr "a"} boogie_si_record_i32($i312); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1276, 5} true; + assume {:verifier.code 0} true; + $i313 := $add.i32($i301, $i301); + call {:cexpr "b"} boogie_si_record_i32($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1277, 7} true; + assume {:verifier.code 0} true; + $i314 := $sext.i32.i64($i313); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1277, 9} true; + assume {:verifier.code 0} true; + $i315 := $srem.i64($i314, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1277, 7} true; + assume {:verifier.code 0} true; + $i316 := $trunc.i64.i32($i315); + call {:cexpr "b"} boogie_si_record_i32($i316); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1279, 5} true; + assume {:verifier.code 0} true; + $i317 := $add.i32($i305, $i305); + call {:cexpr "c"} boogie_si_record_i32($i317); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1280, 9} true; + assume {:verifier.code 0} true; + $i318 := $slt.i32($i312, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1280, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i318} true; + goto $bb127, $bb128; +$bb124: + assume ($i306 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1272, 7} true; + assume {:verifier.code 0} true; + $i308 := $add.i32($i302, 1); + call {:cexpr "c"} boogie_si_record_i32($i308); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1273, 3} true; + assume {:verifier.code 0} true; + $i307 := $i308; + goto $bb126; +$bb125: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1271, 14} true; + assume {:verifier.code 0} true; + assume !(($i306 == 1)); + goto $bb126; +$bb126: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i305 := $i307; + goto $bb123; +$bb127: + assume ($i318 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1281, 7} true; + assume {:verifier.code 0} true; + $i319 := $add.i32($i317, 1); + call {:cexpr "c"} boogie_si_record_i32($i319); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1282, 3} true; + assume {:verifier.code 0} true; + $i320 := $i319; + goto $bb129; +$bb128: + assume !(($i318 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1282, 16} true; + assume {:verifier.code 0} true; + $i321 := $slt.i32($i316, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1282, 14} true; + assume {:verifier.code 0} true; + $i322 := $i317; + assume {:branchcond $i321} true; + goto $bb130, $bb131; +$bb129: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1285, 5} true; + assume {:verifier.code 0} true; + $i324 := $add.i32($i312, $i312); + call {:cexpr "a"} boogie_si_record_i32($i324); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1286, 7} true; + assume {:verifier.code 0} true; + $i325 := $sext.i32.i64($i324); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1286, 9} true; + assume {:verifier.code 0} true; + $i326 := $srem.i64($i325, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1286, 7} true; + assume {:verifier.code 0} true; + $i327 := $trunc.i64.i32($i326); + call {:cexpr "a"} boogie_si_record_i32($i327); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1287, 5} true; + assume {:verifier.code 0} true; + $i328 := $add.i32($i316, $i316); + call {:cexpr "b"} boogie_si_record_i32($i328); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1288, 7} true; + assume {:verifier.code 0} true; + $i329 := $sext.i32.i64($i328); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1288, 9} true; + assume {:verifier.code 0} true; + $i330 := $srem.i64($i329, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1288, 7} true; + assume {:verifier.code 0} true; + $i331 := $trunc.i64.i32($i330); + call {:cexpr "b"} boogie_si_record_i32($i331); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1290, 5} true; + assume {:verifier.code 0} true; + $i332 := $add.i32($i320, $i320); + call {:cexpr "c"} boogie_si_record_i32($i332); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1291, 9} true; + assume {:verifier.code 0} true; + $i333 := $slt.i32($i327, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1291, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i333} true; + goto $bb133, $bb134; +$bb130: + assume ($i321 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1283, 7} true; + assume {:verifier.code 0} true; + $i323 := $add.i32($i317, 1); + call {:cexpr "c"} boogie_si_record_i32($i323); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1284, 3} true; + assume {:verifier.code 0} true; + $i322 := $i323; + goto $bb132; +$bb131: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1282, 14} true; + assume {:verifier.code 0} true; + assume !(($i321 == 1)); + goto $bb132; +$bb132: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i320 := $i322; + goto $bb129; +$bb133: + assume ($i333 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1292, 7} true; + assume {:verifier.code 0} true; + $i334 := $add.i32($i332, 1); + call {:cexpr "c"} boogie_si_record_i32($i334); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1293, 3} true; + assume {:verifier.code 0} true; + $i335 := $i334; + goto $bb135; +$bb134: + assume !(($i333 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1293, 16} true; + assume {:verifier.code 0} true; + $i336 := $slt.i32($i331, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1293, 14} true; + assume {:verifier.code 0} true; + $i337 := $i332; + assume {:branchcond $i336} true; + goto $bb136, $bb137; +$bb135: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1296, 5} true; + assume {:verifier.code 0} true; + $i339 := $add.i32($i327, $i327); + call {:cexpr "a"} boogie_si_record_i32($i339); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1297, 7} true; + assume {:verifier.code 0} true; + $i340 := $sext.i32.i64($i339); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1297, 9} true; + assume {:verifier.code 0} true; + $i341 := $srem.i64($i340, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1297, 7} true; + assume {:verifier.code 0} true; + $i342 := $trunc.i64.i32($i341); + call {:cexpr "a"} boogie_si_record_i32($i342); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1298, 5} true; + assume {:verifier.code 0} true; + $i343 := $add.i32($i331, $i331); + call {:cexpr "b"} boogie_si_record_i32($i343); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1299, 7} true; + assume {:verifier.code 0} true; + $i344 := $sext.i32.i64($i343); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1299, 9} true; + assume {:verifier.code 0} true; + $i345 := $srem.i64($i344, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1299, 7} true; + assume {:verifier.code 0} true; + $i346 := $trunc.i64.i32($i345); + call {:cexpr "b"} boogie_si_record_i32($i346); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1301, 5} true; + assume {:verifier.code 0} true; + $i347 := $add.i32($i335, $i335); + call {:cexpr "c"} boogie_si_record_i32($i347); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1302, 9} true; + assume {:verifier.code 0} true; + $i348 := $slt.i32($i342, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1302, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i348} true; + goto $bb139, $bb140; +$bb136: + assume ($i336 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1294, 7} true; + assume {:verifier.code 0} true; + $i338 := $add.i32($i332, 1); + call {:cexpr "c"} boogie_si_record_i32($i338); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1295, 3} true; + assume {:verifier.code 0} true; + $i337 := $i338; + goto $bb138; +$bb137: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1293, 14} true; + assume {:verifier.code 0} true; + assume !(($i336 == 1)); + goto $bb138; +$bb138: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i335 := $i337; + goto $bb135; +$bb139: + assume ($i348 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1303, 7} true; + assume {:verifier.code 0} true; + $i349 := $add.i32($i347, 1); + call {:cexpr "c"} boogie_si_record_i32($i349); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1304, 3} true; + assume {:verifier.code 0} true; + $i350 := $i349; + goto $bb141; +$bb140: + assume !(($i348 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1304, 16} true; + assume {:verifier.code 0} true; + $i351 := $slt.i32($i346, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1304, 14} true; + assume {:verifier.code 0} true; + $i352 := $i347; + assume {:branchcond $i351} true; + goto $bb142, $bb143; +$bb141: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1307, 5} true; + assume {:verifier.code 0} true; + $i354 := $add.i32($i342, $i342); + call {:cexpr "a"} boogie_si_record_i32($i354); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1308, 7} true; + assume {:verifier.code 0} true; + $i355 := $sext.i32.i64($i354); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1308, 9} true; + assume {:verifier.code 0} true; + $i356 := $srem.i64($i355, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1308, 7} true; + assume {:verifier.code 0} true; + $i357 := $trunc.i64.i32($i356); + call {:cexpr "a"} boogie_si_record_i32($i357); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1309, 5} true; + assume {:verifier.code 0} true; + $i358 := $add.i32($i346, $i346); + call {:cexpr "b"} boogie_si_record_i32($i358); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1310, 7} true; + assume {:verifier.code 0} true; + $i359 := $sext.i32.i64($i358); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1310, 9} true; + assume {:verifier.code 0} true; + $i360 := $srem.i64($i359, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1310, 7} true; + assume {:verifier.code 0} true; + $i361 := $trunc.i64.i32($i360); + call {:cexpr "b"} boogie_si_record_i32($i361); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1312, 5} true; + assume {:verifier.code 0} true; + $i362 := $add.i32($i350, $i350); + call {:cexpr "c"} boogie_si_record_i32($i362); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1313, 9} true; + assume {:verifier.code 0} true; + $i363 := $slt.i32($i357, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1313, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i363} true; + goto $bb145, $bb146; +$bb142: + assume ($i351 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1305, 7} true; + assume {:verifier.code 0} true; + $i353 := $add.i32($i347, 1); + call {:cexpr "c"} boogie_si_record_i32($i353); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1306, 3} true; + assume {:verifier.code 0} true; + $i352 := $i353; + goto $bb144; +$bb143: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1304, 14} true; + assume {:verifier.code 0} true; + assume !(($i351 == 1)); + goto $bb144; +$bb144: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i350 := $i352; + goto $bb141; +$bb145: + assume ($i363 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1314, 7} true; + assume {:verifier.code 0} true; + $i364 := $add.i32($i362, 1); + call {:cexpr "c"} boogie_si_record_i32($i364); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1315, 3} true; + assume {:verifier.code 0} true; + $i365 := $i364; + goto $bb147; +$bb146: + assume !(($i363 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1315, 16} true; + assume {:verifier.code 0} true; + $i366 := $slt.i32($i361, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1315, 14} true; + assume {:verifier.code 0} true; + $i367 := $i362; + assume {:branchcond $i366} true; + goto $bb148, $bb149; +$bb147: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1318, 5} true; + assume {:verifier.code 0} true; + $i369 := $add.i32($i357, $i357); + call {:cexpr "a"} boogie_si_record_i32($i369); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1319, 7} true; + assume {:verifier.code 0} true; + $i370 := $sext.i32.i64($i369); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1319, 9} true; + assume {:verifier.code 0} true; + $i371 := $srem.i64($i370, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1319, 7} true; + assume {:verifier.code 0} true; + $i372 := $trunc.i64.i32($i371); + call {:cexpr "a"} boogie_si_record_i32($i372); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1320, 5} true; + assume {:verifier.code 0} true; + $i373 := $add.i32($i361, $i361); + call {:cexpr "b"} boogie_si_record_i32($i373); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1321, 7} true; + assume {:verifier.code 0} true; + $i374 := $sext.i32.i64($i373); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1321, 9} true; + assume {:verifier.code 0} true; + $i375 := $srem.i64($i374, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1321, 7} true; + assume {:verifier.code 0} true; + $i376 := $trunc.i64.i32($i375); + call {:cexpr "b"} boogie_si_record_i32($i376); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1323, 5} true; + assume {:verifier.code 0} true; + $i377 := $add.i32($i365, $i365); + call {:cexpr "c"} boogie_si_record_i32($i377); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1324, 9} true; + assume {:verifier.code 0} true; + $i378 := $slt.i32($i372, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1324, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i378} true; + goto $bb151, $bb152; +$bb148: + assume ($i366 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1316, 7} true; + assume {:verifier.code 0} true; + $i368 := $add.i32($i362, 1); + call {:cexpr "c"} boogie_si_record_i32($i368); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1317, 3} true; + assume {:verifier.code 0} true; + $i367 := $i368; + goto $bb150; +$bb149: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1315, 14} true; + assume {:verifier.code 0} true; + assume !(($i366 == 1)); + goto $bb150; +$bb150: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i365 := $i367; + goto $bb147; +$bb151: + assume ($i378 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1325, 7} true; + assume {:verifier.code 0} true; + $i379 := $add.i32($i377, 1); + call {:cexpr "c"} boogie_si_record_i32($i379); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1326, 3} true; + assume {:verifier.code 0} true; + $i380 := $i379; + goto $bb153; +$bb152: + assume !(($i378 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1326, 16} true; + assume {:verifier.code 0} true; + $i381 := $slt.i32($i376, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1326, 14} true; + assume {:verifier.code 0} true; + $i382 := $i377; + assume {:branchcond $i381} true; + goto $bb154, $bb155; +$bb153: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1329, 5} true; + assume {:verifier.code 0} true; + $i384 := $add.i32($i372, $i372); + call {:cexpr "a"} boogie_si_record_i32($i384); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1330, 7} true; + assume {:verifier.code 0} true; + $i385 := $sext.i32.i64($i384); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1330, 9} true; + assume {:verifier.code 0} true; + $i386 := $srem.i64($i385, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1330, 7} true; + assume {:verifier.code 0} true; + $i387 := $trunc.i64.i32($i386); + call {:cexpr "a"} boogie_si_record_i32($i387); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1331, 5} true; + assume {:verifier.code 0} true; + $i388 := $add.i32($i376, $i376); + call {:cexpr "b"} boogie_si_record_i32($i388); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1332, 7} true; + assume {:verifier.code 0} true; + $i389 := $sext.i32.i64($i388); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1332, 9} true; + assume {:verifier.code 0} true; + $i390 := $srem.i64($i389, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1332, 7} true; + assume {:verifier.code 0} true; + $i391 := $trunc.i64.i32($i390); + call {:cexpr "b"} boogie_si_record_i32($i391); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1334, 5} true; + assume {:verifier.code 0} true; + $i392 := $add.i32($i380, $i380); + call {:cexpr "c"} boogie_si_record_i32($i392); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1335, 9} true; + assume {:verifier.code 0} true; + $i393 := $slt.i32($i387, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1335, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i393} true; + goto $bb157, $bb158; +$bb154: + assume ($i381 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1327, 7} true; + assume {:verifier.code 0} true; + $i383 := $add.i32($i377, 1); + call {:cexpr "c"} boogie_si_record_i32($i383); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1328, 3} true; + assume {:verifier.code 0} true; + $i382 := $i383; + goto $bb156; +$bb155: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1326, 14} true; + assume {:verifier.code 0} true; + assume !(($i381 == 1)); + goto $bb156; +$bb156: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i380 := $i382; + goto $bb153; +$bb157: + assume ($i393 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1336, 7} true; + assume {:verifier.code 0} true; + $i394 := $add.i32($i392, 1); + call {:cexpr "c"} boogie_si_record_i32($i394); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1337, 3} true; + assume {:verifier.code 0} true; + $i395 := $i394; + goto $bb159; +$bb158: + assume !(($i393 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1337, 16} true; + assume {:verifier.code 0} true; + $i396 := $slt.i32($i391, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1337, 14} true; + assume {:verifier.code 0} true; + $i397 := $i392; + assume {:branchcond $i396} true; + goto $bb160, $bb161; +$bb159: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1340, 5} true; + assume {:verifier.code 0} true; + $i399 := $add.i32($i387, $i387); + call {:cexpr "a"} boogie_si_record_i32($i399); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1341, 7} true; + assume {:verifier.code 0} true; + $i400 := $sext.i32.i64($i399); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1341, 9} true; + assume {:verifier.code 0} true; + $i401 := $srem.i64($i400, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1341, 7} true; + assume {:verifier.code 0} true; + $i402 := $trunc.i64.i32($i401); + call {:cexpr "a"} boogie_si_record_i32($i402); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1342, 5} true; + assume {:verifier.code 0} true; + $i403 := $add.i32($i391, $i391); + call {:cexpr "b"} boogie_si_record_i32($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1343, 7} true; + assume {:verifier.code 0} true; + $i404 := $sext.i32.i64($i403); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1343, 9} true; + assume {:verifier.code 0} true; + $i405 := $srem.i64($i404, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1343, 7} true; + assume {:verifier.code 0} true; + $i406 := $trunc.i64.i32($i405); + call {:cexpr "b"} boogie_si_record_i32($i406); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1345, 5} true; + assume {:verifier.code 0} true; + $i407 := $add.i32($i395, $i395); + call {:cexpr "c"} boogie_si_record_i32($i407); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1346, 9} true; + assume {:verifier.code 0} true; + $i408 := $slt.i32($i402, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1346, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i408} true; + goto $bb163, $bb164; +$bb160: + assume ($i396 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1338, 7} true; + assume {:verifier.code 0} true; + $i398 := $add.i32($i392, 1); + call {:cexpr "c"} boogie_si_record_i32($i398); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1339, 3} true; + assume {:verifier.code 0} true; + $i397 := $i398; + goto $bb162; +$bb161: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1337, 14} true; + assume {:verifier.code 0} true; + assume !(($i396 == 1)); + goto $bb162; +$bb162: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i395 := $i397; + goto $bb159; +$bb163: + assume ($i408 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1347, 7} true; + assume {:verifier.code 0} true; + $i409 := $add.i32($i407, 1); + call {:cexpr "c"} boogie_si_record_i32($i409); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1348, 3} true; + assume {:verifier.code 0} true; + $i410 := $i409; + goto $bb165; +$bb164: + assume !(($i408 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1348, 16} true; + assume {:verifier.code 0} true; + $i411 := $slt.i32($i406, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1348, 14} true; + assume {:verifier.code 0} true; + $i412 := $i407; + assume {:branchcond $i411} true; + goto $bb166, $bb167; +$bb165: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1351, 5} true; + assume {:verifier.code 0} true; + $i414 := $add.i32($i402, $i402); + call {:cexpr "a"} boogie_si_record_i32($i414); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1352, 7} true; + assume {:verifier.code 0} true; + $i415 := $sext.i32.i64($i414); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1352, 9} true; + assume {:verifier.code 0} true; + $i416 := $srem.i64($i415, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1352, 7} true; + assume {:verifier.code 0} true; + $i417 := $trunc.i64.i32($i416); + call {:cexpr "a"} boogie_si_record_i32($i417); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1353, 5} true; + assume {:verifier.code 0} true; + $i418 := $add.i32($i406, $i406); + call {:cexpr "b"} boogie_si_record_i32($i418); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1354, 7} true; + assume {:verifier.code 0} true; + $i419 := $sext.i32.i64($i418); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1354, 9} true; + assume {:verifier.code 0} true; + $i420 := $srem.i64($i419, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1354, 7} true; + assume {:verifier.code 0} true; + $i421 := $trunc.i64.i32($i420); + call {:cexpr "b"} boogie_si_record_i32($i421); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1356, 5} true; + assume {:verifier.code 0} true; + $i422 := $add.i32($i410, $i410); + call {:cexpr "c"} boogie_si_record_i32($i422); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1357, 9} true; + assume {:verifier.code 0} true; + $i423 := $slt.i32($i417, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1357, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i423} true; + goto $bb169, $bb170; +$bb166: + assume ($i411 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1349, 7} true; + assume {:verifier.code 0} true; + $i413 := $add.i32($i407, 1); + call {:cexpr "c"} boogie_si_record_i32($i413); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1350, 3} true; + assume {:verifier.code 0} true; + $i412 := $i413; + goto $bb168; +$bb167: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1348, 14} true; + assume {:verifier.code 0} true; + assume !(($i411 == 1)); + goto $bb168; +$bb168: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i410 := $i412; + goto $bb165; +$bb169: + assume ($i423 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1358, 7} true; + assume {:verifier.code 0} true; + $i424 := $add.i32($i422, 1); + call {:cexpr "c"} boogie_si_record_i32($i424); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1359, 3} true; + assume {:verifier.code 0} true; + $i425 := $i424; + goto $bb171; +$bb170: + assume !(($i423 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1359, 16} true; + assume {:verifier.code 0} true; + $i426 := $slt.i32($i421, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1359, 14} true; + assume {:verifier.code 0} true; + $i427 := $i422; + assume {:branchcond $i426} true; + goto $bb172, $bb173; +$bb171: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1362, 5} true; + assume {:verifier.code 0} true; + $i429 := $add.i32($i417, $i417); + call {:cexpr "a"} boogie_si_record_i32($i429); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1363, 7} true; + assume {:verifier.code 0} true; + $i430 := $sext.i32.i64($i429); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1363, 9} true; + assume {:verifier.code 0} true; + $i431 := $srem.i64($i430, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1363, 7} true; + assume {:verifier.code 0} true; + $i432 := $trunc.i64.i32($i431); + call {:cexpr "a"} boogie_si_record_i32($i432); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1364, 5} true; + assume {:verifier.code 0} true; + $i433 := $add.i32($i421, $i421); + call {:cexpr "b"} boogie_si_record_i32($i433); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1365, 7} true; + assume {:verifier.code 0} true; + $i434 := $sext.i32.i64($i433); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1365, 9} true; + assume {:verifier.code 0} true; + $i435 := $srem.i64($i434, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1365, 7} true; + assume {:verifier.code 0} true; + $i436 := $trunc.i64.i32($i435); + call {:cexpr "b"} boogie_si_record_i32($i436); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1367, 5} true; + assume {:verifier.code 0} true; + $i437 := $add.i32($i425, $i425); + call {:cexpr "c"} boogie_si_record_i32($i437); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1368, 9} true; + assume {:verifier.code 0} true; + $i438 := $slt.i32($i432, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1368, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i438} true; + goto $bb175, $bb176; +$bb172: + assume ($i426 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1360, 7} true; + assume {:verifier.code 0} true; + $i428 := $add.i32($i422, 1); + call {:cexpr "c"} boogie_si_record_i32($i428); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1361, 3} true; + assume {:verifier.code 0} true; + $i427 := $i428; + goto $bb174; +$bb173: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1359, 14} true; + assume {:verifier.code 0} true; + assume !(($i426 == 1)); + goto $bb174; +$bb174: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i425 := $i427; + goto $bb171; +$bb175: + assume ($i438 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1369, 7} true; + assume {:verifier.code 0} true; + $i439 := $add.i32($i437, 1); + call {:cexpr "c"} boogie_si_record_i32($i439); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1370, 3} true; + assume {:verifier.code 0} true; + $i440 := $i439; + goto $bb177; +$bb176: + assume !(($i438 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1370, 16} true; + assume {:verifier.code 0} true; + $i441 := $slt.i32($i436, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1370, 14} true; + assume {:verifier.code 0} true; + $i442 := $i437; + assume {:branchcond $i441} true; + goto $bb178, $bb179; +$bb177: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1373, 5} true; + assume {:verifier.code 0} true; + $i444 := $add.i32($i432, $i432); + call {:cexpr "a"} boogie_si_record_i32($i444); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1374, 7} true; + assume {:verifier.code 0} true; + $i445 := $sext.i32.i64($i444); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1374, 9} true; + assume {:verifier.code 0} true; + $i446 := $srem.i64($i445, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1374, 7} true; + assume {:verifier.code 0} true; + $i447 := $trunc.i64.i32($i446); + call {:cexpr "a"} boogie_si_record_i32($i447); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1375, 5} true; + assume {:verifier.code 0} true; + $i448 := $add.i32($i436, $i436); + call {:cexpr "b"} boogie_si_record_i32($i448); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1376, 7} true; + assume {:verifier.code 0} true; + $i449 := $sext.i32.i64($i448); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1376, 9} true; + assume {:verifier.code 0} true; + $i450 := $srem.i64($i449, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1376, 7} true; + assume {:verifier.code 0} true; + $i451 := $trunc.i64.i32($i450); + call {:cexpr "b"} boogie_si_record_i32($i451); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1378, 5} true; + assume {:verifier.code 0} true; + $i452 := $add.i32($i440, $i440); + call {:cexpr "c"} boogie_si_record_i32($i452); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1379, 9} true; + assume {:verifier.code 0} true; + $i453 := $slt.i32($i447, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1379, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i453} true; + goto $bb181, $bb182; +$bb178: + assume ($i441 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1371, 7} true; + assume {:verifier.code 0} true; + $i443 := $add.i32($i437, 1); + call {:cexpr "c"} boogie_si_record_i32($i443); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1372, 3} true; + assume {:verifier.code 0} true; + $i442 := $i443; + goto $bb180; +$bb179: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1370, 14} true; + assume {:verifier.code 0} true; + assume !(($i441 == 1)); + goto $bb180; +$bb180: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i440 := $i442; + goto $bb177; +$bb181: + assume ($i453 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1380, 7} true; + assume {:verifier.code 0} true; + $i454 := $add.i32($i452, 1); + call {:cexpr "c"} boogie_si_record_i32($i454); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1381, 3} true; + assume {:verifier.code 0} true; + $i455 := $i454; + goto $bb183; +$bb182: + assume !(($i453 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1381, 16} true; + assume {:verifier.code 0} true; + $i456 := $slt.i32($i451, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1381, 14} true; + assume {:verifier.code 0} true; + $i457 := $i452; + assume {:branchcond $i456} true; + goto $bb184, $bb185; +$bb183: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1384, 5} true; + assume {:verifier.code 0} true; + $i459 := $add.i32($i447, $i447); + call {:cexpr "a"} boogie_si_record_i32($i459); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1385, 7} true; + assume {:verifier.code 0} true; + $i460 := $sext.i32.i64($i459); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1385, 9} true; + assume {:verifier.code 0} true; + $i461 := $srem.i64($i460, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1385, 7} true; + assume {:verifier.code 0} true; + $i462 := $trunc.i64.i32($i461); + call {:cexpr "a"} boogie_si_record_i32($i462); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1386, 5} true; + assume {:verifier.code 0} true; + $i463 := $add.i32($i451, $i451); + call {:cexpr "b"} boogie_si_record_i32($i463); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1387, 7} true; + assume {:verifier.code 0} true; + $i464 := $sext.i32.i64($i463); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1387, 9} true; + assume {:verifier.code 0} true; + $i465 := $srem.i64($i464, 2147483648); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1387, 7} true; + assume {:verifier.code 0} true; + $i466 := $trunc.i64.i32($i465); + call {:cexpr "b"} boogie_si_record_i32($i466); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1389, 5} true; + assume {:verifier.code 0} true; + $i467 := $add.i32($i455, $i455); + call {:cexpr "c"} boogie_si_record_i32($i467); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1390, 9} true; + assume {:verifier.code 0} true; + $i468 := $slt.i32($i462, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1390, 7} true; + assume {:verifier.code 0} true; + assume {:branchcond $i468} true; + goto $bb187, $bb188; +$bb184: + assume ($i456 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1382, 7} true; + assume {:verifier.code 0} true; + $i458 := $add.i32($i452, 1); + call {:cexpr "c"} boogie_si_record_i32($i458); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1383, 3} true; + assume {:verifier.code 0} true; + $i457 := $i458; + goto $bb186; +$bb185: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1381, 14} true; + assume {:verifier.code 0} true; + assume !(($i456 == 1)); + goto $bb186; +$bb186: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i455 := $i457; + goto $bb183; +$bb187: + assume ($i468 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1391, 7} true; + assume {:verifier.code 0} true; + $i469 := $add.i32($i467, 1); + call {:cexpr "c"} boogie_si_record_i32($i469); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1392, 3} true; + assume {:verifier.code 0} true; + $i470 := $i469; + goto $bb189; +$bb188: + assume !(($i468 == 1)); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1392, 16} true; + assume {:verifier.code 0} true; + $i471 := $slt.i32($i466, 0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1392, 14} true; + assume {:verifier.code 0} true; + $i472 := $i467; + assume {:branchcond $i471} true; + goto $bb190, $bb191; +$bb189: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1400, 3} true; + assume {:verifier.code 0} true; + $r := $i470; + $exn := false; + return; +$bb190: + assume ($i471 == 1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1393, 7} true; + assume {:verifier.code 0} true; + $i473 := $add.i32($i467, 1); + call {:cexpr "c"} boogie_si_record_i32($i473); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1394, 3} true; + assume {:verifier.code 0} true; + $i472 := $i473; + goto $bb192; +$bb191: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1392, 14} true; + assume {:verifier.code 0} true; + assume !(($i471 == 1)); + goto $bb192; +$bb192: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 0, 0} true; + assume {:verifier.code 0} true; + assume {:verifier.code 0} true; + $i470 := $i472; + goto $bb189; +} +const __SMACK_or64: ref; +axiom (__SMACK_or64 == $sub.ref(0, 22696)); +procedure __SMACK_or64($i0: i64, $i1: i64) + returns ($r: i64) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i64; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 63} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_or64:arg:a"} boogie_si_record_i64($i0); + call {:cexpr "__SMACK_or64:arg:b"} boogie_si_record_i64($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 63} true; + assume {:verifier.code 1} true; + $i2 := $trunc.i64.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 66} true; + assume {:verifier.code 1} true; + $i3 := $trunc.i64.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 50} true; + assume {:verifier.code 1} true; + call $i4 := __SMACK_or32($i2, $i3); + call {:cexpr "smack:ext:__SMACK_or32"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 44} true; + assume {:verifier.code 0} true; + $i5 := $sext.i32.i64($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1403, 37} true; + assume {:verifier.code 0} true; + $r := $i5; + $exn := false; + return; +} +const __SMACK_or16: ref; +axiom (__SMACK_or16 == $sub.ref(0, 23728)); +procedure __SMACK_or16($i0: i16, $i1: i16) + returns ($r: i16) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i16; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 67} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_or16:arg:a"} boogie_si_record_i16($i0); + call {:cexpr "__SMACK_or16:arg:b"} boogie_si_record_i16($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 67} true; + assume {:verifier.code 1} true; + $i2 := $sext.i16.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 70} true; + assume {:verifier.code 1} true; + $i3 := $sext.i16.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 54} true; + assume {:verifier.code 1} true; + call $i4 := __SMACK_or32($i2, $i3); + call {:cexpr "smack:ext:__SMACK_or32"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 47} true; + assume {:verifier.code 0} true; + $i5 := $trunc.i32.i16($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1404, 40} true; + assume {:verifier.code 0} true; + $r := $i5; + $exn := false; + return; +} +const __SMACK_or8: ref; +axiom (__SMACK_or8 == $sub.ref(0, 24760)); +procedure __SMACK_or8($i0: i8, $i1: i8) + returns ($r: i8) +{ + var $i2: i32; + var $i3: i32; + var $i4: i32; + var $i5: i8; +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 62} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_or8:arg:a"} boogie_si_record_i8($i0); + call {:cexpr "__SMACK_or8:arg:b"} boogie_si_record_i8($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 62} true; + assume {:verifier.code 1} true; + $i2 := $sext.i8.i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 65} true; + assume {:verifier.code 1} true; + $i3 := $sext.i8.i32($i1); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 49} true; + assume {:verifier.code 1} true; + call $i4 := __SMACK_or32($i2, $i3); + call {:cexpr "smack:ext:__SMACK_or32"} boogie_si_record_i32($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 43} true; + assume {:verifier.code 0} true; + $i5 := $trunc.i32.i8($i4); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1405, 36} true; + assume {:verifier.code 0} true; + $r := $i5; + $exn := false; + return; +} +const __SMACK_check_overflow: ref; +axiom (__SMACK_check_overflow == $sub.ref(0, 25792)); +procedure __SMACK_check_overflow($i0: i32) +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + call {:cexpr "__SMACK_check_overflow:arg:flag"} boogie_si_record_i32($i0); + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1606, 29} true; + assume {:verifier.code 1} true; + assume true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1409, 3} true; + assume {:verifier.code 1} true; + assert {:overflow} $i0 == $0; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1410, 1} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_loop_exit: ref; +axiom (__SMACK_loop_exit == $sub.ref(0, 26824)); +procedure __SMACK_loop_exit() +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1412, 32} true; + assume {:verifier.code 1} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1412, 32} true; + assume {:verifier.code 1} true; + assert {:loopexit} false; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1412, 75} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_decls: ref; +axiom (__SMACK_decls == $sub.ref(0, 27856)); +type $mop; +procedure boogie_si_record_mop(m: $mop); +const $MOP: $mop; +var $exn: bool; +var $exnv: int; +procedure corral_atomic_begin(); +procedure corral_atomic_end(); +procedure $alloc(n: ref) returns (p: ref) +{ + call corral_atomic_begin(); + call p := $$alloc(n); + call corral_atomic_end(); +} + +procedure $malloc(n: ref) returns (p: ref) +{ + call corral_atomic_begin(); + call p := $$alloc(n); + call corral_atomic_end(); +} + +var $CurrAddr:ref; + +procedure {:inline 1} $$alloc(n: ref) returns (p: ref) +modifies $CurrAddr; +{ + assume $sge.ref.bool(n, $0.ref); + if ($sgt.ref.bool(n, $0.ref)) { + p := $CurrAddr; + havoc $CurrAddr; + assume $sge.ref.bool($sub.ref($CurrAddr, n), p); + assume $sgt.ref.bool($CurrAddr, $0.ref) && $slt.ref.bool($CurrAddr, $MALLOC_TOP); + } +} + +procedure $free(p: ref); + +const __SMACK_top_decl: ref; +axiom (__SMACK_top_decl == $sub.ref(0, 28888)); +procedure __SMACK_top_decl.ref($p0: ref); +const __SMACK_init_func_memory_model: ref; +axiom (__SMACK_init_func_memory_model == $sub.ref(0, 29920)); +procedure __SMACK_init_func_memory_model() +{ +$bb0: + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1885, 3} true; + assume {:verifier.code 1} true; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1885, 3} true; + assume {:verifier.code 1} true; + $CurrAddr := $1024.ref; + assume {:sourceloc "/usr/local/share/smack/lib/smack.c", 1890, 1} true; + assume {:verifier.code 0} true; + $exn := false; + return; +} +const __SMACK_static_init: ref; +axiom (__SMACK_static_init == $sub.ref(0, 30952)); +procedure __SMACK_static_init() +{ +$bb0: + $M.0 := $store.i32($M.0, val, 5); + call {:cexpr "val"} boogie_si_record_i32(5); + $exn := false; + return; +} +const $u0: ref; +procedure boogie_si_record_i16(x: i16); +procedure boogie_si_record_i32(x: i32); +procedure boogie_si_record_i64(x: i64); +procedure boogie_si_record_i8(x: i8); +procedure boogie_si_record_ref(x: ref); +procedure $initialize() +{ + call __SMACK_static_init(); + call __SMACK_init_func_memory_model(); + return; +} diff --git a/litmus/PTX/Co-Total-3-threads-scope-same.litmus b/litmus/PTX/Co-Total-3-threads-scope-same.litmus index 376c26d375..ca376b575e 100644 --- a/litmus/PTX/Co-Total-3-threads-scope-same.litmus +++ b/litmus/PTX/Co-Total-3-threads-scope-same.litmus @@ -3,7 +3,6 @@ PTX Co-Total-3-threads-scope-same { x=0; f1=0; f2=0; P2:r0=0; P2:r1=0; P2:r2=0; -P3:r0=0; P3:r1=0; P3:r2=0; } P0@cta 0,gpu 0 | P1@cta 0,gpu 0 | P2@cta 0,gpu 0 ; st.weak x, 1 | st.weak x, 2 | ld.acquire.sys r0, f1 ;