; LLVM IR from ShahjalalShohag/code-library :: Number Theory/Sieve upto 1e9.ll (Z5sieveiii)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon = type { i8 }
%"class.std::vector.0" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"class.std::allocator.4" = type { i8 }
%"struct.std::_Bit_reference" = type { ptr, i64 }
%"class.std::initializer_list" = type { ptr, i64 }
%"class.std::allocator" = type { i8 }
%"class.std::vector.7" = type { %"struct.std::_Vector_base.8" }
%"struct.std::_Vector_base.8" = type { %"struct.std::_Vector_base<P, std::allocator<P>>::_Vector_impl" }
%"struct.std::_Vector_base<P, std::allocator<P>>::_Vector_impl" = type { %"struct.std::_Vector_base<P, std::allocator<P>>::_Vector_impl_data" }
%"struct.std::_Vector_base<P, std::allocator<P>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.P = type { i32, [8 x i32] }
%"class.std::vector.12" = type { %"struct.std::_Vector_base.13" }
%"struct.std::_Vector_base.13" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.14" = type { i8 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }

@_ZZ5sieveiiiE2rs = external hidden constant [8 x i32], align 16
@.str = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [95 x i8], align 1
@__PRETTY_FUNCTION__._Z5sieveiii = external hidden unnamed_addr constant [51 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_Z5sieveiii(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8 %0, i32 noundef %1, i32 noundef %2, i32 noundef %3) #0 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca %class.anon, align 1
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca %"class.std::vector.0", align 8
  %13 = alloca i8, align 1
  %14 = alloca %"class.std::allocator.4", align 1
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca %"struct.std::_Bit_reference", align 8
  %20 = alloca i32, align 4
  %21 = alloca %"struct.std::_Bit_reference", align 8
  %22 = alloca i32, align 4
  %23 = alloca i1, align 1
  %24 = alloca %"class.std::initializer_list", align 8
  %25 = alloca [3 x i32], align 4
  %26 = alloca %"class.std::allocator", align 1
  %27 = alloca i32, align 4
  %28 = alloca %"class.std::vector.7", align 8
  %29 = alloca i64, align 8
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca %"struct.std::_Bit_reference", align 8
  %33 = alloca %struct.P, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca %"class.std::vector.12", align 8
  %37 = alloca i8, align 1
  %38 = alloca %"class.std::allocator.14", align 1
  %39 = alloca i64, align 8
  %40 = alloca %struct.P, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i8, align 1
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca %"class.std::vector.12", align 8
  %47 = alloca %"class.std::allocator.14", align 1
  %48 = alloca ptr, align 8
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %55 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %56 = alloca i64, align 8
  %57 = alloca ptr, align 8
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i8, align 1
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  store ptr %0, ptr %5, align 8
  store i32 %1, ptr %6, align 4, !tbaa !5
  store i32 %2, ptr %7, align 4, !tbaa !5
  store i32 %3, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #8
  %64 = load i32, ptr %6, align 4, !tbaa !5
  %65 = call noundef double @_ZSt4sqrtIiEN9__gnu_cxx11__enable_ifIXsr12__is_integerIT_EE7__valueEdE6__typeES2_(i32 noundef %64)
  %66 = fptosi double %65 to i32
  store i32 %66, ptr %10, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #8
  %67 = load i32, ptr %10, align 4, !tbaa !5
  %68 = call noundef double @_ZSt4sqrtIiEN9__gnu_cxx11__enable_ifIXsr12__is_integerIT_EE7__valueEdE6__typeES2_(i32 noundef %67)
  %69 = fptosi double %68 to i32
  store i32 %69, ptr %11, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %12) #8
  %70 = load i32, ptr %10, align 4, !tbaa !5
  %71 = add nsw i32 %70, 1
  %72 = sext i32 %71 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #8
  store i8 1, ptr %13, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #8
  call void @_ZNSaIbEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #8
  invoke void @_ZNSt6vectorIbSaIbEEC2EmRKbRKS0_(ptr noundef nonnull align 8 dereferenceable(40) %12, i64 noundef %72, ptr noundef nonnull align 1 dereferenceable(1) %13, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %73 unwind label %79

73:                                               ; preds = %4
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  store i32 2, ptr %17, align 4, !tbaa !5
  br label %74

74:                                               ; preds = %126, %73
  %75 = load i32, ptr %17, align 4, !tbaa !5
  %76 = load i32, ptr %11, align 4, !tbaa !5
  %77 = icmp sle i32 %75, %76
  br i1 %77, label %83, label %78

78:                                               ; preds = %74
  store i32 2, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  br label %130

79:                                               ; preds = %4
  %80 = landingpad { ptr, i32 }
          cleanup
  %81 = extractvalue { ptr, i32 } %80, 0
  store ptr %81, ptr %15, align 8
  %82 = extractvalue { ptr, i32 } %80, 1
  store i32 %82, ptr %16, align 4
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #8
  br label %535

83:                                               ; preds = %74
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #8
  %84 = load i32, ptr %17, align 4, !tbaa !5
  %85 = sext i32 %84 to i64
  %86 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %12, i64 noundef %85)
          to label %87 unwind label %102

87:                                               ; preds = %83
  %88 = getelementptr inbounds { ptr, i64 }, ptr %19, i32 0, i32 0
  %89 = extractvalue { ptr, i64 } %86, 0
  store ptr %89, ptr %88, align 8
  %90 = getelementptr inbounds { ptr, i64 }, ptr %19, i32 0, i32 1
  %91 = extractvalue { ptr, i64 } %86, 1
  store i64 %91, ptr %90, align 8
  %92 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %19) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #8
  br i1 %92, label %93, label %125

93:                                               ; preds = %87
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #8
  %94 = load i32, ptr %17, align 4, !tbaa !5
  %95 = load i32, ptr %17, align 4, !tbaa !5
  %96 = mul nsw i32 %94, %95
  store i32 %96, ptr %20, align 4, !tbaa !5
  br label %97

97:                                               ; preds = %116, %93
  %98 = load i32, ptr %20, align 4, !tbaa !5
  %99 = load i32, ptr %10, align 4, !tbaa !5
  %100 = icmp sle i32 %98, %99
  br i1 %100, label %106, label %101

101:                                              ; preds = %97
  store i32 5, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  br label %124

102:                                              ; preds = %83
  %103 = landingpad { ptr, i32 }
          cleanup
  %104 = extractvalue { ptr, i32 } %103, 0
  store ptr %104, ptr %15, align 8
  %105 = extractvalue { ptr, i32 } %103, 1
  store i32 %105, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #8
  br label %129

106:                                              ; preds = %97
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #8
  %107 = load i32, ptr %20, align 4, !tbaa !5
  %108 = sext i32 %107 to i64
  %109 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %12, i64 noundef %108)
          to label %110 unwind label %120

110:                                              ; preds = %106
  %111 = getelementptr inbounds { ptr, i64 }, ptr %21, i32 0, i32 0
  %112 = extractvalue { ptr, i64 } %109, 0
  store ptr %112, ptr %111, align 8
  %113 = getelementptr inbounds { ptr, i64 }, ptr %21, i32 0, i32 1
  %114 = extractvalue { ptr, i64 } %109, 1
  store i64 %114, ptr %113, align 8
  %115 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %21, i1 noundef zeroext false) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #8
  br label %116

116:                                              ; preds = %110
  %117 = load i32, ptr %17, align 4, !tbaa !5
  %118 = load i32, ptr %20, align 4, !tbaa !5
  %119 = add nsw i32 %118, %117
  store i32 %119, ptr %20, align 4, !tbaa !5
  br label %97, !llvm.loop !11

120:                                              ; preds = %106
  %121 = landingpad { ptr, i32 }
          cleanup
  %122 = extractvalue { ptr, i32 } %121, 0
  store ptr %122, ptr %15, align 8
  %123 = extractvalue { ptr, i32 } %121, 1
  store i32 %123, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  br label %129

124:                                              ; preds = %101
  br label %125

125:                                              ; preds = %124, %87
  br label %126

126:                                              ; preds = %125
  %127 = load i32, ptr %17, align 4, !tbaa !5
  %128 = add nsw i32 %127, 1
  store i32 %128, ptr %17, align 4, !tbaa !5
  br label %74, !llvm.loop !13

129:                                              ; preds = %120, %102
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  br label %534

130:                                              ; preds = %78
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  %131 = load i32, ptr %6, align 4, !tbaa !5
  %132 = add nsw i32 %131, 30
  %133 = invoke noundef i32 @"_ZZ5sieveiiiENK3$_0clEi"(ptr noundef nonnull align 1 dereferenceable(1) %9, i32 noundef %132)
          to label %134 unwind label %152

134:                                              ; preds = %130
  store i32 %133, ptr %22, align 4, !tbaa !5
  store i1 false, ptr %23, align 1
  call void @llvm.lifetime.start.p0(i64 12, ptr %25) #8
  store i32 2, ptr %25, align 4, !tbaa !5
  %135 = getelementptr inbounds i32, ptr %25, i64 1
  store i32 3, ptr %135, align 4, !tbaa !5
  %136 = getelementptr inbounds i32, ptr %25, i64 2
  store i32 5, ptr %136, align 4, !tbaa !5
  %137 = getelementptr inbounds %"class.std::initializer_list", ptr %24, i32 0, i32 0
  store ptr %25, ptr %137, align 8, !tbaa !14
  %138 = getelementptr inbounds %"class.std::initializer_list", ptr %24, i32 0, i32 1
  store i64 3, ptr %138, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #8
  %139 = getelementptr inbounds { ptr, i64 }, ptr %24, i32 0, i32 0
  %140 = load ptr, ptr %139, align 8
  %141 = getelementptr inbounds { ptr, i64 }, ptr %24, i32 0, i32 1
  %142 = load i64, ptr %141, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %140, i64 %142, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %143 unwind label %156

143:                                              ; preds = %134
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #8
  store i32 3, ptr %27, align 4, !tbaa !5
  %144 = load i32, ptr %22, align 4, !tbaa !5
  %145 = sext i32 %144 to i64
  invoke void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %145)
          to label %146 unwind label %160

146:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 24, ptr %28) #8
  call void @_ZNSt6vectorIZ5sieveiiiE1PSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  store i64 0, ptr %29, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #8
  store i32 1, ptr %30, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #8
  store i32 7, ptr %31, align 4, !tbaa !5
  br label %147

147:                                              ; preds = %243, %146
  %148 = load i32, ptr %31, align 4, !tbaa !5
  %149 = load i32, ptr %10, align 4, !tbaa !5
  %150 = icmp sle i32 %148, %149
  br i1 %150, label %164, label %151

151:                                              ; preds = %147
  store i32 8, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  br label %247

152:                                              ; preds = %130
  %153 = landingpad { ptr, i32 }
          cleanup
  %154 = extractvalue { ptr, i32 } %153, 0
  store ptr %154, ptr %15, align 8
  %155 = extractvalue { ptr, i32 } %153, 1
  store i32 %155, ptr %16, align 4
  br label %533

156:                                              ; preds = %134
  %157 = landingpad { ptr, i32 }
          cleanup
  %158 = extractvalue { ptr, i32 } %157, 0
  store ptr %158, ptr %15, align 8
  %159 = extractvalue { ptr, i32 } %157, 1
  store i32 %159, ptr %16, align 4
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %25) #8
  br label %533

160:                                              ; preds = %143
  %161 = landingpad { ptr, i32 }
          cleanup
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %15, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %16, align 4
  br label %530

164:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #8
  %165 = load i32, ptr %31, align 4, !tbaa !5
  %166 = sext i32 %165 to i64
  %167 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %12, i64 noundef %166)
          to label %168 unwind label %176

168:                                              ; preds = %164
  %169 = getelementptr inbounds { ptr, i64 }, ptr %32, i32 0, i32 0
  %170 = extractvalue { ptr, i64 } %167, 0
  store ptr %170, ptr %169, align 8
  %171 = getelementptr inbounds { ptr, i64 }, ptr %32, i32 0, i32 1
  %172 = extractvalue { ptr, i64 } %167, 1
  store i64 %172, ptr %171, align 8
  %173 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %32) #8
  %174 = xor i1 %173, true
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #8
  br i1 %174, label %175, label %180

175:                                              ; preds = %168
  br label %243

176:                                              ; preds = %164
  %177 = landingpad { ptr, i32 }
          cleanup
  %178 = extractvalue { ptr, i32 } %177, 0
  store ptr %178, ptr %15, align 8
  %179 = extractvalue { ptr, i32 } %177, 1
  store i32 %179, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #8
  br label %246

180:                                              ; preds = %168
  %181 = load i32, ptr %31, align 4, !tbaa !5
  %182 = load i32, ptr %7, align 4, !tbaa !5
  %183 = icmp sle i32 %181, %182
  br i1 %183, label %184, label %195

184:                                              ; preds = %180
  %185 = load i32, ptr %31, align 4, !tbaa !5
  %186 = load i32, ptr %30, align 4, !tbaa !5
  %187 = mul nsw i32 %186, %185
  store i32 %187, ptr %30, align 4, !tbaa !5
  %188 = load i64, ptr %29, align 8, !tbaa !19
  %189 = add i64 %188, 1
  store i64 %189, ptr %29, align 8, !tbaa !19
  %190 = load i32, ptr %31, align 4, !tbaa !5
  %191 = load i32, ptr %27, align 4, !tbaa !5
  %192 = add nsw i32 %191, 1
  store i32 %192, ptr %27, align 4, !tbaa !5
  %193 = sext i32 %191 to i64
  %194 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %193) #8
  store i32 %190, ptr %194, align 4, !tbaa !5
  br label %195

195:                                              ; preds = %184, %180
  call void @llvm.lifetime.start.p0(i64 36, ptr %33) #8
  %196 = load i32, ptr %31, align 4, !tbaa !5
  invoke void @_ZZ5sieveiiiEN1PC2Ei(ptr noundef nonnull align 4 dereferenceable(36) %33, i32 noundef %196)
          to label %197 unwind label %202

197:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #8
  store i32 0, ptr %34, align 4, !tbaa !5
  br label %198

198:                                              ; preds = %238, %197
  %199 = load i32, ptr %34, align 4, !tbaa !5
  %200 = icmp slt i32 %199, 8
  br i1 %200, label %206, label %201

201:                                              ; preds = %198
  store i32 11, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  br label %241

202:                                              ; preds = %241, %195
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %15, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 36, ptr %33) #8
  br label %246

206:                                              ; preds = %198
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #8
  %207 = load i32, ptr %31, align 4, !tbaa !5
  %208 = load i32, ptr %7, align 4, !tbaa !5
  %209 = icmp sle i32 %207, %208
  br i1 %209, label %210, label %212

210:                                              ; preds = %206
  %211 = load i32, ptr %31, align 4, !tbaa !5
  br label %216

212:                                              ; preds = %206
  %213 = load i32, ptr %31, align 4, !tbaa !5
  %214 = load i32, ptr %31, align 4, !tbaa !5
  %215 = mul nsw i32 %213, %214
  br label %216

216:                                              ; preds = %212, %210
  %217 = phi i32 [ %211, %210 ], [ %215, %212 ]
  store i32 %217, ptr %35, align 4, !tbaa !5
  br label %218

218:                                              ; preds = %226, %216
  %219 = load i32, ptr %35, align 4, !tbaa !5
  %220 = srem i32 %219, 30
  %221 = load i32, ptr %34, align 4, !tbaa !5
  %222 = sext i32 %221 to i64
  %223 = getelementptr inbounds [8 x i32], ptr @_ZZ5sieveiiiE2rs, i64 0, i64 %222
  %224 = load i32, ptr %223, align 4, !tbaa !5
  %225 = icmp ne i32 %220, %224
  br i1 %225, label %226, label %231

226:                                              ; preds = %218
  %227 = load i32, ptr %31, align 4, !tbaa !5
  %228 = shl i32 %227, 1
  %229 = load i32, ptr %35, align 4, !tbaa !5
  %230 = add nsw i32 %229, %228
  store i32 %230, ptr %35, align 4, !tbaa !5
  br label %218, !llvm.loop !20

231:                                              ; preds = %218
  %232 = load i32, ptr %35, align 4, !tbaa !5
  %233 = sdiv i32 %232, 30
  %234 = getelementptr inbounds %struct.P, ptr %33, i32 0, i32 1
  %235 = load i32, ptr %34, align 4, !tbaa !5
  %236 = sext i32 %235 to i64
  %237 = getelementptr inbounds [8 x i32], ptr %234, i64 0, i64 %236
  store i32 %233, ptr %237, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  br label %238

238:                                              ; preds = %231
  %239 = load i32, ptr %34, align 4, !tbaa !5
  %240 = add nsw i32 %239, 1
  store i32 %240, ptr %34, align 4, !tbaa !5
  br label %198, !llvm.loop !21

241:                                              ; preds = %201
  invoke void @_ZNSt6vectorIZ5sieveiiiE1PSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %28, ptr noundef nonnull align 4 dereferenceable(36) %33)
          to label %242 unwind label %202

242:                                              ; preds = %241
  call void @llvm.lifetime.end.p0(i64 36, ptr %33) #8
  br label %243

243:                                              ; preds = %242, %175
  %244 = load i32, ptr %31, align 4, !tbaa !5
  %245 = add nsw i32 %244, 1
  store i32 %245, ptr %31, align 4, !tbaa !5
  br label %147, !llvm.loop !22

246:                                              ; preds = %202, %176
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  br label %529

247:                                              ; preds = %151
  call void @llvm.lifetime.start.p0(i64 24, ptr %36) #8
  %248 = load i32, ptr %30, align 4, !tbaa !5
  %249 = sext i32 %248 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #8
  store i8 -1, ptr %37, align 1, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #8
  call void @_ZNSaIhEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #8
  invoke void @_ZNSt6vectorIhSaIhEEC2EmRKhRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef %249, ptr noundef nonnull align 1 dereferenceable(1) %37, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %250 unwind label %256

250:                                              ; preds = %247
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  store i64 0, ptr %39, align 8, !tbaa !19
  br label %251

251:                                              ; preds = %303, %250
  %252 = load i64, ptr %39, align 8, !tbaa !19
  %253 = load i64, ptr %29, align 8, !tbaa !19
  %254 = icmp ult i64 %252, %253
  br i1 %254, label %260, label %255

255:                                              ; preds = %251
  store i32 16, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  br label %306

256:                                              ; preds = %247
  %257 = landingpad { ptr, i32 }
          cleanup
  %258 = extractvalue { ptr, i32 } %257, 0
  store ptr %258, ptr %15, align 8
  %259 = extractvalue { ptr, i32 } %257, 1
  store i32 %259, ptr %16, align 4
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #8
  br label %528

260:                                              ; preds = %251
  call void @llvm.lifetime.start.p0(i64 36, ptr %40) #8
  %261 = load i64, ptr %39, align 8, !tbaa !19
  %262 = call noundef nonnull align 4 dereferenceable(36) ptr @_ZNSt6vectorIZ5sieveiiiE1PSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %261) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %40, ptr align 4 %262, i64 36, i1 false), !tbaa.struct !24
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #8
  %263 = getelementptr inbounds %struct.P, ptr %40, i32 0, i32 0
  %264 = load i32, ptr %263, align 4, !tbaa !25
  store i32 %264, ptr %41, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #8
  store i32 0, ptr %42, align 4, !tbaa !5
  br label %265

265:                                              ; preds = %299, %260
  %266 = load i32, ptr %42, align 4, !tbaa !5
  %267 = icmp slt i32 %266, 8
  br i1 %267, label %269, label %268

268:                                              ; preds = %265
  store i32 19, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #8
  br label %302

269:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #8
  %270 = load i32, ptr %42, align 4, !tbaa !5
  %271 = shl i32 1, %270
  %272 = xor i32 %271, -1
  %273 = trunc i32 %272 to i8
  store i8 %273, ptr %43, align 1, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #8
  %274 = getelementptr inbounds %struct.P, ptr %40, i32 0, i32 1
  %275 = load i32, ptr %42, align 4, !tbaa !5
  %276 = sext i32 %275 to i64
  %277 = getelementptr inbounds [8 x i32], ptr %274, i64 0, i64 %276
  %278 = load i32, ptr %277, align 4, !tbaa !5
  store i32 %278, ptr %44, align 4, !tbaa !5
  br label %279

279:                                              ; preds = %294, %269
  %280 = load i32, ptr %44, align 4, !tbaa !5
  %281 = load i32, ptr %30, align 4, !tbaa !5
  %282 = icmp slt i32 %280, %281
  br i1 %282, label %284, label %283

283:                                              ; preds = %279
  store i32 22, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  br label %298

284:                                              ; preds = %279
  %285 = load i8, ptr %43, align 1, !tbaa !23
  %286 = zext i8 %285 to i32
  %287 = load i32, ptr %44, align 4, !tbaa !5
  %288 = sext i32 %287 to i64
  %289 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef %288) #8
  %290 = load i8, ptr %289, align 1, !tbaa !23
  %291 = zext i8 %290 to i32
  %292 = and i32 %291, %286
  %293 = trunc i32 %292 to i8
  store i8 %293, ptr %289, align 1, !tbaa !23
  br label %294

294:                                              ; preds = %284
  %295 = load i32, ptr %41, align 4, !tbaa !5
  %296 = load i32, ptr %44, align 4, !tbaa !5
  %297 = add nsw i32 %296, %295
  store i32 %297, ptr %44, align 4, !tbaa !5
  br label %279, !llvm.loop !27

298:                                              ; preds = %283
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #8
  br label %299

299:                                              ; preds = %298
  %300 = load i32, ptr %42, align 4, !tbaa !5
  %301 = add nsw i32 %300, 1
  store i32 %301, ptr %42, align 4, !tbaa !5
  br label %265, !llvm.loop !28

302:                                              ; preds = %268
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 36, ptr %40) #8
  br label %303

303:                                              ; preds = %302
  %304 = load i64, ptr %39, align 8, !tbaa !19
  %305 = add i64 %304, 1
  store i64 %305, ptr %39, align 8, !tbaa !19
  br label %251, !llvm.loop !29

306:                                              ; preds = %255
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #8
  %307 = load i32, ptr %8, align 4, !tbaa !5
  %308 = load i32, ptr %30, align 4, !tbaa !5
  %309 = add nsw i32 %307, %308
  %310 = sub nsw i32 %309, 1
  %311 = load i32, ptr %30, align 4, !tbaa !5
  %312 = sdiv i32 %310, %311
  %313 = load i32, ptr %30, align 4, !tbaa !5
  %314 = mul nsw i32 %312, %313
  store i32 %314, ptr %45, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %46) #8
  %315 = load i32, ptr %45, align 4, !tbaa !5
  %316 = sext i32 %315 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #8
  call void @_ZNSaIhEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #8
  invoke void @_ZNSt6vectorIhSaIhEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %46, i64 noundef %316, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %317 unwind label %327

317:                                              ; preds = %306
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #8
  %318 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #8
  store ptr %318, ptr %48, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #8
  %319 = load i32, ptr %6, align 4, !tbaa !5
  %320 = add nsw i32 %319, 29
  %321 = sdiv i32 %320, 30
  store i32 %321, ptr %49, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #8
  store i32 0, ptr %50, align 4, !tbaa !5
  br label %322

322:                                              ; preds = %483, %317
  %323 = load i32, ptr %50, align 4, !tbaa !5
  %324 = load i32, ptr %49, align 4, !tbaa !5
  %325 = icmp slt i32 %323, %324
  br i1 %325, label %331, label %326

326:                                              ; preds = %322
  store i32 25, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #8
  br label %493

327:                                              ; preds = %306
  %328 = landingpad { ptr, i32 }
          cleanup
  %329 = extractvalue { ptr, i32 } %328, 0
  store ptr %329, ptr %15, align 8
  %330 = extractvalue { ptr, i32 } %328, 1
  store i32 %330, ptr %16, align 4
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #8
  br label %527

331:                                              ; preds = %322
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #8
  %332 = load i32, ptr %50, align 4, !tbaa !5
  %333 = load i32, ptr %45, align 4, !tbaa !5
  %334 = add nsw i32 %332, %333
  store i32 %334, ptr %52, align 4, !tbaa !5
  %335 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %49, ptr noundef nonnull align 4 dereferenceable(4) %52)
          to label %336 unwind label %344

336:                                              ; preds = %331
  %337 = load i32, ptr %335, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #8
  store i32 %337, ptr %51, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #8
  %338 = load i32, ptr %50, align 4, !tbaa !5
  store i32 %338, ptr %53, align 4, !tbaa !5
  br label %339

339:                                              ; preds = %363, %336
  %340 = load i32, ptr %53, align 4, !tbaa !5
  %341 = load i32, ptr %51, align 4, !tbaa !5
  %342 = icmp slt i32 %340, %341
  br i1 %342, label %348, label %343

343:                                              ; preds = %339
  store i32 28, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #8
  br label %371

344:                                              ; preds = %331
  %345 = landingpad { ptr, i32 }
          cleanup
  %346 = extractvalue { ptr, i32 } %345, 0
  store ptr %346, ptr %15, align 8
  %347 = extractvalue { ptr, i32 } %345, 1
  store i32 %347, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #8
  br label %492

348:                                              ; preds = %339
  %349 = call ptr @_ZNSt6vectorIhSaIhEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %36) #8
  %350 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %54, i32 0, i32 0
  store ptr %349, ptr %350, align 8
  %351 = call ptr @_ZNSt6vectorIhSaIhEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %36) #8
  %352 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %55, i32 0, i32 0
  store ptr %351, ptr %352, align 8
  %353 = load ptr, ptr %48, align 8, !tbaa !30
  %354 = load i32, ptr %53, align 4, !tbaa !5
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds i8, ptr %353, i64 %355
  %357 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %54, i32 0, i32 0
  %358 = load ptr, ptr %357, align 8
  %359 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %55, i32 0, i32 0
  %360 = load ptr, ptr %359, align 8
  %361 = invoke noundef ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_ET0_T_S8_S7_(ptr %358, ptr %360, ptr noundef %356)
          to label %362 unwind label %367

362:                                              ; preds = %348
  br label %363

363:                                              ; preds = %362
  %364 = load i32, ptr %30, align 4, !tbaa !5
  %365 = load i32, ptr %53, align 4, !tbaa !5
  %366 = add nsw i32 %365, %364
  store i32 %366, ptr %53, align 4, !tbaa !5
  br label %339, !llvm.loop !31

367:                                              ; preds = %348
  %368 = landingpad { ptr, i32 }
          cleanup
  %369 = extractvalue { ptr, i32 } %368, 0
  store ptr %369, ptr %15, align 8
  %370 = extractvalue { ptr, i32 } %368, 1
  store i32 %370, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #8
  br label %492

371:                                              ; preds = %343
  %372 = load i32, ptr %50, align 4, !tbaa !5
  %373 = icmp eq i32 %372, 0
  br i1 %373, label %374, label %381

374:                                              ; preds = %371
  %375 = load ptr, ptr %48, align 8, !tbaa !30
  %376 = getelementptr inbounds i8, ptr %375, i64 0
  %377 = load i8, ptr %376, align 1, !tbaa !23
  %378 = zext i8 %377 to i32
  %379 = and i32 %378, 254
  %380 = trunc i32 %379 to i8
  store i8 %380, ptr %376, align 1, !tbaa !23
  br label %381

381:                                              ; preds = %374, %371
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #8
  %382 = load i64, ptr %29, align 8, !tbaa !19
  store i64 %382, ptr %56, align 8, !tbaa !19
  br label %383

383:                                              ; preds = %439, %381
  %384 = load i64, ptr %56, align 8, !tbaa !19
  %385 = call noundef i64 @_ZNKSt6vectorIZ5sieveiiiE1PSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %28) #8
  %386 = icmp ult i64 %384, %385
  br i1 %386, label %388, label %387

387:                                              ; preds = %383
  store i32 31, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  br label %442

388:                                              ; preds = %383
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #8
  %389 = load i64, ptr %56, align 8, !tbaa !19
  %390 = call noundef nonnull align 4 dereferenceable(36) ptr @_ZNSt6vectorIZ5sieveiiiE1PSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %389) #8
  store ptr %390, ptr %57, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #8
  %391 = load ptr, ptr %57, align 8, !tbaa !30
  %392 = getelementptr inbounds %struct.P, ptr %391, i32 0, i32 0
  %393 = load i32, ptr %392, align 4, !tbaa !25
  store i32 %393, ptr %58, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #8
  store i32 0, ptr %59, align 4, !tbaa !5
  br label %394

394:                                              ; preds = %435, %388
  %395 = load i32, ptr %59, align 4, !tbaa !5
  %396 = icmp slt i32 %395, 8
  br i1 %396, label %398, label %397

397:                                              ; preds = %394
  store i32 34, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #8
  br label %438

398:                                              ; preds = %394
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #8
  %399 = load ptr, ptr %57, align 8, !tbaa !30
  %400 = getelementptr inbounds %struct.P, ptr %399, i32 0, i32 1
  %401 = load i32, ptr %59, align 4, !tbaa !5
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds [8 x i32], ptr %400, i64 0, i64 %402
  %404 = load i32, ptr %403, align 4, !tbaa !5
  store i32 %404, ptr %60, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #8
  %405 = load i32, ptr %59, align 4, !tbaa !5
  %406 = shl i32 1, %405
  %407 = xor i32 %406, -1
  %408 = trunc i32 %407 to i8
  store i8 %408, ptr %61, align 1, !tbaa !23
  br label %409

409:                                              ; preds = %424, %398
  %410 = load i32, ptr %60, align 4, !tbaa !5
  %411 = load i32, ptr %51, align 4, !tbaa !5
  %412 = icmp slt i32 %410, %411
  br i1 %412, label %413, label %428

413:                                              ; preds = %409
  %414 = load i8, ptr %61, align 1, !tbaa !23
  %415 = zext i8 %414 to i32
  %416 = load ptr, ptr %48, align 8, !tbaa !30
  %417 = load i32, ptr %60, align 4, !tbaa !5
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds i8, ptr %416, i64 %418
  %420 = load i8, ptr %419, align 1, !tbaa !23
  %421 = zext i8 %420 to i32
  %422 = and i32 %421, %415
  %423 = trunc i32 %422 to i8
  store i8 %423, ptr %419, align 1, !tbaa !23
  br label %424

424:                                              ; preds = %413
  %425 = load i32, ptr %58, align 4, !tbaa !5
  %426 = load i32, ptr %60, align 4, !tbaa !5
  %427 = add nsw i32 %426, %425
  store i32 %427, ptr %60, align 4, !tbaa !5
  br label %409, !llvm.loop !32

428:                                              ; preds = %409
  %429 = load i32, ptr %60, align 4, !tbaa !5
  %430 = load ptr, ptr %57, align 8, !tbaa !30
  %431 = getelementptr inbounds %struct.P, ptr %430, i32 0, i32 1
  %432 = load i32, ptr %59, align 4, !tbaa !5
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds [8 x i32], ptr %431, i64 0, i64 %433
  store i32 %429, ptr %434, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #8
  br label %435

435:                                              ; preds = %428
  %436 = load i32, ptr %59, align 4, !tbaa !5
  %437 = add nsw i32 %436, 1
  store i32 %437, ptr %59, align 4, !tbaa !5
  br label %394, !llvm.loop !33

438:                                              ; preds = %397
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  br label %439

439:                                              ; preds = %438
  %440 = load i64, ptr %56, align 8, !tbaa !19
  %441 = add i64 %440, 1
  store i64 %441, ptr %56, align 8, !tbaa !19
  br label %383, !llvm.loop !34

442:                                              ; preds = %387
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #8
  %443 = load i32, ptr %50, align 4, !tbaa !5
  store i32 %443, ptr %62, align 4, !tbaa !5
  br label %444

444:                                              ; preds = %479, %442
  %445 = load i32, ptr %62, align 4, !tbaa !5
  %446 = load i32, ptr %51, align 4, !tbaa !5
  %447 = icmp slt i32 %445, %446
  br i1 %447, label %449, label %448

448:                                              ; preds = %444
  store i32 40, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #8
  br label %482

449:                                              ; preds = %444
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #8
  %450 = load ptr, ptr %48, align 8, !tbaa !30
  %451 = load i32, ptr %62, align 4, !tbaa !5
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds i8, ptr %450, i64 %452
  %454 = load i8, ptr %453, align 1, !tbaa !23
  %455 = zext i8 %454 to i32
  store i32 %455, ptr %63, align 4, !tbaa !5
  br label %456

456:                                              ; preds = %473, %449
  %457 = load i32, ptr %63, align 4, !tbaa !5
  %458 = icmp sgt i32 %457, 0
  br i1 %458, label %460, label %459

459:                                              ; preds = %456
  store i32 43, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #8
  br label %478

460:                                              ; preds = %456
  %461 = load i32, ptr %62, align 4, !tbaa !5
  %462 = mul nsw i32 %461, 30
  %463 = load i32, ptr %63, align 4, !tbaa !5
  %464 = call i32 @llvm.cttz.i32(i32 %463, i1 true)
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds [8 x i32], ptr @_ZZ5sieveiiiE2rs, i64 0, i64 %465
  %467 = load i32, ptr %466, align 4, !tbaa !5
  %468 = add nsw i32 %462, %467
  %469 = load i32, ptr %27, align 4, !tbaa !5
  %470 = add nsw i32 %469, 1
  store i32 %470, ptr %27, align 4, !tbaa !5
  %471 = sext i32 %469 to i64
  %472 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %471) #8
  store i32 %468, ptr %472, align 4, !tbaa !5
  br label %473

473:                                              ; preds = %460
  %474 = load i32, ptr %63, align 4, !tbaa !5
  %475 = sub nsw i32 %474, 1
  %476 = load i32, ptr %63, align 4, !tbaa !5
  %477 = and i32 %476, %475
  store i32 %477, ptr %63, align 4, !tbaa !5
  br label %456, !llvm.loop !35

478:                                              ; preds = %459
  br label %479

479:                                              ; preds = %478
  %480 = load i32, ptr %62, align 4, !tbaa !5
  %481 = add nsw i32 %480, 1
  store i32 %481, ptr %62, align 4, !tbaa !5
  br label %444, !llvm.loop !36

482:                                              ; preds = %448
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #8
  br label %483

483:                                              ; preds = %482
  %484 = load i32, ptr %45, align 4, !tbaa !5
  %485 = load i32, ptr %50, align 4, !tbaa !5
  %486 = add nsw i32 %485, %484
  store i32 %486, ptr %50, align 4, !tbaa !5
  %487 = load i32, ptr %45, align 4, !tbaa !5
  %488 = load ptr, ptr %48, align 8, !tbaa !30
  %489 = sext i32 %487 to i64
  %490 = sub i64 0, %489
  %491 = getelementptr inbounds i8, ptr %488, i64 %490
  store ptr %491, ptr %48, align 8, !tbaa !30
  br label %322, !llvm.loop !37

492:                                              ; preds = %367, %344
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #8
  br label %526

493:                                              ; preds = %326
  %494 = load i32, ptr %27, align 4, !tbaa !5
  %495 = load i32, ptr %22, align 4, !tbaa !5
  %496 = icmp sle i32 %494, %495
  br i1 %496, label %497, label %498

497:                                              ; preds = %493
  br label %500

498:                                              ; preds = %493
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 75, ptr noundef @__PRETTY_FUNCTION__._Z5sieveiii) #9
  unreachable

499:                                              ; No predecessors!
  br label %500

500:                                              ; preds = %499, %497
  br label %501

501:                                              ; preds = %514, %500
  %502 = load i32, ptr %27, align 4, !tbaa !5
  %503 = icmp sgt i32 %502, 0
  br i1 %503, label %504, label %512

504:                                              ; preds = %501
  %505 = load i32, ptr %27, align 4, !tbaa !5
  %506 = sub nsw i32 %505, 1
  %507 = sext i32 %506 to i64
  %508 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %507) #8
  %509 = load i32, ptr %508, align 4, !tbaa !5
  %510 = load i32, ptr %6, align 4, !tbaa !5
  %511 = icmp sgt i32 %509, %510
  br label %512

512:                                              ; preds = %504, %501
  %513 = phi i1 [ false, %501 ], [ %511, %504 ]
  br i1 %513, label %514, label %517

514:                                              ; preds = %512
  %515 = load i32, ptr %27, align 4, !tbaa !5
  %516 = add nsw i32 %515, -1
  store i32 %516, ptr %27, align 4, !tbaa !5
  br label %501, !llvm.loop !38

517:                                              ; preds = %512
  %518 = load i32, ptr %27, align 4, !tbaa !5
  %519 = sext i32 %518 to i64
  invoke void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %519)
          to label %520 unwind label %522

520:                                              ; preds = %517
  store i1 true, ptr %23, align 1
  store i32 1, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @_ZNSt6vectorIZ5sieveiiiE1PSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  %521 = load i1, ptr %23, align 1
  br i1 %521, label %532, label %531

522:                                              ; preds = %517
  %523 = landingpad { ptr, i32 }
          cleanup
  %524 = extractvalue { ptr, i32 } %523, 0
  store ptr %524, ptr %15, align 8
  %525 = extractvalue { ptr, i32 } %523, 1
  store i32 %525, ptr %16, align 4
  br label %526

526:                                              ; preds = %522, %492
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #8
  br label %527

527:                                              ; preds = %526, %327
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #8
  br label %528

528:                                              ; preds = %527, %256
  call void @llvm.lifetime.end.p0(i64 24, ptr %36) #8
  br label %529

529:                                              ; preds = %528, %246
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @_ZNSt6vectorIZ5sieveiiiE1PSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #8
  br label %530

530:                                              ; preds = %529, %160
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #8
  br label %533

531:                                              ; preds = %520
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #8
  br label %532

532:                                              ; preds = %531, %520
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #8
  ret void

533:                                              ; preds = %530, %156, %152
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %534

534:                                              ; preds = %533, %129
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #8
  br label %535

535:                                              ; preds = %534, %79
  call void @llvm.lifetime.end.p0(i64 40, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #8
  br label %536

536:                                              ; preds = %535
  %537 = load ptr, ptr %15, align 8
  %538 = load i32, ptr %16, align 4
  %539 = insertvalue { ptr, i32 } poison, ptr %537, 0
  %540 = insertvalue { ptr, i32 } %539, i32 %538, 1
  resume { ptr, i32 } %540
}

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt4sqrtIiEN9__gnu_cxx11__enable_ifIXsr12__is_integerIT_EE7__valueEdE6__typeES2_(i32 noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSaIbEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIbSaIbEEC2EmRKbRKS0_(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16), i1 noundef zeroext) #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @"_ZZ5sieveiiiENK3$_0clEi"(ptr noundef nonnull align 1 dereferenceable(1), i32 noundef) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr, i64, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZNSt6vectorIZ5sieveiiiE1PSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZZ5sieveiiiEN1PC2Ei(ptr noundef nonnull align 4 dereferenceable(36), i32 noundef) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZNSt6vectorIZ5sieveiiiE1PSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(36)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSaIhEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIhSaIhEEC2EmRKhRKS0_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 4 dereferenceable(36) ptr @_ZNSt6vectorIZ5sieveiiiE1PSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #3 align 2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIhSaIhEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_ET0_T_S8_S7_(ptr, ptr, ptr noundef) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorIhSaIhEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorIhSaIhEE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i64 @_ZNKSt6vectorIZ5sieveiiiE1PSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.cttz.i32(i32, i1 immarg) #6

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #7

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZNSt6vectorIZ5sieveiiiE1PSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }
attributes #9 = { noreturn nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = !{!15, !16, i64 0}
!15 = !{!"_ZTSSt16initializer_listIiE", !16, i64 0, !17, i64 8}
!16 = !{!"any pointer", !7, i64 0}
!17 = !{!"long", !7, i64 0}
!18 = !{!15, !17, i64 8}
!19 = !{!17, !17, i64 0}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = !{!7, !7, i64 0}
!24 = !{i64 0, i64 4, !5, i64 4, i64 32, !23}
!25 = !{!26, !6, i64 0}
!26 = !{!"_ZTSZ5sieveiiiE1P", !6, i64 0, !7, i64 4}
!27 = distinct !{!27, !12}
!28 = distinct !{!28, !12}
!29 = distinct !{!29, !12}
!30 = !{!16, !16, i64 0}
!31 = distinct !{!31, !12}
!32 = distinct !{!32, !12}
!33 = distinct !{!33, !12}
!34 = distinct !{!34, !12}
!35 = distinct !{!35, !12}
!36 = distinct !{!36, !12}
!37 = distinct !{!37, !12}
!38 = distinct !{!38, !12}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon = type { i8 }
%"class.std::vector.0" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"class.std::allocator.4" = type { i8 }
%"struct.std::_Bit_reference" = type { ptr, i64 }
%"class.std::allocator" = type { i8 }
%"class.std::vector.7" = type { %"struct.std::_Vector_base.8" }
%"struct.std::_Vector_base.8" = type { %"struct.std::_Vector_base<P, std::allocator<P>>::_Vector_impl" }
%"struct.std::_Vector_base<P, std::allocator<P>>::_Vector_impl" = type { %"struct.std::_Vector_base<P, std::allocator<P>>::_Vector_impl_data" }
%"struct.std::_Vector_base<P, std::allocator<P>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.P = type { i32, [8 x i32] }
%"class.std::vector.12" = type { %"struct.std::_Vector_base.13" }
%"struct.std::_Vector_base.13" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.14" = type { i8 }

@_ZZ5sieveiiiE2rs = external hidden local_unnamed_addr constant [8 x i32], align 16
@.str = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [95 x i8], align 1
@__PRETTY_FUNCTION__._Z5sieveiii = external hidden unnamed_addr constant [51 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_Z5sieveiii(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8 %0, i32 noundef %1, i32 noundef %2, i32 noundef %3) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %5 = alloca %class.anon, align 1
  %6 = alloca %"class.std::vector.0", align 8
  %7 = alloca i8, align 1
  %8 = alloca %"class.std::allocator.4", align 1
  %9 = alloca %"struct.std::_Bit_reference", align 8
  %10 = alloca %"struct.std::_Bit_reference", align 8
  %11 = alloca [3 x i32], align 4
  %12 = alloca %"class.std::allocator", align 1
  %13 = alloca %"class.std::vector.7", align 8
  %14 = alloca %"struct.std::_Bit_reference", align 8
  %15 = alloca %struct.P, align 4
  %16 = alloca %"class.std::vector.12", align 8
  %17 = alloca i8, align 1
  %18 = alloca %"class.std::allocator.14", align 1
  %19 = alloca %"class.std::vector.12", align 8
  %20 = alloca %"class.std::allocator.14", align 1
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #8
  %23 = tail call noundef double @_ZSt4sqrtIiEN9__gnu_cxx11__enable_ifIXsr12__is_integerIT_EE7__valueEdE6__typeES2_(i32 noundef %1)
  %24 = fptosi double %23 to i32
  %25 = tail call noundef double @_ZSt4sqrtIiEN9__gnu_cxx11__enable_ifIXsr12__is_integerIT_EE7__valueEdE6__typeES2_(i32 noundef %24)
  %26 = fptosi double %25 to i32
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %6) #8
  %27 = add nsw i32 %24, 1
  %28 = sext i32 %27 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #8
  store i8 1, ptr %7, align 1, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #8
  call void @_ZNSaIbEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  invoke void @_ZNSt6vectorIbSaIbEEC2EmRKbRKS0_(ptr noundef nonnull align 8 dereferenceable(40) %6, i64 noundef %28, ptr noundef nonnull align 1 dereferenceable(1) %7, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %29 unwind label %35

29:                                               ; preds = %4
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #8
  %.not189 = icmp slt i32 %26, 2
  br i1 %.not189, label %._crit_edge, label %.lr.ph192

.lr.ph192:                                        ; preds = %29
  %30 = getelementptr inbounds i8, ptr %9, i64 8
  %31 = getelementptr inbounds i8, ptr %10, i64 8
  %32 = add nuw i32 %26, 1
  %wide.trip.count = zext i32 %32 to i64
  br label %37

._crit_edge:                                      ; preds = %.loopexit, %29
  %33 = add nsw i32 %1, 30
  %34 = invoke noundef i32 @"_ZZ5sieveiiiENK3$_0clEi"(ptr noundef nonnull align 1 dereferenceable(1) %5, i32 noundef %33)
          to label %57 unwind label %81

35:                                               ; preds = %4
  %36 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #8
  br label %463

37:                                               ; preds = %.lr.ph192, %.loopexit
  %indvars.iv262 = phi i64 [ 5, %.lr.ph192 ], [ %indvars.iv.next263, %.loopexit ]
  %indvars.iv257 = phi i64 [ 2, %.lr.ph192 ], [ %indvars.iv.next258, %.loopexit ]
  %indvars.iv255 = phi i32 [ 4, %.lr.ph192 ], [ %indvars.iv.next256, %.loopexit ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #8
  %38 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %6, i64 noundef %indvars.iv257)
          to label %39 unwind label %46

39:                                               ; preds = %37
  %40 = extractvalue { ptr, i64 } %38, 0
  store ptr %40, ptr %9, align 8
  %41 = extractvalue { ptr, i64 } %38, 1
  store i64 %41, ptr %30, align 8
  %42 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #8
  %43 = mul nuw nsw i64 %indvars.iv257, %indvars.iv257
  %44 = trunc nuw i64 %43 to i32
  %.not174187 = icmp sle i32 %44, %24
  %or.cond.not = select i1 %42, i1 %.not174187, i1 false
  br i1 %or.cond.not, label %.lr.ph.preheader, label %.loopexit

.lr.ph.preheader:                                 ; preds = %39
  %45 = zext i32 %indvars.iv255 to i64
  br label %.lr.ph

46:                                               ; preds = %37
  %47 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #8
  br label %462

.lr.ph:                                           ; preds = %.lr.ph.preheader, %49
  %indvars.iv259 = phi i64 [ %indvars.iv.next260, %49 ], [ %45, %.lr.ph.preheader ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #8
  %48 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %6, i64 noundef %indvars.iv259)
          to label %49 unwind label %54

49:                                               ; preds = %.lr.ph
  %50 = extractvalue { ptr, i64 } %48, 0
  store ptr %50, ptr %10, align 8
  %51 = extractvalue { ptr, i64 } %48, 1
  store i64 %51, ptr %31, align 8
  %52 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %10, i1 noundef zeroext false) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #8
  %indvars.iv.next260 = add nuw nsw i64 %indvars.iv259, %indvars.iv257
  %53 = trunc nuw i64 %indvars.iv.next260 to i32
  %.not174 = icmp sgt i32 %53, %24
  br i1 %.not174, label %.loopexit, label %.lr.ph, !llvm.loop !9

54:                                               ; preds = %.lr.ph
  %55 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #8
  br label %462

.loopexit:                                        ; preds = %49, %39
  %indvars.iv.next258 = add nuw nsw i64 %indvars.iv257, 1
  %indvars.iv.next263 = add nuw nsw i64 %indvars.iv262, 2
  %56 = trunc nuw i64 %indvars.iv262 to i32
  %indvars.iv.next256 = add i32 %indvars.iv255, %56
  %exitcond.not = icmp eq i64 %indvars.iv.next258, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %37, !llvm.loop !11

57:                                               ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %11) #8
  store i32 2, ptr %11, align 4, !tbaa !12
  %58 = getelementptr inbounds i8, ptr %11, i64 4
  store i32 3, ptr %58, align 4, !tbaa !12
  %59 = getelementptr inbounds i8, ptr %11, i64 8
  store i32 5, ptr %59, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr nonnull %11, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %60 unwind label %83

60:                                               ; preds = %57
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %11) #8
  %61 = sext i32 %34 to i64
  invoke void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %61)
          to label %62 unwind label %85

62:                                               ; preds = %60
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #8
  call void @_ZNSt6vectorIZ5sieveiiiE1PSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  %.not161200 = icmp slt i32 %24, 7
  br i1 %.not161200, label %._crit_edge207, label %.lr.ph206

.lr.ph206:                                        ; preds = %62
  %63 = getelementptr inbounds i8, ptr %14, i64 8
  %64 = getelementptr inbounds i8, ptr %15, i64 4
  %65 = load i32, ptr @_ZZ5sieveiiiE2rs, align 16
  %66 = load i32, ptr getelementptr inbounds (i8, ptr @_ZZ5sieveiiiE2rs, i64 4), align 4
  %67 = getelementptr inbounds i8, ptr %15, i64 8
  %68 = load i32, ptr getelementptr inbounds (i8, ptr @_ZZ5sieveiiiE2rs, i64 8), align 8
  %69 = getelementptr inbounds i8, ptr %15, i64 12
  %70 = load i32, ptr getelementptr inbounds (i8, ptr @_ZZ5sieveiiiE2rs, i64 12), align 4
  %71 = getelementptr inbounds i8, ptr %15, i64 16
  %72 = load i32, ptr getelementptr inbounds (i8, ptr @_ZZ5sieveiiiE2rs, i64 16), align 16
  %73 = getelementptr inbounds i8, ptr %15, i64 20
  %74 = load i32, ptr getelementptr inbounds (i8, ptr @_ZZ5sieveiiiE2rs, i64 20), align 4
  %75 = getelementptr inbounds i8, ptr %15, i64 24
  %76 = load i32, ptr getelementptr inbounds (i8, ptr @_ZZ5sieveiiiE2rs, i64 24), align 8
  %77 = getelementptr inbounds i8, ptr %15, i64 28
  %78 = load i32, ptr getelementptr inbounds (i8, ptr @_ZZ5sieveiiiE2rs, i64 28), align 4
  %79 = getelementptr inbounds i8, ptr %15, i64 32
  br label %87

._crit_edge207:                                   ; preds = %135, %62
  %.0153.lcssa = phi i32 [ 1, %62 ], [ %.2155, %135 ]
  %.0149.lcssa = phi i64 [ 0, %62 ], [ %.2151, %135 ]
  %.0141.lcssa = phi i32 [ 3, %62 ], [ %.2143, %135 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #8
  %80 = sext i32 %.0153.lcssa to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #8
  store i8 -1, ptr %17, align 1, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #8
  call void @_ZNSaIhEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  invoke void @_ZNSt6vectorIhSaIhEEC2EmRKhRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %80, ptr noundef nonnull align 1 dereferenceable(1) %17, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %137 unwind label %143

81:                                               ; preds = %._crit_edge
  %82 = landingpad { ptr, i32 }
          cleanup
  br label %462

83:                                               ; preds = %57
  %84 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %11) #8
  br label %462

85:                                               ; preds = %60
  %86 = landingpad { ptr, i32 }
          cleanup
  br label %461

87:                                               ; preds = %.lr.ph206, %135
  %.0141204 = phi i32 [ 3, %.lr.ph206 ], [ %.2143, %135 ]
  %.0149203 = phi i64 [ 0, %.lr.ph206 ], [ %.2151, %135 ]
  %.0153202 = phi i32 [ 1, %.lr.ph206 ], [ %.2155, %135 ]
  %.0159201 = phi i32 [ 7, %.lr.ph206 ], [ %136, %135 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #8
  %88 = sext i32 %.0159201 to i64
  %89 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %6, i64 noundef %88)
          to label %90 unwind label %94

90:                                               ; preds = %87
  %91 = extractvalue { ptr, i64 } %89, 0
  store ptr %91, ptr %14, align 8
  %92 = extractvalue { ptr, i64 } %89, 1
  store i64 %92, ptr %63, align 8
  %93 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %14) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #8
  br i1 %93, label %96, label %135

94:                                               ; preds = %87
  %95 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #8
  br label %460

96:                                               ; preds = %90
  %.not167 = icmp sgt i32 %.0159201, %2
  br i1 %.not167, label %103, label %97

97:                                               ; preds = %96
  %98 = mul i32 %.0153202, %.0159201
  %99 = add i64 %.0149203, 1
  %100 = add nsw i32 %.0141204, 1
  %101 = sext i32 %.0141204 to i64
  %102 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %101) #8
  store i32 %.0159201, ptr %102, align 4, !tbaa !12
  br label %103

103:                                              ; preds = %97, %96
  %104 = phi i32 [ 1, %97 ], [ %.0159201, %96 ]
  %.1154 = phi i32 [ %98, %97 ], [ %.0153202, %96 ]
  %.1150 = phi i64 [ %99, %97 ], [ %.0149203, %96 ]
  %.1142 = phi i32 [ %100, %97 ], [ %.0141204, %96 ]
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %15) #8
  call void @_ZZ5sieveiiiEN1PC2Ei(ptr noundef nonnull align 4 dereferenceable(36) %15, i32 noundef %.0159201)
  %105 = mul nsw i32 %104, %.0159201
  %106 = srem i32 %105, 30
  %107 = shl i32 %.0159201, 1
  %.not173193 = icmp eq i32 %106, %65
  br i1 %.not173193, label %._crit_edge197, label %.lr.ph196

108:                                              ; preds = %._crit_edge197.7
  %109 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %15) #8
  br label %460

.lr.ph196:                                        ; preds = %103, %.lr.ph196
  %.0157194 = phi i32 [ %110, %.lr.ph196 ], [ %105, %103 ]
  %110 = add nsw i32 %.0157194, %107
  %111 = srem i32 %110, 30
  %.not173 = icmp eq i32 %111, %65
  br i1 %.not173, label %._crit_edge197, label %.lr.ph196, !llvm.loop !15

._crit_edge197:                                   ; preds = %.lr.ph196, %103
  %.0157.lcssa = phi i32 [ %105, %103 ], [ %110, %.lr.ph196 ]
  %112 = sdiv i32 %.0157.lcssa, 30
  store i32 %112, ptr %64, align 4, !tbaa !12
  %.not173193.1 = icmp eq i32 %106, %66
  br i1 %.not173193.1, label %._crit_edge197.1, label %.lr.ph196.1

.lr.ph196.1:                                      ; preds = %._crit_edge197, %.lr.ph196.1
  %.0157194.1 = phi i32 [ %113, %.lr.ph196.1 ], [ %105, %._crit_edge197 ]
  %113 = add nsw i32 %.0157194.1, %107
  %114 = srem i32 %113, 30
  %.not173.1 = icmp eq i32 %114, %66
  br i1 %.not173.1, label %._crit_edge197.1, label %.lr.ph196.1, !llvm.loop !15

._crit_edge197.1:                                 ; preds = %.lr.ph196.1, %._crit_edge197
  %.0157.lcssa.1 = phi i32 [ %105, %._crit_edge197 ], [ %113, %.lr.ph196.1 ]
  %115 = sdiv i32 %.0157.lcssa.1, 30
  store i32 %115, ptr %67, align 4, !tbaa !12
  %.not173193.2 = icmp eq i32 %106, %68
  br i1 %.not173193.2, label %._crit_edge197.2, label %.lr.ph196.2

.lr.ph196.2:                                      ; preds = %._crit_edge197.1, %.lr.ph196.2
  %.0157194.2 = phi i32 [ %116, %.lr.ph196.2 ], [ %105, %._crit_edge197.1 ]
  %116 = add nsw i32 %.0157194.2, %107
  %117 = srem i32 %116, 30
  %.not173.2 = icmp eq i32 %117, %68
  br i1 %.not173.2, label %._crit_edge197.2, label %.lr.ph196.2, !llvm.loop !15

._crit_edge197.2:                                 ; preds = %.lr.ph196.2, %._crit_edge197.1
  %.0157.lcssa.2 = phi i32 [ %105, %._crit_edge197.1 ], [ %116, %.lr.ph196.2 ]
  %118 = sdiv i32 %.0157.lcssa.2, 30
  store i32 %118, ptr %69, align 4, !tbaa !12
  %.not173193.3 = icmp eq i32 %106, %70
  br i1 %.not173193.3, label %._crit_edge197.3, label %.lr.ph196.3

.lr.ph196.3:                                      ; preds = %._crit_edge197.2, %.lr.ph196.3
  %.0157194.3 = phi i32 [ %119, %.lr.ph196.3 ], [ %105, %._crit_edge197.2 ]
  %119 = add nsw i32 %.0157194.3, %107
  %120 = srem i32 %119, 30
  %.not173.3 = icmp eq i32 %120, %70
  br i1 %.not173.3, label %._crit_edge197.3, label %.lr.ph196.3, !llvm.loop !15

._crit_edge197.3:                                 ; preds = %.lr.ph196.3, %._crit_edge197.2
  %.0157.lcssa.3 = phi i32 [ %105, %._crit_edge197.2 ], [ %119, %.lr.ph196.3 ]
  %121 = sdiv i32 %.0157.lcssa.3, 30
  store i32 %121, ptr %71, align 4, !tbaa !12
  %.not173193.4 = icmp eq i32 %106, %72
  br i1 %.not173193.4, label %._crit_edge197.4, label %.lr.ph196.4

.lr.ph196.4:                                      ; preds = %._crit_edge197.3, %.lr.ph196.4
  %.0157194.4 = phi i32 [ %122, %.lr.ph196.4 ], [ %105, %._crit_edge197.3 ]
  %122 = add nsw i32 %.0157194.4, %107
  %123 = srem i32 %122, 30
  %.not173.4 = icmp eq i32 %123, %72
  br i1 %.not173.4, label %._crit_edge197.4, label %.lr.ph196.4, !llvm.loop !15

._crit_edge197.4:                                 ; preds = %.lr.ph196.4, %._crit_edge197.3
  %.0157.lcssa.4 = phi i32 [ %105, %._crit_edge197.3 ], [ %122, %.lr.ph196.4 ]
  %124 = sdiv i32 %.0157.lcssa.4, 30
  store i32 %124, ptr %73, align 4, !tbaa !12
  %.not173193.5 = icmp eq i32 %106, %74
  br i1 %.not173193.5, label %._crit_edge197.5, label %.lr.ph196.5

.lr.ph196.5:                                      ; preds = %._crit_edge197.4, %.lr.ph196.5
  %.0157194.5 = phi i32 [ %125, %.lr.ph196.5 ], [ %105, %._crit_edge197.4 ]
  %125 = add nsw i32 %.0157194.5, %107
  %126 = srem i32 %125, 30
  %.not173.5 = icmp eq i32 %126, %74
  br i1 %.not173.5, label %._crit_edge197.5, label %.lr.ph196.5, !llvm.loop !15

._crit_edge197.5:                                 ; preds = %.lr.ph196.5, %._crit_edge197.4
  %.0157.lcssa.5 = phi i32 [ %105, %._crit_edge197.4 ], [ %125, %.lr.ph196.5 ]
  %127 = sdiv i32 %.0157.lcssa.5, 30
  store i32 %127, ptr %75, align 4, !tbaa !12
  %.not173193.6 = icmp eq i32 %106, %76
  br i1 %.not173193.6, label %._crit_edge197.6, label %.lr.ph196.6

.lr.ph196.6:                                      ; preds = %._crit_edge197.5, %.lr.ph196.6
  %.0157194.6 = phi i32 [ %128, %.lr.ph196.6 ], [ %105, %._crit_edge197.5 ]
  %128 = add nsw i32 %.0157194.6, %107
  %129 = srem i32 %128, 30
  %.not173.6 = icmp eq i32 %129, %76
  br i1 %.not173.6, label %._crit_edge197.6, label %.lr.ph196.6, !llvm.loop !15

._crit_edge197.6:                                 ; preds = %.lr.ph196.6, %._crit_edge197.5
  %.0157.lcssa.6 = phi i32 [ %105, %._crit_edge197.5 ], [ %128, %.lr.ph196.6 ]
  %130 = sdiv i32 %.0157.lcssa.6, 30
  store i32 %130, ptr %77, align 4, !tbaa !12
  %.not173193.7 = icmp eq i32 %106, %78
  br i1 %.not173193.7, label %._crit_edge197.7, label %.lr.ph196.7

.lr.ph196.7:                                      ; preds = %._crit_edge197.6, %.lr.ph196.7
  %.0157194.7 = phi i32 [ %131, %.lr.ph196.7 ], [ %105, %._crit_edge197.6 ]
  %131 = add nsw i32 %.0157194.7, %107
  %132 = srem i32 %131, 30
  %.not173.7 = icmp eq i32 %132, %78
  br i1 %.not173.7, label %._crit_edge197.7, label %.lr.ph196.7, !llvm.loop !15

._crit_edge197.7:                                 ; preds = %.lr.ph196.7, %._crit_edge197.6
  %.0157.lcssa.7 = phi i32 [ %105, %._crit_edge197.6 ], [ %131, %.lr.ph196.7 ]
  %133 = sdiv i32 %.0157.lcssa.7, 30
  store i32 %133, ptr %79, align 4, !tbaa !12
  invoke void @_ZNSt6vectorIZ5sieveiiiE1PSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 4 dereferenceable(36) %15)
          to label %134 unwind label %108

134:                                              ; preds = %._crit_edge197.7
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %15) #8
  br label %135

135:                                              ; preds = %90, %134
  %.2155 = phi i32 [ %.0153202, %90 ], [ %.1154, %134 ]
  %.2151 = phi i64 [ %.0149203, %90 ], [ %.1150, %134 ]
  %.2143 = phi i32 [ %.0141204, %90 ], [ %.1142, %134 ]
  %136 = add i32 %.0159201, 1
  %.not161 = icmp sgt i32 %136, %24
  br i1 %.not161, label %._crit_edge207, label %87, !llvm.loop !16

137:                                              ; preds = %._crit_edge207
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #8
  %.not = icmp eq i64 %.0149.lcssa, 0
  br i1 %.not, label %._crit_edge219, label %.lr.ph218

._crit_edge219:                                   ; preds = %._crit_edge214.7, %137
  %138 = add i32 %3, -1
  %139 = add i32 %138, %.0153.lcssa
  %140 = srem i32 %139, %.0153.lcssa
  %141 = sub i32 %139, %140
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #8
  %142 = sext i32 %141 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #8
  call void @_ZNSaIhEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #8
  invoke void @_ZNSt6vectorIhSaIhEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %142, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %204 unwind label %211

143:                                              ; preds = %._crit_edge207
  %144 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #8
  br label %459

.lr.ph218:                                        ; preds = %137, %._crit_edge214.7
  %.0156216 = phi i64 [ %198, %._crit_edge214.7 ], [ 0, %137 ]
  %145 = call noundef nonnull align 4 dereferenceable(36) ptr @_ZNSt6vectorIZ5sieveiiiE1PSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %.0156216) #8
  %.sroa.0.0.copyload = load i32, ptr %145, align 4, !tbaa !12
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %145, i64 4
  %.sroa.4.0.copyload = load i32, ptr %.sroa.4.0..sroa_idx, align 4
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %145, i64 8
  %.sroa.5.0.copyload = load i32, ptr %.sroa.5.0..sroa_idx, align 4
  %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %145, i64 12
  %.sroa.6.0.copyload = load i32, ptr %.sroa.6.0..sroa_idx, align 4
  %.sroa.7.0..sroa_idx = getelementptr inbounds i8, ptr %145, i64 16
  %.sroa.7.0.copyload = load i32, ptr %.sroa.7.0..sroa_idx, align 4
  %.sroa.8.0..sroa_idx = getelementptr inbounds i8, ptr %145, i64 20
  %.sroa.8.0.copyload = load i32, ptr %.sroa.8.0..sroa_idx, align 4
  %.sroa.9.0..sroa_idx = getelementptr inbounds i8, ptr %145, i64 24
  %.sroa.9.0.copyload = load i32, ptr %.sroa.9.0..sroa_idx, align 4
  %.sroa.10.0..sroa_idx = getelementptr inbounds i8, ptr %145, i64 28
  %.sroa.10.0.copyload = load i32, ptr %.sroa.10.0..sroa_idx, align 4
  %.sroa.11.0..sroa_idx = getelementptr inbounds i8, ptr %145, i64 32
  %.sroa.11.0.copyload = load i32, ptr %.sroa.11.0..sroa_idx, align 4, !tbaa !14
  %146 = sext i32 %.sroa.0.0.copyload to i64
  %147 = icmp slt i32 %.sroa.4.0.copyload, %.0153.lcssa
  br i1 %147, label %.lr.ph213, label %._crit_edge214

.lr.ph213:                                        ; preds = %.lr.ph218
  %148 = sext i32 %.sroa.4.0.copyload to i64
  br label %199

._crit_edge214:                                   ; preds = %199, %.lr.ph218
  %149 = icmp slt i32 %.sroa.5.0.copyload, %.0153.lcssa
  br i1 %149, label %.lr.ph213.1, label %._crit_edge214.1

.lr.ph213.1:                                      ; preds = %._crit_edge214
  %150 = sext i32 %.sroa.5.0.copyload to i64
  br label %151

151:                                              ; preds = %151, %.lr.ph213.1
  %indvars.iv.1 = phi i64 [ %150, %.lr.ph213.1 ], [ %indvars.iv.next.1, %151 ]
  %152 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %indvars.iv.1) #8
  %153 = load i8, ptr %152, align 1, !tbaa !14
  %154 = and i8 %153, -3
  store i8 %154, ptr %152, align 1, !tbaa !14
  %indvars.iv.next.1 = add nsw i64 %indvars.iv.1, %146
  %155 = icmp slt i64 %indvars.iv.next.1, %80
  br i1 %155, label %151, label %._crit_edge214.1, !llvm.loop !17

._crit_edge214.1:                                 ; preds = %151, %._crit_edge214
  %156 = icmp slt i32 %.sroa.6.0.copyload, %.0153.lcssa
  br i1 %156, label %.lr.ph213.2, label %._crit_edge214.2

.lr.ph213.2:                                      ; preds = %._crit_edge214.1
  %157 = sext i32 %.sroa.6.0.copyload to i64
  br label %158

158:                                              ; preds = %158, %.lr.ph213.2
  %indvars.iv.2 = phi i64 [ %157, %.lr.ph213.2 ], [ %indvars.iv.next.2, %158 ]
  %159 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %indvars.iv.2) #8
  %160 = load i8, ptr %159, align 1, !tbaa !14
  %161 = and i8 %160, -5
  store i8 %161, ptr %159, align 1, !tbaa !14
  %indvars.iv.next.2 = add nsw i64 %indvars.iv.2, %146
  %162 = icmp slt i64 %indvars.iv.next.2, %80
  br i1 %162, label %158, label %._crit_edge214.2, !llvm.loop !17

._crit_edge214.2:                                 ; preds = %158, %._crit_edge214.1
  %163 = icmp slt i32 %.sroa.7.0.copyload, %.0153.lcssa
  br i1 %163, label %.lr.ph213.3, label %._crit_edge214.3

.lr.ph213.3:                                      ; preds = %._crit_edge214.2
  %164 = sext i32 %.sroa.7.0.copyload to i64
  br label %165

165:                                              ; preds = %165, %.lr.ph213.3
  %indvars.iv.3 = phi i64 [ %164, %.lr.ph213.3 ], [ %indvars.iv.next.3, %165 ]
  %166 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %indvars.iv.3) #8
  %167 = load i8, ptr %166, align 1, !tbaa !14
  %168 = and i8 %167, -9
  store i8 %168, ptr %166, align 1, !tbaa !14
  %indvars.iv.next.3 = add nsw i64 %indvars.iv.3, %146
  %169 = icmp slt i64 %indvars.iv.next.3, %80
  br i1 %169, label %165, label %._crit_edge214.3, !llvm.loop !17

._crit_edge214.3:                                 ; preds = %165, %._crit_edge214.2
  %170 = icmp slt i32 %.sroa.8.0.copyload, %.0153.lcssa
  br i1 %170, label %.lr.ph213.4, label %._crit_edge214.4

.lr.ph213.4:                                      ; preds = %._crit_edge214.3
  %171 = sext i32 %.sroa.8.0.copyload to i64
  br label %172

172:                                              ; preds = %172, %.lr.ph213.4
  %indvars.iv.4 = phi i64 [ %171, %.lr.ph213.4 ], [ %indvars.iv.next.4, %172 ]
  %173 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %indvars.iv.4) #8
  %174 = load i8, ptr %173, align 1, !tbaa !14
  %175 = and i8 %174, -17
  store i8 %175, ptr %173, align 1, !tbaa !14
  %indvars.iv.next.4 = add nsw i64 %indvars.iv.4, %146
  %176 = icmp slt i64 %indvars.iv.next.4, %80
  br i1 %176, label %172, label %._crit_edge214.4, !llvm.loop !17

._crit_edge214.4:                                 ; preds = %172, %._crit_edge214.3
  %177 = icmp slt i32 %.sroa.9.0.copyload, %.0153.lcssa
  br i1 %177, label %.lr.ph213.5, label %._crit_edge214.5

.lr.ph213.5:                                      ; preds = %._crit_edge214.4
  %178 = sext i32 %.sroa.9.0.copyload to i64
  br label %179

179:                                              ; preds = %179, %.lr.ph213.5
  %indvars.iv.5 = phi i64 [ %178, %.lr.ph213.5 ], [ %indvars.iv.next.5, %179 ]
  %180 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %indvars.iv.5) #8
  %181 = load i8, ptr %180, align 1, !tbaa !14
  %182 = and i8 %181, -33
  store i8 %182, ptr %180, align 1, !tbaa !14
  %indvars.iv.next.5 = add nsw i64 %indvars.iv.5, %146
  %183 = icmp slt i64 %indvars.iv.next.5, %80
  br i1 %183, label %179, label %._crit_edge214.5, !llvm.loop !17

._crit_edge214.5:                                 ; preds = %179, %._crit_edge214.4
  %184 = icmp slt i32 %.sroa.10.0.copyload, %.0153.lcssa
  br i1 %184, label %.lr.ph213.6, label %._crit_edge214.6

.lr.ph213.6:                                      ; preds = %._crit_edge214.5
  %185 = sext i32 %.sroa.10.0.copyload to i64
  br label %186

186:                                              ; preds = %186, %.lr.ph213.6
  %indvars.iv.6 = phi i64 [ %185, %.lr.ph213.6 ], [ %indvars.iv.next.6, %186 ]
  %187 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %indvars.iv.6) #8
  %188 = load i8, ptr %187, align 1, !tbaa !14
  %189 = and i8 %188, -65
  store i8 %189, ptr %187, align 1, !tbaa !14
  %indvars.iv.next.6 = add nsw i64 %indvars.iv.6, %146
  %190 = icmp slt i64 %indvars.iv.next.6, %80
  br i1 %190, label %186, label %._crit_edge214.6, !llvm.loop !17

._crit_edge214.6:                                 ; preds = %186, %._crit_edge214.5
  %191 = icmp slt i32 %.sroa.11.0.copyload, %.0153.lcssa
  br i1 %191, label %.lr.ph213.7, label %._crit_edge214.7

.lr.ph213.7:                                      ; preds = %._crit_edge214.6
  %192 = sext i32 %.sroa.11.0.copyload to i64
  br label %193

193:                                              ; preds = %193, %.lr.ph213.7
  %indvars.iv.7 = phi i64 [ %192, %.lr.ph213.7 ], [ %indvars.iv.next.7, %193 ]
  %194 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %indvars.iv.7) #8
  %195 = load i8, ptr %194, align 1, !tbaa !14
  %196 = and i8 %195, 127
  store i8 %196, ptr %194, align 1, !tbaa !14
  %indvars.iv.next.7 = add nsw i64 %indvars.iv.7, %146
  %197 = icmp slt i64 %indvars.iv.next.7, %80
  br i1 %197, label %193, label %._crit_edge214.7, !llvm.loop !17

._crit_edge214.7:                                 ; preds = %193, %._crit_edge214.6
  %198 = add nuw i64 %.0156216, 1
  %exitcond274.not = icmp eq i64 %198, %.0149.lcssa
  br i1 %exitcond274.not, label %._crit_edge219, label %.lr.ph218, !llvm.loop !18

199:                                              ; preds = %.lr.ph213, %199
  %indvars.iv = phi i64 [ %148, %.lr.ph213 ], [ %indvars.iv.next, %199 ]
  %200 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %indvars.iv) #8
  %201 = load i8, ptr %200, align 1, !tbaa !14
  %202 = and i8 %201, -2
  store i8 %202, ptr %200, align 1, !tbaa !14
  %indvars.iv.next = add nsw i64 %indvars.iv, %146
  %203 = icmp slt i64 %indvars.iv.next, %80
  br i1 %203, label %199, label %._crit_edge214, !llvm.loop !17

204:                                              ; preds = %._crit_edge219
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #8
  %205 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #8
  %206 = add nsw i32 %1, 29
  %207 = sdiv i32 %206, 30
  store i32 %207, ptr %21, align 4, !tbaa !12
  %208 = icmp sgt i32 %1, 0
  br i1 %208, label %.lr.ph248, label %._crit_edge249

.lr.ph248:                                        ; preds = %204
  %209 = sub nsw i64 0, %142
  br label %213

._crit_edge249:                                   ; preds = %._crit_edge242, %204
  %.3144.lcssa = phi i32 [ %.0141.lcssa, %204 ], [ %.4145.lcssa, %._crit_edge242 ]
  %.not163 = icmp sgt i32 %.3144.lcssa, %34
  br i1 %.not163, label %445, label %.preheader.preheader

.preheader.preheader:                             ; preds = %._crit_edge249
  %210 = zext i32 %.3144.lcssa to i64
  %smin = call i32 @llvm.smin.i32(i32 %.3144.lcssa, i32 0)
  br label %.preheader

211:                                              ; preds = %._crit_edge219
  %212 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #8
  br label %458

213:                                              ; preds = %.lr.ph248, %._crit_edge242
  %indvars.iv275 = phi i64 [ 0, %.lr.ph248 ], [ %indvars.iv.next276, %._crit_edge242 ]
  %.0140245 = phi ptr [ %205, %.lr.ph248 ], [ %425, %._crit_edge242 ]
  %.3144244 = phi i32 [ %.0141.lcssa, %.lr.ph248 ], [ %.4145.lcssa, %._crit_edge242 ]
  %indvars293 = trunc i64 %indvars.iv275 to i32
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #8
  %indvars.iv.next276 = add i64 %indvars.iv275, %142
  %indvars = trunc i64 %indvars.iv.next276 to i32
  store i32 %indvars, ptr %22, align 4, !tbaa !12
  %214 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %21, ptr noundef nonnull align 4 dereferenceable(4) %22)
  %215 = load i32, ptr %214, align 4, !tbaa !12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #8
  %216 = icmp sgt i32 %215, %indvars293
  br i1 %216, label %.lr.ph222.preheader, label %._crit_edge223

.lr.ph222.preheader:                              ; preds = %213
  %217 = sext i32 %215 to i64
  br label %.lr.ph222

._crit_edge223:                                   ; preds = %223, %213
  %218 = icmp eq i32 %indvars293, 0
  br i1 %218, label %227, label %230

.lr.ph222:                                        ; preds = %.lr.ph222.preheader, %223
  %indvars.iv277 = phi i64 [ %indvars.iv275, %.lr.ph222.preheader ], [ %indvars.iv.next278, %223 ]
  %219 = call ptr @_ZNSt6vectorIhSaIhEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #8
  %220 = call ptr @_ZNSt6vectorIhSaIhEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #8
  %221 = getelementptr inbounds i8, ptr %.0140245, i64 %indvars.iv277
  %222 = invoke noundef ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_ET0_T_S8_S7_(ptr %219, ptr %220, ptr noundef %221)
          to label %223 unwind label %225

223:                                              ; preds = %.lr.ph222
  %indvars.iv.next278 = add nsw i64 %indvars.iv277, %80
  %224 = icmp slt i64 %indvars.iv.next278, %217
  br i1 %224, label %.lr.ph222, label %._crit_edge223, !llvm.loop !19

225:                                              ; preds = %.lr.ph222
  %226 = landingpad { ptr, i32 }
          cleanup
  br label %457

227:                                              ; preds = %._crit_edge223
  %228 = load i8, ptr %.0140245, align 1, !tbaa !14
  %229 = and i8 %228, -2
  store i8 %229, ptr %.0140245, align 1, !tbaa !14
  br label %230

230:                                              ; preds = %227, %._crit_edge223
  %231 = call noundef i64 @_ZNKSt6vectorIZ5sieveiiiE1PSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  %232 = icmp ult i64 %.0149.lcssa, %231
  br i1 %232, label %.lr.ph232.preheader, label %.preheader179

.lr.ph232.preheader:                              ; preds = %230
  %233 = sext i32 %215 to i64
  br label %.lr.ph232

.preheader179:                                    ; preds = %._crit_edge227.7, %230
  br i1 %216, label %.lr.ph241.preheader, label %._crit_edge242

.lr.ph241.preheader:                              ; preds = %.preheader179
  %234 = sext i32 %215 to i64
  br label %.lr.ph241

.lr.ph232:                                        ; preds = %.lr.ph232.preheader, %._crit_edge227.7
  %.0136230 = phi i64 [ %422, %._crit_edge227.7 ], [ %.0149.lcssa, %.lr.ph232.preheader ]
  %235 = call noundef nonnull align 4 dereferenceable(36) ptr @_ZNSt6vectorIZ5sieveiiiE1PSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %.0136230) #8
  %236 = load i32, ptr %235, align 4, !tbaa !20
  %237 = getelementptr inbounds i8, ptr %235, i64 4
  %238 = sext i32 %236 to i64
  %239 = load i32, ptr %237, align 4, !tbaa !12
  %240 = icmp slt i32 %239, %215
  br i1 %240, label %.lr.ph226, label %._crit_edge227

.lr.ph226:                                        ; preds = %.lr.ph232
  %241 = sext i32 %239 to i64
  %242 = add nsw i64 %241, %238
  %smax430 = call i64 @llvm.smax.i64(i64 %242, i64 %233)
  %243 = icmp slt i64 %242, %233
  %umin431.neg = sext i1 %243 to i64
  %244 = select i1 %243, i64 2, i64 1
  %245 = add i64 %smax430, %umin431.neg
  %246 = sub i64 %245, %242
  %247 = udiv i64 %246, %238
  %248 = add i64 %244, %247
  %min.iters.check434 = icmp ugt i64 %248, 31
  %ident.check429.not = icmp eq i32 %236, 1
  %or.cond = select i1 %min.iters.check434, i1 %ident.check429.not, i1 false
  br i1 %or.cond, label %vector.ph435, label %scalar.ph433.preheader

vector.ph435:                                     ; preds = %.lr.ph226
  %n.vec437 = and i64 %248, -32
  %249 = mul nuw i64 %n.vec437, %238
  %ind.end438 = add i64 %249, %241
  br label %vector.body440

vector.body440:                                   ; preds = %vector.body440, %vector.ph435
  %index441 = phi i64 [ 0, %vector.ph435 ], [ %index.next445, %vector.body440 ]
  %250 = mul nuw i64 %index441, %238
  %offset.idx442 = add i64 %250, %241
  %251 = getelementptr inbounds i8, ptr %.0140245, i64 %offset.idx442
  %252 = getelementptr inbounds i8, ptr %251, i64 16
  %wide.load443 = load <16 x i8>, ptr %251, align 1, !tbaa !14
  %wide.load444 = load <16 x i8>, ptr %252, align 1, !tbaa !14
  %253 = and <16 x i8> %wide.load443, <i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2>
  %254 = and <16 x i8> %wide.load444, <i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2>
  store <16 x i8> %253, ptr %251, align 1, !tbaa !14
  store <16 x i8> %254, ptr %252, align 1, !tbaa !14
  %index.next445 = add nuw i64 %index441, 32
  %255 = icmp eq i64 %index.next445, %n.vec437
  br i1 %255, label %middle.block432, label %vector.body440, !llvm.loop !22

middle.block432:                                  ; preds = %vector.body440
  %cmp.n446 = icmp eq i64 %248, %n.vec437
  br i1 %cmp.n446, label %._crit_edge227.loopexit, label %scalar.ph433.preheader

scalar.ph433.preheader:                           ; preds = %middle.block432, %.lr.ph226
  %indvars.iv280.ph = phi i64 [ %241, %.lr.ph226 ], [ %ind.end438, %middle.block432 ]
  br label %scalar.ph433

scalar.ph433:                                     ; preds = %scalar.ph433.preheader, %scalar.ph433
  %indvars.iv280 = phi i64 [ %indvars.iv.next281, %scalar.ph433 ], [ %indvars.iv280.ph, %scalar.ph433.preheader ]
  %256 = getelementptr inbounds i8, ptr %.0140245, i64 %indvars.iv280
  %257 = load i8, ptr %256, align 1, !tbaa !14
  %258 = and i8 %257, -2
  store i8 %258, ptr %256, align 1, !tbaa !14
  %indvars.iv.next281 = add nsw i64 %indvars.iv280, %238
  %259 = icmp slt i64 %indvars.iv.next281, %233
  br i1 %259, label %scalar.ph433, label %._crit_edge227.loopexit, !llvm.loop !25

._crit_edge227.loopexit:                          ; preds = %scalar.ph433, %middle.block432
  %indvars.iv.next281.lcssa = phi i64 [ %ind.end438, %middle.block432 ], [ %indvars.iv.next281, %scalar.ph433 ]
  %260 = trunc nsw i64 %indvars.iv.next281.lcssa to i32
  br label %._crit_edge227

._crit_edge227:                                   ; preds = %._crit_edge227.loopexit, %.lr.ph232
  %.0123.lcssa = phi i32 [ %239, %.lr.ph232 ], [ %260, %._crit_edge227.loopexit ]
  store i32 %.0123.lcssa, ptr %237, align 4, !tbaa !12
  %261 = getelementptr inbounds i8, ptr %235, i64 8
  %262 = load i32, ptr %261, align 4, !tbaa !12
  %263 = icmp slt i32 %262, %215
  br i1 %263, label %.lr.ph226.1, label %._crit_edge227.1

.lr.ph226.1:                                      ; preds = %._crit_edge227
  %264 = sext i32 %262 to i64
  %265 = add nsw i64 %264, %238
  %smax411 = call i64 @llvm.smax.i64(i64 %265, i64 %233)
  %266 = icmp slt i64 %265, %233
  %umin412.neg = sext i1 %266 to i64
  %267 = select i1 %266, i64 2, i64 1
  %268 = add i64 %smax411, %umin412.neg
  %269 = sub i64 %268, %265
  %270 = udiv i64 %269, %238
  %271 = add i64 %267, %270
  %min.iters.check415 = icmp ugt i64 %271, 31
  %ident.check410.not = icmp eq i32 %236, 1
  %or.cond447 = select i1 %min.iters.check415, i1 %ident.check410.not, i1 false
  br i1 %or.cond447, label %vector.ph416, label %scalar.ph414.preheader

vector.ph416:                                     ; preds = %.lr.ph226.1
  %n.vec418 = and i64 %271, -32
  %272 = mul nuw i64 %n.vec418, %238
  %ind.end419 = add i64 %272, %264
  br label %vector.body421

vector.body421:                                   ; preds = %vector.body421, %vector.ph416
  %index422 = phi i64 [ 0, %vector.ph416 ], [ %index.next426, %vector.body421 ]
  %273 = mul nuw i64 %index422, %238
  %offset.idx423 = add i64 %273, %264
  %274 = getelementptr inbounds i8, ptr %.0140245, i64 %offset.idx423
  %275 = getelementptr inbounds i8, ptr %274, i64 16
  %wide.load424 = load <16 x i8>, ptr %274, align 1, !tbaa !14
  %wide.load425 = load <16 x i8>, ptr %275, align 1, !tbaa !14
  %276 = and <16 x i8> %wide.load424, <i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3>
  %277 = and <16 x i8> %wide.load425, <i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3>
  store <16 x i8> %276, ptr %274, align 1, !tbaa !14
  store <16 x i8> %277, ptr %275, align 1, !tbaa !14
  %index.next426 = add nuw i64 %index422, 32
  %278 = icmp eq i64 %index.next426, %n.vec418
  br i1 %278, label %middle.block413, label %vector.body421, !llvm.loop !26

middle.block413:                                  ; preds = %vector.body421
  %cmp.n427 = icmp eq i64 %271, %n.vec418
  br i1 %cmp.n427, label %._crit_edge227.loopexit.1, label %scalar.ph414.preheader

scalar.ph414.preheader:                           ; preds = %middle.block413, %.lr.ph226.1
  %indvars.iv280.1.ph = phi i64 [ %264, %.lr.ph226.1 ], [ %ind.end419, %middle.block413 ]
  br label %scalar.ph414

scalar.ph414:                                     ; preds = %scalar.ph414.preheader, %scalar.ph414
  %indvars.iv280.1 = phi i64 [ %indvars.iv.next281.1, %scalar.ph414 ], [ %indvars.iv280.1.ph, %scalar.ph414.preheader ]
  %279 = getelementptr inbounds i8, ptr %.0140245, i64 %indvars.iv280.1
  %280 = load i8, ptr %279, align 1, !tbaa !14
  %281 = and i8 %280, -3
  store i8 %281, ptr %279, align 1, !tbaa !14
  %indvars.iv.next281.1 = add nsw i64 %indvars.iv280.1, %238
  %282 = icmp slt i64 %indvars.iv.next281.1, %233
  br i1 %282, label %scalar.ph414, label %._crit_edge227.loopexit.1, !llvm.loop !27

._crit_edge227.loopexit.1:                        ; preds = %scalar.ph414, %middle.block413
  %indvars.iv.next281.1.lcssa = phi i64 [ %ind.end419, %middle.block413 ], [ %indvars.iv.next281.1, %scalar.ph414 ]
  %283 = trunc nsw i64 %indvars.iv.next281.1.lcssa to i32
  br label %._crit_edge227.1

._crit_edge227.1:                                 ; preds = %._crit_edge227.loopexit.1, %._crit_edge227
  %.0123.lcssa.1 = phi i32 [ %262, %._crit_edge227 ], [ %283, %._crit_edge227.loopexit.1 ]
  store i32 %.0123.lcssa.1, ptr %261, align 4, !tbaa !12
  %284 = getelementptr inbounds i8, ptr %235, i64 12
  %285 = load i32, ptr %284, align 4, !tbaa !12
  %286 = icmp slt i32 %285, %215
  br i1 %286, label %.lr.ph226.2, label %._crit_edge227.2

.lr.ph226.2:                                      ; preds = %._crit_edge227.1
  %287 = sext i32 %285 to i64
  %288 = add nsw i64 %287, %238
  %smax392 = call i64 @llvm.smax.i64(i64 %288, i64 %233)
  %289 = icmp slt i64 %288, %233
  %umin393.neg = sext i1 %289 to i64
  %290 = select i1 %289, i64 2, i64 1
  %291 = add i64 %smax392, %umin393.neg
  %292 = sub i64 %291, %288
  %293 = udiv i64 %292, %238
  %294 = add i64 %290, %293
  %min.iters.check396 = icmp ugt i64 %294, 31
  %ident.check391.not = icmp eq i32 %236, 1
  %or.cond448 = select i1 %min.iters.check396, i1 %ident.check391.not, i1 false
  br i1 %or.cond448, label %vector.ph397, label %scalar.ph395.preheader

vector.ph397:                                     ; preds = %.lr.ph226.2
  %n.vec399 = and i64 %294, -32
  %295 = mul nuw i64 %n.vec399, %238
  %ind.end400 = add i64 %295, %287
  br label %vector.body402

vector.body402:                                   ; preds = %vector.body402, %vector.ph397
  %index403 = phi i64 [ 0, %vector.ph397 ], [ %index.next407, %vector.body402 ]
  %296 = mul nuw i64 %index403, %238
  %offset.idx404 = add i64 %296, %287
  %297 = getelementptr inbounds i8, ptr %.0140245, i64 %offset.idx404
  %298 = getelementptr inbounds i8, ptr %297, i64 16
  %wide.load405 = load <16 x i8>, ptr %297, align 1, !tbaa !14
  %wide.load406 = load <16 x i8>, ptr %298, align 1, !tbaa !14
  %299 = and <16 x i8> %wide.load405, <i8 -5, i8 -5, i8 -5, i8 -5, i8 -5, i8 -5, i8 -5, i8 -5, i8 -5, i8 -5, i8 -5, i8 -5, i8 -5, i8 -5, i8 -5, i8 -5>
  %300 = and <16 x i8> %wide.load406, <i8 -5, i8 -5, i8 -5, i8 -5, i8 -5, i8 -5, i8 -5, i8 -5, i8 -5, i8 -5, i8 -5, i8 -5, i8 -5, i8 -5, i8 -5, i8 -5>
  store <16 x i8> %299, ptr %297, align 1, !tbaa !14
  store <16 x i8> %300, ptr %298, align 1, !tbaa !14
  %index.next407 = add nuw i64 %index403, 32
  %301 = icmp eq i64 %index.next407, %n.vec399
  br i1 %301, label %middle.block394, label %vector.body402, !llvm.loop !28

middle.block394:                                  ; preds = %vector.body402
  %cmp.n408 = icmp eq i64 %294, %n.vec399
  br i1 %cmp.n408, label %._crit_edge227.loopexit.2, label %scalar.ph395.preheader

scalar.ph395.preheader:                           ; preds = %middle.block394, %.lr.ph226.2
  %indvars.iv280.2.ph = phi i64 [ %287, %.lr.ph226.2 ], [ %ind.end400, %middle.block394 ]
  br label %scalar.ph395

scalar.ph395:                                     ; preds = %scalar.ph395.preheader, %scalar.ph395
  %indvars.iv280.2 = phi i64 [ %indvars.iv.next281.2, %scalar.ph395 ], [ %indvars.iv280.2.ph, %scalar.ph395.preheader ]
  %302 = getelementptr inbounds i8, ptr %.0140245, i64 %indvars.iv280.2
  %303 = load i8, ptr %302, align 1, !tbaa !14
  %304 = and i8 %303, -5
  store i8 %304, ptr %302, align 1, !tbaa !14
  %indvars.iv.next281.2 = add nsw i64 %indvars.iv280.2, %238
  %305 = icmp slt i64 %indvars.iv.next281.2, %233
  br i1 %305, label %scalar.ph395, label %._crit_edge227.loopexit.2, !llvm.loop !29

._crit_edge227.loopexit.2:                        ; preds = %scalar.ph395, %middle.block394
  %indvars.iv.next281.2.lcssa = phi i64 [ %ind.end400, %middle.block394 ], [ %indvars.iv.next281.2, %scalar.ph395 ]
  %306 = trunc nsw i64 %indvars.iv.next281.2.lcssa to i32
  br label %._crit_edge227.2

._crit_edge227.2:                                 ; preds = %._crit_edge227.loopexit.2, %._crit_edge227.1
  %.0123.lcssa.2 = phi i32 [ %285, %._crit_edge227.1 ], [ %306, %._crit_edge227.loopexit.2 ]
  store i32 %.0123.lcssa.2, ptr %284, align 4, !tbaa !12
  %307 = getelementptr inbounds i8, ptr %235, i64 16
  %308 = load i32, ptr %307, align 4, !tbaa !12
  %309 = icmp slt i32 %308, %215
  br i1 %309, label %.lr.ph226.3, label %._crit_edge227.3

.lr.ph226.3:                                      ; preds = %._crit_edge227.2
  %310 = sext i32 %308 to i64
  %311 = add nsw i64 %310, %238
  %smax373 = call i64 @llvm.smax.i64(i64 %311, i64 %233)
  %312 = icmp slt i64 %311, %233
  %umin374.neg = sext i1 %312 to i64
  %313 = select i1 %312, i64 2, i64 1
  %314 = add i64 %smax373, %umin374.neg
  %315 = sub i64 %314, %311
  %316 = udiv i64 %315, %238
  %317 = add i64 %313, %316
  %min.iters.check377 = icmp ugt i64 %317, 31
  %ident.check372.not = icmp eq i32 %236, 1
  %or.cond449 = select i1 %min.iters.check377, i1 %ident.check372.not, i1 false
  br i1 %or.cond449, label %vector.ph378, label %scalar.ph376.preheader

vector.ph378:                                     ; preds = %.lr.ph226.3
  %n.vec380 = and i64 %317, -32
  %318 = mul nuw i64 %n.vec380, %238
  %ind.end381 = add i64 %318, %310
  br label %vector.body383

vector.body383:                                   ; preds = %vector.body383, %vector.ph378
  %index384 = phi i64 [ 0, %vector.ph378 ], [ %index.next388, %vector.body383 ]
  %319 = mul nuw i64 %index384, %238
  %offset.idx385 = add i64 %319, %310
  %320 = getelementptr inbounds i8, ptr %.0140245, i64 %offset.idx385
  %321 = getelementptr inbounds i8, ptr %320, i64 16
  %wide.load386 = load <16 x i8>, ptr %320, align 1, !tbaa !14
  %wide.load387 = load <16 x i8>, ptr %321, align 1, !tbaa !14
  %322 = and <16 x i8> %wide.load386, <i8 -9, i8 -9, i8 -9, i8 -9, i8 -9, i8 -9, i8 -9, i8 -9, i8 -9, i8 -9, i8 -9, i8 -9, i8 -9, i8 -9, i8 -9, i8 -9>
  %323 = and <16 x i8> %wide.load387, <i8 -9, i8 -9, i8 -9, i8 -9, i8 -9, i8 -9, i8 -9, i8 -9, i8 -9, i8 -9, i8 -9, i8 -9, i8 -9, i8 -9, i8 -9, i8 -9>
  store <16 x i8> %322, ptr %320, align 1, !tbaa !14
  store <16 x i8> %323, ptr %321, align 1, !tbaa !14
  %index.next388 = add nuw i64 %index384, 32
  %324 = icmp eq i64 %index.next388, %n.vec380
  br i1 %324, label %middle.block375, label %vector.body383, !llvm.loop !30

middle.block375:                                  ; preds = %vector.body383
  %cmp.n389 = icmp eq i64 %317, %n.vec380
  br i1 %cmp.n389, label %._crit_edge227.loopexit.3, label %scalar.ph376.preheader

scalar.ph376.preheader:                           ; preds = %middle.block375, %.lr.ph226.3
  %indvars.iv280.3.ph = phi i64 [ %310, %.lr.ph226.3 ], [ %ind.end381, %middle.block375 ]
  br label %scalar.ph376

scalar.ph376:                                     ; preds = %scalar.ph376.preheader, %scalar.ph376
  %indvars.iv280.3 = phi i64 [ %indvars.iv.next281.3, %scalar.ph376 ], [ %indvars.iv280.3.ph, %scalar.ph376.preheader ]
  %325 = getelementptr inbounds i8, ptr %.0140245, i64 %indvars.iv280.3
  %326 = load i8, ptr %325, align 1, !tbaa !14
  %327 = and i8 %326, -9
  store i8 %327, ptr %325, align 1, !tbaa !14
  %indvars.iv.next281.3 = add nsw i64 %indvars.iv280.3, %238
  %328 = icmp slt i64 %indvars.iv.next281.3, %233
  br i1 %328, label %scalar.ph376, label %._crit_edge227.loopexit.3, !llvm.loop !31

._crit_edge227.loopexit.3:                        ; preds = %scalar.ph376, %middle.block375
  %indvars.iv.next281.3.lcssa = phi i64 [ %ind.end381, %middle.block375 ], [ %indvars.iv.next281.3, %scalar.ph376 ]
  %329 = trunc nsw i64 %indvars.iv.next281.3.lcssa to i32
  br label %._crit_edge227.3

._crit_edge227.3:                                 ; preds = %._crit_edge227.loopexit.3, %._crit_edge227.2
  %.0123.lcssa.3 = phi i32 [ %308, %._crit_edge227.2 ], [ %329, %._crit_edge227.loopexit.3 ]
  store i32 %.0123.lcssa.3, ptr %307, align 4, !tbaa !12
  %330 = getelementptr inbounds i8, ptr %235, i64 20
  %331 = load i32, ptr %330, align 4, !tbaa !12
  %332 = icmp slt i32 %331, %215
  br i1 %332, label %.lr.ph226.4, label %._crit_edge227.4

.lr.ph226.4:                                      ; preds = %._crit_edge227.3
  %333 = sext i32 %331 to i64
  %334 = add nsw i64 %333, %238
  %smax354 = call i64 @llvm.smax.i64(i64 %334, i64 %233)
  %335 = icmp slt i64 %334, %233
  %umin355.neg = sext i1 %335 to i64
  %336 = select i1 %335, i64 2, i64 1
  %337 = add i64 %smax354, %umin355.neg
  %338 = sub i64 %337, %334
  %339 = udiv i64 %338, %238
  %340 = add i64 %336, %339
  %min.iters.check358 = icmp ugt i64 %340, 31
  %ident.check353.not = icmp eq i32 %236, 1
  %or.cond450 = select i1 %min.iters.check358, i1 %ident.check353.not, i1 false
  br i1 %or.cond450, label %vector.ph359, label %scalar.ph357.preheader

vector.ph359:                                     ; preds = %.lr.ph226.4
  %n.vec361 = and i64 %340, -32
  %341 = mul nuw i64 %n.vec361, %238
  %ind.end362 = add i64 %341, %333
  br label %vector.body364

vector.body364:                                   ; preds = %vector.body364, %vector.ph359
  %index365 = phi i64 [ 0, %vector.ph359 ], [ %index.next369, %vector.body364 ]
  %342 = mul nuw i64 %index365, %238
  %offset.idx366 = add i64 %342, %333
  %343 = getelementptr inbounds i8, ptr %.0140245, i64 %offset.idx366
  %344 = getelementptr inbounds i8, ptr %343, i64 16
  %wide.load367 = load <16 x i8>, ptr %343, align 1, !tbaa !14
  %wide.load368 = load <16 x i8>, ptr %344, align 1, !tbaa !14
  %345 = and <16 x i8> %wide.load367, <i8 -17, i8 -17, i8 -17, i8 -17, i8 -17, i8 -17, i8 -17, i8 -17, i8 -17, i8 -17, i8 -17, i8 -17, i8 -17, i8 -17, i8 -17, i8 -17>
  %346 = and <16 x i8> %wide.load368, <i8 -17, i8 -17, i8 -17, i8 -17, i8 -17, i8 -17, i8 -17, i8 -17, i8 -17, i8 -17, i8 -17, i8 -17, i8 -17, i8 -17, i8 -17, i8 -17>
  store <16 x i8> %345, ptr %343, align 1, !tbaa !14
  store <16 x i8> %346, ptr %344, align 1, !tbaa !14
  %index.next369 = add nuw i64 %index365, 32
  %347 = icmp eq i64 %index.next369, %n.vec361
  br i1 %347, label %middle.block356, label %vector.body364, !llvm.loop !32

middle.block356:                                  ; preds = %vector.body364
  %cmp.n370 = icmp eq i64 %340, %n.vec361
  br i1 %cmp.n370, label %._crit_edge227.loopexit.4, label %scalar.ph357.preheader

scalar.ph357.preheader:                           ; preds = %middle.block356, %.lr.ph226.4
  %indvars.iv280.4.ph = phi i64 [ %333, %.lr.ph226.4 ], [ %ind.end362, %middle.block356 ]
  br label %scalar.ph357

scalar.ph357:                                     ; preds = %scalar.ph357.preheader, %scalar.ph357
  %indvars.iv280.4 = phi i64 [ %indvars.iv.next281.4, %scalar.ph357 ], [ %indvars.iv280.4.ph, %scalar.ph357.preheader ]
  %348 = getelementptr inbounds i8, ptr %.0140245, i64 %indvars.iv280.4
  %349 = load i8, ptr %348, align 1, !tbaa !14
  %350 = and i8 %349, -17
  store i8 %350, ptr %348, align 1, !tbaa !14
  %indvars.iv.next281.4 = add nsw i64 %indvars.iv280.4, %238
  %351 = icmp slt i64 %indvars.iv.next281.4, %233
  br i1 %351, label %scalar.ph357, label %._crit_edge227.loopexit.4, !llvm.loop !33

._crit_edge227.loopexit.4:                        ; preds = %scalar.ph357, %middle.block356
  %indvars.iv.next281.4.lcssa = phi i64 [ %ind.end362, %middle.block356 ], [ %indvars.iv.next281.4, %scalar.ph357 ]
  %352 = trunc nsw i64 %indvars.iv.next281.4.lcssa to i32
  br label %._crit_edge227.4

._crit_edge227.4:                                 ; preds = %._crit_edge227.loopexit.4, %._crit_edge227.3
  %.0123.lcssa.4 = phi i32 [ %331, %._crit_edge227.3 ], [ %352, %._crit_edge227.loopexit.4 ]
  store i32 %.0123.lcssa.4, ptr %330, align 4, !tbaa !12
  %353 = getelementptr inbounds i8, ptr %235, i64 24
  %354 = load i32, ptr %353, align 4, !tbaa !12
  %355 = icmp slt i32 %354, %215
  br i1 %355, label %.lr.ph226.5, label %._crit_edge227.5

.lr.ph226.5:                                      ; preds = %._crit_edge227.4
  %356 = sext i32 %354 to i64
  %357 = add nsw i64 %356, %238
  %smax335 = call i64 @llvm.smax.i64(i64 %357, i64 %233)
  %358 = icmp slt i64 %357, %233
  %umin336.neg = sext i1 %358 to i64
  %359 = select i1 %358, i64 2, i64 1
  %360 = add i64 %smax335, %umin336.neg
  %361 = sub i64 %360, %357
  %362 = udiv i64 %361, %238
  %363 = add i64 %359, %362
  %min.iters.check339 = icmp ugt i64 %363, 31
  %ident.check334.not = icmp eq i32 %236, 1
  %or.cond451 = select i1 %min.iters.check339, i1 %ident.check334.not, i1 false
  br i1 %or.cond451, label %vector.ph340, label %scalar.ph338.preheader

vector.ph340:                                     ; preds = %.lr.ph226.5
  %n.vec342 = and i64 %363, -32
  %364 = mul nuw i64 %n.vec342, %238
  %ind.end343 = add i64 %364, %356
  br label %vector.body345

vector.body345:                                   ; preds = %vector.body345, %vector.ph340
  %index346 = phi i64 [ 0, %vector.ph340 ], [ %index.next350, %vector.body345 ]
  %365 = mul nuw i64 %index346, %238
  %offset.idx347 = add i64 %365, %356
  %366 = getelementptr inbounds i8, ptr %.0140245, i64 %offset.idx347
  %367 = getelementptr inbounds i8, ptr %366, i64 16
  %wide.load348 = load <16 x i8>, ptr %366, align 1, !tbaa !14
  %wide.load349 = load <16 x i8>, ptr %367, align 1, !tbaa !14
  %368 = and <16 x i8> %wide.load348, <i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33>
  %369 = and <16 x i8> %wide.load349, <i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33>
  store <16 x i8> %368, ptr %366, align 1, !tbaa !14
  store <16 x i8> %369, ptr %367, align 1, !tbaa !14
  %index.next350 = add nuw i64 %index346, 32
  %370 = icmp eq i64 %index.next350, %n.vec342
  br i1 %370, label %middle.block337, label %vector.body345, !llvm.loop !34

middle.block337:                                  ; preds = %vector.body345
  %cmp.n351 = icmp eq i64 %363, %n.vec342
  br i1 %cmp.n351, label %._crit_edge227.loopexit.5, label %scalar.ph338.preheader

scalar.ph338.preheader:                           ; preds = %middle.block337, %.lr.ph226.5
  %indvars.iv280.5.ph = phi i64 [ %356, %.lr.ph226.5 ], [ %ind.end343, %middle.block337 ]
  br label %scalar.ph338

scalar.ph338:                                     ; preds = %scalar.ph338.preheader, %scalar.ph338
  %indvars.iv280.5 = phi i64 [ %indvars.iv.next281.5, %scalar.ph338 ], [ %indvars.iv280.5.ph, %scalar.ph338.preheader ]
  %371 = getelementptr inbounds i8, ptr %.0140245, i64 %indvars.iv280.5
  %372 = load i8, ptr %371, align 1, !tbaa !14
  %373 = and i8 %372, -33
  store i8 %373, ptr %371, align 1, !tbaa !14
  %indvars.iv.next281.5 = add nsw i64 %indvars.iv280.5, %238
  %374 = icmp slt i64 %indvars.iv.next281.5, %233
  br i1 %374, label %scalar.ph338, label %._crit_edge227.loopexit.5, !llvm.loop !35

._crit_edge227.loopexit.5:                        ; preds = %scalar.ph338, %middle.block337
  %indvars.iv.next281.5.lcssa = phi i64 [ %ind.end343, %middle.block337 ], [ %indvars.iv.next281.5, %scalar.ph338 ]
  %375 = trunc nsw i64 %indvars.iv.next281.5.lcssa to i32
  br label %._crit_edge227.5

._crit_edge227.5:                                 ; preds = %._crit_edge227.loopexit.5, %._crit_edge227.4
  %.0123.lcssa.5 = phi i32 [ %354, %._crit_edge227.4 ], [ %375, %._crit_edge227.loopexit.5 ]
  store i32 %.0123.lcssa.5, ptr %353, align 4, !tbaa !12
  %376 = getelementptr inbounds i8, ptr %235, i64 28
  %377 = load i32, ptr %376, align 4, !tbaa !12
  %378 = icmp slt i32 %377, %215
  br i1 %378, label %.lr.ph226.6, label %._crit_edge227.6

.lr.ph226.6:                                      ; preds = %._crit_edge227.5
  %379 = sext i32 %377 to i64
  %380 = add nsw i64 %379, %238
  %smax316 = call i64 @llvm.smax.i64(i64 %380, i64 %233)
  %381 = icmp slt i64 %380, %233
  %umin317.neg = sext i1 %381 to i64
  %382 = select i1 %381, i64 2, i64 1
  %383 = add i64 %smax316, %umin317.neg
  %384 = sub i64 %383, %380
  %385 = udiv i64 %384, %238
  %386 = add i64 %382, %385
  %min.iters.check320 = icmp ugt i64 %386, 31
  %ident.check315.not = icmp eq i32 %236, 1
  %or.cond452 = select i1 %min.iters.check320, i1 %ident.check315.not, i1 false
  br i1 %or.cond452, label %vector.ph321, label %scalar.ph319.preheader

vector.ph321:                                     ; preds = %.lr.ph226.6
  %n.vec323 = and i64 %386, -32
  %387 = mul nuw i64 %n.vec323, %238
  %ind.end324 = add i64 %387, %379
  br label %vector.body326

vector.body326:                                   ; preds = %vector.body326, %vector.ph321
  %index327 = phi i64 [ 0, %vector.ph321 ], [ %index.next331, %vector.body326 ]
  %388 = mul nuw i64 %index327, %238
  %offset.idx328 = add i64 %388, %379
  %389 = getelementptr inbounds i8, ptr %.0140245, i64 %offset.idx328
  %390 = getelementptr inbounds i8, ptr %389, i64 16
  %wide.load329 = load <16 x i8>, ptr %389, align 1, !tbaa !14
  %wide.load330 = load <16 x i8>, ptr %390, align 1, !tbaa !14
  %391 = and <16 x i8> %wide.load329, <i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65>
  %392 = and <16 x i8> %wide.load330, <i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65>
  store <16 x i8> %391, ptr %389, align 1, !tbaa !14
  store <16 x i8> %392, ptr %390, align 1, !tbaa !14
  %index.next331 = add nuw i64 %index327, 32
  %393 = icmp eq i64 %index.next331, %n.vec323
  br i1 %393, label %middle.block318, label %vector.body326, !llvm.loop !36

middle.block318:                                  ; preds = %vector.body326
  %cmp.n332 = icmp eq i64 %386, %n.vec323
  br i1 %cmp.n332, label %._crit_edge227.loopexit.6, label %scalar.ph319.preheader

scalar.ph319.preheader:                           ; preds = %middle.block318, %.lr.ph226.6
  %indvars.iv280.6.ph = phi i64 [ %379, %.lr.ph226.6 ], [ %ind.end324, %middle.block318 ]
  br label %scalar.ph319

scalar.ph319:                                     ; preds = %scalar.ph319.preheader, %scalar.ph319
  %indvars.iv280.6 = phi i64 [ %indvars.iv.next281.6, %scalar.ph319 ], [ %indvars.iv280.6.ph, %scalar.ph319.preheader ]
  %394 = getelementptr inbounds i8, ptr %.0140245, i64 %indvars.iv280.6
  %395 = load i8, ptr %394, align 1, !tbaa !14
  %396 = and i8 %395, -65
  store i8 %396, ptr %394, align 1, !tbaa !14
  %indvars.iv.next281.6 = add nsw i64 %indvars.iv280.6, %238
  %397 = icmp slt i64 %indvars.iv.next281.6, %233
  br i1 %397, label %scalar.ph319, label %._crit_edge227.loopexit.6, !llvm.loop !37

._crit_edge227.loopexit.6:                        ; preds = %scalar.ph319, %middle.block318
  %indvars.iv.next281.6.lcssa = phi i64 [ %ind.end324, %middle.block318 ], [ %indvars.iv.next281.6, %scalar.ph319 ]
  %398 = trunc nsw i64 %indvars.iv.next281.6.lcssa to i32
  br label %._crit_edge227.6

._crit_edge227.6:                                 ; preds = %._crit_edge227.loopexit.6, %._crit_edge227.5
  %.0123.lcssa.6 = phi i32 [ %377, %._crit_edge227.5 ], [ %398, %._crit_edge227.loopexit.6 ]
  store i32 %.0123.lcssa.6, ptr %376, align 4, !tbaa !12
  %399 = getelementptr inbounds i8, ptr %235, i64 32
  %400 = load i32, ptr %399, align 4, !tbaa !12
  %401 = icmp slt i32 %400, %215
  br i1 %401, label %.lr.ph226.7, label %._crit_edge227.7

.lr.ph226.7:                                      ; preds = %._crit_edge227.6
  %402 = sext i32 %400 to i64
  %403 = add nsw i64 %402, %238
  %smax = call i64 @llvm.smax.i64(i64 %403, i64 %233)
  %404 = icmp slt i64 %403, %233
  %umin.neg = sext i1 %404 to i64
  %405 = select i1 %404, i64 2, i64 1
  %406 = add i64 %smax, %umin.neg
  %407 = sub i64 %406, %403
  %408 = udiv i64 %407, %238
  %409 = add i64 %405, %408
  %min.iters.check = icmp ugt i64 %409, 31
  %ident.check.not = icmp eq i32 %236, 1
  %or.cond453 = select i1 %min.iters.check, i1 %ident.check.not, i1 false
  br i1 %or.cond453, label %vector.ph, label %scalar.ph.preheader

vector.ph:                                        ; preds = %.lr.ph226.7
  %n.vec = and i64 %409, -32
  %410 = mul nuw i64 %n.vec, %238
  %ind.end = add i64 %410, %402
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %411 = mul nuw i64 %index, %238
  %offset.idx = add i64 %411, %402
  %412 = getelementptr inbounds i8, ptr %.0140245, i64 %offset.idx
  %413 = getelementptr inbounds i8, ptr %412, i64 16
  %wide.load = load <16 x i8>, ptr %412, align 1, !tbaa !14
  %wide.load313 = load <16 x i8>, ptr %413, align 1, !tbaa !14
  %414 = and <16 x i8> %wide.load, <i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127>
  %415 = and <16 x i8> %wide.load313, <i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127>
  store <16 x i8> %414, ptr %412, align 1, !tbaa !14
  store <16 x i8> %415, ptr %413, align 1, !tbaa !14
  %index.next = add nuw i64 %index, 32
  %416 = icmp eq i64 %index.next, %n.vec
  br i1 %416, label %middle.block, label %vector.body, !llvm.loop !38

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %409, %n.vec
  br i1 %cmp.n, label %._crit_edge227.loopexit.7, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %.lr.ph226.7
  %indvars.iv280.7.ph = phi i64 [ %402, %.lr.ph226.7 ], [ %ind.end, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv280.7 = phi i64 [ %indvars.iv.next281.7, %scalar.ph ], [ %indvars.iv280.7.ph, %scalar.ph.preheader ]
  %417 = getelementptr inbounds i8, ptr %.0140245, i64 %indvars.iv280.7
  %418 = load i8, ptr %417, align 1, !tbaa !14
  %419 = and i8 %418, 127
  store i8 %419, ptr %417, align 1, !tbaa !14
  %indvars.iv.next281.7 = add nsw i64 %indvars.iv280.7, %238
  %420 = icmp slt i64 %indvars.iv.next281.7, %233
  br i1 %420, label %scalar.ph, label %._crit_edge227.loopexit.7, !llvm.loop !39

._crit_edge227.loopexit.7:                        ; preds = %scalar.ph, %middle.block
  %indvars.iv.next281.7.lcssa = phi i64 [ %ind.end, %middle.block ], [ %indvars.iv.next281.7, %scalar.ph ]
  %421 = trunc nsw i64 %indvars.iv.next281.7.lcssa to i32
  br label %._crit_edge227.7

._crit_edge227.7:                                 ; preds = %._crit_edge227.loopexit.7, %._crit_edge227.6
  %.0123.lcssa.7 = phi i32 [ %400, %._crit_edge227.6 ], [ %421, %._crit_edge227.loopexit.7 ]
  store i32 %.0123.lcssa.7, ptr %399, align 4, !tbaa !12
  %422 = add nuw i64 %.0136230, 1
  %423 = call noundef i64 @_ZNKSt6vectorIZ5sieveiiiE1PSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  %424 = icmp ult i64 %422, %423
  br i1 %424, label %.lr.ph232, label %.preheader179, !llvm.loop !40

._crit_edge242:                                   ; preds = %._crit_edge237, %.preheader179
  %.4145.lcssa = phi i32 [ %.3144244, %.preheader179 ], [ %.5146.lcssa, %._crit_edge237 ]
  %425 = getelementptr inbounds i8, ptr %.0140245, i64 %209
  %426 = load i32, ptr %21, align 4, !tbaa !12
  %427 = icmp sgt i32 %426, %indvars
  br i1 %427, label %213, label %._crit_edge249, !llvm.loop !41

.lr.ph241:                                        ; preds = %.lr.ph241.preheader, %._crit_edge237
  %indvars.iv290 = phi i64 [ %indvars.iv275, %.lr.ph241.preheader ], [ %indvars.iv.next291, %._crit_edge237 ]
  %.4145239 = phi i32 [ %.3144244, %.lr.ph241.preheader ], [ %.5146.lcssa, %._crit_edge237 ]
  %428 = getelementptr inbounds i8, ptr %.0140245, i64 %indvars.iv290
  %429 = load i8, ptr %428, align 1, !tbaa !14
  %.not252 = icmp eq i8 %429, 0
  br i1 %.not252, label %._crit_edge237, label %.lr.ph236

.lr.ph236:                                        ; preds = %.lr.ph241
  %430 = zext i8 %429 to i32
  %431 = sext i32 %.4145239 to i64
  %432 = trunc i64 %indvars.iv290 to i32
  %433 = mul i32 %432, 30
  br label %436

._crit_edge237.loopexit:                          ; preds = %436
  %434 = trunc nsw i64 %indvars.iv.next288 to i32
  br label %._crit_edge237

._crit_edge237:                                   ; preds = %._crit_edge237.loopexit, %.lr.ph241
  %.5146.lcssa = phi i32 [ %.4145239, %.lr.ph241 ], [ %434, %._crit_edge237.loopexit ]
  %indvars.iv.next291 = add nsw i64 %indvars.iv290, 1
  %435 = icmp slt i64 %indvars.iv.next291, %234
  br i1 %435, label %.lr.ph241, label %._crit_edge242, !llvm.loop !42

436:                                              ; preds = %.lr.ph236, %436
  %indvars.iv287 = phi i64 [ %431, %.lr.ph236 ], [ %indvars.iv.next288, %436 ]
  %.0234 = phi i32 [ %430, %.lr.ph236 ], [ %444, %436 ]
  %437 = call range(i32 0, 33) i32 @llvm.cttz.i32(i32 %.0234, i1 true)
  %438 = zext nneg i32 %437 to i64
  %439 = getelementptr inbounds [8 x i32], ptr @_ZZ5sieveiiiE2rs, i64 0, i64 %438
  %440 = load i32, ptr %439, align 4, !tbaa !12
  %441 = add nsw i32 %440, %433
  %indvars.iv.next288 = add nsw i64 %indvars.iv287, 1
  %442 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv287) #8
  store i32 %441, ptr %442, align 4, !tbaa !12
  %443 = add nsw i32 %.0234, -1
  %444 = and i32 %443, %.0234
  %.not305 = icmp eq i32 %444, 0
  br i1 %.not305, label %._crit_edge237.loopexit, label %436, !llvm.loop !43

445:                                              ; preds = %._crit_edge249
  call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 75, ptr noundef nonnull @__PRETTY_FUNCTION__._Z5sieveiii) #9
  unreachable

.preheader:                                       ; preds = %.preheader.preheader, %448
  %indvars.iv294 = phi i64 [ %210, %.preheader.preheader ], [ %449, %448 ]
  %446 = trunc nuw i64 %indvars.iv294 to i32
  %447 = icmp sgt i32 %446, 0
  br i1 %447, label %448, label %.critedge

448:                                              ; preds = %.preheader
  %449 = add nsw i64 %indvars.iv294, -1
  %450 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %449) #8
  %451 = load i32, ptr %450, align 4, !tbaa !12
  %452 = icmp sgt i32 %451, %1
  br i1 %452, label %.preheader, label %.critedge, !llvm.loop !44

.critedge:                                        ; preds = %.preheader, %448
  %.6147.lcssa = phi i32 [ %smin, %.preheader ], [ %446, %448 ]
  %453 = sext i32 %.6147.lcssa to i64
  invoke void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %453)
          to label %454 unwind label %455

454:                                              ; preds = %.critedge
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #8
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #8
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #8
  call void @_ZNSt6vectorIZ5sieveiiiE1PSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #8
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %6) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #8
  ret void

455:                                              ; preds = %.critedge
  %456 = landingpad { ptr, i32 }
          cleanup
  br label %457

457:                                              ; preds = %455, %225
  %.pn = phi { ptr, i32 } [ %226, %225 ], [ %456, %455 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #8
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #8
  br label %458

458:                                              ; preds = %457, %211
  %.pn.pn = phi { ptr, i32 } [ %.pn, %457 ], [ %212, %211 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #8
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #8
  br label %459

459:                                              ; preds = %458, %143
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %458 ], [ %144, %143 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #8
  br label %460

460:                                              ; preds = %94, %108, %459
  %.pn168.pn = phi { ptr, i32 } [ %.pn.pn.pn, %459 ], [ %109, %108 ], [ %95, %94 ]
  call void @_ZNSt6vectorIZ5sieveiiiE1PSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #8
  br label %461

461:                                              ; preds = %460, %85
  %.pn168.pn.pn = phi { ptr, i32 } [ %.pn168.pn, %460 ], [ %86, %85 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #8
  br label %462

462:                                              ; preds = %81, %83, %461, %46, %54
  %.pn175.pn = phi { ptr, i32 } [ %55, %54 ], [ %47, %46 ], [ %.pn168.pn.pn, %461 ], [ %84, %83 ], [ %82, %81 ]
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %6) #8
  br label %463

463:                                              ; preds = %462, %35
  %.pn175.pn.pn = phi { ptr, i32 } [ %.pn175.pn, %462 ], [ %36, %35 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #8
  resume { ptr, i32 } %.pn175.pn.pn
}

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt4sqrtIiEN9__gnu_cxx11__enable_ifIXsr12__is_integerIT_EE7__valueEdE6__typeES2_(i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSaIbEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIbSaIbEEC2EmRKbRKS0_(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16), i1 noundef zeroext) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @"_ZZ5sieveiiiENK3$_0clEi"(ptr noundef nonnull align 1 dereferenceable(1), i32 noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr, i64, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZNSt6vectorIZ5sieveiiiE1PSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZZ5sieveiiiEN1PC2Ei(ptr noundef nonnull align 4 dereferenceable(36), i32 noundef) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZNSt6vectorIZ5sieveiiiE1PSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(36)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSaIhEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIhSaIhEEC2EmRKhRKS0_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 4 dereferenceable(36) ptr @_ZNSt6vectorIZ5sieveiiiE1PSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIhSaIhEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_ET0_T_S8_S7_(ptr, ptr, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorIhSaIhEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorIhSaIhEE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i64 @_ZNKSt6vectorIZ5sieveiiiE1PSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.cttz.i32(i32, i1 immarg) #5

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZNSt6vectorIZ5sieveiiiE1PSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #7

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #7

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { nounwind }
attributes #9 = { noreturn nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = distinct !{!11, !10}
!12 = !{!13, !13, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!7, !7, i64 0}
!15 = distinct !{!15, !10}
!16 = distinct !{!16, !10}
!17 = distinct !{!17, !10}
!18 = distinct !{!18, !10}
!19 = distinct !{!19, !10}
!20 = !{!21, !13, i64 0}
!21 = !{!"_ZTSZ5sieveiiiE1P", !13, i64 0, !7, i64 4}
!22 = distinct !{!22, !10, !23, !24}
!23 = !{!"llvm.loop.isvectorized", i32 1}
!24 = !{!"llvm.loop.unroll.runtime.disable"}
!25 = distinct !{!25, !10, !23}
!26 = distinct !{!26, !10, !23, !24}
!27 = distinct !{!27, !10, !23}
!28 = distinct !{!28, !10, !23, !24}
!29 = distinct !{!29, !10, !23}
!30 = distinct !{!30, !10, !23, !24}
!31 = distinct !{!31, !10, !23}
!32 = distinct !{!32, !10, !23, !24}
!33 = distinct !{!33, !10, !23}
!34 = distinct !{!34, !10, !23, !24}
!35 = distinct !{!35, !10, !23}
!36 = distinct !{!36, !10, !23, !24}
!37 = distinct !{!37, !10, !23}
!38 = distinct !{!38, !10, !23, !24}
!39 = distinct !{!39, !10, !23}
!40 = distinct !{!40, !10}
!41 = distinct !{!41, !10}
!42 = distinct !{!42, !10}
!43 = distinct !{!43, !10}
!44 = distinct !{!44, !10}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass