top:
%3 = alloca { i64, i64, %Slice }, align 8
%4 = alloca i8***, align 8
store volatile i8*** %1, i8**** %4, align 8
%5 = alloca [3 x
i64], align 8
%6 = alloca [3 x
i64], align 8
%8 = alloca [56 x
i8**], align 8
%.sub = getelementptr inbounds [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 0
%9 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 50
%10 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 2
%11 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 49
%12 = bitcast i8*** %9 to i8*
%13 = bitcast [56 x
i8**]* %8 to i64*
%14 = bitcast i8*** %10 to i8*
store i64 108, i64* %13, align 8
%15 = bitcast i8**** %7 to i64*
%16 = load i64, i64* %15, align 8
%17 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 1
%18 = bitcast i8*** %17 to i64*
store i64 %16, i64* %18, align 8
store i8*** %.sub, i8**** %7, align 8
store i8** null, i8*** %11, align 8
br i1 %19, label %fail, label %pass
fail: ; preds = %top
%20 = getelementptr i8**, i8*** %1, i64 2
unreachable
pass: ; preds = %top
%21 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 3
%22 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 4
%23 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 5
%24 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 6
%25 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 7
%26 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 8
%27 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 52
%28 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 51
%29 = load i8**, i8*** %1, align 8
%30 = getelementptr i8**, i8*** %1, i64 1
%31 = bitcast i8*** %30 to i64*
%32 = load i64, i64* %31, align 8
%33 = getelementptr i8**, i8*** %1, i64 2
%34 = bitcast i8*** %33 to i64*
%35 = load i64, i64* %34, align 8
store i8** %29, i8*** %9, align 8
%36 = bitcast i8*** %28 to i64*
store i64 %32, i64* %36, align 8
%37 = bitcast i8*** %27 to i64*
store i64 %35, i64* %37, align 8
store i8** %38, i8*** %10, align 8
%39 = bitcast i8** %29 to i8***
%40 = load i8**, i8*** %39, align 8
store i8** %40, i8*** %21, align 8
%41 = getelementptr i8*, i8** %40, i64 3
%42 = bitcast i8** %41 to i64*
%43 = load i64, i64* %42, align 8
store i8** %40, i8*** %22, align 8
store i8** %40, i8*** %23, align 8
store i8** %44, i8*** %24, align 8
%45 = call i8** @"julia_fill!_63378"(i8** %44, double 0.000000e+00)
store i8** %45, i8*** %25, align 8
%46 = load i8**, i8*** %39, align 8
store i8** %46, i8*** %26, align 8
%47 = getelementptr i8*, i8** %46, i64 3
%48 = bitcast i8** %47 to i64*
%49 = load i64, i64* %48, align 8
%50 = icmp slt
i64 %49, 1
br i1 %50, label %pass.L166_crit_edge, label %if.lr.ph
pass.L166_crit_edge: ; preds = %pass
%.pre98 = bitcast i8**** %7 to i8*
br label %L166
if.lr.ph: ; preds = %pass
%51 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 9
%52 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 10
%53 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 11
%54 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 12
%55 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 13
%56 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 14
%57 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 15
%58 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 16
%59 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 17
%60 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 18
%61 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 19
%62 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 55
%63 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 54
%64 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 53
%65 = bitcast i8*** %64 to i64*
%66 = getelementptr i8*, i8** %45, i64 5
%67 = bitcast i8** %66 to i64*
%71 = getelementptr i8*, i8** %45, i64 3
%72 = bitcast i8** %71 to i64*
%73 = getelementptr i8*, i8** %45, i64 4
%74 = bitcast i8** %73 to i64*
%75 = bitcast i8**** %7 to i8*
br label %if
L60.loopexit.loopexit: ; preds = %L154
br label %L60.loopexit
L60.loopexit: ; preds = %L60.loopexit.loopexit, %if
%76 = icmp eq
i64 %"#temp#1.076", %49
br i1 %76, label %L166.loopexit, label %L60.loopexit.if_crit_edge
L60.loopexit.if_crit_edge: ; preds = %L60.loopexit
%77 = add i64 %"#temp#1.076", 1
%.pre = load i8**, i8*** %39, align 8
%.phi.trans
.insert
= getelementptr i8*, i8** %.pre, i64 3
%.phi.trans
.insert92
= bitcast i8** %.phi.trans
.insert
to i64*
%.pre93 = load i64, i64* %.phi.trans
.insert92
, align 8
br label %if
if: ; preds = %L60.loopexit.if_crit_edge, %if.lr.ph
%78 = phi i64 [ %49, %if.lr.ph ], [ %.pre93, %L60.loopexit.if_crit_edge ]
%79 = phi i8** [ %46, %if.lr.ph ], [ %.pre, %L60.loopexit.if_crit_edge ]
%"#temp#1.076" = phi i64 [ 1, %if.lr.ph ], [ %77, %L60.loopexit.if_crit_edge ]
store i8** %79, i8*** %51, align 8
%80 = icmp slt
i64 %78, 1
br i1 %80, label %L60.loopexit, label %if3.lr.ph
if3.lr.ph: ; preds = %if
%81 = add i64 %"#temp#1.076", -1
br label %if3
L166.loopexit: ; preds = %L60.loopexit
br label %L166
L166: ; preds = %L166.loopexit, %pass.L166_crit_edge
%.pre-phi = phi i8* [ %.pre98, %pass.L166_crit_edge ], [ %75, %L166.loopexit ]
%82 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 20
%83 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 21
%84 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 22
%85 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 23
%86 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 24
%87 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 25
%88 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 26
%89 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 27
%90 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 28
%91 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 29
%92 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 30
%93 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 31
%94 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 32
%95 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 33
%96 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 34
%97 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 35
%98 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 36
%99 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 37
%100 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 38
%101 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 39
%102 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 40
%103 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 41
%104 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 42
%105 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 43
%106 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 44
store i8** %38, i8*** %82, align 8
store i8** %107, i8*** %83, align 8
store i8** %107, i8*** %84, align 8
store i8** %45, i8*** %85, align 8
store i8** %107, i8*** %86, align 8
store i8** %45, i8*** %87, align 8
store i8** %111, i8*** %88, align 8
%112 = call i8** @"julia_contract!_63399"(double 5.000000e-01, i8** %107, i8** inttoptr (i64 4842295344 to i8**), i8** %45, i8** inttoptr (i64 4842295344 to i8**), i64 0, i8** %111, [1 x
i64]* nocapture nonnull
readonly @1, [1 x
i64]* nocapture nonnull
readonly @2, [2 x
i64]* nocapture nonnull
readonly @3, [1 x
i64]* nocapture nonnull
readonly @4, [3 x
i64]* nocapture nonnull
readonly @5, i8** inttoptr (i64 4847279344 to i8**))
store i8** %112, i8*** %89, align 8
store i8** %107, i8*** %90, align 8
store i8** %45, i8*** %91, align 8
store i8** %107, i8*** %92, align 8
store i8** %45, i8*** %93, align 8
store i8** %116, i8*** %94, align 8
%117 = call i8** @"julia_contract!_63399"(double 5.000000e-01, i8** %107, i8** inttoptr (i64 4842295344 to i8**), i8** %45, i8** inttoptr (i64 4842295344 to i8**), i64 0, i8** %116, [1 x
i64]* nocapture nonnull
readonly @7, [1 x
i64]* nocapture nonnull
readonly @8, [2 x
i64]* nocapture nonnull
readonly @9, [1 x
i64]* nocapture nonnull
readonly @10, [3 x
i64]* nocapture nonnull
readonly @11, i8** inttoptr (i64 4847279344 to i8**))
store i8** %117, i8*** %95, align 8
store i8** %107, i8*** %96, align 8
store i8** %45, i8*** %97, align 8
store i8** %107, i8*** %98, align 8
store i8** %45, i8*** %99, align 8
store i8** %121, i8*** %100, align 8
%122 = call i8** @"julia_contract!_63399"(double 5.000000e-01, i8** %107, i8** inttoptr (i64 4842295344 to i8**), i8** %45, i8** inttoptr (i64 4842295344 to i8**), i64 0, i8** %121, [1 x
i64]* nocapture nonnull
readonly @13, [1 x
i64]* nocapture nonnull
readonly @14, [2 x
i64]* nocapture nonnull
readonly @15, [1 x
i64]* nocapture nonnull
readonly @16, [3 x
i64]* nocapture nonnull
readonly @17, i8** inttoptr (i64 4847279344 to i8**))
store i8** %122, i8*** %101, align 8
%127 = getelementptr i8*, i8** %126, i64 -1
%128 = bitcast i8** %127 to i8***
store i8** inttoptr (i64 4559708720 to i8**), i8*** %128, align 8
store i8** %126, i8*** %102, align 8
%129 = bitcast i8** %126 to i8***
store i8** %112, i8*** %129, align 8
%130 = getelementptr i8*, i8** %126, i64 1
%131 = bitcast i8** %130 to i64*
store i64 1, i64* %131, align 8
%133 = getelementptr i8*, i8** %132, i64 -1
%134 = bitcast i8** %133 to i8***
store i8** inttoptr (i64 4559708720 to i8**), i8*** %134, align 8
store i8** %132, i8*** %103, align 8
%135 = bitcast i8** %132 to i8***
store i8** %117, i8*** %135, align 8
%136 = getelementptr i8*, i8** %132, i64 1
%137 = bitcast i8** %136 to i64*
store i64 1, i64* %137, align 8
%139 = load i8**, i8*** inttoptr (i64 4616977056 to i8***), align 32
%142 = getelementptr i8*, i8** %141, i64 -1
%143 = bitcast i8** %142 to i8***
store i8** inttoptr (i64 4619139920 to i8**), i8*** %143, align 8
store i8** %141, i8*** %104, align 8
%144 = bitcast i8** %141 to i8***
store i8** null, i8*** %144, align 8
%146 = getelementptr i8*, i8** %145, i64 -1
%147 = bitcast i8** %146 to i8***
store i8** inttoptr (i64 4619136656 to i8**), i8*** %147, align 8
store i8** %145, i8*** %105, align 8
%148 = bitcast i8** %145 to i8***
%149 = getelementptr i8*, i8** %145, i64 1
%150 = bitcast i8** %149 to i8***
%151 = getelementptr i8*, i8** %145, i64 2
%152 = bitcast i8** %151 to i8***
%153 = getelementptr inbounds i8*, i8** %145, i64 2
%154 = bitcast i8** %153 to i64*
store i64 0, i64* %154, align 8
store i8** %126, i8*** %148, align 8
store i8** %132, i8*** %150, align 8
%156 = getelementptr i8*, i8** %155, i64 -1
%157 = bitcast i8** %156 to i8***
store i8** inttoptr (i64 4559708720 to i8**), i8*** %157, align 8
store i8** %155, i8*** %106, align 8
%158 = bitcast i8** %155 to i8***
store i8** %122, i8*** %158, align 8
%159 = getelementptr i8*, i8** %155, i64 1
%160 = bitcast i8** %159 to i64*
store i64 -1, i64* %160, align 8
store i8** %155, i8*** %152, align 8
%161 = icmp eq
i8** %155, null
br i1 %161, label %cont36, label %wb_not_null
if3: ; preds = %L154.if3_crit_edge, %if3.lr.ph
%162 = phi i64 [ %78, %if3.lr.ph ], [ %.pre97, %L154.if3_crit_edge ]
%163 = phi i8** [ %79, %if3.lr.ph ], [ %.pre94, %L154.if3_crit_edge ]
%"#temp#.075" = phi i64 [ 1, %if3.lr.ph ], [ %210, %L154.if3_crit_edge ]
store i8** %163, i8*** %52, align 8
%164 = icmp ult
i64 %81, %162
br i1 %164, label %ib, label %oob
ib: ; preds = %if3
%165 = add i64 %"#temp#.075", -1
%166 = getelementptr i8*, i8** %163, i64 4
%167 = bitcast i8** %166 to i64*
%168 = load i64, i64* %167, align 8
%169 = icmp ult
i64 %165, %168
br i1 %169, label %idxend, label %oob
oob: ; preds = %ib, %if3
%170 = alloca [2 x
i64], align 8
%.sub50 = getelementptr inbounds [2 x
i64], [2 x
i64]* %170, i64 0, i64 0
store i64 %"#temp#1.076", i64* %.sub50, align 8
%171 = getelementptr [2 x
i64], [2 x
i64]* %170, i64 0, i64 1
store i64 %"#temp#.075", i64* %171, align 8
unreachable
idxend: ; preds = %ib
%172 = mul i64 %162, %165
%174 = bitcast i8** %163 to i8****
%175 = load i8***, i8**** %174, align 8
%176 = getelementptr i8**, i8*** %175, i64 %173
%177 = load i8**, i8*** %176, align 8
%178 = icmp eq
i8** %177, null
br i1 %178, label %fail4, label %pass7
fail4: ; preds = %idxend
unreachable
pass7: ; preds = %idxend
store i8** %177, i8*** %53, align 8
%179 = load i64, i64* %34, align 8
store i8** inttoptr (i64 4555327968 to i8**), i8*** %9, align 8
store i8** %177, i8*** %28, align 8
store i64 %32, i64* %37, align 8
store i64 %179, i64* %65, align 8
store i8** %180, i8*** %54, align 8
store i8** %45, i8*** %55, align 8
store i8** %45, i8*** %56, align 8
store i8** %45, i8*** %57, align 8
%181 = load i64, i64* %67, align 8
%182 = icmp slt
i64 %181, 0
store i64 %"#temp#1.076", i64* %68, align 8
store i64 %"#temp#.075", i64* %69, align 8
store i64 %183, i64* %70, align 8
store i8** %45, i8*** %58, align 8
%184 = load i64, i64* %72, align 8
store i8** %45, i8*** %59, align 8
%185 = load i64, i64* %74, align 8
store i8** %45, i8*** %60, align 8
%186 = icmp slt
i64 %184, 0
%188 = icmp slt
i64 %185, 0
%190 = icmp sgt
i64 %"#temp#1.076", 0
%191 = zext i1 %190 to i8
%192 = icmp sle
i64 %"#temp#1.076", %187
%193 = zext i1 %192 to i8
%194 = icmp sgt
i64 %"#temp#.075", 0
%195 = zext i1 %194 to i8
%196 = icmp sle
i64 %"#temp#.075", %189
%197 = zext i1 %196 to i8
%201 = icmp eq
i8 %200, 0
br i1 %201, label %L152, label %L154
L152: ; preds = %pass7
store i8** %45, i8*** %61, align 8
unreachable
L154: ; preds = %pass7
store i8** %45, i8*** %28, align 8
store i8** inttoptr (i64 4556518536 to i8**), i8*** %9, align 8
store i8** %180, i8*** %27, align 8
store i8** %202, i8*** %64, align 8
store i8** %203, i8*** %63, align 8
%205 = getelementptr i8*, i8** %204, i64 -1
%206 = bitcast i8** %205 to i8***
store i8** inttoptr (i64 4841145104 to i8**), i8*** %206, align 8
%207 = bitcast i8** %204 to i64*
store i64 %183, i64* %207, align 8
store i8** %204, i8*** %62, align 8
%208 = call i8** @"japi1__unsafe_setindex!_63379"(i8** inttoptr (i64 4565385672 to i8**), i8*** %9, i32 6)
%209 = icmp eq
i64 %"#temp#.075", %78
br i1 %209, label %L60.loopexit.loopexit, label %L154.if3_crit_edge
L154.if3_crit_edge: ; preds = %L154
%210 = add i64 %"#temp#.075", 1
%.pre94 = load i8**, i8*** %39, align 8
%.phi.trans
.insert95
= getelementptr i8*, i8** %.pre94, i64 3
%.phi.trans
.insert96
= bitcast i8** %.phi.trans
.insert95
to i64*
%.pre97 = load i64, i64* %.phi.trans
.insert96
, align 8
br label %if3
wb_not_null: ; preds = %L166
%211 = bitcast i8** %146 to i64*
%212 = load i64, i64* %211, align 8
%214 = icmp eq
i64 %213, 3
br i1 %214, label %wb_trigger, label %cont36.thread
wb_trigger: ; preds = %wb_not_null
br label %cont36.thread
cont36.thread: ; preds = %wb_not_null, %wb_trigger
store i8** %145, i8*** %144, align 8
br label %wb_not_null37
cont36: ; preds = %L166
store i8** %145, i8*** %144, align 8
%215 = icmp eq
i8** %145, null
br i1 %215, label %cont41, label %wb_not_null37
wb_not_null37: ; preds = %cont36.thread, %cont36
%216 = bitcast i8** %142 to i64*
%217 = load i64, i64* %216, align 8
%219 = icmp eq
i64 %218, 3
br i1 %219, label %wb_may_trigger38, label %cont41
wb_may_trigger38: ; preds = %wb_not_null37
%220 = bitcast i8** %146 to i64*
%221 = load i64, i64* %220, align 8
%223 = icmp eq
i64 %222, 0
br i1 %223, label %wb_trigger39, label %cont41
wb_trigger39: ; preds = %wb_may_trigger38
br label %cont41
cont41: ; preds = %cont36, %wb_not_null37, %wb_may_trigger38, %wb_trigger39
%224 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 45
%225 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 46
store i8** %226, i8*** %224, align 8
store i8** %226, i8*** %225, align 8
%228 = extractvalue %OneTo %227, 0
%229 = icmp eq
i64 %228, 0
br i1 %229, label %L425, label %if42.lr.ph
if42.lr.ph: ; preds = %cont41
%230 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 47
%231 = getelementptr [56 x
i8**], [56 x
i8**]* %8, i64 0, i64 48
%232 = bitcast i8** %226 to double**
%233 = load double*, double** %232, align 8
%234 = getelementptr inbounds i8*, i8** %226, i64 1
%235 = bitcast i8** %234 to i64*
%236 = load i64, i64* %235, align 8
br label %if42
if42: ; preds = %if42.lr.ph, %L411.backedge
%"#temp#2.074" = phi i64 [ 1, %if42.lr.ph ], [ %246, %L411.backedge ]
store i8** %226, i8*** %230, align 8
%237 = add i64 %"#temp#2.074", -1
%238 = icmp ult
i64 %237, %236
br i1 %238, label %idxend46, label %oob43
L425.loopexit: ; preds = %L411.backedge
br label %L425
L425: ; preds = %L425.loopexit, %cont41
%239 = load i64, i64* %18, align 8
store i64 %239, i64* %15, align 8
oob43: ; preds = %if42
%240 = alloca i64, align 8
store i64 %"#temp#2.074", i64* %240, align 8
unreachable
idxend46: ; preds = %if42
store i8** %226, i8*** %231, align 8
%241 = getelementptr double, double* %233, i64 %237
%242 = load double, double* %241, align 8
%245 = fcmp uge double %243, %244
br i1 %245, label %L411.backedge, label %idxend49
idxend49: ; preds = %idxend46
store i8** %226, i8*** %11, align 8
store double 0.000000e+00, double* %241, align 8
br label %L411.backedge
L411.backedge: ; preds = %idxend49, %idxend46
%246 = add i64 %"#temp#2.074", 1
%247 = icmp eq
i64 %"#temp#2.074", %228
br i1 %247, label %L425.loopexit, label %if42
}