julia-pkg-images-vs-makie
define nonnull {}* @julia_sdistancefield_5196({}* noundef nonnull align 16 dereferenceable(40) %0, i64 signext %1, i64 signext %2) #0 {
define nonnull {}* @julia_sdistancefield_5509({}* noundef nonnull align 16 dereferenceable(40) %0, i64 signext %1, i64 signext %2) #0 {
top:
top:
  %gcframe334 = alloca [10 x {}*], align 16
  %gcframe334 = alloca [10 x {}*], align 16
  %gcframe334.sub = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 0
  %gcframe334.sub = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 0
  %3 = bitcast [10 x {}*]* %gcframe334 to i8*
  %3 = bitcast [10 x {}*]* %gcframe334 to i8*
  call void @llvm.memset.p0i8.i32(i8* noundef nonnull align 16 dereferenceable(80) %3, i8 0, i32 80, i1 false)
  call void @llvm.memset.p0i8.i32(i8* noundef nonnull align 16 dereferenceable(80) %3, i8 0, i32 80, i1 false)
  %4 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 5
  %4 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 5
  %5 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 2
  %5 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 2
  %6 = alloca [2 x [2 x i64]], align 8
  %6 = alloca [2 x [2 x i64]], align 8
  %7 = alloca [2 x [1 x i64]], align 8
  %7 = alloca [2 x [1 x i64]], align 8
  %8 = alloca [2 x [1 x i64]], align 8
  %8 = alloca [2 x [1 x i64]], align 8
  %9 = alloca [2 x [1 x i64]], align 8
  %9 = alloca [2 x [1 x i64]], align 8
  %10 = alloca [2 x [1 x i64]], align 8
  %10 = alloca [2 x [1 x i64]], align 8
  %thread_ptr = call i8* asm "movq %fs:0, $0", "=r"() #6
  %thread_ptr = call i8* asm "movq %fs:0, $0", "=r"() #6
  %ppgcstack_i8 = getelementptr i8, i8* %thread_ptr, i64 -8
  %ppgcstack_i8 = getelementptr i8, i8* %thread_ptr, i64 -8
  %ppgcstack = bitcast i8* %ppgcstack_i8 to {}****
  %ppgcstack = bitcast i8* %ppgcstack_i8 to {}****
  %pgcstack = load {}***, {}**** %ppgcstack, align 8
  %pgcstack = load {}***, {}**** %ppgcstack, align 8
  %11 = bitcast [10 x {}*]* %gcframe334 to i64*
  %11 = bitcast [10 x {}*]* %gcframe334 to i64*
  store i64 32, i64* %11, align 16
  store i64 32, i64* %11, align 16
  %12 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 1
  %12 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 1
  %13 = bitcast {}** %12 to {}***
  %13 = bitcast {}** %12 to {}***
  %14 = load {}**, {}*** %pgcstack, align 8
  %14 = load {}**, {}*** %pgcstack, align 8
  store {}** %14, {}*** %13, align 8
  store {}** %14, {}*** %13, align 8
  %15 = bitcast {}*** %pgcstack to {}***
  %15 = bitcast {}*** %pgcstack to {}***
  store {}** %gcframe334.sub, {}*** %15, align 8
  store {}** %gcframe334.sub, {}*** %15, align 8
  %ptls_field104 = getelementptr inbounds {}**, {}*** %pgcstack, i64 2
  %ptls_field104 = getelementptr inbounds {}**, {}*** %pgcstack, i64 2
  %16 = bitcast {}*** %ptls_field104 to i64***
  %16 = bitcast {}*** %ptls_field104 to i64***
  %ptls_load105106 = load i64**, i64*** %16, align 8
  %ptls_load105106 = load i64**, i64*** %16, align 8
  fence syncscope("singlethread") seq_cst
  fence syncscope("singlethread") seq_cst
  %17 = getelementptr inbounds i64*, i64** %ptls_load105106, i64 2
  %17 = getelementptr inbounds i64*, i64** %ptls_load105106, i64 2
  %safepoint = load i64*, i64** %17, align 8
  %safepoint = load i64*, i64** %17, align 8
  %18 = load volatile i64, i64* %safepoint, align 8
  %18 = load volatile i64, i64* %safepoint, align 8
  fence syncscope("singlethread") seq_cst
  fence syncscope("singlethread") seq_cst
  %19 = mul i64 %2, %1
  %19 = mul i64 %2, %1
  %20 = bitcast {}* %0 to {}**
  %20 = bitcast {}* %0 to {}**
  %21 = getelementptr inbounds {}*, {}** %20, i64 3
  %21 = getelementptr inbounds {}*, {}** %20, i64 3
  %22 = bitcast {}** %21 to i64*
  %22 = bitcast {}** %21 to i64*
  %23 = load i64, i64* %22, align 8
  %23 = load i64, i64* %22, align 8
  %24 = shl i64 %19, 1
  %24 = shl i64 %19, 1
  %25 = add i64 %23, %24
  %25 = add i64 %23, %24
  %26 = sitofp i64 %25 to double
  %26 = sitofp i64 %25 to double
  %27 = sitofp i64 %1 to double
  %27 = sitofp i64 %1 to double
  %28 = fdiv double %26, %27
  %28 = fdiv double %26, %27
  %29 = call double @llvm.ceil.f64(double %28)
  %29 = call double @llvm.ceil.f64(double %28)
  %30 = fcmp ult double %29, 0xC3E0000000000000
  %30 = fcmp ult double %29, 0xC3E0000000000000
  %31 = fcmp uge double %29, 0x43E0000000000000
  %31 = fcmp uge double %29, 0x43E0000000000000
  %32 = or i1 %30, %31
  %32 = or i1 %30, %31
  br i1 %32, label %L20, label %L18
  br i1 %32, label %L20, label %L18
L18:                                              ; preds = %top
L18:                                              ; preds = %top
  %33 = getelementptr inbounds {}*, {}** %20, i64 4
  %33 = getelementptr inbounds {}*, {}** %20, i64 4
  %34 = bitcast {}** %33 to i64*
  %34 = bitcast {}** %33 to i64*
  %35 = load i64, i64* %34, align 8
  %35 = load i64, i64* %34, align 8
  %36 = add i64 %35, %24
  %36 = add i64 %35, %24
  %37 = fptosi double %29 to i64
  %37 = fptosi double %29 to i64
  %38 = freeze i64 %37
  %38 = freeze i64 %37
  %39 = mul i64 %38, %1
  %39 = mul i64 %38, %1
  %40 = sitofp i64 %36 to double
  %40 = sitofp i64 %36 to double
  %41 = fdiv double %40, %27
  %41 = fdiv double %40, %27
  %42 = call double @llvm.ceil.f64(double %41)
  %42 = call double @llvm.ceil.f64(double %41)
  %43 = fcmp ult double %42, 0xC3E0000000000000
  %43 = fcmp ult double %42, 0xC3E0000000000000
  %44 = fcmp uge double %42, 0x43E0000000000000
  %44 = fcmp uge double %42, 0x43E0000000000000
  %45 = or i1 %43, %44
  %45 = or i1 %43, %44
  br i1 %45, label %L43, label %L41
  br i1 %45, label %L43, label %L41
L20:                                              ; preds = %top
L20:                                              ; preds = %top
  %46 = bitcast {}** %5 to [3 x {}*]*
  %46 = bitcast {}** %5 to [3 x {}*]*
  %47 = bitcast {}*** %ptls_field104 to i8**
  %47 = bitcast {}*** %ptls_field104 to i8**
  %ptls_load347348 = load i8*, i8** %47, align 8
  %ptls_load347348 = load i8*, i8** %47, align 8
  %48 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load347348, i32 1392, i32 16) #7
  %48 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load347348, i32 1392, i32 16) #7
  %49 = bitcast {}* %48 to i64*
  %49 = bitcast {}* %48 to i64*
  %50 = getelementptr inbounds i64, i64* %49, i64 -1
  %50 = getelementptr inbounds i64, i64* %49, i64 -1
  store atomic i64 140420404136592, i64* %50 unordered, align 8
  store atomic i64 140420404136592, i64* %50 unordered, align 8
  %51 = bitcast {}* %48 to double*
  %51 = bitcast {}* %48 to double*
  store double %29, double* %51, align 8
  store double %29, double* %51, align 8
  %52 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8
  %52 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8
  store {}* %48, {}** %52, align 16
  store {}* %48, {}** %52, align 16
  call void @j_InexactError_5208([3 x {}*]* noalias nocapture noundef nonnull sret([3 x {}*]) %46, {}* inttoptr (i64 140420548171496 to {}*), {}* readonly inttoptr (i64 140420404138768 to {}*), {}* nonnull readonly %48) #0
  call void @j_InexactError_5521([3 x {}*]* noalias nocapture noundef nonnull sret([3 x {}*]) %46, {}* inttoptr (i64 140420548171496 to {}*), {}* readonly inttoptr (i64 140420404138768 to {}*), {}* nonnull readonly %48) #0
  %ptls_load316349350 = load i8*, i8** %47, align 8
  %ptls_load316349350 = load i8*, i8** %47, align 8
  %53 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load316349350, i32 1440, i32 32) #7
  %53 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load316349350, i32 1440, i32 32) #7
  %54 = bitcast {}* %53 to i64*
  %54 = bitcast {}* %53 to i64*
  %55 = getelementptr inbounds i64, i64* %54, i64 -1
  %55 = getelementptr inbounds i64, i64* %54, i64 -1
  store atomic i64 140420378530656, i64* %55 unordered, align 8
  store atomic i64 140420378530656, i64* %55 unordered, align 8
  %56 = bitcast {}* %53 to i8*
  %56 = bitcast {}* %53 to i8*
  %57 = bitcast {}** %5 to i8*
  %57 = bitcast {}** %5 to i8*
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(24) %56, i8* noundef nonnull align 16 dereferenceable(24) %57, i64 24, i1 false)
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(24) %56, i8* noundef nonnull align 16 dereferenceable(24) %57, i64 24, i1 false)
  call void @ijl_throw({}* %53)
  call void @ijl_throw({}* %53)
  unreachable
  unreachable
L41:                                              ; preds = %L18
L41:                                              ; preds = %L18
  %58 = fptosi double %42 to i64
  %58 = fptosi double %42 to i64
  %59 = freeze i64 %58
  %59 = freeze i64 %58
  %60 = mul i64 %59, %1
  %60 = mul i64 %59, %1
  %61 = call nonnull {}* inttoptr (i64 140420661534736 to {}* ({}*, i64, i64)*)({}* inttoptr (i64 140420543655312 to {}*), i64 %39, i64 %60)
  %61 = call nonnull {}* inttoptr (i64 140420661534736 to {}* ({}*, i64, i64)*)({}* inttoptr (i64 140420543655312 to {}*), i64 %39, i64 %60)
  %62 = bitcast {}* %61 to { i8*, i64, i16, i16, i32 }*
  %62 = bitcast {}* %61 to { i8*, i64, i16, i16, i32 }*
  %63 = getelementptr inbounds { i8*, i64, i16, i16, i32 }, { i8*, i64, i16, i16, i32 }* %62, i64 0, i32 1
  %63 = getelementptr inbounds { i8*, i64, i16, i16, i32 }, { i8*, i64, i16, i16, i32 }* %62, i64 0, i32 1
  %64 = load i64, i64* %63, align 8
  %64 = load i64, i64* %63, align 8
  %.not.not = icmp eq i64 %64, 0
  %.not.not = icmp eq i64 %64, 0
  br i1 %.not.not, label %L85, label %L69.preheader
  br i1 %.not.not, label %L85, label %L69.preheader
L69.preheader:                                    ; preds = %L41
L69.preheader:                                    ; preds = %L41
  %65 = bitcast {}* %61 to i8**
  %65 = bitcast {}* %61 to i8**
  %66 = load i8*, i8** %65, align 8
  %66 = load i8*, i8** %65, align 8
  call void @llvm.memset.p0i8.i64(i8* nonnull align 1 %66, i8 0, i64 %64, i1 false)
  call void @llvm.memset.p0i8.i64(i8* nonnull align 1 %66, i8 0, i64 %64, i1 false)
  br label %L85
  br label %L85
L43:                                              ; preds = %L18
L43:                                              ; preds = %L18
  %67 = bitcast {}** %4 to [3 x {}*]*
  %67 = bitcast {}** %4 to [3 x {}*]*
  %68 = bitcast {}*** %ptls_field104 to i8**
  %68 = bitcast {}*** %ptls_field104 to i8**
  %ptls_load319342343 = load i8*, i8** %68, align 8
  %ptls_load319342343 = load i8*, i8** %68, align 8
  %69 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load319342343, i32 1392, i32 16) #7
  %69 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load319342343, i32 1392, i32 16) #7
  %70 = bitcast {}* %69 to i64*
  %70 = bitcast {}* %69 to i64*
  %71 = getelementptr inbounds i64, i64* %70, i64 -1
  %71 = getelementptr inbounds i64, i64* %70, i64 -1
  store atomic i64 140420404136592, i64* %71 unordered, align 8
  store atomic i64 140420404136592, i64* %71 unordered, align 8
  %72 = bitcast {}* %69 to double*
  %72 = bitcast {}* %69 to double*
  store double %42, double* %72, align 8
  store double %42, double* %72, align 8
  %73 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8
  %73 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8
  store {}* %69, {}** %73, align 16
  store {}* %69, {}** %73, align 16
  call void @j_InexactError_5208([3 x {}*]* noalias nocapture noundef nonnull sret([3 x {}*]) %67, {}* inttoptr (i64 140420548171496 to {}*), {}* readonly inttoptr (i64 140420404138768 to {}*), {}* nonnull readonly %69) #0
  call void @j_InexactError_5521([3 x {}*]* noalias nocapture noundef nonnull sret([3 x {}*]) %67, {}* inttoptr (i64 140420548171496 to {}*), {}* readonly inttoptr (i64 140420404138768 to {}*), {}* nonnull readonly %69) #0
  %ptls_load322344345 = load i8*, i8** %68, align 8
  %ptls_load322344345 = load i8*, i8** %68, align 8
  %74 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load322344345, i32 1440, i32 32) #7
  %74 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load322344345, i32 1440, i32 32) #7
  %75 = bitcast {}* %74 to i64*
  %75 = bitcast {}* %74 to i64*
  %76 = getelementptr inbounds i64, i64* %75, i64 -1
  %76 = getelementptr inbounds i64, i64* %75, i64 -1
  store atomic i64 140420378530656, i64* %76 unordered, align 8
  store atomic i64 140420378530656, i64* %76 unordered, align 8
  %77 = bitcast {}* %74 to i8*
  %77 = bitcast {}* %74 to i8*
  %78 = bitcast {}** %4 to i8*
  %78 = bitcast {}** %4 to i8*
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(24) %77, i8* noundef nonnull align 8 dereferenceable(24) %78, i64 24, i1 false)
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(24) %77, i8* noundef nonnull align 8 dereferenceable(24) %78, i64 24, i1 false)
  call void @ijl_throw({}* %74)
  call void @ijl_throw({}* %74)
  unreachable
  unreachable
L85:                                              ; preds = %L69.preheader, %L41
L85:                                              ; preds = %L69.preheader, %L41
  %79 = add i64 %23, %19
  %79 = add i64 %23, %19
  %80 = add i64 %35, %19
  %80 = add i64 %35, %19
  %81 = add i64 %19, 1
  %81 = add i64 %19, 1
  %.not = icmp sgt i64 %81, %79
  %.not = icmp sgt i64 %81, %79
  %value_phi11 = select i1 %.not, i64 %19, i64 %79
  %value_phi11 = select i1 %.not, i64 %19, i64 %79
  %.not108 = icmp sgt i64 %81, %80
  %.not108 = icmp sgt i64 %81, %80
  %value_phi12 = select i1 %.not108, i64 %19, i64 %80
  %value_phi12 = select i1 %.not108, i64 %19, i64 %80
  %.sroa.089.0..sroa_idx = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %6, i64 0, i64 0, i64 0
  %.sroa.089.0..sroa_idx = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %6, i64 0, i64 0, i64 0
  store i64 %81, i64* %.sroa.089.0..sroa_idx, align 8
  store i64 %81, i64* %.sroa.089.0..sroa_idx, align 8
  %.sroa.391.0..sroa_idx92 = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %6, i64 0, i64 0, i64 1
  %.sroa.391.0..sroa_idx92 = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %6, i64 0, i64 0, i64 1
  store i64 %value_phi11, i64* %.sroa.391.0..sroa_idx92, align 8
  store i64 %value_phi11, i64* %.sroa.391.0..sroa_idx92, align 8
  %.sroa.084.0..sroa_idx = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %6, i64 0, i64 1, i64 0
  %.sroa.084.0..sroa_idx = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %6, i64 0, i64 1, i64 0
  store i64 %81, i64* %.sroa.084.0..sroa_idx, align 8
  store i64 %81, i64* %.sroa.084.0..sroa_idx, align 8
  %.sroa.3.0..sroa_idx86 = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %6, i64 0, i64 1, i64 1
  %.sroa.3.0..sroa_idx86 = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %6, i64 0, i64 1, i64 1
  store i64 %value_phi12, i64* %.sroa.3.0..sroa_idx86, align 8
  store i64 %value_phi12, i64* %.sroa.3.0..sroa_idx86, align 8
  %82 = bitcast {}* %61 to {}**
  %82 = bitcast {}* %61 to {}**
  %83 = getelementptr inbounds {}*, {}** %82, i64 3
  %83 = getelementptr inbounds {}*, {}** %82, i64 3
  %84 = bitcast {}** %83 to i64*
  %84 = bitcast {}** %83 to i64*
  %85 = load i64, i64* %84, align 8
  %85 = load i64, i64* %84, align 8
  %86 = getelementptr inbounds {}*, {}** %82, i64 4
  %86 = getelementptr inbounds {}*, {}** %82, i64 4
  %87 = bitcast {}** %86 to i64*
  %87 = bitcast {}** %86 to i64*
  %88 = load i64, i64* %87, align 8
  %88 = load i64, i64* %87, align 8
  %89 = icmp slt i64 %value_phi11, %81
  %89 = icmp slt i64 %value_phi11, %81
  %90 = icmp ult i64 %19, 9223372036854775807
  %90 = icmp ult i64 %19, 9223372036854775807
  %91 = icmp sle i64 %81, %85
  %91 = icmp sle i64 %81, %85
  %92 = and i1 %90, %91
  %92 = and i1 %90, %91
  %93 = icmp sgt i64 %value_phi11, 0
  %93 = icmp sgt i64 %value_phi11, 0
  %94 = icmp sle i64 %value_phi11, %85
  %94 = icmp sle i64 %value_phi11, %85
  %95 = and i1 %93, %94
  %95 = and i1 %93, %94
  %96 = and i1 %92, %95
  %96 = and i1 %92, %95
  %97 = or i1 %89, %96
  %97 = or i1 %89, %96
  %98 = icmp slt i64 %value_phi12, %81
  %98 = icmp slt i64 %value_phi12, %81
  %99 = icmp sle i64 %81, %88
  %99 = icmp sle i64 %81, %88
  %100 = and i1 %90, %99
  %100 = and i1 %90, %99
  %101 = icmp sgt i64 %value_phi12, 0
  %101 = icmp sgt i64 %value_phi12, 0
  %102 = icmp sle i64 %value_phi12, %88
  %102 = icmp sle i64 %value_phi12, %88
  %103 = and i1 %101, %102
  %103 = and i1 %101, %102
  %104 = and i1 %100, %103
  %104 = and i1 %100, %103
  %105 = or i1 %98, %104
  %105 = or i1 %98, %104
  %106 = and i1 %97, %105
  %106 = and i1 %97, %105
  br i1 %106, label %L142, label %L139
  br i1 %106, label %L142, label %L139
L139:                                             ; preds = %L85
L139:                                             ; preds = %L85
  %107 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8
  %107 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8
  store {}* %61, {}** %107, align 16
  store {}* %61, {}** %107, align 16
  call void @j_throw_boundserror_5207({}* nonnull %61, [2 x [2 x i64]]* nocapture readonly %6) #8
  call void @j_throw_boundserror_5520({}* nonnull %61, [2 x [2 x i64]]* nocapture readonly %6) #8
  unreachable
  unreachable
L142:                                             ; preds = %L85
L142:                                             ; preds = %L85
  %108 = sub i64 %value_phi11, %81
  %108 = sub i64 %value_phi11, %81
  %109 = add i64 %108, 1
  %109 = add i64 %108, 1
  %110 = icmp ult i64 %108, 9223372036854775807
  %110 = icmp ult i64 %108, 9223372036854775807
  %111 = select i1 %110, i64 %109, i64 0
  %111 = select i1 %110, i64 %109, i64 0
  %112 = sub i64 %value_phi12, %81
  %112 = sub i64 %value_phi12, %81
  %113 = add i64 %112, 1
  %113 = add i64 %112, 1
  %114 = icmp ult i64 %112, 9223372036854775807
  %114 = icmp ult i64 %112, 9223372036854775807
  %115 = select i1 %114, i64 %113, i64 0
  %115 = select i1 %114, i64 %113, i64 0
  %116 = getelementptr inbounds [2 x [1 x i64]], [2 x [1 x i64]]* %7, i64 0, i64 1, i64 0
  %116 = getelementptr inbounds [2 x [1 x i64]], [2 x [1 x i64]]* %7, i64 0, i64 1, i64 0
  store i64 %115, i64* %116, align 8
  store i64 %115, i64* %116, align 8
  %117 = getelementptr inbounds [2 x [1 x i64]], [2 x [1 x i64]]* %7, i64 0, i64 0, i64 0
  %117 = getelementptr inbounds [2 x [1 x i64]], [2 x [1 x i64]]* %7, i64 0, i64 0, i64 0
  store i64 %111, i64* %117, align 8
  store i64 %111, i64* %117, align 8
  %118 = icmp ne i64 %111, %23
  %118 = icmp ne i64 %111, %23
  %119 = icmp ne i64 %23, 1
  %119 = icmp ne i64 %23, 1
  %120 = and i1 %118, %119
  %120 = and i1 %118, %119
  br i1 %120, label %L183, label %L171
  br i1 %120, label %L183, label %L171
L171:                                             ; preds = %L142
L171:                                             ; preds = %L142
  %121 = icmp ne i64 %115, %35
  %121 = icmp ne i64 %115, %35
  %122 = icmp ne i64 %35, 1
  %122 = icmp ne i64 %35, 1
  %123 = and i1 %121, %122
  %123 = and i1 %121, %122
  br i1 %123, label %L179, label %L189
  br i1 %123, label %L179, label %L189
L179:                                             ; preds = %L171
L179:                                             ; preds = %L171
  %124 = call [1 x {}*] @j_DimensionMismatch_5206({}* inttoptr (i64 140420371138848 to {}*)) #0
  %124 = call [1 x {}*] @j_DimensionMismatch_5519({}* inttoptr (i64 140420371138848 to {}*)) #0
  %125 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8
  %125 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8
  %126 = extractvalue [1 x {}*] %124, 0
  %126 = extractvalue [1 x {}*] %124, 0
  store {}* %126, {}** %125, align 16
  store {}* %126, {}** %125, align 16
  %127 = bitcast {}*** %ptls_field104 to i8**
  %127 = bitcast {}*** %ptls_field104 to i8**
  %ptls_load325336337 = load i8*, i8** %127, align 8
  %ptls_load325336337 = load i8*, i8** %127, align 8
  %128 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load325336337, i32 1392, i32 16) #7
  %128 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load325336337, i32 1392, i32 16) #7
  %129 = bitcast {}* %128 to i64*
  %129 = bitcast {}* %128 to i64*
  %130 = getelementptr inbounds i64, i64* %129, i64 -1
  %130 = getelementptr inbounds i64, i64* %129, i64 -1
  store atomic i64 140420371121824, i64* %130 unordered, align 8
  store atomic i64 140420371121824, i64* %130 unordered, align 8
  %131 = bitcast {}* %128 to {}**
  %131 = bitcast {}* %128 to {}**
  store {}* %126, {}** %131, align 8
  store {}* %126, {}** %131, align 8
  call void @ijl_throw({}* %128)
  call void @ijl_throw({}* %128)
  unreachable
  unreachable
L183:                                             ; preds = %L142
L183:                                             ; preds = %L142
  %132 = call [1 x {}*] @j_DimensionMismatch_5206({}* inttoptr (i64 140420371138848 to {}*)) #0
  %132 = call [1 x {}*] @j_DimensionMismatch_5519({}* inttoptr (i64 140420371138848 to {}*)) #0
  %133 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8
  %133 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8
  %134 = extractvalue [1 x {}*] %132, 0
  %134 = extractvalue [1 x {}*] %132, 0
  store {}* %134, {}** %133, align 16
  store {}* %134, {}** %133, align 16
  %135 = bitcast {}*** %ptls_field104 to i8**
  %135 = bitcast {}*** %ptls_field104 to i8**
  %ptls_load328339340 = load i8*, i8** %135, align 8
  %ptls_load328339340 = load i8*, i8** %135, align 8
  %136 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load328339340, i32 1392, i32 16) #7
  %136 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load328339340, i32 1392, i32 16) #7
  %137 = bitcast {}* %136 to i64*
  %137 = bitcast {}* %136 to i64*
  %138 = getelementptr inbounds i64, i64* %137, i64 -1
  %138 = getelementptr inbounds i64, i64* %137, i64 -1
  store atomic i64 140420371121824, i64* %138 unordered, align 8
  store atomic i64 140420371121824, i64* %138 unordered, align 8
  %139 = bitcast {}* %136 to {}**
  %139 = bitcast {}* %136 to {}**
  store {}* %134, {}** %139, align 8
  store {}* %134, {}** %139, align 8
  call void @ijl_throw({}* %136)
  call void @ijl_throw({}* %136)
  unreachable
  unreachable
L189:                                             ; preds = %L171
L189:                                             ; preds = %L171
  %140 = icmp sgt i64 %109, 0
  %140 = icmp sgt i64 %109, 0
  %141 = select i1 %140, i64 %109, i64 0
  %141 = select i1 %140, i64 %109, i64 0
  %.not109 = icmp ne i64 %141, %111
  %.not109 = icmp ne i64 %141, %111
  %142 = icmp sgt i64 %113, 0
  %142 = icmp sgt i64 %113, 0
  %143 = select i1 %142, i64 %113, i64 0
  %143 = select i1 %142, i64 %113, i64 0
  %144 = icmp ne i64 %143, %115
  %144 = icmp ne i64 %143, %115
  %value_phi15 = select i1 %.not109, i1 true, i1 %144
  %value_phi15 = select i1 %.not109, i1 true, i1 %144
  br i1 %value_phi15, label %L384, label %L211
  br i1 %value_phi15, label %L384, label %L211
L211:                                             ; preds = %L189
L211:                                             ; preds = %L189
  %145 = bitcast {}* %61 to i8**
  %145 = bitcast {}* %61 to i8**
  %146 = load i8*, i8** %145, align 8
  %146 = load i8*, i8** %145, align 8
  %147 = bitcast {}* %0 to i8**
  %147 = bitcast {}* %0 to i8**
  %148 = load i8*, i8** %147, align 8
  %148 = load i8*, i8** %147, align 8
  %.not110.not = icmp eq i8* %146, %148
  %.not110.not = icmp eq i8* %146, %148
  br i1 %.not110.not, label %L219, label %L224
  br i1 %.not110.not, label %L219, label %L224
L219:                                             ; preds = %L211
L219:                                             ; preds = %L211
  %149 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8
  %149 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8
  store {}* %61, {}** %149, align 16
  store {}* %61, {}** %149, align 16
  %150 = call nonnull {}* inttoptr (i64 140420661547792 to {}* ({}*)*)({}* nonnull %0)
  %150 = call nonnull {}* inttoptr (i64 140420661547792 to {}* ({}*)*)({}* nonnull %0)
  %.phi.trans.insert = bitcast {}* %150 to {}**
  %.phi.trans.insert = bitcast {}* %150 to {}**
  %.phi.trans.insert174 = getelementptr inbounds {}*, {}** %.phi.trans.insert, i64 3
  %.phi.trans.insert174 = getelementptr inbounds {}*, {}** %.phi.trans.insert, i64 3
  %.phi.trans.insert175 = bitcast {}** %.phi.trans.insert174 to i64*
  %.phi.trans.insert175 = bitcast {}** %.phi.trans.insert174 to i64*
  %.pre = load i64, i64* %.phi.trans.insert175, align 8
  %.pre = load i64, i64* %.phi.trans.insert175, align 8
  %.phi.trans.insert176 = getelementptr inbounds {}*, {}** %.phi.trans.insert, i64 4
  %.phi.trans.insert176 = getelementptr inbounds {}*, {}** %.phi.trans.insert, i64 4
  %.phi.trans.insert177 = bitcast {}** %.phi.trans.insert176 to i64*
  %.phi.trans.insert177 = bitcast {}** %.phi.trans.insert176 to i64*
  %.pre178 = load i64, i64* %.phi.trans.insert177, align 8
  %.pre178 = load i64, i64* %.phi.trans.insert177, align 8
  br label %L224
  br label %L224
L224:                                             ; preds = %L219, %L211
L224:                                             ; preds = %L219, %L211
  %151 = phi i64 [ %.pre178, %L219 ], [ %35, %L211 ]
  %151 = phi i64 [ %.pre178, %L219 ], [ %35, %L211 ]
  %152 = phi i64 [ %.pre, %L219 ], [ %23, %L211 ]
  %152 = phi i64 [ %.pre, %L219 ], [ %23, %L211 ]
  %value_phi16 = phi {}* [ %150, %L219 ], [ %0, %L211 ]
  %value_phi16 = phi {}* [ %150, %L219 ], [ %0, %L211 ]
  %.not113 = icmp eq i64 %151, 1
  %.not113 = icmp eq i64 %151, 1
  %.not112 = icmp eq i64 %152, 1
  %.not112 = icmp eq i64 %152, 1
  br i1 %114, label %L253.preheader, label %L400
  br i1 %114, label %L253.preheader, label %L400
L253.preheader:                                   ; preds = %L224
L253.preheader:                                   ; preds = %L224
  %.not111131.not = icmp eq i64 %111, 0
  %.not111131.not = icmp eq i64 %111, 0
  %153 = bitcast {}* %value_phi16 to i8**
  %153 = bitcast {}* %value_phi16 to i8**
  %154 = bitcast {}* %61 to i8**
  %154 = bitcast {}* %61 to i8**
  br i1 %110, label %L259.preheader.us.preheader, label %L400
  br i1 %110, label %L259.preheader.us.preheader, label %L400
L259.preheader.us.preheader:                      ; preds = %L253.preheader
L259.preheader.us.preheader:                      ; preds = %L253.preheader
  %155 = add nuw nsw i64 %85, 1
  %155 = add nuw nsw i64 %85, 1
  %156 = mul i64 %19, %155
  %156 = mul i64 %19, %155
  %157 = add i64 %111, %156
  %157 = add i64 %111, %156
  br label %L259.preheader.us
  br label %L259.preheader.us
L259.preheader.us:                                ; preds = %L362.us, %L259.preheader.us.preheader
L259.preheader.us:                                ; preds = %L362.us, %L259.preheader.us.preheader
  %indvar = phi i64 [ 0, %L259.preheader.us.preheader ], [ %indvar.next, %L362.us ]
  %indvar = phi i64 [ 0, %L259.preheader.us.preheader ], [ %indvar.next, %L362.us ]
  %value_phi21.us = phi i64 [ 1, %L259.preheader.us.preheader ], [ %207, %L362.us ]
  %value_phi21.us = phi i64 [ 1, %L259.preheader.us.preheader ], [ %207, %L362.us ]
  %158 = mul i64 %85, %indvar
  %158 = mul i64 %85, %indvar
  %159 = add i64 %156, %158
  %159 = add i64 %156, %158
  %160 = add i64 %157, %158
  %160 = add i64 %157, %158
  br i1 %.not111131.not, label %L362.us, label %L262.lr.ph.us
  br i1 %.not111131.not, label %L362.us, label %L262.lr.ph.us
L262.lr.ph.us:                                    ; preds = %L259.preheader.us
L262.lr.ph.us:                                    ; preds = %L259.preheader.us
  %value_phi21.op.us = add nsw i64 %value_phi21.us, -1
  %value_phi21.op.us = add nsw i64 %value_phi21.us, -1
  %161 = select i1 %.not113, i64 0, i64 %value_phi21.op.us
  %161 = select i1 %.not113, i64 0, i64 %value_phi21.op.us
  %162 = mul i64 %152, %161
  %162 = mul i64 %152, %161
  %163 = load i8*, i8** %153, align 8
  %163 = load i8*, i8** %153, align 8
  %164 = add i64 %value_phi21.op.us, %19
  %164 = add i64 %value_phi21.op.us, %19
  %165 = mul i64 %85, %164
  %165 = mul i64 %85, %164
  %166 = load i8*, i8** %154, align 8
  %166 = load i8*, i8** %154, align 8
  br i1 %.not112, label %iter.check, label %iter.check233
  br i1 %.not112, label %iter.check, label %iter.check233
iter.check233:                                    ; preds = %L262.lr.ph.us
iter.check233:                                    ; preds = %L262.lr.ph.us
  %min.iters.check231 = icmp ult i64 %111, 16
  %min.iters.check231 = icmp ult i64 %111, 16
  br i1 %min.iters.check231, label %vec.epilog.scalar.ph246, label %vector.memcheck220
  br i1 %min.iters.check231, label %vec.epilog.scalar.ph246, label %vector.memcheck220
vector.memcheck220:                               ; preds = %iter.check233
vector.memcheck220:                               ; preds = %iter.check233
  %scevgep221 = getelementptr i8, i8* %166, i64 %159
  %scevgep221 = getelementptr i8, i8* %166, i64 %159
  %scevgep222 = getelementptr i8, i8* %166, i64 %160
  %scevgep222 = getelementptr i8, i8* %166, i64 %160
  %scevgep223 = getelementptr i8, i8* %163, i64 %162
  %scevgep223 = getelementptr i8, i8* %163, i64 %162
  %scevgep224 = getelementptr i8, i8* %163, i64 %111
  %scevgep224 = getelementptr i8, i8* %163, i64 %111
  %scevgep225 = getelementptr i8, i8* %scevgep224, i64 %162
  %scevgep225 = getelementptr i8, i8* %scevgep224, i64 %162
  %bound0226 = icmp ult i8* %scevgep221, %scevgep225
  %bound0226 = icmp ult i8* %scevgep221, %scevgep225
  %bound1227 = icmp ult i8* %scevgep223, %scevgep222
  %bound1227 = icmp ult i8* %scevgep223, %scevgep222
  %found.conflict228 = and i1 %bound0226, %bound1227
  %found.conflict228 = and i1 %bound0226, %bound1227
  br i1 %found.conflict228, label %vec.epilog.scalar.ph246, label %vector.main.loop.iter.check235
  br i1 %found.conflict228, label %vec.epilog.scalar.ph246, label %vector.main.loop.iter.check235
vector.main.loop.iter.check235:                   ; preds = %vector.memcheck220
vector.main.loop.iter.check235:                   ; preds = %vector.memcheck220
  %min.iters.check234 = icmp ult i64 %111, 128
  %min.iters.check234 = icmp ult i64 %111, 128
  br i1 %min.iters.check234, label %vec.epilog.ph249, label %vector.ph236
  br i1 %min.iters.check234, label %vec.epilog.ph249, label %vector.ph236
vector.ph236:                                     ; preds = %vector.main.loop.iter.check235
vector.ph236:                                     ; preds = %vector.main.loop.iter.check235
  %n.vec238 = and i64 %111, -128
  %n.vec238 = and i64 %111, -128
  br label %vector.body230
  br label %vector.body230
vector.body230:                                   ; preds = %vector.body230, %vector.ph236
vector.body230:                                   ; preds = %vector.body230, %vector.ph236
  %index240 = phi i64 [ 0, %vector.ph236 ], [ %index.next244, %vector.body230 ]
  %index240 = phi i64 [ 0, %vector.ph236 ], [ %index.next244, %vector.body230 ]
  %167 = add i64 %162, %index240
  %167 = add i64 %162, %index240
  %168 = getelementptr inbounds i8, i8* %163, i64 %167
  %168 = getelementptr inbounds i8, i8* %163, i64 %167
  %169 = bitcast i8* %168 to <32 x i8>*
  %169 = bitcast i8* %168 to <32 x i8>*
  %wide.load = load <32 x i8>, <32 x i8>* %169, align 1
  %wide.load = load <32 x i8>, <32 x i8>* %169, align 1
  %170 = getelementptr inbounds i8, i8* %168, i64 32
  %170 = getelementptr inbounds i8, i8* %168, i64 32
  %171 = bitcast i8* %170 to <32 x i8>*
  %171 = bitcast i8* %170 to <32 x i8>*
  %wide.load241 = load <32 x i8>, <32 x i8>* %171, align 1
  %wide.load241 = load <32 x i8>, <32 x i8>* %171, align 1
  %172 = getelementptr inbounds i8, i8* %168, i64 64
  %172 = getelementptr inbounds i8, i8* %168, i64 64
  %173 = bitcast i8* %172 to <32 x i8>*
  %173 = bitcast i8* %172 to <32 x i8>*
  %wide.load242 = load <32 x i8>, <32 x i8>* %173, align 1
  %wide.load242 = load <32 x i8>, <32 x i8>* %173, align 1
  %174 = getelementptr inbounds i8, i8* %168, i64 96
  %174 = getelementptr inbounds i8, i8* %168, i64 96
  %175 = bitcast i8* %174 to <32 x i8>*
  %175 = bitcast i8* %174 to <32 x i8>*
  %wide.load243 = load <32 x i8>, <32 x i8>* %175, align 1
  %wide.load243 = load <32 x i8>, <32 x i8>* %175, align 1
  %176 = add i64 %index240, %19
  %176 = add i64 %index240, %19
  %177 = add i64 %176, %165
  %177 = add i64 %176, %165
  %178 = getelementptr inbounds i8, i8* %166, i64 %177
  %178 = getelementptr inbounds i8, i8* %166, i64 %177
  %179 = lshr <32 x i8> %wide.load, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
  %179 = lshr <32 x i8> %wide.load, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
  %180 = lshr <32 x i8> %wide.load241, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
  %180 = lshr <32 x i8> %wide.load241, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
  %181 = lshr <32 x i8> %wide.load242, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
  %181 = lshr <32 x i8> %wide.load242, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
  %182 = lshr <32 x i8> %wide.load243, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
  %182 = lshr <32 x i8> %wide.load243, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
  %183 = bitcast i8* %178 to <32 x i8>*
  %183 = bitcast i8* %178 to <32 x i8>*
  store <32 x i8> %179, <32 x i8>* %183, align 1
  store <32 x i8> %179, <32 x i8>* %183, align 1
  %184 = getelementptr inbounds i8, i8* %178, i64 32
  %184 = getelementptr inbounds i8, i8* %178, i64 32
  %185 = bitcast i8* %184 to <32 x i8>*
  %185 = bitcast i8* %184 to <32 x i8>*
  store <32 x i8> %180, <32 x i8>* %185, align 1
  store <32 x i8> %180, <32 x i8>* %185, align 1
  %186 = getelementptr inbounds i8, i8* %178, i64 64
  %186 = getelementptr inbounds i8, i8* %178, i64 64
  %187 = bitcast i8* %186 to <32 x i8>*
  %187 = bitcast i8* %186 to <32 x i8>*
  store <32 x i8> %181, <32 x i8>* %187, align 1
  store <32 x i8> %181, <32 x i8>* %187, align 1
  %188 = getelementptr inbounds i8, i8* %178, i64 96
  %188 = getelementptr inbounds i8, i8* %178, i64 96
  %189 = bitcast i8* %188 to <32 x i8>*
  %189 = bitcast i8* %188 to <32 x i8>*
  store <32 x i8> %182, <32 x i8>* %189, align 1
  store <32 x i8> %182, <32 x i8>* %189, align 1
  %index.next244 = add nuw i64 %index240, 128
  %index.next244 = add nuw i64 %index240, 128
  %190 = icmp eq i64 %index.next244, %n.vec238
  %190 = icmp eq i64 %index.next244, %n.vec238
  br i1 %190, label %middle.block229, label %vector.body230
  br i1 %190, label %middle.block229, label %vector.body230
middle.block229:                                  ; preds = %vector.body230
middle.block229:                                  ; preds = %vector.body230
  %cmp.n239 = icmp eq i64 %111, %n.vec238
  %cmp.n239 = icmp eq i64 %111, %n.vec238
  br i1 %cmp.n239, label %L362.us, label %vec.epilog.iter.check248
  br i1 %cmp.n239, label %L362.us, label %vec.epilog.iter.check248
vec.epilog.iter.check248:                         ; preds = %middle.block229
vec.epilog.iter.check248:                         ; preds = %middle.block229
  %n.vec.remaining250 = and i64 %111, 112
  %n.vec.remaining250 = and i64 %111, 112
  %min.epilog.iters.check251 = icmp eq i64 %n.vec.remaining250, 0
  %min.epilog.iters.check251 = icmp eq i64 %n.vec.remaining250, 0
  br i1 %min.epilog.iters.check251, label %vec.epilog.scalar.ph246, label %vec.epilog.ph249
  br i1 %min.epilog.iters.check251, label %vec.epilog.scalar.ph246, label %vec.epilog.ph249
vec.epilog.ph249:                                 ; preds = %vec.epilog.iter.check248, %vector.main.loop.iter.check235
vec.epilog.ph249:                                 ; preds = %vec.epilog.iter.check248, %vector.main.loop.iter.check235
  %vec.epilog.resume.val252 = phi i64 [ %n.vec238, %vec.epilog.iter.check248 ], [ 0, %vector.main.loop.iter.check235 ]
  %vec.epilog.resume.val252 = phi i64 [ %n.vec238, %vec.epilog.iter.check248 ], [ 0, %vector.main.loop.iter.check235 ]
  %n.vec254 = and i64 %111, -16
  %n.vec254 = and i64 %111, -16
  br label %vec.epilog.vector.body247
  br label %vec.epilog.vector.body247
vec.epilog.vector.body247:                        ; preds = %vec.epilog.vector.body247, %vec.epilog.ph249
vec.epilog.vector.body247:                        ; preds = %vec.epilog.vector.body247, %vec.epilog.ph249
  %index257 = phi i64 [ %vec.epilog.resume.val252, %vec.epilog.ph249 ], [ %index.next259, %vec.epilog.vector.body247 ]
  %index257 = phi i64 [ %vec.epilog.resume.val252, %vec.epilog.ph249 ], [ %index.next259, %vec.epilog.vector.body247 ]
  %191 = add i64 %162, %index257
  %191 = add i64 %162, %index257
  %192 = getelementptr inbounds i8, i8* %163, i64 %191
  %192 = getelementptr inbounds i8, i8* %163, i64 %191
  %193 = bitcast i8* %192 to <16 x i8>*
  %193 = bitcast i8* %192 to <16 x i8>*
  %wide.load258 = load <16 x i8>, <16 x i8>* %193, align 1
  %wide.load258 = load <16 x i8>, <16 x i8>* %193, align 1
  %194 = add i64 %index257, %19
  %194 = add i64 %index257, %19
  %195 = add i64 %194, %165
  %195 = add i64 %194, %165
  %196 = getelementptr inbounds i8, i8* %166, i64 %195
  %196 = getelementptr inbounds i8, i8* %166, i64 %195
  %197 = lshr <16 x i8> %wide.load258, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
  %197 = lshr <16 x i8> %wide.load258, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
  %198 = bitcast i8* %196 to <16 x i8>*
  %198 = bitcast i8* %196 to <16 x i8>*
  store <16 x i8> %197, <16 x i8>* %198, align 1
  store <16 x i8> %197, <16 x i8>* %198, align 1
  %index.next259 = add nuw i64 %index257, 16
  %index.next259 = add nuw i64 %index257, 16
  %199 = icmp eq i64 %index.next259, %n.vec254
  %199 = icmp eq i64 %index.next259, %n.vec254
  br i1 %199, label %vec.epilog.middle.block245, label %vec.epilog.vector.body247
  br i1 %199, label %vec.epilog.middle.block245, label %vec.epilog.vector.body247
vec.epilog.middle.block245:                       ; preds = %vec.epilog.vector.body247
vec.epilog.middle.block245:                       ; preds = %vec.epilog.vector.body247
  %cmp.n256 = icmp eq i64 %111, %n.vec254
  %cmp.n256 = icmp eq i64 %111, %n.vec254
  br i1 %cmp.n256, label %L362.us, label %vec.epilog.scalar.ph246
  br i1 %cmp.n256, label %L362.us, label %vec.epilog.scalar.ph246
vec.epilog.scalar.ph246:                          ; preds = %vec.epilog.middle.block245, %vec.epilog.iter.check248, %vector.memcheck220, %iter.check233
vec.epilog.scalar.ph246:                          ; preds = %vec.epilog.middle.block245, %vec.epilog.iter.check248, %vector.memcheck220, %iter.check233
  %bc.resume.val255 = phi i64 [ %n.vec254, %vec.epilog.middle.block245 ], [ %n.vec238, %vec.epilog.iter.check248 ], [ 0, %vector.memcheck220 ], [ 0, %iter.check233 ]
  %bc.resume.val255 = phi i64 [ %n.vec254, %vec.epilog.middle.block245 ], [ %n.vec238, %vec.epilog.iter.check248 ], [ 0, %vector.memcheck220 ], [ 0, %iter.check233 ]
  br label %L262.us159
  br label %L262.us159
L262.us159:                                       ; preds = %L262.us159, %vec.epilog.scalar.ph246
L262.us159:                                       ; preds = %L262.us159, %vec.epilog.scalar.ph246
  %value_phi24132.us160 = phi i64 [ %206, %L262.us159 ], [ %bc.resume.val255, %vec.epilog.scalar.ph246 ]
  %value_phi24132.us160 = phi i64 [ %206, %L262.us159 ], [ %bc.resume.val255, %vec.epilog.scalar.ph246 ]
  %200 = add i64 %162, %value_phi24132.us160
  %200 = add i64 %162, %value_phi24132.us160
  %201 = getelementptr inbounds i8, i8* %163, i64 %200
  %201 = getelementptr inbounds i8, i8* %163, i64 %200
  %202 = load i8, i8* %201, align 1
  %202 = load i8, i8* %201, align 1
  %203 = add i64 %value_phi24132.us160, %19
  %203 = add i64 %value_phi24132.us160, %19
  %204 = add i64 %203, %165
  %204 = add i64 %203, %165
  %205 = getelementptr inbounds i8, i8* %166, i64 %204
  %205 = getelementptr inbounds i8, i8* %166, i64 %204
  %.lobit.us161 = lshr i8 %202, 7
  %.lobit.us161 = lshr i8 %202, 7
  store i8 %.lobit.us161, i8* %205, align 1
  store i8 %.lobit.us161, i8* %205, align 1
  %206 = add nuw nsw i64 %value_phi24132.us160, 1
  %206 = add nuw nsw i64 %value_phi24132.us160, 1
  %exitcond171.not = icmp eq i64 %206, %111
  %exitcond171.not = icmp eq i64 %206, %111
  br i1 %exitcond171.not, label %L362.us, label %L262.us159
  br i1 %exitcond171.not, label %L362.us, label %L262.us159
L362.us:                                          ; preds = %vec.epilog.middle.block, %middle.block, %L262.us.us, %L262.us159, %vec.epilog.middle.block245, %middle.block229, %L259.preheader.us
L362.us:                                          ; preds = %vec.epilog.middle.block, %middle.block, %L262.us.us, %L262.us159, %vec.epilog.middle.block245, %middle.block229, %L259.preheader.us
  %207 = add nuw i64 %value_phi21.us, 1
  %207 = add nuw i64 %value_phi21.us, 1
  %208 = icmp ult i64 %value_phi21.us, 9223372036854775807
  %208 = icmp ult i64 %value_phi21.us, 9223372036854775807
  %209 = icmp sle i64 %207, %115
  %209 = icmp sle i64 %207, %115
  %210 = icmp ne i64 %value_phi21.us, %115
  %210 = icmp ne i64 %value_phi21.us, %115
  %not..us = and i1 %208, %209
  %not..us = and i1 %208, %209
  %narrow.us = and i1 %210, %not..us
  %narrow.us = and i1 %210, %not..us
  %indvar.next = add i64 %indvar, 1
  %indvar.next = add i64 %indvar, 1
  br i1 %narrow.us, label %L259.preheader.us, label %L400
  br i1 %narrow.us, label %L259.preheader.us, label %L400
L262.us.us:                                       ; preds = %vec.epilog.scalar.ph, %L262.us.us
L262.us.us:                                       ; preds = %vec.epilog.scalar.ph, %L262.us.us
  %value_phi24132.us.us = phi i64 [ %bc.resume.val, %vec.epilog.scalar.ph ], [ %215, %L262.us.us ]
  %value_phi24132.us.us = phi i64 [ %bc.resume.val, %vec.epilog.scalar.ph ], [ %215, %L262.us.us ]
  %211 = load i8, i8* %216, align 1
  %211 = load i8, i8* %216, align 1
  %212 = add i64 %value_phi24132.us.us, %19
  %212 = add i64 %value_phi24132.us.us, %19
  %213 = add i64 %212, %165
  %213 = add i64 %212, %165
  %214 = getelementptr inbounds i8, i8* %166, i64 %213
  %214 = getelementptr inbounds i8, i8* %166, i64 %213
  %.lobit.us.us = lshr i8 %211, 7
  %.lobit.us.us = lshr i8 %211, 7
  store i8 %.lobit.us.us, i8* %214, align 1
  store i8 %.lobit.us.us, i8* %214, align 1
  %215 = add nuw nsw i64 %value_phi24132.us.us, 1
  %215 = add nuw nsw i64 %value_phi24132.us.us, 1
  %exitcond172.not = icmp eq i64 %215, %111
  %exitcond172.not = icmp eq i64 %215, %111
  br i1 %exitcond172.not, label %L362.us, label %L262.us.us
  br i1 %exitcond172.not, label %L362.us, label %L262.us.us
iter.check:                                       ; preds = %L262.lr.ph.us
iter.check:                                       ; preds = %L262.lr.ph.us
  %216 = getelementptr inbounds i8, i8* %163, i64 %162
  %216 = getelementptr inbounds i8, i8* %163, i64 %162
  %min.iters.check = icmp ult i64 %111, 16
  %min.iters.check = icmp ult i64 %111, 16
  br i1 %min.iters.check, label %vec.epilog.scalar.ph, label %vector.memcheck
  br i1 %min.iters.check, label %vec.epilog.scalar.ph, label %vector.memcheck
vector.memcheck:                                  ; preds = %iter.check
vector.memcheck:                                  ; preds = %iter.check
  %scevgep = getelementptr i8, i8* %166, i64 %159
  %scevgep = getelementptr i8, i8* %166, i64 %159
  %scevgep203 = getelementptr i8, i8* %166, i64 %160
  %scevgep203 = getelementptr i8, i8* %166, i64 %160
  %scevgep204 = getelementptr i8, i8* %163, i64 1
  %scevgep204 = getelementptr i8, i8* %163, i64 1
  %scevgep205 = getelementptr i8, i8* %scevgep204, i64 %162
  %scevgep205 = getelementptr i8, i8* %scevgep204, i64 %162
  %bound0 = icmp ult i8* %scevgep, %scevgep205
  %bound0 = icmp ult i8* %scevgep, %scevgep205
  %bound1 = icmp ult i8* %216, %scevgep203
  %bound1 = icmp ult i8* %216, %scevgep203
  %found.conflict = and i1 %bound0, %bound1
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %vec.epilog.scalar.ph, label %vector.main.loop.iter.check
  br i1 %found.conflict, label %vec.epilog.scalar.ph, label %vector.main.loop.iter.check
vector.main.loop.iter.check:                      ; preds = %vector.memcheck
vector.main.loop.iter.check:                      ; preds = %vector.memcheck
  %min.iters.check206 = icmp ult i64 %111, 128
  %min.iters.check206 = icmp ult i64 %111, 128
  br i1 %min.iters.check206, label %vec.epilog.ph, label %vector.ph
  br i1 %min.iters.check206, label %vec.epilog.ph, label %vector.ph
vector.ph:                                        ; preds = %vector.main.loop.iter.check
vector.ph:                                        ; preds = %vector.main.loop.iter.check
  %n.vec = and i64 %111, -128
  %n.vec = and i64 %111, -128
  %.pre330 = load i8, i8* %216, align 1
  %.pre330 = load i8, i8* %216, align 1
  br label %vector.body
  br label %vector.body
vector.body:                                      ; preds = %vector.body, %vector.ph
vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %broadcast.splatinsert = insertelement <32 x i8> poison, i8 %.pre330, i64 0
  %broadcast.splatinsert = insertelement <32 x i8> poison, i8 %.pre330, i64 0
  %217 = add i64 %index, %19
  %217 = add i64 %index, %19
  %218 = add i64 %217, %165
  %218 = add i64 %217, %165
  %219 = getelementptr inbounds i8, i8* %166, i64 %218
  %219 = getelementptr inbounds i8, i8* %166, i64 %218
  %220 = lshr <32 x i8> %broadcast.splatinsert, <i8 7, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>
  %220 = lshr <32 x i8> %broadcast.splatinsert, <i8 7, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>
  %221 = shufflevector <32 x i8> %220, <32 x i8> poison, <32 x i32> zeroinitializer
  %221 = shufflevector <32 x i8> %220, <32 x i8> poison, <32 x i32> zeroinitializer
  %222 = bitcast i8* %219 to <32 x i8>*
  %222 = bitcast i8* %219 to <32 x i8>*
  store <32 x i8> %221, <32 x i8>* %222, align 1
  store <32 x i8> %221, <32 x i8>* %222, align 1
  %223 = getelementptr inbounds i8, i8* %219, i64 32
  %223 = getelementptr inbounds i8, i8* %219, i64 32
  %224 = bitcast i8* %223 to <32 x i8>*
  %224 = bitcast i8* %223 to <32 x i8>*
  store <32 x i8> %221, <32 x i8>* %224, align 1
  store <32 x i8> %221, <32 x i8>* %224, align 1
  %225 = getelementptr inbounds i8, i8* %219, i64 64
  %225 = getelementptr inbounds i8, i8* %219, i64 64
  %226 = bitcast i8* %225 to <32 x i8>*
  %226 = bitcast i8* %225 to <32 x i8>*
  store <32 x i8> %221, <32 x i8>* %226, align 1
  store <32 x i8> %221, <32 x i8>* %226, align 1
  %227 = getelementptr inbounds i8, i8* %219, i64 96
  %227 = getelementptr inbounds i8, i8* %219, i64 96
  %228 = bitcast i8* %227 to <32 x i8>*
  %228 = bitcast i8* %227 to <32 x i8>*
  store <32 x i8> %221, <32 x i8>* %228, align 1
  store <32 x i8> %221, <32 x i8>* %228, align 1
  %index.next = add nuw i64 %index, 128
  %index.next = add nuw i64 %index, 128
  %229 = icmp eq i64 %index.next, %n.vec
  %229 = icmp eq i64 %index.next, %n.vec
  br i1 %229, label %middle.block, label %vector.body
  br i1 %229, label %middle.block, label %vector.body
middle.block:                                     ; preds = %vector.body
middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %111, %n.vec
  %cmp.n = icmp eq i64 %111, %n.vec
  br i1 %cmp.n, label %L362.us, label %vec.epilog.iter.check
  br i1 %cmp.n, label %L362.us, label %vec.epilog.iter.check
vec.epilog.iter.check:                            ; preds = %middle.block
vec.epilog.iter.check:                            ; preds = %middle.block
  %n.vec.remaining = and i64 %111, 112
  %n.vec.remaining = and i64 %111, 112
  %min.epilog.iters.check = icmp eq i64 %n.vec.remaining, 0
  %min.epilog.iters.check = icmp eq i64 %n.vec.remaining, 0
  br i1 %min.epilog.iters.check, label %vec.epilog.scalar.ph, label %vec.epilog.ph
  br i1 %min.epilog.iters.check, label %vec.epilog.scalar.ph, label %vec.epilog.ph
vec.epilog.ph:                                    ; preds = %vec.epilog.i
vec.epilog.ph:                                    ; preds = %vec.epilog.i