; LLVM IR from ermig1979/Simd :: src/Simd/SimdBaseImageLoadBmp.ll (ZN4Simd4Base14ImageBmpLoader11ParseHeaderEv)

; 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.Simd::ImageLoader" = type { ptr, %"struct.Simd::ImageLoaderParam", %"class.Simd::InputMemoryStream", %"struct.Simd::View" }
%"struct.Simd::ImageLoaderParam" = type { ptr, i64, i32, i32 }
%"class.Simd::InputMemoryStream" = type { ptr, i64, i64, i64, i64 }
%"struct.Simd::View" = type <{ i64, i64, i64, i32, [4 x i8], ptr, i8, [7 x i8] }>
%"class.Simd::Base::ImageBmpLoader" = type <{ %"class.Simd::ImageLoader", ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, [4 x i8] }>

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN4Simd4Base14ImageBmpLoader11ParseHeaderEv(ptr noundef nonnull align 8 dereferenceable(172) %0) #0 align 2 {
  %2 = alloca i1, align 1
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i16, align 2
  %7 = alloca i16, align 2
  %8 = alloca i16, align 2
  %9 = alloca i16, align 2
  %10 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  %11 = load ptr, ptr %3, align 8
  %12 = getelementptr inbounds %"class.Simd::ImageLoader", ptr %11, i32 0, i32 2
  %13 = call noundef zeroext i8 @_ZN4Simd17InputMemoryStream5Get8uEv(ptr noundef nonnull align 8 dereferenceable(40) %12)
  %14 = zext i8 %13 to i32
  %15 = icmp ne i32 %14, 66
  br i1 %15, label %21, label %16

16:                                               ; preds = %1
  %17 = getelementptr inbounds %"class.Simd::ImageLoader", ptr %11, i32 0, i32 2
  %18 = call noundef zeroext i8 @_ZN4Simd17InputMemoryStream5Get8uEv(ptr noundef nonnull align 8 dereferenceable(40) %17)
  %19 = zext i8 %18 to i32
  %20 = icmp ne i32 %19, 77
  br i1 %20, label %21, label %22

21:                                               ; preds = %16, %1
  store i1 false, ptr %2, align 1
  br label %255

22:                                               ; preds = %16
  %23 = getelementptr inbounds %"class.Simd::ImageLoader", ptr %11, i32 0, i32 2
  %24 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream4SkipEm(ptr noundef nonnull align 8 dereferenceable(40) %23, i64 noundef 12)
  br i1 %24, label %26, label %25

25:                                               ; preds = %22
  store i1 false, ptr %2, align 1
  br label %255

26:                                               ; preds = %22
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #3
  store i32 0, ptr %4, align 4, !tbaa !9
  %27 = getelementptr inbounds %"class.Simd::ImageLoader", ptr %11, i32 0, i32 2
  %28 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read32uERj(ptr noundef nonnull align 8 dereferenceable(40) %27, ptr noundef nonnull align 4 dereferenceable(4) %4)
  br i1 %28, label %29, label %44

29:                                               ; preds = %26
  %30 = load i32, ptr %4, align 4, !tbaa !9
  %31 = icmp eq i32 %30, 12
  br i1 %31, label %45, label %32

32:                                               ; preds = %29
  %33 = load i32, ptr %4, align 4, !tbaa !9
  %34 = icmp eq i32 %33, 40
  br i1 %34, label %45, label %35

35:                                               ; preds = %32
  %36 = load i32, ptr %4, align 4, !tbaa !9
  %37 = icmp eq i32 %36, 56
  br i1 %37, label %45, label %38

38:                                               ; preds = %35
  %39 = load i32, ptr %4, align 4, !tbaa !9
  %40 = icmp eq i32 %39, 108
  br i1 %40, label %45, label %41

41:                                               ; preds = %38
  %42 = load i32, ptr %4, align 4, !tbaa !9
  %43 = icmp eq i32 %42, 124
  br i1 %43, label %45, label %44

44:                                               ; preds = %41, %26
  store i1 false, ptr %2, align 1
  store i32 1, ptr %5, align 4
  br label %254

45:                                               ; preds = %41, %38, %35, %32, %29
  %46 = load i32, ptr %4, align 4, !tbaa !9
  %47 = icmp eq i32 %46, 12
  br i1 %47, label %48, label %72

48:                                               ; preds = %45
  call void @llvm.lifetime.start.p0(i64 2, ptr %6) #3
  call void @llvm.lifetime.start.p0(i64 2, ptr %7) #3
  %49 = getelementptr inbounds %"class.Simd::ImageLoader", ptr %11, i32 0, i32 2
  %50 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read16uERt(ptr noundef nonnull align 8 dereferenceable(40) %49, ptr noundef nonnull align 2 dereferenceable(2) %6)
  br i1 %50, label %51, label %61

51:                                               ; preds = %48
  %52 = getelementptr inbounds %"class.Simd::ImageLoader", ptr %11, i32 0, i32 2
  %53 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read16uERt(ptr noundef nonnull align 8 dereferenceable(40) %52, ptr noundef nonnull align 2 dereferenceable(2) %7)
  br i1 %53, label %54, label %61

54:                                               ; preds = %51
  %55 = load i16, ptr %6, align 2, !tbaa !11
  %56 = zext i16 %55 to i32
  %57 = load i16, ptr %7, align 2, !tbaa !11
  %58 = zext i16 %57 to i32
  %59 = mul nsw i32 %56, %58
  %60 = icmp eq i32 %59, 0
  br i1 %60, label %61, label %62

61:                                               ; preds = %54, %51, %48
  store i1 false, ptr %2, align 1
  store i32 1, ptr %5, align 4
  br label %69

62:                                               ; preds = %54
  %63 = load i16, ptr %6, align 2, !tbaa !11
  %64 = zext i16 %63 to i32
  %65 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 3
  store i32 %64, ptr %65, align 8, !tbaa !13
  %66 = load i16, ptr %7, align 2, !tbaa !11
  %67 = zext i16 %66 to i32
  %68 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 4
  store i32 %67, ptr %68, align 4, !tbaa !24
  store i32 0, ptr %5, align 4
  br label %69

69:                                               ; preds = %62, %61
  call void @llvm.lifetime.end.p0(i64 2, ptr %7) #3
  call void @llvm.lifetime.end.p0(i64 2, ptr %6) #3
  %70 = load i32, ptr %5, align 4
  switch i32 %70, label %254 [
    i32 0, label %71
  ]

71:                                               ; preds = %69
  br label %89

72:                                               ; preds = %45
  %73 = getelementptr inbounds %"class.Simd::ImageLoader", ptr %11, i32 0, i32 2
  %74 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 3
  %75 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read32uERj(ptr noundef nonnull align 8 dereferenceable(40) %73, ptr noundef nonnull align 4 dereferenceable(4) %74)
  br i1 %75, label %76, label %87

76:                                               ; preds = %72
  %77 = getelementptr inbounds %"class.Simd::ImageLoader", ptr %11, i32 0, i32 2
  %78 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 4
  %79 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read32uERj(ptr noundef nonnull align 8 dereferenceable(40) %77, ptr noundef nonnull align 4 dereferenceable(4) %78)
  br i1 %79, label %80, label %87

80:                                               ; preds = %76
  %81 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 3
  %82 = load i32, ptr %81, align 8, !tbaa !13
  %83 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 4
  %84 = load i32, ptr %83, align 4, !tbaa !24
  %85 = mul i32 %82, %84
  %86 = icmp eq i32 %85, 0
  br i1 %86, label %87, label %88

87:                                               ; preds = %80, %76, %72
  store i1 false, ptr %2, align 1
  store i32 1, ptr %5, align 4
  br label %254

88:                                               ; preds = %80
  br label %89

89:                                               ; preds = %88, %71
  call void @llvm.lifetime.start.p0(i64 2, ptr %8) #3
  call void @llvm.lifetime.start.p0(i64 2, ptr %9) #3
  %90 = getelementptr inbounds %"class.Simd::ImageLoader", ptr %11, i32 0, i32 2
  %91 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read16uERt(ptr noundef nonnull align 8 dereferenceable(40) %90, ptr noundef nonnull align 2 dereferenceable(2) %8)
  br i1 %91, label %92, label %99

92:                                               ; preds = %89
  %93 = getelementptr inbounds %"class.Simd::ImageLoader", ptr %11, i32 0, i32 2
  %94 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read16uERt(ptr noundef nonnull align 8 dereferenceable(40) %93, ptr noundef nonnull align 2 dereferenceable(2) %9)
  br i1 %94, label %95, label %99

95:                                               ; preds = %92
  %96 = load i16, ptr %8, align 2, !tbaa !11
  %97 = zext i16 %96 to i32
  %98 = icmp ne i32 %97, 1
  br i1 %98, label %99, label %100

99:                                               ; preds = %95, %92, %89
  store i1 false, ptr %2, align 1
  store i32 1, ptr %5, align 4
  br label %253

100:                                              ; preds = %95
  %101 = load i16, ptr %9, align 2, !tbaa !11
  %102 = zext i16 %101 to i32
  %103 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 5
  store i32 %102, ptr %103, align 8, !tbaa !25
  %104 = load i32, ptr %4, align 4, !tbaa !9
  %105 = icmp ne i32 %104, 12
  br i1 %105, label %106, label %206

106:                                              ; preds = %100
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #3
  %107 = getelementptr inbounds %"class.Simd::ImageLoader", ptr %11, i32 0, i32 2
  %108 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read32uERj(ptr noundef nonnull align 8 dereferenceable(40) %107, ptr noundef nonnull align 4 dereferenceable(4) %10)
  br i1 %108, label %109, label %123

109:                                              ; preds = %106
  %110 = load i32, ptr %10, align 4, !tbaa !9
  %111 = icmp eq i32 %110, 0
  br i1 %111, label %124, label %112

112:                                              ; preds = %109
  %113 = load i32, ptr %10, align 4, !tbaa !9
  %114 = icmp eq i32 %113, 3
  br i1 %114, label %115, label %123

115:                                              ; preds = %112
  %116 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 5
  %117 = load i32, ptr %116, align 8, !tbaa !25
  %118 = icmp eq i32 %117, 16
  br i1 %118, label %124, label %119

119:                                              ; preds = %115
  %120 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 5
  %121 = load i32, ptr %120, align 8, !tbaa !25
  %122 = icmp eq i32 %121, 32
  br i1 %122, label %124, label %123

123:                                              ; preds = %119, %112, %106
  store i1 false, ptr %2, align 1
  store i32 1, ptr %5, align 4
  br label %203

124:                                              ; preds = %119, %115, %109
  %125 = getelementptr inbounds %"class.Simd::ImageLoader", ptr %11, i32 0, i32 2
  %126 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream4SkipEm(ptr noundef nonnull align 8 dereferenceable(40) %125, i64 noundef 20)
  br i1 %126, label %128, label %127

127:                                              ; preds = %124
  store i1 false, ptr %2, align 1
  store i32 1, ptr %5, align 4
  br label %203

128:                                              ; preds = %124
  %129 = load i32, ptr %4, align 4, !tbaa !9
  %130 = icmp eq i32 %129, 40
  br i1 %130, label %134, label %131

131:                                              ; preds = %128
  %132 = load i32, ptr %4, align 4, !tbaa !9
  %133 = icmp eq i32 %132, 56
  br i1 %133, label %134, label %143

134:                                              ; preds = %131, %128
  %135 = load i32, ptr %4, align 4, !tbaa !9
  %136 = icmp eq i32 %135, 56
  br i1 %136, label %137, label %142

137:                                              ; preds = %134
  %138 = getelementptr inbounds %"class.Simd::ImageLoader", ptr %11, i32 0, i32 2
  %139 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream4SkipEm(ptr noundef nonnull align 8 dereferenceable(40) %138, i64 noundef 16)
  br i1 %139, label %141, label %140

140:                                              ; preds = %137
  store i1 false, ptr %2, align 1
  store i32 1, ptr %5, align 4
  br label %203

141:                                              ; preds = %137
  br label %142

142:                                              ; preds = %141, %134
  br label %174

143:                                              ; preds = %131
  %144 = getelementptr inbounds %"class.Simd::ImageLoader", ptr %11, i32 0, i32 2
  %145 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 8
  %146 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read32uERj(ptr noundef nonnull align 8 dereferenceable(40) %144, ptr noundef nonnull align 4 dereferenceable(4) %145)
  br i1 %146, label %147, label %159

147:                                              ; preds = %143
  %148 = getelementptr inbounds %"class.Simd::ImageLoader", ptr %11, i32 0, i32 2
  %149 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 9
  %150 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read32uERj(ptr noundef nonnull align 8 dereferenceable(40) %148, ptr noundef nonnull align 4 dereferenceable(4) %149)
  br i1 %150, label %151, label %159

151:                                              ; preds = %147
  %152 = getelementptr inbounds %"class.Simd::ImageLoader", ptr %11, i32 0, i32 2
  %153 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 10
  %154 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read32uERj(ptr noundef nonnull align 8 dereferenceable(40) %152, ptr noundef nonnull align 4 dereferenceable(4) %153)
  br i1 %154, label %155, label %159

155:                                              ; preds = %151
  %156 = getelementptr inbounds %"class.Simd::ImageLoader", ptr %11, i32 0, i32 2
  %157 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 11
  %158 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read32uERj(ptr noundef nonnull align 8 dereferenceable(40) %156, ptr noundef nonnull align 4 dereferenceable(4) %157)
  br i1 %158, label %160, label %159

159:                                              ; preds = %155, %151, %147, %143
  store i1 false, ptr %2, align 1
  store i32 1, ptr %5, align 4
  br label %203

160:                                              ; preds = %155
  %161 = load i32, ptr %4, align 4, !tbaa !9
  %162 = icmp eq i32 %161, 108
  br i1 %162, label %163, label %168

163:                                              ; preds = %160
  %164 = getelementptr inbounds %"class.Simd::ImageLoader", ptr %11, i32 0, i32 2
  %165 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream4SkipEm(ptr noundef nonnull align 8 dereferenceable(40) %164, i64 noundef 52)
  br i1 %165, label %167, label %166

166:                                              ; preds = %163
  store i1 false, ptr %2, align 1
  store i32 1, ptr %5, align 4
  br label %203

167:                                              ; preds = %163
  br label %173

168:                                              ; preds = %160
  %169 = getelementptr inbounds %"class.Simd::ImageLoader", ptr %11, i32 0, i32 2
  %170 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream4SkipEm(ptr noundef nonnull align 8 dereferenceable(40) %169, i64 noundef 68)
  br i1 %170, label %172, label %171

171:                                              ; preds = %168
  store i1 false, ptr %2, align 1
  store i32 1, ptr %5, align 4
  br label %203

172:                                              ; preds = %168
  br label %173

173:                                              ; preds = %172, %167
  br label %174

174:                                              ; preds = %173, %142
  %175 = load i32, ptr %10, align 4, !tbaa !9
  %176 = icmp eq i32 %175, 0
  br i1 %176, label %177, label %202

177:                                              ; preds = %174
  %178 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 5
  %179 = load i32, ptr %178, align 8, !tbaa !25
  %180 = icmp eq i32 %179, 16
  br i1 %180, label %181, label %186

181:                                              ; preds = %177
  %182 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 8
  store i32 31744, ptr %182, align 4, !tbaa !26
  %183 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 9
  store i32 992, ptr %183, align 8, !tbaa !27
  %184 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 10
  store i32 31, ptr %184, align 4, !tbaa !28
  %185 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 11
  store i32 0, ptr %185, align 8, !tbaa !29
  br label %201

186:                                              ; preds = %177
  %187 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 5
  %188 = load i32, ptr %187, align 8, !tbaa !25
  %189 = icmp eq i32 %188, 32
  br i1 %189, label %190, label %195

190:                                              ; preds = %186
  %191 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 8
  store i32 16711680, ptr %191, align 4, !tbaa !26
  %192 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 9
  store i32 65280, ptr %192, align 8, !tbaa !27
  %193 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 10
  store i32 255, ptr %193, align 4, !tbaa !28
  %194 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 11
  store i32 -16777216, ptr %194, align 8, !tbaa !29
  br label %200

195:                                              ; preds = %186
  %196 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 8
  store i32 0, ptr %196, align 4, !tbaa !26
  %197 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 9
  store i32 0, ptr %197, align 8, !tbaa !27
  %198 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 10
  store i32 0, ptr %198, align 4, !tbaa !28
  %199 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 11
  store i32 0, ptr %199, align 8, !tbaa !29
  br label %200

200:                                              ; preds = %195, %190
  br label %201

201:                                              ; preds = %200, %181
  br label %202

202:                                              ; preds = %201, %174
  store i32 0, ptr %5, align 4
  br label %203

203:                                              ; preds = %202, %171, %166, %159, %140, %127, %123
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #3
  %204 = load i32, ptr %5, align 4
  switch i32 %204, label %253 [
    i32 0, label %205
  ]

205:                                              ; preds = %203
  br label %206

206:                                              ; preds = %205, %100
  %207 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 5
  %208 = load i32, ptr %207, align 8, !tbaa !25
  %209 = icmp ule i32 %208, 16
  br i1 %209, label %210, label %211

210:                                              ; preds = %206
  store i1 false, ptr %2, align 1
  store i32 1, ptr %5, align 4
  br label %253

211:                                              ; preds = %206
  %212 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 5
  %213 = load i32, ptr %212, align 8, !tbaa !25
  %214 = icmp eq i32 %213, 24
  br i1 %214, label %215, label %230

215:                                              ; preds = %211
  %216 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 3
  %217 = load i32, ptr %216, align 8, !tbaa !13
  %218 = mul i32 %217, 3
  %219 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 6
  store i32 %218, ptr %219, align 4, !tbaa !30
  %220 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 6
  %221 = load i32, ptr %220, align 4, !tbaa !30
  %222 = zext i32 %221 to i64
  %223 = call noundef i64 @_ZN4Simd7AlignHiEmm(i64 noundef %222, i64 noundef 4)
  %224 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 6
  %225 = load i32, ptr %224, align 4, !tbaa !30
  %226 = zext i32 %225 to i64
  %227 = sub i64 %223, %226
  %228 = trunc i64 %227 to i32
  %229 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 7
  store i32 %228, ptr %229, align 8, !tbaa !31
  br label %236

230:                                              ; preds = %211
  %231 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 3
  %232 = load i32, ptr %231, align 8, !tbaa !13
  %233 = mul i32 %232, 4
  %234 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 6
  store i32 %233, ptr %234, align 4, !tbaa !30
  %235 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 7
  store i32 0, ptr %235, align 8, !tbaa !31
  br label %236

236:                                              ; preds = %230, %215
  %237 = getelementptr inbounds %"class.Simd::ImageLoader", ptr %11, i32 0, i32 1
  %238 = getelementptr inbounds %"struct.Simd::ImageLoaderParam", ptr %237, i32 0, i32 3
  %239 = load i32, ptr %238, align 4, !tbaa !32
  %240 = icmp eq i32 %239, 0
  br i1 %240, label %241, label %252

241:                                              ; preds = %236
  %242 = getelementptr inbounds %"class.Simd::Base::ImageBmpLoader", ptr %11, i32 0, i32 5
  %243 = load i32, ptr %242, align 8, !tbaa !25
  %244 = icmp eq i32 %243, 32
  br i1 %244, label %245, label %248

245:                                              ; preds = %241
  %246 = getelementptr inbounds %"class.Simd::ImageLoader", ptr %11, i32 0, i32 1
  %247 = getelementptr inbounds %"struct.Simd::ImageLoaderParam", ptr %246, i32 0, i32 3
  store i32 4, ptr %247, align 4, !tbaa !32
  br label %251

248:                                              ; preds = %241
  %249 = getelementptr inbounds %"class.Simd::ImageLoader", ptr %11, i32 0, i32 1
  %250 = getelementptr inbounds %"struct.Simd::ImageLoaderParam", ptr %249, i32 0, i32 3
  store i32 3, ptr %250, align 4, !tbaa !32
  br label %251

251:                                              ; preds = %248, %245
  br label %252

252:                                              ; preds = %251, %236
  store i1 true, ptr %2, align 1
  store i32 1, ptr %5, align 4
  br label %253

253:                                              ; preds = %252, %210, %203, %99
  call void @llvm.lifetime.end.p0(i64 2, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 2, ptr %8) #3
  br label %254

254:                                              ; preds = %253, %87, %69, %44
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #3
  br label %255

255:                                              ; preds = %254, %25, %21
  %256 = load i1, ptr %2, align 1
  ret i1 %256
}

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN4Simd17InputMemoryStream4SkipEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) #2 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: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef zeroext i8 @_ZN4Simd17InputMemoryStream5Get8uEv(ptr noundef nonnull align 8 dereferenceable(40)) #2 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read32uERj(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 4 dereferenceable(4)) #2 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read16uERt(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 2 dereferenceable(2)) #2 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN4Simd7AlignHiEmm(i64 noundef, i64 noundef) #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 = { alwaysinline 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 = { 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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"short", !7, i64 0}
!13 = !{!14, !10, i64 136}
!14 = !{!"_ZTSN4Simd4Base14ImageBmpLoaderE", !15, i64 0, !6, i64 120, !6, i64 128, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168}
!15 = !{!"_ZTSN4Simd11ImageLoaderE", !16, i64 8, !20, i64 32, !21, i64 72}
!16 = !{!"_ZTSN4Simd16ImageLoaderParamE", !6, i64 0, !17, i64 8, !18, i64 16, !19, i64 20}
!17 = !{!"long", !7, i64 0}
!18 = !{!"_ZTS17SimdImageFileType", !7, i64 0}
!19 = !{!"_ZTS19SimdPixelFormatType", !7, i64 0}
!20 = !{!"_ZTSN4Simd17InputMemoryStreamE", !6, i64 0, !17, i64 8, !17, i64 16, !17, i64 24, !17, i64 32}
!21 = !{!"_ZTSN4Simd4ViewINS_9AllocatorEEE", !17, i64 0, !17, i64 8, !17, i64 16, !22, i64 24, !6, i64 32, !23, i64 40}
!22 = !{!"_ZTSN4Simd4ViewINS_9AllocatorEE6FormatE", !7, i64 0}
!23 = !{!"bool", !7, i64 0}
!24 = !{!14, !10, i64 140}
!25 = !{!14, !10, i64 144}
!26 = !{!14, !10, i64 156}
!27 = !{!14, !10, i64 160}
!28 = !{!14, !10, i64 164}
!29 = !{!14, !10, i64 168}
!30 = !{!14, !10, i64 148}
!31 = !{!14, !10, i64 152}
!32 = !{!15, !19, i64 28}


; 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"

; Function Attrs: mustprogress nounwind uwtable
define dso_local noundef zeroext i1 @_ZN4Simd4Base14ImageBmpLoader11ParseHeaderEv(ptr noundef nonnull align 8 dereferenceable(172) %0) local_unnamed_addr #0 align 2 {
  %2 = alloca i32, align 4
  %3 = alloca i16, align 2
  %4 = alloca i16, align 2
  %5 = alloca i16, align 2
  %6 = alloca i16, align 2
  %7 = alloca i32, align 4
  %8 = getelementptr inbounds i8, ptr %0, i64 32
  %9 = tail call noundef zeroext i8 @_ZN4Simd17InputMemoryStream5Get8uEv(ptr noundef nonnull align 8 dereferenceable(40) %8)
  %.not22 = icmp eq i8 %9, 66
  br i1 %.not22, label %10, label %123

10:                                               ; preds = %1
  %11 = tail call noundef zeroext i8 @_ZN4Simd17InputMemoryStream5Get8uEv(ptr noundef nonnull align 8 dereferenceable(40) %8)
  %.not23 = icmp eq i8 %11, 77
  br i1 %.not23, label %12, label %123

12:                                               ; preds = %10
  %13 = tail call noundef zeroext i1 @_ZN4Simd17InputMemoryStream4SkipEm(ptr noundef nonnull align 8 dereferenceable(40) %8, i64 noundef 12)
  br i1 %13, label %14, label %123

14:                                               ; preds = %12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #4
  store i32 0, ptr %2, align 4, !tbaa !5
  %15 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read32uERj(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef nonnull align 4 dereferenceable(4) %2)
  br i1 %15, label %16, label %122

16:                                               ; preds = %14
  %17 = load i32, ptr %2, align 4
  switch i32 %17, label %122 [
    i32 12, label %18
    i32 40, label %32
    i32 56, label %32
    i32 108, label %32
    i32 124, label %32
  ]

18:                                               ; preds = %16
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %3) #4
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %4) #4
  %19 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read16uERt(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef nonnull align 2 dereferenceable(2) %3)
  br i1 %19, label %20, label %31

20:                                               ; preds = %18
  %21 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read16uERt(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef nonnull align 2 dereferenceable(2) %4)
  br i1 %21, label %22, label %31

22:                                               ; preds = %20
  %23 = load i16, ptr %3, align 2, !tbaa !9
  %24 = zext i16 %23 to i32
  %25 = load i16, ptr %4, align 2, !tbaa !9
  %26 = zext i16 %25 to i32
  %27 = mul nuw nsw i32 %26, %24
  %28 = icmp eq i32 %27, 0
  br i1 %28, label %31, label %.critedge

.critedge:                                        ; preds = %22
  %29 = getelementptr inbounds i8, ptr %0, i64 136
  store i32 %24, ptr %29, align 8, !tbaa !11
  %30 = getelementptr inbounds i8, ptr %0, i64 140
  store i32 %26, ptr %30, align 4, !tbaa !23
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %4) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %3) #4
  br label %43

31:                                               ; preds = %18, %20, %22
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %4) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %3) #4
  br label %122

32:                                               ; preds = %16, %16, %16, %16
  %33 = getelementptr inbounds i8, ptr %0, i64 136
  %34 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read32uERj(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef nonnull align 4 dereferenceable(4) %33)
  br i1 %34, label %35, label %122

35:                                               ; preds = %32
  %36 = getelementptr inbounds i8, ptr %0, i64 140
  %37 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read32uERj(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef nonnull align 4 dereferenceable(4) %36)
  br i1 %37, label %38, label %122

38:                                               ; preds = %35
  %39 = load i32, ptr %33, align 8, !tbaa !11
  %40 = load i32, ptr %36, align 4, !tbaa !23
  %41 = mul i32 %40, %39
  %42 = icmp eq i32 %41, 0
  br i1 %42, label %122, label %43

43:                                               ; preds = %.critedge, %38
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %5) #4
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %6) #4
  %44 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read16uERt(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef nonnull align 2 dereferenceable(2) %5)
  br i1 %44, label %45, label %121

45:                                               ; preds = %43
  %46 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read16uERt(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef nonnull align 2 dereferenceable(2) %6)
  %47 = load i16, ptr %5, align 2
  %48 = icmp eq i16 %47, 1
  %or.cond11.not = select i1 %46, i1 %48, i1 false
  br i1 %or.cond11.not, label %49, label %121

49:                                               ; preds = %45
  %50 = load i16, ptr %6, align 2, !tbaa !9
  %51 = zext i16 %50 to i32
  %52 = getelementptr inbounds i8, ptr %0, i64 144
  store i32 %51, ptr %52, align 8, !tbaa !24
  %53 = load i32, ptr %2, align 4, !tbaa !5
  %.not = icmp eq i32 %53, 12
  br i1 %.not, label %94, label %54

54:                                               ; preds = %49
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #4
  %55 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read32uERj(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef nonnull align 4 dereferenceable(4) %7)
  br i1 %55, label %56, label %.critedge26

56:                                               ; preds = %54
  %57 = load i32, ptr %7, align 4, !tbaa !5
  switch i32 %57, label %.critedge26 [
    i32 0, label %60
    i32 3, label %58
  ]

58:                                               ; preds = %56
  %59 = load i32, ptr %52, align 8, !tbaa !24
  switch i32 %59, label %.critedge26 [
    i32 16, label %60
    i32 32, label %60
  ]

60:                                               ; preds = %58, %58, %56
  %61 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream4SkipEm(ptr noundef nonnull align 8 dereferenceable(40) %8, i64 noundef 20)
  br i1 %61, label %62, label %.critedge26

62:                                               ; preds = %60
  %63 = load i32, ptr %2, align 4
  switch i32 %63, label %66 [
    i32 56, label %64
    i32 40, label %85
  ]

64:                                               ; preds = %62
  %65 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream4SkipEm(ptr noundef nonnull align 8 dereferenceable(40) %8, i64 noundef 16)
  br i1 %65, label %85, label %.critedge26

66:                                               ; preds = %62
  %67 = getelementptr inbounds i8, ptr %0, i64 156
  %68 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read32uERj(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef nonnull align 4 dereferenceable(4) %67)
  br i1 %68, label %69, label %.critedge26

69:                                               ; preds = %66
  %70 = getelementptr inbounds i8, ptr %0, i64 160
  %71 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read32uERj(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef nonnull align 4 dereferenceable(4) %70)
  br i1 %71, label %72, label %.critedge26

72:                                               ; preds = %69
  %73 = getelementptr inbounds i8, ptr %0, i64 164
  %74 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read32uERj(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef nonnull align 4 dereferenceable(4) %73)
  br i1 %74, label %75, label %.critedge26

75:                                               ; preds = %72
  %76 = getelementptr inbounds i8, ptr %0, i64 168
  %77 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read32uERj(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef nonnull align 4 dereferenceable(4) %76)
  br i1 %77, label %78, label %.critedge26

78:                                               ; preds = %75
  %79 = load i32, ptr %2, align 4, !tbaa !5
  %80 = icmp eq i32 %79, 108
  br i1 %80, label %81, label %83

81:                                               ; preds = %78
  %82 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream4SkipEm(ptr noundef nonnull align 8 dereferenceable(40) %8, i64 noundef 52)
  br i1 %82, label %85, label %.critedge26

83:                                               ; preds = %78
  %84 = call noundef zeroext i1 @_ZN4Simd17InputMemoryStream4SkipEm(ptr noundef nonnull align 8 dereferenceable(40) %8, i64 noundef 68)
  br i1 %84, label %85, label %.critedge26

85:                                               ; preds = %62, %81, %83, %64
  %86 = load i32, ptr %7, align 4, !tbaa !5
  %87 = icmp eq i32 %86, 0
  %.pr.pre = load i32, ptr %52, align 8, !tbaa !24
  br i1 %87, label %88, label %93

88:                                               ; preds = %85
  %89 = getelementptr inbounds i8, ptr %0, i64 156
  switch i32 %.pr.pre, label %92 [
    i32 16, label %90
    i32 32, label %91
  ]

90:                                               ; preds = %88
  store <4 x i32> <i32 31744, i32 992, i32 31, i32 0>, ptr %89, align 4, !tbaa !5
  br label %93

91:                                               ; preds = %88
  store <4 x i32> <i32 16711680, i32 65280, i32 255, i32 -16777216>, ptr %89, align 4, !tbaa !5
  br label %93

92:                                               ; preds = %88
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %89, i8 0, i64 16, i1 false)
  br label %93

93:                                               ; preds = %85, %91, %92, %90
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #4
  br label %94

94:                                               ; preds = %93, %49
  %95 = phi i32 [ %.pr.pre, %93 ], [ %51, %49 ]
  %96 = icmp ult i32 %95, 17
  br i1 %96, label %121, label %97

97:                                               ; preds = %94
  %98 = icmp eq i32 %95, 24
  %99 = getelementptr inbounds i8, ptr %0, i64 136
  %100 = load i32, ptr %99, align 8, !tbaa !11
  %101 = getelementptr inbounds i8, ptr %0, i64 148
  br i1 %98, label %102, label %109

102:                                              ; preds = %97
  %103 = mul i32 %100, 3
  store i32 %103, ptr %101, align 4, !tbaa !25
  %104 = zext i32 %103 to i64
  %105 = call noundef i64 @_ZN4Simd7AlignHiEmm(i64 noundef %104, i64 noundef 4)
  %106 = load i32, ptr %101, align 4, !tbaa !25
  %107 = trunc i64 %105 to i32
  %108 = sub i32 %107, %106
  br label %111

109:                                              ; preds = %97
  %110 = shl i32 %100, 2
  store i32 %110, ptr %101, align 4, !tbaa !25
  br label %111

111:                                              ; preds = %109, %102
  %.sink = phi i32 [ %108, %102 ], [ 0, %109 ]
  %112 = getelementptr inbounds i8, ptr %0, i64 152
  store i32 %.sink, ptr %112, align 8
  %113 = getelementptr inbounds i8, ptr %0, i64 28
  %114 = load i32, ptr %113, align 4, !tbaa !26
  %115 = icmp eq i32 %114, 0
  br i1 %115, label %116, label %121

116:                                              ; preds = %111
  %117 = load i32, ptr %52, align 8, !tbaa !24
  %118 = icmp eq i32 %117, 32
  br i1 %118, label %119, label %120

119:                                              ; preds = %116
  store i32 4, ptr %113, align 4, !tbaa !26
  br label %121

120:                                              ; preds = %116
  store i32 3, ptr %113, align 4, !tbaa !26
  br label %121

.critedge26:                                      ; preds = %83, %81, %66, %69, %72, %75, %64, %60, %54, %56, %58
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #4
  br label %121

121:                                              ; preds = %111, %120, %119, %94, %.critedge26, %43, %45
  %.3 = phi i1 [ false, %45 ], [ false, %43 ], [ false, %.critedge26 ], [ false, %94 ], [ true, %119 ], [ true, %120 ], [ true, %111 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %6) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %5) #4
  br label %122

122:                                              ; preds = %32, %35, %38, %31, %16, %14, %121
  %.4 = phi i1 [ %.3, %121 ], [ false, %31 ], [ false, %16 ], [ false, %14 ], [ false, %38 ], [ false, %35 ], [ false, %32 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #4
  br label %123

123:                                              ; preds = %12, %1, %10, %122
  %.5 = phi i1 [ %.4, %122 ], [ false, %10 ], [ false, %1 ], [ false, %12 ]
  ret i1 %.5
}

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN4Simd17InputMemoryStream4SkipEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) local_unnamed_addr #2 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: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef zeroext i8 @_ZN4Simd17InputMemoryStream5Get8uEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #2 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN4Simd17InputMemoryStream7Read32uERj(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2 align 2

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN4Simd7AlignHiEmm(i64 noundef, i64 noundef) local_unnamed_addr #2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { alwaysinline 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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { 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 = !{!"short", !7, i64 0}
!11 = !{!12, !6, i64 136}
!12 = !{!"_ZTSN4Simd4Base14ImageBmpLoaderE", !13, i64 0, !15, i64 120, !15, i64 128, !6, i64 136, !6, i64 140, !6, i64 144, !6, i64 148, !6, i64 152, !6, i64 156, !6, i64 160, !6, i64 164, !6, i64 168}
!13 = !{!"_ZTSN4Simd11ImageLoaderE", !14, i64 8, !19, i64 32, !20, i64 72}
!14 = !{!"_ZTSN4Simd16ImageLoaderParamE", !15, i64 0, !16, i64 8, !17, i64 16, !18, i64 20}
!15 = !{!"any pointer", !7, i64 0}
!16 = !{!"long", !7, i64 0}
!17 = !{!"_ZTS17SimdImageFileType", !7, i64 0}
!18 = !{!"_ZTS19SimdPixelFormatType", !7, i64 0}
!19 = !{!"_ZTSN4Simd17InputMemoryStreamE", !15, i64 0, !16, i64 8, !16, i64 16, !16, i64 24, !16, i64 32}
!20 = !{!"_ZTSN4Simd4ViewINS_9AllocatorEEE", !16, i64 0, !16, i64 8, !16, i64 16, !21, i64 24, !15, i64 32, !22, i64 40}
!21 = !{!"_ZTSN4Simd4ViewINS_9AllocatorEE6FormatE", !7, i64 0}
!22 = !{!"bool", !7, i64 0}
!23 = !{!12, !6, i64 140}
!24 = !{!12, !6, i64 144}
!25 = !{!12, !6, i64 148}
!26 = !{!13, !18, i64 28}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,MemCpyOptPass,MergedLoadStoreMotionPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass