Skip to content

Instantly share code, notes, and snippets.

@sinistersnare
Created May 18, 2022 21:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sinistersnare/d7c5f2e379b170f7fdc3cc00c6361501 to your computer and use it in GitHub Desktop.
Save sinistersnare/d7c5f2e379b170f7fdc3cc00c6361501 to your computer and use it in GitHub Desktop.
A LLVM .ll file with a @main function thats ~10k lines long...
This file has been truncated, but you can view the full file.
; ModuleID = './src/cpp/runtime.cpp'
source_filename = "./src/cpp/runtime.cpp"
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.Map = type { %struct.Map*, %struct.SinObj*, %struct.SinObj* }
%struct.SinObj = type { i8*, i32 }
%struct.SinRecord = type { %struct.SinObj**, %struct.SinRecord*, i64, i64, i8* }
@.str = private unnamed_addr constant [18 x i8] c"Register Values:\0A\00", align 1
@.str.1 = private unnamed_addr constant [38 x i8] c"srr:`%p`,fpr:`%p`,spr:`%p`,retr:`%p`\0A\00", align 1
@.str.2 = private unnamed_addr constant [10 x i8] c"_get_both\00", align 1
@.str.3 = private unnamed_addr constant [22 x i8] c"closure_place_freevar\00", align 1
@.str.4 = private unnamed_addr constant [21 x i8] c"closure_get_env_part\00", align 1
@.str.5 = private unnamed_addr constant [20 x i8] c"closure_get_fn_part\00", align 1
@.str.6 = private unnamed_addr constant [23 x i8] c"descent == full->stack\00", align 1
@.str.7 = private unnamed_addr constant [22 x i8] c"./src/cpp/runtime.cpp\00", align 1
@__PRETTY_FUNCTION__.handle_overflow = private unnamed_addr constant [72 x i8] c"void handle_overflow(SinRecord **, SinObj ***, SinObj ***, void *, s64)\00", align 1
@.str.8 = private unnamed_addr constant [31 x i8] c"Fatal library run-time error: \00", align 1
@.str.9 = private unnamed_addr constant [55 x i8] c"Expected cons but got something else for function '%s'\00", align 1
@.str.10 = private unnamed_addr constant [14 x i8] c"applyprim_car\00", align 1
@.str.11 = private unnamed_addr constant [2 x i8] c"\0A\00", align 1
@.str.12 = private unnamed_addr constant [37 x i8] c"function '%s' only takes 1 argument.\00", align 1
@.str.13 = private unnamed_addr constant [4 x i8] c"car\00", align 1
@.str.14 = private unnamed_addr constant [4 x i8] c"+ a\00", align 1
@.str.15 = private unnamed_addr constant [4 x i8] c"+ b\00", align 1
@.str.16 = private unnamed_addr constant [37 x i8] c"Expected Cons in apply +, but got %s\00", align 1
@.str.17 = private unnamed_addr constant [14 x i8] c"apply + final\00", align 1
@.str.18 = private unnamed_addr constant [24 x i8] c"applyprim_make_45vector\00", align 1
@.str.19 = private unnamed_addr constant [46 x i8] c"Function '%s' expected 2 arguments but got 1.\00", align 1
@.str.20 = private unnamed_addr constant [38 x i8] c"Function '%s' only takes 2 arguments.\00", align 1
@.str.21 = private unnamed_addr constant [12 x i8] c"make-vector\00", align 1
@.str.22 = private unnamed_addr constant [16 x i8] c"closure_env_get\00", align 1
@.str.23 = private unnamed_addr constant [49 x i8] c"unwrap_hash takes a Hash object! Got %d in fn %s\00", align 1
@.str.24 = private unnamed_addr constant [49 x i8] c"unwrap_cons takes a Cons object! Got %d in fn %s\00", align 1
@.str.25 = private unnamed_addr constant [53 x i8] c"unwrap_vector takes a Vector object! Got %d in fn %s\00", align 1
@.str.26 = private unnamed_addr constant [51 x i8] c"unwrap_clo takes a Closure object! Got %d in fn %s\00", align 1
@.str.27 = private unnamed_addr constant [48 x i8] c"unwrap_int takes an Int object! Got %d in fn %s\00", align 1
@.str.28 = private unnamed_addr constant [49 x i8] c"unwrap_bool takes a Bool object! Got %d in fn %s\00", align 1
@.str.29 = private unnamed_addr constant [47 x i8] c"unwrap_str takes a Str object! Got %d in fn %s\00", align 1
@.str.30 = private unnamed_addr constant [47 x i8] c"unwrap_sym takes a Sym object! Got %d in fn %s\00", align 1
@.str.31 = private unnamed_addr constant [16 x i8] c"is_truthy_value\00", align 1
@.str.32 = private unnamed_addr constant [18 x i8] c"applyprim_display\00", align 1
@.str.33 = private unnamed_addr constant [16 x i8] c"applyprim_print\00", align 1
@.str.34 = private unnamed_addr constant [4 x i8] c"'()\00", align 1
@.str.35 = private unnamed_addr constant [4 x i8] c"'%s\00", align 1
@.str.36 = private unnamed_addr constant [21 x i8] c"prim_print Sym case.\00", align 1
@.str.37 = private unnamed_addr constant [3 x i8] c"'(\00", align 1
@.str.38 = private unnamed_addr constant [2 x i8] c")\00", align 1
@.str.39 = private unnamed_addr constant [18 x i8] c"applyprim_println\00", align 1
@.str.40 = private unnamed_addr constant [8 x i8] c"#<void>\00", align 1
@.str.41 = private unnamed_addr constant [3 x i8] c"()\00", align 1
@.str.42 = private unnamed_addr constant [25 x i8] c"prim_print_aux bool case\00", align 1
@.str.43 = private unnamed_addr constant [3 x i8] c"#f\00", align 1
@.str.44 = private unnamed_addr constant [3 x i8] c"#t\00", align 1
@.str.45 = private unnamed_addr constant [27 x i8] c"Unknown Boolean value: %lu\00", align 1
@.str.46 = private unnamed_addr constant [16 x i8] c"#<continuation>\00", align 1
@.str.47 = private unnamed_addr constant [13 x i8] c"#<procedure>\00", align 1
@.str.48 = private unnamed_addr constant [2 x i8] c"(\00", align 1
@.str.49 = private unnamed_addr constant [4 x i8] c"%ld\00", align 1
@.str.50 = private unnamed_addr constant [25 x i8] c"prim_print_aux Int case.\00", align 1
@.str.51 = private unnamed_addr constant [3 x i8] c"%s\00", align 1
@.str.52 = private unnamed_addr constant [25 x i8] c"prim_print_aux Str case.\00", align 1
@.str.53 = private unnamed_addr constant [25 x i8] c"prim_print_aux Sym case.\00", align 1
@.str.54 = private unnamed_addr constant [7 x i8] c"#hash(\00", align 1
@.str.55 = private unnamed_addr constant [30 x i8] c"Sets not currently supported!\00", align 1
@.str.56 = private unnamed_addr constant [34 x i8] c"(print v); unrecognized value %lu\00", align 1
@.str.57 = private unnamed_addr constant [11 x i8] c"print_cons\00", align 1
@.str.58 = private unnamed_addr constant [2 x i8] c" \00", align 1
@.str.59 = private unnamed_addr constant [4 x i8] c" . \00", align 1
@.str.60 = private unnamed_addr constant [13 x i8] c"print_vector\00", align 1
@.str.61 = private unnamed_addr constant [3 x i8] c"#(\00", align 1
@.str.62 = private unnamed_addr constant [11 x i8] c"print_hash\00", align 1
@.str.63 = private unnamed_addr constant [5 x i8] c"Void\00", align 1
@.str.64 = private unnamed_addr constant [5 x i8] c"Null\00", align 1
@.str.65 = private unnamed_addr constant [5 x i8] c"Bool\00", align 1
@.str.66 = private unnamed_addr constant [13 x i8] c"Continuation\00", align 1
@.str.67 = private unnamed_addr constant [8 x i8] c"Closure\00", align 1
@.str.68 = private unnamed_addr constant [5 x i8] c"Cons\00", align 1
@.str.69 = private unnamed_addr constant [4 x i8] c"Int\00", align 1
@.str.70 = private unnamed_addr constant [7 x i8] c"String\00", align 1
@.str.71 = private unnamed_addr constant [7 x i8] c"Symbol\00", align 1
@.str.72 = private unnamed_addr constant [7 x i8] c"Vector\00", align 1
@.str.73 = private unnamed_addr constant [5 x i8] c"Hash\00", align 1
@.str.74 = private unnamed_addr constant [4 x i8] c"Set\00", align 1
@.str.75 = private unnamed_addr constant [6 x i8] c"Other\00", align 1
@.str.76 = private unnamed_addr constant [15 x i8] c"applyprim_halt\00", align 1
@.str.77 = private unnamed_addr constant [18 x i8] c"get_vector_length\00", align 1
@.str.78 = private unnamed_addr constant [59 x i8] c"Vectors larger than 256 elements are unimplemented. Sorry!\00", align 1
@.str.79 = private unnamed_addr constant [20 x i8] c"applyprim_vector_63\00", align 1
@.str.80 = private unnamed_addr constant [26 x i8] c"applyprim_vector_45length\00", align 1
@.str.81 = private unnamed_addr constant [21 x i8] c"prim_vector_45length\00", align 1
@.str.82 = private unnamed_addr constant [13 x i8] c"bounds check\00", align 1
@.str.83 = private unnamed_addr constant [53 x i8] c"Bounds check fail, wanted pos %ld, only %ld elements\00", align 1
@.str.84 = private unnamed_addr constant [23 x i8] c"applyprim_vector_45ref\00", align 1
@.str.85 = private unnamed_addr constant [11 x i8] c"vector-ref\00", align 1
@.str.86 = private unnamed_addr constant [21 x i8] c"vector-ref index_pos\00", align 1
@.str.87 = private unnamed_addr constant [26 x i8] c"applyprim_vector_45set_33\00", align 1
@.str.88 = private unnamed_addr constant [46 x i8] c"Function '%s' expected 3 arguments but got 1.\00", align 1
@.str.89 = private unnamed_addr constant [46 x i8] c"Function '%s' expected 3 arguments but got 2.\00", align 1
@.str.90 = private unnamed_addr constant [38 x i8] c"Function '%s' only takes 3 arguments.\00", align 1
@.str.91 = private unnamed_addr constant [12 x i8] c"vector-set!\00", align 1
@.str.92 = private unnamed_addr constant [28 x i8] c"apply vector-set! index_pos\00", align 1
@.str.93 = private unnamed_addr constant [64 x i8] c"Expected an empty list but got something else for function '%s'\00", align 1
@.str.94 = private unnamed_addr constant [15 x i8] c"applyprim_void\00", align 1
@.str.95 = private unnamed_addr constant [19 x i8] c"vec_eq_helper avec\00", align 1
@.str.96 = private unnamed_addr constant [19 x i8] c"vec_eq_helper bvec\00", align 1
@.str.97 = private unnamed_addr constant [19 x i8] c"vec_eq_helper alen\00", align 1
@.str.98 = private unnamed_addr constant [19 x i8] c"vec_eq_helper blen\00", align 1
@.str.99 = private unnamed_addr constant [18 x i8] c"prim_eq_63 Bool a\00", align 1
@.str.100 = private unnamed_addr constant [18 x i8] c"prim_eq_63 Bool b\00", align 1
@.str.101 = private unnamed_addr constant [17 x i8] c"prim_eq_63 Int a\00", align 1
@.str.102 = private unnamed_addr constant [17 x i8] c"prim_eq_63 Int b\00", align 1
@.str.103 = private unnamed_addr constant [17 x i8] c"prim_eq_63 Str a\00", align 1
@.str.104 = private unnamed_addr constant [17 x i8] c"prim_eq_63 Str b\00", align 1
@.str.105 = private unnamed_addr constant [17 x i8] c"prim_eq_63 Sym a\00", align 1
@.str.106 = private unnamed_addr constant [17 x i8] c"prim_eq_63 Sym b\00", align 1
@.str.107 = private unnamed_addr constant [34 x i8] c"Hash eq? not supported currently.\00", align 1
@.str.108 = private unnamed_addr constant [33 x i8] c"Set eq? not supported currently.\00", align 1
@.str.109 = private unnamed_addr constant [42 x i8] c"I do not know what youre trying to eq?!!.\00", align 1
@.str.110 = private unnamed_addr constant [16 x i8] c"applyprim_eq_63\00", align 1
@.str.111 = private unnamed_addr constant [17 x i8] c"applyprim_eqv_63\00", align 1
@.str.112 = private unnamed_addr constant [19 x i8] c"applyprim_equal_63\00", align 1
@.str.113 = private unnamed_addr constant [20 x i8] c"applyprim_number_63\00", align 1
@.str.114 = private unnamed_addr constant [21 x i8] c"applyprim_integer_63\00", align 1
@.str.115 = private unnamed_addr constant [21 x i8] c"applyprim_boolean_63\00", align 1
@.str.116 = private unnamed_addr constant [18 x i8] c"applyprim_void_63\00", align 1
@.str.117 = private unnamed_addr constant [23 x i8] c"applyprim_procedure_63\00", align 1
@.str.118 = private unnamed_addr constant [18 x i8] c"applyprim_null_63\00", align 1
@.str.119 = private unnamed_addr constant [18 x i8] c"applyprim_cons_63\00", align 1
@.str.120 = private unnamed_addr constant [15 x i8] c"applyprim_cons\00", align 1
@.str.121 = private unnamed_addr constant [14 x i8] c"applyprim_cdr\00", align 1
@.str.122 = private unnamed_addr constant [4 x i8] c"cdr\00", align 1
@.str.123 = private unnamed_addr constant [4 x i8] c"- a\00", align 1
@.str.124 = private unnamed_addr constant [4 x i8] c"- b\00", align 1
@.str.125 = private unnamed_addr constant [8 x i8] c"apply -\00", align 1
@.str.126 = private unnamed_addr constant [15 x i8] c"apply - carval\00", align 1
@.str.127 = private unnamed_addr constant [20 x i8] c"applyprim__45 final\00", align 1
@.str.128 = private unnamed_addr constant [4 x i8] c"* a\00", align 1
@.str.129 = private unnamed_addr constant [4 x i8] c"* b\00", align 1
@.str.130 = private unnamed_addr constant [17 x i8] c"apply * cons_obj\00", align 1
@.str.131 = private unnamed_addr constant [15 x i8] c"apply * carval\00", align 1
@.str.132 = private unnamed_addr constant [15 x i8] c"apply * cdrval\00", align 1
@.str.133 = private unnamed_addr constant [36 x i8] c"apply * taking a non-list argument!\00", align 1
@.str.134 = private unnamed_addr constant [4 x i8] c"/ a\00", align 1
@.str.135 = private unnamed_addr constant [4 x i8] c"/ b\00", align 1
@.str.136 = private unnamed_addr constant [14 x i8] c"applyprim__61\00", align 1
@.str.137 = private unnamed_addr constant [4 x i8] c"= a\00", align 1
@.str.138 = private unnamed_addr constant [4 x i8] c"= b\00", align 1
@.str.139 = private unnamed_addr constant [4 x i8] c"< a\00", align 1
@.str.140 = private unnamed_addr constant [4 x i8] c"< b\00", align 1
@.str.141 = private unnamed_addr constant [17 x i8] c"applyprim__60_61\00", align 1
@.str.142 = private unnamed_addr constant [5 x i8] c"<= a\00", align 1
@.str.143 = private unnamed_addr constant [5 x i8] c"<= b\00", align 1
@.str.144 = private unnamed_addr constant [14 x i8] c"applyprim_not\00", align 1
@.str.145 = private unnamed_addr constant [4 x i8] c"not\00", align 1
@.str.146 = private unnamed_addr constant [30 x i8] c"applyprim_hash_45has_45key_63\00", align 1
@.str.147 = private unnamed_addr constant [14 x i8] c"hash-has-key?\00", align 1
@.str.148 = private unnamed_addr constant [33 x i8] c"Key not provided value in (hash)\00", align 1
@.str.149 = private unnamed_addr constant [22 x i8] c"applyprim_hash_45keys\00", align 1
@.str.150 = private unnamed_addr constant [10 x i8] c"hash-keys\00", align 1
@.str.151 = private unnamed_addr constant [32 x i8] c"Too many args given in hash-ref\00", align 1
@.str.152 = private unnamed_addr constant [46 x i8] c"Bad Types Somewhere in hash-ref... good luck!\00", align 1
@.str.153 = private unnamed_addr constant [9 x i8] c"hash-ref\00", align 1
@.str.154 = private unnamed_addr constant [31 x i8] c"Map did not have requested key\00", align 1
@.str.155 = private unnamed_addr constant [21 x i8] c"applyprim_hash_45set\00", align 1
@.str.156 = private unnamed_addr constant [9 x i8] c"hash-set\00", align 1
@.str.157 = private unnamed_addr constant [18 x i8] c"applyprim_hash_63\00", align 1
@.str.158 = private unnamed_addr constant [23 x i8] c"applyprim_hash_45count\00", align 1
@.str.159 = private unnamed_addr constant [11 x i8] c"hash-count\00", align 1
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.Map* @insert_update(%struct.Map* noundef %0, %struct.SinObj* noundef %1, %struct.SinObj* noundef %2) #0 {
%4 = alloca %struct.Map*, align 8
%5 = alloca %struct.Map*, align 8
%6 = alloca %struct.SinObj*, align 8
%7 = alloca %struct.SinObj*, align 8
%8 = alloca %struct.Map*, align 8
%9 = alloca %struct.Map*, align 8
store %struct.Map* %0, %struct.Map** %5, align 8
store %struct.SinObj* %1, %struct.SinObj** %6, align 8
store %struct.SinObj* %2, %struct.SinObj** %7, align 8
%10 = load %struct.Map*, %struct.Map** %5, align 8
%11 = icmp eq %struct.Map* %10, null
br i1 %11, label %12, label %24
12: ; preds = %3
%13 = call noalias i8* @malloc(i64 noundef 24) #9
%14 = bitcast i8* %13 to %struct.Map*
store %struct.Map* %14, %struct.Map** %8, align 8
%15 = load %struct.Map*, %struct.Map** %8, align 8
%16 = getelementptr inbounds %struct.Map, %struct.Map* %15, i32 0, i32 0
store %struct.Map* null, %struct.Map** %16, align 8
%17 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%18 = load %struct.Map*, %struct.Map** %8, align 8
%19 = getelementptr inbounds %struct.Map, %struct.Map* %18, i32 0, i32 1
store %struct.SinObj* %17, %struct.SinObj** %19, align 8
%20 = load %struct.SinObj*, %struct.SinObj** %7, align 8
%21 = load %struct.Map*, %struct.Map** %8, align 8
%22 = getelementptr inbounds %struct.Map, %struct.Map* %21, i32 0, i32 2
store %struct.SinObj* %20, %struct.SinObj** %22, align 8
%23 = load %struct.Map*, %struct.Map** %8, align 8
store %struct.Map* %23, %struct.Map** %4, align 8
br label %67
24: ; preds = %3
%25 = call noalias i8* @malloc(i64 noundef 24) #9
%26 = bitcast i8* %25 to %struct.Map*
store %struct.Map* %26, %struct.Map** %9, align 8
%27 = load %struct.Map*, %struct.Map** %5, align 8
%28 = getelementptr inbounds %struct.Map, %struct.Map* %27, i32 0, i32 1
%29 = load %struct.SinObj*, %struct.SinObj** %28, align 8
%30 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%31 = call i32 @eq_helper(%struct.SinObj* noundef %29, %struct.SinObj* noundef %30)
%32 = icmp eq i32 %31, 1
br i1 %32, label %33, label %46
33: ; preds = %24
%34 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%35 = load %struct.Map*, %struct.Map** %9, align 8
%36 = getelementptr inbounds %struct.Map, %struct.Map* %35, i32 0, i32 1
store %struct.SinObj* %34, %struct.SinObj** %36, align 8
%37 = load %struct.SinObj*, %struct.SinObj** %7, align 8
%38 = load %struct.Map*, %struct.Map** %9, align 8
%39 = getelementptr inbounds %struct.Map, %struct.Map* %38, i32 0, i32 2
store %struct.SinObj* %37, %struct.SinObj** %39, align 8
%40 = load %struct.Map*, %struct.Map** %5, align 8
%41 = getelementptr inbounds %struct.Map, %struct.Map* %40, i32 0, i32 0
%42 = load %struct.Map*, %struct.Map** %41, align 8
%43 = call %struct.Map* @insert_copy(%struct.Map* noundef %42)
%44 = load %struct.Map*, %struct.Map** %9, align 8
%45 = getelementptr inbounds %struct.Map, %struct.Map* %44, i32 0, i32 0
store %struct.Map* %43, %struct.Map** %45, align 8
br label %65
46: ; preds = %24
%47 = load %struct.Map*, %struct.Map** %5, align 8
%48 = getelementptr inbounds %struct.Map, %struct.Map* %47, i32 0, i32 1
%49 = load %struct.SinObj*, %struct.SinObj** %48, align 8
%50 = load %struct.Map*, %struct.Map** %9, align 8
%51 = getelementptr inbounds %struct.Map, %struct.Map* %50, i32 0, i32 1
store %struct.SinObj* %49, %struct.SinObj** %51, align 8
%52 = load %struct.Map*, %struct.Map** %5, align 8
%53 = getelementptr inbounds %struct.Map, %struct.Map* %52, i32 0, i32 2
%54 = load %struct.SinObj*, %struct.SinObj** %53, align 8
%55 = load %struct.Map*, %struct.Map** %9, align 8
%56 = getelementptr inbounds %struct.Map, %struct.Map* %55, i32 0, i32 2
store %struct.SinObj* %54, %struct.SinObj** %56, align 8
%57 = load %struct.Map*, %struct.Map** %5, align 8
%58 = getelementptr inbounds %struct.Map, %struct.Map* %57, i32 0, i32 0
%59 = load %struct.Map*, %struct.Map** %58, align 8
%60 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%61 = load %struct.SinObj*, %struct.SinObj** %7, align 8
%62 = call %struct.Map* @insert_update(%struct.Map* noundef %59, %struct.SinObj* noundef %60, %struct.SinObj* noundef %61)
%63 = load %struct.Map*, %struct.Map** %9, align 8
%64 = getelementptr inbounds %struct.Map, %struct.Map* %63, i32 0, i32 0
store %struct.Map* %62, %struct.Map** %64, align 8
br label %65
65: ; preds = %46, %33
%66 = load %struct.Map*, %struct.Map** %9, align 8
store %struct.Map* %66, %struct.Map** %4, align 8
br label %67
67: ; preds = %65, %12
%68 = load %struct.Map*, %struct.Map** %4, align 8
ret %struct.Map* %68
}
; Function Attrs: nounwind
declare noalias i8* @malloc(i64 noundef) #1
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local i32 @eq_helper(%struct.SinObj* noundef %0, %struct.SinObj* noundef %1) #0 {
%3 = alloca i32, align 4
%4 = alloca %struct.SinObj*, align 8
%5 = alloca %struct.SinObj*, align 8
%6 = alloca i8*, align 8
%7 = alloca i8*, align 8
%8 = alloca i8*, align 8
%9 = alloca i8*, align 8
store %struct.SinObj* %0, %struct.SinObj** %4, align 8
store %struct.SinObj* %1, %struct.SinObj** %5, align 8
%10 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%11 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %10, i32 0, i32 1
%12 = load i32, i32* %11, align 8
%13 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%14 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %13, i32 0, i32 1
%15 = load i32, i32* %14, align 8
%16 = icmp ne i32 %12, %15
br i1 %16, label %17, label %18
17: ; preds = %2
store i32 0, i32* %3, align 4
br label %85
18: ; preds = %2
%19 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%20 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %19, i32 0, i32 1
%21 = load i32, i32* %20, align 8
switch i32 %21, label %84 [
i32 0, label %22
i32 1, label %23
i32 2, label %24
i32 12, label %32
i32 3, label %33
i32 4, label %34
i32 5, label %38
i32 6, label %46
i32 7, label %57
i32 8, label %68
i32 9, label %72
i32 10, label %76
i32 11, label %80
]
22: ; preds = %18
store i32 1, i32* %3, align 4
br label %85
23: ; preds = %18
store i32 1, i32* %3, align 4
br label %85
24: ; preds = %18
%25 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%26 = call i64 @unwrap_bool(%struct.SinObj* noundef %25, i8* noundef getelementptr inbounds ([18 x i8], [18 x i8]* @.str.99, i64 0, i64 0))
%27 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%28 = call i64 @unwrap_bool(%struct.SinObj* noundef %27, i8* noundef getelementptr inbounds ([18 x i8], [18 x i8]* @.str.100, i64 0, i64 0))
%29 = icmp eq i64 %26, %28
br i1 %29, label %30, label %31
30: ; preds = %24
store i32 1, i32* %3, align 4
br label %85
31: ; preds = %24
store i32 0, i32* %3, align 4
br label %85
32: ; preds = %18
store i32 0, i32* %3, align 4
br label %85
33: ; preds = %18
store i32 0, i32* %3, align 4
br label %85
34: ; preds = %18
%35 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%36 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%37 = call i32 @cons_eq_helper(%struct.SinObj* noundef %35, %struct.SinObj* noundef %36)
store i32 %37, i32* %3, align 4
br label %85
38: ; preds = %18
%39 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%40 = call i64 @unwrap_int(%struct.SinObj* noundef %39, i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.101, i64 0, i64 0))
%41 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%42 = call i64 @unwrap_int(%struct.SinObj* noundef %41, i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.102, i64 0, i64 0))
%43 = icmp eq i64 %40, %42
br i1 %43, label %44, label %45
44: ; preds = %38
store i32 1, i32* %3, align 4
br label %85
45: ; preds = %38
store i32 0, i32* %3, align 4
br label %85
46: ; preds = %18
%47 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%48 = call i8* @unwrap_str(%struct.SinObj* noundef %47, i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.103, i64 0, i64 0))
store i8* %48, i8** %6, align 8
%49 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%50 = call i8* @unwrap_str(%struct.SinObj* noundef %49, i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.104, i64 0, i64 0))
store i8* %50, i8** %7, align 8
%51 = load i8*, i8** %6, align 8
%52 = load i8*, i8** %7, align 8
%53 = call i32 @strcmp(i8* noundef %51, i8* noundef %52) #10
%54 = icmp eq i32 %53, 0
br i1 %54, label %55, label %56
55: ; preds = %46
store i32 1, i32* %3, align 4
br label %85
56: ; preds = %46
store i32 0, i32* %3, align 4
br label %85
57: ; preds = %18
%58 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%59 = call i8* @unwrap_sym(%struct.SinObj* noundef %58, i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.105, i64 0, i64 0))
store i8* %59, i8** %8, align 8
%60 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%61 = call i8* @unwrap_sym(%struct.SinObj* noundef %60, i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.106, i64 0, i64 0))
store i8* %61, i8** %9, align 8
%62 = load i8*, i8** %8, align 8
%63 = load i8*, i8** %9, align 8
%64 = call i32 @strcmp(i8* noundef %62, i8* noundef %63) #10
%65 = icmp eq i32 %64, 0
br i1 %65, label %66, label %67
66: ; preds = %57
store i32 1, i32* %3, align 4
br label %85
67: ; preds = %57
store i32 0, i32* %3, align 4
br label %85
68: ; preds = %18
%69 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%70 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%71 = call i32 @vec_eq_helper(%struct.SinObj* noundef %69, %struct.SinObj* noundef %70)
store i32 %71, i32* %3, align 4
br label %85
72: ; preds = %18
%73 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%74 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([34 x i8], [34 x i8]* @.str.107, i64 0, i64 0))
%75 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
76: ; preds = %18
%77 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%78 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([33 x i8], [33 x i8]* @.str.108, i64 0, i64 0))
%79 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
80: ; preds = %18
%81 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%82 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([42 x i8], [42 x i8]* @.str.109, i64 0, i64 0))
%83 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
84: ; preds = %18
call void @llvm.trap()
unreachable
85: ; preds = %68, %67, %66, %56, %55, %45, %44, %34, %33, %32, %31, %30, %23, %22, %17
%86 = load i32, i32* %3, align 4
ret i32 %86
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.Map* @insert_copy(%struct.Map* noundef %0) #0 {
%2 = alloca %struct.Map*, align 8
%3 = alloca %struct.Map*, align 8
%4 = alloca %struct.Map*, align 8
store %struct.Map* %0, %struct.Map** %3, align 8
%5 = load %struct.Map*, %struct.Map** %3, align 8
%6 = icmp eq %struct.Map* %5, null
br i1 %6, label %7, label %8
7: ; preds = %1
store %struct.Map* null, %struct.Map** %2, align 8
br label %28
8: ; preds = %1
%9 = call noalias i8* @malloc(i64 noundef 24) #9
%10 = bitcast i8* %9 to %struct.Map*
store %struct.Map* %10, %struct.Map** %4, align 8
%11 = load %struct.Map*, %struct.Map** %3, align 8
%12 = getelementptr inbounds %struct.Map, %struct.Map* %11, i32 0, i32 1
%13 = load %struct.SinObj*, %struct.SinObj** %12, align 8
%14 = load %struct.Map*, %struct.Map** %4, align 8
%15 = getelementptr inbounds %struct.Map, %struct.Map* %14, i32 0, i32 1
store %struct.SinObj* %13, %struct.SinObj** %15, align 8
%16 = load %struct.Map*, %struct.Map** %3, align 8
%17 = getelementptr inbounds %struct.Map, %struct.Map* %16, i32 0, i32 2
%18 = load %struct.SinObj*, %struct.SinObj** %17, align 8
%19 = load %struct.Map*, %struct.Map** %4, align 8
%20 = getelementptr inbounds %struct.Map, %struct.Map* %19, i32 0, i32 2
store %struct.SinObj* %18, %struct.SinObj** %20, align 8
%21 = load %struct.Map*, %struct.Map** %3, align 8
%22 = getelementptr inbounds %struct.Map, %struct.Map* %21, i32 0, i32 0
%23 = load %struct.Map*, %struct.Map** %22, align 8
%24 = call %struct.Map* @insert_copy(%struct.Map* noundef %23)
%25 = load %struct.Map*, %struct.Map** %4, align 8
%26 = getelementptr inbounds %struct.Map, %struct.Map* %25, i32 0, i32 0
store %struct.Map* %24, %struct.Map** %26, align 8
%27 = load %struct.Map*, %struct.Map** %4, align 8
store %struct.Map* %27, %struct.Map** %2, align 8
br label %28
28: ; preds = %8, %7
%29 = load %struct.Map*, %struct.Map** %2, align 8
ret %struct.Map* %29
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.Map* @map_insert(%struct.Map* noundef %0, %struct.SinObj* noundef %1, %struct.SinObj* noundef %2) #0 {
%4 = alloca %struct.Map*, align 8
%5 = alloca %struct.SinObj*, align 8
%6 = alloca %struct.SinObj*, align 8
store %struct.Map* %0, %struct.Map** %4, align 8
store %struct.SinObj* %1, %struct.SinObj** %5, align 8
store %struct.SinObj* %2, %struct.SinObj** %6, align 8
%7 = load %struct.Map*, %struct.Map** %4, align 8
%8 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%9 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%10 = call %struct.Map* @insert_update(%struct.Map* noundef %7, %struct.SinObj* noundef %8, %struct.SinObj* noundef %9)
ret %struct.Map* %10
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @map_keys(%struct.Map* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.Map*, align 8
%4 = alloca %struct.SinObj*, align 8
%5 = alloca %struct.SinObj*, align 8
%6 = alloca %struct.SinObj*, align 8
store %struct.Map* %0, %struct.Map** %3, align 8
%7 = load %struct.Map*, %struct.Map** %3, align 8
%8 = icmp eq %struct.Map* %7, null
br i1 %8, label %9, label %11
9: ; preds = %1
%10 = call %struct.SinObj* @const_init_null()
store %struct.SinObj* %10, %struct.SinObj** %2, align 8
br label %23
11: ; preds = %1
%12 = load %struct.Map*, %struct.Map** %3, align 8
%13 = getelementptr inbounds %struct.Map, %struct.Map* %12, i32 0, i32 1
%14 = load %struct.SinObj*, %struct.SinObj** %13, align 8
store %struct.SinObj* %14, %struct.SinObj** %4, align 8
%15 = load %struct.Map*, %struct.Map** %3, align 8
%16 = getelementptr inbounds %struct.Map, %struct.Map* %15, i32 0, i32 0
%17 = load %struct.Map*, %struct.Map** %16, align 8
%18 = call %struct.SinObj* @map_keys(%struct.Map* noundef %17)
store %struct.SinObj* %18, %struct.SinObj** %5, align 8
%19 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%20 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%21 = call %struct.SinObj* @prim_cons(%struct.SinObj* noundef %19, %struct.SinObj* noundef %20)
store %struct.SinObj* %21, %struct.SinObj** %6, align 8
%22 = load %struct.SinObj*, %struct.SinObj** %6, align 8
store %struct.SinObj* %22, %struct.SinObj** %2, align 8
br label %23
23: ; preds = %11, %9
%24 = load %struct.SinObj*, %struct.SinObj** %2, align 8
ret %struct.SinObj* %24
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local %struct.SinObj* @const_init_null() #2 {
%1 = alloca %struct.SinObj*, align 8
%2 = call %struct.SinObj* @alloc_atomic(i64 noundef 1)
store %struct.SinObj* %2, %struct.SinObj** %1, align 8
%3 = load %struct.SinObj*, %struct.SinObj** %1, align 8
%4 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %3, i32 0, i32 0
store i8* null, i8** %4, align 8
%5 = load %struct.SinObj*, %struct.SinObj** %1, align 8
%6 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
store i32 1, i32* %6, align 8
%7 = load %struct.SinObj*, %struct.SinObj** %1, align 8
ret %struct.SinObj* %7
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local %struct.SinObj* @prim_cons(%struct.SinObj* noundef %0, %struct.SinObj* noundef %1) #2 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj*, align 8
%5 = alloca %struct.SinObj*, align 8
%6 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store %struct.SinObj* %1, %struct.SinObj** %4, align 8
%7 = call %struct.SinObj* @alloc(i64 noundef 2)
store %struct.SinObj* %7, %struct.SinObj** %5, align 8
%8 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%9 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%10 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %9, i64 0
%11 = bitcast %struct.SinObj* %10 to i8*
%12 = bitcast %struct.SinObj* %8 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %11, i8* align 8 %12, i64 16, i1 false)
%13 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%14 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%15 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %14, i64 1
%16 = bitcast %struct.SinObj* %15 to i8*
%17 = bitcast %struct.SinObj* %13 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %16, i8* align 8 %17, i64 16, i1 false)
%18 = call %struct.SinObj* @alloc(i64 noundef 1)
store %struct.SinObj* %18, %struct.SinObj** %6, align 8
%19 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%20 = bitcast %struct.SinObj* %19 to i64*
%21 = bitcast i64* %20 to i8*
%22 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%23 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %22, i32 0, i32 0
store i8* %21, i8** %23, align 8
%24 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %24, i32 0, i32 1
store i32 4, i32* %25, align 8
%26 = load %struct.SinObj*, %struct.SinObj** %6, align 8
ret %struct.SinObj* %26
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @map_get(%struct.Map* noundef %0, %struct.SinObj* noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.Map*, align 8
%5 = alloca %struct.SinObj*, align 8
store %struct.Map* %0, %struct.Map** %4, align 8
store %struct.SinObj* %1, %struct.SinObj** %5, align 8
br label %6
6: ; preds = %20, %2
%7 = load %struct.Map*, %struct.Map** %4, align 8
%8 = icmp ne %struct.Map* %7, null
br i1 %8, label %9, label %24
9: ; preds = %6
%10 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%11 = load %struct.Map*, %struct.Map** %4, align 8
%12 = getelementptr inbounds %struct.Map, %struct.Map* %11, i32 0, i32 1
%13 = load %struct.SinObj*, %struct.SinObj** %12, align 8
%14 = call i32 @eq_helper(%struct.SinObj* noundef %10, %struct.SinObj* noundef %13)
%15 = icmp eq i32 %14, 1
br i1 %15, label %16, label %20
16: ; preds = %9
%17 = load %struct.Map*, %struct.Map** %4, align 8
%18 = getelementptr inbounds %struct.Map, %struct.Map* %17, i32 0, i32 2
%19 = load %struct.SinObj*, %struct.SinObj** %18, align 8
store %struct.SinObj* %19, %struct.SinObj** %3, align 8
br label %25
20: ; preds = %9
%21 = load %struct.Map*, %struct.Map** %4, align 8
%22 = getelementptr inbounds %struct.Map, %struct.Map* %21, i32 0, i32 0
%23 = load %struct.Map*, %struct.Map** %22, align 8
store %struct.Map* %23, %struct.Map** %4, align 8
br label %6, !llvm.loop !6
24: ; preds = %6
store %struct.SinObj* null, %struct.SinObj** %3, align 8
br label %25
25: ; preds = %24, %16
%26 = load %struct.SinObj*, %struct.SinObj** %3, align 8
ret %struct.SinObj* %26
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local zeroext i1 @map_has_key(%struct.Map* noundef %0, %struct.SinObj* noundef %1) #0 {
%3 = alloca i1, align 1
%4 = alloca %struct.Map*, align 8
%5 = alloca %struct.SinObj*, align 8
store %struct.Map* %0, %struct.Map** %4, align 8
store %struct.SinObj* %1, %struct.SinObj** %5, align 8
br label %6
6: ; preds = %17, %2
%7 = load %struct.Map*, %struct.Map** %4, align 8
%8 = icmp ne %struct.Map* %7, null
br i1 %8, label %9, label %21
9: ; preds = %6
%10 = load %struct.Map*, %struct.Map** %4, align 8
%11 = getelementptr inbounds %struct.Map, %struct.Map* %10, i32 0, i32 1
%12 = load %struct.SinObj*, %struct.SinObj** %11, align 8
%13 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%14 = call i32 @eq_helper(%struct.SinObj* noundef %12, %struct.SinObj* noundef %13)
%15 = icmp eq i32 %14, 1
br i1 %15, label %16, label %17
16: ; preds = %9
store i1 true, i1* %3, align 1
br label %22
17: ; preds = %9
%18 = load %struct.Map*, %struct.Map** %4, align 8
%19 = getelementptr inbounds %struct.Map, %struct.Map* %18, i32 0, i32 0
%20 = load %struct.Map*, %struct.Map** %19, align 8
store %struct.Map* %20, %struct.Map** %4, align 8
br label %6, !llvm.loop !8
21: ; preds = %6
store i1 false, i1* %3, align 1
br label %22
22: ; preds = %21, %16
%23 = load i1, i1* %3, align 1
ret i1 %23
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local i64 @map_count(%struct.Map* noundef %0) #2 {
%2 = alloca %struct.Map*, align 8
%3 = alloca i64, align 8
store %struct.Map* %0, %struct.Map** %2, align 8
store i64 0, i64* %3, align 8
br label %4
4: ; preds = %7, %1
%5 = load %struct.Map*, %struct.Map** %2, align 8
%6 = icmp ne %struct.Map* %5, null
br i1 %6, label %7, label %13
7: ; preds = %4
%8 = load i64, i64* %3, align 8
%9 = add i64 %8, 1
store i64 %9, i64* %3, align 8
%10 = load %struct.Map*, %struct.Map** %2, align 8
%11 = getelementptr inbounds %struct.Map, %struct.Map* %10, i32 0, i32 0
%12 = load %struct.Map*, %struct.Map** %11, align 8
store %struct.Map* %12, %struct.Map** %2, align 8
br label %4, !llvm.loop !9
13: ; preds = %4
%14 = load i64, i64* %3, align 8
ret i64 %14
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local void @debug_output_registers(%struct.SinRecord** noundef %0, %struct.SinObj*** noundef %1, %struct.SinObj*** noundef %2, %struct.SinObj** noundef %3) #0 {
%5 = alloca %struct.SinRecord**, align 8
%6 = alloca %struct.SinObj***, align 8
%7 = alloca %struct.SinObj***, align 8
%8 = alloca %struct.SinObj**, align 8
store %struct.SinRecord** %0, %struct.SinRecord*** %5, align 8
store %struct.SinObj*** %1, %struct.SinObj**** %6, align 8
store %struct.SinObj*** %2, %struct.SinObj**** %7, align 8
store %struct.SinObj** %3, %struct.SinObj*** %8, align 8
%9 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([18 x i8], [18 x i8]* @.str, i64 0, i64 0))
%10 = load %struct.SinRecord**, %struct.SinRecord*** %5, align 8
%11 = load %struct.SinRecord*, %struct.SinRecord** %10, align 8
%12 = bitcast %struct.SinRecord* %11 to i8*
%13 = load %struct.SinObj***, %struct.SinObj**** %6, align 8
%14 = load %struct.SinObj**, %struct.SinObj*** %13, align 8
%15 = bitcast %struct.SinObj** %14 to i8*
%16 = load %struct.SinObj***, %struct.SinObj**** %7, align 8
%17 = load %struct.SinObj**, %struct.SinObj*** %16, align 8
%18 = bitcast %struct.SinObj** %17 to i8*
%19 = load %struct.SinObj**, %struct.SinObj*** %8, align 8
%20 = load %struct.SinObj*, %struct.SinObj** %19, align 8
%21 = bitcast %struct.SinObj* %20 to i8*
%22 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([38 x i8], [38 x i8]* @.str.1, i64 0, i64 0), i8* noundef %12, i8* noundef %15, i8* noundef %18, i8* noundef %21)
ret void
}
declare i32 @printf(i8* noundef, ...) #3
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local %struct.SinObj* @alloc(i64 noundef %0) #2 {
%2 = alloca i64, align 8
store i64 %0, i64* %2, align 8
%3 = load i64, i64* %2, align 8
%4 = mul i64 16, %3
%5 = call noalias i8* @malloc(i64 noundef %4) #9
%6 = bitcast i8* %5 to %struct.SinObj*
ret %struct.SinObj* %6
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local %struct.SinObj* @alloc_atomic(i64 noundef %0) #2 {
%2 = alloca i64, align 8
store i64 %0, i64* %2, align 8
%3 = load i64, i64* %2, align 8
%4 = call %struct.SinObj* @alloc(i64 noundef %3)
ret %struct.SinObj* %4
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local void @_get_both(%struct.SinObj* noundef %0, %struct.SinObj* noundef %1, %struct.SinObj* noundef %2) #0 {
%4 = alloca %struct.SinObj*, align 8
%5 = alloca %struct.SinObj*, align 8
%6 = alloca %struct.SinObj*, align 8
%7 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %4, align 8
store %struct.SinObj* %1, %struct.SinObj** %5, align 8
store %struct.SinObj* %2, %struct.SinObj** %6, align 8
%8 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%9 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %8, i8* noundef getelementptr inbounds ([10 x i8], [10 x i8]* @.str.2, i64 0, i64 0))
store %struct.SinObj* %9, %struct.SinObj** %7, align 8
%10 = load %struct.SinObj*, %struct.SinObj** %7, align 8
%11 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %10, i64 0
%12 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%13 = bitcast %struct.SinObj* %12 to i8*
%14 = bitcast %struct.SinObj* %11 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %13, i8* align 8 %14, i64 16, i1 false)
%15 = load %struct.SinObj*, %struct.SinObj** %7, align 8
%16 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %15, i64 1
%17 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%18 = bitcast %struct.SinObj* %17 to i8*
%19 = bitcast %struct.SinObj* %16 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %18, i8* align 8 %19, i64 16, i1 false)
ret void
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %0, i8* noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca i8*, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store i8* %1, i8** %4, align 8
%5 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%6 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%7 = load i32, i32* %6, align 8
%8 = icmp ne i32 %7, 4
br i1 %8, label %9, label %17
9: ; preds = %2
%10 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%11 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%12 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %11, i32 0, i32 1
%13 = load i32, i32* %12, align 8
%14 = load i8*, i8** %4, align 8
%15 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([49 x i8], [49 x i8]* @.str.24, i64 0, i64 0), i32 noundef %13, i8* noundef %14)
%16 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
17: ; preds = %2
%18 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%19 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %18, i32 0, i32 0
%20 = load i8*, i8** %19, align 8
%21 = bitcast i8* %20 to %struct.SinObj*
ret %struct.SinObj* %21
}
; Function Attrs: argmemonly nofree nounwind willreturn
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #4
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local %struct.SinObj* @const_init_int(i64 noundef %0) #2 {
%2 = alloca i64, align 8
%3 = alloca %struct.SinObj*, align 8
store i64 %0, i64* %2, align 8
%4 = call %struct.SinObj* @alloc_atomic(i64 noundef 1)
store %struct.SinObj* %4, %struct.SinObj** %3, align 8
%5 = load i64, i64* %2, align 8
%6 = inttoptr i64 %5 to i64*
%7 = bitcast i64* %6 to i8*
%8 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%9 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %8, i32 0, i32 0
store i8* %7, i8** %9, align 8
%10 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%11 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %10, i32 0, i32 1
store i32 5, i32* %11, align 8
%12 = load %struct.SinObj*, %struct.SinObj** %3, align 8
ret %struct.SinObj* %12
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local %struct.SinObj* @const_init_void() #2 {
%1 = alloca %struct.SinObj*, align 8
%2 = call %struct.SinObj* @alloc_atomic(i64 noundef 1)
store %struct.SinObj* %2, %struct.SinObj** %1, align 8
%3 = load %struct.SinObj*, %struct.SinObj** %1, align 8
%4 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %3, i32 0, i32 0
store i8* null, i8** %4, align 8
%5 = load %struct.SinObj*, %struct.SinObj** %1, align 8
%6 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
store i32 0, i32* %6, align 8
%7 = load %struct.SinObj*, %struct.SinObj** %1, align 8
ret %struct.SinObj* %7
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local %struct.SinObj* @const_init_true() #2 {
%1 = alloca %struct.SinObj*, align 8
%2 = call %struct.SinObj* @alloc_atomic(i64 noundef 1)
store %struct.SinObj* %2, %struct.SinObj** %1, align 8
%3 = load %struct.SinObj*, %struct.SinObj** %1, align 8
%4 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %3, i32 0, i32 0
store i8* inttoptr (i64 1 to i8*), i8** %4, align 8
%5 = load %struct.SinObj*, %struct.SinObj** %1, align 8
%6 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
store i32 2, i32* %6, align 8
%7 = load %struct.SinObj*, %struct.SinObj** %1, align 8
ret %struct.SinObj* %7
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local %struct.SinObj* @const_init_false() #2 {
%1 = alloca %struct.SinObj*, align 8
%2 = call %struct.SinObj* @alloc_atomic(i64 noundef 1)
store %struct.SinObj* %2, %struct.SinObj** %1, align 8
%3 = load %struct.SinObj*, %struct.SinObj** %1, align 8
%4 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %3, i32 0, i32 0
store i8* null, i8** %4, align 8
%5 = load %struct.SinObj*, %struct.SinObj** %1, align 8
%6 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
store i32 2, i32* %6, align 8
%7 = load %struct.SinObj*, %struct.SinObj** %1, align 8
ret %struct.SinObj* %7
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local %struct.SinObj* @const_init_string(i8* noundef %0) #2 {
%2 = alloca i8*, align 8
%3 = alloca %struct.SinObj*, align 8
store i8* %0, i8** %2, align 8
%4 = call %struct.SinObj* @alloc(i64 noundef 1)
store %struct.SinObj* %4, %struct.SinObj** %3, align 8
%5 = load i8*, i8** %2, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 0
store i8* %5, i8** %7, align 8
%8 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%9 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %8, i32 0, i32 1
store i32 6, i32* %9, align 8
%10 = load %struct.SinObj*, %struct.SinObj** %3, align 8
ret %struct.SinObj* %10
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local %struct.SinObj* @const_init_symbol(i8* noundef %0) #2 {
%2 = alloca i8*, align 8
%3 = alloca %struct.SinObj*, align 8
store i8* %0, i8** %2, align 8
%4 = call %struct.SinObj* @alloc(i64 noundef 1)
store %struct.SinObj* %4, %struct.SinObj** %3, align 8
%5 = load i8*, i8** %2, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 0
store i8* %5, i8** %7, align 8
%8 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%9 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %8, i32 0, i32 1
store i32 7, i32* %9, align 8
%10 = load %struct.SinObj*, %struct.SinObj** %3, align 8
ret %struct.SinObj* %10
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local %struct.SinRecord* @make_record(%struct.SinRecord* noundef %0, %struct.SinObj*** noundef %1) #2 {
%3 = alloca %struct.SinRecord*, align 8
%4 = alloca %struct.SinObj***, align 8
%5 = alloca %struct.SinRecord*, align 8
%6 = alloca %struct.SinObj**, align 8
store %struct.SinRecord* %0, %struct.SinRecord** %3, align 8
store %struct.SinObj*** %1, %struct.SinObj**** %4, align 8
%7 = call noalias i8* @malloc(i64 noundef 40) #9
%8 = bitcast i8* %7 to %struct.SinRecord*
store %struct.SinRecord* %8, %struct.SinRecord** %5, align 8
%9 = call noalias i8* @calloc(i64 noundef 4096, i64 noundef 8) #9
%10 = bitcast i8* %9 to %struct.SinObj**
store %struct.SinObj** %10, %struct.SinObj*** %6, align 8
%11 = load %struct.SinObj**, %struct.SinObj*** %6, align 8
%12 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %11, i64 4096
%13 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %12, i64 -100
%14 = load %struct.SinObj***, %struct.SinObj**** %4, align 8
store %struct.SinObj** %13, %struct.SinObj*** %14, align 8
%15 = load %struct.SinObj**, %struct.SinObj*** %6, align 8
%16 = load %struct.SinRecord*, %struct.SinRecord** %5, align 8
%17 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %16, i32 0, i32 0
store %struct.SinObj** %15, %struct.SinObj*** %17, align 8
%18 = load %struct.SinRecord*, %struct.SinRecord** %5, align 8
%19 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %18, i32 0, i32 2
store i64 512, i64* %19, align 8
%20 = load %struct.SinRecord*, %struct.SinRecord** %3, align 8
%21 = load %struct.SinRecord*, %struct.SinRecord** %5, align 8
%22 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %21, i32 0, i32 1
store %struct.SinRecord* %20, %struct.SinRecord** %22, align 8
%23 = load %struct.SinRecord*, %struct.SinRecord** %5, align 8
ret %struct.SinRecord* %23
}
; Function Attrs: nounwind
declare noalias i8* @calloc(i64 noundef, i64 noundef) #1
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local %struct.SinRecord* @split_record(%struct.SinRecord* noundef %0, %struct.SinObj** noundef %1, i64 noundef %2, i64 noundef %3, i8* noundef %4) #2 {
%6 = alloca %struct.SinRecord*, align 8
%7 = alloca %struct.SinObj**, align 8
%8 = alloca i64, align 8
%9 = alloca i64, align 8
%10 = alloca i8*, align 8
%11 = alloca %struct.SinRecord*, align 8
store %struct.SinRecord* %0, %struct.SinRecord** %6, align 8
store %struct.SinObj** %1, %struct.SinObj*** %7, align 8
store i64 %2, i64* %8, align 8
store i64 %3, i64* %9, align 8
store i8* %4, i8** %10, align 8
%12 = call noalias i8* @malloc(i64 noundef 40) #9
%13 = bitcast i8* %12 to %struct.SinRecord*
store %struct.SinRecord* %13, %struct.SinRecord** %11, align 8
%14 = load %struct.SinObj**, %struct.SinObj*** %7, align 8
%15 = load %struct.SinRecord*, %struct.SinRecord** %11, align 8
%16 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %15, i32 0, i32 0
store %struct.SinObj** %14, %struct.SinObj*** %16, align 8
%17 = load %struct.SinRecord*, %struct.SinRecord** %6, align 8
%18 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %17, i32 0, i32 2
%19 = load i64, i64* %18, align 8
%20 = load i64, i64* %8, align 8
%21 = sub nsw i64 %19, %20
%22 = load %struct.SinRecord*, %struct.SinRecord** %11, align 8
%23 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %22, i32 0, i32 2
store i64 %21, i64* %23, align 8
%24 = load %struct.SinRecord*, %struct.SinRecord** %6, align 8
%25 = load %struct.SinRecord*, %struct.SinRecord** %11, align 8
%26 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %25, i32 0, i32 1
store %struct.SinRecord* %24, %struct.SinRecord** %26, align 8
%27 = load i64, i64* %8, align 8
%28 = load %struct.SinRecord*, %struct.SinRecord** %6, align 8
%29 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %28, i32 0, i32 2
store i64 %27, i64* %29, align 8
%30 = load i64, i64* %9, align 8
%31 = load %struct.SinRecord*, %struct.SinRecord** %6, align 8
%32 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %31, i32 0, i32 3
store i64 %30, i64* %32, align 8
%33 = load i8*, i8** %10, align 8
%34 = load %struct.SinRecord*, %struct.SinRecord** %6, align 8
%35 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %34, i32 0, i32 4
store i8* %33, i8** %35, align 8
%36 = load %struct.SinRecord*, %struct.SinRecord** %11, align 8
ret %struct.SinRecord* %36
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local %struct.SinObj* @make_continuation_closure(%struct.SinRecord* noundef %0, i8* noundef %1) #2 {
%3 = alloca %struct.SinRecord*, align 8
%4 = alloca i8*, align 8
%5 = alloca %struct.SinObj*, align 8
%6 = alloca %struct.SinObj, align 8
%7 = alloca %struct.SinObj, align 8
%8 = alloca %struct.SinObj*, align 8
store %struct.SinRecord* %0, %struct.SinRecord** %3, align 8
store i8* %1, i8** %4, align 8
%9 = call %struct.SinObj* @alloc(i64 noundef 2)
store %struct.SinObj* %9, %struct.SinObj** %5, align 8
%10 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 1
store i32 11, i32* %10, align 8
%11 = load i8*, i8** %4, align 8
%12 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 0
store i8* %11, i8** %12, align 8
%13 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %7, i32 0, i32 1
store i32 12, i32* %13, align 8
%14 = load %struct.SinRecord*, %struct.SinRecord** %3, align 8
%15 = bitcast %struct.SinRecord* %14 to i8*
%16 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %7, i32 0, i32 0
store i8* %15, i8** %16, align 8
%17 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%18 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %17, i64 0
%19 = bitcast %struct.SinObj* %18 to i8*
%20 = bitcast %struct.SinObj* %6 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false)
%21 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%22 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %21, i64 1
%23 = bitcast %struct.SinObj* %22 to i8*
%24 = bitcast %struct.SinObj* %7 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %24, i64 16, i1 false)
%25 = call %struct.SinObj* @alloc(i64 noundef 1)
store %struct.SinObj* %25, %struct.SinObj** %8, align 8
%26 = load %struct.SinObj*, %struct.SinObj** %8, align 8
%27 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %26, i32 0, i32 1
store i32 3, i32* %27, align 8
%28 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%29 = bitcast %struct.SinObj* %28 to i8*
%30 = load %struct.SinObj*, %struct.SinObj** %8, align 8
%31 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %30, i32 0, i32 0
store i8* %29, i8** %31, align 8
%32 = load %struct.SinObj*, %struct.SinObj** %8, align 8
ret %struct.SinObj* %32
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @closure_alloc(i64 noundef %0, i8* noundef %1) #0 {
%3 = alloca i64, align 8
%4 = alloca i8*, align 8
%5 = alloca %struct.SinObj*, align 8
%6 = alloca %struct.SinObj, align 8
%7 = alloca %struct.SinObj, align 8
%8 = alloca %struct.SinObj*, align 8
store i64 %0, i64* %3, align 8
store i8* %1, i8** %4, align 8
%9 = call %struct.SinObj* @alloc(i64 noundef 2)
store %struct.SinObj* %9, %struct.SinObj** %5, align 8
%10 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 1
store i32 11, i32* %10, align 8
%11 = load i8*, i8** %4, align 8
%12 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 0
store i8* %11, i8** %12, align 8
%13 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %7, i32 0, i32 1
store i32 11, i32* %13, align 8
%14 = load i64, i64* %3, align 8
%15 = call %struct.SinObj* @const_init_int(i64 noundef %14)
%16 = call %struct.SinObj* @const_init_int(i64 noundef 0)
%17 = call %struct.SinObj* @prim_make_45vector(%struct.SinObj* noundef %15, %struct.SinObj* noundef %16)
%18 = bitcast %struct.SinObj* %17 to i8*
%19 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %7, i32 0, i32 0
store i8* %18, i8** %19, align 8
%20 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%21 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %20, i64 0
%22 = bitcast %struct.SinObj* %21 to i8*
%23 = bitcast %struct.SinObj* %6 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %22, i8* align 8 %23, i64 16, i1 false)
%24 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %24, i64 1
%26 = bitcast %struct.SinObj* %25 to i8*
%27 = bitcast %struct.SinObj* %7 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %26, i8* align 8 %27, i64 16, i1 false)
%28 = call %struct.SinObj* @alloc(i64 noundef 1)
store %struct.SinObj* %28, %struct.SinObj** %8, align 8
%29 = load %struct.SinObj*, %struct.SinObj** %8, align 8
%30 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %29, i32 0, i32 1
store i32 3, i32* %30, align 8
%31 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%32 = bitcast %struct.SinObj* %31 to i8*
%33 = load %struct.SinObj*, %struct.SinObj** %8, align 8
%34 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %33, i32 0, i32 0
store i8* %32, i8** %34, align 8
%35 = load %struct.SinObj*, %struct.SinObj** %8, align 8
ret %struct.SinObj* %35
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim_make_45vector(%struct.SinObj* noundef %0, %struct.SinObj* noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj*, align 8
%5 = alloca i64, align 8
%6 = alloca %struct.SinObj*, align 8
%7 = alloca i64, align 8
%8 = alloca %struct.SinObj*, align 8
%9 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store %struct.SinObj* %1, %struct.SinObj** %4, align 8
%10 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%11 = call i64 @unwrap_int(%struct.SinObj* noundef %10, i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.21, i64 0, i64 0))
store i64 %11, i64* %5, align 8
%12 = load i64, i64* %5, align 8
%13 = add i64 1, %12
%14 = call %struct.SinObj* @alloc(i64 noundef %13)
store %struct.SinObj* %14, %struct.SinObj** %6, align 8
%15 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%16 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %15, i64 0
%17 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %16, i32 0, i32 1
store i32 5, i32* %17, align 8
%18 = load i64, i64* %5, align 8
%19 = inttoptr i64 %18 to i64*
%20 = bitcast i64* %19 to i8*
%21 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%22 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %21, i64 0
%23 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %22, i32 0, i32 0
store i8* %20, i8** %23, align 8
store i64 1, i64* %7, align 8
br label %24
24: ; preds = %51, %2
%25 = load i64, i64* %7, align 8
%26 = load i64, i64* %5, align 8
%27 = icmp ule i64 %25, %26
br i1 %27, label %28, label %54
28: ; preds = %24
%29 = call %struct.SinObj* @alloc(i64 noundef 1)
store %struct.SinObj* %29, %struct.SinObj** %8, align 8
%30 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%31 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %30, i32 0, i32 1
%32 = load i32, i32* %31, align 8
%33 = load %struct.SinObj*, %struct.SinObj** %8, align 8
%34 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %33, i32 0, i32 1
store i32 %32, i32* %34, align 8
%35 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%36 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %35, i32 0, i32 0
%37 = load i8*, i8** %36, align 8
%38 = load %struct.SinObj*, %struct.SinObj** %8, align 8
%39 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %38, i32 0, i32 0
store i8* %37, i8** %39, align 8
%40 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%41 = load i64, i64* %7, align 8
%42 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %40, i64 %41
%43 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %42, i32 0, i32 1
store i32 11, i32* %43, align 8
%44 = load %struct.SinObj*, %struct.SinObj** %8, align 8
%45 = bitcast %struct.SinObj* %44 to i64*
%46 = bitcast i64* %45 to i8*
%47 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%48 = load i64, i64* %7, align 8
%49 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %47, i64 %48
%50 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %49, i32 0, i32 0
store i8* %46, i8** %50, align 8
br label %51
51: ; preds = %28
%52 = load i64, i64* %7, align 8
%53 = add i64 %52, 1
store i64 %53, i64* %7, align 8
br label %24, !llvm.loop !10
54: ; preds = %24
%55 = call %struct.SinObj* @alloc(i64 noundef 1)
store %struct.SinObj* %55, %struct.SinObj** %9, align 8
%56 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%57 = bitcast %struct.SinObj* %56 to i64*
%58 = bitcast i64* %57 to i8*
%59 = load %struct.SinObj*, %struct.SinObj** %9, align 8
%60 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %59, i32 0, i32 0
store i8* %58, i8** %60, align 8
%61 = load %struct.SinObj*, %struct.SinObj** %9, align 8
%62 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %61, i32 0, i32 1
store i32 8, i32* %62, align 8
%63 = load %struct.SinObj*, %struct.SinObj** %9, align 8
ret %struct.SinObj* %63
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local void @closure_place_freevar(%struct.SinObj* noundef %0, %struct.SinObj* noundef %1, i64 noundef %2) #0 {
%4 = alloca %struct.SinObj*, align 8
%5 = alloca %struct.SinObj*, align 8
%6 = alloca i64, align 8
%7 = alloca %struct.SinObj*, align 8
%8 = alloca %struct.SinObj*, align 8
%9 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %4, align 8
store %struct.SinObj* %1, %struct.SinObj** %5, align 8
store i64 %2, i64* %6, align 8
%10 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%11 = call %struct.SinObj* @unwrap_clo(%struct.SinObj* noundef %10, i8* noundef getelementptr inbounds ([22 x i8], [22 x i8]* @.str.3, i64 0, i64 0))
store %struct.SinObj* %11, %struct.SinObj** %7, align 8
%12 = load %struct.SinObj*, %struct.SinObj** %7, align 8
%13 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %12, i64 1
%14 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %13, i32 0, i32 0
%15 = load i8*, i8** %14, align 8
%16 = bitcast i8* %15 to %struct.SinObj*
store %struct.SinObj* %16, %struct.SinObj** %8, align 8
%17 = load i64, i64* %6, align 8
%18 = call %struct.SinObj* @const_init_int(i64 noundef %17)
store %struct.SinObj* %18, %struct.SinObj** %9, align 8
%19 = load %struct.SinObj*, %struct.SinObj** %8, align 8
%20 = load %struct.SinObj*, %struct.SinObj** %9, align 8
%21 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%22 = call %struct.SinObj* @prim_vector_45set_33(%struct.SinObj* noundef %19, %struct.SinObj* noundef %20, %struct.SinObj* noundef %21)
ret void
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @unwrap_clo(%struct.SinObj* noundef %0, i8* noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca i8*, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store i8* %1, i8** %4, align 8
%5 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%6 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%7 = load i32, i32* %6, align 8
%8 = icmp ne i32 %7, 3
br i1 %8, label %9, label %17
9: ; preds = %2
%10 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%11 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%12 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %11, i32 0, i32 1
%13 = load i32, i32* %12, align 8
%14 = load i8*, i8** %4, align 8
%15 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([51 x i8], [51 x i8]* @.str.26, i64 0, i64 0), i32 noundef %13, i8* noundef %14)
%16 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
17: ; preds = %2
%18 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%19 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %18, i32 0, i32 0
%20 = load i8*, i8** %19, align 8
%21 = bitcast i8* %20 to %struct.SinObj*
ret %struct.SinObj* %21
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim_vector_45set_33(%struct.SinObj* noundef %0, %struct.SinObj* noundef %1, %struct.SinObj* noundef %2) #0 {
%4 = alloca %struct.SinObj*, align 8
%5 = alloca %struct.SinObj*, align 8
%6 = alloca %struct.SinObj*, align 8
%7 = alloca %struct.SinObj*, align 8
%8 = alloca i64, align 8
%9 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %4, align 8
store %struct.SinObj* %1, %struct.SinObj** %5, align 8
store %struct.SinObj* %2, %struct.SinObj** %6, align 8
%10 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%11 = call %struct.SinObj* @unwrap_vector(%struct.SinObj* noundef %10, i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.91, i64 0, i64 0))
store %struct.SinObj* %11, %struct.SinObj** %7, align 8
%12 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%13 = call i64 @unwrap_int(%struct.SinObj* noundef %12, i8* noundef getelementptr inbounds ([28 x i8], [28 x i8]* @.str.92, i64 0, i64 0))
store i64 %13, i64* %8, align 8
%14 = load %struct.SinObj*, %struct.SinObj** %7, align 8
%15 = load i64, i64* %8, align 8
call void @bounds_check(%struct.SinObj* noundef %14, i64 noundef %15)
%16 = call %struct.SinObj* @alloc(i64 noundef 1)
store %struct.SinObj* %16, %struct.SinObj** %9, align 8
%17 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%18 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %17, i32 0, i32 1
%19 = load i32, i32* %18, align 8
%20 = load %struct.SinObj*, %struct.SinObj** %9, align 8
%21 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %20, i32 0, i32 1
store i32 %19, i32* %21, align 8
%22 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%23 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %22, i32 0, i32 0
%24 = load i8*, i8** %23, align 8
%25 = load %struct.SinObj*, %struct.SinObj** %9, align 8
%26 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %25, i32 0, i32 0
store i8* %24, i8** %26, align 8
%27 = load %struct.SinObj*, %struct.SinObj** %9, align 8
%28 = bitcast %struct.SinObj* %27 to i64*
%29 = bitcast i64* %28 to i8*
%30 = load %struct.SinObj*, %struct.SinObj** %7, align 8
%31 = load i64, i64* %8, align 8
%32 = add nsw i64 %31, 1
%33 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %30, i64 %32
%34 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %33, i32 0, i32 0
store i8* %29, i8** %34, align 8
%35 = call %struct.SinObj* @const_init_void()
ret %struct.SinObj* %35
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local i8* @closure_get_env_part(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%4 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%5 = call %struct.SinObj* @unwrap_clo(%struct.SinObj* noundef %4, i8* noundef getelementptr inbounds ([21 x i8], [21 x i8]* @.str.4, i64 0, i64 0))
store %struct.SinObj* %5, %struct.SinObj** %3, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i64 1
%8 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %7, i32 0, i32 0
%9 = load i8*, i8** %8, align 8
ret i8* %9
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local i8* @closure_get_fn_part(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%4 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%5 = call %struct.SinObj* @unwrap_clo(%struct.SinObj* noundef %4, i8* noundef getelementptr inbounds ([20 x i8], [20 x i8]* @.str.5, i64 0, i64 0))
store %struct.SinObj* %5, %struct.SinObj** %3, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i64 0
%8 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %7, i32 0, i32 0
%9 = load i8*, i8** %8, align 8
ret i8* %9
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local i8* @handle_underflow(%struct.SinRecord** noundef %0, %struct.SinObj*** noundef %1, %struct.SinObj*** noundef %2) #2 {
%4 = alloca %struct.SinRecord**, align 8
%5 = alloca %struct.SinObj***, align 8
%6 = alloca %struct.SinObj***, align 8
%7 = alloca %struct.SinRecord*, align 8
%8 = alloca %struct.SinRecord*, align 8
%9 = alloca i64, align 8
%10 = alloca i64, align 8
%11 = alloca i64, align 8
%12 = alloca i8*, align 8
store %struct.SinRecord** %0, %struct.SinRecord*** %4, align 8
store %struct.SinObj*** %1, %struct.SinObj**** %5, align 8
store %struct.SinObj*** %2, %struct.SinObj**** %6, align 8
%13 = load %struct.SinRecord**, %struct.SinRecord*** %4, align 8
%14 = load %struct.SinRecord*, %struct.SinRecord** %13, align 8
store %struct.SinRecord* %14, %struct.SinRecord** %7, align 8
%15 = load %struct.SinRecord*, %struct.SinRecord** %7, align 8
%16 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %15, i32 0, i32 1
%17 = load %struct.SinRecord*, %struct.SinRecord** %16, align 8
store %struct.SinRecord* %17, %struct.SinRecord** %8, align 8
%18 = load %struct.SinRecord*, %struct.SinRecord** %8, align 8
%19 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %18, i32 0, i32 1
%20 = load %struct.SinRecord*, %struct.SinRecord** %19, align 8
%21 = load %struct.SinRecord*, %struct.SinRecord** %7, align 8
%22 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %21, i32 0, i32 1
store %struct.SinRecord* %20, %struct.SinRecord** %22, align 8
%23 = load %struct.SinRecord*, %struct.SinRecord** %7, align 8
%24 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %23, i32 0, i32 2
%25 = load i64, i64* %24, align 8
store i64 %25, i64* %9, align 8
%26 = load %struct.SinRecord*, %struct.SinRecord** %8, align 8
%27 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %26, i32 0, i32 2
%28 = load i64, i64* %27, align 8
store i64 %28, i64* %10, align 8
%29 = load %struct.SinRecord*, %struct.SinRecord** %8, align 8
%30 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %29, i32 0, i32 3
%31 = load i64, i64* %30, align 8
store i64 %31, i64* %11, align 8
%32 = load %struct.SinRecord*, %struct.SinRecord** %8, align 8
%33 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %32, i32 0, i32 4
%34 = load i8*, i8** %33, align 8
store i8* %34, i8** %12, align 8
%35 = load i64, i64* %10, align 8
%36 = load i64, i64* %9, align 8
%37 = icmp sge i64 %35, %36
br i1 %37, label %38, label %49
38: ; preds = %3
%39 = call noalias i8* @calloc(i64 noundef 4096, i64 noundef 8) #9
%40 = bitcast i8* %39 to %struct.SinObj**
%41 = load %struct.SinRecord*, %struct.SinRecord** %7, align 8
%42 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %41, i32 0, i32 0
store %struct.SinObj** %40, %struct.SinObj*** %42, align 8
%43 = load %struct.SinRecord*, %struct.SinRecord** %7, align 8
%44 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %43, i32 0, i32 0
%45 = load %struct.SinObj**, %struct.SinObj*** %44, align 8
%46 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %45, i64 4096
%47 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %46, i64 -100
%48 = load %struct.SinObj***, %struct.SinObj**** %6, align 8
store %struct.SinObj** %47, %struct.SinObj*** %48, align 8
br label %49
49: ; preds = %38, %3
%50 = load %struct.SinRecord*, %struct.SinRecord** %7, align 8
%51 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %50, i32 0, i32 0
%52 = load %struct.SinObj**, %struct.SinObj*** %51, align 8
%53 = bitcast %struct.SinObj** %52 to i8*
%54 = load %struct.SinRecord*, %struct.SinRecord** %8, align 8
%55 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %54, i32 0, i32 0
%56 = load %struct.SinObj**, %struct.SinObj*** %55, align 8
%57 = bitcast %struct.SinObj** %56 to i8*
%58 = load i64, i64* %10, align 8
%59 = mul i64 %58, 8
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %53, i8* align 8 %57, i64 %59, i1 false)
%60 = load %struct.SinRecord*, %struct.SinRecord** %7, align 8
%61 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %60, i32 0, i32 0
%62 = load %struct.SinObj**, %struct.SinObj*** %61, align 8
%63 = load i64, i64* %11, align 8
%64 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %62, i64 %63
%65 = load %struct.SinObj***, %struct.SinObj**** %5, align 8
store %struct.SinObj** %64, %struct.SinObj*** %65, align 8
%66 = load i8*, i8** %12, align 8
ret i8* %66
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local zeroext i1 @check_for_overflow(%struct.SinObj*** noundef %0, %struct.SinObj*** noundef %1, i64 noundef %2) #2 {
%4 = alloca %struct.SinObj***, align 8
%5 = alloca %struct.SinObj***, align 8
%6 = alloca i64, align 8
store %struct.SinObj*** %0, %struct.SinObj**** %4, align 8
store %struct.SinObj*** %1, %struct.SinObj**** %5, align 8
store i64 %2, i64* %6, align 8
%7 = load %struct.SinObj***, %struct.SinObj**** %4, align 8
%8 = load %struct.SinObj**, %struct.SinObj*** %7, align 8
%9 = load i64, i64* %6, align 8
%10 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %8, i64 %9
%11 = ptrtoint %struct.SinObj** %10 to i64
%12 = load %struct.SinObj***, %struct.SinObj**** %5, align 8
%13 = load %struct.SinObj**, %struct.SinObj*** %12, align 8
%14 = ptrtoint %struct.SinObj** %13 to i64
%15 = icmp slt i64 %11, %14
ret i1 %15
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local zeroext i1 @callcc_at_base(%struct.SinRecord** noundef %0, %struct.SinObj*** noundef %1) #2 {
%3 = alloca %struct.SinRecord**, align 8
%4 = alloca %struct.SinObj***, align 8
store %struct.SinRecord** %0, %struct.SinRecord*** %3, align 8
store %struct.SinObj*** %1, %struct.SinObj**** %4, align 8
%5 = load %struct.SinRecord**, %struct.SinRecord*** %3, align 8
%6 = load %struct.SinRecord*, %struct.SinRecord** %5, align 8
%7 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %6, i32 0, i32 0
%8 = load %struct.SinObj**, %struct.SinObj*** %7, align 8
%9 = load %struct.SinObj***, %struct.SinObj**** %4, align 8
%10 = load %struct.SinObj**, %struct.SinObj*** %9, align 8
%11 = icmp eq %struct.SinObj** %8, %10
ret i1 %11
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local void @handle_overflow(%struct.SinRecord** noundef %0, %struct.SinObj*** noundef %1, %struct.SinObj*** noundef %2, i8* noundef %3, i64 noundef %4) #2 {
%6 = alloca %struct.SinRecord**, align 8
%7 = alloca %struct.SinObj***, align 8
%8 = alloca %struct.SinObj***, align 8
%9 = alloca i8*, align 8
%10 = alloca i64, align 8
%11 = alloca i64, align 8
%12 = alloca i64, align 8
%13 = alloca i8, align 1
%14 = alloca %struct.SinObj**, align 8
%15 = alloca i32, align 4
%16 = alloca %struct.SinRecord*, align 8
%17 = alloca %struct.SinRecord*, align 8
%18 = alloca %struct.SinRecord*, align 8
%19 = alloca %struct.SinRecord*, align 8
store %struct.SinRecord** %0, %struct.SinRecord*** %6, align 8
store %struct.SinObj*** %1, %struct.SinObj**** %7, align 8
store %struct.SinObj*** %2, %struct.SinObj**** %8, align 8
store i8* %3, i8** %9, align 8
store i64 %4, i64* %10, align 8
store i64 0, i64* %11, align 8
%20 = load i64, i64* %10, align 8
store i64 %20, i64* %12, align 8
store i8 0, i8* %13, align 1
%21 = load %struct.SinObj***, %struct.SinObj**** %7, align 8
%22 = load %struct.SinObj**, %struct.SinObj*** %21, align 8
store %struct.SinObj** %22, %struct.SinObj*** %14, align 8
store i32 0, i32* %15, align 4
br label %23
23: ; preds = %42, %5
%24 = load i32, i32* %15, align 4
%25 = icmp slt i32 %24, 4
br i1 %25, label %26, label %45
26: ; preds = %23
%27 = load %struct.SinObj**, %struct.SinObj*** %14, align 8
%28 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %27, i64 1
%29 = load %struct.SinObj*, %struct.SinObj** %28, align 8
%30 = ptrtoint %struct.SinObj* %29 to i64
store i64 %30, i64* %11, align 8
%31 = load i64, i64* %11, align 8
%32 = icmp eq i64 %31, -1
br i1 %32, label %33, label %34
33: ; preds = %26
store i8 1, i8* %13, align 1
br label %45
34: ; preds = %26
%35 = load i64, i64* %11, align 8
%36 = load i64, i64* %12, align 8
%37 = add nsw i64 %36, %35
store i64 %37, i64* %12, align 8
%38 = load i64, i64* %11, align 8
%39 = load %struct.SinObj**, %struct.SinObj*** %14, align 8
%40 = sub i64 0, %38
%41 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %39, i64 %40
store %struct.SinObj** %41, %struct.SinObj*** %14, align 8
br label %42
42: ; preds = %34
%43 = load i32, i32* %15, align 4
%44 = add nsw i32 %43, 1
store i32 %44, i32* %15, align 4
br label %23, !llvm.loop !11
45: ; preds = %33, %23
%46 = load i8, i8* %13, align 1
%47 = trunc i8 %46 to i1
br i1 %47, label %48, label %84
48: ; preds = %45
%49 = load %struct.SinRecord**, %struct.SinRecord*** %6, align 8
%50 = load %struct.SinRecord*, %struct.SinRecord** %49, align 8
store %struct.SinRecord* %50, %struct.SinRecord** %16, align 8
%51 = load %struct.SinRecord*, %struct.SinRecord** %16, align 8
%52 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %51, i32 0, i32 1
%53 = load %struct.SinRecord*, %struct.SinRecord** %52, align 8
%54 = load %struct.SinObj***, %struct.SinObj**** %8, align 8
%55 = call %struct.SinRecord* @make_record(%struct.SinRecord* noundef %53, %struct.SinObj*** noundef %54)
store %struct.SinRecord* %55, %struct.SinRecord** %17, align 8
%56 = load %struct.SinObj**, %struct.SinObj*** %14, align 8
%57 = load %struct.SinRecord*, %struct.SinRecord** %16, align 8
%58 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %57, i32 0, i32 0
%59 = load %struct.SinObj**, %struct.SinObj*** %58, align 8
%60 = icmp eq %struct.SinObj** %56, %59
br i1 %60, label %61, label %62
61: ; preds = %48
br label %64
62: ; preds = %48
call void @__assert_fail(i8* noundef getelementptr inbounds ([23 x i8], [23 x i8]* @.str.6, i64 0, i64 0), i8* noundef getelementptr inbounds ([22 x i8], [22 x i8]* @.str.7, i64 0, i64 0), i32 noundef 261, i8* noundef getelementptr inbounds ([72 x i8], [72 x i8]* @__PRETTY_FUNCTION__.handle_overflow, i64 0, i64 0)) #11
unreachable
63: ; No predecessors!
br label %64
64: ; preds = %63, %61
%65 = load %struct.SinRecord*, %struct.SinRecord** %17, align 8
%66 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %65, i32 0, i32 0
%67 = load %struct.SinObj**, %struct.SinObj*** %66, align 8
%68 = bitcast %struct.SinObj** %67 to i8*
%69 = load %struct.SinObj**, %struct.SinObj*** %14, align 8
%70 = bitcast %struct.SinObj** %69 to i8*
%71 = load i64, i64* %12, align 8
%72 = mul i64 %71, 8
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %68, i8* align 8 %70, i64 %72, i1 false)
%73 = load %struct.SinRecord*, %struct.SinRecord** %17, align 8
%74 = load %struct.SinRecord**, %struct.SinRecord*** %6, align 8
store %struct.SinRecord* %73, %struct.SinRecord** %74, align 8
%75 = load %struct.SinRecord*, %struct.SinRecord** %17, align 8
%76 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %75, i32 0, i32 0
%77 = load %struct.SinObj**, %struct.SinObj*** %76, align 8
%78 = load i64, i64* %12, align 8
%79 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %77, i64 %78
%80 = load i64, i64* %10, align 8
%81 = sub i64 0, %80
%82 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %79, i64 %81
%83 = load %struct.SinObj***, %struct.SinObj**** %7, align 8
store %struct.SinObj** %82, %struct.SinObj*** %83, align 8
br label %142
84: ; preds = %45
%85 = load %struct.SinRecord**, %struct.SinRecord*** %6, align 8
%86 = load %struct.SinRecord*, %struct.SinRecord** %85, align 8
store %struct.SinRecord* %86, %struct.SinRecord** %18, align 8
%87 = load %struct.SinRecord*, %struct.SinRecord** %18, align 8
%88 = load %struct.SinObj***, %struct.SinObj**** %8, align 8
%89 = call %struct.SinRecord* @make_record(%struct.SinRecord* noundef %87, %struct.SinObj*** noundef %88)
store %struct.SinRecord* %89, %struct.SinRecord** %19, align 8
%90 = load %struct.SinObj**, %struct.SinObj*** %14, align 8
%91 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %90, i64 0
%92 = load %struct.SinObj*, %struct.SinObj** %91, align 8
%93 = bitcast %struct.SinObj* %92 to i8*
%94 = load %struct.SinRecord*, %struct.SinRecord** %18, align 8
%95 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %94, i32 0, i32 4
store i8* %93, i8** %95, align 8
%96 = load %struct.SinObj**, %struct.SinObj*** %14, align 8
%97 = ptrtoint %struct.SinObj** %96 to i64
%98 = load %struct.SinRecord*, %struct.SinRecord** %18, align 8
%99 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %98, i32 0, i32 0
%100 = load %struct.SinObj**, %struct.SinObj*** %99, align 8
%101 = ptrtoint %struct.SinObj** %100 to i64
%102 = sub nsw i64 %97, %101
%103 = sdiv i64 %102, 8
%104 = load %struct.SinRecord*, %struct.SinRecord** %18, align 8
%105 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %104, i32 0, i32 2
store i64 %103, i64* %105, align 8
%106 = load %struct.SinRecord*, %struct.SinRecord** %18, align 8
%107 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %106, i32 0, i32 2
%108 = load i64, i64* %107, align 8
%109 = load i64, i64* %11, align 8
%110 = sub nsw i64 %108, %109
%111 = load %struct.SinRecord*, %struct.SinRecord** %18, align 8
%112 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %111, i32 0, i32 3
store i64 %110, i64* %112, align 8
%113 = load %struct.SinRecord*, %struct.SinRecord** %19, align 8
%114 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %113, i32 0, i32 0
%115 = load %struct.SinObj**, %struct.SinObj*** %114, align 8
%116 = bitcast %struct.SinObj** %115 to i8*
%117 = load %struct.SinObj**, %struct.SinObj*** %14, align 8
%118 = bitcast %struct.SinObj** %117 to i8*
%119 = load i64, i64* %12, align 8
%120 = mul i64 %119, 8
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %116, i8* align 8 %118, i64 %120, i1 false)
%121 = load i8*, i8** %9, align 8
%122 = bitcast i8* %121 to %struct.SinObj*
%123 = load %struct.SinRecord*, %struct.SinRecord** %19, align 8
%124 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %123, i32 0, i32 0
%125 = load %struct.SinObj**, %struct.SinObj*** %124, align 8
%126 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %125, i64 0
store %struct.SinObj* %122, %struct.SinObj** %126, align 8
%127 = load %struct.SinRecord*, %struct.SinRecord** %19, align 8
%128 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %127, i32 0, i32 0
%129 = load %struct.SinObj**, %struct.SinObj*** %128, align 8
%130 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %129, i64 1
store %struct.SinObj* inttoptr (i64 -1 to %struct.SinObj*), %struct.SinObj** %130, align 8
%131 = load %struct.SinRecord*, %struct.SinRecord** %19, align 8
%132 = load %struct.SinRecord**, %struct.SinRecord*** %6, align 8
store %struct.SinRecord* %131, %struct.SinRecord** %132, align 8
%133 = load %struct.SinRecord*, %struct.SinRecord** %19, align 8
%134 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %133, i32 0, i32 0
%135 = load %struct.SinObj**, %struct.SinObj*** %134, align 8
%136 = load i64, i64* %12, align 8
%137 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %135, i64 %136
%138 = load i64, i64* %10, align 8
%139 = sub i64 0, %138
%140 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %137, i64 %139
%141 = load %struct.SinObj***, %struct.SinObj**** %7, align 8
store %struct.SinObj** %140, %struct.SinObj*** %141, align 8
br label %142
142: ; preds = %84, %64
ret void
}
; Function Attrs: noreturn nounwind
declare void @__assert_fail(i8* noundef, i8* noundef, i32 noundef, i8* noundef) #5
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local i8* @handle_continuation_function(%struct.SinRecord** noundef %0, %struct.SinObj*** noundef %1, %struct.SinObj*** noundef %2, %struct.SinObj** noundef %3) #0 {
%5 = alloca %struct.SinRecord**, align 8
%6 = alloca %struct.SinObj***, align 8
%7 = alloca %struct.SinObj***, align 8
%8 = alloca %struct.SinObj**, align 8
%9 = alloca %struct.SinObj**, align 8
%10 = alloca %struct.SinObj*, align 8
%11 = alloca %struct.SinObj*, align 8
%12 = alloca %struct.SinObj*, align 8
%13 = alloca %struct.SinRecord*, align 8
%14 = alloca %struct.SinRecord*, align 8
%15 = alloca %struct.SinRecord*, align 8
store %struct.SinRecord** %0, %struct.SinRecord*** %5, align 8
store %struct.SinObj*** %1, %struct.SinObj**** %6, align 8
store %struct.SinObj*** %2, %struct.SinObj**** %7, align 8
store %struct.SinObj** %3, %struct.SinObj*** %8, align 8
%16 = load %struct.SinObj***, %struct.SinObj**** %6, align 8
%17 = load %struct.SinObj**, %struct.SinObj*** %16, align 8
store %struct.SinObj** %17, %struct.SinObj*** %9, align 8
%18 = load %struct.SinObj**, %struct.SinObj*** %9, align 8
%19 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %18, i64 2
%20 = load %struct.SinObj*, %struct.SinObj** %19, align 8
store %struct.SinObj* %20, %struct.SinObj** %10, align 8
%21 = load %struct.SinObj**, %struct.SinObj*** %9, align 8
%22 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %21, i64 3
%23 = load %struct.SinObj*, %struct.SinObj** %22, align 8
store %struct.SinObj* %23, %struct.SinObj** %11, align 8
%24 = load %struct.SinObj*, %struct.SinObj** %11, align 8
%25 = call %struct.SinObj* @prim_car(%struct.SinObj* noundef %24)
store %struct.SinObj* %25, %struct.SinObj** %12, align 8
%26 = load %struct.SinObj*, %struct.SinObj** %10, align 8
%27 = call i8* @closure_get_env_part(%struct.SinObj* noundef %26)
%28 = bitcast i8* %27 to %struct.SinRecord*
store %struct.SinRecord* %28, %struct.SinRecord** %13, align 8
%29 = load %struct.SinRecord**, %struct.SinRecord*** %5, align 8
%30 = load %struct.SinRecord*, %struct.SinRecord** %29, align 8
store %struct.SinRecord* %30, %struct.SinRecord** %14, align 8
%31 = load %struct.SinRecord*, %struct.SinRecord** %13, align 8
%32 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %31, i32 0, i32 2
%33 = load i64, i64* %32, align 8
%34 = load %struct.SinRecord*, %struct.SinRecord** %14, align 8
%35 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %34, i32 0, i32 2
%36 = load i64, i64* %35, align 8
%37 = icmp sge i64 %33, %36
br i1 %37, label %38, label %47
38: ; preds = %4
%39 = load %struct.SinRecord*, %struct.SinRecord** %13, align 8
%40 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %39, i32 0, i32 1
%41 = load %struct.SinRecord*, %struct.SinRecord** %40, align 8
%42 = load %struct.SinObj***, %struct.SinObj**** %7, align 8
%43 = call %struct.SinRecord* @make_record(%struct.SinRecord* noundef %41, %struct.SinObj*** noundef %42)
store %struct.SinRecord* %43, %struct.SinRecord** %15, align 8
%44 = load %struct.SinRecord*, %struct.SinRecord** %15, align 8
store %struct.SinRecord* %44, %struct.SinRecord** %14, align 8
%45 = load %struct.SinRecord*, %struct.SinRecord** %15, align 8
%46 = load %struct.SinRecord**, %struct.SinRecord*** %5, align 8
store %struct.SinRecord* %45, %struct.SinRecord** %46, align 8
br label %47
47: ; preds = %38, %4
%48 = load %struct.SinRecord*, %struct.SinRecord** %14, align 8
%49 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %48, i32 0, i32 0
%50 = load %struct.SinObj**, %struct.SinObj*** %49, align 8
%51 = bitcast %struct.SinObj** %50 to i8*
%52 = load %struct.SinRecord*, %struct.SinRecord** %13, align 8
%53 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %52, i32 0, i32 0
%54 = load %struct.SinObj**, %struct.SinObj*** %53, align 8
%55 = bitcast %struct.SinObj** %54 to i8*
%56 = load %struct.SinRecord*, %struct.SinRecord** %13, align 8
%57 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %56, i32 0, i32 2
%58 = load i64, i64* %57, align 8
%59 = mul i64 %58, 8
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %51, i8* align 8 %55, i64 %59, i1 false)
%60 = load %struct.SinObj*, %struct.SinObj** %12, align 8
%61 = load %struct.SinObj**, %struct.SinObj*** %8, align 8
store %struct.SinObj* %60, %struct.SinObj** %61, align 8
%62 = load %struct.SinRecord*, %struct.SinRecord** %14, align 8
%63 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %62, i32 0, i32 0
%64 = load %struct.SinObj**, %struct.SinObj*** %63, align 8
%65 = load %struct.SinRecord*, %struct.SinRecord** %13, align 8
%66 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %65, i32 0, i32 3
%67 = load i64, i64* %66, align 8
%68 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %64, i64 %67
%69 = load %struct.SinObj***, %struct.SinObj**** %6, align 8
store %struct.SinObj** %68, %struct.SinObj*** %69, align 8
%70 = load %struct.SinRecord*, %struct.SinRecord** %13, align 8
%71 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %70, i32 0, i32 4
%72 = load i8*, i8** %71, align 8
ret i8* %72
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim_car(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%4 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%5 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %4, i8* noundef getelementptr inbounds ([4 x i8], [4 x i8]* @.str.13, i64 0, i64 0))
store %struct.SinObj* %5, %struct.SinObj** %3, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i64 0
ret %struct.SinObj* %7
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local void @start_runtime(%struct.SinRecord** noundef %0, %struct.SinObj*** noundef %1, %struct.SinObj*** noundef %2) #2 {
%4 = alloca %struct.SinRecord**, align 8
%5 = alloca %struct.SinObj***, align 8
%6 = alloca %struct.SinObj***, align 8
store %struct.SinRecord** %0, %struct.SinRecord*** %4, align 8
store %struct.SinObj*** %1, %struct.SinObj**** %5, align 8
store %struct.SinObj*** %2, %struct.SinObj**** %6, align 8
%7 = load %struct.SinObj***, %struct.SinObj**** %6, align 8
%8 = call %struct.SinRecord* @make_record(%struct.SinRecord* noundef null, %struct.SinObj*** noundef %7)
%9 = load %struct.SinRecord**, %struct.SinRecord*** %4, align 8
store %struct.SinRecord* %8, %struct.SinRecord** %9, align 8
%10 = load %struct.SinRecord**, %struct.SinRecord*** %4, align 8
%11 = load %struct.SinRecord*, %struct.SinRecord** %10, align 8
%12 = getelementptr inbounds %struct.SinRecord, %struct.SinRecord* %11, i32 0, i32 0
%13 = load %struct.SinObj**, %struct.SinObj*** %12, align 8
%14 = load %struct.SinObj***, %struct.SinObj**** %5, align 8
store %struct.SinObj** %13, %struct.SinObj*** %14, align 8
ret void
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_car(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 1
%8 = load i32, i32* %7, align 8
%9 = icmp ne i32 %8, 4
br i1 %9, label %10, label %14
10: ; preds = %1
%11 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%12 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([14 x i8], [14 x i8]* @.str.10, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
14: ; preds = %1
%15 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%16 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %15, i8* noundef getelementptr inbounds ([14 x i8], [14 x i8]* @.str.10, i64 0, i64 0))
store %struct.SinObj* %16, %struct.SinObj** %3, align 8
%17 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%18 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %17, i64 0
%19 = bitcast %struct.SinObj* %4 to i8*
%20 = bitcast %struct.SinObj* %18 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false)
%21 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%22 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %21, i64 1
%23 = bitcast %struct.SinObj* %5 to i8*
%24 = bitcast %struct.SinObj* %22 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %24, i64 16, i1 false)
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%26 = load i32, i32* %25, align 8
%27 = icmp ne i32 %26, 1
br i1 %27, label %28, label %32
28: ; preds = %14
%29 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i64 0, i64 0), i8* noundef getelementptr inbounds ([14 x i8], [14 x i8]* @.str.10, i64 0, i64 0))
%31 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
32: ; preds = %14
%33 = call %struct.SinObj* @prim_car(%struct.SinObj* noundef %4)
ret %struct.SinObj* %33
}
; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #5
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim__43(%struct.SinObj* noundef %0, %struct.SinObj* noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj*, align 8
%5 = alloca i64, align 8
%6 = alloca i64, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store %struct.SinObj* %1, %struct.SinObj** %4, align 8
%7 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%8 = call i64 @unwrap_int(%struct.SinObj* noundef %7, i8* noundef getelementptr inbounds ([4 x i8], [4 x i8]* @.str.14, i64 0, i64 0))
store i64 %8, i64* %5, align 8
%9 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%10 = call i64 @unwrap_int(%struct.SinObj* noundef %9, i8* noundef getelementptr inbounds ([4 x i8], [4 x i8]* @.str.15, i64 0, i64 0))
store i64 %10, i64* %6, align 8
%11 = load i64, i64* %5, align 8
%12 = load i64, i64* %6, align 8
%13 = add nsw i64 %11, %12
%14 = call %struct.SinObj* @const_init_int(i64 noundef %13)
ret %struct.SinObj* %14
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local i64 @unwrap_int(%struct.SinObj* noundef %0, i8* noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca i8*, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store i8* %1, i8** %4, align 8
%5 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%6 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%7 = load i32, i32* %6, align 8
%8 = icmp ne i32 %7, 5
br i1 %8, label %9, label %17
9: ; preds = %2
%10 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%11 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%12 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %11, i32 0, i32 1
%13 = load i32, i32* %12, align 8
%14 = load i8*, i8** %4, align 8
%15 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([48 x i8], [48 x i8]* @.str.27, i64 0, i64 0), i32 noundef %13, i8* noundef %14)
%16 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
17: ; preds = %2
%18 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%19 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %18, i32 0, i32 0
%20 = load i8*, i8** %19, align 8
%21 = ptrtoint i8* %20 to i64
ret i64 %21
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim__43(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca i32, align 4
%4 = alloca i64, align 8
%5 = alloca %struct.SinObj, align 8
%6 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%7 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%8 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %7, i32 0, i32 1
%9 = load i32, i32* %8, align 8
store i32 %9, i32* %3, align 4
%10 = load i32, i32* %3, align 4
%11 = icmp ne i32 %10, 4
br i1 %11, label %12, label %21
12: ; preds = %1
%13 = load i32, i32* %3, align 4
%14 = icmp ne i32 %13, 1
br i1 %14, label %15, label %21
15: ; preds = %12
%16 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%17 = load i32, i32* %3, align 4
%18 = call i8* @get_type_name(i32 noundef %17)
%19 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([37 x i8], [37 x i8]* @.str.16, i64 0, i64 0), i8* noundef %18)
%20 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
21: ; preds = %12, %1
store i64 0, i64* %4, align 8
br label %22
22: ; preds = %27, %21
%23 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%24 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %23, i32 0, i32 1
%25 = load i32, i32* %24, align 8
%26 = icmp eq i32 %25, 4
br i1 %26, label %27, label %32
27: ; preds = %22
%28 = load %struct.SinObj*, %struct.SinObj** %2, align 8
call void @_get_both(%struct.SinObj* noundef %28, %struct.SinObj* noundef %5, %struct.SinObj* noundef %6)
%29 = call i64 @unwrap_int(%struct.SinObj* noundef %5, i8* noundef getelementptr inbounds ([14 x i8], [14 x i8]* @.str.17, i64 0, i64 0))
%30 = load i64, i64* %4, align 8
%31 = add nsw i64 %30, %29
store i64 %31, i64* %4, align 8
store %struct.SinObj* %6, %struct.SinObj** %2, align 8
br label %22, !llvm.loop !12
32: ; preds = %22
%33 = load i64, i64* %4, align 8
%34 = call %struct.SinObj* @const_init_int(i64 noundef %33)
ret %struct.SinObj* %34
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local i8* @get_type_name(i32 noundef %0) #2 {
%2 = alloca i8*, align 8
%3 = alloca i32, align 4
store i32 %0, i32* %3, align 4
%4 = load i32, i32* %3, align 4
switch i32 %4, label %18 [
i32 0, label %5
i32 1, label %6
i32 2, label %7
i32 12, label %8
i32 3, label %9
i32 4, label %10
i32 5, label %11
i32 6, label %12
i32 7, label %13
i32 8, label %14
i32 9, label %15
i32 10, label %16
i32 11, label %17
]
5: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.63, i64 0, i64 0), i8** %2, align 8
br label %19
6: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.64, i64 0, i64 0), i8** %2, align 8
br label %19
7: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.65, i64 0, i64 0), i8** %2, align 8
br label %19
8: ; preds = %1
store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.66, i64 0, i64 0), i8** %2, align 8
br label %19
9: ; preds = %1
store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.67, i64 0, i64 0), i8** %2, align 8
br label %19
10: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.68, i64 0, i64 0), i8** %2, align 8
br label %19
11: ; preds = %1
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.69, i64 0, i64 0), i8** %2, align 8
br label %19
12: ; preds = %1
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.70, i64 0, i64 0), i8** %2, align 8
br label %19
13: ; preds = %1
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.71, i64 0, i64 0), i8** %2, align 8
br label %19
14: ; preds = %1
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.72, i64 0, i64 0), i8** %2, align 8
br label %19
15: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.73, i64 0, i64 0), i8** %2, align 8
br label %19
16: ; preds = %1
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.74, i64 0, i64 0), i8** %2, align 8
br label %19
17: ; preds = %1
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.75, i64 0, i64 0), i8** %2, align 8
br label %19
18: ; preds = %1
call void @llvm.trap()
unreachable
19: ; preds = %17, %16, %15, %14, %13, %12, %11, %10, %9, %8, %7, %6, %5
%20 = load i8*, i8** %2, align 8
ret i8* %20
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_make_45vector(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
%6 = alloca %struct.SinObj*, align 8
%7 = alloca %struct.SinObj, align 8
%8 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%9 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%10 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %9, i32 0, i32 1
%11 = load i32, i32* %10, align 8
%12 = icmp ne i32 %11, 4
br i1 %12, label %13, label %17
13: ; preds = %1
%14 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%15 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([24 x i8], [24 x i8]* @.str.18, i64 0, i64 0))
%16 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
17: ; preds = %1
%18 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%19 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %18, i8* noundef getelementptr inbounds ([24 x i8], [24 x i8]* @.str.18, i64 0, i64 0))
store %struct.SinObj* %19, %struct.SinObj** %3, align 8
%20 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%21 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %20, i64 0
%22 = bitcast %struct.SinObj* %4 to i8*
%23 = bitcast %struct.SinObj* %21 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %22, i8* align 8 %23, i64 16, i1 false)
%24 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %24, i64 1
%26 = bitcast %struct.SinObj* %5 to i8*
%27 = bitcast %struct.SinObj* %25 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %26, i8* align 8 %27, i64 16, i1 false)
%28 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%29 = load i32, i32* %28, align 8
%30 = icmp ne i32 %29, 4
br i1 %30, label %31, label %35
31: ; preds = %17
%32 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%33 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([46 x i8], [46 x i8]* @.str.19, i64 0, i64 0), i8* noundef getelementptr inbounds ([24 x i8], [24 x i8]* @.str.18, i64 0, i64 0))
%34 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
35: ; preds = %17
%36 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %5, i8* noundef getelementptr inbounds ([24 x i8], [24 x i8]* @.str.18, i64 0, i64 0))
store %struct.SinObj* %36, %struct.SinObj** %6, align 8
%37 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%38 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %37, i64 0
%39 = bitcast %struct.SinObj* %7 to i8*
%40 = bitcast %struct.SinObj* %38 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %39, i8* align 8 %40, i64 16, i1 false)
%41 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%42 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %41, i64 1
%43 = bitcast %struct.SinObj* %8 to i8*
%44 = bitcast %struct.SinObj* %42 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %43, i8* align 8 %44, i64 16, i1 false)
%45 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %8, i32 0, i32 1
%46 = load i32, i32* %45, align 8
%47 = icmp ne i32 %46, 1
br i1 %47, label %48, label %52
48: ; preds = %35
%49 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%50 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([38 x i8], [38 x i8]* @.str.20, i64 0, i64 0), i8* noundef getelementptr inbounds ([24 x i8], [24 x i8]* @.str.18, i64 0, i64 0))
%51 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
52: ; preds = %35
%53 = call %struct.SinObj* @prim_make_45vector(%struct.SinObj* noundef %4, %struct.SinObj* noundef %7)
ret %struct.SinObj* %53
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @closure_env_get(%struct.SinObj* noundef %0, i64 noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca i64, align 8
%5 = alloca %struct.SinObj*, align 8
%6 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store i64 %1, i64* %4, align 8
%7 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%8 = call %struct.SinObj* @unwrap_clo(%struct.SinObj* noundef %7, i8* noundef getelementptr inbounds ([16 x i8], [16 x i8]* @.str.22, i64 0, i64 0))
store %struct.SinObj* %8, %struct.SinObj** %5, align 8
%9 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%10 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %9, i64 1
%11 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %10, i32 0, i32 0
%12 = load i8*, i8** %11, align 8
%13 = bitcast i8* %12 to %struct.SinObj*
store %struct.SinObj* %13, %struct.SinObj** %6, align 8
%14 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%15 = load i64, i64* %4, align 8
%16 = call %struct.SinObj* @const_init_int(i64 noundef %15)
%17 = call %struct.SinObj* @prim_vector_45ref(%struct.SinObj* noundef %14, %struct.SinObj* noundef %16)
ret %struct.SinObj* %17
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim_vector_45ref(%struct.SinObj* noundef %0, %struct.SinObj* noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj*, align 8
%5 = alloca %struct.SinObj*, align 8
%6 = alloca i64, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store %struct.SinObj* %1, %struct.SinObj** %4, align 8
%7 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%8 = call %struct.SinObj* @unwrap_vector(%struct.SinObj* noundef %7, i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str.85, i64 0, i64 0))
store %struct.SinObj* %8, %struct.SinObj** %5, align 8
%9 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%10 = call i64 @unwrap_int(%struct.SinObj* noundef %9, i8* noundef getelementptr inbounds ([21 x i8], [21 x i8]* @.str.86, i64 0, i64 0))
store i64 %10, i64* %6, align 8
%11 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%12 = load i64, i64* %6, align 8
call void @bounds_check(%struct.SinObj* noundef %11, i64 noundef %12)
%13 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%14 = load i64, i64* %6, align 8
%15 = add nsw i64 %14, 1
%16 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %13, i64 %15
%17 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %16, i32 0, i32 0
%18 = load i8*, i8** %17, align 8
%19 = bitcast i8* %18 to %struct.SinObj*
ret %struct.SinObj* %19
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.Map* @unwrap_hash(%struct.SinObj* noundef %0, i8* noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca i8*, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store i8* %1, i8** %4, align 8
%5 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%6 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%7 = load i32, i32* %6, align 8
%8 = icmp ne i32 %7, 9
br i1 %8, label %9, label %17
9: ; preds = %2
%10 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%11 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%12 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %11, i32 0, i32 1
%13 = load i32, i32* %12, align 8
%14 = load i8*, i8** %4, align 8
%15 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([49 x i8], [49 x i8]* @.str.23, i64 0, i64 0), i32 noundef %13, i8* noundef %14)
%16 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
17: ; preds = %2
%18 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%19 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %18, i32 0, i32 0
%20 = load i8*, i8** %19, align 8
%21 = bitcast i8* %20 to %struct.Map*
ret %struct.Map* %21
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @unwrap_vector(%struct.SinObj* noundef %0, i8* noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca i8*, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store i8* %1, i8** %4, align 8
%5 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%6 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%7 = load i32, i32* %6, align 8
%8 = icmp ne i32 %7, 8
br i1 %8, label %9, label %17
9: ; preds = %2
%10 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%11 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%12 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %11, i32 0, i32 1
%13 = load i32, i32* %12, align 8
%14 = load i8*, i8** %4, align 8
%15 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([53 x i8], [53 x i8]* @.str.25, i64 0, i64 0), i32 noundef %13, i8* noundef %14)
%16 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
17: ; preds = %2
%18 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%19 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %18, i32 0, i32 0
%20 = load i8*, i8** %19, align 8
%21 = bitcast i8* %20 to %struct.SinObj*
ret %struct.SinObj* %21
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local i64 @unwrap_bool(%struct.SinObj* noundef %0, i8* noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca i8*, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store i8* %1, i8** %4, align 8
%5 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%6 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%7 = load i32, i32* %6, align 8
%8 = icmp ne i32 %7, 2
br i1 %8, label %9, label %17
9: ; preds = %2
%10 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%11 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%12 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %11, i32 0, i32 1
%13 = load i32, i32* %12, align 8
%14 = load i8*, i8** %4, align 8
%15 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([49 x i8], [49 x i8]* @.str.28, i64 0, i64 0), i32 noundef %13, i8* noundef %14)
%16 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
17: ; preds = %2
%18 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%19 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %18, i32 0, i32 0
%20 = load i8*, i8** %19, align 8
%21 = ptrtoint i8* %20 to i64
ret i64 %21
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local i8* @unwrap_str(%struct.SinObj* noundef %0, i8* noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca i8*, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store i8* %1, i8** %4, align 8
%5 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%6 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%7 = load i32, i32* %6, align 8
%8 = icmp ne i32 %7, 6
br i1 %8, label %9, label %17
9: ; preds = %2
%10 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%11 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%12 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %11, i32 0, i32 1
%13 = load i32, i32* %12, align 8
%14 = load i8*, i8** %4, align 8
%15 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([47 x i8], [47 x i8]* @.str.29, i64 0, i64 0), i32 noundef %13, i8* noundef %14)
%16 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
17: ; preds = %2
%18 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%19 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %18, i32 0, i32 0
%20 = load i8*, i8** %19, align 8
ret i8* %20
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local i8* @unwrap_sym(%struct.SinObj* noundef %0, i8* noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca i8*, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store i8* %1, i8** %4, align 8
%5 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%6 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%7 = load i32, i32* %6, align 8
%8 = icmp ne i32 %7, 7
br i1 %8, label %9, label %17
9: ; preds = %2
%10 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%11 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%12 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %11, i32 0, i32 1
%13 = load i32, i32* %12, align 8
%14 = load i8*, i8** %4, align 8
%15 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([47 x i8], [47 x i8]* @.str.30, i64 0, i64 0), i32 noundef %13, i8* noundef %14)
%16 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
17: ; preds = %2
%18 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%19 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %18, i32 0, i32 0
%20 = load i8*, i8** %19, align 8
ret i8* %20
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local zeroext i1 @is_truthy_value(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%3 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%4 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %3, i32 0, i32 1
%5 = load i32, i32* %4, align 8
%6 = icmp eq i32 %5, 2
br i1 %6, label %7, label %11
7: ; preds = %1
%8 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%9 = call i64 @unwrap_bool(%struct.SinObj* noundef %8, i8* noundef getelementptr inbounds ([16 x i8], [16 x i8]* @.str.31, i64 0, i64 0))
%10 = icmp eq i64 %9, 0
br label %11
11: ; preds = %7, %1
%12 = phi i1 [ false, %1 ], [ %10, %7 ]
%13 = zext i1 %12 to i64
%14 = select i1 %12, i1 false, i1 true
ret i1 %14
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_display(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 1
%8 = load i32, i32* %7, align 8
%9 = icmp ne i32 %8, 4
br i1 %9, label %10, label %14
10: ; preds = %1
%11 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%12 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([18 x i8], [18 x i8]* @.str.32, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
14: ; preds = %1
%15 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%16 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %15, i8* noundef getelementptr inbounds ([18 x i8], [18 x i8]* @.str.32, i64 0, i64 0))
store %struct.SinObj* %16, %struct.SinObj** %3, align 8
%17 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%18 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %17, i64 0
%19 = bitcast %struct.SinObj* %4 to i8*
%20 = bitcast %struct.SinObj* %18 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false)
%21 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%22 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %21, i64 1
%23 = bitcast %struct.SinObj* %5 to i8*
%24 = bitcast %struct.SinObj* %22 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %24, i64 16, i1 false)
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%26 = load i32, i32* %25, align 8
%27 = icmp ne i32 %26, 1
br i1 %27, label %28, label %32
28: ; preds = %14
%29 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i64 0, i64 0), i8* noundef getelementptr inbounds ([18 x i8], [18 x i8]* @.str.32, i64 0, i64 0))
%31 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
32: ; preds = %14
%33 = call %struct.SinObj* @prim_display(%struct.SinObj* noundef %4)
ret %struct.SinObj* %33
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim_display(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%3 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%4 = call %struct.SinObj* @prim_print(%struct.SinObj* noundef %3)
ret %struct.SinObj* %4
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim_print(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca i32, align 4
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%4 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%5 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %4, i32 0, i32 1
%6 = load i32, i32* %5, align 8
store i32 %6, i32* %3, align 4
%7 = load i32, i32* %3, align 4
switch i32 %7, label %23 [
i32 1, label %8
i32 7, label %10
i32 0, label %14
i32 4, label %15
i32 2, label %20
i32 12, label %20
i32 3, label %20
i32 5, label %20
i32 6, label %20
i32 8, label %20
i32 9, label %20
i32 10, label %20
i32 11, label %20
]
8: ; preds = %1
%9 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([4 x i8], [4 x i8]* @.str.34, i64 0, i64 0))
br label %23
10: ; preds = %1
%11 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%12 = call i8* @unwrap_sym(%struct.SinObj* noundef %11, i8* noundef getelementptr inbounds ([21 x i8], [21 x i8]* @.str.36, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([4 x i8], [4 x i8]* @.str.35, i64 0, i64 0), i8* noundef %12)
br label %23
14: ; preds = %1
br label %23
15: ; preds = %1
%16 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([3 x i8], [3 x i8]* @.str.37, i64 0, i64 0))
%17 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%18 = call %struct.SinObj* @print_cons(%struct.SinObj* noundef %17)
%19 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.38, i64 0, i64 0))
br label %23
20: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1
%21 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%22 = call %struct.SinObj* @prim_print_aux(%struct.SinObj* noundef %21)
br label %23
23: ; preds = %1, %20, %15, %14, %10, %8
%24 = call %struct.SinObj* @const_init_void()
ret %struct.SinObj* %24
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_print(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 1
%8 = load i32, i32* %7, align 8
%9 = icmp ne i32 %8, 4
br i1 %9, label %10, label %14
10: ; preds = %1
%11 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%12 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([16 x i8], [16 x i8]* @.str.33, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
14: ; preds = %1
%15 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%16 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %15, i8* noundef getelementptr inbounds ([16 x i8], [16 x i8]* @.str.33, i64 0, i64 0))
store %struct.SinObj* %16, %struct.SinObj** %3, align 8
%17 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%18 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %17, i64 0
%19 = bitcast %struct.SinObj* %4 to i8*
%20 = bitcast %struct.SinObj* %18 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false)
%21 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%22 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %21, i64 1
%23 = bitcast %struct.SinObj* %5 to i8*
%24 = bitcast %struct.SinObj* %22 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %24, i64 16, i1 false)
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%26 = load i32, i32* %25, align 8
%27 = icmp ne i32 %26, 1
br i1 %27, label %28, label %32
28: ; preds = %14
%29 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i64 0, i64 0), i8* noundef getelementptr inbounds ([16 x i8], [16 x i8]* @.str.33, i64 0, i64 0))
%31 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
32: ; preds = %14
%33 = call %struct.SinObj* @prim_print(%struct.SinObj* noundef %4)
ret %struct.SinObj* %33
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @print_cons(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj*, align 8
%5 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%7 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %6, i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str.57, i64 0, i64 0))
store %struct.SinObj* %7, %struct.SinObj** %3, align 8
%8 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%9 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %8, i64 0
store %struct.SinObj* %9, %struct.SinObj** %4, align 8
%10 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%11 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %10, i64 1
store %struct.SinObj* %11, %struct.SinObj** %5, align 8
%12 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%13 = call %struct.SinObj* @prim_print_aux(%struct.SinObj* noundef %12)
%14 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%15 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %14, i32 0, i32 1
%16 = load i32, i32* %15, align 8
switch i32 %16, label %28 [
i32 1, label %17
i32 0, label %18
i32 4, label %20
i32 12, label %24
i32 7, label %24
i32 2, label %24
i32 3, label %24
i32 5, label %24
i32 6, label %24
i32 8, label %24
i32 9, label %24
i32 10, label %24
i32 11, label %24
]
17: ; preds = %1
br label %28
18: ; preds = %1
%19 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([8 x i8], [8 x i8]* @.str.40, i64 0, i64 0))
br label %28
20: ; preds = %1
%21 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.58, i64 0, i64 0))
%22 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%23 = call %struct.SinObj* @print_cons(%struct.SinObj* noundef %22)
br label %28
24: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1
%25 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([4 x i8], [4 x i8]* @.str.59, i64 0, i64 0))
%26 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%27 = call %struct.SinObj* @prim_print_aux(%struct.SinObj* noundef %26)
br label %28
28: ; preds = %1, %24, %20, %18, %17
%29 = call %struct.SinObj* @const_init_void()
ret %struct.SinObj* %29
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim_print_aux(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca i32, align 4
%4 = alloca i64, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%5 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%6 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%7 = load i32, i32* %6, align 8
store i32 %7, i32* %3, align 4
%8 = load i32, i32* %3, align 4
switch i32 %8, label %67 [
i32 0, label %9
i32 1, label %11
i32 2, label %13
i32 12, label %30
i32 3, label %32
i32 4, label %34
i32 5, label %39
i32 6, label %43
i32 7, label %47
i32 8, label %51
i32 9, label %54
i32 10, label %59
i32 11, label %61
]
9: ; preds = %1
%10 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([8 x i8], [8 x i8]* @.str.40, i64 0, i64 0))
br label %67
11: ; preds = %1
%12 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([3 x i8], [3 x i8]* @.str.41, i64 0, i64 0))
br label %67
13: ; preds = %1
%14 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%15 = call i64 @unwrap_bool(%struct.SinObj* noundef %14, i8* noundef getelementptr inbounds ([25 x i8], [25 x i8]* @.str.42, i64 0, i64 0))
store i64 %15, i64* %4, align 8
%16 = load i64, i64* %4, align 8
%17 = icmp eq i64 %16, 0
br i1 %17, label %18, label %20
18: ; preds = %13
%19 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([3 x i8], [3 x i8]* @.str.43, i64 0, i64 0))
br label %29
20: ; preds = %13
%21 = load i64, i64* %4, align 8
%22 = icmp eq i64 %21, 1
br i1 %22, label %23, label %25
23: ; preds = %20
%24 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([3 x i8], [3 x i8]* @.str.44, i64 0, i64 0))
br label %28
25: ; preds = %20
%26 = load i64, i64* %4, align 8
%27 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([27 x i8], [27 x i8]* @.str.45, i64 0, i64 0), i64 noundef %26)
br label %28
28: ; preds = %25, %23
br label %29
29: ; preds = %28, %18
br label %67
30: ; preds = %1
%31 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([16 x i8], [16 x i8]* @.str.46, i64 0, i64 0))
br label %67
32: ; preds = %1
%33 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([13 x i8], [13 x i8]* @.str.47, i64 0, i64 0))
br label %67
34: ; preds = %1
%35 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.48, i64 0, i64 0))
%36 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%37 = call %struct.SinObj* @print_cons(%struct.SinObj* noundef %36)
%38 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.38, i64 0, i64 0))
br label %67
39: ; preds = %1
%40 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%41 = call i64 @unwrap_int(%struct.SinObj* noundef %40, i8* noundef getelementptr inbounds ([25 x i8], [25 x i8]* @.str.50, i64 0, i64 0))
%42 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([4 x i8], [4 x i8]* @.str.49, i64 0, i64 0), i64 noundef %41)
br label %67
43: ; preds = %1
%44 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%45 = call i8* @unwrap_str(%struct.SinObj* noundef %44, i8* noundef getelementptr inbounds ([25 x i8], [25 x i8]* @.str.52, i64 0, i64 0))
%46 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([3 x i8], [3 x i8]* @.str.51, i64 0, i64 0), i8* noundef %45)
br label %67
47: ; preds = %1
%48 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%49 = call i8* @unwrap_sym(%struct.SinObj* noundef %48, i8* noundef getelementptr inbounds ([25 x i8], [25 x i8]* @.str.53, i64 0, i64 0))
%50 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([3 x i8], [3 x i8]* @.str.51, i64 0, i64 0), i8* noundef %49)
br label %67
51: ; preds = %1
%52 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%53 = call %struct.SinObj* @print_vector(%struct.SinObj* noundef %52)
br label %67
54: ; preds = %1
%55 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([7 x i8], [7 x i8]* @.str.54, i64 0, i64 0))
%56 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%57 = call %struct.SinObj* @print_hash(%struct.SinObj* noundef %56)
%58 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.38, i64 0, i64 0))
br label %67
59: ; preds = %1
%60 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([30 x i8], [30 x i8]* @.str.55, i64 0, i64 0))
br label %67
61: ; preds = %1
%62 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%63 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %62, i32 0, i32 0
%64 = load i8*, i8** %63, align 8
%65 = ptrtoint i8* %64 to i64
%66 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([34 x i8], [34 x i8]* @.str.56, i64 0, i64 0), i64 noundef %65)
br label %67
67: ; preds = %1, %61, %59, %54, %51, %47, %43, %39, %34, %32, %30, %29, %11, %9
%68 = call %struct.SinObj* @const_init_void()
ret %struct.SinObj* %68
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_println(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 1
%8 = load i32, i32* %7, align 8
%9 = icmp ne i32 %8, 4
br i1 %9, label %10, label %14
10: ; preds = %1
%11 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%12 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([18 x i8], [18 x i8]* @.str.39, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
14: ; preds = %1
%15 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%16 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %15, i8* noundef getelementptr inbounds ([18 x i8], [18 x i8]* @.str.39, i64 0, i64 0))
store %struct.SinObj* %16, %struct.SinObj** %3, align 8
%17 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%18 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %17, i64 0
%19 = bitcast %struct.SinObj* %4 to i8*
%20 = bitcast %struct.SinObj* %18 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false)
%21 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%22 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %21, i64 1
%23 = bitcast %struct.SinObj* %5 to i8*
%24 = bitcast %struct.SinObj* %22 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %24, i64 16, i1 false)
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%26 = load i32, i32* %25, align 8
%27 = icmp ne i32 %26, 1
br i1 %27, label %28, label %32
28: ; preds = %14
%29 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i64 0, i64 0), i8* noundef getelementptr inbounds ([18 x i8], [18 x i8]* @.str.39, i64 0, i64 0))
%31 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
32: ; preds = %14
%33 = call %struct.SinObj* @prim_println(%struct.SinObj* noundef %4)
ret %struct.SinObj* %33
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim_println(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%3 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%4 = call %struct.SinObj* @prim_print(%struct.SinObj* noundef %3)
%5 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
%6 = call %struct.SinObj* @const_init_void()
ret %struct.SinObj* %6
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @print_vector(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca i64, align 8
%5 = alloca i64, align 8
%6 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%7 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%8 = call %struct.SinObj* @unwrap_vector(%struct.SinObj* noundef %7, i8* noundef getelementptr inbounds ([13 x i8], [13 x i8]* @.str.60, i64 0, i64 0))
store %struct.SinObj* %8, %struct.SinObj** %3, align 8
%9 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%10 = call i64 @_get_vector_length(%struct.SinObj* noundef %9)
store i64 %10, i64* %4, align 8
%11 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([3 x i8], [3 x i8]* @.str.61, i64 0, i64 0))
store i64 1, i64* %5, align 8
br label %12
12: ; preds = %30, %1
%13 = load i64, i64* %5, align 8
%14 = load i64, i64* %4, align 8
%15 = icmp ule i64 %13, %14
br i1 %15, label %16, label %33
16: ; preds = %12
%17 = load i64, i64* %5, align 8
%18 = icmp ne i64 %17, 1
br i1 %18, label %19, label %21
19: ; preds = %16
%20 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.58, i64 0, i64 0))
br label %21
21: ; preds = %19, %16
%22 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%23 = load i64, i64* %5, align 8
%24 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %22, i64 %23
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %24, i32 0, i32 0
%26 = load i8*, i8** %25, align 8
%27 = bitcast i8* %26 to %struct.SinObj*
store %struct.SinObj* %27, %struct.SinObj** %6, align 8
%28 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%29 = call %struct.SinObj* @prim_print_aux(%struct.SinObj* noundef %28)
br label %30
30: ; preds = %21
%31 = load i64, i64* %5, align 8
%32 = add i64 %31, 1
store i64 %32, i64* %5, align 8
br label %12, !llvm.loop !13
33: ; preds = %12
%34 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.38, i64 0, i64 0))
%35 = call %struct.SinObj* @const_init_void()
ret %struct.SinObj* %35
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @print_hash(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.Map*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%4 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%5 = call %struct.Map* @unwrap_hash(%struct.SinObj* noundef %4, i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str.62, i64 0, i64 0))
store %struct.Map* %5, %struct.Map** %3, align 8
br label %6
6: ; preds = %27, %1
%7 = load %struct.Map*, %struct.Map** %3, align 8
%8 = icmp ne %struct.Map* %7, null
br i1 %8, label %9, label %31
9: ; preds = %6
%10 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.48, i64 0, i64 0))
%11 = load %struct.Map*, %struct.Map** %3, align 8
%12 = getelementptr inbounds %struct.Map, %struct.Map* %11, i32 0, i32 1
%13 = load %struct.SinObj*, %struct.SinObj** %12, align 8
%14 = call %struct.SinObj* @prim_print_aux(%struct.SinObj* noundef %13)
%15 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([4 x i8], [4 x i8]* @.str.59, i64 0, i64 0))
%16 = load %struct.Map*, %struct.Map** %3, align 8
%17 = getelementptr inbounds %struct.Map, %struct.Map* %16, i32 0, i32 2
%18 = load %struct.SinObj*, %struct.SinObj** %17, align 8
%19 = call %struct.SinObj* @prim_print_aux(%struct.SinObj* noundef %18)
%20 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.38, i64 0, i64 0))
%21 = load %struct.Map*, %struct.Map** %3, align 8
%22 = getelementptr inbounds %struct.Map, %struct.Map* %21, i32 0, i32 0
%23 = load %struct.Map*, %struct.Map** %22, align 8
%24 = icmp ne %struct.Map* %23, null
br i1 %24, label %25, label %27
25: ; preds = %9
%26 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.58, i64 0, i64 0))
br label %27
27: ; preds = %25, %9
%28 = load %struct.Map*, %struct.Map** %3, align 8
%29 = getelementptr inbounds %struct.Map, %struct.Map* %28, i32 0, i32 0
%30 = load %struct.Map*, %struct.Map** %29, align 8
store %struct.Map* %30, %struct.Map** %3, align 8
br label %6, !llvm.loop !14
31: ; preds = %6
%32 = call %struct.SinObj* @const_init_void()
ret %struct.SinObj* %32
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local i64 @_get_vector_length(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%4 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%5 = call %struct.SinObj* @unwrap_vector(%struct.SinObj* noundef %4, i8* noundef getelementptr inbounds ([18 x i8], [18 x i8]* @.str.77, i64 0, i64 0))
store %struct.SinObj* %5, %struct.SinObj** %3, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i64 0
%8 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %7, i32 0, i32 0
%9 = load i8*, i8** %8, align 8
%10 = ptrtoint i8* %9 to i64
ret i64 %10
}
; Function Attrs: cold noreturn nounwind
declare void @llvm.trap() #6
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_halt(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 1
%8 = load i32, i32* %7, align 8
%9 = icmp ne i32 %8, 4
br i1 %9, label %10, label %14
10: ; preds = %1
%11 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%12 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([15 x i8], [15 x i8]* @.str.76, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
14: ; preds = %1
%15 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%16 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %15, i8* noundef getelementptr inbounds ([15 x i8], [15 x i8]* @.str.76, i64 0, i64 0))
store %struct.SinObj* %16, %struct.SinObj** %3, align 8
%17 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%18 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %17, i64 0
%19 = bitcast %struct.SinObj* %4 to i8*
%20 = bitcast %struct.SinObj* %18 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false)
%21 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%22 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %21, i64 1
%23 = bitcast %struct.SinObj* %5 to i8*
%24 = bitcast %struct.SinObj* %22 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %24, i64 16, i1 false)
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%26 = load i32, i32* %25, align 8
%27 = icmp ne i32 %26, 1
br i1 %27, label %28, label %32
28: ; preds = %14
%29 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i64 0, i64 0), i8* noundef getelementptr inbounds ([15 x i8], [15 x i8]* @.str.76, i64 0, i64 0))
%31 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
32: ; preds = %14
%33 = call %struct.SinObj* @prim_halt(%struct.SinObj* noundef %4)
ret %struct.SinObj* %33
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim_halt(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%3 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%4 = call %struct.SinObj* @prim_print(%struct.SinObj* noundef %3)
%5 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%6 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%7 = load i32, i32* %6, align 8
%8 = icmp ne i32 %7, 0
br i1 %8, label %9, label %11
9: ; preds = %1
%10 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
br label %11
11: ; preds = %9, %1
call void @exit(i32 noundef 0) #11
unreachable
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_vector(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj, align 8
%4 = alloca [256 x %struct.SinObj*], align 16
%5 = alloca i64, align 8
%6 = alloca %struct.SinObj, align 8
%7 = alloca %struct.SinObj, align 8
%8 = alloca %struct.SinObj*, align 8
%9 = alloca i64, align 8
%10 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%11 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%12 = bitcast %struct.SinObj* %3 to i8*
%13 = bitcast %struct.SinObj* %11 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %12, i8* align 8 %13, i64 16, i1 false)
%14 = bitcast [256 x %struct.SinObj*]* %4 to i8*
call void @llvm.memset.p0i8.i64(i8* align 16 %14, i8 0, i64 2048, i1 false)
store i64 0, i64* %5, align 8
br label %15
15: ; preds = %24, %1
%16 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %3, i32 0, i32 1
%17 = load i32, i32* %16, align 8
%18 = icmp eq i32 %17, 4
br i1 %18, label %19, label %22
19: ; preds = %15
%20 = load i64, i64* %5, align 8
%21 = icmp ult i64 %20, 256
br label %22
22: ; preds = %19, %15
%23 = phi i1 [ false, %15 ], [ %21, %19 ]
br i1 %23, label %24, label %43
24: ; preds = %22
call void @_get_both(%struct.SinObj* noundef %3, %struct.SinObj* noundef %6, %struct.SinObj* noundef %7)
%25 = call %struct.SinObj* @alloc(i64 noundef 1)
%26 = load i64, i64* %5, align 8
%27 = getelementptr inbounds [256 x %struct.SinObj*], [256 x %struct.SinObj*]* %4, i64 0, i64 %26
store %struct.SinObj* %25, %struct.SinObj** %27, align 8
%28 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 1
%29 = load i32, i32* %28, align 8
%30 = load i64, i64* %5, align 8
%31 = getelementptr inbounds [256 x %struct.SinObj*], [256 x %struct.SinObj*]* %4, i64 0, i64 %30
%32 = load %struct.SinObj*, %struct.SinObj** %31, align 8
%33 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %32, i32 0, i32 1
store i32 %29, i32* %33, align 8
%34 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 0
%35 = load i8*, i8** %34, align 8
%36 = load i64, i64* %5, align 8
%37 = add i64 %36, 1
store i64 %37, i64* %5, align 8
%38 = getelementptr inbounds [256 x %struct.SinObj*], [256 x %struct.SinObj*]* %4, i64 0, i64 %36
%39 = load %struct.SinObj*, %struct.SinObj** %38, align 8
%40 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %39, i32 0, i32 0
store i8* %35, i8** %40, align 8
%41 = bitcast %struct.SinObj* %3 to i8*
%42 = bitcast %struct.SinObj* %7 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %41, i8* align 8 %42, i64 16, i1 false)
br label %15, !llvm.loop !15
43: ; preds = %22
%44 = load i64, i64* %5, align 8
%45 = icmp eq i64 %44, 256
br i1 %45, label %46, label %54
46: ; preds = %43
%47 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %3, i32 0, i32 1
%48 = load i32, i32* %47, align 8
%49 = icmp ne i32 %48, 1
br i1 %49, label %50, label %54
50: ; preds = %46
%51 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%52 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([59 x i8], [59 x i8]* @.str.78, i64 0, i64 0))
%53 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
54: ; preds = %46, %43
%55 = load i64, i64* %5, align 8
%56 = add i64 %55, 1
%57 = call %struct.SinObj* @alloc(i64 noundef %56)
store %struct.SinObj* %57, %struct.SinObj** %8, align 8
%58 = load %struct.SinObj*, %struct.SinObj** %8, align 8
%59 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %58, i64 0
%60 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %59, i32 0, i32 1
store i32 5, i32* %60, align 8
%61 = load i64, i64* %5, align 8
%62 = inttoptr i64 %61 to i64*
%63 = bitcast i64* %62 to i8*
%64 = load %struct.SinObj*, %struct.SinObj** %8, align 8
%65 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %64, i64 0
%66 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %65, i32 0, i32 0
store i8* %63, i8** %66, align 8
store i64 0, i64* %9, align 8
br label %67
67: ; preds = %87, %54
%68 = load i64, i64* %9, align 8
%69 = load i64, i64* %5, align 8
%70 = icmp ult i64 %68, %69
br i1 %70, label %71, label %90
71: ; preds = %67
%72 = load %struct.SinObj*, %struct.SinObj** %8, align 8
%73 = load i64, i64* %9, align 8
%74 = add i64 %73, 1
%75 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %72, i64 %74
%76 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %75, i32 0, i32 1
store i32 11, i32* %76, align 8
%77 = load i64, i64* %9, align 8
%78 = getelementptr inbounds [256 x %struct.SinObj*], [256 x %struct.SinObj*]* %4, i64 0, i64 %77
%79 = load %struct.SinObj*, %struct.SinObj** %78, align 8
%80 = bitcast %struct.SinObj* %79 to i64*
%81 = bitcast i64* %80 to i8*
%82 = load %struct.SinObj*, %struct.SinObj** %8, align 8
%83 = load i64, i64* %9, align 8
%84 = add i64 %83, 1
%85 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %82, i64 %84
%86 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %85, i32 0, i32 0
store i8* %81, i8** %86, align 8
br label %87
87: ; preds = %71
%88 = load i64, i64* %9, align 8
%89 = add i64 %88, 1
store i64 %89, i64* %9, align 8
br label %67, !llvm.loop !16
90: ; preds = %67
%91 = call %struct.SinObj* @alloc(i64 noundef 1)
store %struct.SinObj* %91, %struct.SinObj** %10, align 8
%92 = load %struct.SinObj*, %struct.SinObj** %8, align 8
%93 = bitcast %struct.SinObj* %92 to i64*
%94 = bitcast i64* %93 to i8*
%95 = load %struct.SinObj*, %struct.SinObj** %10, align 8
%96 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %95, i32 0, i32 0
store i8* %94, i8** %96, align 8
%97 = load %struct.SinObj*, %struct.SinObj** %10, align 8
%98 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %97, i32 0, i32 1
store i32 8, i32* %98, align 8
%99 = load %struct.SinObj*, %struct.SinObj** %10, align 8
ret %struct.SinObj* %99
}
; Function Attrs: argmemonly nofree nounwind willreturn writeonly
declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1 immarg) #7
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_vector_63(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 1
%8 = load i32, i32* %7, align 8
%9 = icmp ne i32 %8, 4
br i1 %9, label %10, label %14
10: ; preds = %1
%11 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%12 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([20 x i8], [20 x i8]* @.str.79, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
14: ; preds = %1
%15 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%16 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %15, i8* noundef getelementptr inbounds ([20 x i8], [20 x i8]* @.str.79, i64 0, i64 0))
store %struct.SinObj* %16, %struct.SinObj** %3, align 8
%17 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%18 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %17, i64 0
%19 = bitcast %struct.SinObj* %4 to i8*
%20 = bitcast %struct.SinObj* %18 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false)
%21 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%22 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %21, i64 1
%23 = bitcast %struct.SinObj* %5 to i8*
%24 = bitcast %struct.SinObj* %22 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %24, i64 16, i1 false)
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%26 = load i32, i32* %25, align 8
%27 = icmp ne i32 %26, 1
br i1 %27, label %28, label %32
28: ; preds = %14
%29 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i64 0, i64 0), i8* noundef getelementptr inbounds ([20 x i8], [20 x i8]* @.str.79, i64 0, i64 0))
%31 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
32: ; preds = %14
%33 = call %struct.SinObj* @prim_vector_63(%struct.SinObj* noundef %4)
ret %struct.SinObj* %33
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local %struct.SinObj* @prim_vector_63(%struct.SinObj* noundef %0) #2 {
%2 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%3 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%4 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %3, i32 0, i32 1
%5 = load i32, i32* %4, align 8
%6 = icmp eq i32 %5, 8
br i1 %6, label %7, label %9
7: ; preds = %1
%8 = call %struct.SinObj* @const_init_true()
br label %11
9: ; preds = %1
%10 = call %struct.SinObj* @const_init_false()
br label %11
11: ; preds = %9, %7
%12 = phi %struct.SinObj* [ %8, %7 ], [ %10, %9 ]
ret %struct.SinObj* %12
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_vector_45length(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 1
%8 = load i32, i32* %7, align 8
%9 = icmp ne i32 %8, 4
br i1 %9, label %10, label %14
10: ; preds = %1
%11 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%12 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([26 x i8], [26 x i8]* @.str.80, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
14: ; preds = %1
%15 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%16 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %15, i8* noundef getelementptr inbounds ([26 x i8], [26 x i8]* @.str.80, i64 0, i64 0))
store %struct.SinObj* %16, %struct.SinObj** %3, align 8
%17 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%18 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %17, i64 0
%19 = bitcast %struct.SinObj* %4 to i8*
%20 = bitcast %struct.SinObj* %18 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false)
%21 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%22 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %21, i64 1
%23 = bitcast %struct.SinObj* %5 to i8*
%24 = bitcast %struct.SinObj* %22 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %24, i64 16, i1 false)
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%26 = load i32, i32* %25, align 8
%27 = icmp ne i32 %26, 1
br i1 %27, label %28, label %32
28: ; preds = %14
%29 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i64 0, i64 0), i8* noundef getelementptr inbounds ([26 x i8], [26 x i8]* @.str.80, i64 0, i64 0))
%31 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
32: ; preds = %14
%33 = call %struct.SinObj* @prim_vector_45length(%struct.SinObj* noundef %4)
ret %struct.SinObj* %33
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim_vector_45length(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%4 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%5 = call %struct.SinObj* @unwrap_vector(%struct.SinObj* noundef %4, i8* noundef getelementptr inbounds ([21 x i8], [21 x i8]* @.str.81, i64 0, i64 0))
store %struct.SinObj* %5, %struct.SinObj** %3, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i64 0
ret %struct.SinObj* %7
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local void @bounds_check(%struct.SinObj* noundef %0, i64 noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca i64, align 8
%5 = alloca i64, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store i64 %1, i64* %4, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i64 0
%8 = call i64 @unwrap_int(%struct.SinObj* noundef %7, i8* noundef getelementptr inbounds ([13 x i8], [13 x i8]* @.str.82, i64 0, i64 0))
store i64 %8, i64* %5, align 8
%9 = load i64, i64* %4, align 8
%10 = add nsw i64 %9, 1
%11 = load i64, i64* %5, align 8
%12 = icmp sgt i64 %10, %11
br i1 %12, label %13, label %19
13: ; preds = %2
%14 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%15 = load i64, i64* %4, align 8
%16 = load i64, i64* %5, align 8
%17 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([53 x i8], [53 x i8]* @.str.83, i64 0, i64 0), i64 noundef %15, i64 noundef %16)
%18 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
19: ; preds = %2
ret void
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_vector_45ref(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
%6 = alloca %struct.SinObj*, align 8
%7 = alloca %struct.SinObj, align 8
%8 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%9 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%10 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %9, i32 0, i32 1
%11 = load i32, i32* %10, align 8
%12 = icmp ne i32 %11, 4
br i1 %12, label %13, label %17
13: ; preds = %1
%14 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%15 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([23 x i8], [23 x i8]* @.str.84, i64 0, i64 0))
%16 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
17: ; preds = %1
%18 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%19 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %18, i8* noundef getelementptr inbounds ([23 x i8], [23 x i8]* @.str.84, i64 0, i64 0))
store %struct.SinObj* %19, %struct.SinObj** %3, align 8
%20 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%21 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %20, i64 0
%22 = bitcast %struct.SinObj* %4 to i8*
%23 = bitcast %struct.SinObj* %21 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %22, i8* align 8 %23, i64 16, i1 false)
%24 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %24, i64 1
%26 = bitcast %struct.SinObj* %5 to i8*
%27 = bitcast %struct.SinObj* %25 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %26, i8* align 8 %27, i64 16, i1 false)
%28 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%29 = load i32, i32* %28, align 8
%30 = icmp ne i32 %29, 4
br i1 %30, label %31, label %35
31: ; preds = %17
%32 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%33 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([46 x i8], [46 x i8]* @.str.19, i64 0, i64 0), i8* noundef getelementptr inbounds ([23 x i8], [23 x i8]* @.str.84, i64 0, i64 0))
%34 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
35: ; preds = %17
%36 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %5, i8* noundef getelementptr inbounds ([23 x i8], [23 x i8]* @.str.84, i64 0, i64 0))
store %struct.SinObj* %36, %struct.SinObj** %6, align 8
%37 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%38 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %37, i64 0
%39 = bitcast %struct.SinObj* %7 to i8*
%40 = bitcast %struct.SinObj* %38 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %39, i8* align 8 %40, i64 16, i1 false)
%41 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%42 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %41, i64 1
%43 = bitcast %struct.SinObj* %8 to i8*
%44 = bitcast %struct.SinObj* %42 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %43, i8* align 8 %44, i64 16, i1 false)
%45 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %8, i32 0, i32 1
%46 = load i32, i32* %45, align 8
%47 = icmp ne i32 %46, 1
br i1 %47, label %48, label %52
48: ; preds = %35
%49 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%50 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([38 x i8], [38 x i8]* @.str.20, i64 0, i64 0), i8* noundef getelementptr inbounds ([23 x i8], [23 x i8]* @.str.84, i64 0, i64 0))
%51 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
52: ; preds = %35
%53 = call %struct.SinObj* @prim_vector_45ref(%struct.SinObj* noundef %4, %struct.SinObj* noundef %7)
ret %struct.SinObj* %53
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_vector_45set_33(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
%6 = alloca %struct.SinObj*, align 8
%7 = alloca %struct.SinObj, align 8
%8 = alloca %struct.SinObj, align 8
%9 = alloca %struct.SinObj*, align 8
%10 = alloca %struct.SinObj, align 8
%11 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%12 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%13 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %12, i32 0, i32 1
%14 = load i32, i32* %13, align 8
%15 = icmp ne i32 %14, 4
br i1 %15, label %16, label %20
16: ; preds = %1
%17 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%18 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([26 x i8], [26 x i8]* @.str.87, i64 0, i64 0))
%19 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
20: ; preds = %1
%21 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%22 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %21, i8* noundef getelementptr inbounds ([26 x i8], [26 x i8]* @.str.87, i64 0, i64 0))
store %struct.SinObj* %22, %struct.SinObj** %3, align 8
%23 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%24 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %23, i64 0
%25 = bitcast %struct.SinObj* %4 to i8*
%26 = bitcast %struct.SinObj* %24 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %25, i8* align 8 %26, i64 16, i1 false)
%27 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%28 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %27, i64 1
%29 = bitcast %struct.SinObj* %5 to i8*
%30 = bitcast %struct.SinObj* %28 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %29, i8* align 8 %30, i64 16, i1 false)
%31 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%32 = load i32, i32* %31, align 8
%33 = icmp ne i32 %32, 4
br i1 %33, label %34, label %38
34: ; preds = %20
%35 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%36 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([46 x i8], [46 x i8]* @.str.88, i64 0, i64 0), i8* noundef getelementptr inbounds ([26 x i8], [26 x i8]* @.str.87, i64 0, i64 0))
%37 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
38: ; preds = %20
%39 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %5, i8* noundef getelementptr inbounds ([26 x i8], [26 x i8]* @.str.87, i64 0, i64 0))
store %struct.SinObj* %39, %struct.SinObj** %6, align 8
%40 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%41 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %40, i64 0
%42 = bitcast %struct.SinObj* %7 to i8*
%43 = bitcast %struct.SinObj* %41 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %42, i8* align 8 %43, i64 16, i1 false)
%44 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%45 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %44, i64 1
%46 = bitcast %struct.SinObj* %8 to i8*
%47 = bitcast %struct.SinObj* %45 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %46, i8* align 8 %47, i64 16, i1 false)
%48 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %8, i32 0, i32 1
%49 = load i32, i32* %48, align 8
%50 = icmp ne i32 %49, 4
br i1 %50, label %51, label %55
51: ; preds = %38
%52 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%53 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([46 x i8], [46 x i8]* @.str.89, i64 0, i64 0), i8* noundef getelementptr inbounds ([26 x i8], [26 x i8]* @.str.87, i64 0, i64 0))
%54 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
55: ; preds = %38
%56 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %8, i8* noundef getelementptr inbounds ([26 x i8], [26 x i8]* @.str.87, i64 0, i64 0))
store %struct.SinObj* %56, %struct.SinObj** %9, align 8
%57 = load %struct.SinObj*, %struct.SinObj** %9, align 8
%58 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %57, i64 0
%59 = bitcast %struct.SinObj* %10 to i8*
%60 = bitcast %struct.SinObj* %58 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %59, i8* align 8 %60, i64 16, i1 false)
%61 = load %struct.SinObj*, %struct.SinObj** %9, align 8
%62 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %61, i64 1
%63 = bitcast %struct.SinObj* %11 to i8*
%64 = bitcast %struct.SinObj* %62 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %63, i8* align 8 %64, i64 16, i1 false)
%65 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %11, i32 0, i32 1
%66 = load i32, i32* %65, align 8
%67 = icmp ne i32 %66, 1
br i1 %67, label %68, label %72
68: ; preds = %55
%69 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%70 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([38 x i8], [38 x i8]* @.str.90, i64 0, i64 0), i8* noundef getelementptr inbounds ([26 x i8], [26 x i8]* @.str.87, i64 0, i64 0))
%71 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
72: ; preds = %55
%73 = call %struct.SinObj* @prim_vector_45set_33(%struct.SinObj* noundef %4, %struct.SinObj* noundef %7, %struct.SinObj* noundef %10)
ret %struct.SinObj* %73
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_void(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%3 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%4 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %3, i32 0, i32 1
%5 = load i32, i32* %4, align 8
%6 = icmp ne i32 %5, 1
br i1 %6, label %7, label %11
7: ; preds = %1
%8 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%9 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([64 x i8], [64 x i8]* @.str.93, i64 0, i64 0), i8* noundef getelementptr inbounds ([15 x i8], [15 x i8]* @.str.94, i64 0, i64 0))
%10 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
11: ; preds = %1
%12 = call %struct.SinObj* @prim_void()
ret %struct.SinObj* %12
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local %struct.SinObj* @prim_void() #2 {
%1 = call %struct.SinObj* @const_init_void()
ret %struct.SinObj* %1
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local i32 @cons_eq_helper(%struct.SinObj* noundef %0, %struct.SinObj* noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj*, align 8
%5 = alloca %struct.SinObj, align 8
%6 = alloca %struct.SinObj, align 8
%7 = alloca %struct.SinObj, align 8
%8 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store %struct.SinObj* %1, %struct.SinObj** %4, align 8
%9 = load %struct.SinObj*, %struct.SinObj** %3, align 8
call void @_get_both(%struct.SinObj* noundef %9, %struct.SinObj* noundef %5, %struct.SinObj* noundef %6)
%10 = load %struct.SinObj*, %struct.SinObj** %4, align 8
call void @_get_both(%struct.SinObj* noundef %10, %struct.SinObj* noundef %7, %struct.SinObj* noundef %8)
%11 = call i32 @eq_helper(%struct.SinObj* noundef %5, %struct.SinObj* noundef %7)
%12 = icmp eq i32 %11, 1
br i1 %12, label %13, label %16
13: ; preds = %2
%14 = call i32 @eq_helper(%struct.SinObj* noundef %6, %struct.SinObj* noundef %8)
%15 = icmp ne i32 %14, 0
br label %16
16: ; preds = %13, %2
%17 = phi i1 [ false, %2 ], [ %15, %13 ]
%18 = zext i1 %17 to i32
ret i32 %18
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local i32 @vec_eq_helper(%struct.SinObj* noundef %0, %struct.SinObj* noundef %1) #0 {
%3 = alloca i32, align 4
%4 = alloca %struct.SinObj*, align 8
%5 = alloca %struct.SinObj*, align 8
%6 = alloca %struct.SinObj*, align 8
%7 = alloca %struct.SinObj*, align 8
%8 = alloca i64, align 8
%9 = alloca i64, align 8
%10 = alloca i64, align 8
store %struct.SinObj* %0, %struct.SinObj** %4, align 8
store %struct.SinObj* %1, %struct.SinObj** %5, align 8
%11 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%12 = call %struct.SinObj* @unwrap_vector(%struct.SinObj* noundef %11, i8* noundef getelementptr inbounds ([19 x i8], [19 x i8]* @.str.95, i64 0, i64 0))
store %struct.SinObj* %12, %struct.SinObj** %6, align 8
%13 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%14 = call %struct.SinObj* @unwrap_vector(%struct.SinObj* noundef %13, i8* noundef getelementptr inbounds ([19 x i8], [19 x i8]* @.str.96, i64 0, i64 0))
store %struct.SinObj* %14, %struct.SinObj** %7, align 8
%15 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%16 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %15, i64 0
%17 = call i64 @unwrap_int(%struct.SinObj* noundef %16, i8* noundef getelementptr inbounds ([19 x i8], [19 x i8]* @.str.97, i64 0, i64 0))
store i64 %17, i64* %8, align 8
%18 = load %struct.SinObj*, %struct.SinObj** %7, align 8
%19 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %18, i64 0
%20 = call i64 @unwrap_int(%struct.SinObj* noundef %19, i8* noundef getelementptr inbounds ([19 x i8], [19 x i8]* @.str.98, i64 0, i64 0))
store i64 %20, i64* %9, align 8
%21 = load i64, i64* %8, align 8
%22 = load i64, i64* %9, align 8
%23 = icmp ne i64 %21, %22
br i1 %23, label %24, label %25
24: ; preds = %2
store i32 0, i32* %3, align 4
br label %45
25: ; preds = %2
store i64 0, i64* %10, align 8
br label %26
26: ; preds = %41, %25
%27 = load i64, i64* %10, align 8
%28 = load i64, i64* %8, align 8
%29 = icmp sle i64 %27, %28
br i1 %29, label %30, label %44
30: ; preds = %26
%31 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%32 = load i64, i64* %10, align 8
%33 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %31, i64 %32
%34 = load %struct.SinObj*, %struct.SinObj** %7, align 8
%35 = load i64, i64* %10, align 8
%36 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %34, i64 %35
%37 = call i32 @eq_helper(%struct.SinObj* noundef %33, %struct.SinObj* noundef %36)
%38 = icmp eq i32 %37, 0
br i1 %38, label %39, label %40
39: ; preds = %30
store i32 0, i32* %3, align 4
br label %45
40: ; preds = %30
br label %41
41: ; preds = %40
%42 = load i64, i64* %10, align 8
%43 = add nsw i64 %42, 1
store i64 %43, i64* %10, align 8
br label %26, !llvm.loop !17
44: ; preds = %26
store i32 1, i32* %3, align 4
br label %45
45: ; preds = %44, %39, %24
%46 = load i32, i32* %3, align 4
ret i32 %46
}
; Function Attrs: nounwind readonly willreturn
declare i32 @strcmp(i8* noundef, i8* noundef) #8
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_eq_63(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
%6 = alloca %struct.SinObj*, align 8
%7 = alloca %struct.SinObj, align 8
%8 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%9 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%10 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %9, i32 0, i32 1
%11 = load i32, i32* %10, align 8
%12 = icmp ne i32 %11, 4
br i1 %12, label %13, label %17
13: ; preds = %1
%14 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%15 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([16 x i8], [16 x i8]* @.str.110, i64 0, i64 0))
%16 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
17: ; preds = %1
%18 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%19 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %18, i8* noundef getelementptr inbounds ([16 x i8], [16 x i8]* @.str.110, i64 0, i64 0))
store %struct.SinObj* %19, %struct.SinObj** %3, align 8
%20 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%21 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %20, i64 0
%22 = bitcast %struct.SinObj* %4 to i8*
%23 = bitcast %struct.SinObj* %21 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %22, i8* align 8 %23, i64 16, i1 false)
%24 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %24, i64 1
%26 = bitcast %struct.SinObj* %5 to i8*
%27 = bitcast %struct.SinObj* %25 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %26, i8* align 8 %27, i64 16, i1 false)
%28 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%29 = load i32, i32* %28, align 8
%30 = icmp ne i32 %29, 4
br i1 %30, label %31, label %35
31: ; preds = %17
%32 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%33 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([46 x i8], [46 x i8]* @.str.19, i64 0, i64 0), i8* noundef getelementptr inbounds ([16 x i8], [16 x i8]* @.str.110, i64 0, i64 0))
%34 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
35: ; preds = %17
%36 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %5, i8* noundef getelementptr inbounds ([16 x i8], [16 x i8]* @.str.110, i64 0, i64 0))
store %struct.SinObj* %36, %struct.SinObj** %6, align 8
%37 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%38 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %37, i64 0
%39 = bitcast %struct.SinObj* %7 to i8*
%40 = bitcast %struct.SinObj* %38 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %39, i8* align 8 %40, i64 16, i1 false)
%41 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%42 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %41, i64 1
%43 = bitcast %struct.SinObj* %8 to i8*
%44 = bitcast %struct.SinObj* %42 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %43, i8* align 8 %44, i64 16, i1 false)
%45 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %8, i32 0, i32 1
%46 = load i32, i32* %45, align 8
%47 = icmp ne i32 %46, 1
br i1 %47, label %48, label %52
48: ; preds = %35
%49 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%50 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([38 x i8], [38 x i8]* @.str.20, i64 0, i64 0), i8* noundef getelementptr inbounds ([16 x i8], [16 x i8]* @.str.110, i64 0, i64 0))
%51 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
52: ; preds = %35
%53 = call %struct.SinObj* @prim_eq_63(%struct.SinObj* noundef %4, %struct.SinObj* noundef %7)
ret %struct.SinObj* %53
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim_eq_63(%struct.SinObj* noundef %0, %struct.SinObj* noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store %struct.SinObj* %1, %struct.SinObj** %4, align 8
%5 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%7 = call i32 @eq_helper(%struct.SinObj* noundef %5, %struct.SinObj* noundef %6)
%8 = icmp eq i32 %7, 1
%9 = call %struct.SinObj* @make_predicate(i1 noundef zeroext %8)
ret %struct.SinObj* %9
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local %struct.SinObj* @make_predicate(i1 noundef zeroext %0) #2 {
%2 = alloca i8, align 1
%3 = zext i1 %0 to i8
store i8 %3, i8* %2, align 1
%4 = load i8, i8* %2, align 1
%5 = trunc i8 %4 to i1
br i1 %5, label %6, label %8
6: ; preds = %1
%7 = call %struct.SinObj* @const_init_true()
br label %10
8: ; preds = %1
%9 = call %struct.SinObj* @const_init_false()
br label %10
10: ; preds = %8, %6
%11 = phi %struct.SinObj* [ %7, %6 ], [ %9, %8 ]
ret %struct.SinObj* %11
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_eqv_63(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
%6 = alloca %struct.SinObj*, align 8
%7 = alloca %struct.SinObj, align 8
%8 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%9 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%10 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %9, i32 0, i32 1
%11 = load i32, i32* %10, align 8
%12 = icmp ne i32 %11, 4
br i1 %12, label %13, label %17
13: ; preds = %1
%14 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%15 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.111, i64 0, i64 0))
%16 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
17: ; preds = %1
%18 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%19 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %18, i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.111, i64 0, i64 0))
store %struct.SinObj* %19, %struct.SinObj** %3, align 8
%20 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%21 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %20, i64 0
%22 = bitcast %struct.SinObj* %4 to i8*
%23 = bitcast %struct.SinObj* %21 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %22, i8* align 8 %23, i64 16, i1 false)
%24 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %24, i64 1
%26 = bitcast %struct.SinObj* %5 to i8*
%27 = bitcast %struct.SinObj* %25 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %26, i8* align 8 %27, i64 16, i1 false)
%28 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%29 = load i32, i32* %28, align 8
%30 = icmp ne i32 %29, 4
br i1 %30, label %31, label %35
31: ; preds = %17
%32 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%33 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([46 x i8], [46 x i8]* @.str.19, i64 0, i64 0), i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.111, i64 0, i64 0))
%34 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
35: ; preds = %17
%36 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %5, i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.111, i64 0, i64 0))
store %struct.SinObj* %36, %struct.SinObj** %6, align 8
%37 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%38 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %37, i64 0
%39 = bitcast %struct.SinObj* %7 to i8*
%40 = bitcast %struct.SinObj* %38 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %39, i8* align 8 %40, i64 16, i1 false)
%41 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%42 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %41, i64 1
%43 = bitcast %struct.SinObj* %8 to i8*
%44 = bitcast %struct.SinObj* %42 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %43, i8* align 8 %44, i64 16, i1 false)
%45 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %8, i32 0, i32 1
%46 = load i32, i32* %45, align 8
%47 = icmp ne i32 %46, 1
br i1 %47, label %48, label %52
48: ; preds = %35
%49 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%50 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([38 x i8], [38 x i8]* @.str.20, i64 0, i64 0), i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.111, i64 0, i64 0))
%51 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
52: ; preds = %35
%53 = call %struct.SinObj* @prim_eqv_63(%struct.SinObj* noundef %4, %struct.SinObj* noundef %7)
ret %struct.SinObj* %53
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim_eqv_63(%struct.SinObj* noundef %0, %struct.SinObj* noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store %struct.SinObj* %1, %struct.SinObj** %4, align 8
%5 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%7 = call %struct.SinObj* @prim_eq_63(%struct.SinObj* noundef %5, %struct.SinObj* noundef %6)
ret %struct.SinObj* %7
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_equal_63(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
%6 = alloca %struct.SinObj*, align 8
%7 = alloca %struct.SinObj, align 8
%8 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%9 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%10 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %9, i32 0, i32 1
%11 = load i32, i32* %10, align 8
%12 = icmp ne i32 %11, 4
br i1 %12, label %13, label %17
13: ; preds = %1
%14 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%15 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([19 x i8], [19 x i8]* @.str.112, i64 0, i64 0))
%16 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
17: ; preds = %1
%18 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%19 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %18, i8* noundef getelementptr inbounds ([19 x i8], [19 x i8]* @.str.112, i64 0, i64 0))
store %struct.SinObj* %19, %struct.SinObj** %3, align 8
%20 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%21 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %20, i64 0
%22 = bitcast %struct.SinObj* %4 to i8*
%23 = bitcast %struct.SinObj* %21 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %22, i8* align 8 %23, i64 16, i1 false)
%24 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %24, i64 1
%26 = bitcast %struct.SinObj* %5 to i8*
%27 = bitcast %struct.SinObj* %25 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %26, i8* align 8 %27, i64 16, i1 false)
%28 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%29 = load i32, i32* %28, align 8
%30 = icmp ne i32 %29, 4
br i1 %30, label %31, label %35
31: ; preds = %17
%32 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%33 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([46 x i8], [46 x i8]* @.str.19, i64 0, i64 0), i8* noundef getelementptr inbounds ([19 x i8], [19 x i8]* @.str.112, i64 0, i64 0))
%34 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
35: ; preds = %17
%36 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %5, i8* noundef getelementptr inbounds ([19 x i8], [19 x i8]* @.str.112, i64 0, i64 0))
store %struct.SinObj* %36, %struct.SinObj** %6, align 8
%37 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%38 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %37, i64 0
%39 = bitcast %struct.SinObj* %7 to i8*
%40 = bitcast %struct.SinObj* %38 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %39, i8* align 8 %40, i64 16, i1 false)
%41 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%42 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %41, i64 1
%43 = bitcast %struct.SinObj* %8 to i8*
%44 = bitcast %struct.SinObj* %42 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %43, i8* align 8 %44, i64 16, i1 false)
%45 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %8, i32 0, i32 1
%46 = load i32, i32* %45, align 8
%47 = icmp ne i32 %46, 1
br i1 %47, label %48, label %52
48: ; preds = %35
%49 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%50 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([38 x i8], [38 x i8]* @.str.20, i64 0, i64 0), i8* noundef getelementptr inbounds ([19 x i8], [19 x i8]* @.str.112, i64 0, i64 0))
%51 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
52: ; preds = %35
%53 = call %struct.SinObj* @prim_equal_63(%struct.SinObj* noundef %4, %struct.SinObj* noundef %7)
ret %struct.SinObj* %53
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim_equal_63(%struct.SinObj* noundef %0, %struct.SinObj* noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store %struct.SinObj* %1, %struct.SinObj** %4, align 8
%5 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%7 = call %struct.SinObj* @prim_eq_63(%struct.SinObj* noundef %5, %struct.SinObj* noundef %6)
ret %struct.SinObj* %7
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_number_63(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 1
%8 = load i32, i32* %7, align 8
%9 = icmp ne i32 %8, 4
br i1 %9, label %10, label %14
10: ; preds = %1
%11 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%12 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([20 x i8], [20 x i8]* @.str.113, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
14: ; preds = %1
%15 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%16 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %15, i8* noundef getelementptr inbounds ([20 x i8], [20 x i8]* @.str.113, i64 0, i64 0))
store %struct.SinObj* %16, %struct.SinObj** %3, align 8
%17 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%18 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %17, i64 0
%19 = bitcast %struct.SinObj* %4 to i8*
%20 = bitcast %struct.SinObj* %18 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false)
%21 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%22 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %21, i64 1
%23 = bitcast %struct.SinObj* %5 to i8*
%24 = bitcast %struct.SinObj* %22 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %24, i64 16, i1 false)
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%26 = load i32, i32* %25, align 8
%27 = icmp ne i32 %26, 1
br i1 %27, label %28, label %32
28: ; preds = %14
%29 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i64 0, i64 0), i8* noundef getelementptr inbounds ([20 x i8], [20 x i8]* @.str.113, i64 0, i64 0))
%31 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
32: ; preds = %14
%33 = call %struct.SinObj* @prim_number_63(%struct.SinObj* noundef %4)
ret %struct.SinObj* %33
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim_number_63(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%3 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%4 = call %struct.SinObj* @prim_integer_63(%struct.SinObj* noundef %3)
ret %struct.SinObj* %4
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local %struct.SinObj* @prim_integer_63(%struct.SinObj* noundef %0) #2 {
%2 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%3 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%4 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %3, i32 0, i32 1
%5 = load i32, i32* %4, align 8
%6 = icmp eq i32 %5, 5
%7 = call %struct.SinObj* @make_predicate(i1 noundef zeroext %6)
ret %struct.SinObj* %7
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_integer_63(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 1
%8 = load i32, i32* %7, align 8
%9 = icmp ne i32 %8, 4
br i1 %9, label %10, label %14
10: ; preds = %1
%11 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%12 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([21 x i8], [21 x i8]* @.str.114, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
14: ; preds = %1
%15 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%16 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %15, i8* noundef getelementptr inbounds ([21 x i8], [21 x i8]* @.str.114, i64 0, i64 0))
store %struct.SinObj* %16, %struct.SinObj** %3, align 8
%17 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%18 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %17, i64 0
%19 = bitcast %struct.SinObj* %4 to i8*
%20 = bitcast %struct.SinObj* %18 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false)
%21 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%22 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %21, i64 1
%23 = bitcast %struct.SinObj* %5 to i8*
%24 = bitcast %struct.SinObj* %22 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %24, i64 16, i1 false)
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%26 = load i32, i32* %25, align 8
%27 = icmp ne i32 %26, 1
br i1 %27, label %28, label %32
28: ; preds = %14
%29 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i64 0, i64 0), i8* noundef getelementptr inbounds ([21 x i8], [21 x i8]* @.str.114, i64 0, i64 0))
%31 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
32: ; preds = %14
%33 = call %struct.SinObj* @prim_integer_63(%struct.SinObj* noundef %4)
ret %struct.SinObj* %33
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_boolean_63(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 1
%8 = load i32, i32* %7, align 8
%9 = icmp ne i32 %8, 4
br i1 %9, label %10, label %14
10: ; preds = %1
%11 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%12 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([21 x i8], [21 x i8]* @.str.115, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
14: ; preds = %1
%15 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%16 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %15, i8* noundef getelementptr inbounds ([21 x i8], [21 x i8]* @.str.115, i64 0, i64 0))
store %struct.SinObj* %16, %struct.SinObj** %3, align 8
%17 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%18 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %17, i64 0
%19 = bitcast %struct.SinObj* %4 to i8*
%20 = bitcast %struct.SinObj* %18 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false)
%21 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%22 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %21, i64 1
%23 = bitcast %struct.SinObj* %5 to i8*
%24 = bitcast %struct.SinObj* %22 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %24, i64 16, i1 false)
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%26 = load i32, i32* %25, align 8
%27 = icmp ne i32 %26, 1
br i1 %27, label %28, label %32
28: ; preds = %14
%29 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i64 0, i64 0), i8* noundef getelementptr inbounds ([21 x i8], [21 x i8]* @.str.115, i64 0, i64 0))
%31 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
32: ; preds = %14
%33 = call %struct.SinObj* @prim_boolean_63(%struct.SinObj* noundef %4)
ret %struct.SinObj* %33
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local %struct.SinObj* @prim_boolean_63(%struct.SinObj* noundef %0) #2 {
%2 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%3 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%4 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %3, i32 0, i32 1
%5 = load i32, i32* %4, align 8
%6 = icmp eq i32 %5, 2
%7 = call %struct.SinObj* @make_predicate(i1 noundef zeroext %6)
ret %struct.SinObj* %7
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_void_63(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 1
%8 = load i32, i32* %7, align 8
%9 = icmp ne i32 %8, 4
br i1 %9, label %10, label %14
10: ; preds = %1
%11 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%12 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([18 x i8], [18 x i8]* @.str.116, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
14: ; preds = %1
%15 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%16 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %15, i8* noundef getelementptr inbounds ([18 x i8], [18 x i8]* @.str.116, i64 0, i64 0))
store %struct.SinObj* %16, %struct.SinObj** %3, align 8
%17 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%18 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %17, i64 0
%19 = bitcast %struct.SinObj* %4 to i8*
%20 = bitcast %struct.SinObj* %18 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false)
%21 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%22 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %21, i64 1
%23 = bitcast %struct.SinObj* %5 to i8*
%24 = bitcast %struct.SinObj* %22 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %24, i64 16, i1 false)
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%26 = load i32, i32* %25, align 8
%27 = icmp ne i32 %26, 1
br i1 %27, label %28, label %32
28: ; preds = %14
%29 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i64 0, i64 0), i8* noundef getelementptr inbounds ([18 x i8], [18 x i8]* @.str.116, i64 0, i64 0))
%31 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
32: ; preds = %14
%33 = call %struct.SinObj* @prim_void_63(%struct.SinObj* noundef %4)
ret %struct.SinObj* %33
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local %struct.SinObj* @prim_void_63(%struct.SinObj* noundef %0) #2 {
%2 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%3 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%4 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %3, i32 0, i32 1
%5 = load i32, i32* %4, align 8
%6 = icmp eq i32 %5, 0
%7 = call %struct.SinObj* @make_predicate(i1 noundef zeroext %6)
ret %struct.SinObj* %7
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_procedure_63(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 1
%8 = load i32, i32* %7, align 8
%9 = icmp ne i32 %8, 4
br i1 %9, label %10, label %14
10: ; preds = %1
%11 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%12 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([23 x i8], [23 x i8]* @.str.117, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
14: ; preds = %1
%15 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%16 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %15, i8* noundef getelementptr inbounds ([23 x i8], [23 x i8]* @.str.117, i64 0, i64 0))
store %struct.SinObj* %16, %struct.SinObj** %3, align 8
%17 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%18 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %17, i64 0
%19 = bitcast %struct.SinObj* %4 to i8*
%20 = bitcast %struct.SinObj* %18 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false)
%21 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%22 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %21, i64 1
%23 = bitcast %struct.SinObj* %5 to i8*
%24 = bitcast %struct.SinObj* %22 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %24, i64 16, i1 false)
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%26 = load i32, i32* %25, align 8
%27 = icmp ne i32 %26, 1
br i1 %27, label %28, label %32
28: ; preds = %14
%29 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i64 0, i64 0), i8* noundef getelementptr inbounds ([23 x i8], [23 x i8]* @.str.117, i64 0, i64 0))
%31 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
32: ; preds = %14
%33 = call %struct.SinObj* @prim_procedure_63(%struct.SinObj* noundef %4)
ret %struct.SinObj* %33
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local %struct.SinObj* @prim_procedure_63(%struct.SinObj* noundef %0) #2 {
%2 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%3 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%4 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %3, i32 0, i32 1
%5 = load i32, i32* %4, align 8
%6 = icmp eq i32 %5, 3
%7 = call %struct.SinObj* @make_predicate(i1 noundef zeroext %6)
ret %struct.SinObj* %7
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_null_63(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 1
%8 = load i32, i32* %7, align 8
%9 = icmp ne i32 %8, 4
br i1 %9, label %10, label %14
10: ; preds = %1
%11 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%12 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([18 x i8], [18 x i8]* @.str.118, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
14: ; preds = %1
%15 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%16 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %15, i8* noundef getelementptr inbounds ([18 x i8], [18 x i8]* @.str.118, i64 0, i64 0))
store %struct.SinObj* %16, %struct.SinObj** %3, align 8
%17 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%18 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %17, i64 0
%19 = bitcast %struct.SinObj* %4 to i8*
%20 = bitcast %struct.SinObj* %18 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false)
%21 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%22 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %21, i64 1
%23 = bitcast %struct.SinObj* %5 to i8*
%24 = bitcast %struct.SinObj* %22 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %24, i64 16, i1 false)
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%26 = load i32, i32* %25, align 8
%27 = icmp ne i32 %26, 1
br i1 %27, label %28, label %32
28: ; preds = %14
%29 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i64 0, i64 0), i8* noundef getelementptr inbounds ([18 x i8], [18 x i8]* @.str.118, i64 0, i64 0))
%31 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
32: ; preds = %14
%33 = call %struct.SinObj* @prim_null_63(%struct.SinObj* noundef %4)
ret %struct.SinObj* %33
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local %struct.SinObj* @prim_null_63(%struct.SinObj* noundef %0) #2 {
%2 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%3 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%4 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %3, i32 0, i32 1
%5 = load i32, i32* %4, align 8
%6 = icmp eq i32 %5, 1
%7 = call %struct.SinObj* @make_predicate(i1 noundef zeroext %6)
ret %struct.SinObj* %7
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_cons_63(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 1
%8 = load i32, i32* %7, align 8
%9 = icmp ne i32 %8, 4
br i1 %9, label %10, label %14
10: ; preds = %1
%11 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%12 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([18 x i8], [18 x i8]* @.str.119, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
14: ; preds = %1
%15 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%16 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %15, i8* noundef getelementptr inbounds ([18 x i8], [18 x i8]* @.str.119, i64 0, i64 0))
store %struct.SinObj* %16, %struct.SinObj** %3, align 8
%17 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%18 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %17, i64 0
%19 = bitcast %struct.SinObj* %4 to i8*
%20 = bitcast %struct.SinObj* %18 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false)
%21 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%22 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %21, i64 1
%23 = bitcast %struct.SinObj* %5 to i8*
%24 = bitcast %struct.SinObj* %22 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %24, i64 16, i1 false)
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%26 = load i32, i32* %25, align 8
%27 = icmp ne i32 %26, 1
br i1 %27, label %28, label %32
28: ; preds = %14
%29 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i64 0, i64 0), i8* noundef getelementptr inbounds ([18 x i8], [18 x i8]* @.str.119, i64 0, i64 0))
%31 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
32: ; preds = %14
%33 = call %struct.SinObj* @prim_cons_63(%struct.SinObj* noundef %4)
ret %struct.SinObj* %33
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local %struct.SinObj* @prim_cons_63(%struct.SinObj* noundef %0) #2 {
%2 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%3 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%4 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %3, i32 0, i32 1
%5 = load i32, i32* %4, align 8
%6 = icmp eq i32 %5, 4
%7 = call %struct.SinObj* @make_predicate(i1 noundef zeroext %6)
ret %struct.SinObj* %7
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_cons(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
%6 = alloca %struct.SinObj*, align 8
%7 = alloca %struct.SinObj, align 8
%8 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%9 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%10 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %9, i32 0, i32 1
%11 = load i32, i32* %10, align 8
%12 = icmp ne i32 %11, 4
br i1 %12, label %13, label %17
13: ; preds = %1
%14 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%15 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([15 x i8], [15 x i8]* @.str.120, i64 0, i64 0))
%16 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
17: ; preds = %1
%18 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%19 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %18, i8* noundef getelementptr inbounds ([15 x i8], [15 x i8]* @.str.120, i64 0, i64 0))
store %struct.SinObj* %19, %struct.SinObj** %3, align 8
%20 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%21 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %20, i64 0
%22 = bitcast %struct.SinObj* %4 to i8*
%23 = bitcast %struct.SinObj* %21 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %22, i8* align 8 %23, i64 16, i1 false)
%24 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %24, i64 1
%26 = bitcast %struct.SinObj* %5 to i8*
%27 = bitcast %struct.SinObj* %25 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %26, i8* align 8 %27, i64 16, i1 false)
%28 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%29 = load i32, i32* %28, align 8
%30 = icmp ne i32 %29, 4
br i1 %30, label %31, label %35
31: ; preds = %17
%32 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%33 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([46 x i8], [46 x i8]* @.str.19, i64 0, i64 0), i8* noundef getelementptr inbounds ([15 x i8], [15 x i8]* @.str.120, i64 0, i64 0))
%34 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
35: ; preds = %17
%36 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %5, i8* noundef getelementptr inbounds ([15 x i8], [15 x i8]* @.str.120, i64 0, i64 0))
store %struct.SinObj* %36, %struct.SinObj** %6, align 8
%37 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%38 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %37, i64 0
%39 = bitcast %struct.SinObj* %7 to i8*
%40 = bitcast %struct.SinObj* %38 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %39, i8* align 8 %40, i64 16, i1 false)
%41 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%42 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %41, i64 1
%43 = bitcast %struct.SinObj* %8 to i8*
%44 = bitcast %struct.SinObj* %42 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %43, i8* align 8 %44, i64 16, i1 false)
%45 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %8, i32 0, i32 1
%46 = load i32, i32* %45, align 8
%47 = icmp ne i32 %46, 1
br i1 %47, label %48, label %52
48: ; preds = %35
%49 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%50 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([38 x i8], [38 x i8]* @.str.20, i64 0, i64 0), i8* noundef getelementptr inbounds ([15 x i8], [15 x i8]* @.str.120, i64 0, i64 0))
%51 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
52: ; preds = %35
%53 = call %struct.SinObj* @prim_cons(%struct.SinObj* noundef %4, %struct.SinObj* noundef %7)
ret %struct.SinObj* %53
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_cdr(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 1
%8 = load i32, i32* %7, align 8
%9 = icmp ne i32 %8, 4
br i1 %9, label %10, label %14
10: ; preds = %1
%11 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%12 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([14 x i8], [14 x i8]* @.str.121, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
14: ; preds = %1
%15 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%16 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %15, i8* noundef getelementptr inbounds ([14 x i8], [14 x i8]* @.str.121, i64 0, i64 0))
store %struct.SinObj* %16, %struct.SinObj** %3, align 8
%17 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%18 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %17, i64 0
%19 = bitcast %struct.SinObj* %4 to i8*
%20 = bitcast %struct.SinObj* %18 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false)
%21 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%22 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %21, i64 1
%23 = bitcast %struct.SinObj* %5 to i8*
%24 = bitcast %struct.SinObj* %22 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %24, i64 16, i1 false)
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%26 = load i32, i32* %25, align 8
%27 = icmp ne i32 %26, 1
br i1 %27, label %28, label %32
28: ; preds = %14
%29 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i64 0, i64 0), i8* noundef getelementptr inbounds ([14 x i8], [14 x i8]* @.str.121, i64 0, i64 0))
%31 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
32: ; preds = %14
%33 = call %struct.SinObj* @prim_cdr(%struct.SinObj* noundef %4)
ret %struct.SinObj* %33
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim_cdr(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%4 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%5 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %4, i8* noundef getelementptr inbounds ([4 x i8], [4 x i8]* @.str.122, i64 0, i64 0))
store %struct.SinObj* %5, %struct.SinObj** %3, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i64 1
ret %struct.SinObj* %7
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim__45(%struct.SinObj* noundef %0, %struct.SinObj* noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj*, align 8
%5 = alloca i64, align 8
%6 = alloca i64, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store %struct.SinObj* %1, %struct.SinObj** %4, align 8
%7 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%8 = call i64 @unwrap_int(%struct.SinObj* noundef %7, i8* noundef getelementptr inbounds ([4 x i8], [4 x i8]* @.str.123, i64 0, i64 0))
store i64 %8, i64* %5, align 8
%9 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%10 = call i64 @unwrap_int(%struct.SinObj* noundef %9, i8* noundef getelementptr inbounds ([4 x i8], [4 x i8]* @.str.124, i64 0, i64 0))
store i64 %10, i64* %6, align 8
%11 = load i64, i64* %5, align 8
%12 = load i64, i64* %6, align 8
%13 = sub nsw i64 %11, %12
%14 = call %struct.SinObj* @const_init_int(i64 noundef %13)
ret %struct.SinObj* %14
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim__45(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj*, align 8
%5 = alloca %struct.SinObj, align 8
%6 = alloca %struct.SinObj, align 8
%7 = alloca i64, align 8
%8 = alloca i64, align 8
%9 = alloca %struct.SinObj, align 8
%10 = alloca %struct.SinObj, align 8
%11 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
%12 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%13 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %12, i8* noundef getelementptr inbounds ([8 x i8], [8 x i8]* @.str.125, i64 0, i64 0))
store %struct.SinObj* %13, %struct.SinObj** %4, align 8
%14 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%15 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %14, i64 0
%16 = bitcast %struct.SinObj* %5 to i8*
%17 = bitcast %struct.SinObj* %15 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %16, i8* align 8 %17, i64 16, i1 false)
%18 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%19 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %18, i64 1
%20 = bitcast %struct.SinObj* %6 to i8*
%21 = bitcast %struct.SinObj* %19 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %20, i8* align 8 %21, i64 16, i1 false)
%22 = call i64 @unwrap_int(%struct.SinObj* noundef %5, i8* noundef getelementptr inbounds ([15 x i8], [15 x i8]* @.str.126, i64 0, i64 0))
store i64 %22, i64* %7, align 8
%23 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 1
%24 = load i32, i32* %23, align 8
%25 = icmp eq i32 %24, 1
br i1 %25, label %26, label %30
26: ; preds = %1
%27 = load i64, i64* %7, align 8
%28 = sub nsw i64 0, %27
%29 = call %struct.SinObj* @const_init_int(i64 noundef %28)
store %struct.SinObj* %29, %struct.SinObj** %2, align 8
br label %47
30: ; preds = %1
%31 = load i64, i64* %7, align 8
store i64 %31, i64* %8, align 8
%32 = bitcast %struct.SinObj* %9 to i8*
%33 = bitcast %struct.SinObj* %6 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %32, i8* align 8 %33, i64 16, i1 false)
br label %34
34: ; preds = %38, %30
%35 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %9, i32 0, i32 1
%36 = load i32, i32* %35, align 8
%37 = icmp ne i32 %36, 1
br i1 %37, label %38, label %44
38: ; preds = %34
call void @_get_both(%struct.SinObj* noundef %9, %struct.SinObj* noundef %10, %struct.SinObj* noundef %11)
%39 = call i64 @unwrap_int(%struct.SinObj* noundef %10, i8* noundef getelementptr inbounds ([20 x i8], [20 x i8]* @.str.127, i64 0, i64 0))
%40 = load i64, i64* %8, align 8
%41 = sub nsw i64 %40, %39
store i64 %41, i64* %8, align 8
%42 = bitcast %struct.SinObj* %9 to i8*
%43 = bitcast %struct.SinObj* %11 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %42, i8* align 8 %43, i64 16, i1 false)
br label %34, !llvm.loop !18
44: ; preds = %34
%45 = load i64, i64* %8, align 8
%46 = call %struct.SinObj* @const_init_int(i64 noundef %45)
store %struct.SinObj* %46, %struct.SinObj** %2, align 8
br label %47
47: ; preds = %44, %26
%48 = load %struct.SinObj*, %struct.SinObj** %2, align 8
ret %struct.SinObj* %48
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim__42(%struct.SinObj* noundef %0, %struct.SinObj* noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store %struct.SinObj* %1, %struct.SinObj** %4, align 8
%5 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%6 = call i64 @unwrap_int(%struct.SinObj* noundef %5, i8* noundef getelementptr inbounds ([4 x i8], [4 x i8]* @.str.128, i64 0, i64 0))
%7 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%8 = call i64 @unwrap_int(%struct.SinObj* noundef %7, i8* noundef getelementptr inbounds ([4 x i8], [4 x i8]* @.str.129, i64 0, i64 0))
%9 = mul nsw i64 %6, %8
%10 = call %struct.SinObj* @const_init_int(i64 noundef %9)
ret %struct.SinObj* %10
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim__42(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj*, align 8
%5 = alloca %struct.SinObj, align 8
%6 = alloca %struct.SinObj, align 8
%7 = alloca i64, align 8
%8 = alloca i64, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
%9 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%10 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %9, i32 0, i32 1
%11 = load i32, i32* %10, align 8
%12 = icmp eq i32 %11, 1
br i1 %12, label %13, label %15
13: ; preds = %1
%14 = call %struct.SinObj* @const_init_int(i64 noundef 1)
store %struct.SinObj* %14, %struct.SinObj** %2, align 8
br label %42
15: ; preds = %1
%16 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%17 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %16, i32 0, i32 1
%18 = load i32, i32* %17, align 8
%19 = icmp eq i32 %18, 4
br i1 %19, label %20, label %38
20: ; preds = %15
%21 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%22 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %21, i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.130, i64 0, i64 0))
store %struct.SinObj* %22, %struct.SinObj** %4, align 8
%23 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%24 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %23, i64 0
%25 = bitcast %struct.SinObj* %5 to i8*
%26 = bitcast %struct.SinObj* %24 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %25, i8* align 8 %26, i64 16, i1 false)
%27 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%28 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %27, i64 1
%29 = bitcast %struct.SinObj* %6 to i8*
%30 = bitcast %struct.SinObj* %28 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %29, i8* align 8 %30, i64 16, i1 false)
%31 = call i64 @unwrap_int(%struct.SinObj* noundef %5, i8* noundef getelementptr inbounds ([15 x i8], [15 x i8]* @.str.131, i64 0, i64 0))
store i64 %31, i64* %7, align 8
%32 = call %struct.SinObj* @applyprim__42(%struct.SinObj* noundef %6)
%33 = call i64 @unwrap_int(%struct.SinObj* noundef %32, i8* noundef getelementptr inbounds ([15 x i8], [15 x i8]* @.str.132, i64 0, i64 0))
store i64 %33, i64* %8, align 8
%34 = load i64, i64* %7, align 8
%35 = load i64, i64* %8, align 8
%36 = mul nsw i64 %34, %35
%37 = call %struct.SinObj* @const_init_int(i64 noundef %36)
store %struct.SinObj* %37, %struct.SinObj** %2, align 8
br label %42
38: ; preds = %15
%39 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%40 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([36 x i8], [36 x i8]* @.str.133, i64 0, i64 0))
%41 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
42: ; preds = %20, %13
%43 = load %struct.SinObj*, %struct.SinObj** %2, align 8
ret %struct.SinObj* %43
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim__47(%struct.SinObj* noundef %0, %struct.SinObj* noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj*, align 8
%5 = alloca i64, align 8
%6 = alloca i64, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store %struct.SinObj* %1, %struct.SinObj** %4, align 8
%7 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%8 = call i64 @unwrap_int(%struct.SinObj* noundef %7, i8* noundef getelementptr inbounds ([4 x i8], [4 x i8]* @.str.134, i64 0, i64 0))
store i64 %8, i64* %5, align 8
%9 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%10 = call i64 @unwrap_int(%struct.SinObj* noundef %9, i8* noundef getelementptr inbounds ([4 x i8], [4 x i8]* @.str.135, i64 0, i64 0))
store i64 %10, i64* %6, align 8
%11 = load i64, i64* %5, align 8
%12 = load i64, i64* %6, align 8
%13 = sdiv i64 %11, %12
%14 = call %struct.SinObj* @const_init_int(i64 noundef %13)
ret %struct.SinObj* %14
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim__61(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
%6 = alloca %struct.SinObj*, align 8
%7 = alloca %struct.SinObj, align 8
%8 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%9 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%10 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %9, i32 0, i32 1
%11 = load i32, i32* %10, align 8
%12 = icmp ne i32 %11, 4
br i1 %12, label %13, label %17
13: ; preds = %1
%14 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%15 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([14 x i8], [14 x i8]* @.str.136, i64 0, i64 0))
%16 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
17: ; preds = %1
%18 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%19 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %18, i8* noundef getelementptr inbounds ([14 x i8], [14 x i8]* @.str.136, i64 0, i64 0))
store %struct.SinObj* %19, %struct.SinObj** %3, align 8
%20 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%21 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %20, i64 0
%22 = bitcast %struct.SinObj* %4 to i8*
%23 = bitcast %struct.SinObj* %21 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %22, i8* align 8 %23, i64 16, i1 false)
%24 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %24, i64 1
%26 = bitcast %struct.SinObj* %5 to i8*
%27 = bitcast %struct.SinObj* %25 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %26, i8* align 8 %27, i64 16, i1 false)
%28 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%29 = load i32, i32* %28, align 8
%30 = icmp ne i32 %29, 4
br i1 %30, label %31, label %35
31: ; preds = %17
%32 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%33 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([46 x i8], [46 x i8]* @.str.19, i64 0, i64 0), i8* noundef getelementptr inbounds ([14 x i8], [14 x i8]* @.str.136, i64 0, i64 0))
%34 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
35: ; preds = %17
%36 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %5, i8* noundef getelementptr inbounds ([14 x i8], [14 x i8]* @.str.136, i64 0, i64 0))
store %struct.SinObj* %36, %struct.SinObj** %6, align 8
%37 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%38 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %37, i64 0
%39 = bitcast %struct.SinObj* %7 to i8*
%40 = bitcast %struct.SinObj* %38 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %39, i8* align 8 %40, i64 16, i1 false)
%41 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%42 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %41, i64 1
%43 = bitcast %struct.SinObj* %8 to i8*
%44 = bitcast %struct.SinObj* %42 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %43, i8* align 8 %44, i64 16, i1 false)
%45 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %8, i32 0, i32 1
%46 = load i32, i32* %45, align 8
%47 = icmp ne i32 %46, 1
br i1 %47, label %48, label %52
48: ; preds = %35
%49 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%50 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([38 x i8], [38 x i8]* @.str.20, i64 0, i64 0), i8* noundef getelementptr inbounds ([14 x i8], [14 x i8]* @.str.136, i64 0, i64 0))
%51 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
52: ; preds = %35
%53 = call %struct.SinObj* @prim__61(%struct.SinObj* noundef %4, %struct.SinObj* noundef %7)
ret %struct.SinObj* %53
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim__61(%struct.SinObj* noundef %0, %struct.SinObj* noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj*, align 8
%5 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %4, align 8
store %struct.SinObj* %1, %struct.SinObj** %5, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%7 = call i64 @unwrap_int(%struct.SinObj* noundef %6, i8* noundef getelementptr inbounds ([4 x i8], [4 x i8]* @.str.137, i64 0, i64 0))
%8 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%9 = call i64 @unwrap_int(%struct.SinObj* noundef %8, i8* noundef getelementptr inbounds ([4 x i8], [4 x i8]* @.str.138, i64 0, i64 0))
%10 = icmp eq i64 %7, %9
br i1 %10, label %11, label %13
11: ; preds = %2
%12 = call %struct.SinObj* @const_init_true()
store %struct.SinObj* %12, %struct.SinObj** %3, align 8
br label %15
13: ; preds = %2
%14 = call %struct.SinObj* @const_init_false()
store %struct.SinObj* %14, %struct.SinObj** %3, align 8
br label %15
15: ; preds = %13, %11
%16 = load %struct.SinObj*, %struct.SinObj** %3, align 8
ret %struct.SinObj* %16
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim__60(%struct.SinObj* noundef %0, %struct.SinObj* noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store %struct.SinObj* %1, %struct.SinObj** %4, align 8
%5 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%6 = call i64 @unwrap_int(%struct.SinObj* noundef %5, i8* noundef getelementptr inbounds ([4 x i8], [4 x i8]* @.str.139, i64 0, i64 0))
%7 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%8 = call i64 @unwrap_int(%struct.SinObj* noundef %7, i8* noundef getelementptr inbounds ([4 x i8], [4 x i8]* @.str.140, i64 0, i64 0))
%9 = icmp slt i64 %6, %8
%10 = call %struct.SinObj* @make_predicate(i1 noundef zeroext %9)
ret %struct.SinObj* %10
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim__60_61(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
%6 = alloca %struct.SinObj*, align 8
%7 = alloca %struct.SinObj, align 8
%8 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%9 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%10 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %9, i32 0, i32 1
%11 = load i32, i32* %10, align 8
%12 = icmp ne i32 %11, 4
br i1 %12, label %13, label %17
13: ; preds = %1
%14 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%15 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.141, i64 0, i64 0))
%16 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
17: ; preds = %1
%18 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%19 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %18, i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.141, i64 0, i64 0))
store %struct.SinObj* %19, %struct.SinObj** %3, align 8
%20 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%21 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %20, i64 0
%22 = bitcast %struct.SinObj* %4 to i8*
%23 = bitcast %struct.SinObj* %21 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %22, i8* align 8 %23, i64 16, i1 false)
%24 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %24, i64 1
%26 = bitcast %struct.SinObj* %5 to i8*
%27 = bitcast %struct.SinObj* %25 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %26, i8* align 8 %27, i64 16, i1 false)
%28 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%29 = load i32, i32* %28, align 8
%30 = icmp ne i32 %29, 4
br i1 %30, label %31, label %35
31: ; preds = %17
%32 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%33 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([46 x i8], [46 x i8]* @.str.19, i64 0, i64 0), i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.141, i64 0, i64 0))
%34 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
35: ; preds = %17
%36 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %5, i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.141, i64 0, i64 0))
store %struct.SinObj* %36, %struct.SinObj** %6, align 8
%37 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%38 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %37, i64 0
%39 = bitcast %struct.SinObj* %7 to i8*
%40 = bitcast %struct.SinObj* %38 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %39, i8* align 8 %40, i64 16, i1 false)
%41 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%42 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %41, i64 1
%43 = bitcast %struct.SinObj* %8 to i8*
%44 = bitcast %struct.SinObj* %42 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %43, i8* align 8 %44, i64 16, i1 false)
%45 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %8, i32 0, i32 1
%46 = load i32, i32* %45, align 8
%47 = icmp ne i32 %46, 1
br i1 %47, label %48, label %52
48: ; preds = %35
%49 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%50 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([38 x i8], [38 x i8]* @.str.20, i64 0, i64 0), i8* noundef getelementptr inbounds ([17 x i8], [17 x i8]* @.str.141, i64 0, i64 0))
%51 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
52: ; preds = %35
%53 = call %struct.SinObj* @prim__60_61(%struct.SinObj* noundef %4, %struct.SinObj* noundef %7)
ret %struct.SinObj* %53
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim__60_61(%struct.SinObj* noundef %0, %struct.SinObj* noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store %struct.SinObj* %1, %struct.SinObj** %4, align 8
%5 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%6 = call i64 @unwrap_int(%struct.SinObj* noundef %5, i8* noundef getelementptr inbounds ([5 x i8], [5 x i8]* @.str.142, i64 0, i64 0))
%7 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%8 = call i64 @unwrap_int(%struct.SinObj* noundef %7, i8* noundef getelementptr inbounds ([5 x i8], [5 x i8]* @.str.143, i64 0, i64 0))
%9 = icmp sle i64 %6, %8
%10 = call %struct.SinObj* @make_predicate(i1 noundef zeroext %9)
ret %struct.SinObj* %10
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_not(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 1
%8 = load i32, i32* %7, align 8
%9 = icmp ne i32 %8, 4
br i1 %9, label %10, label %14
10: ; preds = %1
%11 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%12 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([14 x i8], [14 x i8]* @.str.144, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
14: ; preds = %1
%15 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%16 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %15, i8* noundef getelementptr inbounds ([14 x i8], [14 x i8]* @.str.144, i64 0, i64 0))
store %struct.SinObj* %16, %struct.SinObj** %3, align 8
%17 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%18 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %17, i64 0
%19 = bitcast %struct.SinObj* %4 to i8*
%20 = bitcast %struct.SinObj* %18 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false)
%21 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%22 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %21, i64 1
%23 = bitcast %struct.SinObj* %5 to i8*
%24 = bitcast %struct.SinObj* %22 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %24, i64 16, i1 false)
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%26 = load i32, i32* %25, align 8
%27 = icmp ne i32 %26, 1
br i1 %27, label %28, label %32
28: ; preds = %14
%29 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i64 0, i64 0), i8* noundef getelementptr inbounds ([14 x i8], [14 x i8]* @.str.144, i64 0, i64 0))
%31 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
32: ; preds = %14
%33 = call %struct.SinObj* @prim_not(%struct.SinObj* noundef %4)
ret %struct.SinObj* %33
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim_not(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%3 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%4 = call i64 @unwrap_bool(%struct.SinObj* noundef %3, i8* noundef getelementptr inbounds ([4 x i8], [4 x i8]* @.str.145, i64 0, i64 0))
%5 = icmp eq i64 %4, 0
%6 = call %struct.SinObj* @make_predicate(i1 noundef zeroext %5)
ret %struct.SinObj* %6
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local %struct.SinObj* @map_to_sin(%struct.Map* noundef %0) #2 {
%2 = alloca %struct.Map*, align 8
%3 = alloca %struct.SinObj*, align 8
store %struct.Map* %0, %struct.Map** %2, align 8
%4 = call %struct.SinObj* @alloc(i64 noundef 1)
store %struct.SinObj* %4, %struct.SinObj** %3, align 8
%5 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%6 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
store i32 9, i32* %6, align 8
%7 = load %struct.Map*, %struct.Map** %2, align 8
%8 = bitcast %struct.Map* %7 to i64*
%9 = bitcast i64* %8 to i8*
%10 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%11 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %10, i32 0, i32 0
store i8* %9, i8** %11, align 8
%12 = load %struct.SinObj*, %struct.SinObj** %3, align 8
ret %struct.SinObj* %12
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_hash_45has_45key_63(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
%6 = alloca %struct.SinObj*, align 8
%7 = alloca %struct.SinObj, align 8
%8 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%9 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%10 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %9, i32 0, i32 1
%11 = load i32, i32* %10, align 8
%12 = icmp ne i32 %11, 4
br i1 %12, label %13, label %17
13: ; preds = %1
%14 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%15 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([30 x i8], [30 x i8]* @.str.146, i64 0, i64 0))
%16 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
17: ; preds = %1
%18 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%19 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %18, i8* noundef getelementptr inbounds ([30 x i8], [30 x i8]* @.str.146, i64 0, i64 0))
store %struct.SinObj* %19, %struct.SinObj** %3, align 8
%20 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%21 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %20, i64 0
%22 = bitcast %struct.SinObj* %4 to i8*
%23 = bitcast %struct.SinObj* %21 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %22, i8* align 8 %23, i64 16, i1 false)
%24 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %24, i64 1
%26 = bitcast %struct.SinObj* %5 to i8*
%27 = bitcast %struct.SinObj* %25 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %26, i8* align 8 %27, i64 16, i1 false)
%28 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%29 = load i32, i32* %28, align 8
%30 = icmp ne i32 %29, 4
br i1 %30, label %31, label %35
31: ; preds = %17
%32 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%33 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([46 x i8], [46 x i8]* @.str.19, i64 0, i64 0), i8* noundef getelementptr inbounds ([30 x i8], [30 x i8]* @.str.146, i64 0, i64 0))
%34 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
35: ; preds = %17
%36 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %5, i8* noundef getelementptr inbounds ([30 x i8], [30 x i8]* @.str.146, i64 0, i64 0))
store %struct.SinObj* %36, %struct.SinObj** %6, align 8
%37 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%38 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %37, i64 0
%39 = bitcast %struct.SinObj* %7 to i8*
%40 = bitcast %struct.SinObj* %38 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %39, i8* align 8 %40, i64 16, i1 false)
%41 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%42 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %41, i64 1
%43 = bitcast %struct.SinObj* %8 to i8*
%44 = bitcast %struct.SinObj* %42 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %43, i8* align 8 %44, i64 16, i1 false)
%45 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %8, i32 0, i32 1
%46 = load i32, i32* %45, align 8
%47 = icmp ne i32 %46, 1
br i1 %47, label %48, label %52
48: ; preds = %35
%49 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%50 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([38 x i8], [38 x i8]* @.str.20, i64 0, i64 0), i8* noundef getelementptr inbounds ([30 x i8], [30 x i8]* @.str.146, i64 0, i64 0))
%51 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
52: ; preds = %35
%53 = call %struct.SinObj* @prim_hash_45has_45key_63(%struct.SinObj* noundef %4, %struct.SinObj* noundef %7)
ret %struct.SinObj* %53
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim_hash_45has_45key_63(%struct.SinObj* noundef %0, %struct.SinObj* noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj*, align 8
%5 = alloca %struct.Map*, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store %struct.SinObj* %1, %struct.SinObj** %4, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%7 = call %struct.Map* @unwrap_hash(%struct.SinObj* noundef %6, i8* noundef getelementptr inbounds ([14 x i8], [14 x i8]* @.str.147, i64 0, i64 0))
store %struct.Map* %7, %struct.Map** %5, align 8
%8 = load %struct.Map*, %struct.Map** %5, align 8
%9 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%10 = call zeroext i1 @map_has_key(%struct.Map* noundef %8, %struct.SinObj* noundef %9)
%11 = call %struct.SinObj* @make_predicate(i1 noundef zeroext %10)
ret %struct.SinObj* %11
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_hash(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.Map*, align 8
%4 = alloca %struct.SinObj*, align 8
%5 = alloca %struct.SinObj*, align 8
%6 = alloca %struct.SinObj*, align 8
%7 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
store %struct.Map* null, %struct.Map** %3, align 8
br label %8
8: ; preds = %29, %1
%9 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%10 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %9, i32 0, i32 1
%11 = load i32, i32* %10, align 8
%12 = icmp ne i32 %11, 1
br i1 %12, label %13, label %38
13: ; preds = %8
%14 = call %struct.SinObj* @alloc(i64 noundef 1)
store %struct.SinObj* %14, %struct.SinObj** %4, align 8
%15 = call %struct.SinObj* @alloc(i64 noundef 1)
store %struct.SinObj* %15, %struct.SinObj** %5, align 8
%16 = call %struct.SinObj* @alloc(i64 noundef 1)
store %struct.SinObj* %16, %struct.SinObj** %6, align 8
%17 = call %struct.SinObj* @alloc(i64 noundef 1)
store %struct.SinObj* %17, %struct.SinObj** %7, align 8
%18 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%19 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%20 = load %struct.SinObj*, %struct.SinObj** %5, align 8
call void @_get_both(%struct.SinObj* noundef %18, %struct.SinObj* noundef %19, %struct.SinObj* noundef %20)
%21 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%22 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %21, i32 0, i32 1
%23 = load i32, i32* %22, align 8
%24 = icmp ne i32 %23, 4
br i1 %24, label %25, label %29
25: ; preds = %13
%26 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%27 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([33 x i8], [33 x i8]* @.str.148, i64 0, i64 0))
%28 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
29: ; preds = %13
%30 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%31 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%32 = load %struct.SinObj*, %struct.SinObj** %7, align 8
call void @_get_both(%struct.SinObj* noundef %30, %struct.SinObj* noundef %31, %struct.SinObj* noundef %32)
%33 = load %struct.Map*, %struct.Map** %3, align 8
%34 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%35 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%36 = call %struct.Map* @map_insert(%struct.Map* noundef %33, %struct.SinObj* noundef %34, %struct.SinObj* noundef %35)
store %struct.Map* %36, %struct.Map** %3, align 8
%37 = load %struct.SinObj*, %struct.SinObj** %7, align 8
store %struct.SinObj* %37, %struct.SinObj** %2, align 8
br label %8, !llvm.loop !19
38: ; preds = %8
%39 = load %struct.Map*, %struct.Map** %3, align 8
%40 = call %struct.SinObj* @map_to_sin(%struct.Map* noundef %39)
ret %struct.SinObj* %40
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_hash_45keys(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 1
%8 = load i32, i32* %7, align 8
%9 = icmp ne i32 %8, 4
br i1 %9, label %10, label %14
10: ; preds = %1
%11 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%12 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([22 x i8], [22 x i8]* @.str.149, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
14: ; preds = %1
%15 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%16 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %15, i8* noundef getelementptr inbounds ([22 x i8], [22 x i8]* @.str.149, i64 0, i64 0))
store %struct.SinObj* %16, %struct.SinObj** %3, align 8
%17 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%18 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %17, i64 0
%19 = bitcast %struct.SinObj* %4 to i8*
%20 = bitcast %struct.SinObj* %18 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false)
%21 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%22 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %21, i64 1
%23 = bitcast %struct.SinObj* %5 to i8*
%24 = bitcast %struct.SinObj* %22 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %24, i64 16, i1 false)
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%26 = load i32, i32* %25, align 8
%27 = icmp ne i32 %26, 1
br i1 %27, label %28, label %32
28: ; preds = %14
%29 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i64 0, i64 0), i8* noundef getelementptr inbounds ([22 x i8], [22 x i8]* @.str.149, i64 0, i64 0))
%31 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
32: ; preds = %14
%33 = call %struct.SinObj* @prim_hash_45keys(%struct.SinObj* noundef %4)
ret %struct.SinObj* %33
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim_hash_45keys(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.Map*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%4 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%5 = call %struct.Map* @unwrap_hash(%struct.SinObj* noundef %4, i8* noundef getelementptr inbounds ([10 x i8], [10 x i8]* @.str.150, i64 0, i64 0))
store %struct.Map* %5, %struct.Map** %3, align 8
%6 = load %struct.Map*, %struct.Map** %3, align 8
%7 = call %struct.SinObj* @map_keys(%struct.Map* noundef %6)
ret %struct.SinObj* %7
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_hash_45ref(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj*, align 8
%5 = alloca %struct.SinObj*, align 8
%6 = alloca %struct.SinObj*, align 8
%7 = alloca %struct.SinObj, align 8
%8 = alloca %struct.SinObj, align 8
%9 = alloca %struct.SinObj, align 8
%10 = alloca %struct.SinObj, align 8
%11 = alloca %struct.SinObj, align 8
%12 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store %struct.SinObj* null, %struct.SinObj** %4, align 8
store %struct.SinObj* null, %struct.SinObj** %5, align 8
store %struct.SinObj* null, %struct.SinObj** %6, align 8
%13 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%14 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %13, i32 0, i32 1
%15 = load i32, i32* %14, align 8
%16 = icmp eq i32 %15, 4
br i1 %16, label %17, label %51
17: ; preds = %1
%18 = load %struct.SinObj*, %struct.SinObj** %3, align 8
call void @_get_both(%struct.SinObj* noundef %18, %struct.SinObj* noundef %7, %struct.SinObj* noundef %8)
store %struct.SinObj* %7, %struct.SinObj** %4, align 8
%19 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %8, i32 0, i32 1
%20 = load i32, i32* %19, align 8
%21 = icmp eq i32 %20, 4
br i1 %21, label %22, label %50
22: ; preds = %17
call void @_get_both(%struct.SinObj* noundef %8, %struct.SinObj* noundef %9, %struct.SinObj* noundef %10)
store %struct.SinObj* %9, %struct.SinObj** %5, align 8
%23 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %10, i32 0, i32 1
%24 = load i32, i32* %23, align 8
%25 = icmp eq i32 %24, 4
br i1 %25, label %26, label %39
26: ; preds = %22
call void @_get_both(%struct.SinObj* noundef %10, %struct.SinObj* noundef %11, %struct.SinObj* noundef %12)
store %struct.SinObj* %11, %struct.SinObj** %6, align 8
%27 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %12, i32 0, i32 1
%28 = load i32, i32* %27, align 8
%29 = icmp eq i32 %28, 1
br i1 %29, label %30, label %35
30: ; preds = %26
%31 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%32 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%33 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%34 = call %struct.SinObj* @hash_ref_impl(%struct.SinObj* noundef %31, %struct.SinObj* noundef %32, %struct.SinObj* noundef %33)
store %struct.SinObj* %34, %struct.SinObj** %2, align 8
br label %55
35: ; preds = %26
%36 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%37 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.151, i64 0, i64 0))
%38 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
39: ; preds = %22
%40 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %10, i32 0, i32 1
%41 = load i32, i32* %40, align 8
%42 = icmp eq i32 %41, 1
br i1 %42, label %43, label %48
43: ; preds = %39
%44 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%45 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%46 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%47 = call %struct.SinObj* @hash_ref_impl(%struct.SinObj* noundef %44, %struct.SinObj* noundef %45, %struct.SinObj* noundef %46)
store %struct.SinObj* %47, %struct.SinObj** %2, align 8
br label %55
48: ; preds = %39
br label %49
49: ; preds = %48
br label %50
50: ; preds = %49, %17
br label %51
51: ; preds = %50, %1
%52 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%53 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([46 x i8], [46 x i8]* @.str.152, i64 0, i64 0))
%54 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
55: ; preds = %43, %30
%56 = load %struct.SinObj*, %struct.SinObj** %2, align 8
ret %struct.SinObj* %56
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @hash_ref_impl(%struct.SinObj* noundef %0, %struct.SinObj* noundef %1, %struct.SinObj* noundef %2) #0 {
%4 = alloca %struct.SinObj*, align 8
%5 = alloca %struct.SinObj*, align 8
%6 = alloca %struct.SinObj*, align 8
%7 = alloca %struct.SinObj*, align 8
%8 = alloca %struct.Map*, align 8
%9 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %5, align 8
store %struct.SinObj* %1, %struct.SinObj** %6, align 8
store %struct.SinObj* %2, %struct.SinObj** %7, align 8
%10 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%11 = call %struct.Map* @unwrap_hash(%struct.SinObj* noundef %10, i8* noundef getelementptr inbounds ([9 x i8], [9 x i8]* @.str.153, i64 0, i64 0))
store %struct.Map* %11, %struct.Map** %8, align 8
%12 = load %struct.Map*, %struct.Map** %8, align 8
%13 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%14 = call %struct.SinObj* @map_get(%struct.Map* noundef %12, %struct.SinObj* noundef %13)
store %struct.SinObj* %14, %struct.SinObj** %9, align 8
%15 = load %struct.SinObj*, %struct.SinObj** %9, align 8
%16 = icmp eq %struct.SinObj* %15, null
br i1 %16, label %17, label %26
17: ; preds = %3
%18 = load %struct.SinObj*, %struct.SinObj** %7, align 8
%19 = icmp eq %struct.SinObj* %18, null
br i1 %19, label %20, label %24
20: ; preds = %17
%21 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%22 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.154, i64 0, i64 0))
%23 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
24: ; preds = %17
%25 = load %struct.SinObj*, %struct.SinObj** %7, align 8
store %struct.SinObj* %25, %struct.SinObj** %4, align 8
br label %28
26: ; preds = %3
%27 = load %struct.SinObj*, %struct.SinObj** %9, align 8
store %struct.SinObj* %27, %struct.SinObj** %4, align 8
br label %28
28: ; preds = %26, %24
%29 = load %struct.SinObj*, %struct.SinObj** %4, align 8
ret %struct.SinObj* %29
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim_hash_45ref(%struct.SinObj* noundef %0, %struct.SinObj* noundef %1) #0 {
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %3, align 8
store %struct.SinObj* %1, %struct.SinObj** %4, align 8
%5 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%7 = call %struct.SinObj* @hash_ref_impl(%struct.SinObj* noundef %5, %struct.SinObj* noundef %6, %struct.SinObj* noundef null)
ret %struct.SinObj* %7
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_hash_45set(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
%6 = alloca %struct.SinObj*, align 8
%7 = alloca %struct.SinObj, align 8
%8 = alloca %struct.SinObj, align 8
%9 = alloca %struct.SinObj*, align 8
%10 = alloca %struct.SinObj, align 8
%11 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%12 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%13 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %12, i32 0, i32 1
%14 = load i32, i32* %13, align 8
%15 = icmp ne i32 %14, 4
br i1 %15, label %16, label %20
16: ; preds = %1
%17 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%18 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([21 x i8], [21 x i8]* @.str.155, i64 0, i64 0))
%19 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
20: ; preds = %1
%21 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%22 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %21, i8* noundef getelementptr inbounds ([21 x i8], [21 x i8]* @.str.155, i64 0, i64 0))
store %struct.SinObj* %22, %struct.SinObj** %3, align 8
%23 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%24 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %23, i64 0
%25 = bitcast %struct.SinObj* %4 to i8*
%26 = bitcast %struct.SinObj* %24 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %25, i8* align 8 %26, i64 16, i1 false)
%27 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%28 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %27, i64 1
%29 = bitcast %struct.SinObj* %5 to i8*
%30 = bitcast %struct.SinObj* %28 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %29, i8* align 8 %30, i64 16, i1 false)
%31 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%32 = load i32, i32* %31, align 8
%33 = icmp ne i32 %32, 4
br i1 %33, label %34, label %38
34: ; preds = %20
%35 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%36 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([46 x i8], [46 x i8]* @.str.88, i64 0, i64 0), i8* noundef getelementptr inbounds ([21 x i8], [21 x i8]* @.str.155, i64 0, i64 0))
%37 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
38: ; preds = %20
%39 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %5, i8* noundef getelementptr inbounds ([21 x i8], [21 x i8]* @.str.155, i64 0, i64 0))
store %struct.SinObj* %39, %struct.SinObj** %6, align 8
%40 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%41 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %40, i64 0
%42 = bitcast %struct.SinObj* %7 to i8*
%43 = bitcast %struct.SinObj* %41 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %42, i8* align 8 %43, i64 16, i1 false)
%44 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%45 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %44, i64 1
%46 = bitcast %struct.SinObj* %8 to i8*
%47 = bitcast %struct.SinObj* %45 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %46, i8* align 8 %47, i64 16, i1 false)
%48 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %8, i32 0, i32 1
%49 = load i32, i32* %48, align 8
%50 = icmp ne i32 %49, 4
br i1 %50, label %51, label %55
51: ; preds = %38
%52 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%53 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([46 x i8], [46 x i8]* @.str.89, i64 0, i64 0), i8* noundef getelementptr inbounds ([21 x i8], [21 x i8]* @.str.155, i64 0, i64 0))
%54 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
55: ; preds = %38
%56 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %8, i8* noundef getelementptr inbounds ([21 x i8], [21 x i8]* @.str.155, i64 0, i64 0))
store %struct.SinObj* %56, %struct.SinObj** %9, align 8
%57 = load %struct.SinObj*, %struct.SinObj** %9, align 8
%58 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %57, i64 0
%59 = bitcast %struct.SinObj* %10 to i8*
%60 = bitcast %struct.SinObj* %58 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %59, i8* align 8 %60, i64 16, i1 false)
%61 = load %struct.SinObj*, %struct.SinObj** %9, align 8
%62 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %61, i64 1
%63 = bitcast %struct.SinObj* %11 to i8*
%64 = bitcast %struct.SinObj* %62 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %63, i8* align 8 %64, i64 16, i1 false)
%65 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %11, i32 0, i32 1
%66 = load i32, i32* %65, align 8
%67 = icmp ne i32 %66, 1
br i1 %67, label %68, label %72
68: ; preds = %55
%69 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%70 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([38 x i8], [38 x i8]* @.str.90, i64 0, i64 0), i8* noundef getelementptr inbounds ([21 x i8], [21 x i8]* @.str.155, i64 0, i64 0))
%71 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
72: ; preds = %55
%73 = call %struct.SinObj* @prim_hash_45set(%struct.SinObj* noundef %4, %struct.SinObj* noundef %7, %struct.SinObj* noundef %10)
ret %struct.SinObj* %73
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim_hash_45set(%struct.SinObj* noundef %0, %struct.SinObj* noundef %1, %struct.SinObj* noundef %2) #0 {
%4 = alloca %struct.SinObj*, align 8
%5 = alloca %struct.SinObj*, align 8
%6 = alloca %struct.SinObj*, align 8
%7 = alloca %struct.Map*, align 8
%8 = alloca %struct.Map*, align 8
store %struct.SinObj* %0, %struct.SinObj** %4, align 8
store %struct.SinObj* %1, %struct.SinObj** %5, align 8
store %struct.SinObj* %2, %struct.SinObj** %6, align 8
%9 = load %struct.SinObj*, %struct.SinObj** %4, align 8
%10 = call %struct.Map* @unwrap_hash(%struct.SinObj* noundef %9, i8* noundef getelementptr inbounds ([9 x i8], [9 x i8]* @.str.156, i64 0, i64 0))
store %struct.Map* %10, %struct.Map** %7, align 8
%11 = load %struct.Map*, %struct.Map** %7, align 8
%12 = load %struct.SinObj*, %struct.SinObj** %5, align 8
%13 = load %struct.SinObj*, %struct.SinObj** %6, align 8
%14 = call %struct.Map* @map_insert(%struct.Map* noundef %11, %struct.SinObj* noundef %12, %struct.SinObj* noundef %13)
store %struct.Map* %14, %struct.Map** %8, align 8
%15 = load %struct.Map*, %struct.Map** %8, align 8
%16 = call %struct.SinObj* @map_to_sin(%struct.Map* noundef %15)
ret %struct.SinObj* %16
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_hash_63(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 1
%8 = load i32, i32* %7, align 8
%9 = icmp ne i32 %8, 4
br i1 %9, label %10, label %14
10: ; preds = %1
%11 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%12 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([18 x i8], [18 x i8]* @.str.157, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
14: ; preds = %1
%15 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%16 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %15, i8* noundef getelementptr inbounds ([18 x i8], [18 x i8]* @.str.157, i64 0, i64 0))
store %struct.SinObj* %16, %struct.SinObj** %3, align 8
%17 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%18 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %17, i64 0
%19 = bitcast %struct.SinObj* %4 to i8*
%20 = bitcast %struct.SinObj* %18 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false)
%21 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%22 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %21, i64 1
%23 = bitcast %struct.SinObj* %5 to i8*
%24 = bitcast %struct.SinObj* %22 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %24, i64 16, i1 false)
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%26 = load i32, i32* %25, align 8
%27 = icmp ne i32 %26, 1
br i1 %27, label %28, label %32
28: ; preds = %14
%29 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i64 0, i64 0), i8* noundef getelementptr inbounds ([18 x i8], [18 x i8]* @.str.157, i64 0, i64 0))
%31 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
32: ; preds = %14
%33 = call %struct.SinObj* @prim_hash_63(%struct.SinObj* noundef %4)
ret %struct.SinObj* %33
}
; Function Attrs: mustprogress noinline nounwind optnone uwtable
define dso_local %struct.SinObj* @prim_hash_63(%struct.SinObj* noundef %0) #2 {
%2 = alloca %struct.SinObj*, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%3 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%4 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %3, i32 0, i32 1
%5 = load i32, i32* %4, align 8
%6 = icmp eq i32 %5, 9
%7 = call %struct.SinObj* @make_predicate(i1 noundef zeroext %6)
ret %struct.SinObj* %7
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @applyprim_hash_45count(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.SinObj*, align 8
%4 = alloca %struct.SinObj, align 8
%5 = alloca %struct.SinObj, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%6 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%7 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %6, i32 0, i32 1
%8 = load i32, i32* %7, align 8
%9 = icmp ne i32 %8, 4
br i1 %9, label %10, label %14
10: ; preds = %1
%11 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%12 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i8* noundef getelementptr inbounds ([23 x i8], [23 x i8]* @.str.158, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
14: ; preds = %1
%15 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%16 = call %struct.SinObj* @unwrap_cons(%struct.SinObj* noundef %15, i8* noundef getelementptr inbounds ([23 x i8], [23 x i8]* @.str.158, i64 0, i64 0))
store %struct.SinObj* %16, %struct.SinObj** %3, align 8
%17 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%18 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %17, i64 0
%19 = bitcast %struct.SinObj* %4 to i8*
%20 = bitcast %struct.SinObj* %18 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false)
%21 = load %struct.SinObj*, %struct.SinObj** %3, align 8
%22 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %21, i64 1
%23 = bitcast %struct.SinObj* %5 to i8*
%24 = bitcast %struct.SinObj* %22 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %24, i64 16, i1 false)
%25 = getelementptr inbounds %struct.SinObj, %struct.SinObj* %5, i32 0, i32 1
%26 = load i32, i32* %25, align 8
%27 = icmp ne i32 %26, 1
br i1 %27, label %28, label %32
28: ; preds = %14
%29 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.8, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i64 0, i64 0), i8* noundef getelementptr inbounds ([23 x i8], [23 x i8]* @.str.158, i64 0, i64 0))
%31 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
call void @exit(i32 noundef 1) #11
unreachable
32: ; preds = %14
%33 = call %struct.SinObj* @prim_hash_45count(%struct.SinObj* noundef %4)
ret %struct.SinObj* %33
}
; Function Attrs: mustprogress noinline optnone uwtable
define dso_local %struct.SinObj* @prim_hash_45count(%struct.SinObj* noundef %0) #0 {
%2 = alloca %struct.SinObj*, align 8
%3 = alloca %struct.Map*, align 8
%4 = alloca i64, align 8
store %struct.SinObj* %0, %struct.SinObj** %2, align 8
%5 = load %struct.SinObj*, %struct.SinObj** %2, align 8
%6 = call %struct.Map* @unwrap_hash(%struct.SinObj* noundef %5, i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str.159, i64 0, i64 0))
store %struct.Map* %6, %struct.Map** %3, align 8
%7 = load %struct.Map*, %struct.Map** %3, align 8
%8 = call i64 @map_count(%struct.Map* noundef %7)
store i64 %8, i64* %4, align 8
%9 = load i64, i64* %4, align 8
%10 = call %struct.SinObj* @const_init_int(i64 noundef %9)
ret %struct.SinObj* %10
}
attributes #0 = { mustprogress noinline optnone 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 = { 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 #2 = { mustprogress noinline nounwind optnone 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 #3 = { "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 = { argmemonly nofree nounwind willreturn }
attributes #5 = { 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 #6 = { cold noreturn nounwind }
attributes #7 = { argmemonly nofree nounwind willreturn writeonly }
attributes #8 = { nounwind readonly willreturn "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 #9 = { nounwind }
attributes #10 = { nounwind readonly willreturn }
attributes #11 = { noreturn nounwind }
!llvm.module.flags = !{!0, !1, !2, !3, !4}
!llvm.ident = !{!5}
!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 7, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 1}
!4 = !{i32 7, !"frame-pointer", i32 2}
!5 = !{!"Ubuntu clang version 14.0.1-++20220426083040+0e27d08cdeb3-1~exp1~20220426083051.129"}
!6 = distinct !{!6, !7}
!7 = !{!"llvm.loop.mustprogress"}
!8 = distinct !{!8, !7}
!9 = distinct !{!9, !7}
!10 = distinct !{!10, !7}
!11 = distinct !{!11, !7}
!12 = distinct !{!12, !7}
!13 = distinct !{!13, !7}
!14 = distinct !{!14, !7}
!15 = distinct !{!15, !7}
!16 = distinct !{!16, !7}
!17 = distinct !{!17, !7}
!18 = distinct !{!18, !7}
!19 = distinct !{!19, !7}
;;;;;;;End Runtime Code;;;;;;;
; Begin user globals
; solution
@.sym.global9824 = private unnamed_addr constant [9 x i8] c"\73\6F\6C\75\74\69\6F\6E\00"
; vector-out-of-bounds
@.sym.global9827 = private unnamed_addr constant [21 x i8] c"\76\65\63\74\6F\72\2D\6F\75\74\2D\6F\66\2D\62\6F\75\6E\64\73\00"
; %%promise
@.sym.global9828 = private unnamed_addr constant [10 x i8] c"\25\25\70\72\6F\6D\69\73\65\00"
; no-solution
@.sym.global9829 = private unnamed_addr constant [12 x i8] c"\6E\6F\2D\73\6F\6C\75\74\69\6F\6E\00"
; Uncaught Exception:
@.str.global9825 = private unnamed_addr constant [21 x i8] c"\55\6E\63\61\75\67\68\74\20\45\78\63\65\70\74\69\6F\6E\3A\20\00"
;
@.str.global9826 = private unnamed_addr constant [2 x i8] c"\0A\00"
; End user
;; Global registers ;;
; stack record register, linked list of stack records.
@srr = global %struct.SinRecord* null, align 8
; frame pointer register.
@fpr = global %struct.SinObj** null, align 8
; Return Value register
@retr = global %struct.SinObj* null, align 8
; Stack Protection Register
@spr = global %struct.SinObj** null, align 8
;; End global pointers ;;
define i32 @main() {
call void @start_runtime(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr)
%base_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%finished_loc = bitcast i8* blockaddress(@main, %program_finished) to %struct.SinObj*
store volatile %struct.SinObj* %finished_loc, %struct.SinObj** %base_fp, align 8
br label %main
main:
%prologue_cur_fp9830 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%main_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 2
%main_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 3
%main_local171_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 175
%main_local170_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 174
%main_local169_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 173
%main_local168_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 172
%main_local167_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 171
%main_local166_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 170
%main_local165_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 169
%main_local164_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 168
%main_local163_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 167
%main_local162_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 166
%main_local161_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 165
%main_local160_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 164
%main_local159_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 163
%main_local158_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 162
%main_local157_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 161
%main_local156_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 160
%main_local155_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 159
%main_local154_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 158
%main_local153_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 157
%main_local152_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 156
%main_local151_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 155
%main_local150_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 154
%main_local149_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 153
%main_local148_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 152
%main_local147_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 151
%main_local146_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 150
%main_local145_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 149
%main_local144_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 148
%main_local143_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 147
%main_local142_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 146
%main_local141_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 145
%main_local140_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 144
%main_local139_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 143
%main_local138_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 142
%main_local137_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 141
%main_local136_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 140
%main_local135_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 139
%main_local134_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 138
%main_local133_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 137
%main_local132_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 136
%main_local131_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 135
%main_local130_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 134
%main_local129_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 133
%main_local128_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 132
%main_local127_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 131
%main_local126_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 130
%main_local125_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 129
%main_local124_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 128
%main_local123_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 127
%main_local122_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 126
%main_local121_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 125
%main_local120_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 124
%main_local119_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 123
%main_local118_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 122
%main_local117_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 121
%main_local116_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 120
%main_local115_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 119
%main_local114_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 118
%main_local113_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 117
%main_local112_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 116
%main_local111_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 115
%main_local110_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 114
%main_local109_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 113
%main_local108_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 112
%main_local107_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 111
%main_local106_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 110
%main_local105_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 109
%main_local104_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 108
%main_local103_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 107
%main_local102_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 106
%main_local101_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 105
%main_local100_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 104
%main_local99_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 103
%main_local98_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 102
%main_local97_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 101
%main_local96_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 100
%main_local95_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 99
%main_local94_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 98
%main_local93_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 97
%main_local92_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 96
%main_local91_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 95
%main_local90_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 94
%main_local89_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 93
%main_local88_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 92
%main_local87_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 91
%main_local86_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 90
%main_local85_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 89
%main_local84_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 88
%main_local83_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 87
%main_local82_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 86
%main_local81_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 85
%main_local80_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 84
%main_local79_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 83
%main_local78_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 82
%main_local77_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 81
%main_local76_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 80
%main_local75_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 79
%main_local74_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 78
%main_local73_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 77
%main_local72_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 76
%main_local71_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 75
%main_local70_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 74
%main_local69_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 73
%main_local68_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 72
%main_local67_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 71
%main_local66_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 70
%main_local65_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 69
%main_local64_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 68
%main_local63_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 67
%main_local62_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 66
%main_local61_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 65
%main_local60_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 64
%main_local59_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 63
%main_local58_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 62
%main_local57_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 61
%main_local56_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 60
%main_local55_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 59
%main_local54_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 58
%main_local53_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 57
%main_local52_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 56
%main_local51_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 55
%main_local50_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 54
%main_local49_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 53
%main_local48_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 52
%main_local47_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 51
%main_local46_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 50
%main_local45_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 49
%main_local44_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 48
%main_local43_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 47
%main_local42_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 46
%main_local41_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 45
%main_local40_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 44
%main_local39_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 43
%main_local38_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 42
%main_local37_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 41
%main_local36_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 40
%main_local35_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 39
%main_local34_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 38
%main_local33_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 37
%main_local32_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 36
%main_local31_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 35
%main_local30_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 34
%main_local29_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 33
%main_local28_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 32
%main_local27_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 31
%main_local26_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 30
%main_local25_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 29
%main_local24_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 28
%main_local23_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 27
%main_local22_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 26
%main_local21_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 25
%main_local20_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 24
%main_local19_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 23
%main_local18_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 22
%main_local17_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 21
%main_local16_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 20
%main_local15_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 19
%main_local14_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 18
%main_local13_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 17
%main_local12_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 16
%main_local11_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 15
%main_local10_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 14
%main_local9_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 13
%main_local8_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 12
%main_local7_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 11
%main_local6_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 10
%main_local5_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 9
%main_local4_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 8
%main_local3_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 7
%main_local2_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 6
%main_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 5
%main_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp9830, i64 4
; End function Prologue
; Starting make-closure
%makeclo_anf_45bind6433599831_funcaddr = bitcast i8* blockaddress(@main, %clo646672) to i8*
%makeclo_anf_45bind6433599831_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind6433599831_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind6433599831_val, %struct.SinObj** %main_local0_loc, align 8
; Starting make-closure
%makeclo_anf_45bind6433639832_funcaddr = bitcast i8* blockaddress(@main, %clo646671) to i8*
%makeclo_anf_45bind6433639832_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind6433639832_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind6433639832_val, %struct.SinObj** %main_local1_loc, align 8
; Starting const-null
%datnull_args646419$anf_45bind643359$09833_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646419$anf_45bind643359$09833_val, %struct.SinObj** %main_local2_loc, align 8
; Starting prim
%primtmp_args646419$anf_45bind643359$19834_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local1_loc, align 8
%primtmp_args646419$anf_45bind643359$19834_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local2_loc, align 8
%primtmp_args646419$anf_45bind643359$19834_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646419$anf_45bind643359$19834_arg_0, %struct.SinObj* %primtmp_args646419$anf_45bind643359$19834_arg_1)
store volatile %struct.SinObj* %primtmp_args646419$anf_45bind643359$19834_val, %struct.SinObj** %main_local3_loc, align 8
; Starting direct clo-app
%bind_app_$Z6404479835_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_$Z6404479835_has_space, label %bind_app_$Z6404479835_do_call, label %bind_app_$Z6404479835_overflow_first
bind_app_$Z6404479835_overflow_first:
%bind_app_$Z6404479835_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_$Z6404479835_overflow_underflow_addr, i64 176)
br label %bind_app_$Z6404479835_do_call
bind_app_$Z6404479835_do_call:
%bind_app_$Z6404479835_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local0_loc, align 8
%bind_app_$Z6404479835_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local3_loc, align 8
%bind_app_$Z6404479835_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$Z6404479835_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$Z6404479835_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_$Z6404479835_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_$Z6404479835_return_loc = bitcast i8* blockaddress(@main, %main_ret0) to %struct.SinObj*
%bind_app_$Z6404479835_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$Z6404479835_new_fp, i64 1
%bind_app_$Z6404479835_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$Z6404479835_new_fp, i64 2
%bind_app_$Z6404479835_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$Z6404479835_new_fp, i64 3
%bind_app_$Z6404479835_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_$Z6404479835_return_loc, %struct.SinObj** %bind_app_$Z6404479835_new_fp, align 8
store volatile %struct.SinObj* %bind_app_$Z6404479835_slotscast, %struct.SinObj** %bind_app_$Z6404479835_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_$Z6404479835_closure, %struct.SinObj** %bind_app_$Z6404479835_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_$Z6404479835_arglist, %struct.SinObj** %bind_app_$Z6404479835_newarg1loc, align 8
%bind_app_$Z6404479835_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_$Z6404479835_closure)
indirectbr i8* %bind_app_$Z6404479835_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret0:
%bind_app_$Z6404479835_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$Z6404479835_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$Z6404479835_oldfp, i64 1
%bind_app_$Z6404479835_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_$Z6404479835_slots_loc, align 8
%bind_app_$Z6404479835_slots = ptrtoint %struct.SinObj* %bind_app_$Z6404479835_slots_ptr to i64
%bind_app_$Z6404479835_offset = mul i64 %bind_app_$Z6404479835_slots, -1
%bind_app_$Z6404479835_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$Z6404479835_oldfp, i64 %bind_app_$Z6404479835_offset
store volatile %struct.SinObj** %bind_app_$Z6404479835_after_new_fp, %struct.SinObj*** @fpr, align 8
%$Z640447 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %$Z640447, %struct.SinObj** %main_local4_loc, align 8
; Starting make-closure
%makeclo_anf_45bind6433709836_funcaddr = bitcast i8* blockaddress(@main, %clo646668) to i8*
%makeclo_anf_45bind6433709836_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind6433709836_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind6433709836_val, %struct.SinObj** %main_local5_loc, align 8
; Starting const-null
%datnull_args646425$$Z640447$09837_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646425$$Z640447$09837_val, %struct.SinObj** %main_local6_loc, align 8
; Starting prim
%primtmp_args646425$$Z640447$19838_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local5_loc, align 8
%primtmp_args646425$$Z640447$19838_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local6_loc, align 8
%primtmp_args646425$$Z640447$19838_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646425$$Z640447$19838_arg_0, %struct.SinObj* %primtmp_args646425$$Z640447$19838_arg_1)
store volatile %struct.SinObj* %primtmp_args646425$$Z640447$19838_val, %struct.SinObj** %main_local7_loc, align 8
; Starting direct clo-app
%bind_app_$_37_37map16404529839_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_$_37_37map16404529839_has_space, label %bind_app_$_37_37map16404529839_do_call, label %bind_app_$_37_37map16404529839_overflow_first
bind_app_$_37_37map16404529839_overflow_first:
%bind_app_$_37_37map16404529839_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_$_37_37map16404529839_overflow_underflow_addr, i64 176)
br label %bind_app_$_37_37map16404529839_do_call
bind_app_$_37_37map16404529839_do_call:
%bind_app_$_37_37map16404529839_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local4_loc, align 8
%bind_app_$_37_37map16404529839_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local7_loc, align 8
%bind_app_$_37_37map16404529839_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$_37_37map16404529839_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37map16404529839_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_$_37_37map16404529839_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_$_37_37map16404529839_return_loc = bitcast i8* blockaddress(@main, %main_ret1) to %struct.SinObj*
%bind_app_$_37_37map16404529839_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37map16404529839_new_fp, i64 1
%bind_app_$_37_37map16404529839_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37map16404529839_new_fp, i64 2
%bind_app_$_37_37map16404529839_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37map16404529839_new_fp, i64 3
%bind_app_$_37_37map16404529839_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_$_37_37map16404529839_return_loc, %struct.SinObj** %bind_app_$_37_37map16404529839_new_fp, align 8
store volatile %struct.SinObj* %bind_app_$_37_37map16404529839_slotscast, %struct.SinObj** %bind_app_$_37_37map16404529839_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_$_37_37map16404529839_closure, %struct.SinObj** %bind_app_$_37_37map16404529839_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_$_37_37map16404529839_arglist, %struct.SinObj** %bind_app_$_37_37map16404529839_newarg1loc, align 8
%bind_app_$_37_37map16404529839_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_$_37_37map16404529839_closure)
indirectbr i8* %bind_app_$_37_37map16404529839_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret1:
%bind_app_$_37_37map16404529839_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$_37_37map16404529839_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37map16404529839_oldfp, i64 1
%bind_app_$_37_37map16404529839_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37map16404529839_slots_loc, align 8
%bind_app_$_37_37map16404529839_slots = ptrtoint %struct.SinObj* %bind_app_$_37_37map16404529839_slots_ptr to i64
%bind_app_$_37_37map16404529839_offset = mul i64 %bind_app_$_37_37map16404529839_slots, -1
%bind_app_$_37_37map16404529839_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37map16404529839_oldfp, i64 %bind_app_$_37_37map16404529839_offset
store volatile %struct.SinObj** %bind_app_$_37_37map16404529839_after_new_fp, %struct.SinObj*** @fpr, align 8
%$_37_37map1640452 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %$_37_37map1640452, %struct.SinObj** %main_local8_loc, align 8
; Starting make-closure
%makeclo_anf_45bind6433759840_funcaddr = bitcast i8* blockaddress(@main, %clo646665) to i8*
%makeclo_anf_45bind6433759840_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind6433759840_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind6433759840_val, %struct.SinObj** %main_local9_loc, align 8
; Starting const-null
%datnull_args646430$$Z640447$09841_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646430$$Z640447$09841_val, %struct.SinObj** %main_local10_loc, align 8
; Starting prim
%primtmp_args646430$$Z640447$19842_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local9_loc, align 8
%primtmp_args646430$$Z640447$19842_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local10_loc, align 8
%primtmp_args646430$$Z640447$19842_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646430$$Z640447$19842_arg_0, %struct.SinObj* %primtmp_args646430$$Z640447$19842_arg_1)
store volatile %struct.SinObj* %primtmp_args646430$$Z640447$19842_val, %struct.SinObj** %main_local11_loc, align 8
; Starting direct clo-app
%bind_app_$_37_37foldl16404579843_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_$_37_37foldl16404579843_has_space, label %bind_app_$_37_37foldl16404579843_do_call, label %bind_app_$_37_37foldl16404579843_overflow_first
bind_app_$_37_37foldl16404579843_overflow_first:
%bind_app_$_37_37foldl16404579843_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_$_37_37foldl16404579843_overflow_underflow_addr, i64 176)
br label %bind_app_$_37_37foldl16404579843_do_call
bind_app_$_37_37foldl16404579843_do_call:
%bind_app_$_37_37foldl16404579843_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local4_loc, align 8
%bind_app_$_37_37foldl16404579843_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local11_loc, align 8
%bind_app_$_37_37foldl16404579843_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$_37_37foldl16404579843_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37foldl16404579843_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_$_37_37foldl16404579843_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_$_37_37foldl16404579843_return_loc = bitcast i8* blockaddress(@main, %main_ret2) to %struct.SinObj*
%bind_app_$_37_37foldl16404579843_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37foldl16404579843_new_fp, i64 1
%bind_app_$_37_37foldl16404579843_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37foldl16404579843_new_fp, i64 2
%bind_app_$_37_37foldl16404579843_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37foldl16404579843_new_fp, i64 3
%bind_app_$_37_37foldl16404579843_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_$_37_37foldl16404579843_return_loc, %struct.SinObj** %bind_app_$_37_37foldl16404579843_new_fp, align 8
store volatile %struct.SinObj* %bind_app_$_37_37foldl16404579843_slotscast, %struct.SinObj** %bind_app_$_37_37foldl16404579843_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_$_37_37foldl16404579843_closure, %struct.SinObj** %bind_app_$_37_37foldl16404579843_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_$_37_37foldl16404579843_arglist, %struct.SinObj** %bind_app_$_37_37foldl16404579843_newarg1loc, align 8
%bind_app_$_37_37foldl16404579843_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_$_37_37foldl16404579843_closure)
indirectbr i8* %bind_app_$_37_37foldl16404579843_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret2:
%bind_app_$_37_37foldl16404579843_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$_37_37foldl16404579843_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37foldl16404579843_oldfp, i64 1
%bind_app_$_37_37foldl16404579843_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37foldl16404579843_slots_loc, align 8
%bind_app_$_37_37foldl16404579843_slots = ptrtoint %struct.SinObj* %bind_app_$_37_37foldl16404579843_slots_ptr to i64
%bind_app_$_37_37foldl16404579843_offset = mul i64 %bind_app_$_37_37foldl16404579843_slots, -1
%bind_app_$_37_37foldl16404579843_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37foldl16404579843_oldfp, i64 %bind_app_$_37_37foldl16404579843_offset
store volatile %struct.SinObj** %bind_app_$_37_37foldl16404579843_after_new_fp, %struct.SinObj*** @fpr, align 8
%$_37_37foldl1640457 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %$_37_37foldl1640457, %struct.SinObj** %main_local12_loc, align 8
; Starting make-closure
%makeclo_anf_45bind6433809844_funcaddr = bitcast i8* blockaddress(@main, %clo646663) to i8*
%makeclo_anf_45bind6433809844_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind6433809844_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind6433809844_val, %struct.SinObj** %main_local13_loc, align 8
; Starting const-null
%datnull_args646435$$Z640447$09845_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646435$$Z640447$09845_val, %struct.SinObj** %main_local14_loc, align 8
; Starting prim
%primtmp_args646435$$Z640447$19846_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local13_loc, align 8
%primtmp_args646435$$Z640447$19846_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local14_loc, align 8
%primtmp_args646435$$Z640447$19846_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646435$$Z640447$19846_arg_0, %struct.SinObj* %primtmp_args646435$$Z640447$19846_arg_1)
store volatile %struct.SinObj* %primtmp_args646435$$Z640447$19846_val, %struct.SinObj** %main_local15_loc, align 8
; Starting direct clo-app
%bind_app_$_37_37foldr16404629847_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_$_37_37foldr16404629847_has_space, label %bind_app_$_37_37foldr16404629847_do_call, label %bind_app_$_37_37foldr16404629847_overflow_first
bind_app_$_37_37foldr16404629847_overflow_first:
%bind_app_$_37_37foldr16404629847_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_$_37_37foldr16404629847_overflow_underflow_addr, i64 176)
br label %bind_app_$_37_37foldr16404629847_do_call
bind_app_$_37_37foldr16404629847_do_call:
%bind_app_$_37_37foldr16404629847_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local4_loc, align 8
%bind_app_$_37_37foldr16404629847_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local15_loc, align 8
%bind_app_$_37_37foldr16404629847_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$_37_37foldr16404629847_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37foldr16404629847_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_$_37_37foldr16404629847_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_$_37_37foldr16404629847_return_loc = bitcast i8* blockaddress(@main, %main_ret3) to %struct.SinObj*
%bind_app_$_37_37foldr16404629847_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37foldr16404629847_new_fp, i64 1
%bind_app_$_37_37foldr16404629847_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37foldr16404629847_new_fp, i64 2
%bind_app_$_37_37foldr16404629847_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37foldr16404629847_new_fp, i64 3
%bind_app_$_37_37foldr16404629847_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_$_37_37foldr16404629847_return_loc, %struct.SinObj** %bind_app_$_37_37foldr16404629847_new_fp, align 8
store volatile %struct.SinObj* %bind_app_$_37_37foldr16404629847_slotscast, %struct.SinObj** %bind_app_$_37_37foldr16404629847_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_$_37_37foldr16404629847_closure, %struct.SinObj** %bind_app_$_37_37foldr16404629847_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_$_37_37foldr16404629847_arglist, %struct.SinObj** %bind_app_$_37_37foldr16404629847_newarg1loc, align 8
%bind_app_$_37_37foldr16404629847_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_$_37_37foldr16404629847_closure)
indirectbr i8* %bind_app_$_37_37foldr16404629847_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret3:
%bind_app_$_37_37foldr16404629847_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$_37_37foldr16404629847_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37foldr16404629847_oldfp, i64 1
%bind_app_$_37_37foldr16404629847_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37foldr16404629847_slots_loc, align 8
%bind_app_$_37_37foldr16404629847_slots = ptrtoint %struct.SinObj* %bind_app_$_37_37foldr16404629847_slots_ptr to i64
%bind_app_$_37_37foldr16404629847_offset = mul i64 %bind_app_$_37_37foldr16404629847_slots, -1
%bind_app_$_37_37foldr16404629847_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37foldr16404629847_oldfp, i64 %bind_app_$_37_37foldr16404629847_offset
store volatile %struct.SinObj** %bind_app_$_37_37foldr16404629847_after_new_fp, %struct.SinObj*** @fpr, align 8
%$_37_37foldr1640462 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %$_37_37foldr1640462, %struct.SinObj** %main_local16_loc, align 8
; Starting make-closure
%makeclo_anf_45bind6433869848_funcaddr = bitcast i8* blockaddress(@main, %clo646661) to i8*
%makeclo_anf_45bind6433869848_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind6433869848_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind6433869848_val, %struct.SinObj** %main_local17_loc, align 8
; Starting const-null
%datnull_args646439$$Z640447$09849_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646439$$Z640447$09849_val, %struct.SinObj** %main_local18_loc, align 8
; Starting prim
%primtmp_args646439$$Z640447$19850_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local17_loc, align 8
%primtmp_args646439$$Z640447$19850_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local18_loc, align 8
%primtmp_args646439$$Z640447$19850_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646439$$Z640447$19850_arg_0, %struct.SinObj* %primtmp_args646439$$Z640447$19850_arg_1)
store volatile %struct.SinObj* %primtmp_args646439$$Z640447$19850_val, %struct.SinObj** %main_local19_loc, align 8
; Starting direct clo-app
%bind_app_$length6404679851_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_$length6404679851_has_space, label %bind_app_$length6404679851_do_call, label %bind_app_$length6404679851_overflow_first
bind_app_$length6404679851_overflow_first:
%bind_app_$length6404679851_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_$length6404679851_overflow_underflow_addr, i64 176)
br label %bind_app_$length6404679851_do_call
bind_app_$length6404679851_do_call:
%bind_app_$length6404679851_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local4_loc, align 8
%bind_app_$length6404679851_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local19_loc, align 8
%bind_app_$length6404679851_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$length6404679851_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$length6404679851_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_$length6404679851_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_$length6404679851_return_loc = bitcast i8* blockaddress(@main, %main_ret4) to %struct.SinObj*
%bind_app_$length6404679851_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$length6404679851_new_fp, i64 1
%bind_app_$length6404679851_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$length6404679851_new_fp, i64 2
%bind_app_$length6404679851_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$length6404679851_new_fp, i64 3
%bind_app_$length6404679851_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_$length6404679851_return_loc, %struct.SinObj** %bind_app_$length6404679851_new_fp, align 8
store volatile %struct.SinObj* %bind_app_$length6404679851_slotscast, %struct.SinObj** %bind_app_$length6404679851_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_$length6404679851_closure, %struct.SinObj** %bind_app_$length6404679851_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_$length6404679851_arglist, %struct.SinObj** %bind_app_$length6404679851_newarg1loc, align 8
%bind_app_$length6404679851_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_$length6404679851_closure)
indirectbr i8* %bind_app_$length6404679851_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret4:
%bind_app_$length6404679851_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$length6404679851_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$length6404679851_oldfp, i64 1
%bind_app_$length6404679851_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_$length6404679851_slots_loc, align 8
%bind_app_$length6404679851_slots = ptrtoint %struct.SinObj* %bind_app_$length6404679851_slots_ptr to i64
%bind_app_$length6404679851_offset = mul i64 %bind_app_$length6404679851_slots, -1
%bind_app_$length6404679851_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$length6404679851_oldfp, i64 %bind_app_$length6404679851_offset
store volatile %struct.SinObj** %bind_app_$length6404679851_after_new_fp, %struct.SinObj*** @fpr, align 8
%$length640467 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %$length640467, %struct.SinObj** %main_local20_loc, align 8
; Starting make-closure
%makeclo_anf_45bind6433979852_funcaddr = bitcast i8* blockaddress(@main, %clo646659) to i8*
%makeclo_anf_45bind6433979852_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind6433979852_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind6433979852_val, %struct.SinObj** %main_local21_loc, align 8
; Starting const-null
%datnull_args646445$$Z640447$09853_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646445$$Z640447$09853_val, %struct.SinObj** %main_local22_loc, align 8
; Starting prim
%primtmp_args646445$$Z640447$19854_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local21_loc, align 8
%primtmp_args646445$$Z640447$19854_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local22_loc, align 8
%primtmp_args646445$$Z640447$19854_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646445$$Z640447$19854_arg_0, %struct.SinObj* %primtmp_args646445$$Z640447$19854_arg_1)
store volatile %struct.SinObj* %primtmp_args646445$$Z640447$19854_val, %struct.SinObj** %main_local23_loc, align 8
; Starting direct clo-app
%bind_app_$take6404709855_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_$take6404709855_has_space, label %bind_app_$take6404709855_do_call, label %bind_app_$take6404709855_overflow_first
bind_app_$take6404709855_overflow_first:
%bind_app_$take6404709855_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_$take6404709855_overflow_underflow_addr, i64 176)
br label %bind_app_$take6404709855_do_call
bind_app_$take6404709855_do_call:
%bind_app_$take6404709855_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local4_loc, align 8
%bind_app_$take6404709855_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local23_loc, align 8
%bind_app_$take6404709855_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$take6404709855_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$take6404709855_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_$take6404709855_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_$take6404709855_return_loc = bitcast i8* blockaddress(@main, %main_ret5) to %struct.SinObj*
%bind_app_$take6404709855_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$take6404709855_new_fp, i64 1
%bind_app_$take6404709855_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$take6404709855_new_fp, i64 2
%bind_app_$take6404709855_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$take6404709855_new_fp, i64 3
%bind_app_$take6404709855_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_$take6404709855_return_loc, %struct.SinObj** %bind_app_$take6404709855_new_fp, align 8
store volatile %struct.SinObj* %bind_app_$take6404709855_slotscast, %struct.SinObj** %bind_app_$take6404709855_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_$take6404709855_closure, %struct.SinObj** %bind_app_$take6404709855_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_$take6404709855_arglist, %struct.SinObj** %bind_app_$take6404709855_newarg1loc, align 8
%bind_app_$take6404709855_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_$take6404709855_closure)
indirectbr i8* %bind_app_$take6404709855_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret5:
%bind_app_$take6404709855_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$take6404709855_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$take6404709855_oldfp, i64 1
%bind_app_$take6404709855_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_$take6404709855_slots_loc, align 8
%bind_app_$take6404709855_slots = ptrtoint %struct.SinObj* %bind_app_$take6404709855_slots_ptr to i64
%bind_app_$take6404709855_offset = mul i64 %bind_app_$take6404709855_slots, -1
%bind_app_$take6404709855_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$take6404709855_oldfp, i64 %bind_app_$take6404709855_offset
store volatile %struct.SinObj** %bind_app_$take6404709855_after_new_fp, %struct.SinObj*** @fpr, align 8
%$take640470 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %$take640470, %struct.SinObj** %main_local24_loc, align 8
; Starting make-closure
%makeclo_$drop_45right6404769856_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local20_loc, align 8
%makeclo_$drop_45right6404769856_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local24_loc, align 8
%makeclo_$drop_45right6404769856_funcaddr = bitcast i8* blockaddress(@main, %clo646655) to i8*
%makeclo_$drop_45right6404769856_val = call %struct.SinObj* @closure_alloc(i64 2, i8* %makeclo_$drop_45right6404769856_funcaddr)
call void @closure_place_freevar(%struct.SinObj* %makeclo_$drop_45right6404769856_val, %struct.SinObj* %makeclo_$drop_45right6404769856_arg_0, i64 0)
call void @closure_place_freevar(%struct.SinObj* %makeclo_$drop_45right6404769856_val, %struct.SinObj* %makeclo_$drop_45right6404769856_arg_1, i64 1)
store volatile %struct.SinObj* %makeclo_$drop_45right6404769856_val, %struct.SinObj** %main_local25_loc, align 8
; Starting make-closure
%makeclo_$last6404799857_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local12_loc, align 8
%makeclo_$last6404799857_funcaddr = bitcast i8* blockaddress(@main, %clo646654) to i8*
%makeclo_$last6404799857_val = call %struct.SinObj* @closure_alloc(i64 1, i8* %makeclo_$last6404799857_funcaddr)
call void @closure_place_freevar(%struct.SinObj* %makeclo_$last6404799857_val, %struct.SinObj* %makeclo_$last6404799857_arg_0, i64 0)
store volatile %struct.SinObj* %makeclo_$last6404799857_val, %struct.SinObj** %main_local26_loc, align 8
; Starting make-closure
%makeclo_anf_45bind6434169858_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local12_loc, align 8
%makeclo_anf_45bind6434169858_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local16_loc, align 8
%makeclo_anf_45bind6434169858_arg_2 = load volatile %struct.SinObj*, %struct.SinObj** %main_local8_loc, align 8
%makeclo_anf_45bind6434169858_funcaddr = bitcast i8* blockaddress(@main, %clo646651) to i8*
%makeclo_anf_45bind6434169858_val = call %struct.SinObj* @closure_alloc(i64 3, i8* %makeclo_anf_45bind6434169858_funcaddr)
call void @closure_place_freevar(%struct.SinObj* %makeclo_anf_45bind6434169858_val, %struct.SinObj* %makeclo_anf_45bind6434169858_arg_0, i64 0)
call void @closure_place_freevar(%struct.SinObj* %makeclo_anf_45bind6434169858_val, %struct.SinObj* %makeclo_anf_45bind6434169858_arg_1, i64 1)
call void @closure_place_freevar(%struct.SinObj* %makeclo_anf_45bind6434169858_val, %struct.SinObj* %makeclo_anf_45bind6434169858_arg_2, i64 2)
store volatile %struct.SinObj* %makeclo_anf_45bind6434169858_val, %struct.SinObj** %main_local27_loc, align 8
; Starting const-null
%datnull_args646461$$Z640447$09859_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646461$$Z640447$09859_val, %struct.SinObj** %main_local28_loc, align 8
; Starting prim
%primtmp_args646461$$Z640447$19860_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local27_loc, align 8
%primtmp_args646461$$Z640447$19860_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local28_loc, align 8
%primtmp_args646461$$Z640447$19860_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646461$$Z640447$19860_arg_0, %struct.SinObj* %primtmp_args646461$$Z640447$19860_arg_1)
store volatile %struct.SinObj* %primtmp_args646461$$Z640447$19860_val, %struct.SinObj** %main_local29_loc, align 8
; Starting direct clo-app
%bind_app_$foldr6404849861_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_$foldr6404849861_has_space, label %bind_app_$foldr6404849861_do_call, label %bind_app_$foldr6404849861_overflow_first
bind_app_$foldr6404849861_overflow_first:
%bind_app_$foldr6404849861_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_$foldr6404849861_overflow_underflow_addr, i64 176)
br label %bind_app_$foldr6404849861_do_call
bind_app_$foldr6404849861_do_call:
%bind_app_$foldr6404849861_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local4_loc, align 8
%bind_app_$foldr6404849861_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local29_loc, align 8
%bind_app_$foldr6404849861_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$foldr6404849861_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$foldr6404849861_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_$foldr6404849861_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_$foldr6404849861_return_loc = bitcast i8* blockaddress(@main, %main_ret6) to %struct.SinObj*
%bind_app_$foldr6404849861_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$foldr6404849861_new_fp, i64 1
%bind_app_$foldr6404849861_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$foldr6404849861_new_fp, i64 2
%bind_app_$foldr6404849861_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$foldr6404849861_new_fp, i64 3
%bind_app_$foldr6404849861_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_$foldr6404849861_return_loc, %struct.SinObj** %bind_app_$foldr6404849861_new_fp, align 8
store volatile %struct.SinObj* %bind_app_$foldr6404849861_slotscast, %struct.SinObj** %bind_app_$foldr6404849861_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_$foldr6404849861_closure, %struct.SinObj** %bind_app_$foldr6404849861_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_$foldr6404849861_arglist, %struct.SinObj** %bind_app_$foldr6404849861_newarg1loc, align 8
%bind_app_$foldr6404849861_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_$foldr6404849861_closure)
indirectbr i8* %bind_app_$foldr6404849861_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret6:
%bind_app_$foldr6404849861_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$foldr6404849861_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$foldr6404849861_oldfp, i64 1
%bind_app_$foldr6404849861_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_$foldr6404849861_slots_loc, align 8
%bind_app_$foldr6404849861_slots = ptrtoint %struct.SinObj* %bind_app_$foldr6404849861_slots_ptr to i64
%bind_app_$foldr6404849861_offset = mul i64 %bind_app_$foldr6404849861_slots, -1
%bind_app_$foldr6404849861_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$foldr6404849861_oldfp, i64 %bind_app_$foldr6404849861_offset
store volatile %struct.SinObj** %bind_app_$foldr6404849861_after_new_fp, %struct.SinObj*** @fpr, align 8
%$foldr640484 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %$foldr640484, %struct.SinObj** %main_local30_loc, align 8
; Starting make-closure
%makeclo_anf_45bind6434269862_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local30_loc, align 8
%makeclo_anf_45bind6434269862_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local26_loc, align 8
%makeclo_anf_45bind6434269862_arg_2 = load volatile %struct.SinObj*, %struct.SinObj** %main_local25_loc, align 8
%makeclo_anf_45bind6434269862_funcaddr = bitcast i8* blockaddress(@main, %clo646644) to i8*
%makeclo_anf_45bind6434269862_val = call %struct.SinObj* @closure_alloc(i64 3, i8* %makeclo_anf_45bind6434269862_funcaddr)
call void @closure_place_freevar(%struct.SinObj* %makeclo_anf_45bind6434269862_val, %struct.SinObj* %makeclo_anf_45bind6434269862_arg_0, i64 0)
call void @closure_place_freevar(%struct.SinObj* %makeclo_anf_45bind6434269862_val, %struct.SinObj* %makeclo_anf_45bind6434269862_arg_1, i64 1)
call void @closure_place_freevar(%struct.SinObj* %makeclo_anf_45bind6434269862_val, %struct.SinObj* %makeclo_anf_45bind6434269862_arg_2, i64 2)
store volatile %struct.SinObj* %makeclo_anf_45bind6434269862_val, %struct.SinObj** %main_local31_loc, align 8
; Starting const-null
%datnull_args646466$$Z640447$09863_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646466$$Z640447$09863_val, %struct.SinObj** %main_local32_loc, align 8
; Starting prim
%primtmp_args646466$$Z640447$19864_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local31_loc, align 8
%primtmp_args646466$$Z640447$19864_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local32_loc, align 8
%primtmp_args646466$$Z640447$19864_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646466$$Z640447$19864_arg_0, %struct.SinObj* %primtmp_args646466$$Z640447$19864_arg_1)
store volatile %struct.SinObj* %primtmp_args646466$$Z640447$19864_val, %struct.SinObj** %main_local33_loc, align 8
; Starting direct clo-app
%bind_app_$map6405019865_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_$map6405019865_has_space, label %bind_app_$map6405019865_do_call, label %bind_app_$map6405019865_overflow_first
bind_app_$map6405019865_overflow_first:
%bind_app_$map6405019865_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_$map6405019865_overflow_underflow_addr, i64 176)
br label %bind_app_$map6405019865_do_call
bind_app_$map6405019865_do_call:
%bind_app_$map6405019865_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local4_loc, align 8
%bind_app_$map6405019865_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local33_loc, align 8
%bind_app_$map6405019865_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$map6405019865_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$map6405019865_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_$map6405019865_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_$map6405019865_return_loc = bitcast i8* blockaddress(@main, %main_ret7) to %struct.SinObj*
%bind_app_$map6405019865_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$map6405019865_new_fp, i64 1
%bind_app_$map6405019865_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$map6405019865_new_fp, i64 2
%bind_app_$map6405019865_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$map6405019865_new_fp, i64 3
%bind_app_$map6405019865_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_$map6405019865_return_loc, %struct.SinObj** %bind_app_$map6405019865_new_fp, align 8
store volatile %struct.SinObj* %bind_app_$map6405019865_slotscast, %struct.SinObj** %bind_app_$map6405019865_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_$map6405019865_closure, %struct.SinObj** %bind_app_$map6405019865_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_$map6405019865_arglist, %struct.SinObj** %bind_app_$map6405019865_newarg1loc, align 8
%bind_app_$map6405019865_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_$map6405019865_closure)
indirectbr i8* %bind_app_$map6405019865_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret7:
%bind_app_$map6405019865_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$map6405019865_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$map6405019865_oldfp, i64 1
%bind_app_$map6405019865_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_$map6405019865_slots_loc, align 8
%bind_app_$map6405019865_slots = ptrtoint %struct.SinObj* %bind_app_$map6405019865_slots_ptr to i64
%bind_app_$map6405019865_offset = mul i64 %bind_app_$map6405019865_slots, -1
%bind_app_$map6405019865_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$map6405019865_oldfp, i64 %bind_app_$map6405019865_offset
store volatile %struct.SinObj** %bind_app_$map6405019865_after_new_fp, %struct.SinObj*** @fpr, align 8
%$map640501 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %$map640501, %struct.SinObj** %main_local34_loc, align 8
; Starting make-closure
%makeclo_anf_45bind6434399866_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local12_loc, align 8
%makeclo_anf_45bind6434399866_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local16_loc, align 8
%makeclo_anf_45bind6434399866_arg_2 = load volatile %struct.SinObj*, %struct.SinObj** %main_local8_loc, align 8
%makeclo_anf_45bind6434399866_funcaddr = bitcast i8* blockaddress(@main, %clo646640) to i8*
%makeclo_anf_45bind6434399866_val = call %struct.SinObj* @closure_alloc(i64 3, i8* %makeclo_anf_45bind6434399866_funcaddr)
call void @closure_place_freevar(%struct.SinObj* %makeclo_anf_45bind6434399866_val, %struct.SinObj* %makeclo_anf_45bind6434399866_arg_0, i64 0)
call void @closure_place_freevar(%struct.SinObj* %makeclo_anf_45bind6434399866_val, %struct.SinObj* %makeclo_anf_45bind6434399866_arg_1, i64 1)
call void @closure_place_freevar(%struct.SinObj* %makeclo_anf_45bind6434399866_val, %struct.SinObj* %makeclo_anf_45bind6434399866_arg_2, i64 2)
store volatile %struct.SinObj* %makeclo_anf_45bind6434399866_val, %struct.SinObj** %main_local35_loc, align 8
; Starting const-null
%datnull_args646474$$Z640447$09867_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646474$$Z640447$09867_val, %struct.SinObj** %main_local36_loc, align 8
; Starting prim
%primtmp_args646474$$Z640447$19868_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local35_loc, align 8
%primtmp_args646474$$Z640447$19868_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local36_loc, align 8
%primtmp_args646474$$Z640447$19868_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646474$$Z640447$19868_arg_0, %struct.SinObj* %primtmp_args646474$$Z640447$19868_arg_1)
store volatile %struct.SinObj* %primtmp_args646474$$Z640447$19868_val, %struct.SinObj** %main_local37_loc, align 8
; Starting direct clo-app
%bind_app_$foldl6405099869_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_$foldl6405099869_has_space, label %bind_app_$foldl6405099869_do_call, label %bind_app_$foldl6405099869_overflow_first
bind_app_$foldl6405099869_overflow_first:
%bind_app_$foldl6405099869_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_$foldl6405099869_overflow_underflow_addr, i64 176)
br label %bind_app_$foldl6405099869_do_call
bind_app_$foldl6405099869_do_call:
%bind_app_$foldl6405099869_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local4_loc, align 8
%bind_app_$foldl6405099869_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local37_loc, align 8
%bind_app_$foldl6405099869_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$foldl6405099869_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$foldl6405099869_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_$foldl6405099869_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_$foldl6405099869_return_loc = bitcast i8* blockaddress(@main, %main_ret8) to %struct.SinObj*
%bind_app_$foldl6405099869_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$foldl6405099869_new_fp, i64 1
%bind_app_$foldl6405099869_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$foldl6405099869_new_fp, i64 2
%bind_app_$foldl6405099869_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$foldl6405099869_new_fp, i64 3
%bind_app_$foldl6405099869_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_$foldl6405099869_return_loc, %struct.SinObj** %bind_app_$foldl6405099869_new_fp, align 8
store volatile %struct.SinObj* %bind_app_$foldl6405099869_slotscast, %struct.SinObj** %bind_app_$foldl6405099869_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_$foldl6405099869_closure, %struct.SinObj** %bind_app_$foldl6405099869_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_$foldl6405099869_arglist, %struct.SinObj** %bind_app_$foldl6405099869_newarg1loc, align 8
%bind_app_$foldl6405099869_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_$foldl6405099869_closure)
indirectbr i8* %bind_app_$foldl6405099869_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret8:
%bind_app_$foldl6405099869_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$foldl6405099869_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$foldl6405099869_oldfp, i64 1
%bind_app_$foldl6405099869_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_$foldl6405099869_slots_loc, align 8
%bind_app_$foldl6405099869_slots = ptrtoint %struct.SinObj* %bind_app_$foldl6405099869_slots_ptr to i64
%bind_app_$foldl6405099869_offset = mul i64 %bind_app_$foldl6405099869_slots, -1
%bind_app_$foldl6405099869_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$foldl6405099869_oldfp, i64 %bind_app_$foldl6405099869_offset
store volatile %struct.SinObj** %bind_app_$foldl6405099869_after_new_fp, %struct.SinObj*** @fpr, align 8
%$foldl640509 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %$foldl640509, %struct.SinObj** %main_local38_loc, align 8
; Starting make-closure
%makeclo_$_62_616405269870_funcaddr = bitcast i8* blockaddress(@main, %clo646633) to i8*
%makeclo_$_62_616405269870_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_$_62_616405269870_funcaddr)
store volatile %struct.SinObj* %makeclo_$_62_616405269870_val, %struct.SinObj** %main_local39_loc, align 8
; Starting make-closure
%makeclo_$_626405299871_funcaddr = bitcast i8* blockaddress(@main, %clo646632) to i8*
%makeclo_$_626405299871_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_$_626405299871_funcaddr)
store volatile %struct.SinObj* %makeclo_$_626405299871_val, %struct.SinObj** %main_local40_loc, align 8
; Starting make-closure
%makeclo_anf_45bind6434469872_funcaddr = bitcast i8* blockaddress(@main, %clo646631) to i8*
%makeclo_anf_45bind6434469872_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind6434469872_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind6434469872_val, %struct.SinObj** %main_local41_loc, align 8
; Starting const-null
%datnull_args646480$$Z640447$09873_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646480$$Z640447$09873_val, %struct.SinObj** %main_local42_loc, align 8
; Starting prim
%primtmp_args646480$$Z640447$19874_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local41_loc, align 8
%primtmp_args646480$$Z640447$19874_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local42_loc, align 8
%primtmp_args646480$$Z640447$19874_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646480$$Z640447$19874_arg_0, %struct.SinObj* %primtmp_args646480$$Z640447$19874_arg_1)
store volatile %struct.SinObj* %primtmp_args646480$$Z640447$19874_val, %struct.SinObj** %main_local43_loc, align 8
; Starting direct clo-app
%bind_app_$append6405329875_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_$append6405329875_has_space, label %bind_app_$append6405329875_do_call, label %bind_app_$append6405329875_overflow_first
bind_app_$append6405329875_overflow_first:
%bind_app_$append6405329875_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_$append6405329875_overflow_underflow_addr, i64 176)
br label %bind_app_$append6405329875_do_call
bind_app_$append6405329875_do_call:
%bind_app_$append6405329875_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local4_loc, align 8
%bind_app_$append6405329875_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local43_loc, align 8
%bind_app_$append6405329875_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$append6405329875_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$append6405329875_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_$append6405329875_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_$append6405329875_return_loc = bitcast i8* blockaddress(@main, %main_ret9) to %struct.SinObj*
%bind_app_$append6405329875_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$append6405329875_new_fp, i64 1
%bind_app_$append6405329875_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$append6405329875_new_fp, i64 2
%bind_app_$append6405329875_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$append6405329875_new_fp, i64 3
%bind_app_$append6405329875_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_$append6405329875_return_loc, %struct.SinObj** %bind_app_$append6405329875_new_fp, align 8
store volatile %struct.SinObj* %bind_app_$append6405329875_slotscast, %struct.SinObj** %bind_app_$append6405329875_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_$append6405329875_closure, %struct.SinObj** %bind_app_$append6405329875_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_$append6405329875_arglist, %struct.SinObj** %bind_app_$append6405329875_newarg1loc, align 8
%bind_app_$append6405329875_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_$append6405329875_closure)
indirectbr i8* %bind_app_$append6405329875_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret9:
%bind_app_$append6405329875_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$append6405329875_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$append6405329875_oldfp, i64 1
%bind_app_$append6405329875_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_$append6405329875_slots_loc, align 8
%bind_app_$append6405329875_slots = ptrtoint %struct.SinObj* %bind_app_$append6405329875_slots_ptr to i64
%bind_app_$append6405329875_offset = mul i64 %bind_app_$append6405329875_slots, -1
%bind_app_$append6405329875_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$append6405329875_oldfp, i64 %bind_app_$append6405329875_offset
store volatile %struct.SinObj** %bind_app_$append6405329875_after_new_fp, %struct.SinObj*** @fpr, align 8
%$append640532 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %$append640532, %struct.SinObj** %main_local44_loc, align 8
; Starting make-closure
%makeclo_anf_45bind6434529876_funcaddr = bitcast i8* blockaddress(@main, %clo646629) to i8*
%makeclo_anf_45bind6434529876_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind6434529876_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind6434529876_val, %struct.SinObj** %main_local45_loc, align 8
; Starting const-null
%datnull_args646484$$Z640447$09877_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646484$$Z640447$09877_val, %struct.SinObj** %main_local46_loc, align 8
; Starting prim
%primtmp_args646484$$Z640447$19878_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local45_loc, align 8
%primtmp_args646484$$Z640447$19878_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local46_loc, align 8
%primtmp_args646484$$Z640447$19878_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646484$$Z640447$19878_arg_0, %struct.SinObj* %primtmp_args646484$$Z640447$19878_arg_1)
store volatile %struct.SinObj* %primtmp_args646484$$Z640447$19878_val, %struct.SinObj** %main_local47_loc, align 8
; Starting direct clo-app
%bind_app_$list_636405369879_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_$list_636405369879_has_space, label %bind_app_$list_636405369879_do_call, label %bind_app_$list_636405369879_overflow_first
bind_app_$list_636405369879_overflow_first:
%bind_app_$list_636405369879_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_$list_636405369879_overflow_underflow_addr, i64 176)
br label %bind_app_$list_636405369879_do_call
bind_app_$list_636405369879_do_call:
%bind_app_$list_636405369879_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local4_loc, align 8
%bind_app_$list_636405369879_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local47_loc, align 8
%bind_app_$list_636405369879_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$list_636405369879_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$list_636405369879_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_$list_636405369879_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_$list_636405369879_return_loc = bitcast i8* blockaddress(@main, %main_ret10) to %struct.SinObj*
%bind_app_$list_636405369879_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$list_636405369879_new_fp, i64 1
%bind_app_$list_636405369879_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$list_636405369879_new_fp, i64 2
%bind_app_$list_636405369879_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$list_636405369879_new_fp, i64 3
%bind_app_$list_636405369879_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_$list_636405369879_return_loc, %struct.SinObj** %bind_app_$list_636405369879_new_fp, align 8
store volatile %struct.SinObj* %bind_app_$list_636405369879_slotscast, %struct.SinObj** %bind_app_$list_636405369879_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_$list_636405369879_closure, %struct.SinObj** %bind_app_$list_636405369879_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_$list_636405369879_arglist, %struct.SinObj** %bind_app_$list_636405369879_newarg1loc, align 8
%bind_app_$list_636405369879_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_$list_636405369879_closure)
indirectbr i8* %bind_app_$list_636405369879_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret10:
%bind_app_$list_636405369879_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$list_636405369879_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$list_636405369879_oldfp, i64 1
%bind_app_$list_636405369879_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_$list_636405369879_slots_loc, align 8
%bind_app_$list_636405369879_slots = ptrtoint %struct.SinObj* %bind_app_$list_636405369879_slots_ptr to i64
%bind_app_$list_636405369879_offset = mul i64 %bind_app_$list_636405369879_slots, -1
%bind_app_$list_636405369879_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$list_636405369879_oldfp, i64 %bind_app_$list_636405369879_offset
store volatile %struct.SinObj** %bind_app_$list_636405369879_after_new_fp, %struct.SinObj*** @fpr, align 8
%$list_63640536 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %$list_63640536, %struct.SinObj** %main_local48_loc, align 8
; Starting make-closure
%makeclo_anf_45bind6434589880_funcaddr = bitcast i8* blockaddress(@main, %clo646627) to i8*
%makeclo_anf_45bind6434589880_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind6434589880_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind6434589880_val, %struct.SinObj** %main_local49_loc, align 8
; Starting const-null
%datnull_args646488$$Z640447$09881_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646488$$Z640447$09881_val, %struct.SinObj** %main_local50_loc, align 8
; Starting prim
%primtmp_args646488$$Z640447$19882_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local49_loc, align 8
%primtmp_args646488$$Z640447$19882_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local50_loc, align 8
%primtmp_args646488$$Z640447$19882_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646488$$Z640447$19882_arg_0, %struct.SinObj* %primtmp_args646488$$Z640447$19882_arg_1)
store volatile %struct.SinObj* %primtmp_args646488$$Z640447$19882_val, %struct.SinObj** %main_local51_loc, align 8
; Starting direct clo-app
%bind_app_$drop6405399883_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_$drop6405399883_has_space, label %bind_app_$drop6405399883_do_call, label %bind_app_$drop6405399883_overflow_first
bind_app_$drop6405399883_overflow_first:
%bind_app_$drop6405399883_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_$drop6405399883_overflow_underflow_addr, i64 176)
br label %bind_app_$drop6405399883_do_call
bind_app_$drop6405399883_do_call:
%bind_app_$drop6405399883_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local4_loc, align 8
%bind_app_$drop6405399883_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local51_loc, align 8
%bind_app_$drop6405399883_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$drop6405399883_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$drop6405399883_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_$drop6405399883_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_$drop6405399883_return_loc = bitcast i8* blockaddress(@main, %main_ret11) to %struct.SinObj*
%bind_app_$drop6405399883_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$drop6405399883_new_fp, i64 1
%bind_app_$drop6405399883_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$drop6405399883_new_fp, i64 2
%bind_app_$drop6405399883_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$drop6405399883_new_fp, i64 3
%bind_app_$drop6405399883_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_$drop6405399883_return_loc, %struct.SinObj** %bind_app_$drop6405399883_new_fp, align 8
store volatile %struct.SinObj* %bind_app_$drop6405399883_slotscast, %struct.SinObj** %bind_app_$drop6405399883_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_$drop6405399883_closure, %struct.SinObj** %bind_app_$drop6405399883_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_$drop6405399883_arglist, %struct.SinObj** %bind_app_$drop6405399883_newarg1loc, align 8
%bind_app_$drop6405399883_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_$drop6405399883_closure)
indirectbr i8* %bind_app_$drop6405399883_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret11:
%bind_app_$drop6405399883_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$drop6405399883_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$drop6405399883_oldfp, i64 1
%bind_app_$drop6405399883_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_$drop6405399883_slots_loc, align 8
%bind_app_$drop6405399883_slots = ptrtoint %struct.SinObj* %bind_app_$drop6405399883_slots_ptr to i64
%bind_app_$drop6405399883_offset = mul i64 %bind_app_$drop6405399883_slots, -1
%bind_app_$drop6405399883_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$drop6405399883_oldfp, i64 %bind_app_$drop6405399883_offset
store volatile %struct.SinObj** %bind_app_$drop6405399883_after_new_fp, %struct.SinObj*** @fpr, align 8
%$drop640539 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %$drop640539, %struct.SinObj** %main_local52_loc, align 8
; Starting make-closure
%makeclo_anf_45bind6434649884_funcaddr = bitcast i8* blockaddress(@main, %clo646625) to i8*
%makeclo_anf_45bind6434649884_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind6434649884_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind6434649884_val, %struct.SinObj** %main_local53_loc, align 8
; Starting const-null
%datnull_args646492$$Z640447$09885_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646492$$Z640447$09885_val, %struct.SinObj** %main_local54_loc, align 8
; Starting prim
%primtmp_args646492$$Z640447$19886_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local53_loc, align 8
%primtmp_args646492$$Z640447$19886_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local54_loc, align 8
%primtmp_args646492$$Z640447$19886_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646492$$Z640447$19886_arg_0, %struct.SinObj* %primtmp_args646492$$Z640447$19886_arg_1)
store volatile %struct.SinObj* %primtmp_args646492$$Z640447$19886_val, %struct.SinObj** %main_local55_loc, align 8
; Starting direct clo-app
%bind_app_$memv6405439887_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_$memv6405439887_has_space, label %bind_app_$memv6405439887_do_call, label %bind_app_$memv6405439887_overflow_first
bind_app_$memv6405439887_overflow_first:
%bind_app_$memv6405439887_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_$memv6405439887_overflow_underflow_addr, i64 176)
br label %bind_app_$memv6405439887_do_call
bind_app_$memv6405439887_do_call:
%bind_app_$memv6405439887_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local4_loc, align 8
%bind_app_$memv6405439887_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local55_loc, align 8
%bind_app_$memv6405439887_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$memv6405439887_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$memv6405439887_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_$memv6405439887_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_$memv6405439887_return_loc = bitcast i8* blockaddress(@main, %main_ret12) to %struct.SinObj*
%bind_app_$memv6405439887_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$memv6405439887_new_fp, i64 1
%bind_app_$memv6405439887_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$memv6405439887_new_fp, i64 2
%bind_app_$memv6405439887_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$memv6405439887_new_fp, i64 3
%bind_app_$memv6405439887_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_$memv6405439887_return_loc, %struct.SinObj** %bind_app_$memv6405439887_new_fp, align 8
store volatile %struct.SinObj* %bind_app_$memv6405439887_slotscast, %struct.SinObj** %bind_app_$memv6405439887_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_$memv6405439887_closure, %struct.SinObj** %bind_app_$memv6405439887_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_$memv6405439887_arglist, %struct.SinObj** %bind_app_$memv6405439887_newarg1loc, align 8
%bind_app_$memv6405439887_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_$memv6405439887_closure)
indirectbr i8* %bind_app_$memv6405439887_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret12:
%bind_app_$memv6405439887_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$memv6405439887_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$memv6405439887_oldfp, i64 1
%bind_app_$memv6405439887_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_$memv6405439887_slots_loc, align 8
%bind_app_$memv6405439887_slots = ptrtoint %struct.SinObj* %bind_app_$memv6405439887_slots_ptr to i64
%bind_app_$memv6405439887_offset = mul i64 %bind_app_$memv6405439887_slots, -1
%bind_app_$memv6405439887_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$memv6405439887_oldfp, i64 %bind_app_$memv6405439887_offset
store volatile %struct.SinObj** %bind_app_$memv6405439887_after_new_fp, %struct.SinObj*** @fpr, align 8
%$memv640543 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %$memv640543, %struct.SinObj** %main_local56_loc, align 8
; Starting make-closure
%makeclo_$first6405479888_funcaddr = bitcast i8* blockaddress(@main, %clo646623) to i8*
%makeclo_$first6405479888_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_$first6405479888_funcaddr)
store volatile %struct.SinObj* %makeclo_$first6405479888_val, %struct.SinObj** %main_local57_loc, align 8
; Starting make-closure
%makeclo_$second6405499889_funcaddr = bitcast i8* blockaddress(@main, %clo646622) to i8*
%makeclo_$second6405499889_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_$second6405499889_funcaddr)
store volatile %struct.SinObj* %makeclo_$second6405499889_val, %struct.SinObj** %main_local58_loc, align 8
; Starting make-closure
%makeclo_$third6405519890_funcaddr = bitcast i8* blockaddress(@main, %clo646621) to i8*
%makeclo_$third6405519890_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_$third6405519890_funcaddr)
store volatile %struct.SinObj* %makeclo_$third6405519890_val, %struct.SinObj** %main_local59_loc, align 8
; Starting make-closure
%makeclo_$fourth6405539891_funcaddr = bitcast i8* blockaddress(@main, %clo646620) to i8*
%makeclo_$fourth6405539891_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_$fourth6405539891_funcaddr)
store volatile %struct.SinObj* %makeclo_$fourth6405539891_val, %struct.SinObj** %main_local60_loc, align 8
; Starting make-closure
%makeclo_$fifth6405559892_funcaddr = bitcast i8* blockaddress(@main, %clo646619) to i8*
%makeclo_$fifth6405559892_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_$fifth6405559892_funcaddr)
store volatile %struct.SinObj* %makeclo_$fifth6405559892_val, %struct.SinObj** %main_local61_loc, align 8
; Starting make-closure
%makeclo_$_37raise_45handler6405579893_funcaddr = bitcast i8* blockaddress(@main, %clo646618) to i8*
%makeclo_$_37raise_45handler6405579893_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_$_37raise_45handler6405579893_funcaddr)
store volatile %struct.SinObj* %makeclo_$_37raise_45handler6405579893_val, %struct.SinObj** %main_local62_loc, align 8
; Starting make-closure
%makeclo_$promise_636405629894_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local62_loc, align 8
%makeclo_$promise_636405629894_funcaddr = bitcast i8* blockaddress(@main, %clo646617) to i8*
%makeclo_$promise_636405629894_val = call %struct.SinObj* @closure_alloc(i64 1, i8* %makeclo_$promise_636405629894_funcaddr)
call void @closure_place_freevar(%struct.SinObj* %makeclo_$promise_636405629894_val, %struct.SinObj* %makeclo_$promise_636405629894_arg_0, i64 0)
store volatile %struct.SinObj* %makeclo_$promise_636405629894_val, %struct.SinObj** %main_local63_loc, align 8
; Starting const-int
%datint_anf_45datum6434929895_val = call %struct.SinObj* @const_init_int(i64 1)
store volatile %struct.SinObj* %datint_anf_45datum6434929895_val, %struct.SinObj** %main_local64_loc, align 8
; Starting make-closure
%makeclo_anf_45bind6434939896_funcaddr = bitcast i8* blockaddress(@main, %clo646616) to i8*
%makeclo_anf_45bind6434939896_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind6434939896_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind6434939896_val, %struct.SinObj** %main_local65_loc, align 8
; Starting const-null
%datnull_args646501$anf_45bind643493$09897_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646501$anf_45bind643493$09897_val, %struct.SinObj** %main_local66_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind6434949898_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_anf_45bind6434949898_has_space, label %bind_app_anf_45bind6434949898_do_call, label %bind_app_anf_45bind6434949898_overflow_first
bind_app_anf_45bind6434949898_overflow_first:
%bind_app_anf_45bind6434949898_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind6434949898_overflow_underflow_addr, i64 176)
br label %bind_app_anf_45bind6434949898_do_call
bind_app_anf_45bind6434949898_do_call:
%bind_app_anf_45bind6434949898_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local65_loc, align 8
%bind_app_anf_45bind6434949898_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local66_loc, align 8
%bind_app_anf_45bind6434949898_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind6434949898_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6434949898_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_anf_45bind6434949898_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind6434949898_return_loc = bitcast i8* blockaddress(@main, %main_ret13) to %struct.SinObj*
%bind_app_anf_45bind6434949898_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6434949898_new_fp, i64 1
%bind_app_anf_45bind6434949898_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6434949898_new_fp, i64 2
%bind_app_anf_45bind6434949898_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6434949898_new_fp, i64 3
%bind_app_anf_45bind6434949898_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind6434949898_return_loc, %struct.SinObj** %bind_app_anf_45bind6434949898_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind6434949898_slotscast, %struct.SinObj** %bind_app_anf_45bind6434949898_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind6434949898_closure, %struct.SinObj** %bind_app_anf_45bind6434949898_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind6434949898_arglist, %struct.SinObj** %bind_app_anf_45bind6434949898_newarg1loc, align 8
%bind_app_anf_45bind6434949898_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind6434949898_closure)
indirectbr i8* %bind_app_anf_45bind6434949898_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret13:
%bind_app_anf_45bind6434949898_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind6434949898_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6434949898_oldfp, i64 1
%bind_app_anf_45bind6434949898_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6434949898_slots_loc, align 8
%bind_app_anf_45bind6434949898_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind6434949898_slots_ptr to i64
%bind_app_anf_45bind6434949898_offset = mul i64 %bind_app_anf_45bind6434949898_slots, -1
%bind_app_anf_45bind6434949898_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6434949898_oldfp, i64 %bind_app_anf_45bind6434949898_offset
store volatile %struct.SinObj** %bind_app_anf_45bind6434949898_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643494 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643494, %struct.SinObj** %main_local67_loc, align 8
; Starting prim
%primtmp_$_37wind_45stack6405659899_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local64_loc, align 8
%primtmp_$_37wind_45stack6405659899_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local67_loc, align 8
%primtmp_$_37wind_45stack6405659899_val = call %struct.SinObj* @prim_make_45vector(%struct.SinObj* %primtmp_$_37wind_45stack6405659899_arg_0, %struct.SinObj* %primtmp_$_37wind_45stack6405659899_arg_1)
store volatile %struct.SinObj* %primtmp_$_37wind_45stack6405659899_val, %struct.SinObj** %main_local68_loc, align 8
; Starting make-closure
%makeclo_$_37common_45tail6405679900_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local40_loc, align 8
%makeclo_$_37common_45tail6405679900_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local20_loc, align 8
%makeclo_$_37common_45tail6405679900_arg_2 = load volatile %struct.SinObj*, %struct.SinObj** %main_local52_loc, align 8
%makeclo_$_37common_45tail6405679900_funcaddr = bitcast i8* blockaddress(@main, %clo646615) to i8*
%makeclo_$_37common_45tail6405679900_val = call %struct.SinObj* @closure_alloc(i64 3, i8* %makeclo_$_37common_45tail6405679900_funcaddr)
call void @closure_place_freevar(%struct.SinObj* %makeclo_$_37common_45tail6405679900_val, %struct.SinObj* %makeclo_$_37common_45tail6405679900_arg_0, i64 0)
call void @closure_place_freevar(%struct.SinObj* %makeclo_$_37common_45tail6405679900_val, %struct.SinObj* %makeclo_$_37common_45tail6405679900_arg_1, i64 1)
call void @closure_place_freevar(%struct.SinObj* %makeclo_$_37common_45tail6405679900_val, %struct.SinObj* %makeclo_$_37common_45tail6405679900_arg_2, i64 2)
store volatile %struct.SinObj* %makeclo_$_37common_45tail6405679900_val, %struct.SinObj** %main_local69_loc, align 8
; Starting make-closure
%makeclo_$_37do_45wind6405779901_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local68_loc, align 8
%makeclo_$_37do_45wind6405779901_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local69_loc, align 8
%makeclo_$_37do_45wind6405779901_funcaddr = bitcast i8* blockaddress(@main, %clo646612) to i8*
%makeclo_$_37do_45wind6405779901_val = call %struct.SinObj* @closure_alloc(i64 2, i8* %makeclo_$_37do_45wind6405779901_funcaddr)
call void @closure_place_freevar(%struct.SinObj* %makeclo_$_37do_45wind6405779901_val, %struct.SinObj* %makeclo_$_37do_45wind6405779901_arg_0, i64 0)
call void @closure_place_freevar(%struct.SinObj* %makeclo_$_37do_45wind6405779901_val, %struct.SinObj* %makeclo_$_37do_45wind6405779901_arg_1, i64 1)
store volatile %struct.SinObj* %makeclo_$_37do_45wind6405779901_val, %struct.SinObj** %main_local70_loc, align 8
; Starting const-int
%datint_anf_45datum6435499902_val = call %struct.SinObj* @const_init_int(i64 1)
store volatile %struct.SinObj* %datint_anf_45datum6435499902_val, %struct.SinObj** %main_local71_loc, align 8
; Starting make-closure
%makeclo_anf_45bind6435509903_funcaddr = bitcast i8* blockaddress(@main, %clo646607) to i8*
%makeclo_anf_45bind6435509903_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind6435509903_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind6435509903_val, %struct.SinObj** %main_local72_loc, align 8
; Starting const-null
%datnull_args646525$anf_45bind643550$09904_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646525$anf_45bind643550$09904_val, %struct.SinObj** %main_local73_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind6435519905_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_anf_45bind6435519905_has_space, label %bind_app_anf_45bind6435519905_do_call, label %bind_app_anf_45bind6435519905_overflow_first
bind_app_anf_45bind6435519905_overflow_first:
%bind_app_anf_45bind6435519905_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind6435519905_overflow_underflow_addr, i64 176)
br label %bind_app_anf_45bind6435519905_do_call
bind_app_anf_45bind6435519905_do_call:
%bind_app_anf_45bind6435519905_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local72_loc, align 8
%bind_app_anf_45bind6435519905_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local73_loc, align 8
%bind_app_anf_45bind6435519905_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind6435519905_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435519905_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_anf_45bind6435519905_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind6435519905_return_loc = bitcast i8* blockaddress(@main, %main_ret14) to %struct.SinObj*
%bind_app_anf_45bind6435519905_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435519905_new_fp, i64 1
%bind_app_anf_45bind6435519905_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435519905_new_fp, i64 2
%bind_app_anf_45bind6435519905_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435519905_new_fp, i64 3
%bind_app_anf_45bind6435519905_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind6435519905_return_loc, %struct.SinObj** %bind_app_anf_45bind6435519905_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind6435519905_slotscast, %struct.SinObj** %bind_app_anf_45bind6435519905_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind6435519905_closure, %struct.SinObj** %bind_app_anf_45bind6435519905_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind6435519905_arglist, %struct.SinObj** %bind_app_anf_45bind6435519905_newarg1loc, align 8
%bind_app_anf_45bind6435519905_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind6435519905_closure)
indirectbr i8* %bind_app_anf_45bind6435519905_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret14:
%bind_app_anf_45bind6435519905_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind6435519905_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435519905_oldfp, i64 1
%bind_app_anf_45bind6435519905_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435519905_slots_loc, align 8
%bind_app_anf_45bind6435519905_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind6435519905_slots_ptr to i64
%bind_app_anf_45bind6435519905_offset = mul i64 %bind_app_anf_45bind6435519905_slots, -1
%bind_app_anf_45bind6435519905_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435519905_oldfp, i64 %bind_app_anf_45bind6435519905_offset
store volatile %struct.SinObj** %bind_app_anf_45bind6435519905_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643551 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643551, %struct.SinObj** %main_local74_loc, align 8
; Starting prim
%primtmp_$ccstack6405939906_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local71_loc, align 8
%primtmp_$ccstack6405939906_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local74_loc, align 8
%primtmp_$ccstack6405939906_val = call %struct.SinObj* @prim_make_45vector(%struct.SinObj* %primtmp_$ccstack6405939906_arg_0, %struct.SinObj* %primtmp_$ccstack6405939906_arg_1)
store volatile %struct.SinObj* %primtmp_$ccstack6405939906_val, %struct.SinObj** %main_local75_loc, align 8
; Starting const-int
%datint_anf_45datum6435529907_val = call %struct.SinObj* @const_init_int(i64 1)
store volatile %struct.SinObj* %datint_anf_45datum6435529907_val, %struct.SinObj** %main_local76_loc, align 8
; Starting make-closure
%makeclo_anf_45bind6435539908_funcaddr = bitcast i8* blockaddress(@main, %clo646606) to i8*
%makeclo_anf_45bind6435539908_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind6435539908_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind6435539908_val, %struct.SinObj** %main_local77_loc, align 8
; Starting const-null
%datnull_args646526$anf_45bind643553$09909_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646526$anf_45bind643553$09909_val, %struct.SinObj** %main_local78_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind6435549910_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_anf_45bind6435549910_has_space, label %bind_app_anf_45bind6435549910_do_call, label %bind_app_anf_45bind6435549910_overflow_first
bind_app_anf_45bind6435549910_overflow_first:
%bind_app_anf_45bind6435549910_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind6435549910_overflow_underflow_addr, i64 176)
br label %bind_app_anf_45bind6435549910_do_call
bind_app_anf_45bind6435549910_do_call:
%bind_app_anf_45bind6435549910_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local77_loc, align 8
%bind_app_anf_45bind6435549910_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local78_loc, align 8
%bind_app_anf_45bind6435549910_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind6435549910_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435549910_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_anf_45bind6435549910_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind6435549910_return_loc = bitcast i8* blockaddress(@main, %main_ret15) to %struct.SinObj*
%bind_app_anf_45bind6435549910_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435549910_new_fp, i64 1
%bind_app_anf_45bind6435549910_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435549910_new_fp, i64 2
%bind_app_anf_45bind6435549910_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435549910_new_fp, i64 3
%bind_app_anf_45bind6435549910_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind6435549910_return_loc, %struct.SinObj** %bind_app_anf_45bind6435549910_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind6435549910_slotscast, %struct.SinObj** %bind_app_anf_45bind6435549910_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind6435549910_closure, %struct.SinObj** %bind_app_anf_45bind6435549910_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind6435549910_arglist, %struct.SinObj** %bind_app_anf_45bind6435549910_newarg1loc, align 8
%bind_app_anf_45bind6435549910_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind6435549910_closure)
indirectbr i8* %bind_app_anf_45bind6435549910_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret15:
%bind_app_anf_45bind6435549910_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind6435549910_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435549910_oldfp, i64 1
%bind_app_anf_45bind6435549910_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435549910_slots_loc, align 8
%bind_app_anf_45bind6435549910_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind6435549910_slots_ptr to i64
%bind_app_anf_45bind6435549910_offset = mul i64 %bind_app_anf_45bind6435549910_slots, -1
%bind_app_anf_45bind6435549910_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435549910_oldfp, i64 %bind_app_anf_45bind6435549910_offset
store volatile %struct.SinObj** %bind_app_anf_45bind6435549910_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643554 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643554, %struct.SinObj** %main_local79_loc, align 8
; Starting prim
%primtmp_$fail6405959911_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local76_loc, align 8
%primtmp_$fail6405959911_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local79_loc, align 8
%primtmp_$fail6405959911_val = call %struct.SinObj* @prim_make_45vector(%struct.SinObj* %primtmp_$fail6405959911_arg_0, %struct.SinObj* %primtmp_$fail6405959911_arg_1)
store volatile %struct.SinObj* %primtmp_$fail6405959911_val, %struct.SinObj** %main_local80_loc, align 8
; Starting const-int
%datint_anf_45datum6435559912_val = call %struct.SinObj* @const_init_int(i64 1)
store volatile %struct.SinObj* %datint_anf_45datum6435559912_val, %struct.SinObj** %main_local81_loc, align 8
; Starting make-closure
%makeclo_anf_45bind6435569913_funcaddr = bitcast i8* blockaddress(@main, %clo646605) to i8*
%makeclo_anf_45bind6435569913_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind6435569913_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind6435569913_val, %struct.SinObj** %main_local82_loc, align 8
; Starting const-null
%datnull_args646527$anf_45bind643556$09914_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646527$anf_45bind643556$09914_val, %struct.SinObj** %main_local83_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind6435579915_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_anf_45bind6435579915_has_space, label %bind_app_anf_45bind6435579915_do_call, label %bind_app_anf_45bind6435579915_overflow_first
bind_app_anf_45bind6435579915_overflow_first:
%bind_app_anf_45bind6435579915_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind6435579915_overflow_underflow_addr, i64 176)
br label %bind_app_anf_45bind6435579915_do_call
bind_app_anf_45bind6435579915_do_call:
%bind_app_anf_45bind6435579915_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local82_loc, align 8
%bind_app_anf_45bind6435579915_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local83_loc, align 8
%bind_app_anf_45bind6435579915_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind6435579915_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435579915_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_anf_45bind6435579915_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind6435579915_return_loc = bitcast i8* blockaddress(@main, %main_ret16) to %struct.SinObj*
%bind_app_anf_45bind6435579915_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435579915_new_fp, i64 1
%bind_app_anf_45bind6435579915_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435579915_new_fp, i64 2
%bind_app_anf_45bind6435579915_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435579915_new_fp, i64 3
%bind_app_anf_45bind6435579915_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind6435579915_return_loc, %struct.SinObj** %bind_app_anf_45bind6435579915_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind6435579915_slotscast, %struct.SinObj** %bind_app_anf_45bind6435579915_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind6435579915_closure, %struct.SinObj** %bind_app_anf_45bind6435579915_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind6435579915_arglist, %struct.SinObj** %bind_app_anf_45bind6435579915_newarg1loc, align 8
%bind_app_anf_45bind6435579915_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind6435579915_closure)
indirectbr i8* %bind_app_anf_45bind6435579915_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret16:
%bind_app_anf_45bind6435579915_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind6435579915_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435579915_oldfp, i64 1
%bind_app_anf_45bind6435579915_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435579915_slots_loc, align 8
%bind_app_anf_45bind6435579915_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind6435579915_slots_ptr to i64
%bind_app_anf_45bind6435579915_offset = mul i64 %bind_app_anf_45bind6435579915_slots, -1
%bind_app_anf_45bind6435579915_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435579915_oldfp, i64 %bind_app_anf_45bind6435579915_offset
store volatile %struct.SinObj** %bind_app_anf_45bind6435579915_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643557 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643557, %struct.SinObj** %main_local84_loc, align 8
; Starting prim
%primtmp_$assert6405979916_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local81_loc, align 8
%primtmp_$assert6405979916_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local84_loc, align 8
%primtmp_$assert6405979916_val = call %struct.SinObj* @prim_make_45vector(%struct.SinObj* %primtmp_$assert6405979916_arg_0, %struct.SinObj* %primtmp_$assert6405979916_arg_1)
store volatile %struct.SinObj* %primtmp_$assert6405979916_val, %struct.SinObj** %main_local85_loc, align 8
; Starting const-int
%datint_anf_45datum6435589917_val = call %struct.SinObj* @const_init_int(i64 1)
store volatile %struct.SinObj* %datint_anf_45datum6435589917_val, %struct.SinObj** %main_local86_loc, align 8
; Starting make-closure
%makeclo_anf_45bind6435599918_funcaddr = bitcast i8* blockaddress(@main, %clo646604) to i8*
%makeclo_anf_45bind6435599918_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind6435599918_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind6435599918_val, %struct.SinObj** %main_local87_loc, align 8
; Starting const-null
%datnull_args646528$anf_45bind643559$09919_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646528$anf_45bind643559$09919_val, %struct.SinObj** %main_local88_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind6435609920_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_anf_45bind6435609920_has_space, label %bind_app_anf_45bind6435609920_do_call, label %bind_app_anf_45bind6435609920_overflow_first
bind_app_anf_45bind6435609920_overflow_first:
%bind_app_anf_45bind6435609920_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind6435609920_overflow_underflow_addr, i64 176)
br label %bind_app_anf_45bind6435609920_do_call
bind_app_anf_45bind6435609920_do_call:
%bind_app_anf_45bind6435609920_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local87_loc, align 8
%bind_app_anf_45bind6435609920_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local88_loc, align 8
%bind_app_anf_45bind6435609920_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind6435609920_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435609920_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_anf_45bind6435609920_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind6435609920_return_loc = bitcast i8* blockaddress(@main, %main_ret17) to %struct.SinObj*
%bind_app_anf_45bind6435609920_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435609920_new_fp, i64 1
%bind_app_anf_45bind6435609920_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435609920_new_fp, i64 2
%bind_app_anf_45bind6435609920_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435609920_new_fp, i64 3
%bind_app_anf_45bind6435609920_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind6435609920_return_loc, %struct.SinObj** %bind_app_anf_45bind6435609920_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind6435609920_slotscast, %struct.SinObj** %bind_app_anf_45bind6435609920_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind6435609920_closure, %struct.SinObj** %bind_app_anf_45bind6435609920_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind6435609920_arglist, %struct.SinObj** %bind_app_anf_45bind6435609920_newarg1loc, align 8
%bind_app_anf_45bind6435609920_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind6435609920_closure)
indirectbr i8* %bind_app_anf_45bind6435609920_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret17:
%bind_app_anf_45bind6435609920_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind6435609920_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435609920_oldfp, i64 1
%bind_app_anf_45bind6435609920_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435609920_slots_loc, align 8
%bind_app_anf_45bind6435609920_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind6435609920_slots_ptr to i64
%bind_app_anf_45bind6435609920_offset = mul i64 %bind_app_anf_45bind6435609920_slots, -1
%bind_app_anf_45bind6435609920_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6435609920_oldfp, i64 %bind_app_anf_45bind6435609920_offset
store volatile %struct.SinObj** %bind_app_anf_45bind6435609920_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643560 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643560, %struct.SinObj** %main_local89_loc, align 8
; Starting prim
%primtmp_$amb6405999921_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local86_loc, align 8
%primtmp_$amb6405999921_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local89_loc, align 8
%primtmp_$amb6405999921_val = call %struct.SinObj* @prim_make_45vector(%struct.SinObj* %primtmp_$amb6405999921_arg_0, %struct.SinObj* %primtmp_$amb6405999921_arg_1)
store volatile %struct.SinObj* %primtmp_$amb6405999921_val, %struct.SinObj** %main_local90_loc, align 8
; Starting make-closure
%makeclo_anf_45bind6435619922_funcaddr = bitcast i8* blockaddress(@main, %clo646603) to i8*
%makeclo_anf_45bind6435619922_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind6435619922_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind6435619922_val, %struct.SinObj** %main_local91_loc, align 8
; Starting const-null
%datnull_args646529$anf_45bind643561$09923_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646529$anf_45bind643561$09923_val, %struct.SinObj** %main_local92_loc, align 8
; Starting direct clo-app
%bind_app_$letrec_45temp_45ccstack6306456406019924_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_$letrec_45temp_45ccstack6306456406019924_has_space, label %bind_app_$letrec_45temp_45ccstack6306456406019924_do_call, label %bind_app_$letrec_45temp_45ccstack6306456406019924_overflow_first
bind_app_$letrec_45temp_45ccstack6306456406019924_overflow_first:
%bind_app_$letrec_45temp_45ccstack6306456406019924_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_$letrec_45temp_45ccstack6306456406019924_overflow_underflow_addr, i64 176)
br label %bind_app_$letrec_45temp_45ccstack6306456406019924_do_call
bind_app_$letrec_45temp_45ccstack6306456406019924_do_call:
%bind_app_$letrec_45temp_45ccstack6306456406019924_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local91_loc, align 8
%bind_app_$letrec_45temp_45ccstack6306456406019924_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local92_loc, align 8
%bind_app_$letrec_45temp_45ccstack6306456406019924_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$letrec_45temp_45ccstack6306456406019924_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$letrec_45temp_45ccstack6306456406019924_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_$letrec_45temp_45ccstack6306456406019924_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_$letrec_45temp_45ccstack6306456406019924_return_loc = bitcast i8* blockaddress(@main, %main_ret18) to %struct.SinObj*
%bind_app_$letrec_45temp_45ccstack6306456406019924_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$letrec_45temp_45ccstack6306456406019924_new_fp, i64 1
%bind_app_$letrec_45temp_45ccstack6306456406019924_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$letrec_45temp_45ccstack6306456406019924_new_fp, i64 2
%bind_app_$letrec_45temp_45ccstack6306456406019924_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$letrec_45temp_45ccstack6306456406019924_new_fp, i64 3
%bind_app_$letrec_45temp_45ccstack6306456406019924_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_$letrec_45temp_45ccstack6306456406019924_return_loc, %struct.SinObj** %bind_app_$letrec_45temp_45ccstack6306456406019924_new_fp, align 8
store volatile %struct.SinObj* %bind_app_$letrec_45temp_45ccstack6306456406019924_slotscast, %struct.SinObj** %bind_app_$letrec_45temp_45ccstack6306456406019924_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_$letrec_45temp_45ccstack6306456406019924_closure, %struct.SinObj** %bind_app_$letrec_45temp_45ccstack6306456406019924_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_$letrec_45temp_45ccstack6306456406019924_arglist, %struct.SinObj** %bind_app_$letrec_45temp_45ccstack6306456406019924_newarg1loc, align 8
%bind_app_$letrec_45temp_45ccstack6306456406019924_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_$letrec_45temp_45ccstack6306456406019924_closure)
indirectbr i8* %bind_app_$letrec_45temp_45ccstack6306456406019924_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret18:
%bind_app_$letrec_45temp_45ccstack6306456406019924_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$letrec_45temp_45ccstack6306456406019924_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$letrec_45temp_45ccstack6306456406019924_oldfp, i64 1
%bind_app_$letrec_45temp_45ccstack6306456406019924_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_$letrec_45temp_45ccstack6306456406019924_slots_loc, align 8
%bind_app_$letrec_45temp_45ccstack6306456406019924_slots = ptrtoint %struct.SinObj* %bind_app_$letrec_45temp_45ccstack6306456406019924_slots_ptr to i64
%bind_app_$letrec_45temp_45ccstack6306456406019924_offset = mul i64 %bind_app_$letrec_45temp_45ccstack6306456406019924_slots, -1
%bind_app_$letrec_45temp_45ccstack6306456406019924_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$letrec_45temp_45ccstack6306456406019924_oldfp, i64 %bind_app_$letrec_45temp_45ccstack6306456406019924_offset
store volatile %struct.SinObj** %bind_app_$letrec_45temp_45ccstack6306456406019924_after_new_fp, %struct.SinObj*** @fpr, align 8
%$letrec_45temp_45ccstack630645640601 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %$letrec_45temp_45ccstack630645640601, %struct.SinObj** %main_local93_loc, align 8
; Starting make-closure
%makeclo_$letrec_45temp_45fail6306466406039925_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local62_loc, align 8
%makeclo_$letrec_45temp_45fail6306466406039925_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local75_loc, align 8
%makeclo_$letrec_45temp_45fail6306466406039925_funcaddr = bitcast i8* blockaddress(@main, %clo646602) to i8*
%makeclo_$letrec_45temp_45fail6306466406039925_val = call %struct.SinObj* @closure_alloc(i64 2, i8* %makeclo_$letrec_45temp_45fail6306466406039925_funcaddr)
call void @closure_place_freevar(%struct.SinObj* %makeclo_$letrec_45temp_45fail6306466406039925_val, %struct.SinObj* %makeclo_$letrec_45temp_45fail6306466406039925_arg_0, i64 0)
call void @closure_place_freevar(%struct.SinObj* %makeclo_$letrec_45temp_45fail6306466406039925_val, %struct.SinObj* %makeclo_$letrec_45temp_45fail6306466406039925_arg_1, i64 1)
store volatile %struct.SinObj* %makeclo_$letrec_45temp_45fail6306466406039925_val, %struct.SinObj** %main_local94_loc, align 8
; Starting make-closure
%makeclo_$letrec_45temp_45assert6306476406069926_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local80_loc, align 8
%makeclo_$letrec_45temp_45assert6306476406069926_funcaddr = bitcast i8* blockaddress(@main, %clo646601) to i8*
%makeclo_$letrec_45temp_45assert6306476406069926_val = call %struct.SinObj* @closure_alloc(i64 1, i8* %makeclo_$letrec_45temp_45assert6306476406069926_funcaddr)
call void @closure_place_freevar(%struct.SinObj* %makeclo_$letrec_45temp_45assert6306476406069926_val, %struct.SinObj* %makeclo_$letrec_45temp_45assert6306476406069926_arg_0, i64 0)
store volatile %struct.SinObj* %makeclo_$letrec_45temp_45assert6306476406069926_val, %struct.SinObj** %main_local95_loc, align 8
; Starting make-closure
%makeclo_$letrec_45temp_45amb6306486406089927_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local68_loc, align 8
%makeclo_$letrec_45temp_45amb6306486406089927_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local80_loc, align 8
%makeclo_$letrec_45temp_45amb6306486406089927_arg_2 = load volatile %struct.SinObj*, %struct.SinObj** %main_local75_loc, align 8
%makeclo_$letrec_45temp_45amb6306486406089927_arg_3 = load volatile %struct.SinObj*, %struct.SinObj** %main_local70_loc, align 8
%makeclo_$letrec_45temp_45amb6306486406089927_funcaddr = bitcast i8* blockaddress(@main, %clo646600) to i8*
%makeclo_$letrec_45temp_45amb6306486406089927_val = call %struct.SinObj* @closure_alloc(i64 4, i8* %makeclo_$letrec_45temp_45amb6306486406089927_funcaddr)
call void @closure_place_freevar(%struct.SinObj* %makeclo_$letrec_45temp_45amb6306486406089927_val, %struct.SinObj* %makeclo_$letrec_45temp_45amb6306486406089927_arg_0, i64 0)
call void @closure_place_freevar(%struct.SinObj* %makeclo_$letrec_45temp_45amb6306486406089927_val, %struct.SinObj* %makeclo_$letrec_45temp_45amb6306486406089927_arg_1, i64 1)
call void @closure_place_freevar(%struct.SinObj* %makeclo_$letrec_45temp_45amb6306486406089927_val, %struct.SinObj* %makeclo_$letrec_45temp_45amb6306486406089927_arg_2, i64 2)
call void @closure_place_freevar(%struct.SinObj* %makeclo_$letrec_45temp_45amb6306486406089927_val, %struct.SinObj* %makeclo_$letrec_45temp_45amb6306486406089927_arg_3, i64 3)
store volatile %struct.SinObj* %makeclo_$letrec_45temp_45amb6306486406089927_val, %struct.SinObj** %main_local96_loc, align 8
; Starting const-int
%datint_anf_45datum6435989928_val = call %struct.SinObj* @const_init_int(i64 0)
store volatile %struct.SinObj* %datint_anf_45datum6435989928_val, %struct.SinObj** %main_local97_loc, align 8
; Starting prim
%primtmp_$_37_37_956306566406209929_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local75_loc, align 8
%primtmp_$_37_37_956306566406209929_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local97_loc, align 8
%primtmp_$_37_37_956306566406209929_arg_2 = load volatile %struct.SinObj*, %struct.SinObj** %main_local93_loc, align 8
%primtmp_$_37_37_956306566406209929_val = call %struct.SinObj* @prim_vector_45set_33(%struct.SinObj* %primtmp_$_37_37_956306566406209929_arg_0, %struct.SinObj* %primtmp_$_37_37_956306566406209929_arg_1, %struct.SinObj* %primtmp_$_37_37_956306566406209929_arg_2)
store volatile %struct.SinObj* %primtmp_$_37_37_956306566406209929_val, %struct.SinObj** %main_local98_loc, align 8
; Starting const-int
%datint_anf_45datum6435999930_val = call %struct.SinObj* @const_init_int(i64 0)
store volatile %struct.SinObj* %datint_anf_45datum6435999930_val, %struct.SinObj** %main_local99_loc, align 8
; Starting prim
%primtmp_$_37_37_956306576406219931_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local80_loc, align 8
%primtmp_$_37_37_956306576406219931_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local99_loc, align 8
%primtmp_$_37_37_956306576406219931_arg_2 = load volatile %struct.SinObj*, %struct.SinObj** %main_local94_loc, align 8
%primtmp_$_37_37_956306576406219931_val = call %struct.SinObj* @prim_vector_45set_33(%struct.SinObj* %primtmp_$_37_37_956306576406219931_arg_0, %struct.SinObj* %primtmp_$_37_37_956306576406219931_arg_1, %struct.SinObj* %primtmp_$_37_37_956306576406219931_arg_2)
store volatile %struct.SinObj* %primtmp_$_37_37_956306576406219931_val, %struct.SinObj** %main_local100_loc, align 8
; Starting const-int
%datint_anf_45datum6436009932_val = call %struct.SinObj* @const_init_int(i64 0)
store volatile %struct.SinObj* %datint_anf_45datum6436009932_val, %struct.SinObj** %main_local101_loc, align 8
; Starting prim
%primtmp_$_37_37_956306586406229933_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local85_loc, align 8
%primtmp_$_37_37_956306586406229933_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local101_loc, align 8
%primtmp_$_37_37_956306586406229933_arg_2 = load volatile %struct.SinObj*, %struct.SinObj** %main_local95_loc, align 8
%primtmp_$_37_37_956306586406229933_val = call %struct.SinObj* @prim_vector_45set_33(%struct.SinObj* %primtmp_$_37_37_956306586406229933_arg_0, %struct.SinObj* %primtmp_$_37_37_956306586406229933_arg_1, %struct.SinObj* %primtmp_$_37_37_956306586406229933_arg_2)
store volatile %struct.SinObj* %primtmp_$_37_37_956306586406229933_val, %struct.SinObj** %main_local102_loc, align 8
; Starting const-int
%datint_anf_45datum6436019934_val = call %struct.SinObj* @const_init_int(i64 0)
store volatile %struct.SinObj* %datint_anf_45datum6436019934_val, %struct.SinObj** %main_local103_loc, align 8
; Starting prim
%primtmp_$_37_37_956306596406239935_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local90_loc, align 8
%primtmp_$_37_37_956306596406239935_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local103_loc, align 8
%primtmp_$_37_37_956306596406239935_arg_2 = load volatile %struct.SinObj*, %struct.SinObj** %main_local96_loc, align 8
%primtmp_$_37_37_956306596406239935_val = call %struct.SinObj* @prim_vector_45set_33(%struct.SinObj* %primtmp_$_37_37_956306596406239935_arg_0, %struct.SinObj* %primtmp_$_37_37_956306596406239935_arg_1, %struct.SinObj* %primtmp_$_37_37_956306596406239935_arg_2)
store volatile %struct.SinObj* %primtmp_$_37_37_956306596406239935_val, %struct.SinObj** %main_local104_loc, align 8
; Starting const-int
%datint_anf_45datum6436029936_val = call %struct.SinObj* @const_init_int(i64 0)
store volatile %struct.SinObj* %datint_anf_45datum6436029936_val, %struct.SinObj** %main_local105_loc, align 8
; Starting prim
%primtmp_anf_45bind6436039937_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local90_loc, align 8
%primtmp_anf_45bind6436039937_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local105_loc, align 8
%primtmp_anf_45bind6436039937_val = call %struct.SinObj* @prim_vector_45ref(%struct.SinObj* %primtmp_anf_45bind6436039937_arg_0, %struct.SinObj* %primtmp_anf_45bind6436039937_arg_1)
store volatile %struct.SinObj* %primtmp_anf_45bind6436039937_val, %struct.SinObj** %main_local106_loc, align 8
; Starting make-closure
%makeclo_anf_45bind6436049938_funcaddr = bitcast i8* blockaddress(@main, %clo646596) to i8*
%makeclo_anf_45bind6436049938_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind6436049938_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind6436049938_val, %struct.SinObj** %main_local107_loc, align 8
; Starting const-int
%datint_anf_45datum6436059939_val = call %struct.SinObj* @const_init_int(i64 2)
store volatile %struct.SinObj* %datint_anf_45datum6436059939_val, %struct.SinObj** %main_local108_loc, align 8
; Starting const-int
%datint_anf_45datum6436069940_val = call %struct.SinObj* @const_init_int(i64 3)
store volatile %struct.SinObj* %datint_anf_45datum6436069940_val, %struct.SinObj** %main_local109_loc, align 8
; Starting const-int
%datint_anf_45datum6436079941_val = call %struct.SinObj* @const_init_int(i64 4)
store volatile %struct.SinObj* %datint_anf_45datum6436079941_val, %struct.SinObj** %main_local110_loc, align 8
; Starting const-int
%datint_anf_45datum6436089942_val = call %struct.SinObj* @const_init_int(i64 5)
store volatile %struct.SinObj* %datint_anf_45datum6436089942_val, %struct.SinObj** %main_local111_loc, align 8
; Starting const-null
%datnull_args646544$anf_45bind643604$09943_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646544$anf_45bind643604$09943_val, %struct.SinObj** %main_local112_loc, align 8
; Starting prim
%primtmp_args646544$anf_45bind643604$19944_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local111_loc, align 8
%primtmp_args646544$anf_45bind643604$19944_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local112_loc, align 8
%primtmp_args646544$anf_45bind643604$19944_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646544$anf_45bind643604$19944_arg_0, %struct.SinObj* %primtmp_args646544$anf_45bind643604$19944_arg_1)
store volatile %struct.SinObj* %primtmp_args646544$anf_45bind643604$19944_val, %struct.SinObj** %main_local113_loc, align 8
; Starting prim
%primtmp_args646544$anf_45bind643604$29945_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local110_loc, align 8
%primtmp_args646544$anf_45bind643604$29945_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local113_loc, align 8
%primtmp_args646544$anf_45bind643604$29945_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646544$anf_45bind643604$29945_arg_0, %struct.SinObj* %primtmp_args646544$anf_45bind643604$29945_arg_1)
store volatile %struct.SinObj* %primtmp_args646544$anf_45bind643604$29945_val, %struct.SinObj** %main_local114_loc, align 8
; Starting prim
%primtmp_args646544$anf_45bind643604$39946_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local109_loc, align 8
%primtmp_args646544$anf_45bind643604$39946_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local114_loc, align 8
%primtmp_args646544$anf_45bind643604$39946_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646544$anf_45bind643604$39946_arg_0, %struct.SinObj* %primtmp_args646544$anf_45bind643604$39946_arg_1)
store volatile %struct.SinObj* %primtmp_args646544$anf_45bind643604$39946_val, %struct.SinObj** %main_local115_loc, align 8
; Starting prim
%primtmp_args646544$anf_45bind643604$49947_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local108_loc, align 8
%primtmp_args646544$anf_45bind643604$49947_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local115_loc, align 8
%primtmp_args646544$anf_45bind643604$49947_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646544$anf_45bind643604$49947_arg_0, %struct.SinObj* %primtmp_args646544$anf_45bind643604$49947_arg_1)
store volatile %struct.SinObj* %primtmp_args646544$anf_45bind643604$49947_val, %struct.SinObj** %main_local116_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind6436099948_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_anf_45bind6436099948_has_space, label %bind_app_anf_45bind6436099948_do_call, label %bind_app_anf_45bind6436099948_overflow_first
bind_app_anf_45bind6436099948_overflow_first:
%bind_app_anf_45bind6436099948_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind6436099948_overflow_underflow_addr, i64 176)
br label %bind_app_anf_45bind6436099948_do_call
bind_app_anf_45bind6436099948_do_call:
%bind_app_anf_45bind6436099948_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local107_loc, align 8
%bind_app_anf_45bind6436099948_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local116_loc, align 8
%bind_app_anf_45bind6436099948_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind6436099948_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6436099948_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_anf_45bind6436099948_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind6436099948_return_loc = bitcast i8* blockaddress(@main, %main_ret19) to %struct.SinObj*
%bind_app_anf_45bind6436099948_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6436099948_new_fp, i64 1
%bind_app_anf_45bind6436099948_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6436099948_new_fp, i64 2
%bind_app_anf_45bind6436099948_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6436099948_new_fp, i64 3
%bind_app_anf_45bind6436099948_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind6436099948_return_loc, %struct.SinObj** %bind_app_anf_45bind6436099948_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind6436099948_slotscast, %struct.SinObj** %bind_app_anf_45bind6436099948_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind6436099948_closure, %struct.SinObj** %bind_app_anf_45bind6436099948_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind6436099948_arglist, %struct.SinObj** %bind_app_anf_45bind6436099948_newarg1loc, align 8
%bind_app_anf_45bind6436099948_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind6436099948_closure)
indirectbr i8* %bind_app_anf_45bind6436099948_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret19:
%bind_app_anf_45bind6436099948_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind6436099948_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6436099948_oldfp, i64 1
%bind_app_anf_45bind6436099948_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6436099948_slots_loc, align 8
%bind_app_anf_45bind6436099948_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind6436099948_slots_ptr to i64
%bind_app_anf_45bind6436099948_offset = mul i64 %bind_app_anf_45bind6436099948_slots, -1
%bind_app_anf_45bind6436099948_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6436099948_oldfp, i64 %bind_app_anf_45bind6436099948_offset
store volatile %struct.SinObj** %bind_app_anf_45bind6436099948_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643609 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643609, %struct.SinObj** %main_local117_loc, align 8
; Starting const-null
%datnull_args646545$anf_45bind643603$09949_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646545$anf_45bind643603$09949_val, %struct.SinObj** %main_local118_loc, align 8
; Starting prim
%primtmp_args646545$anf_45bind643603$19950_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local117_loc, align 8
%primtmp_args646545$anf_45bind643603$19950_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local118_loc, align 8
%primtmp_args646545$anf_45bind643603$19950_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646545$anf_45bind643603$19950_arg_0, %struct.SinObj* %primtmp_args646545$anf_45bind643603$19950_arg_1)
store volatile %struct.SinObj* %primtmp_args646545$anf_45bind643603$19950_val, %struct.SinObj** %main_local119_loc, align 8
; Starting direct clo-app
%bind_app_$a6406249951_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_$a6406249951_has_space, label %bind_app_$a6406249951_do_call, label %bind_app_$a6406249951_overflow_first
bind_app_$a6406249951_overflow_first:
%bind_app_$a6406249951_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_$a6406249951_overflow_underflow_addr, i64 176)
br label %bind_app_$a6406249951_do_call
bind_app_$a6406249951_do_call:
%bind_app_$a6406249951_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local106_loc, align 8
%bind_app_$a6406249951_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local119_loc, align 8
%bind_app_$a6406249951_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$a6406249951_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$a6406249951_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_$a6406249951_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_$a6406249951_return_loc = bitcast i8* blockaddress(@main, %main_ret20) to %struct.SinObj*
%bind_app_$a6406249951_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$a6406249951_new_fp, i64 1
%bind_app_$a6406249951_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$a6406249951_new_fp, i64 2
%bind_app_$a6406249951_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$a6406249951_new_fp, i64 3
%bind_app_$a6406249951_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_$a6406249951_return_loc, %struct.SinObj** %bind_app_$a6406249951_new_fp, align 8
store volatile %struct.SinObj* %bind_app_$a6406249951_slotscast, %struct.SinObj** %bind_app_$a6406249951_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_$a6406249951_closure, %struct.SinObj** %bind_app_$a6406249951_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_$a6406249951_arglist, %struct.SinObj** %bind_app_$a6406249951_newarg1loc, align 8
%bind_app_$a6406249951_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_$a6406249951_closure)
indirectbr i8* %bind_app_$a6406249951_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret20:
%bind_app_$a6406249951_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$a6406249951_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$a6406249951_oldfp, i64 1
%bind_app_$a6406249951_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_$a6406249951_slots_loc, align 8
%bind_app_$a6406249951_slots = ptrtoint %struct.SinObj* %bind_app_$a6406249951_slots_ptr to i64
%bind_app_$a6406249951_offset = mul i64 %bind_app_$a6406249951_slots, -1
%bind_app_$a6406249951_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$a6406249951_oldfp, i64 %bind_app_$a6406249951_offset
store volatile %struct.SinObj** %bind_app_$a6406249951_after_new_fp, %struct.SinObj*** @fpr, align 8
%$a640624 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %$a640624, %struct.SinObj** %main_local120_loc, align 8
; Starting const-int
%datint_anf_45datum6436109952_val = call %struct.SinObj* @const_init_int(i64 0)
store volatile %struct.SinObj* %datint_anf_45datum6436109952_val, %struct.SinObj** %main_local121_loc, align 8
; Starting prim
%primtmp_anf_45bind6436119953_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local90_loc, align 8
%primtmp_anf_45bind6436119953_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local121_loc, align 8
%primtmp_anf_45bind6436119953_val = call %struct.SinObj* @prim_vector_45ref(%struct.SinObj* %primtmp_anf_45bind6436119953_arg_0, %struct.SinObj* %primtmp_anf_45bind6436119953_arg_1)
store volatile %struct.SinObj* %primtmp_anf_45bind6436119953_val, %struct.SinObj** %main_local122_loc, align 8
; Starting make-closure
%makeclo_anf_45bind6436129954_funcaddr = bitcast i8* blockaddress(@main, %clo646595) to i8*
%makeclo_anf_45bind6436129954_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind6436129954_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind6436129954_val, %struct.SinObj** %main_local123_loc, align 8
; Starting const-int
%datint_anf_45datum6436139955_val = call %struct.SinObj* @const_init_int(i64 2)
store volatile %struct.SinObj* %datint_anf_45datum6436139955_val, %struct.SinObj** %main_local124_loc, align 8
; Starting const-int
%datint_anf_45datum6436149956_val = call %struct.SinObj* @const_init_int(i64 3)
store volatile %struct.SinObj* %datint_anf_45datum6436149956_val, %struct.SinObj** %main_local125_loc, align 8
; Starting const-int
%datint_anf_45datum6436159957_val = call %struct.SinObj* @const_init_int(i64 4)
store volatile %struct.SinObj* %datint_anf_45datum6436159957_val, %struct.SinObj** %main_local126_loc, align 8
; Starting const-int
%datint_anf_45datum6436169958_val = call %struct.SinObj* @const_init_int(i64 5)
store volatile %struct.SinObj* %datint_anf_45datum6436169958_val, %struct.SinObj** %main_local127_loc, align 8
; Starting const-int
%datint_anf_45datum6436179959_val = call %struct.SinObj* @const_init_int(i64 6)
store volatile %struct.SinObj* %datint_anf_45datum6436179959_val, %struct.SinObj** %main_local128_loc, align 8
; Starting const-null
%datnull_args646546$anf_45bind643612$09960_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646546$anf_45bind643612$09960_val, %struct.SinObj** %main_local129_loc, align 8
; Starting prim
%primtmp_args646546$anf_45bind643612$19961_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local128_loc, align 8
%primtmp_args646546$anf_45bind643612$19961_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local129_loc, align 8
%primtmp_args646546$anf_45bind643612$19961_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646546$anf_45bind643612$19961_arg_0, %struct.SinObj* %primtmp_args646546$anf_45bind643612$19961_arg_1)
store volatile %struct.SinObj* %primtmp_args646546$anf_45bind643612$19961_val, %struct.SinObj** %main_local130_loc, align 8
; Starting prim
%primtmp_args646546$anf_45bind643612$29962_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local127_loc, align 8
%primtmp_args646546$anf_45bind643612$29962_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local130_loc, align 8
%primtmp_args646546$anf_45bind643612$29962_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646546$anf_45bind643612$29962_arg_0, %struct.SinObj* %primtmp_args646546$anf_45bind643612$29962_arg_1)
store volatile %struct.SinObj* %primtmp_args646546$anf_45bind643612$29962_val, %struct.SinObj** %main_local131_loc, align 8
; Starting prim
%primtmp_args646546$anf_45bind643612$39963_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local126_loc, align 8
%primtmp_args646546$anf_45bind643612$39963_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local131_loc, align 8
%primtmp_args646546$anf_45bind643612$39963_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646546$anf_45bind643612$39963_arg_0, %struct.SinObj* %primtmp_args646546$anf_45bind643612$39963_arg_1)
store volatile %struct.SinObj* %primtmp_args646546$anf_45bind643612$39963_val, %struct.SinObj** %main_local132_loc, align 8
; Starting prim
%primtmp_args646546$anf_45bind643612$49964_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local125_loc, align 8
%primtmp_args646546$anf_45bind643612$49964_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local132_loc, align 8
%primtmp_args646546$anf_45bind643612$49964_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646546$anf_45bind643612$49964_arg_0, %struct.SinObj* %primtmp_args646546$anf_45bind643612$49964_arg_1)
store volatile %struct.SinObj* %primtmp_args646546$anf_45bind643612$49964_val, %struct.SinObj** %main_local133_loc, align 8
; Starting prim
%primtmp_args646546$anf_45bind643612$59965_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local124_loc, align 8
%primtmp_args646546$anf_45bind643612$59965_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local133_loc, align 8
%primtmp_args646546$anf_45bind643612$59965_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646546$anf_45bind643612$59965_arg_0, %struct.SinObj* %primtmp_args646546$anf_45bind643612$59965_arg_1)
store volatile %struct.SinObj* %primtmp_args646546$anf_45bind643612$59965_val, %struct.SinObj** %main_local134_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind6436189966_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_anf_45bind6436189966_has_space, label %bind_app_anf_45bind6436189966_do_call, label %bind_app_anf_45bind6436189966_overflow_first
bind_app_anf_45bind6436189966_overflow_first:
%bind_app_anf_45bind6436189966_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind6436189966_overflow_underflow_addr, i64 176)
br label %bind_app_anf_45bind6436189966_do_call
bind_app_anf_45bind6436189966_do_call:
%bind_app_anf_45bind6436189966_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local123_loc, align 8
%bind_app_anf_45bind6436189966_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local134_loc, align 8
%bind_app_anf_45bind6436189966_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind6436189966_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6436189966_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_anf_45bind6436189966_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind6436189966_return_loc = bitcast i8* blockaddress(@main, %main_ret21) to %struct.SinObj*
%bind_app_anf_45bind6436189966_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6436189966_new_fp, i64 1
%bind_app_anf_45bind6436189966_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6436189966_new_fp, i64 2
%bind_app_anf_45bind6436189966_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6436189966_new_fp, i64 3
%bind_app_anf_45bind6436189966_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind6436189966_return_loc, %struct.SinObj** %bind_app_anf_45bind6436189966_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind6436189966_slotscast, %struct.SinObj** %bind_app_anf_45bind6436189966_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind6436189966_closure, %struct.SinObj** %bind_app_anf_45bind6436189966_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind6436189966_arglist, %struct.SinObj** %bind_app_anf_45bind6436189966_newarg1loc, align 8
%bind_app_anf_45bind6436189966_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind6436189966_closure)
indirectbr i8* %bind_app_anf_45bind6436189966_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret21:
%bind_app_anf_45bind6436189966_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind6436189966_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6436189966_oldfp, i64 1
%bind_app_anf_45bind6436189966_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6436189966_slots_loc, align 8
%bind_app_anf_45bind6436189966_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind6436189966_slots_ptr to i64
%bind_app_anf_45bind6436189966_offset = mul i64 %bind_app_anf_45bind6436189966_slots, -1
%bind_app_anf_45bind6436189966_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6436189966_oldfp, i64 %bind_app_anf_45bind6436189966_offset
store volatile %struct.SinObj** %bind_app_anf_45bind6436189966_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643618 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643618, %struct.SinObj** %main_local135_loc, align 8
; Starting const-null
%datnull_args646547$anf_45bind643611$09967_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646547$anf_45bind643611$09967_val, %struct.SinObj** %main_local136_loc, align 8
; Starting prim
%primtmp_args646547$anf_45bind643611$19968_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local135_loc, align 8
%primtmp_args646547$anf_45bind643611$19968_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local136_loc, align 8
%primtmp_args646547$anf_45bind643611$19968_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646547$anf_45bind643611$19968_arg_0, %struct.SinObj* %primtmp_args646547$anf_45bind643611$19968_arg_1)
store volatile %struct.SinObj* %primtmp_args646547$anf_45bind643611$19968_val, %struct.SinObj** %main_local137_loc, align 8
; Starting direct clo-app
%bind_app_$b6406269969_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_$b6406269969_has_space, label %bind_app_$b6406269969_do_call, label %bind_app_$b6406269969_overflow_first
bind_app_$b6406269969_overflow_first:
%bind_app_$b6406269969_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_$b6406269969_overflow_underflow_addr, i64 176)
br label %bind_app_$b6406269969_do_call
bind_app_$b6406269969_do_call:
%bind_app_$b6406269969_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local122_loc, align 8
%bind_app_$b6406269969_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local137_loc, align 8
%bind_app_$b6406269969_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$b6406269969_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$b6406269969_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_$b6406269969_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_$b6406269969_return_loc = bitcast i8* blockaddress(@main, %main_ret22) to %struct.SinObj*
%bind_app_$b6406269969_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$b6406269969_new_fp, i64 1
%bind_app_$b6406269969_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$b6406269969_new_fp, i64 2
%bind_app_$b6406269969_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$b6406269969_new_fp, i64 3
%bind_app_$b6406269969_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_$b6406269969_return_loc, %struct.SinObj** %bind_app_$b6406269969_new_fp, align 8
store volatile %struct.SinObj* %bind_app_$b6406269969_slotscast, %struct.SinObj** %bind_app_$b6406269969_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_$b6406269969_closure, %struct.SinObj** %bind_app_$b6406269969_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_$b6406269969_arglist, %struct.SinObj** %bind_app_$b6406269969_newarg1loc, align 8
%bind_app_$b6406269969_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_$b6406269969_closure)
indirectbr i8* %bind_app_$b6406269969_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret22:
%bind_app_$b6406269969_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$b6406269969_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$b6406269969_oldfp, i64 1
%bind_app_$b6406269969_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_$b6406269969_slots_loc, align 8
%bind_app_$b6406269969_slots = ptrtoint %struct.SinObj* %bind_app_$b6406269969_slots_ptr to i64
%bind_app_$b6406269969_offset = mul i64 %bind_app_$b6406269969_slots, -1
%bind_app_$b6406269969_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$b6406269969_oldfp, i64 %bind_app_$b6406269969_offset
store volatile %struct.SinObj** %bind_app_$b6406269969_after_new_fp, %struct.SinObj*** @fpr, align 8
%$b640626 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %$b640626, %struct.SinObj** %main_local138_loc, align 8
; Starting const-int
%datint_anf_45datum6436199970_val = call %struct.SinObj* @const_init_int(i64 0)
store volatile %struct.SinObj* %datint_anf_45datum6436199970_val, %struct.SinObj** %main_local139_loc, align 8
; Starting prim
%primtmp_anf_45bind6436209971_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local90_loc, align 8
%primtmp_anf_45bind6436209971_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local139_loc, align 8
%primtmp_anf_45bind6436209971_val = call %struct.SinObj* @prim_vector_45ref(%struct.SinObj* %primtmp_anf_45bind6436209971_arg_0, %struct.SinObj* %primtmp_anf_45bind6436209971_arg_1)
store volatile %struct.SinObj* %primtmp_anf_45bind6436209971_val, %struct.SinObj** %main_local140_loc, align 8
; Starting make-closure
%makeclo_anf_45bind6436219972_funcaddr = bitcast i8* blockaddress(@main, %clo646594) to i8*
%makeclo_anf_45bind6436219972_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind6436219972_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind6436219972_val, %struct.SinObj** %main_local141_loc, align 8
; Starting const-int
%datint_anf_45datum6436229973_val = call %struct.SinObj* @const_init_int(i64 2)
store volatile %struct.SinObj* %datint_anf_45datum6436229973_val, %struct.SinObj** %main_local142_loc, align 8
; Starting const-int
%datint_anf_45datum6436239974_val = call %struct.SinObj* @const_init_int(i64 3)
store volatile %struct.SinObj* %datint_anf_45datum6436239974_val, %struct.SinObj** %main_local143_loc, align 8
; Starting const-int
%datint_anf_45datum6436249975_val = call %struct.SinObj* @const_init_int(i64 4)
store volatile %struct.SinObj* %datint_anf_45datum6436249975_val, %struct.SinObj** %main_local144_loc, align 8
; Starting const-int
%datint_anf_45datum6436259976_val = call %struct.SinObj* @const_init_int(i64 5)
store volatile %struct.SinObj* %datint_anf_45datum6436259976_val, %struct.SinObj** %main_local145_loc, align 8
; Starting const-null
%datnull_args646548$anf_45bind643621$09977_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646548$anf_45bind643621$09977_val, %struct.SinObj** %main_local146_loc, align 8
; Starting prim
%primtmp_args646548$anf_45bind643621$19978_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local145_loc, align 8
%primtmp_args646548$anf_45bind643621$19978_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local146_loc, align 8
%primtmp_args646548$anf_45bind643621$19978_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646548$anf_45bind643621$19978_arg_0, %struct.SinObj* %primtmp_args646548$anf_45bind643621$19978_arg_1)
store volatile %struct.SinObj* %primtmp_args646548$anf_45bind643621$19978_val, %struct.SinObj** %main_local147_loc, align 8
; Starting prim
%primtmp_args646548$anf_45bind643621$29979_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local144_loc, align 8
%primtmp_args646548$anf_45bind643621$29979_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local147_loc, align 8
%primtmp_args646548$anf_45bind643621$29979_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646548$anf_45bind643621$29979_arg_0, %struct.SinObj* %primtmp_args646548$anf_45bind643621$29979_arg_1)
store volatile %struct.SinObj* %primtmp_args646548$anf_45bind643621$29979_val, %struct.SinObj** %main_local148_loc, align 8
; Starting prim
%primtmp_args646548$anf_45bind643621$39980_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local143_loc, align 8
%primtmp_args646548$anf_45bind643621$39980_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local148_loc, align 8
%primtmp_args646548$anf_45bind643621$39980_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646548$anf_45bind643621$39980_arg_0, %struct.SinObj* %primtmp_args646548$anf_45bind643621$39980_arg_1)
store volatile %struct.SinObj* %primtmp_args646548$anf_45bind643621$39980_val, %struct.SinObj** %main_local149_loc, align 8
; Starting prim
%primtmp_args646548$anf_45bind643621$49981_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local142_loc, align 8
%primtmp_args646548$anf_45bind643621$49981_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local149_loc, align 8
%primtmp_args646548$anf_45bind643621$49981_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646548$anf_45bind643621$49981_arg_0, %struct.SinObj* %primtmp_args646548$anf_45bind643621$49981_arg_1)
store volatile %struct.SinObj* %primtmp_args646548$anf_45bind643621$49981_val, %struct.SinObj** %main_local150_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind6436269982_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_anf_45bind6436269982_has_space, label %bind_app_anf_45bind6436269982_do_call, label %bind_app_anf_45bind6436269982_overflow_first
bind_app_anf_45bind6436269982_overflow_first:
%bind_app_anf_45bind6436269982_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind6436269982_overflow_underflow_addr, i64 176)
br label %bind_app_anf_45bind6436269982_do_call
bind_app_anf_45bind6436269982_do_call:
%bind_app_anf_45bind6436269982_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local141_loc, align 8
%bind_app_anf_45bind6436269982_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local150_loc, align 8
%bind_app_anf_45bind6436269982_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind6436269982_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6436269982_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_anf_45bind6436269982_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind6436269982_return_loc = bitcast i8* blockaddress(@main, %main_ret23) to %struct.SinObj*
%bind_app_anf_45bind6436269982_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6436269982_new_fp, i64 1
%bind_app_anf_45bind6436269982_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6436269982_new_fp, i64 2
%bind_app_anf_45bind6436269982_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6436269982_new_fp, i64 3
%bind_app_anf_45bind6436269982_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind6436269982_return_loc, %struct.SinObj** %bind_app_anf_45bind6436269982_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind6436269982_slotscast, %struct.SinObj** %bind_app_anf_45bind6436269982_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind6436269982_closure, %struct.SinObj** %bind_app_anf_45bind6436269982_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind6436269982_arglist, %struct.SinObj** %bind_app_anf_45bind6436269982_newarg1loc, align 8
%bind_app_anf_45bind6436269982_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind6436269982_closure)
indirectbr i8* %bind_app_anf_45bind6436269982_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret23:
%bind_app_anf_45bind6436269982_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind6436269982_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6436269982_oldfp, i64 1
%bind_app_anf_45bind6436269982_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6436269982_slots_loc, align 8
%bind_app_anf_45bind6436269982_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind6436269982_slots_ptr to i64
%bind_app_anf_45bind6436269982_offset = mul i64 %bind_app_anf_45bind6436269982_slots, -1
%bind_app_anf_45bind6436269982_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind6436269982_oldfp, i64 %bind_app_anf_45bind6436269982_offset
store volatile %struct.SinObj** %bind_app_anf_45bind6436269982_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643626 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643626, %struct.SinObj** %main_local151_loc, align 8
; Starting const-null
%datnull_args646549$anf_45bind643620$09983_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646549$anf_45bind643620$09983_val, %struct.SinObj** %main_local152_loc, align 8
; Starting prim
%primtmp_args646549$anf_45bind643620$19984_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local151_loc, align 8
%primtmp_args646549$anf_45bind643620$19984_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local152_loc, align 8
%primtmp_args646549$anf_45bind643620$19984_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646549$anf_45bind643620$19984_arg_0, %struct.SinObj* %primtmp_args646549$anf_45bind643620$19984_arg_1)
store volatile %struct.SinObj* %primtmp_args646549$anf_45bind643620$19984_val, %struct.SinObj** %main_local153_loc, align 8
; Starting direct clo-app
%bind_app_$c6406289985_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_$c6406289985_has_space, label %bind_app_$c6406289985_do_call, label %bind_app_$c6406289985_overflow_first
bind_app_$c6406289985_overflow_first:
%bind_app_$c6406289985_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_$c6406289985_overflow_underflow_addr, i64 176)
br label %bind_app_$c6406289985_do_call
bind_app_$c6406289985_do_call:
%bind_app_$c6406289985_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local140_loc, align 8
%bind_app_$c6406289985_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local153_loc, align 8
%bind_app_$c6406289985_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$c6406289985_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$c6406289985_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_$c6406289985_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_$c6406289985_return_loc = bitcast i8* blockaddress(@main, %main_ret24) to %struct.SinObj*
%bind_app_$c6406289985_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$c6406289985_new_fp, i64 1
%bind_app_$c6406289985_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$c6406289985_new_fp, i64 2
%bind_app_$c6406289985_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$c6406289985_new_fp, i64 3
%bind_app_$c6406289985_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_$c6406289985_return_loc, %struct.SinObj** %bind_app_$c6406289985_new_fp, align 8
store volatile %struct.SinObj* %bind_app_$c6406289985_slotscast, %struct.SinObj** %bind_app_$c6406289985_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_$c6406289985_closure, %struct.SinObj** %bind_app_$c6406289985_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_$c6406289985_arglist, %struct.SinObj** %bind_app_$c6406289985_newarg1loc, align 8
%bind_app_$c6406289985_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_$c6406289985_closure)
indirectbr i8* %bind_app_$c6406289985_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret24:
%bind_app_$c6406289985_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$c6406289985_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$c6406289985_oldfp, i64 1
%bind_app_$c6406289985_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_$c6406289985_slots_loc, align 8
%bind_app_$c6406289985_slots = ptrtoint %struct.SinObj* %bind_app_$c6406289985_slots_ptr to i64
%bind_app_$c6406289985_offset = mul i64 %bind_app_$c6406289985_slots, -1
%bind_app_$c6406289985_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$c6406289985_oldfp, i64 %bind_app_$c6406289985_offset
store volatile %struct.SinObj** %bind_app_$c6406289985_after_new_fp, %struct.SinObj*** @fpr, align 8
%$c640628 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %$c640628, %struct.SinObj** %main_local154_loc, align 8
; Starting const-int
%datint_anf_45datum6436279986_val = call %struct.SinObj* @const_init_int(i64 0)
store volatile %struct.SinObj* %datint_anf_45datum6436279986_val, %struct.SinObj** %main_local155_loc, align 8
; Starting prim
%primtmp_anf_45bind6436289987_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local85_loc, align 8
%primtmp_anf_45bind6436289987_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local155_loc, align 8
%primtmp_anf_45bind6436289987_val = call %struct.SinObj* @prim_vector_45ref(%struct.SinObj* %primtmp_anf_45bind6436289987_arg_0, %struct.SinObj* %primtmp_anf_45bind6436289987_arg_1)
store volatile %struct.SinObj* %primtmp_anf_45bind6436289987_val, %struct.SinObj** %main_local156_loc, align 8
; Starting prim
%primtmp_anf_45bind6436299988_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local120_loc, align 8
%primtmp_anf_45bind6436299988_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local120_loc, align 8
%primtmp_anf_45bind6436299988_val = call %struct.SinObj* @prim__42(%struct.SinObj* %primtmp_anf_45bind6436299988_arg_0, %struct.SinObj* %primtmp_anf_45bind6436299988_arg_1)
store volatile %struct.SinObj* %primtmp_anf_45bind6436299988_val, %struct.SinObj** %main_local157_loc, align 8
; Starting prim
%primtmp_anf_45bind6436309989_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local138_loc, align 8
%primtmp_anf_45bind6436309989_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local138_loc, align 8
%primtmp_anf_45bind6436309989_val = call %struct.SinObj* @prim__42(%struct.SinObj* %primtmp_anf_45bind6436309989_arg_0, %struct.SinObj* %primtmp_anf_45bind6436309989_arg_1)
store volatile %struct.SinObj* %primtmp_anf_45bind6436309989_val, %struct.SinObj** %main_local158_loc, align 8
; Starting prim
%primtmp_anf_45bind6436319990_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local157_loc, align 8
%primtmp_anf_45bind6436319990_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local158_loc, align 8
%primtmp_anf_45bind6436319990_val = call %struct.SinObj* @prim__43(%struct.SinObj* %primtmp_anf_45bind6436319990_arg_0, %struct.SinObj* %primtmp_anf_45bind6436319990_arg_1)
store volatile %struct.SinObj* %primtmp_anf_45bind6436319990_val, %struct.SinObj** %main_local159_loc, align 8
; Starting prim
%primtmp_anf_45bind6436329991_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local154_loc, align 8
%primtmp_anf_45bind6436329991_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local154_loc, align 8
%primtmp_anf_45bind6436329991_val = call %struct.SinObj* @prim__42(%struct.SinObj* %primtmp_anf_45bind6436329991_arg_0, %struct.SinObj* %primtmp_anf_45bind6436329991_arg_1)
store volatile %struct.SinObj* %primtmp_anf_45bind6436329991_val, %struct.SinObj** %main_local160_loc, align 8
; Starting prim
%primtmp_anf_45bind6436339992_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local159_loc, align 8
%primtmp_anf_45bind6436339992_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local160_loc, align 8
%primtmp_anf_45bind6436339992_val = call %struct.SinObj* @prim__61(%struct.SinObj* %primtmp_anf_45bind6436339992_arg_0, %struct.SinObj* %primtmp_anf_45bind6436339992_arg_1)
store volatile %struct.SinObj* %primtmp_anf_45bind6436339992_val, %struct.SinObj** %main_local161_loc, align 8
; Starting const-null
%datnull_args646550$anf_45bind643628$09993_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646550$anf_45bind643628$09993_val, %struct.SinObj** %main_local162_loc, align 8
; Starting prim
%primtmp_args646550$anf_45bind643628$19994_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local161_loc, align 8
%primtmp_args646550$anf_45bind643628$19994_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local162_loc, align 8
%primtmp_args646550$anf_45bind643628$19994_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646550$anf_45bind643628$19994_arg_0, %struct.SinObj* %primtmp_args646550$anf_45bind643628$19994_arg_1)
store volatile %struct.SinObj* %primtmp_args646550$anf_45bind643628$19994_val, %struct.SinObj** %main_local163_loc, align 8
; Starting direct clo-app
%bind_app_$_37_37_956306606406309995_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 176)
br i1 %bind_app_$_37_37_956306606406309995_has_space, label %bind_app_$_37_37_956306606406309995_do_call, label %bind_app_$_37_37_956306606406309995_overflow_first
bind_app_$_37_37_956306606406309995_overflow_first:
%bind_app_$_37_37_956306606406309995_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_$_37_37_956306606406309995_overflow_underflow_addr, i64 176)
br label %bind_app_$_37_37_956306606406309995_do_call
bind_app_$_37_37_956306606406309995_do_call:
%bind_app_$_37_37_956306606406309995_closure = load volatile %struct.SinObj*, %struct.SinObj** %main_local156_loc, align 8
%bind_app_$_37_37_956306606406309995_arglist = load volatile %struct.SinObj*, %struct.SinObj** %main_local163_loc, align 8
%bind_app_$_37_37_956306606406309995_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$_37_37_956306606406309995_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37_956306606406309995_cur_fp, i64 176
store volatile %struct.SinObj** %bind_app_$_37_37_956306606406309995_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_$_37_37_956306606406309995_return_loc = bitcast i8* blockaddress(@main, %main_ret25) to %struct.SinObj*
%bind_app_$_37_37_956306606406309995_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37_956306606406309995_new_fp, i64 1
%bind_app_$_37_37_956306606406309995_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37_956306606406309995_new_fp, i64 2
%bind_app_$_37_37_956306606406309995_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37_956306606406309995_new_fp, i64 3
%bind_app_$_37_37_956306606406309995_slotscast = inttoptr i64 176 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_$_37_37_956306606406309995_return_loc, %struct.SinObj** %bind_app_$_37_37_956306606406309995_new_fp, align 8
store volatile %struct.SinObj* %bind_app_$_37_37_956306606406309995_slotscast, %struct.SinObj** %bind_app_$_37_37_956306606406309995_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_$_37_37_956306606406309995_closure, %struct.SinObj** %bind_app_$_37_37_956306606406309995_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_$_37_37_956306606406309995_arglist, %struct.SinObj** %bind_app_$_37_37_956306606406309995_newarg1loc, align 8
%bind_app_$_37_37_956306606406309995_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_$_37_37_956306606406309995_closure)
indirectbr i8* %bind_app_$_37_37_956306606406309995_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
main_ret25:
%bind_app_$_37_37_956306606406309995_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$_37_37_956306606406309995_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37_956306606406309995_oldfp, i64 1
%bind_app_$_37_37_956306606406309995_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37_956306606406309995_slots_loc, align 8
%bind_app_$_37_37_956306606406309995_slots = ptrtoint %struct.SinObj* %bind_app_$_37_37_956306606406309995_slots_ptr to i64
%bind_app_$_37_37_956306606406309995_offset = mul i64 %bind_app_$_37_37_956306606406309995_slots, -1
%bind_app_$_37_37_956306606406309995_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$_37_37_956306606406309995_oldfp, i64 %bind_app_$_37_37_956306606406309995_offset
store volatile %struct.SinObj** %bind_app_$_37_37_956306606406309995_after_new_fp, %struct.SinObj*** @fpr, align 8
%$_37_37_95630660640630 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %$_37_37_95630660640630, %struct.SinObj** %main_local164_loc, align 8
; Starting make-closure
%makeclo_anf_45bind6436349996_funcaddr = bitcast i8* blockaddress(@main, %clo646593) to i8*
%makeclo_anf_45bind6436349996_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind6436349996_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind6436349996_val, %struct.SinObj** %main_local165_loc, align 8
; Starting const-global
%datsym_anf_45datum6436359997_rawglobal = getelementptr inbounds [9 x i8], [9 x i8]* @.sym.global9824, i64 0, i64 0
%datsym_anf_45datum6436359997_val = call %struct.SinObj* @const_init_symbol(i8* %datsym_anf_45datum6436359997_rawglobal)
store volatile %struct.SinObj* %datsym_anf_45datum6436359997_val, %struct.SinObj** %main_local166_loc, align 8
; Starting const-null
%datnull_args646551$anf_45bind643634$09998_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646551$anf_45bind643634$09998_val, %struct.SinObj** %main_local167_loc, align 8
; Starting prim
%primtmp_args646551$anf_45bind643634$19999_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local154_loc, align 8
%primtmp_args646551$anf_45bind643634$19999_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local167_loc, align 8
%primtmp_args646551$anf_45bind643634$19999_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646551$anf_45bind643634$19999_arg_0, %struct.SinObj* %primtmp_args646551$anf_45bind643634$19999_arg_1)
store volatile %struct.SinObj* %primtmp_args646551$anf_45bind643634$19999_val, %struct.SinObj** %main_local168_loc, align 8
; Starting prim
%primtmp_args646551$anf_45bind643634$210000_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local138_loc, align 8
%primtmp_args646551$anf_45bind643634$210000_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local168_loc, align 8
%primtmp_args646551$anf_45bind643634$210000_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646551$anf_45bind643634$210000_arg_0, %struct.SinObj* %primtmp_args646551$anf_45bind643634$210000_arg_1)
store volatile %struct.SinObj* %primtmp_args646551$anf_45bind643634$210000_val, %struct.SinObj** %main_local169_loc, align 8
; Starting prim
%primtmp_args646551$anf_45bind643634$310001_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local120_loc, align 8
%primtmp_args646551$anf_45bind643634$310001_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local169_loc, align 8
%primtmp_args646551$anf_45bind643634$310001_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646551$anf_45bind643634$310001_arg_0, %struct.SinObj* %primtmp_args646551$anf_45bind643634$310001_arg_1)
store volatile %struct.SinObj* %primtmp_args646551$anf_45bind643634$310001_val, %struct.SinObj** %main_local170_loc, align 8
; Starting prim
%primtmp_args646551$anf_45bind643634$410002_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %main_local166_loc, align 8
%primtmp_args646551$anf_45bind643634$410002_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %main_local170_loc, align 8
%primtmp_args646551$anf_45bind643634$410002_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646551$anf_45bind643634$410002_arg_0, %struct.SinObj* %primtmp_args646551$anf_45bind643634$410002_arg_1)
store volatile %struct.SinObj* %primtmp_args646551$anf_45bind643634$410002_val, %struct.SinObj** %main_local171_loc, align 8
; Starting tail-clo-app
%_tailapp_anf_45bind64363410003_clo = load volatile %struct.SinObj*, %struct.SinObj** %main_local165_loc, align 8
%_tailapp_anf_45bind64363410003_args = load volatile %struct.SinObj*, %struct.SinObj** %main_local171_loc, align 8
%_tailapp_anf_45bind64363410003_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%_tailapp_anf_45bind64363410003_arg0 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_anf_45bind64363410003_fp, i64 2
%_tailapp_anf_45bind64363410003_arg1 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_anf_45bind64363410003_fp, i64 3
store volatile %struct.SinObj* %_tailapp_anf_45bind64363410003_clo, %struct.SinObj** %_tailapp_anf_45bind64363410003_arg0, align 8
store volatile %struct.SinObj* %_tailapp_anf_45bind64363410003_args, %struct.SinObj** %_tailapp_anf_45bind64363410003_arg1, align 8
%_tailapp_anf_45bind64363410003_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %_tailapp_anf_45bind64363410003_clo)
indirectbr i8* %_tailapp_anf_45bind64363410003_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
; Function main finished
clo646672:
%prologue_cur_fp10004 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646672_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10004, i64 2
%clo646672_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10004, i64 3
%clo646672_local2_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10004, i64 6
%clo646672_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10004, i64 5
%clo646672_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10004, i64 4
; End function Prologue
; Starting prim
%primtmp_$u64044810005_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646672_arg1_loc, align 8
%primtmp_$u64044810005_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$u64044810005_arg_0)
store volatile %struct.SinObj* %primtmp_$u64044810005_val, %struct.SinObj** %clo646672_local0_loc, align 8
; Starting const-null
%datnull_args646413$$u640448$010006_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646413$$u640448$010006_val, %struct.SinObj** %clo646672_local1_loc, align 8
; Starting prim
%primtmp_args646413$$u640448$110007_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646672_local0_loc, align 8
%primtmp_args646413$$u640448$110007_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646672_local1_loc, align 8
%primtmp_args646413$$u640448$110007_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646413$$u640448$110007_arg_0, %struct.SinObj* %primtmp_args646413$$u640448$110007_arg_1)
store volatile %struct.SinObj* %primtmp_args646413$$u640448$110007_val, %struct.SinObj** %clo646672_local2_loc, align 8
; Starting tail-clo-app
%_tailapp_$u64044810008_clo = load volatile %struct.SinObj*, %struct.SinObj** %clo646672_local0_loc, align 8
%_tailapp_$u64044810008_args = load volatile %struct.SinObj*, %struct.SinObj** %clo646672_local2_loc, align 8
%_tailapp_$u64044810008_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%_tailapp_$u64044810008_arg0 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_$u64044810008_fp, i64 2
%_tailapp_$u64044810008_arg1 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_$u64044810008_fp, i64 3
store volatile %struct.SinObj* %_tailapp_$u64044810008_clo, %struct.SinObj** %_tailapp_$u64044810008_arg0, align 8
store volatile %struct.SinObj* %_tailapp_$u64044810008_args, %struct.SinObj** %_tailapp_$u64044810008_arg1, align 8
%_tailapp_$u64044810008_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %_tailapp_$u64044810008_clo)
indirectbr i8* %_tailapp_$u64044810008_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
; Function clo646672 finished
clo646671:
%prologue_cur_fp10009 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646671_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10009, i64 2
%clo646671_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10009, i64 3
%clo646671_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10009, i64 5
%clo646671_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10009, i64 4
; End function Prologue
; Starting prim
%primtmp_$y64044910010_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646671_arg1_loc, align 8
%primtmp_$y64044910010_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$y64044910010_arg_0)
store volatile %struct.SinObj* %primtmp_$y64044910010_val, %struct.SinObj** %clo646671_local0_loc, align 8
; Starting make-closure
%makeclo_admin_45toplevel_45bnd64655210011_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646671_local0_loc, align 8
%makeclo_admin_45toplevel_45bnd64655210011_funcaddr = bitcast i8* blockaddress(@main, %clo646670) to i8*
%makeclo_admin_45toplevel_45bnd64655210011_val = call %struct.SinObj* @closure_alloc(i64 1, i8* %makeclo_admin_45toplevel_45bnd64655210011_funcaddr)
call void @closure_place_freevar(%struct.SinObj* %makeclo_admin_45toplevel_45bnd64655210011_val, %struct.SinObj* %makeclo_admin_45toplevel_45bnd64655210011_arg_0, i64 0)
store volatile %struct.SinObj* %makeclo_admin_45toplevel_45bnd64655210011_val, %struct.SinObj** %clo646671_local1_loc, align 8
; Starting return value.
%retval_admin_45toplevel_45bnd64655210012_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646671_local1_loc, align 8
store volatile %struct.SinObj* %retval_admin_45toplevel_45bnd64655210012_val, %struct.SinObj** @retr, align 8
%retval_admin_45toplevel_45bnd64655210012_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_admin_45toplevel_45bnd64655210012_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_admin_45toplevel_45bnd64655210012_fp, align 8
%retval_admin_45toplevel_45bnd64655210012_ra_raw = bitcast %struct.SinObj* %retval_admin_45toplevel_45bnd64655210012_ra to i8*
indirectbr i8* %retval_admin_45toplevel_45bnd64655210012_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
; Function clo646671 finished
clo646670:
%prologue_cur_fp10013 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646670_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10013, i64 2
%clo646670_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10013, i64 3
%clo646670_local4_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10013, i64 8
%clo646670_local3_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10013, i64 7
%clo646670_local2_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10013, i64 6
%clo646670_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10013, i64 5
%clo646670_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10013, i64 4
; End function Prologue
; Starting env-ref
%envref_$y64044910014_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$y64044910014_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$y64044910014_cur_fp, i64 2
%envref_$y64044910014_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$y64044910014_cur_fp, align 8
%envref_$y64044910014_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$y64044910014_clo, i64 0)
store volatile %struct.SinObj* %envref_$y64044910014_val, %struct.SinObj** %clo646670_local0_loc, align 8
; Starting prim
%primtmp_$f64045010015_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646670_arg1_loc, align 8
%primtmp_$f64045010015_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$f64045010015_arg_0)
store volatile %struct.SinObj* %primtmp_$f64045010015_val, %struct.SinObj** %clo646670_local1_loc, align 8
; Starting make-closure
%makeclo_anf_45bind64336210016_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646670_local0_loc, align 8
%makeclo_anf_45bind64336210016_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646670_local1_loc, align 8
%makeclo_anf_45bind64336210016_funcaddr = bitcast i8* blockaddress(@main, %clo646669) to i8*
%makeclo_anf_45bind64336210016_val = call %struct.SinObj* @closure_alloc(i64 2, i8* %makeclo_anf_45bind64336210016_funcaddr)
call void @closure_place_freevar(%struct.SinObj* %makeclo_anf_45bind64336210016_val, %struct.SinObj* %makeclo_anf_45bind64336210016_arg_0, i64 0)
call void @closure_place_freevar(%struct.SinObj* %makeclo_anf_45bind64336210016_val, %struct.SinObj* %makeclo_anf_45bind64336210016_arg_1, i64 1)
store volatile %struct.SinObj* %makeclo_anf_45bind64336210016_val, %struct.SinObj** %clo646670_local2_loc, align 8
; Starting const-null
%datnull_args646418$$f640450$010017_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646418$$f640450$010017_val, %struct.SinObj** %clo646670_local3_loc, align 8
; Starting prim
%primtmp_args646418$$f640450$110018_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646670_local2_loc, align 8
%primtmp_args646418$$f640450$110018_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646670_local3_loc, align 8
%primtmp_args646418$$f640450$110018_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646418$$f640450$110018_arg_0, %struct.SinObj* %primtmp_args646418$$f640450$110018_arg_1)
store volatile %struct.SinObj* %primtmp_args646418$$f640450$110018_val, %struct.SinObj** %clo646670_local4_loc, align 8
; Starting tail-clo-app
%_tailapp_$f64045010019_clo = load volatile %struct.SinObj*, %struct.SinObj** %clo646670_local1_loc, align 8
%_tailapp_$f64045010019_args = load volatile %struct.SinObj*, %struct.SinObj** %clo646670_local4_loc, align 8
%_tailapp_$f64045010019_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%_tailapp_$f64045010019_arg0 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_$f64045010019_fp, i64 2
%_tailapp_$f64045010019_arg1 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_$f64045010019_fp, i64 3
store volatile %struct.SinObj* %_tailapp_$f64045010019_clo, %struct.SinObj** %_tailapp_$f64045010019_arg0, align 8
store volatile %struct.SinObj* %_tailapp_$f64045010019_args, %struct.SinObj** %_tailapp_$f64045010019_arg1, align 8
%_tailapp_$f64045010019_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %_tailapp_$f64045010019_clo)
indirectbr i8* %_tailapp_$f64045010019_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
; Function clo646670 finished
clo646669:
%prologue_cur_fp10020 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646669_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10020, i64 2
%clo646669_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10020, i64 3
%clo646669_local7_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10020, i64 11
%clo646669_local6_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10020, i64 10
%clo646669_local5_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10020, i64 9
%clo646669_local4_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10020, i64 8
%clo646669_local3_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10020, i64 7
%clo646669_local2_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10020, i64 6
%clo646669_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10020, i64 5
%clo646669_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10020, i64 4
; End function Prologue
; Starting env-ref
%envref_$y64044910021_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$y64044910021_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$y64044910021_cur_fp, i64 2
%envref_$y64044910021_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$y64044910021_cur_fp, align 8
%envref_$y64044910021_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$y64044910021_clo, i64 0)
store volatile %struct.SinObj* %envref_$y64044910021_val, %struct.SinObj** %clo646669_local0_loc, align 8
; Starting env-ref
%envref_$f64045010022_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$f64045010022_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$f64045010022_cur_fp, i64 2
%envref_$f64045010022_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$f64045010022_cur_fp, align 8
%envref_$f64045010022_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$f64045010022_clo, i64 1)
store volatile %struct.SinObj* %envref_$f64045010022_val, %struct.SinObj** %clo646669_local1_loc, align 8
; Starting const-null
%datnull_args646416$$y640449$010023_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646416$$y640449$010023_val, %struct.SinObj** %clo646669_local2_loc, align 8
; Starting prim
%primtmp_args646416$$y640449$110024_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646669_local0_loc, align 8
%primtmp_args646416$$y640449$110024_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646669_local2_loc, align 8
%primtmp_args646416$$y640449$110024_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646416$$y640449$110024_arg_0, %struct.SinObj* %primtmp_args646416$$y640449$110024_arg_1)
store volatile %struct.SinObj* %primtmp_args646416$$y640449$110024_val, %struct.SinObj** %clo646669_local3_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind64336010025_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 12)
br i1 %bind_app_anf_45bind64336010025_has_space, label %bind_app_anf_45bind64336010025_do_call, label %bind_app_anf_45bind64336010025_overflow_first
bind_app_anf_45bind64336010025_overflow_first:
%bind_app_anf_45bind64336010025_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind64336010025_overflow_underflow_addr, i64 12)
br label %bind_app_anf_45bind64336010025_do_call
bind_app_anf_45bind64336010025_do_call:
%bind_app_anf_45bind64336010025_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646669_local0_loc, align 8
%bind_app_anf_45bind64336010025_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646669_local3_loc, align 8
%bind_app_anf_45bind64336010025_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64336010025_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336010025_cur_fp, i64 12
store volatile %struct.SinObj** %bind_app_anf_45bind64336010025_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64336010025_return_loc = bitcast i8* blockaddress(@main, %clo646669_ret0) to %struct.SinObj*
%bind_app_anf_45bind64336010025_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336010025_new_fp, i64 1
%bind_app_anf_45bind64336010025_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336010025_new_fp, i64 2
%bind_app_anf_45bind64336010025_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336010025_new_fp, i64 3
%bind_app_anf_45bind64336010025_slotscast = inttoptr i64 12 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind64336010025_return_loc, %struct.SinObj** %bind_app_anf_45bind64336010025_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64336010025_slotscast, %struct.SinObj** %bind_app_anf_45bind64336010025_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64336010025_closure, %struct.SinObj** %bind_app_anf_45bind64336010025_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64336010025_arglist, %struct.SinObj** %bind_app_anf_45bind64336010025_newarg1loc, align 8
%bind_app_anf_45bind64336010025_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind64336010025_closure)
indirectbr i8* %bind_app_anf_45bind64336010025_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646669_ret0:
%bind_app_anf_45bind64336010025_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64336010025_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336010025_oldfp, i64 1
%bind_app_anf_45bind64336010025_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336010025_slots_loc, align 8
%bind_app_anf_45bind64336010025_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind64336010025_slots_ptr to i64
%bind_app_anf_45bind64336010025_offset = mul i64 %bind_app_anf_45bind64336010025_slots, -1
%bind_app_anf_45bind64336010025_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336010025_oldfp, i64 %bind_app_anf_45bind64336010025_offset
store volatile %struct.SinObj** %bind_app_anf_45bind64336010025_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643360 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643360, %struct.SinObj** %clo646669_local4_loc, align 8
; Starting const-null
%datnull_args646417$anf_45bind643360$010026_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646417$anf_45bind643360$010026_val, %struct.SinObj** %clo646669_local5_loc, align 8
; Starting prim
%primtmp_args646417$anf_45bind643360$110027_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646669_local1_loc, align 8
%primtmp_args646417$anf_45bind643360$110027_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646669_local5_loc, align 8
%primtmp_args646417$anf_45bind643360$110027_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646417$anf_45bind643360$110027_arg_0, %struct.SinObj* %primtmp_args646417$anf_45bind643360$110027_arg_1)
store volatile %struct.SinObj* %primtmp_args646417$anf_45bind643360$110027_val, %struct.SinObj** %clo646669_local6_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind64336110028_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 12)
br i1 %bind_app_anf_45bind64336110028_has_space, label %bind_app_anf_45bind64336110028_do_call, label %bind_app_anf_45bind64336110028_overflow_first
bind_app_anf_45bind64336110028_overflow_first:
%bind_app_anf_45bind64336110028_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind64336110028_overflow_underflow_addr, i64 12)
br label %bind_app_anf_45bind64336110028_do_call
bind_app_anf_45bind64336110028_do_call:
%bind_app_anf_45bind64336110028_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646669_local4_loc, align 8
%bind_app_anf_45bind64336110028_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646669_local6_loc, align 8
%bind_app_anf_45bind64336110028_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64336110028_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336110028_cur_fp, i64 12
store volatile %struct.SinObj** %bind_app_anf_45bind64336110028_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64336110028_return_loc = bitcast i8* blockaddress(@main, %clo646669_ret1) to %struct.SinObj*
%bind_app_anf_45bind64336110028_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336110028_new_fp, i64 1
%bind_app_anf_45bind64336110028_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336110028_new_fp, i64 2
%bind_app_anf_45bind64336110028_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336110028_new_fp, i64 3
%bind_app_anf_45bind64336110028_slotscast = inttoptr i64 12 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind64336110028_return_loc, %struct.SinObj** %bind_app_anf_45bind64336110028_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64336110028_slotscast, %struct.SinObj** %bind_app_anf_45bind64336110028_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64336110028_closure, %struct.SinObj** %bind_app_anf_45bind64336110028_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64336110028_arglist, %struct.SinObj** %bind_app_anf_45bind64336110028_newarg1loc, align 8
%bind_app_anf_45bind64336110028_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind64336110028_closure)
indirectbr i8* %bind_app_anf_45bind64336110028_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646669_ret1:
%bind_app_anf_45bind64336110028_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64336110028_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336110028_oldfp, i64 1
%bind_app_anf_45bind64336110028_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336110028_slots_loc, align 8
%bind_app_anf_45bind64336110028_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind64336110028_slots_ptr to i64
%bind_app_anf_45bind64336110028_offset = mul i64 %bind_app_anf_45bind64336110028_slots, -1
%bind_app_anf_45bind64336110028_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336110028_oldfp, i64 %bind_app_anf_45bind64336110028_offset
store volatile %struct.SinObj** %bind_app_anf_45bind64336110028_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643361 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643361, %struct.SinObj** %clo646669_local7_loc, align 8
; Starting tail-clo-app
%_tailapp_anf_45bind64336110029_clo = load volatile %struct.SinObj*, %struct.SinObj** %clo646669_local7_loc, align 8
%_tailapp_anf_45bind64336110029_args = load volatile %struct.SinObj*, %struct.SinObj** %clo646669_arg1_loc, align 8
%_tailapp_anf_45bind64336110029_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%_tailapp_anf_45bind64336110029_arg0 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_anf_45bind64336110029_fp, i64 2
%_tailapp_anf_45bind64336110029_arg1 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_anf_45bind64336110029_fp, i64 3
store volatile %struct.SinObj* %_tailapp_anf_45bind64336110029_clo, %struct.SinObj** %_tailapp_anf_45bind64336110029_arg0, align 8
store volatile %struct.SinObj* %_tailapp_anf_45bind64336110029_args, %struct.SinObj** %_tailapp_anf_45bind64336110029_arg1, align 8
%_tailapp_anf_45bind64336110029_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %_tailapp_anf_45bind64336110029_clo)
indirectbr i8* %_tailapp_anf_45bind64336110029_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
; Function clo646669 finished
clo646668:
%prologue_cur_fp10030 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646668_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10030, i64 2
%clo646668_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10030, i64 3
%clo646668_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10030, i64 5
%clo646668_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10030, i64 4
; End function Prologue
; Starting prim
%primtmp_$map64045310031_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646668_arg1_loc, align 8
%primtmp_$map64045310031_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$map64045310031_arg_0)
store volatile %struct.SinObj* %primtmp_$map64045310031_val, %struct.SinObj** %clo646668_local0_loc, align 8
; Starting make-closure
%makeclo_admin_45toplevel_45bnd64655310032_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646668_local0_loc, align 8
%makeclo_admin_45toplevel_45bnd64655310032_funcaddr = bitcast i8* blockaddress(@main, %clo646667) to i8*
%makeclo_admin_45toplevel_45bnd64655310032_val = call %struct.SinObj* @closure_alloc(i64 1, i8* %makeclo_admin_45toplevel_45bnd64655310032_funcaddr)
call void @closure_place_freevar(%struct.SinObj* %makeclo_admin_45toplevel_45bnd64655310032_val, %struct.SinObj* %makeclo_admin_45toplevel_45bnd64655310032_arg_0, i64 0)
store volatile %struct.SinObj* %makeclo_admin_45toplevel_45bnd64655310032_val, %struct.SinObj** %clo646668_local1_loc, align 8
; Starting return value.
%retval_admin_45toplevel_45bnd64655310033_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646668_local1_loc, align 8
store volatile %struct.SinObj* %retval_admin_45toplevel_45bnd64655310033_val, %struct.SinObj** @retr, align 8
%retval_admin_45toplevel_45bnd64655310033_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_admin_45toplevel_45bnd64655310033_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_admin_45toplevel_45bnd64655310033_fp, align 8
%retval_admin_45toplevel_45bnd64655310033_ra_raw = bitcast %struct.SinObj* %retval_admin_45toplevel_45bnd64655310033_ra to i8*
indirectbr i8* %retval_admin_45toplevel_45bnd64655310033_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
; Function clo646668 finished
clo646667:
%prologue_cur_fp10034 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646667_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10034, i64 2
%clo646667_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10034, i64 3
%clo646667_local16_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10034, i64 20
%clo646667_local15_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10034, i64 19
%clo646667_local14_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10034, i64 18
%clo646667_local13_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10034, i64 17
%clo646667_local12_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10034, i64 16
%clo646667_local11_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10034, i64 15
%clo646667_local10_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10034, i64 14
%clo646667_local9_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10034, i64 13
%clo646667_local8_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10034, i64 12
%clo646667_local7_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10034, i64 11
%clo646667_local6_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10034, i64 10
%clo646667_local5_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10034, i64 9
%clo646667_local4_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10034, i64 8
%clo646667_local3_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10034, i64 7
%clo646667_local2_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10034, i64 6
%clo646667_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10034, i64 5
%clo646667_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10034, i64 4
; End function Prologue
; Starting env-ref
%envref_$map64045310035_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$map64045310035_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$map64045310035_cur_fp, i64 2
%envref_$map64045310035_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$map64045310035_cur_fp, align 8
%envref_$map64045310035_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$map64045310035_clo, i64 0)
store volatile %struct.SinObj* %envref_$map64045310035_val, %struct.SinObj** %clo646667_local0_loc, align 8
; Starting prim
%primtmp_$f64045410036_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646667_arg1_loc, align 8
%primtmp_$f64045410036_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$f64045410036_arg_0)
store volatile %struct.SinObj* %primtmp_$f64045410036_val, %struct.SinObj** %clo646667_local1_loc, align 8
; Starting prim
%primtmp_arglist646421110037_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646667_arg1_loc, align 8
%primtmp_arglist646421110037_val = call %struct.SinObj* @prim_cdr(%struct.SinObj* %primtmp_arglist646421110037_arg_0)
store volatile %struct.SinObj* %primtmp_arglist646421110037_val, %struct.SinObj** %clo646667_local2_loc, align 8
; Starting prim
%primtmp_$xs64045510038_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646667_local2_loc, align 8
%primtmp_$xs64045510038_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$xs64045510038_arg_0)
store volatile %struct.SinObj* %primtmp_$xs64045510038_val, %struct.SinObj** %clo646667_local3_loc, align 8
; Starting prim
%primtmp_anf_45bind64336410039_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646667_local3_loc, align 8
%primtmp_anf_45bind64336410039_val = call %struct.SinObj* @prim_null_63(%struct.SinObj* %primtmp_anf_45bind64336410039_arg_0)
store volatile %struct.SinObj* %primtmp_anf_45bind64336410039_val, %struct.SinObj** %clo646667_local4_loc, align 8
; Starting if
%if10040_reg = load volatile %struct.SinObj*, %struct.SinObj** %clo646667_local4_loc, align 8
%if10040istrue = call i1 @is_truthy_value(%struct.SinObj* %if10040_reg)
br i1 %if10040istrue, label %branch9791_45true, label %branch9791_45false
branch9791_45true:
; Starting make-closure
%makeclo_anf_45bind64336510041_funcaddr = bitcast i8* blockaddress(@main, %clo646666) to i8*
%makeclo_anf_45bind64336510041_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind64336510041_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind64336510041_val, %struct.SinObj** %clo646667_local5_loc, align 8
; Starting const-null
%datnull_args646422$anf_45bind643365$010042_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646422$anf_45bind643365$010042_val, %struct.SinObj** %clo646667_local6_loc, align 8
; Starting tail-clo-app
%_tailapp_anf_45bind64336510043_clo = load volatile %struct.SinObj*, %struct.SinObj** %clo646667_local5_loc, align 8
%_tailapp_anf_45bind64336510043_args = load volatile %struct.SinObj*, %struct.SinObj** %clo646667_local6_loc, align 8
%_tailapp_anf_45bind64336510043_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%_tailapp_anf_45bind64336510043_arg0 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_anf_45bind64336510043_fp, i64 2
%_tailapp_anf_45bind64336510043_arg1 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_anf_45bind64336510043_fp, i64 3
store volatile %struct.SinObj* %_tailapp_anf_45bind64336510043_clo, %struct.SinObj** %_tailapp_anf_45bind64336510043_arg0, align 8
store volatile %struct.SinObj* %_tailapp_anf_45bind64336510043_args, %struct.SinObj** %_tailapp_anf_45bind64336510043_arg1, align 8
%_tailapp_anf_45bind64336510043_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %_tailapp_anf_45bind64336510043_clo)
indirectbr i8* %_tailapp_anf_45bind64336510043_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
branch9791_45false:
; Starting prim
%primtmp_anf_45bind64336610044_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646667_local3_loc, align 8
%primtmp_anf_45bind64336610044_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_anf_45bind64336610044_arg_0)
store volatile %struct.SinObj* %primtmp_anf_45bind64336610044_val, %struct.SinObj** %clo646667_local7_loc, align 8
; Starting const-null
%datnull_args646423$$f640454$010045_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646423$$f640454$010045_val, %struct.SinObj** %clo646667_local8_loc, align 8
; Starting prim
%primtmp_args646423$$f640454$110046_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646667_local7_loc, align 8
%primtmp_args646423$$f640454$110046_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646667_local8_loc, align 8
%primtmp_args646423$$f640454$110046_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646423$$f640454$110046_arg_0, %struct.SinObj* %primtmp_args646423$$f640454$110046_arg_1)
store volatile %struct.SinObj* %primtmp_args646423$$f640454$110046_val, %struct.SinObj** %clo646667_local9_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind64336710047_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 21)
br i1 %bind_app_anf_45bind64336710047_has_space, label %bind_app_anf_45bind64336710047_do_call, label %bind_app_anf_45bind64336710047_overflow_first
bind_app_anf_45bind64336710047_overflow_first:
%bind_app_anf_45bind64336710047_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind64336710047_overflow_underflow_addr, i64 21)
br label %bind_app_anf_45bind64336710047_do_call
bind_app_anf_45bind64336710047_do_call:
%bind_app_anf_45bind64336710047_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646667_local1_loc, align 8
%bind_app_anf_45bind64336710047_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646667_local9_loc, align 8
%bind_app_anf_45bind64336710047_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64336710047_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336710047_cur_fp, i64 21
store volatile %struct.SinObj** %bind_app_anf_45bind64336710047_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64336710047_return_loc = bitcast i8* blockaddress(@main, %clo646667_ret0) to %struct.SinObj*
%bind_app_anf_45bind64336710047_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336710047_new_fp, i64 1
%bind_app_anf_45bind64336710047_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336710047_new_fp, i64 2
%bind_app_anf_45bind64336710047_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336710047_new_fp, i64 3
%bind_app_anf_45bind64336710047_slotscast = inttoptr i64 21 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind64336710047_return_loc, %struct.SinObj** %bind_app_anf_45bind64336710047_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64336710047_slotscast, %struct.SinObj** %bind_app_anf_45bind64336710047_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64336710047_closure, %struct.SinObj** %bind_app_anf_45bind64336710047_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64336710047_arglist, %struct.SinObj** %bind_app_anf_45bind64336710047_newarg1loc, align 8
%bind_app_anf_45bind64336710047_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind64336710047_closure)
indirectbr i8* %bind_app_anf_45bind64336710047_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646667_ret0:
%bind_app_anf_45bind64336710047_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64336710047_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336710047_oldfp, i64 1
%bind_app_anf_45bind64336710047_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336710047_slots_loc, align 8
%bind_app_anf_45bind64336710047_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind64336710047_slots_ptr to i64
%bind_app_anf_45bind64336710047_offset = mul i64 %bind_app_anf_45bind64336710047_slots, -1
%bind_app_anf_45bind64336710047_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336710047_oldfp, i64 %bind_app_anf_45bind64336710047_offset
store volatile %struct.SinObj** %bind_app_anf_45bind64336710047_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643367 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643367, %struct.SinObj** %clo646667_local10_loc, align 8
; Starting prim
%primtmp_anf_45bind64336810048_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646667_local3_loc, align 8
%primtmp_anf_45bind64336810048_val = call %struct.SinObj* @prim_cdr(%struct.SinObj* %primtmp_anf_45bind64336810048_arg_0)
store volatile %struct.SinObj* %primtmp_anf_45bind64336810048_val, %struct.SinObj** %clo646667_local11_loc, align 8
; Starting const-null
%datnull_args646424$$map640453$010049_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646424$$map640453$010049_val, %struct.SinObj** %clo646667_local12_loc, align 8
; Starting prim
%primtmp_args646424$$map640453$110050_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646667_local11_loc, align 8
%primtmp_args646424$$map640453$110050_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646667_local12_loc, align 8
%primtmp_args646424$$map640453$110050_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646424$$map640453$110050_arg_0, %struct.SinObj* %primtmp_args646424$$map640453$110050_arg_1)
store volatile %struct.SinObj* %primtmp_args646424$$map640453$110050_val, %struct.SinObj** %clo646667_local13_loc, align 8
; Starting prim
%primtmp_args646424$$map640453$210051_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646667_local1_loc, align 8
%primtmp_args646424$$map640453$210051_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646667_local13_loc, align 8
%primtmp_args646424$$map640453$210051_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646424$$map640453$210051_arg_0, %struct.SinObj* %primtmp_args646424$$map640453$210051_arg_1)
store volatile %struct.SinObj* %primtmp_args646424$$map640453$210051_val, %struct.SinObj** %clo646667_local14_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind64336910052_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 21)
br i1 %bind_app_anf_45bind64336910052_has_space, label %bind_app_anf_45bind64336910052_do_call, label %bind_app_anf_45bind64336910052_overflow_first
bind_app_anf_45bind64336910052_overflow_first:
%bind_app_anf_45bind64336910052_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind64336910052_overflow_underflow_addr, i64 21)
br label %bind_app_anf_45bind64336910052_do_call
bind_app_anf_45bind64336910052_do_call:
%bind_app_anf_45bind64336910052_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646667_local0_loc, align 8
%bind_app_anf_45bind64336910052_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646667_local14_loc, align 8
%bind_app_anf_45bind64336910052_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64336910052_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336910052_cur_fp, i64 21
store volatile %struct.SinObj** %bind_app_anf_45bind64336910052_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64336910052_return_loc = bitcast i8* blockaddress(@main, %clo646667_ret1) to %struct.SinObj*
%bind_app_anf_45bind64336910052_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336910052_new_fp, i64 1
%bind_app_anf_45bind64336910052_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336910052_new_fp, i64 2
%bind_app_anf_45bind64336910052_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336910052_new_fp, i64 3
%bind_app_anf_45bind64336910052_slotscast = inttoptr i64 21 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind64336910052_return_loc, %struct.SinObj** %bind_app_anf_45bind64336910052_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64336910052_slotscast, %struct.SinObj** %bind_app_anf_45bind64336910052_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64336910052_closure, %struct.SinObj** %bind_app_anf_45bind64336910052_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64336910052_arglist, %struct.SinObj** %bind_app_anf_45bind64336910052_newarg1loc, align 8
%bind_app_anf_45bind64336910052_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind64336910052_closure)
indirectbr i8* %bind_app_anf_45bind64336910052_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646667_ret1:
%bind_app_anf_45bind64336910052_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64336910052_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336910052_oldfp, i64 1
%bind_app_anf_45bind64336910052_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336910052_slots_loc, align 8
%bind_app_anf_45bind64336910052_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind64336910052_slots_ptr to i64
%bind_app_anf_45bind64336910052_offset = mul i64 %bind_app_anf_45bind64336910052_slots, -1
%bind_app_anf_45bind64336910052_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64336910052_oldfp, i64 %bind_app_anf_45bind64336910052_offset
store volatile %struct.SinObj** %bind_app_anf_45bind64336910052_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643369 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643369, %struct.SinObj** %clo646667_local15_loc, align 8
; Starting prim
%primtmp_admin_45toplevel_45bnd64655410053_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646667_local10_loc, align 8
%primtmp_admin_45toplevel_45bnd64655410053_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646667_local15_loc, align 8
%primtmp_admin_45toplevel_45bnd64655410053_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_admin_45toplevel_45bnd64655410053_arg_0, %struct.SinObj* %primtmp_admin_45toplevel_45bnd64655410053_arg_1)
store volatile %struct.SinObj* %primtmp_admin_45toplevel_45bnd64655410053_val, %struct.SinObj** %clo646667_local16_loc, align 8
; Starting return value.
%retval_admin_45toplevel_45bnd64655410054_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646667_local16_loc, align 8
store volatile %struct.SinObj* %retval_admin_45toplevel_45bnd64655410054_val, %struct.SinObj** @retr, align 8
%retval_admin_45toplevel_45bnd64655410054_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_admin_45toplevel_45bnd64655410054_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_admin_45toplevel_45bnd64655410054_fp, align 8
%retval_admin_45toplevel_45bnd64655410054_ra_raw = bitcast %struct.SinObj* %retval_admin_45toplevel_45bnd64655410054_ra to i8*
indirectbr i8* %retval_admin_45toplevel_45bnd64655410054_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
; Function clo646667 finished
clo646666:
%prologue_cur_fp10055 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646666_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10055, i64 2
%clo646666_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10055, i64 3
; End function Prologue
; Starting return value.
%retval_xs64045610056_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646666_arg1_loc, align 8
store volatile %struct.SinObj* %retval_xs64045610056_val, %struct.SinObj** @retr, align 8
%retval_xs64045610056_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_xs64045610056_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_xs64045610056_fp, align 8
%retval_xs64045610056_ra_raw = bitcast %struct.SinObj* %retval_xs64045610056_ra to i8*
indirectbr i8* %retval_xs64045610056_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
; Function clo646666 finished
clo646665:
%prologue_cur_fp10057 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646665_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10057, i64 2
%clo646665_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10057, i64 3
%clo646665_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10057, i64 5
%clo646665_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10057, i64 4
; End function Prologue
; Starting prim
%primtmp_$foldl64045810058_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646665_arg1_loc, align 8
%primtmp_$foldl64045810058_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$foldl64045810058_arg_0)
store volatile %struct.SinObj* %primtmp_$foldl64045810058_val, %struct.SinObj** %clo646665_local0_loc, align 8
; Starting make-closure
%makeclo_admin_45toplevel_45bnd64655510059_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646665_local0_loc, align 8
%makeclo_admin_45toplevel_45bnd64655510059_funcaddr = bitcast i8* blockaddress(@main, %clo646664) to i8*
%makeclo_admin_45toplevel_45bnd64655510059_val = call %struct.SinObj* @closure_alloc(i64 1, i8* %makeclo_admin_45toplevel_45bnd64655510059_funcaddr)
call void @closure_place_freevar(%struct.SinObj* %makeclo_admin_45toplevel_45bnd64655510059_val, %struct.SinObj* %makeclo_admin_45toplevel_45bnd64655510059_arg_0, i64 0)
store volatile %struct.SinObj* %makeclo_admin_45toplevel_45bnd64655510059_val, %struct.SinObj** %clo646665_local1_loc, align 8
; Starting return value.
%retval_admin_45toplevel_45bnd64655510060_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646665_local1_loc, align 8
store volatile %struct.SinObj* %retval_admin_45toplevel_45bnd64655510060_val, %struct.SinObj** @retr, align 8
%retval_admin_45toplevel_45bnd64655510060_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_admin_45toplevel_45bnd64655510060_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_admin_45toplevel_45bnd64655510060_fp, align 8
%retval_admin_45toplevel_45bnd64655510060_ra_raw = bitcast %struct.SinObj* %retval_admin_45toplevel_45bnd64655510060_ra to i8*
indirectbr i8* %retval_admin_45toplevel_45bnd64655510060_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
; Function clo646665 finished
clo646664:
%prologue_cur_fp10061 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646664_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10061, i64 2
%clo646664_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10061, i64 3
%clo646664_local16_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10061, i64 20
%clo646664_local15_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10061, i64 19
%clo646664_local14_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10061, i64 18
%clo646664_local13_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10061, i64 17
%clo646664_local12_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10061, i64 16
%clo646664_local11_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10061, i64 15
%clo646664_local10_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10061, i64 14
%clo646664_local9_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10061, i64 13
%clo646664_local8_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10061, i64 12
%clo646664_local7_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10061, i64 11
%clo646664_local6_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10061, i64 10
%clo646664_local5_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10061, i64 9
%clo646664_local4_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10061, i64 8
%clo646664_local3_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10061, i64 7
%clo646664_local2_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10061, i64 6
%clo646664_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10061, i64 5
%clo646664_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10061, i64 4
; End function Prologue
; Starting env-ref
%envref_$foldl64045810062_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$foldl64045810062_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$foldl64045810062_cur_fp, i64 2
%envref_$foldl64045810062_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$foldl64045810062_cur_fp, align 8
%envref_$foldl64045810062_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$foldl64045810062_clo, i64 0)
store volatile %struct.SinObj* %envref_$foldl64045810062_val, %struct.SinObj** %clo646664_local0_loc, align 8
; Starting prim
%primtmp_$f64045910063_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646664_arg1_loc, align 8
%primtmp_$f64045910063_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$f64045910063_arg_0)
store volatile %struct.SinObj* %primtmp_$f64045910063_val, %struct.SinObj** %clo646664_local1_loc, align 8
; Starting prim
%primtmp_arglist646427110064_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646664_arg1_loc, align 8
%primtmp_arglist646427110064_val = call %struct.SinObj* @prim_cdr(%struct.SinObj* %primtmp_arglist646427110064_arg_0)
store volatile %struct.SinObj* %primtmp_arglist646427110064_val, %struct.SinObj** %clo646664_local2_loc, align 8
; Starting prim
%primtmp_$acc64046010065_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646664_local2_loc, align 8
%primtmp_$acc64046010065_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$acc64046010065_arg_0)
store volatile %struct.SinObj* %primtmp_$acc64046010065_val, %struct.SinObj** %clo646664_local3_loc, align 8
; Starting prim
%primtmp_arglist646427210066_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646664_local2_loc, align 8
%primtmp_arglist646427210066_val = call %struct.SinObj* @prim_cdr(%struct.SinObj* %primtmp_arglist646427210066_arg_0)
store volatile %struct.SinObj* %primtmp_arglist646427210066_val, %struct.SinObj** %clo646664_local4_loc, align 8
; Starting prim
%primtmp_$xs64046110067_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646664_local4_loc, align 8
%primtmp_$xs64046110067_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$xs64046110067_arg_0)
store volatile %struct.SinObj* %primtmp_$xs64046110067_val, %struct.SinObj** %clo646664_local5_loc, align 8
; Starting prim
%primtmp_anf_45bind64337110068_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646664_local5_loc, align 8
%primtmp_anf_45bind64337110068_val = call %struct.SinObj* @prim_null_63(%struct.SinObj* %primtmp_anf_45bind64337110068_arg_0)
store volatile %struct.SinObj* %primtmp_anf_45bind64337110068_val, %struct.SinObj** %clo646664_local6_loc, align 8
; Starting if
%if10069_reg = load volatile %struct.SinObj*, %struct.SinObj** %clo646664_local6_loc, align 8
%if10069istrue = call i1 @is_truthy_value(%struct.SinObj* %if10069_reg)
br i1 %if10069istrue, label %branch9792_45true, label %branch9792_45false
branch9792_45true:
; Starting return value.
%retval_$acc64046010070_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646664_local3_loc, align 8
store volatile %struct.SinObj* %retval_$acc64046010070_val, %struct.SinObj** @retr, align 8
%retval_$acc64046010070_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_$acc64046010070_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_$acc64046010070_fp, align 8
%retval_$acc64046010070_ra_raw = bitcast %struct.SinObj* %retval_$acc64046010070_ra to i8*
indirectbr i8* %retval_$acc64046010070_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
branch9792_45false:
; Starting prim
%primtmp_anf_45bind64337210071_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646664_local5_loc, align 8
%primtmp_anf_45bind64337210071_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_anf_45bind64337210071_arg_0)
store volatile %struct.SinObj* %primtmp_anf_45bind64337210071_val, %struct.SinObj** %clo646664_local7_loc, align 8
; Starting const-null
%datnull_args646428$$f640459$010072_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646428$$f640459$010072_val, %struct.SinObj** %clo646664_local8_loc, align 8
; Starting prim
%primtmp_args646428$$f640459$110073_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646664_local3_loc, align 8
%primtmp_args646428$$f640459$110073_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646664_local8_loc, align 8
%primtmp_args646428$$f640459$110073_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646428$$f640459$110073_arg_0, %struct.SinObj* %primtmp_args646428$$f640459$110073_arg_1)
store volatile %struct.SinObj* %primtmp_args646428$$f640459$110073_val, %struct.SinObj** %clo646664_local9_loc, align 8
; Starting prim
%primtmp_args646428$$f640459$210074_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646664_local7_loc, align 8
%primtmp_args646428$$f640459$210074_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646664_local9_loc, align 8
%primtmp_args646428$$f640459$210074_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646428$$f640459$210074_arg_0, %struct.SinObj* %primtmp_args646428$$f640459$210074_arg_1)
store volatile %struct.SinObj* %primtmp_args646428$$f640459$210074_val, %struct.SinObj** %clo646664_local10_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind64337310075_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 21)
br i1 %bind_app_anf_45bind64337310075_has_space, label %bind_app_anf_45bind64337310075_do_call, label %bind_app_anf_45bind64337310075_overflow_first
bind_app_anf_45bind64337310075_overflow_first:
%bind_app_anf_45bind64337310075_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind64337310075_overflow_underflow_addr, i64 21)
br label %bind_app_anf_45bind64337310075_do_call
bind_app_anf_45bind64337310075_do_call:
%bind_app_anf_45bind64337310075_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646664_local1_loc, align 8
%bind_app_anf_45bind64337310075_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646664_local10_loc, align 8
%bind_app_anf_45bind64337310075_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64337310075_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64337310075_cur_fp, i64 21
store volatile %struct.SinObj** %bind_app_anf_45bind64337310075_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64337310075_return_loc = bitcast i8* blockaddress(@main, %clo646664_ret0) to %struct.SinObj*
%bind_app_anf_45bind64337310075_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64337310075_new_fp, i64 1
%bind_app_anf_45bind64337310075_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64337310075_new_fp, i64 2
%bind_app_anf_45bind64337310075_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64337310075_new_fp, i64 3
%bind_app_anf_45bind64337310075_slotscast = inttoptr i64 21 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind64337310075_return_loc, %struct.SinObj** %bind_app_anf_45bind64337310075_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64337310075_slotscast, %struct.SinObj** %bind_app_anf_45bind64337310075_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64337310075_closure, %struct.SinObj** %bind_app_anf_45bind64337310075_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64337310075_arglist, %struct.SinObj** %bind_app_anf_45bind64337310075_newarg1loc, align 8
%bind_app_anf_45bind64337310075_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind64337310075_closure)
indirectbr i8* %bind_app_anf_45bind64337310075_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646664_ret0:
%bind_app_anf_45bind64337310075_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64337310075_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64337310075_oldfp, i64 1
%bind_app_anf_45bind64337310075_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64337310075_slots_loc, align 8
%bind_app_anf_45bind64337310075_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind64337310075_slots_ptr to i64
%bind_app_anf_45bind64337310075_offset = mul i64 %bind_app_anf_45bind64337310075_slots, -1
%bind_app_anf_45bind64337310075_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64337310075_oldfp, i64 %bind_app_anf_45bind64337310075_offset
store volatile %struct.SinObj** %bind_app_anf_45bind64337310075_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643373 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643373, %struct.SinObj** %clo646664_local11_loc, align 8
; Starting prim
%primtmp_anf_45bind64337410076_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646664_local5_loc, align 8
%primtmp_anf_45bind64337410076_val = call %struct.SinObj* @prim_cdr(%struct.SinObj* %primtmp_anf_45bind64337410076_arg_0)
store volatile %struct.SinObj* %primtmp_anf_45bind64337410076_val, %struct.SinObj** %clo646664_local12_loc, align 8
; Starting const-null
%datnull_args646429$$foldl640458$010077_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646429$$foldl640458$010077_val, %struct.SinObj** %clo646664_local13_loc, align 8
; Starting prim
%primtmp_args646429$$foldl640458$110078_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646664_local12_loc, align 8
%primtmp_args646429$$foldl640458$110078_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646664_local13_loc, align 8
%primtmp_args646429$$foldl640458$110078_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646429$$foldl640458$110078_arg_0, %struct.SinObj* %primtmp_args646429$$foldl640458$110078_arg_1)
store volatile %struct.SinObj* %primtmp_args646429$$foldl640458$110078_val, %struct.SinObj** %clo646664_local14_loc, align 8
; Starting prim
%primtmp_args646429$$foldl640458$210079_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646664_local11_loc, align 8
%primtmp_args646429$$foldl640458$210079_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646664_local14_loc, align 8
%primtmp_args646429$$foldl640458$210079_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646429$$foldl640458$210079_arg_0, %struct.SinObj* %primtmp_args646429$$foldl640458$210079_arg_1)
store volatile %struct.SinObj* %primtmp_args646429$$foldl640458$210079_val, %struct.SinObj** %clo646664_local15_loc, align 8
; Starting prim
%primtmp_args646429$$foldl640458$310080_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646664_local1_loc, align 8
%primtmp_args646429$$foldl640458$310080_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646664_local15_loc, align 8
%primtmp_args646429$$foldl640458$310080_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646429$$foldl640458$310080_arg_0, %struct.SinObj* %primtmp_args646429$$foldl640458$310080_arg_1)
store volatile %struct.SinObj* %primtmp_args646429$$foldl640458$310080_val, %struct.SinObj** %clo646664_local16_loc, align 8
; Starting tail-clo-app
%_tailapp_$foldl64045810081_clo = load volatile %struct.SinObj*, %struct.SinObj** %clo646664_local0_loc, align 8
%_tailapp_$foldl64045810081_args = load volatile %struct.SinObj*, %struct.SinObj** %clo646664_local16_loc, align 8
%_tailapp_$foldl64045810081_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%_tailapp_$foldl64045810081_arg0 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_$foldl64045810081_fp, i64 2
%_tailapp_$foldl64045810081_arg1 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_$foldl64045810081_fp, i64 3
store volatile %struct.SinObj* %_tailapp_$foldl64045810081_clo, %struct.SinObj** %_tailapp_$foldl64045810081_arg0, align 8
store volatile %struct.SinObj* %_tailapp_$foldl64045810081_args, %struct.SinObj** %_tailapp_$foldl64045810081_arg1, align 8
%_tailapp_$foldl64045810081_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %_tailapp_$foldl64045810081_clo)
indirectbr i8* %_tailapp_$foldl64045810081_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
; Function clo646664 finished
clo646663:
%prologue_cur_fp10082 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646663_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10082, i64 2
%clo646663_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10082, i64 3
%clo646663_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10082, i64 5
%clo646663_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10082, i64 4
; End function Prologue
; Starting prim
%primtmp_$foldr64046310083_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646663_arg1_loc, align 8
%primtmp_$foldr64046310083_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$foldr64046310083_arg_0)
store volatile %struct.SinObj* %primtmp_$foldr64046310083_val, %struct.SinObj** %clo646663_local0_loc, align 8
; Starting make-closure
%makeclo_admin_45toplevel_45bnd64655610084_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646663_local0_loc, align 8
%makeclo_admin_45toplevel_45bnd64655610084_funcaddr = bitcast i8* blockaddress(@main, %clo646662) to i8*
%makeclo_admin_45toplevel_45bnd64655610084_val = call %struct.SinObj* @closure_alloc(i64 1, i8* %makeclo_admin_45toplevel_45bnd64655610084_funcaddr)
call void @closure_place_freevar(%struct.SinObj* %makeclo_admin_45toplevel_45bnd64655610084_val, %struct.SinObj* %makeclo_admin_45toplevel_45bnd64655610084_arg_0, i64 0)
store volatile %struct.SinObj* %makeclo_admin_45toplevel_45bnd64655610084_val, %struct.SinObj** %clo646663_local1_loc, align 8
; Starting return value.
%retval_admin_45toplevel_45bnd64655610085_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646663_local1_loc, align 8
store volatile %struct.SinObj* %retval_admin_45toplevel_45bnd64655610085_val, %struct.SinObj** @retr, align 8
%retval_admin_45toplevel_45bnd64655610085_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_admin_45toplevel_45bnd64655610085_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_admin_45toplevel_45bnd64655610085_fp, align 8
%retval_admin_45toplevel_45bnd64655610085_ra_raw = bitcast %struct.SinObj* %retval_admin_45toplevel_45bnd64655610085_ra to i8*
indirectbr i8* %retval_admin_45toplevel_45bnd64655610085_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
; Function clo646663 finished
clo646662:
%prologue_cur_fp10086 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646662_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10086, i64 2
%clo646662_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10086, i64 3
%clo646662_local16_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10086, i64 20
%clo646662_local15_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10086, i64 19
%clo646662_local14_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10086, i64 18
%clo646662_local13_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10086, i64 17
%clo646662_local12_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10086, i64 16
%clo646662_local11_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10086, i64 15
%clo646662_local10_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10086, i64 14
%clo646662_local9_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10086, i64 13
%clo646662_local8_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10086, i64 12
%clo646662_local7_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10086, i64 11
%clo646662_local6_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10086, i64 10
%clo646662_local5_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10086, i64 9
%clo646662_local4_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10086, i64 8
%clo646662_local3_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10086, i64 7
%clo646662_local2_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10086, i64 6
%clo646662_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10086, i64 5
%clo646662_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10086, i64 4
; End function Prologue
; Starting env-ref
%envref_$foldr64046310087_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$foldr64046310087_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$foldr64046310087_cur_fp, i64 2
%envref_$foldr64046310087_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$foldr64046310087_cur_fp, align 8
%envref_$foldr64046310087_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$foldr64046310087_clo, i64 0)
store volatile %struct.SinObj* %envref_$foldr64046310087_val, %struct.SinObj** %clo646662_local0_loc, align 8
; Starting prim
%primtmp_$f64046410088_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646662_arg1_loc, align 8
%primtmp_$f64046410088_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$f64046410088_arg_0)
store volatile %struct.SinObj* %primtmp_$f64046410088_val, %struct.SinObj** %clo646662_local1_loc, align 8
; Starting prim
%primtmp_arglist646432110089_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646662_arg1_loc, align 8
%primtmp_arglist646432110089_val = call %struct.SinObj* @prim_cdr(%struct.SinObj* %primtmp_arglist646432110089_arg_0)
store volatile %struct.SinObj* %primtmp_arglist646432110089_val, %struct.SinObj** %clo646662_local2_loc, align 8
; Starting prim
%primtmp_$acc64046510090_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646662_local2_loc, align 8
%primtmp_$acc64046510090_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$acc64046510090_arg_0)
store volatile %struct.SinObj* %primtmp_$acc64046510090_val, %struct.SinObj** %clo646662_local3_loc, align 8
; Starting prim
%primtmp_arglist646432210091_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646662_local2_loc, align 8
%primtmp_arglist646432210091_val = call %struct.SinObj* @prim_cdr(%struct.SinObj* %primtmp_arglist646432210091_arg_0)
store volatile %struct.SinObj* %primtmp_arglist646432210091_val, %struct.SinObj** %clo646662_local4_loc, align 8
; Starting prim
%primtmp_$xs64046610092_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646662_local4_loc, align 8
%primtmp_$xs64046610092_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$xs64046610092_arg_0)
store volatile %struct.SinObj* %primtmp_$xs64046610092_val, %struct.SinObj** %clo646662_local5_loc, align 8
; Starting prim
%primtmp_anf_45bind64337610093_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646662_local5_loc, align 8
%primtmp_anf_45bind64337610093_val = call %struct.SinObj* @prim_null_63(%struct.SinObj* %primtmp_anf_45bind64337610093_arg_0)
store volatile %struct.SinObj* %primtmp_anf_45bind64337610093_val, %struct.SinObj** %clo646662_local6_loc, align 8
; Starting if
%if10094_reg = load volatile %struct.SinObj*, %struct.SinObj** %clo646662_local6_loc, align 8
%if10094istrue = call i1 @is_truthy_value(%struct.SinObj* %if10094_reg)
br i1 %if10094istrue, label %branch9793_45true, label %branch9793_45false
branch9793_45true:
; Starting return value.
%retval_$acc64046510095_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646662_local3_loc, align 8
store volatile %struct.SinObj* %retval_$acc64046510095_val, %struct.SinObj** @retr, align 8
%retval_$acc64046510095_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_$acc64046510095_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_$acc64046510095_fp, align 8
%retval_$acc64046510095_ra_raw = bitcast %struct.SinObj* %retval_$acc64046510095_ra to i8*
indirectbr i8* %retval_$acc64046510095_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
branch9793_45false:
; Starting prim
%primtmp_anf_45bind64337710096_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646662_local5_loc, align 8
%primtmp_anf_45bind64337710096_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_anf_45bind64337710096_arg_0)
store volatile %struct.SinObj* %primtmp_anf_45bind64337710096_val, %struct.SinObj** %clo646662_local7_loc, align 8
; Starting prim
%primtmp_anf_45bind64337810097_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646662_local5_loc, align 8
%primtmp_anf_45bind64337810097_val = call %struct.SinObj* @prim_cdr(%struct.SinObj* %primtmp_anf_45bind64337810097_arg_0)
store volatile %struct.SinObj* %primtmp_anf_45bind64337810097_val, %struct.SinObj** %clo646662_local8_loc, align 8
; Starting const-null
%datnull_args646433$$foldr640463$010098_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646433$$foldr640463$010098_val, %struct.SinObj** %clo646662_local9_loc, align 8
; Starting prim
%primtmp_args646433$$foldr640463$110099_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646662_local8_loc, align 8
%primtmp_args646433$$foldr640463$110099_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646662_local9_loc, align 8
%primtmp_args646433$$foldr640463$110099_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646433$$foldr640463$110099_arg_0, %struct.SinObj* %primtmp_args646433$$foldr640463$110099_arg_1)
store volatile %struct.SinObj* %primtmp_args646433$$foldr640463$110099_val, %struct.SinObj** %clo646662_local10_loc, align 8
; Starting prim
%primtmp_args646433$$foldr640463$210100_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646662_local3_loc, align 8
%primtmp_args646433$$foldr640463$210100_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646662_local10_loc, align 8
%primtmp_args646433$$foldr640463$210100_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646433$$foldr640463$210100_arg_0, %struct.SinObj* %primtmp_args646433$$foldr640463$210100_arg_1)
store volatile %struct.SinObj* %primtmp_args646433$$foldr640463$210100_val, %struct.SinObj** %clo646662_local11_loc, align 8
; Starting prim
%primtmp_args646433$$foldr640463$310101_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646662_local1_loc, align 8
%primtmp_args646433$$foldr640463$310101_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646662_local11_loc, align 8
%primtmp_args646433$$foldr640463$310101_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646433$$foldr640463$310101_arg_0, %struct.SinObj* %primtmp_args646433$$foldr640463$310101_arg_1)
store volatile %struct.SinObj* %primtmp_args646433$$foldr640463$310101_val, %struct.SinObj** %clo646662_local12_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind64337910102_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 21)
br i1 %bind_app_anf_45bind64337910102_has_space, label %bind_app_anf_45bind64337910102_do_call, label %bind_app_anf_45bind64337910102_overflow_first
bind_app_anf_45bind64337910102_overflow_first:
%bind_app_anf_45bind64337910102_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind64337910102_overflow_underflow_addr, i64 21)
br label %bind_app_anf_45bind64337910102_do_call
bind_app_anf_45bind64337910102_do_call:
%bind_app_anf_45bind64337910102_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646662_local0_loc, align 8
%bind_app_anf_45bind64337910102_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646662_local12_loc, align 8
%bind_app_anf_45bind64337910102_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64337910102_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64337910102_cur_fp, i64 21
store volatile %struct.SinObj** %bind_app_anf_45bind64337910102_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64337910102_return_loc = bitcast i8* blockaddress(@main, %clo646662_ret0) to %struct.SinObj*
%bind_app_anf_45bind64337910102_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64337910102_new_fp, i64 1
%bind_app_anf_45bind64337910102_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64337910102_new_fp, i64 2
%bind_app_anf_45bind64337910102_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64337910102_new_fp, i64 3
%bind_app_anf_45bind64337910102_slotscast = inttoptr i64 21 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind64337910102_return_loc, %struct.SinObj** %bind_app_anf_45bind64337910102_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64337910102_slotscast, %struct.SinObj** %bind_app_anf_45bind64337910102_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64337910102_closure, %struct.SinObj** %bind_app_anf_45bind64337910102_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64337910102_arglist, %struct.SinObj** %bind_app_anf_45bind64337910102_newarg1loc, align 8
%bind_app_anf_45bind64337910102_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind64337910102_closure)
indirectbr i8* %bind_app_anf_45bind64337910102_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646662_ret0:
%bind_app_anf_45bind64337910102_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64337910102_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64337910102_oldfp, i64 1
%bind_app_anf_45bind64337910102_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64337910102_slots_loc, align 8
%bind_app_anf_45bind64337910102_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind64337910102_slots_ptr to i64
%bind_app_anf_45bind64337910102_offset = mul i64 %bind_app_anf_45bind64337910102_slots, -1
%bind_app_anf_45bind64337910102_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64337910102_oldfp, i64 %bind_app_anf_45bind64337910102_offset
store volatile %struct.SinObj** %bind_app_anf_45bind64337910102_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643379 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643379, %struct.SinObj** %clo646662_local13_loc, align 8
; Starting const-null
%datnull_args646434$$f640464$010103_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646434$$f640464$010103_val, %struct.SinObj** %clo646662_local14_loc, align 8
; Starting prim
%primtmp_args646434$$f640464$110104_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646662_local13_loc, align 8
%primtmp_args646434$$f640464$110104_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646662_local14_loc, align 8
%primtmp_args646434$$f640464$110104_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646434$$f640464$110104_arg_0, %struct.SinObj* %primtmp_args646434$$f640464$110104_arg_1)
store volatile %struct.SinObj* %primtmp_args646434$$f640464$110104_val, %struct.SinObj** %clo646662_local15_loc, align 8
; Starting prim
%primtmp_args646434$$f640464$210105_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646662_local7_loc, align 8
%primtmp_args646434$$f640464$210105_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646662_local15_loc, align 8
%primtmp_args646434$$f640464$210105_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646434$$f640464$210105_arg_0, %struct.SinObj* %primtmp_args646434$$f640464$210105_arg_1)
store volatile %struct.SinObj* %primtmp_args646434$$f640464$210105_val, %struct.SinObj** %clo646662_local16_loc, align 8
; Starting tail-clo-app
%_tailapp_$f64046410106_clo = load volatile %struct.SinObj*, %struct.SinObj** %clo646662_local1_loc, align 8
%_tailapp_$f64046410106_args = load volatile %struct.SinObj*, %struct.SinObj** %clo646662_local16_loc, align 8
%_tailapp_$f64046410106_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%_tailapp_$f64046410106_arg0 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_$f64046410106_fp, i64 2
%_tailapp_$f64046410106_arg1 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_$f64046410106_fp, i64 3
store volatile %struct.SinObj* %_tailapp_$f64046410106_clo, %struct.SinObj** %_tailapp_$f64046410106_arg0, align 8
store volatile %struct.SinObj* %_tailapp_$f64046410106_args, %struct.SinObj** %_tailapp_$f64046410106_arg1, align 8
%_tailapp_$f64046410106_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %_tailapp_$f64046410106_clo)
indirectbr i8* %_tailapp_$f64046410106_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
; Function clo646662 finished
clo646661:
%prologue_cur_fp10107 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646661_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10107, i64 2
%clo646661_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10107, i64 3
%clo646661_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10107, i64 5
%clo646661_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10107, i64 4
; End function Prologue
; Starting prim
%primtmp_$length64046810108_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646661_arg1_loc, align 8
%primtmp_$length64046810108_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$length64046810108_arg_0)
store volatile %struct.SinObj* %primtmp_$length64046810108_val, %struct.SinObj** %clo646661_local0_loc, align 8
; Starting make-closure
%makeclo_admin_45toplevel_45bnd64655710109_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646661_local0_loc, align 8
%makeclo_admin_45toplevel_45bnd64655710109_funcaddr = bitcast i8* blockaddress(@main, %clo646660) to i8*
%makeclo_admin_45toplevel_45bnd64655710109_val = call %struct.SinObj* @closure_alloc(i64 1, i8* %makeclo_admin_45toplevel_45bnd64655710109_funcaddr)
call void @closure_place_freevar(%struct.SinObj* %makeclo_admin_45toplevel_45bnd64655710109_val, %struct.SinObj* %makeclo_admin_45toplevel_45bnd64655710109_arg_0, i64 0)
store volatile %struct.SinObj* %makeclo_admin_45toplevel_45bnd64655710109_val, %struct.SinObj** %clo646661_local1_loc, align 8
; Starting return value.
%retval_admin_45toplevel_45bnd64655710110_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646661_local1_loc, align 8
store volatile %struct.SinObj* %retval_admin_45toplevel_45bnd64655710110_val, %struct.SinObj** @retr, align 8
%retval_admin_45toplevel_45bnd64655710110_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_admin_45toplevel_45bnd64655710110_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_admin_45toplevel_45bnd64655710110_fp, align 8
%retval_admin_45toplevel_45bnd64655710110_ra_raw = bitcast %struct.SinObj* %retval_admin_45toplevel_45bnd64655710110_ra to i8*
indirectbr i8* %retval_admin_45toplevel_45bnd64655710110_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
; Function clo646661 finished
clo646660:
%prologue_cur_fp10111 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646660_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10111, i64 2
%clo646660_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10111, i64 3
%clo646660_local9_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10111, i64 13
%clo646660_local8_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10111, i64 12
%clo646660_local7_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10111, i64 11
%clo646660_local6_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10111, i64 10
%clo646660_local5_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10111, i64 9
%clo646660_local4_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10111, i64 8
%clo646660_local3_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10111, i64 7
%clo646660_local2_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10111, i64 6
%clo646660_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10111, i64 5
%clo646660_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10111, i64 4
; End function Prologue
; Starting env-ref
%envref_$length64046810112_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$length64046810112_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$length64046810112_cur_fp, i64 2
%envref_$length64046810112_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$length64046810112_cur_fp, align 8
%envref_$length64046810112_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$length64046810112_clo, i64 0)
store volatile %struct.SinObj* %envref_$length64046810112_val, %struct.SinObj** %clo646660_local0_loc, align 8
; Starting prim
%primtmp_$xs64046910113_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646660_arg1_loc, align 8
%primtmp_$xs64046910113_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$xs64046910113_arg_0)
store volatile %struct.SinObj* %primtmp_$xs64046910113_val, %struct.SinObj** %clo646660_local1_loc, align 8
; Starting prim
%primtmp_anf_45bind64338110114_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646660_local1_loc, align 8
%primtmp_anf_45bind64338110114_val = call %struct.SinObj* @prim_null_63(%struct.SinObj* %primtmp_anf_45bind64338110114_arg_0)
store volatile %struct.SinObj* %primtmp_anf_45bind64338110114_val, %struct.SinObj** %clo646660_local2_loc, align 8
; Starting if
%if10115_reg = load volatile %struct.SinObj*, %struct.SinObj** %clo646660_local2_loc, align 8
%if10115istrue = call i1 @is_truthy_value(%struct.SinObj* %if10115_reg)
br i1 %if10115istrue, label %branch9794_45true, label %branch9794_45false
branch9794_45true:
; Starting const-int
%datint_anf_45datum64338210116_val = call %struct.SinObj* @const_init_int(i64 0)
store volatile %struct.SinObj* %datint_anf_45datum64338210116_val, %struct.SinObj** %clo646660_local3_loc, align 8
; Starting return value.
%retval_anf_45datum64338210117_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646660_local3_loc, align 8
store volatile %struct.SinObj* %retval_anf_45datum64338210117_val, %struct.SinObj** @retr, align 8
%retval_anf_45datum64338210117_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_anf_45datum64338210117_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_anf_45datum64338210117_fp, align 8
%retval_anf_45datum64338210117_ra_raw = bitcast %struct.SinObj* %retval_anf_45datum64338210117_ra to i8*
indirectbr i8* %retval_anf_45datum64338210117_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
branch9794_45false:
; Starting const-int
%datint_anf_45datum64338310118_val = call %struct.SinObj* @const_init_int(i64 1)
store volatile %struct.SinObj* %datint_anf_45datum64338310118_val, %struct.SinObj** %clo646660_local4_loc, align 8
; Starting prim
%primtmp_anf_45bind64338410119_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646660_local1_loc, align 8
%primtmp_anf_45bind64338410119_val = call %struct.SinObj* @prim_cdr(%struct.SinObj* %primtmp_anf_45bind64338410119_arg_0)
store volatile %struct.SinObj* %primtmp_anf_45bind64338410119_val, %struct.SinObj** %clo646660_local5_loc, align 8
; Starting const-null
%datnull_args646438$$length640468$010120_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646438$$length640468$010120_val, %struct.SinObj** %clo646660_local6_loc, align 8
; Starting prim
%primtmp_args646438$$length640468$110121_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646660_local5_loc, align 8
%primtmp_args646438$$length640468$110121_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646660_local6_loc, align 8
%primtmp_args646438$$length640468$110121_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646438$$length640468$110121_arg_0, %struct.SinObj* %primtmp_args646438$$length640468$110121_arg_1)
store volatile %struct.SinObj* %primtmp_args646438$$length640468$110121_val, %struct.SinObj** %clo646660_local7_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind64338510122_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 14)
br i1 %bind_app_anf_45bind64338510122_has_space, label %bind_app_anf_45bind64338510122_do_call, label %bind_app_anf_45bind64338510122_overflow_first
bind_app_anf_45bind64338510122_overflow_first:
%bind_app_anf_45bind64338510122_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind64338510122_overflow_underflow_addr, i64 14)
br label %bind_app_anf_45bind64338510122_do_call
bind_app_anf_45bind64338510122_do_call:
%bind_app_anf_45bind64338510122_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646660_local0_loc, align 8
%bind_app_anf_45bind64338510122_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646660_local7_loc, align 8
%bind_app_anf_45bind64338510122_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64338510122_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64338510122_cur_fp, i64 14
store volatile %struct.SinObj** %bind_app_anf_45bind64338510122_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64338510122_return_loc = bitcast i8* blockaddress(@main, %clo646660_ret0) to %struct.SinObj*
%bind_app_anf_45bind64338510122_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64338510122_new_fp, i64 1
%bind_app_anf_45bind64338510122_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64338510122_new_fp, i64 2
%bind_app_anf_45bind64338510122_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64338510122_new_fp, i64 3
%bind_app_anf_45bind64338510122_slotscast = inttoptr i64 14 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind64338510122_return_loc, %struct.SinObj** %bind_app_anf_45bind64338510122_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64338510122_slotscast, %struct.SinObj** %bind_app_anf_45bind64338510122_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64338510122_closure, %struct.SinObj** %bind_app_anf_45bind64338510122_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64338510122_arglist, %struct.SinObj** %bind_app_anf_45bind64338510122_newarg1loc, align 8
%bind_app_anf_45bind64338510122_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind64338510122_closure)
indirectbr i8* %bind_app_anf_45bind64338510122_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646660_ret0:
%bind_app_anf_45bind64338510122_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64338510122_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64338510122_oldfp, i64 1
%bind_app_anf_45bind64338510122_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64338510122_slots_loc, align 8
%bind_app_anf_45bind64338510122_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind64338510122_slots_ptr to i64
%bind_app_anf_45bind64338510122_offset = mul i64 %bind_app_anf_45bind64338510122_slots, -1
%bind_app_anf_45bind64338510122_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64338510122_oldfp, i64 %bind_app_anf_45bind64338510122_offset
store volatile %struct.SinObj** %bind_app_anf_45bind64338510122_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643385 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643385, %struct.SinObj** %clo646660_local8_loc, align 8
; Starting prim
%primtmp_admin_45toplevel_45bnd64655810123_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646660_local4_loc, align 8
%primtmp_admin_45toplevel_45bnd64655810123_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646660_local8_loc, align 8
%primtmp_admin_45toplevel_45bnd64655810123_val = call %struct.SinObj* @prim__43(%struct.SinObj* %primtmp_admin_45toplevel_45bnd64655810123_arg_0, %struct.SinObj* %primtmp_admin_45toplevel_45bnd64655810123_arg_1)
store volatile %struct.SinObj* %primtmp_admin_45toplevel_45bnd64655810123_val, %struct.SinObj** %clo646660_local9_loc, align 8
; Starting return value.
%retval_admin_45toplevel_45bnd64655810124_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646660_local9_loc, align 8
store volatile %struct.SinObj* %retval_admin_45toplevel_45bnd64655810124_val, %struct.SinObj** @retr, align 8
%retval_admin_45toplevel_45bnd64655810124_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_admin_45toplevel_45bnd64655810124_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_admin_45toplevel_45bnd64655810124_fp, align 8
%retval_admin_45toplevel_45bnd64655810124_ra_raw = bitcast %struct.SinObj* %retval_admin_45toplevel_45bnd64655810124_ra to i8*
indirectbr i8* %retval_admin_45toplevel_45bnd64655810124_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
; Function clo646660 finished
clo646659:
%prologue_cur_fp10125 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646659_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10125, i64 2
%clo646659_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10125, i64 3
%clo646659_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10125, i64 5
%clo646659_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10125, i64 4
; End function Prologue
; Starting prim
%primtmp_$take64047110126_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646659_arg1_loc, align 8
%primtmp_$take64047110126_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$take64047110126_arg_0)
store volatile %struct.SinObj* %primtmp_$take64047110126_val, %struct.SinObj** %clo646659_local0_loc, align 8
; Starting make-closure
%makeclo_admin_45toplevel_45bnd64655910127_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646659_local0_loc, align 8
%makeclo_admin_45toplevel_45bnd64655910127_funcaddr = bitcast i8* blockaddress(@main, %clo646658) to i8*
%makeclo_admin_45toplevel_45bnd64655910127_val = call %struct.SinObj* @closure_alloc(i64 1, i8* %makeclo_admin_45toplevel_45bnd64655910127_funcaddr)
call void @closure_place_freevar(%struct.SinObj* %makeclo_admin_45toplevel_45bnd64655910127_val, %struct.SinObj* %makeclo_admin_45toplevel_45bnd64655910127_arg_0, i64 0)
store volatile %struct.SinObj* %makeclo_admin_45toplevel_45bnd64655910127_val, %struct.SinObj** %clo646659_local1_loc, align 8
; Starting return value.
%retval_admin_45toplevel_45bnd64655910128_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646659_local1_loc, align 8
store volatile %struct.SinObj* %retval_admin_45toplevel_45bnd64655910128_val, %struct.SinObj** @retr, align 8
%retval_admin_45toplevel_45bnd64655910128_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_admin_45toplevel_45bnd64655910128_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_admin_45toplevel_45bnd64655910128_fp, align 8
%retval_admin_45toplevel_45bnd64655910128_ra_raw = bitcast %struct.SinObj* %retval_admin_45toplevel_45bnd64655910128_ra to i8*
indirectbr i8* %retval_admin_45toplevel_45bnd64655910128_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
; Function clo646659 finished
clo646658:
%prologue_cur_fp10129 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646658_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10129, i64 2
%clo646658_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10129, i64 3
%clo646658_local19_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10129, i64 23
%clo646658_local18_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10129, i64 22
%clo646658_local17_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10129, i64 21
%clo646658_local16_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10129, i64 20
%clo646658_local15_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10129, i64 19
%clo646658_local14_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10129, i64 18
%clo646658_local13_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10129, i64 17
%clo646658_local12_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10129, i64 16
%clo646658_local11_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10129, i64 15
%clo646658_local10_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10129, i64 14
%clo646658_local9_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10129, i64 13
%clo646658_local8_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10129, i64 12
%clo646658_local7_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10129, i64 11
%clo646658_local6_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10129, i64 10
%clo646658_local5_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10129, i64 9
%clo646658_local4_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10129, i64 8
%clo646658_local3_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10129, i64 7
%clo646658_local2_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10129, i64 6
%clo646658_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10129, i64 5
%clo646658_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10129, i64 4
; End function Prologue
; Starting env-ref
%envref_$take64047110130_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$take64047110130_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$take64047110130_cur_fp, i64 2
%envref_$take64047110130_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$take64047110130_cur_fp, align 8
%envref_$take64047110130_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$take64047110130_clo, i64 0)
store volatile %struct.SinObj* %envref_$take64047110130_val, %struct.SinObj** %clo646658_local0_loc, align 8
; Starting prim
%primtmp_$xs64047210131_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646658_arg1_loc, align 8
%primtmp_$xs64047210131_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$xs64047210131_arg_0)
store volatile %struct.SinObj* %primtmp_$xs64047210131_val, %struct.SinObj** %clo646658_local1_loc, align 8
; Starting prim
%primtmp_arglist646441110132_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646658_arg1_loc, align 8
%primtmp_arglist646441110132_val = call %struct.SinObj* @prim_cdr(%struct.SinObj* %primtmp_arglist646441110132_arg_0)
store volatile %struct.SinObj* %primtmp_arglist646441110132_val, %struct.SinObj** %clo646658_local2_loc, align 8
; Starting prim
%primtmp_$n64047310133_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646658_local2_loc, align 8
%primtmp_$n64047310133_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$n64047310133_arg_0)
store volatile %struct.SinObj* %primtmp_$n64047310133_val, %struct.SinObj** %clo646658_local3_loc, align 8
; Starting const-int
%datint_anf_45datum64338710134_val = call %struct.SinObj* @const_init_int(i64 0)
store volatile %struct.SinObj* %datint_anf_45datum64338710134_val, %struct.SinObj** %clo646658_local4_loc, align 8
; Starting prim
%primtmp_anf_45bind64338810135_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646658_local3_loc, align 8
%primtmp_anf_45bind64338810135_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646658_local4_loc, align 8
%primtmp_anf_45bind64338810135_val = call %struct.SinObj* @prim__61(%struct.SinObj* %primtmp_anf_45bind64338810135_arg_0, %struct.SinObj* %primtmp_anf_45bind64338810135_arg_1)
store volatile %struct.SinObj* %primtmp_anf_45bind64338810135_val, %struct.SinObj** %clo646658_local5_loc, align 8
; Starting if
%if10136_reg = load volatile %struct.SinObj*, %struct.SinObj** %clo646658_local5_loc, align 8
%if10136istrue = call i1 @is_truthy_value(%struct.SinObj* %if10136_reg)
br i1 %if10136istrue, label %branch9795_45true, label %branch9795_45false
branch9795_45true:
; Starting make-closure
%makeclo_anf_45bind64338910137_funcaddr = bitcast i8* blockaddress(@main, %clo646656) to i8*
%makeclo_anf_45bind64338910137_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind64338910137_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind64338910137_val, %struct.SinObj** %clo646658_local6_loc, align 8
; Starting const-null
%datnull_args646442$anf_45bind643389$010138_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646442$anf_45bind643389$010138_val, %struct.SinObj** %clo646658_local7_loc, align 8
; Starting tail-clo-app
%_tailapp_anf_45bind64338910139_clo = load volatile %struct.SinObj*, %struct.SinObj** %clo646658_local6_loc, align 8
%_tailapp_anf_45bind64338910139_args = load volatile %struct.SinObj*, %struct.SinObj** %clo646658_local7_loc, align 8
%_tailapp_anf_45bind64338910139_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%_tailapp_anf_45bind64338910139_arg0 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_anf_45bind64338910139_fp, i64 2
%_tailapp_anf_45bind64338910139_arg1 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_anf_45bind64338910139_fp, i64 3
store volatile %struct.SinObj* %_tailapp_anf_45bind64338910139_clo, %struct.SinObj** %_tailapp_anf_45bind64338910139_arg0, align 8
store volatile %struct.SinObj* %_tailapp_anf_45bind64338910139_args, %struct.SinObj** %_tailapp_anf_45bind64338910139_arg1, align 8
%_tailapp_anf_45bind64338910139_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %_tailapp_anf_45bind64338910139_clo)
indirectbr i8* %_tailapp_anf_45bind64338910139_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
branch9795_45false:
; Starting prim
%primtmp_anf_45bind64339010140_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646658_local1_loc, align 8
%primtmp_anf_45bind64339010140_val = call %struct.SinObj* @prim_null_63(%struct.SinObj* %primtmp_anf_45bind64339010140_arg_0)
store volatile %struct.SinObj* %primtmp_anf_45bind64339010140_val, %struct.SinObj** %clo646658_local8_loc, align 8
; Starting if
%if10141_reg = load volatile %struct.SinObj*, %struct.SinObj** %clo646658_local8_loc, align 8
%if10141istrue = call i1 @is_truthy_value(%struct.SinObj* %if10141_reg)
br i1 %if10141istrue, label %branch9796_45true, label %branch9796_45false
branch9796_45true:
; Starting make-closure
%makeclo_anf_45bind64339110142_funcaddr = bitcast i8* blockaddress(@main, %clo646657) to i8*
%makeclo_anf_45bind64339110142_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind64339110142_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind64339110142_val, %struct.SinObj** %clo646658_local9_loc, align 8
; Starting const-null
%datnull_args646443$anf_45bind643391$010143_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646443$anf_45bind643391$010143_val, %struct.SinObj** %clo646658_local10_loc, align 8
; Starting tail-clo-app
%_tailapp_anf_45bind64339110144_clo = load volatile %struct.SinObj*, %struct.SinObj** %clo646658_local9_loc, align 8
%_tailapp_anf_45bind64339110144_args = load volatile %struct.SinObj*, %struct.SinObj** %clo646658_local10_loc, align 8
%_tailapp_anf_45bind64339110144_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%_tailapp_anf_45bind64339110144_arg0 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_anf_45bind64339110144_fp, i64 2
%_tailapp_anf_45bind64339110144_arg1 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_anf_45bind64339110144_fp, i64 3
store volatile %struct.SinObj* %_tailapp_anf_45bind64339110144_clo, %struct.SinObj** %_tailapp_anf_45bind64339110144_arg0, align 8
store volatile %struct.SinObj* %_tailapp_anf_45bind64339110144_args, %struct.SinObj** %_tailapp_anf_45bind64339110144_arg1, align 8
%_tailapp_anf_45bind64339110144_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %_tailapp_anf_45bind64339110144_clo)
indirectbr i8* %_tailapp_anf_45bind64339110144_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
branch9796_45false:
; Starting prim
%primtmp_anf_45bind64339210145_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646658_local1_loc, align 8
%primtmp_anf_45bind64339210145_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_anf_45bind64339210145_arg_0)
store volatile %struct.SinObj* %primtmp_anf_45bind64339210145_val, %struct.SinObj** %clo646658_local11_loc, align 8
; Starting prim
%primtmp_anf_45bind64339310146_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646658_local1_loc, align 8
%primtmp_anf_45bind64339310146_val = call %struct.SinObj* @prim_cdr(%struct.SinObj* %primtmp_anf_45bind64339310146_arg_0)
store volatile %struct.SinObj* %primtmp_anf_45bind64339310146_val, %struct.SinObj** %clo646658_local12_loc, align 8
; Starting const-int
%datint_anf_45datum64339410147_val = call %struct.SinObj* @const_init_int(i64 1)
store volatile %struct.SinObj* %datint_anf_45datum64339410147_val, %struct.SinObj** %clo646658_local13_loc, align 8
; Starting prim
%primtmp_anf_45bind64339510148_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646658_local3_loc, align 8
%primtmp_anf_45bind64339510148_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646658_local13_loc, align 8
%primtmp_anf_45bind64339510148_val = call %struct.SinObj* @prim__45(%struct.SinObj* %primtmp_anf_45bind64339510148_arg_0, %struct.SinObj* %primtmp_anf_45bind64339510148_arg_1)
store volatile %struct.SinObj* %primtmp_anf_45bind64339510148_val, %struct.SinObj** %clo646658_local14_loc, align 8
; Starting const-null
%datnull_args646444$$take640471$010149_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646444$$take640471$010149_val, %struct.SinObj** %clo646658_local15_loc, align 8
; Starting prim
%primtmp_args646444$$take640471$110150_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646658_local14_loc, align 8
%primtmp_args646444$$take640471$110150_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646658_local15_loc, align 8
%primtmp_args646444$$take640471$110150_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646444$$take640471$110150_arg_0, %struct.SinObj* %primtmp_args646444$$take640471$110150_arg_1)
store volatile %struct.SinObj* %primtmp_args646444$$take640471$110150_val, %struct.SinObj** %clo646658_local16_loc, align 8
; Starting prim
%primtmp_args646444$$take640471$210151_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646658_local12_loc, align 8
%primtmp_args646444$$take640471$210151_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646658_local16_loc, align 8
%primtmp_args646444$$take640471$210151_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646444$$take640471$210151_arg_0, %struct.SinObj* %primtmp_args646444$$take640471$210151_arg_1)
store volatile %struct.SinObj* %primtmp_args646444$$take640471$210151_val, %struct.SinObj** %clo646658_local17_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind64339610152_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 24)
br i1 %bind_app_anf_45bind64339610152_has_space, label %bind_app_anf_45bind64339610152_do_call, label %bind_app_anf_45bind64339610152_overflow_first
bind_app_anf_45bind64339610152_overflow_first:
%bind_app_anf_45bind64339610152_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind64339610152_overflow_underflow_addr, i64 24)
br label %bind_app_anf_45bind64339610152_do_call
bind_app_anf_45bind64339610152_do_call:
%bind_app_anf_45bind64339610152_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646658_local0_loc, align 8
%bind_app_anf_45bind64339610152_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646658_local17_loc, align 8
%bind_app_anf_45bind64339610152_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64339610152_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64339610152_cur_fp, i64 24
store volatile %struct.SinObj** %bind_app_anf_45bind64339610152_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64339610152_return_loc = bitcast i8* blockaddress(@main, %clo646658_ret0) to %struct.SinObj*
%bind_app_anf_45bind64339610152_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64339610152_new_fp, i64 1
%bind_app_anf_45bind64339610152_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64339610152_new_fp, i64 2
%bind_app_anf_45bind64339610152_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64339610152_new_fp, i64 3
%bind_app_anf_45bind64339610152_slotscast = inttoptr i64 24 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind64339610152_return_loc, %struct.SinObj** %bind_app_anf_45bind64339610152_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64339610152_slotscast, %struct.SinObj** %bind_app_anf_45bind64339610152_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64339610152_closure, %struct.SinObj** %bind_app_anf_45bind64339610152_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64339610152_arglist, %struct.SinObj** %bind_app_anf_45bind64339610152_newarg1loc, align 8
%bind_app_anf_45bind64339610152_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind64339610152_closure)
indirectbr i8* %bind_app_anf_45bind64339610152_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646658_ret0:
%bind_app_anf_45bind64339610152_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64339610152_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64339610152_oldfp, i64 1
%bind_app_anf_45bind64339610152_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64339610152_slots_loc, align 8
%bind_app_anf_45bind64339610152_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind64339610152_slots_ptr to i64
%bind_app_anf_45bind64339610152_offset = mul i64 %bind_app_anf_45bind64339610152_slots, -1
%bind_app_anf_45bind64339610152_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64339610152_oldfp, i64 %bind_app_anf_45bind64339610152_offset
store volatile %struct.SinObj** %bind_app_anf_45bind64339610152_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643396 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643396, %struct.SinObj** %clo646658_local18_loc, align 8
; Starting prim
%primtmp_admin_45toplevel_45bnd64656010153_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646658_local11_loc, align 8
%primtmp_admin_45toplevel_45bnd64656010153_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646658_local18_loc, align 8
%primtmp_admin_45toplevel_45bnd64656010153_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_admin_45toplevel_45bnd64656010153_arg_0, %struct.SinObj* %primtmp_admin_45toplevel_45bnd64656010153_arg_1)
store volatile %struct.SinObj* %primtmp_admin_45toplevel_45bnd64656010153_val, %struct.SinObj** %clo646658_local19_loc, align 8
; Starting return value.
%retval_admin_45toplevel_45bnd64656010154_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646658_local19_loc, align 8
store volatile %struct.SinObj* %retval_admin_45toplevel_45bnd64656010154_val, %struct.SinObj** @retr, align 8
%retval_admin_45toplevel_45bnd64656010154_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_admin_45toplevel_45bnd64656010154_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_admin_45toplevel_45bnd64656010154_fp, align 8
%retval_admin_45toplevel_45bnd64656010154_ra_raw = bitcast %struct.SinObj* %retval_admin_45toplevel_45bnd64656010154_ra to i8*
indirectbr i8* %retval_admin_45toplevel_45bnd64656010154_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
; Function clo646658 finished
clo646656:
%prologue_cur_fp10155 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646656_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10155, i64 2
%clo646656_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10155, i64 3
; End function Prologue
; Starting return value.
%retval_xs64047410156_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646656_arg1_loc, align 8
store volatile %struct.SinObj* %retval_xs64047410156_val, %struct.SinObj** @retr, align 8
%retval_xs64047410156_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_xs64047410156_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_xs64047410156_fp, align 8
%retval_xs64047410156_ra_raw = bitcast %struct.SinObj* %retval_xs64047410156_ra to i8*
indirectbr i8* %retval_xs64047410156_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
; Function clo646656 finished
clo646657:
%prologue_cur_fp10157 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646657_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10157, i64 2
%clo646657_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10157, i64 3
; End function Prologue
; Starting return value.
%retval_xs64047510158_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646657_arg1_loc, align 8
store volatile %struct.SinObj* %retval_xs64047510158_val, %struct.SinObj** @retr, align 8
%retval_xs64047510158_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_xs64047510158_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_xs64047510158_fp, align 8
%retval_xs64047510158_ra_raw = bitcast %struct.SinObj* %retval_xs64047510158_ra to i8*
indirectbr i8* %retval_xs64047510158_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
; Function clo646657 finished
clo646655:
%prologue_cur_fp10159 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646655_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10159, i64 2
%clo646655_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10159, i64 3
%clo646655_local11_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10159, i64 15
%clo646655_local10_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10159, i64 14
%clo646655_local9_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10159, i64 13
%clo646655_local8_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10159, i64 12
%clo646655_local7_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10159, i64 11
%clo646655_local6_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10159, i64 10
%clo646655_local5_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10159, i64 9
%clo646655_local4_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10159, i64 8
%clo646655_local3_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10159, i64 7
%clo646655_local2_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10159, i64 6
%clo646655_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10159, i64 5
%clo646655_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10159, i64 4
; End function Prologue
; Starting env-ref
%envref_$length64046710160_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$length64046710160_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$length64046710160_cur_fp, i64 2
%envref_$length64046710160_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$length64046710160_cur_fp, align 8
%envref_$length64046710160_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$length64046710160_clo, i64 0)
store volatile %struct.SinObj* %envref_$length64046710160_val, %struct.SinObj** %clo646655_local0_loc, align 8
; Starting env-ref
%envref_$take64047010161_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$take64047010161_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$take64047010161_cur_fp, i64 2
%envref_$take64047010161_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$take64047010161_cur_fp, align 8
%envref_$take64047010161_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$take64047010161_clo, i64 1)
store volatile %struct.SinObj* %envref_$take64047010161_val, %struct.SinObj** %clo646655_local1_loc, align 8
; Starting prim
%primtmp_$xs64047710162_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646655_arg1_loc, align 8
%primtmp_$xs64047710162_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$xs64047710162_arg_0)
store volatile %struct.SinObj* %primtmp_$xs64047710162_val, %struct.SinObj** %clo646655_local2_loc, align 8
; Starting prim
%primtmp_arglist646446110163_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646655_arg1_loc, align 8
%primtmp_arglist646446110163_val = call %struct.SinObj* @prim_cdr(%struct.SinObj* %primtmp_arglist646446110163_arg_0)
store volatile %struct.SinObj* %primtmp_arglist646446110163_val, %struct.SinObj** %clo646655_local3_loc, align 8
; Starting prim
%primtmp_$n64047810164_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646655_local3_loc, align 8
%primtmp_$n64047810164_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$n64047810164_arg_0)
store volatile %struct.SinObj* %primtmp_$n64047810164_val, %struct.SinObj** %clo646655_local4_loc, align 8
; Starting const-null
%datnull_args646447$$length640467$010165_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646447$$length640467$010165_val, %struct.SinObj** %clo646655_local5_loc, align 8
; Starting prim
%primtmp_args646447$$length640467$110166_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646655_local2_loc, align 8
%primtmp_args646447$$length640467$110166_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646655_local5_loc, align 8
%primtmp_args646447$$length640467$110166_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646447$$length640467$110166_arg_0, %struct.SinObj* %primtmp_args646447$$length640467$110166_arg_1)
store volatile %struct.SinObj* %primtmp_args646447$$length640467$110166_val, %struct.SinObj** %clo646655_local6_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind64339810167_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 16)
br i1 %bind_app_anf_45bind64339810167_has_space, label %bind_app_anf_45bind64339810167_do_call, label %bind_app_anf_45bind64339810167_overflow_first
bind_app_anf_45bind64339810167_overflow_first:
%bind_app_anf_45bind64339810167_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind64339810167_overflow_underflow_addr, i64 16)
br label %bind_app_anf_45bind64339810167_do_call
bind_app_anf_45bind64339810167_do_call:
%bind_app_anf_45bind64339810167_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646655_local0_loc, align 8
%bind_app_anf_45bind64339810167_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646655_local6_loc, align 8
%bind_app_anf_45bind64339810167_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64339810167_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64339810167_cur_fp, i64 16
store volatile %struct.SinObj** %bind_app_anf_45bind64339810167_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64339810167_return_loc = bitcast i8* blockaddress(@main, %clo646655_ret0) to %struct.SinObj*
%bind_app_anf_45bind64339810167_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64339810167_new_fp, i64 1
%bind_app_anf_45bind64339810167_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64339810167_new_fp, i64 2
%bind_app_anf_45bind64339810167_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64339810167_new_fp, i64 3
%bind_app_anf_45bind64339810167_slotscast = inttoptr i64 16 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind64339810167_return_loc, %struct.SinObj** %bind_app_anf_45bind64339810167_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64339810167_slotscast, %struct.SinObj** %bind_app_anf_45bind64339810167_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64339810167_closure, %struct.SinObj** %bind_app_anf_45bind64339810167_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64339810167_arglist, %struct.SinObj** %bind_app_anf_45bind64339810167_newarg1loc, align 8
%bind_app_anf_45bind64339810167_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind64339810167_closure)
indirectbr i8* %bind_app_anf_45bind64339810167_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646655_ret0:
%bind_app_anf_45bind64339810167_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64339810167_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64339810167_oldfp, i64 1
%bind_app_anf_45bind64339810167_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64339810167_slots_loc, align 8
%bind_app_anf_45bind64339810167_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind64339810167_slots_ptr to i64
%bind_app_anf_45bind64339810167_offset = mul i64 %bind_app_anf_45bind64339810167_slots, -1
%bind_app_anf_45bind64339810167_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64339810167_oldfp, i64 %bind_app_anf_45bind64339810167_offset
store volatile %struct.SinObj** %bind_app_anf_45bind64339810167_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643398 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643398, %struct.SinObj** %clo646655_local7_loc, align 8
; Starting prim
%primtmp_anf_45bind64339910168_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646655_local7_loc, align 8
%primtmp_anf_45bind64339910168_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646655_local4_loc, align 8
%primtmp_anf_45bind64339910168_val = call %struct.SinObj* @prim__45(%struct.SinObj* %primtmp_anf_45bind64339910168_arg_0, %struct.SinObj* %primtmp_anf_45bind64339910168_arg_1)
store volatile %struct.SinObj* %primtmp_anf_45bind64339910168_val, %struct.SinObj** %clo646655_local8_loc, align 8
; Starting const-null
%datnull_args646448$$take640470$010169_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646448$$take640470$010169_val, %struct.SinObj** %clo646655_local9_loc, align 8
; Starting prim
%primtmp_args646448$$take640470$110170_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646655_local8_loc, align 8
%primtmp_args646448$$take640470$110170_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646655_local9_loc, align 8
%primtmp_args646448$$take640470$110170_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646448$$take640470$110170_arg_0, %struct.SinObj* %primtmp_args646448$$take640470$110170_arg_1)
store volatile %struct.SinObj* %primtmp_args646448$$take640470$110170_val, %struct.SinObj** %clo646655_local10_loc, align 8
; Starting prim
%primtmp_args646448$$take640470$210171_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646655_local2_loc, align 8
%primtmp_args646448$$take640470$210171_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646655_local10_loc, align 8
%primtmp_args646448$$take640470$210171_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646448$$take640470$210171_arg_0, %struct.SinObj* %primtmp_args646448$$take640470$210171_arg_1)
store volatile %struct.SinObj* %primtmp_args646448$$take640470$210171_val, %struct.SinObj** %clo646655_local11_loc, align 8
; Starting tail-clo-app
%_tailapp_$take64047010172_clo = load volatile %struct.SinObj*, %struct.SinObj** %clo646655_local1_loc, align 8
%_tailapp_$take64047010172_args = load volatile %struct.SinObj*, %struct.SinObj** %clo646655_local11_loc, align 8
%_tailapp_$take64047010172_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%_tailapp_$take64047010172_arg0 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_$take64047010172_fp, i64 2
%_tailapp_$take64047010172_arg1 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_$take64047010172_fp, i64 3
store volatile %struct.SinObj* %_tailapp_$take64047010172_clo, %struct.SinObj** %_tailapp_$take64047010172_arg0, align 8
store volatile %struct.SinObj* %_tailapp_$take64047010172_args, %struct.SinObj** %_tailapp_$take64047010172_arg1, align 8
%_tailapp_$take64047010172_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %_tailapp_$take64047010172_clo)
indirectbr i8* %_tailapp_$take64047010172_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
; Function clo646655 finished
clo646654:
%prologue_cur_fp10173 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646654_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10173, i64 2
%clo646654_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10173, i64 3
%clo646654_local9_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10173, i64 13
%clo646654_local8_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10173, i64 12
%clo646654_local7_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10173, i64 11
%clo646654_local6_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10173, i64 10
%clo646654_local5_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10173, i64 9
%clo646654_local4_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10173, i64 8
%clo646654_local3_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10173, i64 7
%clo646654_local2_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10173, i64 6
%clo646654_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10173, i64 5
%clo646654_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10173, i64 4
; End function Prologue
; Starting env-ref
%envref_$_37_37foldl164045710174_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$_37_37foldl164045710174_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$_37_37foldl164045710174_cur_fp, i64 2
%envref_$_37_37foldl164045710174_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$_37_37foldl164045710174_cur_fp, align 8
%envref_$_37_37foldl164045710174_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$_37_37foldl164045710174_clo, i64 0)
store volatile %struct.SinObj* %envref_$_37_37foldl164045710174_val, %struct.SinObj** %clo646654_local0_loc, align 8
; Starting prim
%primtmp_$xs64048010175_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646654_arg1_loc, align 8
%primtmp_$xs64048010175_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$xs64048010175_arg_0)
store volatile %struct.SinObj* %primtmp_$xs64048010175_val, %struct.SinObj** %clo646654_local1_loc, align 8
; Starting make-closure
%makeclo_anf_45bind64340010176_funcaddr = bitcast i8* blockaddress(@main, %clo646653) to i8*
%makeclo_anf_45bind64340010176_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind64340010176_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind64340010176_val, %struct.SinObj** %clo646654_local2_loc, align 8
; Starting make-closure
%makeclo_anf_45bind64340110177_funcaddr = bitcast i8* blockaddress(@main, %clo646652) to i8*
%makeclo_anf_45bind64340110177_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind64340110177_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind64340110177_val, %struct.SinObj** %clo646654_local3_loc, align 8
; Starting const-null
%datnull_args646451$anf_45bind643401$010178_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646451$anf_45bind643401$010178_val, %struct.SinObj** %clo646654_local4_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind64340210179_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 14)
br i1 %bind_app_anf_45bind64340210179_has_space, label %bind_app_anf_45bind64340210179_do_call, label %bind_app_anf_45bind64340210179_overflow_first
bind_app_anf_45bind64340210179_overflow_first:
%bind_app_anf_45bind64340210179_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind64340210179_overflow_underflow_addr, i64 14)
br label %bind_app_anf_45bind64340210179_do_call
bind_app_anf_45bind64340210179_do_call:
%bind_app_anf_45bind64340210179_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646654_local3_loc, align 8
%bind_app_anf_45bind64340210179_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646654_local4_loc, align 8
%bind_app_anf_45bind64340210179_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64340210179_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64340210179_cur_fp, i64 14
store volatile %struct.SinObj** %bind_app_anf_45bind64340210179_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64340210179_return_loc = bitcast i8* blockaddress(@main, %clo646654_ret0) to %struct.SinObj*
%bind_app_anf_45bind64340210179_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64340210179_new_fp, i64 1
%bind_app_anf_45bind64340210179_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64340210179_new_fp, i64 2
%bind_app_anf_45bind64340210179_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64340210179_new_fp, i64 3
%bind_app_anf_45bind64340210179_slotscast = inttoptr i64 14 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind64340210179_return_loc, %struct.SinObj** %bind_app_anf_45bind64340210179_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64340210179_slotscast, %struct.SinObj** %bind_app_anf_45bind64340210179_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64340210179_closure, %struct.SinObj** %bind_app_anf_45bind64340210179_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64340210179_arglist, %struct.SinObj** %bind_app_anf_45bind64340210179_newarg1loc, align 8
%bind_app_anf_45bind64340210179_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind64340210179_closure)
indirectbr i8* %bind_app_anf_45bind64340210179_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646654_ret0:
%bind_app_anf_45bind64340210179_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64340210179_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64340210179_oldfp, i64 1
%bind_app_anf_45bind64340210179_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64340210179_slots_loc, align 8
%bind_app_anf_45bind64340210179_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind64340210179_slots_ptr to i64
%bind_app_anf_45bind64340210179_offset = mul i64 %bind_app_anf_45bind64340210179_slots, -1
%bind_app_anf_45bind64340210179_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64340210179_oldfp, i64 %bind_app_anf_45bind64340210179_offset
store volatile %struct.SinObj** %bind_app_anf_45bind64340210179_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643402 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643402, %struct.SinObj** %clo646654_local5_loc, align 8
; Starting const-null
%datnull_args646452$$_37_37foldl1640457$010180_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646452$$_37_37foldl1640457$010180_val, %struct.SinObj** %clo646654_local6_loc, align 8
; Starting prim
%primtmp_args646452$$_37_37foldl1640457$110181_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646654_local1_loc, align 8
%primtmp_args646452$$_37_37foldl1640457$110181_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646654_local6_loc, align 8
%primtmp_args646452$$_37_37foldl1640457$110181_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646452$$_37_37foldl1640457$110181_arg_0, %struct.SinObj* %primtmp_args646452$$_37_37foldl1640457$110181_arg_1)
store volatile %struct.SinObj* %primtmp_args646452$$_37_37foldl1640457$110181_val, %struct.SinObj** %clo646654_local7_loc, align 8
; Starting prim
%primtmp_args646452$$_37_37foldl1640457$210182_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646654_local5_loc, align 8
%primtmp_args646452$$_37_37foldl1640457$210182_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646654_local7_loc, align 8
%primtmp_args646452$$_37_37foldl1640457$210182_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646452$$_37_37foldl1640457$210182_arg_0, %struct.SinObj* %primtmp_args646452$$_37_37foldl1640457$210182_arg_1)
store volatile %struct.SinObj* %primtmp_args646452$$_37_37foldl1640457$210182_val, %struct.SinObj** %clo646654_local8_loc, align 8
; Starting prim
%primtmp_args646452$$_37_37foldl1640457$310183_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646654_local2_loc, align 8
%primtmp_args646452$$_37_37foldl1640457$310183_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646654_local8_loc, align 8
%primtmp_args646452$$_37_37foldl1640457$310183_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646452$$_37_37foldl1640457$310183_arg_0, %struct.SinObj* %primtmp_args646452$$_37_37foldl1640457$310183_arg_1)
store volatile %struct.SinObj* %primtmp_args646452$$_37_37foldl1640457$310183_val, %struct.SinObj** %clo646654_local9_loc, align 8
; Starting tail-clo-app
%_tailapp_$_37_37foldl164045710184_clo = load volatile %struct.SinObj*, %struct.SinObj** %clo646654_local0_loc, align 8
%_tailapp_$_37_37foldl164045710184_args = load volatile %struct.SinObj*, %struct.SinObj** %clo646654_local9_loc, align 8
%_tailapp_$_37_37foldl164045710184_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%_tailapp_$_37_37foldl164045710184_arg0 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_$_37_37foldl164045710184_fp, i64 2
%_tailapp_$_37_37foldl164045710184_arg1 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_$_37_37foldl164045710184_fp, i64 3
store volatile %struct.SinObj* %_tailapp_$_37_37foldl164045710184_clo, %struct.SinObj** %_tailapp_$_37_37foldl164045710184_arg0, align 8
store volatile %struct.SinObj* %_tailapp_$_37_37foldl164045710184_args, %struct.SinObj** %_tailapp_$_37_37foldl164045710184_arg1, align 8
%_tailapp_$_37_37foldl164045710184_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %_tailapp_$_37_37foldl164045710184_clo)
indirectbr i8* %_tailapp_$_37_37foldl164045710184_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
; Function clo646654 finished
clo646653:
%prologue_cur_fp10185 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646653_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10185, i64 2
%clo646653_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10185, i64 3
%clo646653_local2_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10185, i64 6
%clo646653_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10185, i64 5
%clo646653_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10185, i64 4
; End function Prologue
; Starting prim
%primtmp_$x64048110186_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646653_arg1_loc, align 8
%primtmp_$x64048110186_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$x64048110186_arg_0)
store volatile %struct.SinObj* %primtmp_$x64048110186_val, %struct.SinObj** %clo646653_local0_loc, align 8
; Starting prim
%primtmp_arglist646450110187_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646653_arg1_loc, align 8
%primtmp_arglist646450110187_val = call %struct.SinObj* @prim_cdr(%struct.SinObj* %primtmp_arglist646450110187_arg_0)
store volatile %struct.SinObj* %primtmp_arglist646450110187_val, %struct.SinObj** %clo646653_local1_loc, align 8
; Starting prim
%primtmp_$y64048210188_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646653_local1_loc, align 8
%primtmp_$y64048210188_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$y64048210188_arg_0)
store volatile %struct.SinObj* %primtmp_$y64048210188_val, %struct.SinObj** %clo646653_local2_loc, align 8
; Starting return value.
%retval_$x64048110189_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646653_local0_loc, align 8
store volatile %struct.SinObj* %retval_$x64048110189_val, %struct.SinObj** @retr, align 8
%retval_$x64048110189_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_$x64048110189_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_$x64048110189_fp, align 8
%retval_$x64048110189_ra_raw = bitcast %struct.SinObj* %retval_$x64048110189_ra to i8*
indirectbr i8* %retval_$x64048110189_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
; Function clo646653 finished
clo646652:
%prologue_cur_fp10190 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646652_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10190, i64 2
%clo646652_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10190, i64 3
; End function Prologue
; Starting return value.
%retval_xs64048310191_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646652_arg1_loc, align 8
store volatile %struct.SinObj* %retval_xs64048310191_val, %struct.SinObj** @retr, align 8
%retval_xs64048310191_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_xs64048310191_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_xs64048310191_fp, align 8
%retval_xs64048310191_ra_raw = bitcast %struct.SinObj* %retval_xs64048310191_ra to i8*
indirectbr i8* %retval_xs64048310191_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
; Function clo646652 finished
clo646651:
%prologue_cur_fp10192 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646651_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10192, i64 2
%clo646651_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10192, i64 3
%clo646651_local4_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10192, i64 8
%clo646651_local3_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10192, i64 7
%clo646651_local2_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10192, i64 6
%clo646651_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10192, i64 5
%clo646651_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10192, i64 4
; End function Prologue
; Starting env-ref
%envref_$_37_37foldl164045710193_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$_37_37foldl164045710193_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$_37_37foldl164045710193_cur_fp, i64 2
%envref_$_37_37foldl164045710193_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$_37_37foldl164045710193_cur_fp, align 8
%envref_$_37_37foldl164045710193_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$_37_37foldl164045710193_clo, i64 0)
store volatile %struct.SinObj* %envref_$_37_37foldl164045710193_val, %struct.SinObj** %clo646651_local0_loc, align 8
; Starting env-ref
%envref_$_37_37foldr164046210194_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$_37_37foldr164046210194_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$_37_37foldr164046210194_cur_fp, i64 2
%envref_$_37_37foldr164046210194_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$_37_37foldr164046210194_cur_fp, align 8
%envref_$_37_37foldr164046210194_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$_37_37foldr164046210194_clo, i64 1)
store volatile %struct.SinObj* %envref_$_37_37foldr164046210194_val, %struct.SinObj** %clo646651_local1_loc, align 8
; Starting env-ref
%envref_$_37_37map164045210195_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$_37_37map164045210195_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$_37_37map164045210195_cur_fp, i64 2
%envref_$_37_37map164045210195_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$_37_37map164045210195_cur_fp, align 8
%envref_$_37_37map164045210195_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$_37_37map164045210195_clo, i64 2)
store volatile %struct.SinObj* %envref_$_37_37map164045210195_val, %struct.SinObj** %clo646651_local2_loc, align 8
; Starting prim
%primtmp_$foldr64048510196_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646651_arg1_loc, align 8
%primtmp_$foldr64048510196_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$foldr64048510196_arg_0)
store volatile %struct.SinObj* %primtmp_$foldr64048510196_val, %struct.SinObj** %clo646651_local3_loc, align 8
; Starting make-closure
%makeclo_admin_45toplevel_45bnd64656110197_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646651_local3_loc, align 8
%makeclo_admin_45toplevel_45bnd64656110197_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646651_local0_loc, align 8
%makeclo_admin_45toplevel_45bnd64656110197_arg_2 = load volatile %struct.SinObj*, %struct.SinObj** %clo646651_local1_loc, align 8
%makeclo_admin_45toplevel_45bnd64656110197_arg_3 = load volatile %struct.SinObj*, %struct.SinObj** %clo646651_local2_loc, align 8
%makeclo_admin_45toplevel_45bnd64656110197_funcaddr = bitcast i8* blockaddress(@main, %clo646650) to i8*
%makeclo_admin_45toplevel_45bnd64656110197_val = call %struct.SinObj* @closure_alloc(i64 4, i8* %makeclo_admin_45toplevel_45bnd64656110197_funcaddr)
call void @closure_place_freevar(%struct.SinObj* %makeclo_admin_45toplevel_45bnd64656110197_val, %struct.SinObj* %makeclo_admin_45toplevel_45bnd64656110197_arg_0, i64 0)
call void @closure_place_freevar(%struct.SinObj* %makeclo_admin_45toplevel_45bnd64656110197_val, %struct.SinObj* %makeclo_admin_45toplevel_45bnd64656110197_arg_1, i64 1)
call void @closure_place_freevar(%struct.SinObj* %makeclo_admin_45toplevel_45bnd64656110197_val, %struct.SinObj* %makeclo_admin_45toplevel_45bnd64656110197_arg_2, i64 2)
call void @closure_place_freevar(%struct.SinObj* %makeclo_admin_45toplevel_45bnd64656110197_val, %struct.SinObj* %makeclo_admin_45toplevel_45bnd64656110197_arg_3, i64 3)
store volatile %struct.SinObj* %makeclo_admin_45toplevel_45bnd64656110197_val, %struct.SinObj** %clo646651_local4_loc, align 8
; Starting return value.
%retval_admin_45toplevel_45bnd64656110198_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646651_local4_loc, align 8
store volatile %struct.SinObj* %retval_admin_45toplevel_45bnd64656110198_val, %struct.SinObj** @retr, align 8
%retval_admin_45toplevel_45bnd64656110198_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_admin_45toplevel_45bnd64656110198_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_admin_45toplevel_45bnd64656110198_fp, align 8
%retval_admin_45toplevel_45bnd64656110198_ra_raw = bitcast %struct.SinObj* %retval_admin_45toplevel_45bnd64656110198_ra to i8*
indirectbr i8* %retval_admin_45toplevel_45bnd64656110198_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
; Function clo646651 finished
clo646650:
%prologue_cur_fp10199 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646650_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 2
%clo646650_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 3
%clo646650_local38_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 42
%clo646650_local37_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 41
%clo646650_local36_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 40
%clo646650_local35_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 39
%clo646650_local34_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 38
%clo646650_local33_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 37
%clo646650_local32_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 36
%clo646650_local31_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 35
%clo646650_local30_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 34
%clo646650_local29_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 33
%clo646650_local28_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 32
%clo646650_local27_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 31
%clo646650_local26_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 30
%clo646650_local25_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 29
%clo646650_local24_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 28
%clo646650_local23_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 27
%clo646650_local22_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 26
%clo646650_local21_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 25
%clo646650_local20_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 24
%clo646650_local19_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 23
%clo646650_local18_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 22
%clo646650_local17_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 21
%clo646650_local16_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 20
%clo646650_local15_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 19
%clo646650_local14_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 18
%clo646650_local13_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 17
%clo646650_local12_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 16
%clo646650_local11_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 15
%clo646650_local10_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 14
%clo646650_local9_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 13
%clo646650_local8_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 12
%clo646650_local7_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 11
%clo646650_local6_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 10
%clo646650_local5_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 9
%clo646650_local4_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 8
%clo646650_local3_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 7
%clo646650_local2_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 6
%clo646650_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 5
%clo646650_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10199, i64 4
; End function Prologue
; Starting env-ref
%envref_$foldr64048510200_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$foldr64048510200_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$foldr64048510200_cur_fp, i64 2
%envref_$foldr64048510200_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$foldr64048510200_cur_fp, align 8
%envref_$foldr64048510200_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$foldr64048510200_clo, i64 0)
store volatile %struct.SinObj* %envref_$foldr64048510200_val, %struct.SinObj** %clo646650_local0_loc, align 8
; Starting env-ref
%envref_$_37_37foldl164045710201_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$_37_37foldl164045710201_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$_37_37foldl164045710201_cur_fp, i64 2
%envref_$_37_37foldl164045710201_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$_37_37foldl164045710201_cur_fp, align 8
%envref_$_37_37foldl164045710201_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$_37_37foldl164045710201_clo, i64 1)
store volatile %struct.SinObj* %envref_$_37_37foldl164045710201_val, %struct.SinObj** %clo646650_local1_loc, align 8
; Starting env-ref
%envref_$_37_37foldr164046210202_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$_37_37foldr164046210202_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$_37_37foldr164046210202_cur_fp, i64 2
%envref_$_37_37foldr164046210202_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$_37_37foldr164046210202_cur_fp, align 8
%envref_$_37_37foldr164046210202_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$_37_37foldr164046210202_clo, i64 2)
store volatile %struct.SinObj* %envref_$_37_37foldr164046210202_val, %struct.SinObj** %clo646650_local2_loc, align 8
; Starting env-ref
%envref_$_37_37map164045210203_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$_37_37map164045210203_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$_37_37map164045210203_cur_fp, i64 2
%envref_$_37_37map164045210203_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$_37_37map164045210203_cur_fp, align 8
%envref_$_37_37map164045210203_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$_37_37map164045210203_clo, i64 3)
store volatile %struct.SinObj* %envref_$_37_37map164045210203_val, %struct.SinObj** %clo646650_local3_loc, align 8
; Starting prim
%primtmp_$f64048710204_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_arg1_loc, align 8
%primtmp_$f64048710204_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$f64048710204_arg_0)
store volatile %struct.SinObj* %primtmp_$f64048710204_val, %struct.SinObj** %clo646650_local4_loc, align 8
; Starting prim
%primtmp_$_37_37vararg63062664048810205_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_arg1_loc, align 8
%primtmp_$_37_37vararg63062664048810205_val = call %struct.SinObj* @prim_cdr(%struct.SinObj* %primtmp_$_37_37vararg63062664048810205_arg_0)
store volatile %struct.SinObj* %primtmp_$_37_37vararg63062664048810205_val, %struct.SinObj** %clo646650_local5_loc, align 8
; Starting prim
%primtmp_$acc64048910206_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local5_loc, align 8
%primtmp_$acc64048910206_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$acc64048910206_arg_0)
store volatile %struct.SinObj* %primtmp_$acc64048910206_val, %struct.SinObj** %clo646650_local6_loc, align 8
; Starting prim
%primtmp_$_37_37vararg63062664049010207_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local5_loc, align 8
%primtmp_$_37_37vararg63062664049010207_val = call %struct.SinObj* @prim_cdr(%struct.SinObj* %primtmp_$_37_37vararg63062664049010207_arg_0)
store volatile %struct.SinObj* %primtmp_$_37_37vararg63062664049010207_val, %struct.SinObj** %clo646650_local7_loc, align 8
; Starting alias
%$lsts640491 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local7_loc, align 8
store volatile %struct.SinObj* %$lsts640491, %struct.SinObj** %clo646650_local8_loc, align 8
; Starting make-closure
%makeclo_anf_45bind64340310209_funcaddr = bitcast i8* blockaddress(@main, %clo646649) to i8*
%makeclo_anf_45bind64340310209_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind64340310209_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind64340310209_val, %struct.SinObj** %clo646650_local9_loc, align 8
; Starting const-bool
%datbool_anf_45datum64340410210_val = call %struct.SinObj* @const_init_false()
store volatile %struct.SinObj* %datbool_anf_45datum64340410210_val, %struct.SinObj** %clo646650_local10_loc, align 8
; Starting const-null
%datnull_args646455$$_37_37foldl1640457$010211_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646455$$_37_37foldl1640457$010211_val, %struct.SinObj** %clo646650_local11_loc, align 8
; Starting prim
%primtmp_args646455$$_37_37foldl1640457$110212_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local8_loc, align 8
%primtmp_args646455$$_37_37foldl1640457$110212_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local11_loc, align 8
%primtmp_args646455$$_37_37foldl1640457$110212_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646455$$_37_37foldl1640457$110212_arg_0, %struct.SinObj* %primtmp_args646455$$_37_37foldl1640457$110212_arg_1)
store volatile %struct.SinObj* %primtmp_args646455$$_37_37foldl1640457$110212_val, %struct.SinObj** %clo646650_local12_loc, align 8
; Starting prim
%primtmp_args646455$$_37_37foldl1640457$210213_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local10_loc, align 8
%primtmp_args646455$$_37_37foldl1640457$210213_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local12_loc, align 8
%primtmp_args646455$$_37_37foldl1640457$210213_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646455$$_37_37foldl1640457$210213_arg_0, %struct.SinObj* %primtmp_args646455$$_37_37foldl1640457$210213_arg_1)
store volatile %struct.SinObj* %primtmp_args646455$$_37_37foldl1640457$210213_val, %struct.SinObj** %clo646650_local13_loc, align 8
; Starting prim
%primtmp_args646455$$_37_37foldl1640457$310214_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local9_loc, align 8
%primtmp_args646455$$_37_37foldl1640457$310214_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local13_loc, align 8
%primtmp_args646455$$_37_37foldl1640457$310214_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646455$$_37_37foldl1640457$310214_arg_0, %struct.SinObj* %primtmp_args646455$$_37_37foldl1640457$310214_arg_1)
store volatile %struct.SinObj* %primtmp_args646455$$_37_37foldl1640457$310214_val, %struct.SinObj** %clo646650_local14_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind64340510215_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 43)
br i1 %bind_app_anf_45bind64340510215_has_space, label %bind_app_anf_45bind64340510215_do_call, label %bind_app_anf_45bind64340510215_overflow_first
bind_app_anf_45bind64340510215_overflow_first:
%bind_app_anf_45bind64340510215_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind64340510215_overflow_underflow_addr, i64 43)
br label %bind_app_anf_45bind64340510215_do_call
bind_app_anf_45bind64340510215_do_call:
%bind_app_anf_45bind64340510215_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local1_loc, align 8
%bind_app_anf_45bind64340510215_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local14_loc, align 8
%bind_app_anf_45bind64340510215_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64340510215_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64340510215_cur_fp, i64 43
store volatile %struct.SinObj** %bind_app_anf_45bind64340510215_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64340510215_return_loc = bitcast i8* blockaddress(@main, %clo646650_ret0) to %struct.SinObj*
%bind_app_anf_45bind64340510215_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64340510215_new_fp, i64 1
%bind_app_anf_45bind64340510215_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64340510215_new_fp, i64 2
%bind_app_anf_45bind64340510215_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64340510215_new_fp, i64 3
%bind_app_anf_45bind64340510215_slotscast = inttoptr i64 43 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind64340510215_return_loc, %struct.SinObj** %bind_app_anf_45bind64340510215_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64340510215_slotscast, %struct.SinObj** %bind_app_anf_45bind64340510215_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64340510215_closure, %struct.SinObj** %bind_app_anf_45bind64340510215_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64340510215_arglist, %struct.SinObj** %bind_app_anf_45bind64340510215_newarg1loc, align 8
%bind_app_anf_45bind64340510215_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind64340510215_closure)
indirectbr i8* %bind_app_anf_45bind64340510215_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646650_ret0:
%bind_app_anf_45bind64340510215_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64340510215_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64340510215_oldfp, i64 1
%bind_app_anf_45bind64340510215_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64340510215_slots_loc, align 8
%bind_app_anf_45bind64340510215_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind64340510215_slots_ptr to i64
%bind_app_anf_45bind64340510215_offset = mul i64 %bind_app_anf_45bind64340510215_slots, -1
%bind_app_anf_45bind64340510215_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64340510215_oldfp, i64 %bind_app_anf_45bind64340510215_offset
store volatile %struct.SinObj** %bind_app_anf_45bind64340510215_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643405 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643405, %struct.SinObj** %clo646650_local15_loc, align 8
; Starting if
%if10216_reg = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local15_loc, align 8
%if10216istrue = call i1 @is_truthy_value(%struct.SinObj* %if10216_reg)
br i1 %if10216istrue, label %branch9797_45true, label %branch9797_45false
branch9797_45true:
; Starting return value.
%retval_$acc64048910217_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local6_loc, align 8
store volatile %struct.SinObj* %retval_$acc64048910217_val, %struct.SinObj** @retr, align 8
%retval_$acc64048910217_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_$acc64048910217_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_$acc64048910217_fp, align 8
%retval_$acc64048910217_ra_raw = bitcast %struct.SinObj* %retval_$acc64048910217_ra to i8*
indirectbr i8* %retval_$acc64048910217_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
branch9797_45false:
; Starting make-closure
%makeclo_anf_45bind64340610218_funcaddr = bitcast i8* blockaddress(@main, %clo646648) to i8*
%makeclo_anf_45bind64340610218_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind64340610218_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind64340610218_val, %struct.SinObj** %clo646650_local16_loc, align 8
; Starting const-null
%datnull_args646456$$_37_37map1640452$010219_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646456$$_37_37map1640452$010219_val, %struct.SinObj** %clo646650_local17_loc, align 8
; Starting prim
%primtmp_args646456$$_37_37map1640452$110220_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local8_loc, align 8
%primtmp_args646456$$_37_37map1640452$110220_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local17_loc, align 8
%primtmp_args646456$$_37_37map1640452$110220_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646456$$_37_37map1640452$110220_arg_0, %struct.SinObj* %primtmp_args646456$$_37_37map1640452$110220_arg_1)
store volatile %struct.SinObj* %primtmp_args646456$$_37_37map1640452$110220_val, %struct.SinObj** %clo646650_local18_loc, align 8
; Starting prim
%primtmp_args646456$$_37_37map1640452$210221_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local16_loc, align 8
%primtmp_args646456$$_37_37map1640452$210221_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local18_loc, align 8
%primtmp_args646456$$_37_37map1640452$210221_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646456$$_37_37map1640452$210221_arg_0, %struct.SinObj* %primtmp_args646456$$_37_37map1640452$210221_arg_1)
store volatile %struct.SinObj* %primtmp_args646456$$_37_37map1640452$210221_val, %struct.SinObj** %clo646650_local19_loc, align 8
; Starting direct clo-app
%bind_app_$lsts_4364049410222_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 43)
br i1 %bind_app_$lsts_4364049410222_has_space, label %bind_app_$lsts_4364049410222_do_call, label %bind_app_$lsts_4364049410222_overflow_first
bind_app_$lsts_4364049410222_overflow_first:
%bind_app_$lsts_4364049410222_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_$lsts_4364049410222_overflow_underflow_addr, i64 43)
br label %bind_app_$lsts_4364049410222_do_call
bind_app_$lsts_4364049410222_do_call:
%bind_app_$lsts_4364049410222_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local3_loc, align 8
%bind_app_$lsts_4364049410222_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local19_loc, align 8
%bind_app_$lsts_4364049410222_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$lsts_4364049410222_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$lsts_4364049410222_cur_fp, i64 43
store volatile %struct.SinObj** %bind_app_$lsts_4364049410222_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_$lsts_4364049410222_return_loc = bitcast i8* blockaddress(@main, %clo646650_ret1) to %struct.SinObj*
%bind_app_$lsts_4364049410222_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$lsts_4364049410222_new_fp, i64 1
%bind_app_$lsts_4364049410222_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$lsts_4364049410222_new_fp, i64 2
%bind_app_$lsts_4364049410222_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$lsts_4364049410222_new_fp, i64 3
%bind_app_$lsts_4364049410222_slotscast = inttoptr i64 43 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_$lsts_4364049410222_return_loc, %struct.SinObj** %bind_app_$lsts_4364049410222_new_fp, align 8
store volatile %struct.SinObj* %bind_app_$lsts_4364049410222_slotscast, %struct.SinObj** %bind_app_$lsts_4364049410222_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_$lsts_4364049410222_closure, %struct.SinObj** %bind_app_$lsts_4364049410222_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_$lsts_4364049410222_arglist, %struct.SinObj** %bind_app_$lsts_4364049410222_newarg1loc, align 8
%bind_app_$lsts_4364049410222_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_$lsts_4364049410222_closure)
indirectbr i8* %bind_app_$lsts_4364049410222_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646650_ret1:
%bind_app_$lsts_4364049410222_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$lsts_4364049410222_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$lsts_4364049410222_oldfp, i64 1
%bind_app_$lsts_4364049410222_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_$lsts_4364049410222_slots_loc, align 8
%bind_app_$lsts_4364049410222_slots = ptrtoint %struct.SinObj* %bind_app_$lsts_4364049410222_slots_ptr to i64
%bind_app_$lsts_4364049410222_offset = mul i64 %bind_app_$lsts_4364049410222_slots, -1
%bind_app_$lsts_4364049410222_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$lsts_4364049410222_oldfp, i64 %bind_app_$lsts_4364049410222_offset
store volatile %struct.SinObj** %bind_app_$lsts_4364049410222_after_new_fp, %struct.SinObj*** @fpr, align 8
%$lsts_43640494 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %$lsts_43640494, %struct.SinObj** %clo646650_local20_loc, align 8
; Starting make-closure
%makeclo_anf_45bind64340710223_funcaddr = bitcast i8* blockaddress(@main, %clo646647) to i8*
%makeclo_anf_45bind64340710223_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind64340710223_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind64340710223_val, %struct.SinObj** %clo646650_local21_loc, align 8
; Starting const-null
%datnull_args646457$$_37_37map1640452$010224_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646457$$_37_37map1640452$010224_val, %struct.SinObj** %clo646650_local22_loc, align 8
; Starting prim
%primtmp_args646457$$_37_37map1640452$110225_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local8_loc, align 8
%primtmp_args646457$$_37_37map1640452$110225_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local22_loc, align 8
%primtmp_args646457$$_37_37map1640452$110225_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646457$$_37_37map1640452$110225_arg_0, %struct.SinObj* %primtmp_args646457$$_37_37map1640452$110225_arg_1)
store volatile %struct.SinObj* %primtmp_args646457$$_37_37map1640452$110225_val, %struct.SinObj** %clo646650_local23_loc, align 8
; Starting prim
%primtmp_args646457$$_37_37map1640452$210226_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local21_loc, align 8
%primtmp_args646457$$_37_37map1640452$210226_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local23_loc, align 8
%primtmp_args646457$$_37_37map1640452$210226_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646457$$_37_37map1640452$210226_arg_0, %struct.SinObj* %primtmp_args646457$$_37_37map1640452$210226_arg_1)
store volatile %struct.SinObj* %primtmp_args646457$$_37_37map1640452$210226_val, %struct.SinObj** %clo646650_local24_loc, align 8
; Starting direct clo-app
%bind_app_$vs64049610227_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 43)
br i1 %bind_app_$vs64049610227_has_space, label %bind_app_$vs64049610227_do_call, label %bind_app_$vs64049610227_overflow_first
bind_app_$vs64049610227_overflow_first:
%bind_app_$vs64049610227_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_$vs64049610227_overflow_underflow_addr, i64 43)
br label %bind_app_$vs64049610227_do_call
bind_app_$vs64049610227_do_call:
%bind_app_$vs64049610227_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local3_loc, align 8
%bind_app_$vs64049610227_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local24_loc, align 8
%bind_app_$vs64049610227_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$vs64049610227_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$vs64049610227_cur_fp, i64 43
store volatile %struct.SinObj** %bind_app_$vs64049610227_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_$vs64049610227_return_loc = bitcast i8* blockaddress(@main, %clo646650_ret2) to %struct.SinObj*
%bind_app_$vs64049610227_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$vs64049610227_new_fp, i64 1
%bind_app_$vs64049610227_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$vs64049610227_new_fp, i64 2
%bind_app_$vs64049610227_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$vs64049610227_new_fp, i64 3
%bind_app_$vs64049610227_slotscast = inttoptr i64 43 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_$vs64049610227_return_loc, %struct.SinObj** %bind_app_$vs64049610227_new_fp, align 8
store volatile %struct.SinObj* %bind_app_$vs64049610227_slotscast, %struct.SinObj** %bind_app_$vs64049610227_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_$vs64049610227_closure, %struct.SinObj** %bind_app_$vs64049610227_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_$vs64049610227_arglist, %struct.SinObj** %bind_app_$vs64049610227_newarg1loc, align 8
%bind_app_$vs64049610227_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_$vs64049610227_closure)
indirectbr i8* %bind_app_$vs64049610227_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646650_ret2:
%bind_app_$vs64049610227_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$vs64049610227_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$vs64049610227_oldfp, i64 1
%bind_app_$vs64049610227_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_$vs64049610227_slots_loc, align 8
%bind_app_$vs64049610227_slots = ptrtoint %struct.SinObj* %bind_app_$vs64049610227_slots_ptr to i64
%bind_app_$vs64049610227_offset = mul i64 %bind_app_$vs64049610227_slots, -1
%bind_app_$vs64049610227_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$vs64049610227_oldfp, i64 %bind_app_$vs64049610227_offset
store volatile %struct.SinObj** %bind_app_$vs64049610227_after_new_fp, %struct.SinObj*** @fpr, align 8
%$vs640496 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %$vs640496, %struct.SinObj** %clo646650_local25_loc, align 8
; Starting make-closure
%makeclo_anf_45bind64340810228_funcaddr = bitcast i8* blockaddress(@main, %clo646646) to i8*
%makeclo_anf_45bind64340810228_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind64340810228_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind64340810228_val, %struct.SinObj** %clo646650_local26_loc, align 8
; Starting prim
%primtmp_anf_45bind64340910229_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local6_loc, align 8
%primtmp_anf_45bind64340910229_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local20_loc, align 8
%primtmp_anf_45bind64340910229_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_anf_45bind64340910229_arg_0, %struct.SinObj* %primtmp_anf_45bind64340910229_arg_1)
store volatile %struct.SinObj* %primtmp_anf_45bind64340910229_val, %struct.SinObj** %clo646650_local27_loc, align 8
; Starting prim
%primtmp_anf_45bind64341010230_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local4_loc, align 8
%primtmp_anf_45bind64341010230_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local27_loc, align 8
%primtmp_anf_45bind64341010230_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_anf_45bind64341010230_arg_0, %struct.SinObj* %primtmp_anf_45bind64341010230_arg_1)
store volatile %struct.SinObj* %primtmp_anf_45bind64341010230_val, %struct.SinObj** %clo646650_local28_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind64341110231_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 43)
br i1 %bind_app_anf_45bind64341110231_has_space, label %bind_app_anf_45bind64341110231_do_call, label %bind_app_anf_45bind64341110231_overflow_first
bind_app_anf_45bind64341110231_overflow_first:
%bind_app_anf_45bind64341110231_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind64341110231_overflow_underflow_addr, i64 43)
br label %bind_app_anf_45bind64341110231_do_call
bind_app_anf_45bind64341110231_do_call:
%bind_app_anf_45bind64341110231_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local0_loc, align 8
%bind_app_anf_45bind64341110231_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local28_loc, align 8
%bind_app_anf_45bind64341110231_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64341110231_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341110231_cur_fp, i64 43
store volatile %struct.SinObj** %bind_app_anf_45bind64341110231_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64341110231_return_loc = bitcast i8* blockaddress(@main, %clo646650_ret3) to %struct.SinObj*
%bind_app_anf_45bind64341110231_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341110231_new_fp, i64 1
%bind_app_anf_45bind64341110231_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341110231_new_fp, i64 2
%bind_app_anf_45bind64341110231_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341110231_new_fp, i64 3
%bind_app_anf_45bind64341110231_slotscast = inttoptr i64 43 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind64341110231_return_loc, %struct.SinObj** %bind_app_anf_45bind64341110231_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64341110231_slotscast, %struct.SinObj** %bind_app_anf_45bind64341110231_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64341110231_closure, %struct.SinObj** %bind_app_anf_45bind64341110231_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64341110231_arglist, %struct.SinObj** %bind_app_anf_45bind64341110231_newarg1loc, align 8
%bind_app_anf_45bind64341110231_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind64341110231_closure)
indirectbr i8* %bind_app_anf_45bind64341110231_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646650_ret3:
%bind_app_anf_45bind64341110231_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64341110231_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341110231_oldfp, i64 1
%bind_app_anf_45bind64341110231_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341110231_slots_loc, align 8
%bind_app_anf_45bind64341110231_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind64341110231_slots_ptr to i64
%bind_app_anf_45bind64341110231_offset = mul i64 %bind_app_anf_45bind64341110231_slots, -1
%bind_app_anf_45bind64341110231_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341110231_oldfp, i64 %bind_app_anf_45bind64341110231_offset
store volatile %struct.SinObj** %bind_app_anf_45bind64341110231_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643411 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643411, %struct.SinObj** %clo646650_local29_loc, align 8
; Starting make-closure
%makeclo_anf_45bind64341210232_funcaddr = bitcast i8* blockaddress(@main, %clo646645) to i8*
%makeclo_anf_45bind64341210232_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind64341210232_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind64341210232_val, %struct.SinObj** %clo646650_local30_loc, align 8
; Starting const-null
%datnull_args646459$anf_45bind643412$010233_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646459$anf_45bind643412$010233_val, %struct.SinObj** %clo646650_local31_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind64341310234_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 43)
br i1 %bind_app_anf_45bind64341310234_has_space, label %bind_app_anf_45bind64341310234_do_call, label %bind_app_anf_45bind64341310234_overflow_first
bind_app_anf_45bind64341310234_overflow_first:
%bind_app_anf_45bind64341310234_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind64341310234_overflow_underflow_addr, i64 43)
br label %bind_app_anf_45bind64341310234_do_call
bind_app_anf_45bind64341310234_do_call:
%bind_app_anf_45bind64341310234_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local30_loc, align 8
%bind_app_anf_45bind64341310234_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local31_loc, align 8
%bind_app_anf_45bind64341310234_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64341310234_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341310234_cur_fp, i64 43
store volatile %struct.SinObj** %bind_app_anf_45bind64341310234_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64341310234_return_loc = bitcast i8* blockaddress(@main, %clo646650_ret4) to %struct.SinObj*
%bind_app_anf_45bind64341310234_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341310234_new_fp, i64 1
%bind_app_anf_45bind64341310234_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341310234_new_fp, i64 2
%bind_app_anf_45bind64341310234_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341310234_new_fp, i64 3
%bind_app_anf_45bind64341310234_slotscast = inttoptr i64 43 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind64341310234_return_loc, %struct.SinObj** %bind_app_anf_45bind64341310234_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64341310234_slotscast, %struct.SinObj** %bind_app_anf_45bind64341310234_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64341310234_closure, %struct.SinObj** %bind_app_anf_45bind64341310234_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64341310234_arglist, %struct.SinObj** %bind_app_anf_45bind64341310234_newarg1loc, align 8
%bind_app_anf_45bind64341310234_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind64341310234_closure)
indirectbr i8* %bind_app_anf_45bind64341310234_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646650_ret4:
%bind_app_anf_45bind64341310234_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64341310234_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341310234_oldfp, i64 1
%bind_app_anf_45bind64341310234_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341310234_slots_loc, align 8
%bind_app_anf_45bind64341310234_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind64341310234_slots_ptr to i64
%bind_app_anf_45bind64341310234_offset = mul i64 %bind_app_anf_45bind64341310234_slots, -1
%bind_app_anf_45bind64341310234_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341310234_oldfp, i64 %bind_app_anf_45bind64341310234_offset
store volatile %struct.SinObj** %bind_app_anf_45bind64341310234_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643413 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643413, %struct.SinObj** %clo646650_local32_loc, align 8
; Starting prim
%primtmp_anf_45bind64341410235_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local29_loc, align 8
%primtmp_anf_45bind64341410235_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local32_loc, align 8
%primtmp_anf_45bind64341410235_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_anf_45bind64341410235_arg_0, %struct.SinObj* %primtmp_anf_45bind64341410235_arg_1)
store volatile %struct.SinObj* %primtmp_anf_45bind64341410235_val, %struct.SinObj** %clo646650_local33_loc, align 8
; Starting const-null
%datnull_args646460$$_37_37foldr1640462$010236_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646460$$_37_37foldr1640462$010236_val, %struct.SinObj** %clo646650_local34_loc, align 8
; Starting prim
%primtmp_args646460$$_37_37foldr1640462$110237_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local25_loc, align 8
%primtmp_args646460$$_37_37foldr1640462$110237_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local34_loc, align 8
%primtmp_args646460$$_37_37foldr1640462$110237_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646460$$_37_37foldr1640462$110237_arg_0, %struct.SinObj* %primtmp_args646460$$_37_37foldr1640462$110237_arg_1)
store volatile %struct.SinObj* %primtmp_args646460$$_37_37foldr1640462$110237_val, %struct.SinObj** %clo646650_local35_loc, align 8
; Starting prim
%primtmp_args646460$$_37_37foldr1640462$210238_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local33_loc, align 8
%primtmp_args646460$$_37_37foldr1640462$210238_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local35_loc, align 8
%primtmp_args646460$$_37_37foldr1640462$210238_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646460$$_37_37foldr1640462$210238_arg_0, %struct.SinObj* %primtmp_args646460$$_37_37foldr1640462$210238_arg_1)
store volatile %struct.SinObj* %primtmp_args646460$$_37_37foldr1640462$210238_val, %struct.SinObj** %clo646650_local36_loc, align 8
; Starting prim
%primtmp_args646460$$_37_37foldr1640462$310239_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local26_loc, align 8
%primtmp_args646460$$_37_37foldr1640462$310239_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local36_loc, align 8
%primtmp_args646460$$_37_37foldr1640462$310239_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646460$$_37_37foldr1640462$310239_arg_0, %struct.SinObj* %primtmp_args646460$$_37_37foldr1640462$310239_arg_1)
store volatile %struct.SinObj* %primtmp_args646460$$_37_37foldr1640462$310239_val, %struct.SinObj** %clo646650_local37_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind64341510240_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 43)
br i1 %bind_app_anf_45bind64341510240_has_space, label %bind_app_anf_45bind64341510240_do_call, label %bind_app_anf_45bind64341510240_overflow_first
bind_app_anf_45bind64341510240_overflow_first:
%bind_app_anf_45bind64341510240_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind64341510240_overflow_underflow_addr, i64 43)
br label %bind_app_anf_45bind64341510240_do_call
bind_app_anf_45bind64341510240_do_call:
%bind_app_anf_45bind64341510240_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local2_loc, align 8
%bind_app_anf_45bind64341510240_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local37_loc, align 8
%bind_app_anf_45bind64341510240_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64341510240_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341510240_cur_fp, i64 43
store volatile %struct.SinObj** %bind_app_anf_45bind64341510240_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64341510240_return_loc = bitcast i8* blockaddress(@main, %clo646650_ret5) to %struct.SinObj*
%bind_app_anf_45bind64341510240_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341510240_new_fp, i64 1
%bind_app_anf_45bind64341510240_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341510240_new_fp, i64 2
%bind_app_anf_45bind64341510240_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341510240_new_fp, i64 3
%bind_app_anf_45bind64341510240_slotscast = inttoptr i64 43 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind64341510240_return_loc, %struct.SinObj** %bind_app_anf_45bind64341510240_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64341510240_slotscast, %struct.SinObj** %bind_app_anf_45bind64341510240_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64341510240_closure, %struct.SinObj** %bind_app_anf_45bind64341510240_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64341510240_arglist, %struct.SinObj** %bind_app_anf_45bind64341510240_newarg1loc, align 8
%bind_app_anf_45bind64341510240_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind64341510240_closure)
indirectbr i8* %bind_app_anf_45bind64341510240_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646650_ret5:
%bind_app_anf_45bind64341510240_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64341510240_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341510240_oldfp, i64 1
%bind_app_anf_45bind64341510240_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341510240_slots_loc, align 8
%bind_app_anf_45bind64341510240_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind64341510240_slots_ptr to i64
%bind_app_anf_45bind64341510240_offset = mul i64 %bind_app_anf_45bind64341510240_slots, -1
%bind_app_anf_45bind64341510240_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341510240_oldfp, i64 %bind_app_anf_45bind64341510240_offset
store volatile %struct.SinObj** %bind_app_anf_45bind64341510240_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643415 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643415, %struct.SinObj** %clo646650_local38_loc, align 8
; Starting tail-clo-app
%_tailapp_$f64048710241_clo = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local4_loc, align 8
%_tailapp_$f64048710241_args = load volatile %struct.SinObj*, %struct.SinObj** %clo646650_local38_loc, align 8
%_tailapp_$f64048710241_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%_tailapp_$f64048710241_arg0 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_$f64048710241_fp, i64 2
%_tailapp_$f64048710241_arg1 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_$f64048710241_fp, i64 3
store volatile %struct.SinObj* %_tailapp_$f64048710241_clo, %struct.SinObj** %_tailapp_$f64048710241_arg0, align 8
store volatile %struct.SinObj* %_tailapp_$f64048710241_args, %struct.SinObj** %_tailapp_$f64048710241_arg1, align 8
%_tailapp_$f64048710241_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %_tailapp_$f64048710241_clo)
indirectbr i8* %_tailapp_$f64048710241_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
; Function clo646650 finished
clo646649:
%prologue_cur_fp10242 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646649_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10242, i64 2
%clo646649_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10242, i64 3
%clo646649_local3_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10242, i64 7
%clo646649_local2_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10242, i64 6
%clo646649_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10242, i64 5
%clo646649_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10242, i64 4
; End function Prologue
; Starting prim
%primtmp_$lst64049210243_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646649_arg1_loc, align 8
%primtmp_$lst64049210243_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$lst64049210243_arg_0)
store volatile %struct.SinObj* %primtmp_$lst64049210243_val, %struct.SinObj** %clo646649_local0_loc, align 8
; Starting prim
%primtmp_arglist646454110244_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646649_arg1_loc, align 8
%primtmp_arglist646454110244_val = call %struct.SinObj* @prim_cdr(%struct.SinObj* %primtmp_arglist646454110244_arg_0)
store volatile %struct.SinObj* %primtmp_arglist646454110244_val, %struct.SinObj** %clo646649_local1_loc, align 8
; Starting prim
%primtmp_$b64049310245_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646649_local1_loc, align 8
%primtmp_$b64049310245_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$b64049310245_arg_0)
store volatile %struct.SinObj* %primtmp_$b64049310245_val, %struct.SinObj** %clo646649_local2_loc, align 8
; Starting if
%if10246_reg = load volatile %struct.SinObj*, %struct.SinObj** %clo646649_local2_loc, align 8
%if10246istrue = call i1 @is_truthy_value(%struct.SinObj* %if10246_reg)
br i1 %if10246istrue, label %branch9798_45true, label %branch9798_45false
branch9798_45true:
; Starting return value.
%retval_$b64049310247_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646649_local2_loc, align 8
store volatile %struct.SinObj* %retval_$b64049310247_val, %struct.SinObj** @retr, align 8
%retval_$b64049310247_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_$b64049310247_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_$b64049310247_fp, align 8
%retval_$b64049310247_ra_raw = bitcast %struct.SinObj* %retval_$b64049310247_ra to i8*
indirectbr i8* %retval_$b64049310247_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
branch9798_45false:
; Starting prim
%primtmp_admin_45toplevel_45bnd64656210248_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646649_local0_loc, align 8
%primtmp_admin_45toplevel_45bnd64656210248_val = call %struct.SinObj* @prim_null_63(%struct.SinObj* %primtmp_admin_45toplevel_45bnd64656210248_arg_0)
store volatile %struct.SinObj* %primtmp_admin_45toplevel_45bnd64656210248_val, %struct.SinObj** %clo646649_local3_loc, align 8
; Starting return value.
%retval_admin_45toplevel_45bnd64656210249_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646649_local3_loc, align 8
store volatile %struct.SinObj* %retval_admin_45toplevel_45bnd64656210249_val, %struct.SinObj** @retr, align 8
%retval_admin_45toplevel_45bnd64656210249_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_admin_45toplevel_45bnd64656210249_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_admin_45toplevel_45bnd64656210249_fp, align 8
%retval_admin_45toplevel_45bnd64656210249_ra_raw = bitcast %struct.SinObj* %retval_admin_45toplevel_45bnd64656210249_ra to i8*
indirectbr i8* %retval_admin_45toplevel_45bnd64656210249_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
; Function clo646649 finished
clo646648:
%prologue_cur_fp10250 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646648_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10250, i64 2
%clo646648_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10250, i64 3
%clo646648_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10250, i64 4
; End function Prologue
; starting apply-prim
%applyprimtmp_admin_45toplevel_45bnd64656310251_arg = load volatile %struct.SinObj*, %struct.SinObj** %clo646648_arg1_loc, align 8
%applyprimtmp_admin_45toplevel_45bnd64656310251_val = call %struct.SinObj* @applyprim_cdr(%struct.SinObj* %applyprimtmp_admin_45toplevel_45bnd64656310251_arg)
store volatile %struct.SinObj* %applyprimtmp_admin_45toplevel_45bnd64656310251_val, %struct.SinObj** %clo646648_local0_loc, align 8
; Starting return value.
%retval_admin_45toplevel_45bnd64656310252_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646648_local0_loc, align 8
store volatile %struct.SinObj* %retval_admin_45toplevel_45bnd64656310252_val, %struct.SinObj** @retr, align 8
%retval_admin_45toplevel_45bnd64656310252_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_admin_45toplevel_45bnd64656310252_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_admin_45toplevel_45bnd64656310252_fp, align 8
%retval_admin_45toplevel_45bnd64656310252_ra_raw = bitcast %struct.SinObj* %retval_admin_45toplevel_45bnd64656310252_ra to i8*
indirectbr i8* %retval_admin_45toplevel_45bnd64656310252_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
; Function clo646648 finished
clo646647:
%prologue_cur_fp10253 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646647_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10253, i64 2
%clo646647_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10253, i64 3
%clo646647_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10253, i64 4
; End function Prologue
; starting apply-prim
%applyprimtmp_admin_45toplevel_45bnd64656410254_arg = load volatile %struct.SinObj*, %struct.SinObj** %clo646647_arg1_loc, align 8
%applyprimtmp_admin_45toplevel_45bnd64656410254_val = call %struct.SinObj* @applyprim_car(%struct.SinObj* %applyprimtmp_admin_45toplevel_45bnd64656410254_arg)
store volatile %struct.SinObj* %applyprimtmp_admin_45toplevel_45bnd64656410254_val, %struct.SinObj** %clo646647_local0_loc, align 8
; Starting return value.
%retval_admin_45toplevel_45bnd64656410255_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646647_local0_loc, align 8
store volatile %struct.SinObj* %retval_admin_45toplevel_45bnd64656410255_val, %struct.SinObj** @retr, align 8
%retval_admin_45toplevel_45bnd64656410255_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_admin_45toplevel_45bnd64656410255_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_admin_45toplevel_45bnd64656410255_fp, align 8
%retval_admin_45toplevel_45bnd64656410255_ra_raw = bitcast %struct.SinObj* %retval_admin_45toplevel_45bnd64656410255_ra to i8*
indirectbr i8* %retval_admin_45toplevel_45bnd64656410255_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
; Function clo646647 finished
clo646646:
%prologue_cur_fp10256 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646646_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10256, i64 2
%clo646646_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10256, i64 3
%clo646646_local3_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10256, i64 7
%clo646646_local2_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10256, i64 6
%clo646646_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10256, i64 5
%clo646646_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10256, i64 4
; End function Prologue
; Starting prim
%primtmp_$a64049810257_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646646_arg1_loc, align 8
%primtmp_$a64049810257_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$a64049810257_arg_0)
store volatile %struct.SinObj* %primtmp_$a64049810257_val, %struct.SinObj** %clo646646_local0_loc, align 8
; Starting prim
%primtmp_arglist646458110258_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646646_arg1_loc, align 8
%primtmp_arglist646458110258_val = call %struct.SinObj* @prim_cdr(%struct.SinObj* %primtmp_arglist646458110258_arg_0)
store volatile %struct.SinObj* %primtmp_arglist646458110258_val, %struct.SinObj** %clo646646_local1_loc, align 8
; Starting prim
%primtmp_$b64049910259_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646646_local1_loc, align 8
%primtmp_$b64049910259_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$b64049910259_arg_0)
store volatile %struct.SinObj* %primtmp_$b64049910259_val, %struct.SinObj** %clo646646_local2_loc, align 8
; Starting prim
%primtmp_admin_45toplevel_45bnd64656510260_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646646_local0_loc, align 8
%primtmp_admin_45toplevel_45bnd64656510260_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646646_local2_loc, align 8
%primtmp_admin_45toplevel_45bnd64656510260_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_admin_45toplevel_45bnd64656510260_arg_0, %struct.SinObj* %primtmp_admin_45toplevel_45bnd64656510260_arg_1)
store volatile %struct.SinObj* %primtmp_admin_45toplevel_45bnd64656510260_val, %struct.SinObj** %clo646646_local3_loc, align 8
; Starting return value.
%retval_admin_45toplevel_45bnd64656510261_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646646_local3_loc, align 8
store volatile %struct.SinObj* %retval_admin_45toplevel_45bnd64656510261_val, %struct.SinObj** @retr, align 8
%retval_admin_45toplevel_45bnd64656510261_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_admin_45toplevel_45bnd64656510261_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_admin_45toplevel_45bnd64656510261_fp, align 8
%retval_admin_45toplevel_45bnd64656510261_ra_raw = bitcast %struct.SinObj* %retval_admin_45toplevel_45bnd64656510261_ra to i8*
indirectbr i8* %retval_admin_45toplevel_45bnd64656510261_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
; Function clo646646 finished
clo646645:
%prologue_cur_fp10262 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646645_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10262, i64 2
%clo646645_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10262, i64 3
; End function Prologue
; Starting return value.
%retval_xs64050010263_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646645_arg1_loc, align 8
store volatile %struct.SinObj* %retval_xs64050010263_val, %struct.SinObj** @retr, align 8
%retval_xs64050010263_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_xs64050010263_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_xs64050010263_fp, align 8
%retval_xs64050010263_ra_raw = bitcast %struct.SinObj* %retval_xs64050010263_ra to i8*
indirectbr i8* %retval_xs64050010263_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
; Function clo646645 finished
clo646644:
%prologue_cur_fp10264 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646644_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10264, i64 2
%clo646644_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10264, i64 3
%clo646644_local4_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10264, i64 8
%clo646644_local3_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10264, i64 7
%clo646644_local2_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10264, i64 6
%clo646644_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10264, i64 5
%clo646644_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10264, i64 4
; End function Prologue
; Starting env-ref
%envref_$foldr64048410265_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$foldr64048410265_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$foldr64048410265_cur_fp, i64 2
%envref_$foldr64048410265_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$foldr64048410265_cur_fp, align 8
%envref_$foldr64048410265_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$foldr64048410265_clo, i64 0)
store volatile %struct.SinObj* %envref_$foldr64048410265_val, %struct.SinObj** %clo646644_local0_loc, align 8
; Starting env-ref
%envref_$last64047910266_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$last64047910266_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$last64047910266_cur_fp, i64 2
%envref_$last64047910266_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$last64047910266_cur_fp, align 8
%envref_$last64047910266_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$last64047910266_clo, i64 1)
store volatile %struct.SinObj* %envref_$last64047910266_val, %struct.SinObj** %clo646644_local1_loc, align 8
; Starting env-ref
%envref_$drop_45right64047610267_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$drop_45right64047610267_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$drop_45right64047610267_cur_fp, i64 2
%envref_$drop_45right64047610267_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$drop_45right64047610267_cur_fp, align 8
%envref_$drop_45right64047610267_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$drop_45right64047610267_clo, i64 2)
store volatile %struct.SinObj* %envref_$drop_45right64047610267_val, %struct.SinObj** %clo646644_local2_loc, align 8
; Starting prim
%primtmp_$map64050210268_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646644_arg1_loc, align 8
%primtmp_$map64050210268_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$map64050210268_arg_0)
store volatile %struct.SinObj* %primtmp_$map64050210268_val, %struct.SinObj** %clo646644_local3_loc, align 8
; Starting make-closure
%makeclo_admin_45toplevel_45bnd64656610269_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646644_local0_loc, align 8
%makeclo_admin_45toplevel_45bnd64656610269_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646644_local1_loc, align 8
%makeclo_admin_45toplevel_45bnd64656610269_arg_2 = load volatile %struct.SinObj*, %struct.SinObj** %clo646644_local2_loc, align 8
%makeclo_admin_45toplevel_45bnd64656610269_funcaddr = bitcast i8* blockaddress(@main, %clo646643) to i8*
%makeclo_admin_45toplevel_45bnd64656610269_val = call %struct.SinObj* @closure_alloc(i64 3, i8* %makeclo_admin_45toplevel_45bnd64656610269_funcaddr)
call void @closure_place_freevar(%struct.SinObj* %makeclo_admin_45toplevel_45bnd64656610269_val, %struct.SinObj* %makeclo_admin_45toplevel_45bnd64656610269_arg_0, i64 0)
call void @closure_place_freevar(%struct.SinObj* %makeclo_admin_45toplevel_45bnd64656610269_val, %struct.SinObj* %makeclo_admin_45toplevel_45bnd64656610269_arg_1, i64 1)
call void @closure_place_freevar(%struct.SinObj* %makeclo_admin_45toplevel_45bnd64656610269_val, %struct.SinObj* %makeclo_admin_45toplevel_45bnd64656610269_arg_2, i64 2)
store volatile %struct.SinObj* %makeclo_admin_45toplevel_45bnd64656610269_val, %struct.SinObj** %clo646644_local4_loc, align 8
; Starting return value.
%retval_admin_45toplevel_45bnd64656610270_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646644_local4_loc, align 8
store volatile %struct.SinObj* %retval_admin_45toplevel_45bnd64656610270_val, %struct.SinObj** @retr, align 8
%retval_admin_45toplevel_45bnd64656610270_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_admin_45toplevel_45bnd64656610270_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_admin_45toplevel_45bnd64656610270_fp, align 8
%retval_admin_45toplevel_45bnd64656610270_ra_raw = bitcast %struct.SinObj* %retval_admin_45toplevel_45bnd64656610270_ra to i8*
indirectbr i8* %retval_admin_45toplevel_45bnd64656610270_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
; Function clo646644 finished
clo646643:
%prologue_cur_fp10271 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646643_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10271, i64 2
%clo646643_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10271, i64 3
%clo646643_local11_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10271, i64 15
%clo646643_local10_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10271, i64 14
%clo646643_local9_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10271, i64 13
%clo646643_local8_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10271, i64 12
%clo646643_local7_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10271, i64 11
%clo646643_local6_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10271, i64 10
%clo646643_local5_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10271, i64 9
%clo646643_local4_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10271, i64 8
%clo646643_local3_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10271, i64 7
%clo646643_local2_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10271, i64 6
%clo646643_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10271, i64 5
%clo646643_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10271, i64 4
; End function Prologue
; Starting env-ref
%envref_$foldr64048410272_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$foldr64048410272_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$foldr64048410272_cur_fp, i64 2
%envref_$foldr64048410272_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$foldr64048410272_cur_fp, align 8
%envref_$foldr64048410272_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$foldr64048410272_clo, i64 0)
store volatile %struct.SinObj* %envref_$foldr64048410272_val, %struct.SinObj** %clo646643_local0_loc, align 8
; Starting env-ref
%envref_$last64047910273_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$last64047910273_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$last64047910273_cur_fp, i64 2
%envref_$last64047910273_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$last64047910273_cur_fp, align 8
%envref_$last64047910273_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$last64047910273_clo, i64 1)
store volatile %struct.SinObj* %envref_$last64047910273_val, %struct.SinObj** %clo646643_local1_loc, align 8
; Starting env-ref
%envref_$drop_45right64047610274_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$drop_45right64047610274_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$drop_45right64047610274_cur_fp, i64 2
%envref_$drop_45right64047610274_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$drop_45right64047610274_cur_fp, align 8
%envref_$drop_45right64047610274_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$drop_45right64047610274_clo, i64 2)
store volatile %struct.SinObj* %envref_$drop_45right64047610274_val, %struct.SinObj** %clo646643_local2_loc, align 8
; Starting prim
%primtmp_$f64050410275_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646643_arg1_loc, align 8
%primtmp_$f64050410275_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$f64050410275_arg_0)
store volatile %struct.SinObj* %primtmp_$f64050410275_val, %struct.SinObj** %clo646643_local3_loc, align 8
; Starting prim
%primtmp_$_37_37vararg63062764050510276_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646643_arg1_loc, align 8
%primtmp_$_37_37vararg63062764050510276_val = call %struct.SinObj* @prim_cdr(%struct.SinObj* %primtmp_$_37_37vararg63062764050510276_arg_0)
store volatile %struct.SinObj* %primtmp_$_37_37vararg63062764050510276_val, %struct.SinObj** %clo646643_local4_loc, align 8
; Starting alias
%$lsts640506 = load volatile %struct.SinObj*, %struct.SinObj** %clo646643_local4_loc, align 8
store volatile %struct.SinObj* %$lsts640506, %struct.SinObj** %clo646643_local5_loc, align 8
; Starting make-closure
%makeclo_anf_45bind64342110278_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646643_local1_loc, align 8
%makeclo_anf_45bind64342110278_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646643_local3_loc, align 8
%makeclo_anf_45bind64342110278_arg_2 = load volatile %struct.SinObj*, %struct.SinObj** %clo646643_local2_loc, align 8
%makeclo_anf_45bind64342110278_funcaddr = bitcast i8* blockaddress(@main, %clo646642) to i8*
%makeclo_anf_45bind64342110278_val = call %struct.SinObj* @closure_alloc(i64 3, i8* %makeclo_anf_45bind64342110278_funcaddr)
call void @closure_place_freevar(%struct.SinObj* %makeclo_anf_45bind64342110278_val, %struct.SinObj* %makeclo_anf_45bind64342110278_arg_0, i64 0)
call void @closure_place_freevar(%struct.SinObj* %makeclo_anf_45bind64342110278_val, %struct.SinObj* %makeclo_anf_45bind64342110278_arg_1, i64 1)
call void @closure_place_freevar(%struct.SinObj* %makeclo_anf_45bind64342110278_val, %struct.SinObj* %makeclo_anf_45bind64342110278_arg_2, i64 2)
store volatile %struct.SinObj* %makeclo_anf_45bind64342110278_val, %struct.SinObj** %clo646643_local6_loc, align 8
; Starting make-closure
%makeclo_anf_45bind64342210279_funcaddr = bitcast i8* blockaddress(@main, %clo646641) to i8*
%makeclo_anf_45bind64342210279_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind64342210279_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind64342210279_val, %struct.SinObj** %clo646643_local7_loc, align 8
; Starting const-null
%datnull_args646465$anf_45bind643422$010280_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646465$anf_45bind643422$010280_val, %struct.SinObj** %clo646643_local8_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind64342310281_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 16)
br i1 %bind_app_anf_45bind64342310281_has_space, label %bind_app_anf_45bind64342310281_do_call, label %bind_app_anf_45bind64342310281_overflow_first
bind_app_anf_45bind64342310281_overflow_first:
%bind_app_anf_45bind64342310281_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind64342310281_overflow_underflow_addr, i64 16)
br label %bind_app_anf_45bind64342310281_do_call
bind_app_anf_45bind64342310281_do_call:
%bind_app_anf_45bind64342310281_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646643_local7_loc, align 8
%bind_app_anf_45bind64342310281_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646643_local8_loc, align 8
%bind_app_anf_45bind64342310281_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64342310281_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64342310281_cur_fp, i64 16
store volatile %struct.SinObj** %bind_app_anf_45bind64342310281_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64342310281_return_loc = bitcast i8* blockaddress(@main, %clo646643_ret0) to %struct.SinObj*
%bind_app_anf_45bind64342310281_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64342310281_new_fp, i64 1
%bind_app_anf_45bind64342310281_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64342310281_new_fp, i64 2
%bind_app_anf_45bind64342310281_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64342310281_new_fp, i64 3
%bind_app_anf_45bind64342310281_slotscast = inttoptr i64 16 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind64342310281_return_loc, %struct.SinObj** %bind_app_anf_45bind64342310281_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64342310281_slotscast, %struct.SinObj** %bind_app_anf_45bind64342310281_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64342310281_closure, %struct.SinObj** %bind_app_anf_45bind64342310281_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64342310281_arglist, %struct.SinObj** %bind_app_anf_45bind64342310281_newarg1loc, align 8
%bind_app_anf_45bind64342310281_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind64342310281_closure)
indirectbr i8* %bind_app_anf_45bind64342310281_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646643_ret0:
%bind_app_anf_45bind64342310281_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64342310281_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64342310281_oldfp, i64 1
%bind_app_anf_45bind64342310281_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64342310281_slots_loc, align 8
%bind_app_anf_45bind64342310281_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind64342310281_slots_ptr to i64
%bind_app_anf_45bind64342310281_offset = mul i64 %bind_app_anf_45bind64342310281_slots, -1
%bind_app_anf_45bind64342310281_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64342310281_oldfp, i64 %bind_app_anf_45bind64342310281_offset
store volatile %struct.SinObj** %bind_app_anf_45bind64342310281_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643423 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643423, %struct.SinObj** %clo646643_local9_loc, align 8
; Starting prim
%primtmp_anf_45bind64342410282_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646643_local9_loc, align 8
%primtmp_anf_45bind64342410282_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646643_local5_loc, align 8
%primtmp_anf_45bind64342410282_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_anf_45bind64342410282_arg_0, %struct.SinObj* %primtmp_anf_45bind64342410282_arg_1)
store volatile %struct.SinObj* %primtmp_anf_45bind64342410282_val, %struct.SinObj** %clo646643_local10_loc, align 8
; Starting prim
%primtmp_anf_45bind64342510283_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646643_local6_loc, align 8
%primtmp_anf_45bind64342510283_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646643_local10_loc, align 8
%primtmp_anf_45bind64342510283_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_anf_45bind64342510283_arg_0, %struct.SinObj* %primtmp_anf_45bind64342510283_arg_1)
store volatile %struct.SinObj* %primtmp_anf_45bind64342510283_val, %struct.SinObj** %clo646643_local11_loc, align 8
; Starting tail-clo-app
%_tailapp_$foldr64048410284_clo = load volatile %struct.SinObj*, %struct.SinObj** %clo646643_local0_loc, align 8
%_tailapp_$foldr64048410284_args = load volatile %struct.SinObj*, %struct.SinObj** %clo646643_local11_loc, align 8
%_tailapp_$foldr64048410284_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%_tailapp_$foldr64048410284_arg0 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_$foldr64048410284_fp, i64 2
%_tailapp_$foldr64048410284_arg1 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_$foldr64048410284_fp, i64 3
store volatile %struct.SinObj* %_tailapp_$foldr64048410284_clo, %struct.SinObj** %_tailapp_$foldr64048410284_arg0, align 8
store volatile %struct.SinObj* %_tailapp_$foldr64048410284_args, %struct.SinObj** %_tailapp_$foldr64048410284_arg1, align 8
%_tailapp_$foldr64048410284_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %_tailapp_$foldr64048410284_clo)
indirectbr i8* %_tailapp_$foldr64048410284_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
; Function clo646643 finished
clo646642:
%prologue_cur_fp10285 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646642_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10285, i64 2
%clo646642_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10285, i64 3
%clo646642_local12_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10285, i64 16
%clo646642_local11_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10285, i64 15
%clo646642_local10_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10285, i64 14
%clo646642_local9_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10285, i64 13
%clo646642_local8_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10285, i64 12
%clo646642_local7_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10285, i64 11
%clo646642_local6_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10285, i64 10
%clo646642_local5_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10285, i64 9
%clo646642_local4_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10285, i64 8
%clo646642_local3_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10285, i64 7
%clo646642_local2_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10285, i64 6
%clo646642_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10285, i64 5
%clo646642_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10285, i64 4
; End function Prologue
; Starting env-ref
%envref_$last64047910286_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$last64047910286_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$last64047910286_cur_fp, i64 2
%envref_$last64047910286_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$last64047910286_cur_fp, align 8
%envref_$last64047910286_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$last64047910286_clo, i64 0)
store volatile %struct.SinObj* %envref_$last64047910286_val, %struct.SinObj** %clo646642_local0_loc, align 8
; Starting env-ref
%envref_$f64050410287_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$f64050410287_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$f64050410287_cur_fp, i64 2
%envref_$f64050410287_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$f64050410287_cur_fp, align 8
%envref_$f64050410287_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$f64050410287_clo, i64 1)
store volatile %struct.SinObj* %envref_$f64050410287_val, %struct.SinObj** %clo646642_local1_loc, align 8
; Starting env-ref
%envref_$drop_45right64047610288_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$drop_45right64047610288_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$drop_45right64047610288_cur_fp, i64 2
%envref_$drop_45right64047610288_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$drop_45right64047610288_cur_fp, align 8
%envref_$drop_45right64047610288_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$drop_45right64047610288_clo, i64 2)
store volatile %struct.SinObj* %envref_$drop_45right64047610288_val, %struct.SinObj** %clo646642_local2_loc, align 8
; Starting const-int
%datint_anf_45datum64341710289_val = call %struct.SinObj* @const_init_int(i64 1)
store volatile %struct.SinObj* %datint_anf_45datum64341710289_val, %struct.SinObj** %clo646642_local3_loc, align 8
; Starting const-null
%datnull_args646463$$drop_45right640476$010290_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646463$$drop_45right640476$010290_val, %struct.SinObj** %clo646642_local4_loc, align 8
; Starting prim
%primtmp_args646463$$drop_45right640476$110291_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646642_local3_loc, align 8
%primtmp_args646463$$drop_45right640476$110291_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646642_local4_loc, align 8
%primtmp_args646463$$drop_45right640476$110291_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646463$$drop_45right640476$110291_arg_0, %struct.SinObj* %primtmp_args646463$$drop_45right640476$110291_arg_1)
store volatile %struct.SinObj* %primtmp_args646463$$drop_45right640476$110291_val, %struct.SinObj** %clo646642_local5_loc, align 8
; Starting prim
%primtmp_args646463$$drop_45right640476$210292_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646642_arg1_loc, align 8
%primtmp_args646463$$drop_45right640476$210292_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646642_local5_loc, align 8
%primtmp_args646463$$drop_45right640476$210292_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646463$$drop_45right640476$210292_arg_0, %struct.SinObj* %primtmp_args646463$$drop_45right640476$210292_arg_1)
store volatile %struct.SinObj* %primtmp_args646463$$drop_45right640476$210292_val, %struct.SinObj** %clo646642_local6_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind64341810293_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 17)
br i1 %bind_app_anf_45bind64341810293_has_space, label %bind_app_anf_45bind64341810293_do_call, label %bind_app_anf_45bind64341810293_overflow_first
bind_app_anf_45bind64341810293_overflow_first:
%bind_app_anf_45bind64341810293_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind64341810293_overflow_underflow_addr, i64 17)
br label %bind_app_anf_45bind64341810293_do_call
bind_app_anf_45bind64341810293_do_call:
%bind_app_anf_45bind64341810293_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646642_local2_loc, align 8
%bind_app_anf_45bind64341810293_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646642_local6_loc, align 8
%bind_app_anf_45bind64341810293_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64341810293_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341810293_cur_fp, i64 17
store volatile %struct.SinObj** %bind_app_anf_45bind64341810293_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64341810293_return_loc = bitcast i8* blockaddress(@main, %clo646642_ret0) to %struct.SinObj*
%bind_app_anf_45bind64341810293_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341810293_new_fp, i64 1
%bind_app_anf_45bind64341810293_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341810293_new_fp, i64 2
%bind_app_anf_45bind64341810293_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341810293_new_fp, i64 3
%bind_app_anf_45bind64341810293_slotscast = inttoptr i64 17 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind64341810293_return_loc, %struct.SinObj** %bind_app_anf_45bind64341810293_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64341810293_slotscast, %struct.SinObj** %bind_app_anf_45bind64341810293_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64341810293_closure, %struct.SinObj** %bind_app_anf_45bind64341810293_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64341810293_arglist, %struct.SinObj** %bind_app_anf_45bind64341810293_newarg1loc, align 8
%bind_app_anf_45bind64341810293_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind64341810293_closure)
indirectbr i8* %bind_app_anf_45bind64341810293_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646642_ret0:
%bind_app_anf_45bind64341810293_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64341810293_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341810293_oldfp, i64 1
%bind_app_anf_45bind64341810293_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341810293_slots_loc, align 8
%bind_app_anf_45bind64341810293_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind64341810293_slots_ptr to i64
%bind_app_anf_45bind64341810293_offset = mul i64 %bind_app_anf_45bind64341810293_slots, -1
%bind_app_anf_45bind64341810293_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341810293_oldfp, i64 %bind_app_anf_45bind64341810293_offset
store volatile %struct.SinObj** %bind_app_anf_45bind64341810293_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643418 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643418, %struct.SinObj** %clo646642_local7_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind64341910294_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 17)
br i1 %bind_app_anf_45bind64341910294_has_space, label %bind_app_anf_45bind64341910294_do_call, label %bind_app_anf_45bind64341910294_overflow_first
bind_app_anf_45bind64341910294_overflow_first:
%bind_app_anf_45bind64341910294_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind64341910294_overflow_underflow_addr, i64 17)
br label %bind_app_anf_45bind64341910294_do_call
bind_app_anf_45bind64341910294_do_call:
%bind_app_anf_45bind64341910294_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646642_local1_loc, align 8
%bind_app_anf_45bind64341910294_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646642_local7_loc, align 8
%bind_app_anf_45bind64341910294_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64341910294_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341910294_cur_fp, i64 17
store volatile %struct.SinObj** %bind_app_anf_45bind64341910294_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64341910294_return_loc = bitcast i8* blockaddress(@main, %clo646642_ret1) to %struct.SinObj*
%bind_app_anf_45bind64341910294_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341910294_new_fp, i64 1
%bind_app_anf_45bind64341910294_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341910294_new_fp, i64 2
%bind_app_anf_45bind64341910294_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341910294_new_fp, i64 3
%bind_app_anf_45bind64341910294_slotscast = inttoptr i64 17 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind64341910294_return_loc, %struct.SinObj** %bind_app_anf_45bind64341910294_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64341910294_slotscast, %struct.SinObj** %bind_app_anf_45bind64341910294_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64341910294_closure, %struct.SinObj** %bind_app_anf_45bind64341910294_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64341910294_arglist, %struct.SinObj** %bind_app_anf_45bind64341910294_newarg1loc, align 8
%bind_app_anf_45bind64341910294_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind64341910294_closure)
indirectbr i8* %bind_app_anf_45bind64341910294_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646642_ret1:
%bind_app_anf_45bind64341910294_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64341910294_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341910294_oldfp, i64 1
%bind_app_anf_45bind64341910294_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341910294_slots_loc, align 8
%bind_app_anf_45bind64341910294_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind64341910294_slots_ptr to i64
%bind_app_anf_45bind64341910294_offset = mul i64 %bind_app_anf_45bind64341910294_slots, -1
%bind_app_anf_45bind64341910294_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64341910294_oldfp, i64 %bind_app_anf_45bind64341910294_offset
store volatile %struct.SinObj** %bind_app_anf_45bind64341910294_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643419 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643419, %struct.SinObj** %clo646642_local8_loc, align 8
; Starting const-null
%datnull_args646464$$last640479$010295_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646464$$last640479$010295_val, %struct.SinObj** %clo646642_local9_loc, align 8
; Starting prim
%primtmp_args646464$$last640479$110296_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646642_arg1_loc, align 8
%primtmp_args646464$$last640479$110296_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646642_local9_loc, align 8
%primtmp_args646464$$last640479$110296_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646464$$last640479$110296_arg_0, %struct.SinObj* %primtmp_args646464$$last640479$110296_arg_1)
store volatile %struct.SinObj* %primtmp_args646464$$last640479$110296_val, %struct.SinObj** %clo646642_local10_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind64342010297_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 17)
br i1 %bind_app_anf_45bind64342010297_has_space, label %bind_app_anf_45bind64342010297_do_call, label %bind_app_anf_45bind64342010297_overflow_first
bind_app_anf_45bind64342010297_overflow_first:
%bind_app_anf_45bind64342010297_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind64342010297_overflow_underflow_addr, i64 17)
br label %bind_app_anf_45bind64342010297_do_call
bind_app_anf_45bind64342010297_do_call:
%bind_app_anf_45bind64342010297_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646642_local0_loc, align 8
%bind_app_anf_45bind64342010297_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646642_local10_loc, align 8
%bind_app_anf_45bind64342010297_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64342010297_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64342010297_cur_fp, i64 17
store volatile %struct.SinObj** %bind_app_anf_45bind64342010297_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64342010297_return_loc = bitcast i8* blockaddress(@main, %clo646642_ret2) to %struct.SinObj*
%bind_app_anf_45bind64342010297_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64342010297_new_fp, i64 1
%bind_app_anf_45bind64342010297_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64342010297_new_fp, i64 2
%bind_app_anf_45bind64342010297_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64342010297_new_fp, i64 3
%bind_app_anf_45bind64342010297_slotscast = inttoptr i64 17 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind64342010297_return_loc, %struct.SinObj** %bind_app_anf_45bind64342010297_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64342010297_slotscast, %struct.SinObj** %bind_app_anf_45bind64342010297_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64342010297_closure, %struct.SinObj** %bind_app_anf_45bind64342010297_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64342010297_arglist, %struct.SinObj** %bind_app_anf_45bind64342010297_newarg1loc, align 8
%bind_app_anf_45bind64342010297_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind64342010297_closure)
indirectbr i8* %bind_app_anf_45bind64342010297_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646642_ret2:
%bind_app_anf_45bind64342010297_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64342010297_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64342010297_oldfp, i64 1
%bind_app_anf_45bind64342010297_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64342010297_slots_loc, align 8
%bind_app_anf_45bind64342010297_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind64342010297_slots_ptr to i64
%bind_app_anf_45bind64342010297_offset = mul i64 %bind_app_anf_45bind64342010297_slots, -1
%bind_app_anf_45bind64342010297_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64342010297_oldfp, i64 %bind_app_anf_45bind64342010297_offset
store volatile %struct.SinObj** %bind_app_anf_45bind64342010297_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643420 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643420, %struct.SinObj** %clo646642_local11_loc, align 8
; Starting prim
%primtmp_admin_45toplevel_45bnd64656710298_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646642_local8_loc, align 8
%primtmp_admin_45toplevel_45bnd64656710298_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646642_local11_loc, align 8
%primtmp_admin_45toplevel_45bnd64656710298_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_admin_45toplevel_45bnd64656710298_arg_0, %struct.SinObj* %primtmp_admin_45toplevel_45bnd64656710298_arg_1)
store volatile %struct.SinObj* %primtmp_admin_45toplevel_45bnd64656710298_val, %struct.SinObj** %clo646642_local12_loc, align 8
; Starting return value.
%retval_admin_45toplevel_45bnd64656710299_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646642_local12_loc, align 8
store volatile %struct.SinObj* %retval_admin_45toplevel_45bnd64656710299_val, %struct.SinObj** @retr, align 8
%retval_admin_45toplevel_45bnd64656710299_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_admin_45toplevel_45bnd64656710299_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_admin_45toplevel_45bnd64656710299_fp, align 8
%retval_admin_45toplevel_45bnd64656710299_ra_raw = bitcast %struct.SinObj* %retval_admin_45toplevel_45bnd64656710299_ra to i8*
indirectbr i8* %retval_admin_45toplevel_45bnd64656710299_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
; Function clo646642 finished
clo646641:
%prologue_cur_fp10300 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646641_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10300, i64 2
%clo646641_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10300, i64 3
; End function Prologue
; Starting return value.
%retval_xs64050810301_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646641_arg1_loc, align 8
store volatile %struct.SinObj* %retval_xs64050810301_val, %struct.SinObj** @retr, align 8
%retval_xs64050810301_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_xs64050810301_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_xs64050810301_fp, align 8
%retval_xs64050810301_ra_raw = bitcast %struct.SinObj* %retval_xs64050810301_ra to i8*
indirectbr i8* %retval_xs64050810301_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
; Function clo646641 finished
clo646640:
%prologue_cur_fp10302 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646640_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10302, i64 2
%clo646640_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10302, i64 3
%clo646640_local4_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10302, i64 8
%clo646640_local3_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10302, i64 7
%clo646640_local2_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10302, i64 6
%clo646640_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10302, i64 5
%clo646640_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10302, i64 4
; End function Prologue
; Starting env-ref
%envref_$_37_37foldl164045710303_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$_37_37foldl164045710303_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$_37_37foldl164045710303_cur_fp, i64 2
%envref_$_37_37foldl164045710303_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$_37_37foldl164045710303_cur_fp, align 8
%envref_$_37_37foldl164045710303_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$_37_37foldl164045710303_clo, i64 0)
store volatile %struct.SinObj* %envref_$_37_37foldl164045710303_val, %struct.SinObj** %clo646640_local0_loc, align 8
; Starting env-ref
%envref_$_37_37foldr164046210304_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$_37_37foldr164046210304_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$_37_37foldr164046210304_cur_fp, i64 2
%envref_$_37_37foldr164046210304_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$_37_37foldr164046210304_cur_fp, align 8
%envref_$_37_37foldr164046210304_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$_37_37foldr164046210304_clo, i64 1)
store volatile %struct.SinObj* %envref_$_37_37foldr164046210304_val, %struct.SinObj** %clo646640_local1_loc, align 8
; Starting env-ref
%envref_$_37_37map164045210305_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$_37_37map164045210305_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$_37_37map164045210305_cur_fp, i64 2
%envref_$_37_37map164045210305_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$_37_37map164045210305_cur_fp, align 8
%envref_$_37_37map164045210305_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$_37_37map164045210305_clo, i64 2)
store volatile %struct.SinObj* %envref_$_37_37map164045210305_val, %struct.SinObj** %clo646640_local2_loc, align 8
; Starting prim
%primtmp_$foldl64051010306_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646640_arg1_loc, align 8
%primtmp_$foldl64051010306_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$foldl64051010306_arg_0)
store volatile %struct.SinObj* %primtmp_$foldl64051010306_val, %struct.SinObj** %clo646640_local3_loc, align 8
; Starting make-closure
%makeclo_admin_45toplevel_45bnd64656810307_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646640_local2_loc, align 8
%makeclo_admin_45toplevel_45bnd64656810307_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646640_local3_loc, align 8
%makeclo_admin_45toplevel_45bnd64656810307_arg_2 = load volatile %struct.SinObj*, %struct.SinObj** %clo646640_local0_loc, align 8
%makeclo_admin_45toplevel_45bnd64656810307_arg_3 = load volatile %struct.SinObj*, %struct.SinObj** %clo646640_local1_loc, align 8
%makeclo_admin_45toplevel_45bnd64656810307_funcaddr = bitcast i8* blockaddress(@main, %clo646639) to i8*
%makeclo_admin_45toplevel_45bnd64656810307_val = call %struct.SinObj* @closure_alloc(i64 4, i8* %makeclo_admin_45toplevel_45bnd64656810307_funcaddr)
call void @closure_place_freevar(%struct.SinObj* %makeclo_admin_45toplevel_45bnd64656810307_val, %struct.SinObj* %makeclo_admin_45toplevel_45bnd64656810307_arg_0, i64 0)
call void @closure_place_freevar(%struct.SinObj* %makeclo_admin_45toplevel_45bnd64656810307_val, %struct.SinObj* %makeclo_admin_45toplevel_45bnd64656810307_arg_1, i64 1)
call void @closure_place_freevar(%struct.SinObj* %makeclo_admin_45toplevel_45bnd64656810307_val, %struct.SinObj* %makeclo_admin_45toplevel_45bnd64656810307_arg_2, i64 2)
call void @closure_place_freevar(%struct.SinObj* %makeclo_admin_45toplevel_45bnd64656810307_val, %struct.SinObj* %makeclo_admin_45toplevel_45bnd64656810307_arg_3, i64 3)
store volatile %struct.SinObj* %makeclo_admin_45toplevel_45bnd64656810307_val, %struct.SinObj** %clo646640_local4_loc, align 8
; Starting return value.
%retval_admin_45toplevel_45bnd64656810308_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646640_local4_loc, align 8
store volatile %struct.SinObj* %retval_admin_45toplevel_45bnd64656810308_val, %struct.SinObj** @retr, align 8
%retval_admin_45toplevel_45bnd64656810308_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_admin_45toplevel_45bnd64656810308_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_admin_45toplevel_45bnd64656810308_fp, align 8
%retval_admin_45toplevel_45bnd64656810308_ra_raw = bitcast %struct.SinObj* %retval_admin_45toplevel_45bnd64656810308_ra to i8*
indirectbr i8* %retval_admin_45toplevel_45bnd64656810308_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
; Function clo646640 finished
clo646639:
%prologue_cur_fp10309 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646639_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 2
%clo646639_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 3
%clo646639_local38_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 42
%clo646639_local37_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 41
%clo646639_local36_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 40
%clo646639_local35_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 39
%clo646639_local34_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 38
%clo646639_local33_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 37
%clo646639_local32_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 36
%clo646639_local31_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 35
%clo646639_local30_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 34
%clo646639_local29_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 33
%clo646639_local28_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 32
%clo646639_local27_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 31
%clo646639_local26_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 30
%clo646639_local25_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 29
%clo646639_local24_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 28
%clo646639_local23_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 27
%clo646639_local22_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 26
%clo646639_local21_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 25
%clo646639_local20_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 24
%clo646639_local19_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 23
%clo646639_local18_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 22
%clo646639_local17_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 21
%clo646639_local16_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 20
%clo646639_local15_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 19
%clo646639_local14_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 18
%clo646639_local13_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 17
%clo646639_local12_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 16
%clo646639_local11_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 15
%clo646639_local10_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 14
%clo646639_local9_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 13
%clo646639_local8_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 12
%clo646639_local7_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 11
%clo646639_local6_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 10
%clo646639_local5_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 9
%clo646639_local4_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 8
%clo646639_local3_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 7
%clo646639_local2_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 6
%clo646639_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 5
%clo646639_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10309, i64 4
; End function Prologue
; Starting env-ref
%envref_$_37_37map164045210310_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$_37_37map164045210310_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$_37_37map164045210310_cur_fp, i64 2
%envref_$_37_37map164045210310_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$_37_37map164045210310_cur_fp, align 8
%envref_$_37_37map164045210310_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$_37_37map164045210310_clo, i64 0)
store volatile %struct.SinObj* %envref_$_37_37map164045210310_val, %struct.SinObj** %clo646639_local0_loc, align 8
; Starting env-ref
%envref_$foldl64051010311_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$foldl64051010311_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$foldl64051010311_cur_fp, i64 2
%envref_$foldl64051010311_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$foldl64051010311_cur_fp, align 8
%envref_$foldl64051010311_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$foldl64051010311_clo, i64 1)
store volatile %struct.SinObj* %envref_$foldl64051010311_val, %struct.SinObj** %clo646639_local1_loc, align 8
; Starting env-ref
%envref_$_37_37foldl164045710312_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$_37_37foldl164045710312_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$_37_37foldl164045710312_cur_fp, i64 2
%envref_$_37_37foldl164045710312_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$_37_37foldl164045710312_cur_fp, align 8
%envref_$_37_37foldl164045710312_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$_37_37foldl164045710312_clo, i64 2)
store volatile %struct.SinObj* %envref_$_37_37foldl164045710312_val, %struct.SinObj** %clo646639_local2_loc, align 8
; Starting env-ref
%envref_$_37_37foldr164046210313_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%envref_$_37_37foldr164046210313_cloloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %envref_$_37_37foldr164046210313_cur_fp, i64 2
%envref_$_37_37foldr164046210313_clo = load volatile %struct.SinObj*, %struct.SinObj** %envref_$_37_37foldr164046210313_cur_fp, align 8
%envref_$_37_37foldr164046210313_val = call %struct.SinObj* @closure_env_get(%struct.SinObj* %envref_$_37_37foldr164046210313_clo, i64 3)
store volatile %struct.SinObj* %envref_$_37_37foldr164046210313_val, %struct.SinObj** %clo646639_local3_loc, align 8
; Starting prim
%primtmp_$f64051210314_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_arg1_loc, align 8
%primtmp_$f64051210314_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$f64051210314_arg_0)
store volatile %struct.SinObj* %primtmp_$f64051210314_val, %struct.SinObj** %clo646639_local4_loc, align 8
; Starting prim
%primtmp_$_37_37vararg63062864051310315_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_arg1_loc, align 8
%primtmp_$_37_37vararg63062864051310315_val = call %struct.SinObj* @prim_cdr(%struct.SinObj* %primtmp_$_37_37vararg63062864051310315_arg_0)
store volatile %struct.SinObj* %primtmp_$_37_37vararg63062864051310315_val, %struct.SinObj** %clo646639_local5_loc, align 8
; Starting prim
%primtmp_$acc64051410316_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local5_loc, align 8
%primtmp_$acc64051410316_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$acc64051410316_arg_0)
store volatile %struct.SinObj* %primtmp_$acc64051410316_val, %struct.SinObj** %clo646639_local6_loc, align 8
; Starting prim
%primtmp_$_37_37vararg63062864051510317_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local5_loc, align 8
%primtmp_$_37_37vararg63062864051510317_val = call %struct.SinObj* @prim_cdr(%struct.SinObj* %primtmp_$_37_37vararg63062864051510317_arg_0)
store volatile %struct.SinObj* %primtmp_$_37_37vararg63062864051510317_val, %struct.SinObj** %clo646639_local7_loc, align 8
; Starting alias
%$lsts640516 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local7_loc, align 8
store volatile %struct.SinObj* %$lsts640516, %struct.SinObj** %clo646639_local8_loc, align 8
; Starting make-closure
%makeclo_anf_45bind64342710319_funcaddr = bitcast i8* blockaddress(@main, %clo646638) to i8*
%makeclo_anf_45bind64342710319_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind64342710319_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind64342710319_val, %struct.SinObj** %clo646639_local9_loc, align 8
; Starting const-bool
%datbool_anf_45datum64342810320_val = call %struct.SinObj* @const_init_false()
store volatile %struct.SinObj* %datbool_anf_45datum64342810320_val, %struct.SinObj** %clo646639_local10_loc, align 8
; Starting const-null
%datnull_args646469$$_37_37foldl1640457$010321_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646469$$_37_37foldl1640457$010321_val, %struct.SinObj** %clo646639_local11_loc, align 8
; Starting prim
%primtmp_args646469$$_37_37foldl1640457$110322_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local8_loc, align 8
%primtmp_args646469$$_37_37foldl1640457$110322_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local11_loc, align 8
%primtmp_args646469$$_37_37foldl1640457$110322_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646469$$_37_37foldl1640457$110322_arg_0, %struct.SinObj* %primtmp_args646469$$_37_37foldl1640457$110322_arg_1)
store volatile %struct.SinObj* %primtmp_args646469$$_37_37foldl1640457$110322_val, %struct.SinObj** %clo646639_local12_loc, align 8
; Starting prim
%primtmp_args646469$$_37_37foldl1640457$210323_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local10_loc, align 8
%primtmp_args646469$$_37_37foldl1640457$210323_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local12_loc, align 8
%primtmp_args646469$$_37_37foldl1640457$210323_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646469$$_37_37foldl1640457$210323_arg_0, %struct.SinObj* %primtmp_args646469$$_37_37foldl1640457$210323_arg_1)
store volatile %struct.SinObj* %primtmp_args646469$$_37_37foldl1640457$210323_val, %struct.SinObj** %clo646639_local13_loc, align 8
; Starting prim
%primtmp_args646469$$_37_37foldl1640457$310324_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local9_loc, align 8
%primtmp_args646469$$_37_37foldl1640457$310324_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local13_loc, align 8
%primtmp_args646469$$_37_37foldl1640457$310324_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646469$$_37_37foldl1640457$310324_arg_0, %struct.SinObj* %primtmp_args646469$$_37_37foldl1640457$310324_arg_1)
store volatile %struct.SinObj* %primtmp_args646469$$_37_37foldl1640457$310324_val, %struct.SinObj** %clo646639_local14_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind64342910325_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 43)
br i1 %bind_app_anf_45bind64342910325_has_space, label %bind_app_anf_45bind64342910325_do_call, label %bind_app_anf_45bind64342910325_overflow_first
bind_app_anf_45bind64342910325_overflow_first:
%bind_app_anf_45bind64342910325_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind64342910325_overflow_underflow_addr, i64 43)
br label %bind_app_anf_45bind64342910325_do_call
bind_app_anf_45bind64342910325_do_call:
%bind_app_anf_45bind64342910325_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local2_loc, align 8
%bind_app_anf_45bind64342910325_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local14_loc, align 8
%bind_app_anf_45bind64342910325_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64342910325_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64342910325_cur_fp, i64 43
store volatile %struct.SinObj** %bind_app_anf_45bind64342910325_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64342910325_return_loc = bitcast i8* blockaddress(@main, %clo646639_ret0) to %struct.SinObj*
%bind_app_anf_45bind64342910325_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64342910325_new_fp, i64 1
%bind_app_anf_45bind64342910325_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64342910325_new_fp, i64 2
%bind_app_anf_45bind64342910325_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64342910325_new_fp, i64 3
%bind_app_anf_45bind64342910325_slotscast = inttoptr i64 43 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind64342910325_return_loc, %struct.SinObj** %bind_app_anf_45bind64342910325_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64342910325_slotscast, %struct.SinObj** %bind_app_anf_45bind64342910325_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64342910325_closure, %struct.SinObj** %bind_app_anf_45bind64342910325_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64342910325_arglist, %struct.SinObj** %bind_app_anf_45bind64342910325_newarg1loc, align 8
%bind_app_anf_45bind64342910325_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind64342910325_closure)
indirectbr i8* %bind_app_anf_45bind64342910325_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646639_ret0:
%bind_app_anf_45bind64342910325_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64342910325_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64342910325_oldfp, i64 1
%bind_app_anf_45bind64342910325_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64342910325_slots_loc, align 8
%bind_app_anf_45bind64342910325_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind64342910325_slots_ptr to i64
%bind_app_anf_45bind64342910325_offset = mul i64 %bind_app_anf_45bind64342910325_slots, -1
%bind_app_anf_45bind64342910325_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64342910325_oldfp, i64 %bind_app_anf_45bind64342910325_offset
store volatile %struct.SinObj** %bind_app_anf_45bind64342910325_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643429 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643429, %struct.SinObj** %clo646639_local15_loc, align 8
; Starting if
%if10326_reg = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local15_loc, align 8
%if10326istrue = call i1 @is_truthy_value(%struct.SinObj* %if10326_reg)
br i1 %if10326istrue, label %branch9799_45true, label %branch9799_45false
branch9799_45true:
; Starting return value.
%retval_$acc64051410327_val = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local6_loc, align 8
store volatile %struct.SinObj* %retval_$acc64051410327_val, %struct.SinObj** @retr, align 8
%retval_$acc64051410327_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%retval_$acc64051410327_ra = load volatile %struct.SinObj*, %struct.SinObj** %retval_$acc64051410327_fp, align 8
%retval_$acc64051410327_ra_raw = bitcast %struct.SinObj* %retval_$acc64051410327_ra to i8*
indirectbr i8* %retval_$acc64051410327_ra_raw, [label %clo646597_ret0, label %clo646600_ret0, label %clo646608_ret1, label %clo646608_ret0, label %clo646610_ret0, label %clo646612_ret3, label %clo646612_ret2, label %clo646612_ret1, label %clo646612_ret0, label %clo646615_ret6, label %clo646615_ret5, label %clo646615_ret4, label %clo646615_ret3, label %clo646615_ret2, label %clo646615_ret1, label %clo646615_ret0, label %clo646617_ret0, label %clo646630_ret0, label %clo646639_ret5, label %clo646639_ret4, label %clo646639_ret3, label %clo646639_ret2, label %clo646639_ret1, label %clo646639_ret0, label %clo646642_ret2, label %clo646642_ret1, label %clo646642_ret0, label %clo646643_ret0, label %clo646650_ret5, label %clo646650_ret4, label %clo646650_ret3, label %clo646650_ret2, label %clo646650_ret1, label %clo646650_ret0, label %clo646654_ret0, label %clo646655_ret0, label %clo646658_ret0, label %clo646660_ret0, label %clo646662_ret0, label %clo646664_ret0, label %clo646667_ret1, label %clo646667_ret0, label %clo646669_ret1, label %clo646669_ret0, label %main_ret25, label %main_ret24, label %main_ret23, label %main_ret22, label %main_ret21, label %main_ret20, label %main_ret19, label %main_ret18, label %main_ret17, label %main_ret16, label %main_ret15, label %main_ret14, label %main_ret13, label %main_ret12, label %main_ret11, label %main_ret10, label %main_ret9, label %main_ret8, label %main_ret7, label %main_ret6, label %main_ret5, label %main_ret4, label %main_ret3, label %main_ret2, label %main_ret1, label %main_ret0, label %underflow_handler, label %program_finished]
branch9799_45false:
; Starting make-closure
%makeclo_anf_45bind64343010328_funcaddr = bitcast i8* blockaddress(@main, %clo646637) to i8*
%makeclo_anf_45bind64343010328_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind64343010328_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind64343010328_val, %struct.SinObj** %clo646639_local16_loc, align 8
; Starting const-null
%datnull_args646470$$_37_37map1640452$010329_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646470$$_37_37map1640452$010329_val, %struct.SinObj** %clo646639_local17_loc, align 8
; Starting prim
%primtmp_args646470$$_37_37map1640452$110330_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local8_loc, align 8
%primtmp_args646470$$_37_37map1640452$110330_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local17_loc, align 8
%primtmp_args646470$$_37_37map1640452$110330_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646470$$_37_37map1640452$110330_arg_0, %struct.SinObj* %primtmp_args646470$$_37_37map1640452$110330_arg_1)
store volatile %struct.SinObj* %primtmp_args646470$$_37_37map1640452$110330_val, %struct.SinObj** %clo646639_local18_loc, align 8
; Starting prim
%primtmp_args646470$$_37_37map1640452$210331_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local16_loc, align 8
%primtmp_args646470$$_37_37map1640452$210331_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local18_loc, align 8
%primtmp_args646470$$_37_37map1640452$210331_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646470$$_37_37map1640452$210331_arg_0, %struct.SinObj* %primtmp_args646470$$_37_37map1640452$210331_arg_1)
store volatile %struct.SinObj* %primtmp_args646470$$_37_37map1640452$210331_val, %struct.SinObj** %clo646639_local19_loc, align 8
; Starting direct clo-app
%bind_app_$lsts_4364051910332_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 43)
br i1 %bind_app_$lsts_4364051910332_has_space, label %bind_app_$lsts_4364051910332_do_call, label %bind_app_$lsts_4364051910332_overflow_first
bind_app_$lsts_4364051910332_overflow_first:
%bind_app_$lsts_4364051910332_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_$lsts_4364051910332_overflow_underflow_addr, i64 43)
br label %bind_app_$lsts_4364051910332_do_call
bind_app_$lsts_4364051910332_do_call:
%bind_app_$lsts_4364051910332_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local0_loc, align 8
%bind_app_$lsts_4364051910332_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local19_loc, align 8
%bind_app_$lsts_4364051910332_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$lsts_4364051910332_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$lsts_4364051910332_cur_fp, i64 43
store volatile %struct.SinObj** %bind_app_$lsts_4364051910332_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_$lsts_4364051910332_return_loc = bitcast i8* blockaddress(@main, %clo646639_ret1) to %struct.SinObj*
%bind_app_$lsts_4364051910332_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$lsts_4364051910332_new_fp, i64 1
%bind_app_$lsts_4364051910332_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$lsts_4364051910332_new_fp, i64 2
%bind_app_$lsts_4364051910332_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$lsts_4364051910332_new_fp, i64 3
%bind_app_$lsts_4364051910332_slotscast = inttoptr i64 43 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_$lsts_4364051910332_return_loc, %struct.SinObj** %bind_app_$lsts_4364051910332_new_fp, align 8
store volatile %struct.SinObj* %bind_app_$lsts_4364051910332_slotscast, %struct.SinObj** %bind_app_$lsts_4364051910332_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_$lsts_4364051910332_closure, %struct.SinObj** %bind_app_$lsts_4364051910332_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_$lsts_4364051910332_arglist, %struct.SinObj** %bind_app_$lsts_4364051910332_newarg1loc, align 8
%bind_app_$lsts_4364051910332_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_$lsts_4364051910332_closure)
indirectbr i8* %bind_app_$lsts_4364051910332_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646639_ret1:
%bind_app_$lsts_4364051910332_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$lsts_4364051910332_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$lsts_4364051910332_oldfp, i64 1
%bind_app_$lsts_4364051910332_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_$lsts_4364051910332_slots_loc, align 8
%bind_app_$lsts_4364051910332_slots = ptrtoint %struct.SinObj* %bind_app_$lsts_4364051910332_slots_ptr to i64
%bind_app_$lsts_4364051910332_offset = mul i64 %bind_app_$lsts_4364051910332_slots, -1
%bind_app_$lsts_4364051910332_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$lsts_4364051910332_oldfp, i64 %bind_app_$lsts_4364051910332_offset
store volatile %struct.SinObj** %bind_app_$lsts_4364051910332_after_new_fp, %struct.SinObj*** @fpr, align 8
%$lsts_43640519 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %$lsts_43640519, %struct.SinObj** %clo646639_local20_loc, align 8
; Starting make-closure
%makeclo_anf_45bind64343110333_funcaddr = bitcast i8* blockaddress(@main, %clo646636) to i8*
%makeclo_anf_45bind64343110333_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind64343110333_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind64343110333_val, %struct.SinObj** %clo646639_local21_loc, align 8
; Starting const-null
%datnull_args646471$$_37_37map1640452$010334_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646471$$_37_37map1640452$010334_val, %struct.SinObj** %clo646639_local22_loc, align 8
; Starting prim
%primtmp_args646471$$_37_37map1640452$110335_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local8_loc, align 8
%primtmp_args646471$$_37_37map1640452$110335_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local22_loc, align 8
%primtmp_args646471$$_37_37map1640452$110335_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646471$$_37_37map1640452$110335_arg_0, %struct.SinObj* %primtmp_args646471$$_37_37map1640452$110335_arg_1)
store volatile %struct.SinObj* %primtmp_args646471$$_37_37map1640452$110335_val, %struct.SinObj** %clo646639_local23_loc, align 8
; Starting prim
%primtmp_args646471$$_37_37map1640452$210336_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local21_loc, align 8
%primtmp_args646471$$_37_37map1640452$210336_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local23_loc, align 8
%primtmp_args646471$$_37_37map1640452$210336_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646471$$_37_37map1640452$210336_arg_0, %struct.SinObj* %primtmp_args646471$$_37_37map1640452$210336_arg_1)
store volatile %struct.SinObj* %primtmp_args646471$$_37_37map1640452$210336_val, %struct.SinObj** %clo646639_local24_loc, align 8
; Starting direct clo-app
%bind_app_$vs64052110337_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 43)
br i1 %bind_app_$vs64052110337_has_space, label %bind_app_$vs64052110337_do_call, label %bind_app_$vs64052110337_overflow_first
bind_app_$vs64052110337_overflow_first:
%bind_app_$vs64052110337_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_$vs64052110337_overflow_underflow_addr, i64 43)
br label %bind_app_$vs64052110337_do_call
bind_app_$vs64052110337_do_call:
%bind_app_$vs64052110337_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local0_loc, align 8
%bind_app_$vs64052110337_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local24_loc, align 8
%bind_app_$vs64052110337_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$vs64052110337_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$vs64052110337_cur_fp, i64 43
store volatile %struct.SinObj** %bind_app_$vs64052110337_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_$vs64052110337_return_loc = bitcast i8* blockaddress(@main, %clo646639_ret2) to %struct.SinObj*
%bind_app_$vs64052110337_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$vs64052110337_new_fp, i64 1
%bind_app_$vs64052110337_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$vs64052110337_new_fp, i64 2
%bind_app_$vs64052110337_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$vs64052110337_new_fp, i64 3
%bind_app_$vs64052110337_slotscast = inttoptr i64 43 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_$vs64052110337_return_loc, %struct.SinObj** %bind_app_$vs64052110337_new_fp, align 8
store volatile %struct.SinObj* %bind_app_$vs64052110337_slotscast, %struct.SinObj** %bind_app_$vs64052110337_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_$vs64052110337_closure, %struct.SinObj** %bind_app_$vs64052110337_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_$vs64052110337_arglist, %struct.SinObj** %bind_app_$vs64052110337_newarg1loc, align 8
%bind_app_$vs64052110337_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_$vs64052110337_closure)
indirectbr i8* %bind_app_$vs64052110337_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646639_ret2:
%bind_app_$vs64052110337_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$vs64052110337_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$vs64052110337_oldfp, i64 1
%bind_app_$vs64052110337_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_$vs64052110337_slots_loc, align 8
%bind_app_$vs64052110337_slots = ptrtoint %struct.SinObj* %bind_app_$vs64052110337_slots_ptr to i64
%bind_app_$vs64052110337_offset = mul i64 %bind_app_$vs64052110337_slots, -1
%bind_app_$vs64052110337_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$vs64052110337_oldfp, i64 %bind_app_$vs64052110337_offset
store volatile %struct.SinObj** %bind_app_$vs64052110337_after_new_fp, %struct.SinObj*** @fpr, align 8
%$vs640521 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %$vs640521, %struct.SinObj** %clo646639_local25_loc, align 8
; Starting make-closure
%makeclo_anf_45bind64343210338_funcaddr = bitcast i8* blockaddress(@main, %clo646635) to i8*
%makeclo_anf_45bind64343210338_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind64343210338_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind64343210338_val, %struct.SinObj** %clo646639_local26_loc, align 8
; Starting make-closure
%makeclo_anf_45bind64343310339_funcaddr = bitcast i8* blockaddress(@main, %clo646634) to i8*
%makeclo_anf_45bind64343310339_val = call %struct.SinObj* @closure_alloc(i64 0, i8* %makeclo_anf_45bind64343310339_funcaddr)
store volatile %struct.SinObj* %makeclo_anf_45bind64343310339_val, %struct.SinObj** %clo646639_local27_loc, align 8
; Starting const-null
%datnull_args646472$anf_45bind643433$010340_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646472$anf_45bind643433$010340_val, %struct.SinObj** %clo646639_local28_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind64343410341_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 43)
br i1 %bind_app_anf_45bind64343410341_has_space, label %bind_app_anf_45bind64343410341_do_call, label %bind_app_anf_45bind64343410341_overflow_first
bind_app_anf_45bind64343410341_overflow_first:
%bind_app_anf_45bind64343410341_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind64343410341_overflow_underflow_addr, i64 43)
br label %bind_app_anf_45bind64343410341_do_call
bind_app_anf_45bind64343410341_do_call:
%bind_app_anf_45bind64343410341_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local27_loc, align 8
%bind_app_anf_45bind64343410341_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local28_loc, align 8
%bind_app_anf_45bind64343410341_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64343410341_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64343410341_cur_fp, i64 43
store volatile %struct.SinObj** %bind_app_anf_45bind64343410341_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64343410341_return_loc = bitcast i8* blockaddress(@main, %clo646639_ret3) to %struct.SinObj*
%bind_app_anf_45bind64343410341_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64343410341_new_fp, i64 1
%bind_app_anf_45bind64343410341_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64343410341_new_fp, i64 2
%bind_app_anf_45bind64343410341_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64343410341_new_fp, i64 3
%bind_app_anf_45bind64343410341_slotscast = inttoptr i64 43 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind64343410341_return_loc, %struct.SinObj** %bind_app_anf_45bind64343410341_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64343410341_slotscast, %struct.SinObj** %bind_app_anf_45bind64343410341_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64343410341_closure, %struct.SinObj** %bind_app_anf_45bind64343410341_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64343410341_arglist, %struct.SinObj** %bind_app_anf_45bind64343410341_newarg1loc, align 8
%bind_app_anf_45bind64343410341_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind64343410341_closure)
indirectbr i8* %bind_app_anf_45bind64343410341_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646639_ret3:
%bind_app_anf_45bind64343410341_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64343410341_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64343410341_oldfp, i64 1
%bind_app_anf_45bind64343410341_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64343410341_slots_loc, align 8
%bind_app_anf_45bind64343410341_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind64343410341_slots_ptr to i64
%bind_app_anf_45bind64343410341_offset = mul i64 %bind_app_anf_45bind64343410341_slots, -1
%bind_app_anf_45bind64343410341_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64343410341_oldfp, i64 %bind_app_anf_45bind64343410341_offset
store volatile %struct.SinObj** %bind_app_anf_45bind64343410341_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643434 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643434, %struct.SinObj** %clo646639_local29_loc, align 8
; Starting prim
%primtmp_anf_45bind64343510342_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local6_loc, align 8
%primtmp_anf_45bind64343510342_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local29_loc, align 8
%primtmp_anf_45bind64343510342_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_anf_45bind64343510342_arg_0, %struct.SinObj* %primtmp_anf_45bind64343510342_arg_1)
store volatile %struct.SinObj* %primtmp_anf_45bind64343510342_val, %struct.SinObj** %clo646639_local30_loc, align 8
; Starting const-null
%datnull_args646473$$_37_37foldr1640462$010343_val = call %struct.SinObj* @const_init_null()
store volatile %struct.SinObj* %datnull_args646473$$_37_37foldr1640462$010343_val, %struct.SinObj** %clo646639_local31_loc, align 8
; Starting prim
%primtmp_args646473$$_37_37foldr1640462$110344_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local25_loc, align 8
%primtmp_args646473$$_37_37foldr1640462$110344_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local31_loc, align 8
%primtmp_args646473$$_37_37foldr1640462$110344_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646473$$_37_37foldr1640462$110344_arg_0, %struct.SinObj* %primtmp_args646473$$_37_37foldr1640462$110344_arg_1)
store volatile %struct.SinObj* %primtmp_args646473$$_37_37foldr1640462$110344_val, %struct.SinObj** %clo646639_local32_loc, align 8
; Starting prim
%primtmp_args646473$$_37_37foldr1640462$210345_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local30_loc, align 8
%primtmp_args646473$$_37_37foldr1640462$210345_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local32_loc, align 8
%primtmp_args646473$$_37_37foldr1640462$210345_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646473$$_37_37foldr1640462$210345_arg_0, %struct.SinObj* %primtmp_args646473$$_37_37foldr1640462$210345_arg_1)
store volatile %struct.SinObj* %primtmp_args646473$$_37_37foldr1640462$210345_val, %struct.SinObj** %clo646639_local33_loc, align 8
; Starting prim
%primtmp_args646473$$_37_37foldr1640462$310346_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local26_loc, align 8
%primtmp_args646473$$_37_37foldr1640462$310346_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local33_loc, align 8
%primtmp_args646473$$_37_37foldr1640462$310346_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_args646473$$_37_37foldr1640462$310346_arg_0, %struct.SinObj* %primtmp_args646473$$_37_37foldr1640462$310346_arg_1)
store volatile %struct.SinObj* %primtmp_args646473$$_37_37foldr1640462$310346_val, %struct.SinObj** %clo646639_local34_loc, align 8
; Starting direct clo-app
%bind_app_anf_45bind64343610347_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 43)
br i1 %bind_app_anf_45bind64343610347_has_space, label %bind_app_anf_45bind64343610347_do_call, label %bind_app_anf_45bind64343610347_overflow_first
bind_app_anf_45bind64343610347_overflow_first:
%bind_app_anf_45bind64343610347_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_anf_45bind64343610347_overflow_underflow_addr, i64 43)
br label %bind_app_anf_45bind64343610347_do_call
bind_app_anf_45bind64343610347_do_call:
%bind_app_anf_45bind64343610347_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local3_loc, align 8
%bind_app_anf_45bind64343610347_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local34_loc, align 8
%bind_app_anf_45bind64343610347_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64343610347_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64343610347_cur_fp, i64 43
store volatile %struct.SinObj** %bind_app_anf_45bind64343610347_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64343610347_return_loc = bitcast i8* blockaddress(@main, %clo646639_ret4) to %struct.SinObj*
%bind_app_anf_45bind64343610347_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64343610347_new_fp, i64 1
%bind_app_anf_45bind64343610347_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64343610347_new_fp, i64 2
%bind_app_anf_45bind64343610347_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64343610347_new_fp, i64 3
%bind_app_anf_45bind64343610347_slotscast = inttoptr i64 43 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_anf_45bind64343610347_return_loc, %struct.SinObj** %bind_app_anf_45bind64343610347_new_fp, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64343610347_slotscast, %struct.SinObj** %bind_app_anf_45bind64343610347_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64343610347_closure, %struct.SinObj** %bind_app_anf_45bind64343610347_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_anf_45bind64343610347_arglist, %struct.SinObj** %bind_app_anf_45bind64343610347_newarg1loc, align 8
%bind_app_anf_45bind64343610347_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_anf_45bind64343610347_closure)
indirectbr i8* %bind_app_anf_45bind64343610347_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646639_ret4:
%bind_app_anf_45bind64343610347_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_anf_45bind64343610347_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64343610347_oldfp, i64 1
%bind_app_anf_45bind64343610347_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64343610347_slots_loc, align 8
%bind_app_anf_45bind64343610347_slots = ptrtoint %struct.SinObj* %bind_app_anf_45bind64343610347_slots_ptr to i64
%bind_app_anf_45bind64343610347_offset = mul i64 %bind_app_anf_45bind64343610347_slots, -1
%bind_app_anf_45bind64343610347_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_anf_45bind64343610347_oldfp, i64 %bind_app_anf_45bind64343610347_offset
store volatile %struct.SinObj** %bind_app_anf_45bind64343610347_after_new_fp, %struct.SinObj*** @fpr, align 8
%anf_45bind643436 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %anf_45bind643436, %struct.SinObj** %clo646639_local35_loc, align 8
; Starting direct clo-app
%bind_app_$acc_4364052310348_has_space = call i1 @check_for_overflow(%struct.SinObj*** @fpr, %struct.SinObj*** @spr, i64 43)
br i1 %bind_app_$acc_4364052310348_has_space, label %bind_app_$acc_4364052310348_do_call, label %bind_app_$acc_4364052310348_overflow_first
bind_app_$acc_4364052310348_overflow_first:
%bind_app_$acc_4364052310348_overflow_underflow_addr = bitcast i8* blockaddress(@main, %underflow_handler) to i8*
call void @handle_overflow(%struct.SinRecord** @srr, %struct.SinObj*** @fpr, %struct.SinObj*** @spr, i8* %bind_app_$acc_4364052310348_overflow_underflow_addr, i64 43)
br label %bind_app_$acc_4364052310348_do_call
bind_app_$acc_4364052310348_do_call:
%bind_app_$acc_4364052310348_closure = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local4_loc, align 8
%bind_app_$acc_4364052310348_arglist = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local35_loc, align 8
%bind_app_$acc_4364052310348_cur_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$acc_4364052310348_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$acc_4364052310348_cur_fp, i64 43
store volatile %struct.SinObj** %bind_app_$acc_4364052310348_new_fp, %struct.SinObj*** @fpr, align 8
%bind_app_$acc_4364052310348_return_loc = bitcast i8* blockaddress(@main, %clo646639_ret5) to %struct.SinObj*
%bind_app_$acc_4364052310348_newsizeloc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$acc_4364052310348_new_fp, i64 1
%bind_app_$acc_4364052310348_newarg0loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$acc_4364052310348_new_fp, i64 2
%bind_app_$acc_4364052310348_newarg1loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$acc_4364052310348_new_fp, i64 3
%bind_app_$acc_4364052310348_slotscast = inttoptr i64 43 to %struct.SinObj*
store volatile %struct.SinObj* %bind_app_$acc_4364052310348_return_loc, %struct.SinObj** %bind_app_$acc_4364052310348_new_fp, align 8
store volatile %struct.SinObj* %bind_app_$acc_4364052310348_slotscast, %struct.SinObj** %bind_app_$acc_4364052310348_newsizeloc, align 8
store volatile %struct.SinObj* %bind_app_$acc_4364052310348_closure, %struct.SinObj** %bind_app_$acc_4364052310348_newarg0loc, align 8
store volatile %struct.SinObj* %bind_app_$acc_4364052310348_arglist, %struct.SinObj** %bind_app_$acc_4364052310348_newarg1loc, align 8
%bind_app_$acc_4364052310348_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %bind_app_$acc_4364052310348_closure)
indirectbr i8* %bind_app_$acc_4364052310348_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
clo646639_ret5:
%bind_app_$acc_4364052310348_oldfp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%bind_app_$acc_4364052310348_slots_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$acc_4364052310348_oldfp, i64 1
%bind_app_$acc_4364052310348_slots_ptr = load volatile %struct.SinObj*, %struct.SinObj** %bind_app_$acc_4364052310348_slots_loc, align 8
%bind_app_$acc_4364052310348_slots = ptrtoint %struct.SinObj* %bind_app_$acc_4364052310348_slots_ptr to i64
%bind_app_$acc_4364052310348_offset = mul i64 %bind_app_$acc_4364052310348_slots, -1
%bind_app_$acc_4364052310348_after_new_fp = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %bind_app_$acc_4364052310348_oldfp, i64 %bind_app_$acc_4364052310348_offset
store volatile %struct.SinObj** %bind_app_$acc_4364052310348_after_new_fp, %struct.SinObj*** @fpr, align 8
%$acc_43640523 = load volatile %struct.SinObj*, %struct.SinObj** @retr, align 8
store volatile %struct.SinObj* %$acc_43640523, %struct.SinObj** %clo646639_local36_loc, align 8
; Starting prim
%primtmp_anf_45bind64343710349_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local36_loc, align 8
%primtmp_anf_45bind64343710349_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local20_loc, align 8
%primtmp_anf_45bind64343710349_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_anf_45bind64343710349_arg_0, %struct.SinObj* %primtmp_anf_45bind64343710349_arg_1)
store volatile %struct.SinObj* %primtmp_anf_45bind64343710349_val, %struct.SinObj** %clo646639_local37_loc, align 8
; Starting prim
%primtmp_anf_45bind64343810350_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local4_loc, align 8
%primtmp_anf_45bind64343810350_arg_1 = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local37_loc, align 8
%primtmp_anf_45bind64343810350_val = call %struct.SinObj* @prim_cons(%struct.SinObj* %primtmp_anf_45bind64343810350_arg_0, %struct.SinObj* %primtmp_anf_45bind64343810350_arg_1)
store volatile %struct.SinObj* %primtmp_anf_45bind64343810350_val, %struct.SinObj** %clo646639_local38_loc, align 8
; Starting tail-clo-app
%_tailapp_$foldl64051010351_clo = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local1_loc, align 8
%_tailapp_$foldl64051010351_args = load volatile %struct.SinObj*, %struct.SinObj** %clo646639_local38_loc, align 8
%_tailapp_$foldl64051010351_fp = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
%_tailapp_$foldl64051010351_arg0 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_$foldl64051010351_fp, i64 2
%_tailapp_$foldl64051010351_arg1 = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %_tailapp_$foldl64051010351_fp, i64 3
store volatile %struct.SinObj* %_tailapp_$foldl64051010351_clo, %struct.SinObj** %_tailapp_$foldl64051010351_arg0, align 8
store volatile %struct.SinObj* %_tailapp_$foldl64051010351_args, %struct.SinObj** %_tailapp_$foldl64051010351_arg1, align 8
%_tailapp_$foldl64051010351_funcptr = call i8* @closure_get_fn_part(%struct.SinObj* %_tailapp_$foldl64051010351_clo)
indirectbr i8* %_tailapp_$foldl64051010351_funcptr, [label %clo646593, label %clo646594, label %clo646595, label %clo646596, label %clo646597, label %clo646598, label %clo646599, label %clo646600, label %clo646601, label %clo646602, label %clo646603, label %clo646604, label %clo646605, label %clo646606, label %clo646607, label %clo646608, label %clo646609, label %clo646610, label %clo646611, label %clo646612, label %clo646613, label %clo646614, label %clo646615, label %clo646616, label %clo646617, label %clo646618, label %clo646619, label %clo646620, label %clo646621, label %clo646622, label %clo646623, label %clo646624, label %clo646625, label %clo646626, label %clo646627, label %clo646628, label %clo646629, label %clo646630, label %clo646631, label %clo646632, label %clo646633, label %clo646634, label %clo646635, label %clo646636, label %clo646637, label %clo646638, label %clo646639, label %clo646640, label %clo646641, label %clo646642, label %clo646643, label %clo646644, label %clo646645, label %clo646646, label %clo646647, label %clo646648, label %clo646649, label %clo646650, label %clo646651, label %clo646652, label %clo646653, label %clo646654, label %clo646655, label %clo646657, label %clo646656, label %clo646658, label %clo646659, label %clo646660, label %clo646661, label %clo646662, label %clo646663, label %clo646664, label %clo646665, label %clo646666, label %clo646667, label %clo646668, label %clo646669, label %clo646670, label %clo646671, label %clo646672, label %main]
; Function clo646639 finished
clo646638:
%prologue_cur_fp10352 = load volatile %struct.SinObj**, %struct.SinObj*** @fpr, align 8
; Create stack slots
%clo646638_arg0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10352, i64 2
%clo646638_arg1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10352, i64 3
%clo646638_local3_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10352, i64 7
%clo646638_local2_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10352, i64 6
%clo646638_local1_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10352, i64 5
%clo646638_local0_loc = getelementptr inbounds %struct.SinObj*, %struct.SinObj** %prologue_cur_fp10352, i64 4
; End function Prologue
; Starting prim
%primtmp_$xs64051710353_arg_0 = load volatile %struct.SinObj*, %struct.SinObj** %clo646638_arg1_loc, align 8
%primtmp_$xs64051710353_val = call %struct.SinObj* @prim_car(%struct.SinObj* %primtmp_$xs64051710353_arg_0)
store volatile %struct.SinObj* %primtmp_$xs64051710353_val, %struct.SinObj** %clo646638_local0_loc, align 8
; Starting prim
%primtmp_arglist646468110354_arg_0 = load volatile %struct.SinObj*, %struct.SinObj**
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment