; LLVM IR from jingweizhanghuai/Morn :: src/wrap (morn_stb_image)

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

%struct.__va_list_tag = type { i32, i32, ptr, ptr }
%struct.MImage = type { i32, i32, i32, [4 x ptr], ptr }

@.str.9 = external hidden unnamed_addr constant [81 x i8], align 1
@__FUNCTION__.mImageLoad = external hidden unnamed_addr constant [11 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [1 x i8], align 1
@morn_data_type = external thread_local global i32, align 4
@.str.12 = external hidden unnamed_addr constant [14 x i8], align 1

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull) #0

; Function Attrs: nounwind uwtable
declare dso_local ptr @stbi_load(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) #1

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

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

; Function Attrs: nounwind uwtable
define dso_local void @mImageLoad(ptr noundef %0, ptr noundef %1, ...) #1 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca [256 x i8], align 16
  %6 = alloca [1 x %struct.__va_list_tag], align 16
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 256, ptr %5) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %6) #6
  %25 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %6, i64 0, i64 0
  call void @llvm.va_start.p0(ptr %25)
  %26 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 0
  %27 = load ptr, ptr %4, align 8, !tbaa !5
  %28 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %6, i64 0, i64 0
  %29 = call i32 @vsprintf(ptr noundef %26, ptr noundef %27, ptr noundef %28) #6
  %30 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %6, i64 0, i64 0
  call void @llvm.va_end.p0(ptr %30)
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #6
  %31 = load ptr, ptr %4, align 8, !tbaa !5
  %32 = call ptr @stbi_load(ptr noundef %31, ptr noundef %7, ptr noundef %8, ptr noundef %9, i32 noundef 0)
  store ptr %32, ptr %10, align 8, !tbaa !5
  br label %33

33:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  store i32 3, ptr %11, align 4, !tbaa !9
  %34 = load i32, ptr %11, align 4, !tbaa !9
  %35 = icmp eq i32 %34, 2
  br i1 %35, label %36, label %44

36:                                               ; preds = %33
  %37 = load ptr, ptr %3, align 8, !tbaa !5
  %38 = load i32, ptr %9, align 4, !tbaa !9
  %39 = add nsw i32 %38, 0
  %40 = load i32, ptr %8, align 4, !tbaa !9
  %41 = load ptr, ptr %3, align 8, !tbaa !5
  %42 = getelementptr inbounds %struct.MImage, ptr %41, i32 0, i32 3
  %43 = getelementptr inbounds [4 x ptr], ptr %42, i64 0, i64 0
  call void @ImageRedefine(ptr noundef %37, i32 noundef -1, i32 noundef %39, i32 noundef %40, ptr noundef %43)
  br label %76

44:                                               ; preds = %33
  %45 = load i32, ptr %11, align 4, !tbaa !9
  %46 = icmp eq i32 %45, 3
  br i1 %46, label %47, label %56

47:                                               ; preds = %44
  %48 = load ptr, ptr %3, align 8, !tbaa !5
  %49 = load i32, ptr %9, align 4, !tbaa !9
  %50 = add nsw i32 %49, 0
  %51 = load i32, ptr %8, align 4, !tbaa !9
  %52 = load i32, ptr %7, align 4, !tbaa !9
  %53 = load ptr, ptr %3, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.MImage, ptr %53, i32 0, i32 3
  %55 = getelementptr inbounds [4 x ptr], ptr %54, i64 0, i64 0
  call void @ImageRedefine(ptr noundef %48, i32 noundef %50, i32 noundef %51, i32 noundef %52, ptr noundef %55)
  br label %75

56:                                               ; preds = %44
  %57 = load i32, ptr %11, align 4, !tbaa !9
  %58 = icmp eq i32 %57, 4
  br i1 %58, label %59, label %65

59:                                               ; preds = %56
  %60 = load ptr, ptr %3, align 8, !tbaa !5
  %61 = load i32, ptr %9, align 4, !tbaa !9
  %62 = add nsw i32 %61, 0
  %63 = load i32, ptr %8, align 4, !tbaa !9
  %64 = load i32, ptr %7, align 4, !tbaa !9
  call void @ImageRedefine(ptr noundef %60, i32 noundef %62, i32 noundef %63, i32 noundef %64, ptr noundef inttoptr (i64 -1 to ptr))
  br label %74

65:                                               ; preds = %56
  br label %66

66:                                               ; preds = %65
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  store i32 1, ptr %12, align 4, !tbaa !9
  %67 = load i32, ptr %12, align 4, !tbaa !9
  %68 = icmp ne i32 %67, 0
  br i1 %68, label %69, label %71

69:                                               ; preds = %66
  %70 = load i32, ptr %12, align 4, !tbaa !9
  call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef %70, i32 noundef -1, ptr noundef @.str.9, i32 noundef 15, ptr noundef @__FUNCTION__.mImageLoad, ptr noundef @.str.10)
  br label %71

71:                                               ; preds = %69, %66
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  br label %72

72:                                               ; preds = %71
  br label %73

73:                                               ; preds = %72
  br label %74

74:                                               ; preds = %73, %59
  br label %75

75:                                               ; preds = %74, %47
  br label %76

76:                                               ; preds = %75, %36
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  br label %77

77:                                               ; preds = %76
  br label %78

78:                                               ; preds = %77
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #6
  %79 = load i32, ptr %9, align 4, !tbaa !9
  %80 = icmp sge i32 %79, 3
  br i1 %80, label %81, label %97

81:                                               ; preds = %78
  %82 = load ptr, ptr %3, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.MImage, ptr %82, i32 0, i32 3
  %84 = getelementptr inbounds [4 x ptr], ptr %83, i64 0, i64 0
  %85 = load ptr, ptr %84, align 8, !tbaa !5
  store ptr %85, ptr %13, align 8, !tbaa !5
  %86 = load ptr, ptr %3, align 8, !tbaa !5
  %87 = getelementptr inbounds %struct.MImage, ptr %86, i32 0, i32 3
  %88 = getelementptr inbounds [4 x ptr], ptr %87, i64 0, i64 2
  %89 = load ptr, ptr %88, align 8, !tbaa !5
  %90 = load ptr, ptr %3, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.MImage, ptr %90, i32 0, i32 3
  %92 = getelementptr inbounds [4 x ptr], ptr %91, i64 0, i64 0
  store ptr %89, ptr %92, align 8, !tbaa !5
  %93 = load ptr, ptr %13, align 8, !tbaa !5
  %94 = load ptr, ptr %3, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.MImage, ptr %94, i32 0, i32 3
  %96 = getelementptr inbounds [4 x ptr], ptr %95, i64 0, i64 2
  store ptr %93, ptr %96, align 8, !tbaa !5
  br label %97

97:                                               ; preds = %81, %78
  br label %98

98:                                               ; preds = %97
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  %99 = load i8, ptr @.str.11, align 1, !tbaa !11
  %100 = sext i8 %99 to i32
  %101 = icmp ne i32 %100, 0
  %102 = zext i1 %101 to i32
  store i32 %102, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #6
  store i64 0, ptr %15, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #6
  store i64 -1, ptr %16, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #6
  store i64 -1, ptr %17, align 8, !tbaa !12
  %103 = load i32, ptr %14, align 4, !tbaa !9
  %104 = icmp eq i32 %103, 0
  br i1 %104, label %105, label %179

105:                                              ; preds = %98
  br label %106

106:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  %107 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @morn_data_type)
  store i32 0, ptr %107, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  %108 = load i32, ptr %18, align 4, !tbaa !9
  %109 = icmp eq i32 %108, 0
  br i1 %109, label %110, label %113

110:                                              ; preds = %106
  %111 = load ptr, ptr %3, align 8, !tbaa !5
  %112 = load ptr, ptr %10, align 8, !tbaa !5
  call void @mImageDataInputU8(ptr noundef %111, ptr noundef %112, i32 noundef -1, ptr noundef null, ptr noundef null)
  br label %176

113:                                              ; preds = %106
  %114 = load i32, ptr %18, align 4, !tbaa !9
  %115 = icmp eq i32 %114, 1
  br i1 %115, label %116, label %119

116:                                              ; preds = %113
  %117 = load ptr, ptr %3, align 8, !tbaa !5
  %118 = load ptr, ptr %10, align 8, !tbaa !5
  call void @mImageDataInputS8(ptr noundef %117, ptr noundef %118, i32 noundef -1, ptr noundef null, ptr noundef null)
  br label %175

119:                                              ; preds = %113
  %120 = load i32, ptr %18, align 4, !tbaa !9
  %121 = icmp eq i32 %120, 2
  br i1 %121, label %122, label %125

122:                                              ; preds = %119
  %123 = load ptr, ptr %3, align 8, !tbaa !5
  %124 = load ptr, ptr %10, align 8, !tbaa !5
  call void @mImageDataInputU16(ptr noundef %123, ptr noundef %124, i32 noundef -1, ptr noundef null, ptr noundef null)
  br label %174

125:                                              ; preds = %119
  %126 = load i32, ptr %18, align 4, !tbaa !9
  %127 = icmp eq i32 %126, 3
  br i1 %127, label %128, label %131

128:                                              ; preds = %125
  %129 = load ptr, ptr %3, align 8, !tbaa !5
  %130 = load ptr, ptr %10, align 8, !tbaa !5
  call void @mImageDataInputS16(ptr noundef %129, ptr noundef %130, i32 noundef -1, ptr noundef null, ptr noundef null)
  br label %173

131:                                              ; preds = %125
  %132 = load i32, ptr %18, align 4, !tbaa !9
  %133 = icmp eq i32 %132, 4
  br i1 %133, label %134, label %137

134:                                              ; preds = %131
  %135 = load ptr, ptr %3, align 8, !tbaa !5
  %136 = load ptr, ptr %10, align 8, !tbaa !5
  call void @mImageDataInputU32(ptr noundef %135, ptr noundef %136, i32 noundef -1, ptr noundef null, ptr noundef null)
  br label %172

137:                                              ; preds = %131
  %138 = load i32, ptr %18, align 4, !tbaa !9
  %139 = icmp eq i32 %138, 5
  br i1 %139, label %140, label %143

140:                                              ; preds = %137
  %141 = load ptr, ptr %3, align 8, !tbaa !5
  %142 = load ptr, ptr %10, align 8, !tbaa !5
  call void @mImageDataInputS32(ptr noundef %141, ptr noundef %142, i32 noundef -1, ptr noundef null, ptr noundef null)
  br label %171

143:                                              ; preds = %137
  %144 = load i32, ptr %18, align 4, !tbaa !9
  %145 = icmp eq i32 %144, 8
  br i1 %145, label %146, label %149

146:                                              ; preds = %143
  %147 = load ptr, ptr %3, align 8, !tbaa !5
  %148 = load ptr, ptr %10, align 8, !tbaa !5
  call void @mImageDataInputF32(ptr noundef %147, ptr noundef %148, i32 noundef -1, ptr noundef null, ptr noundef null)
  br label %170

149:                                              ; preds = %143
  %150 = load i32, ptr %18, align 4, !tbaa !9
  %151 = icmp eq i32 %150, 7
  br i1 %151, label %152, label %155

152:                                              ; preds = %149
  %153 = load ptr, ptr %3, align 8, !tbaa !5
  %154 = load ptr, ptr %10, align 8, !tbaa !5
  call void @mImageDataInputS64(ptr noundef %153, ptr noundef %154, i32 noundef -1, ptr noundef null, ptr noundef null)
  br label %169

155:                                              ; preds = %149
  %156 = load i32, ptr %18, align 4, !tbaa !9
  %157 = icmp eq i32 %156, 6
  br i1 %157, label %158, label %161

158:                                              ; preds = %155
  %159 = load ptr, ptr %3, align 8, !tbaa !5
  %160 = load ptr, ptr %10, align 8, !tbaa !5
  call void @mImageDataInputU64(ptr noundef %159, ptr noundef %160, i32 noundef -1, ptr noundef null, ptr noundef null)
  br label %168

161:                                              ; preds = %155
  %162 = load i32, ptr %18, align 4, !tbaa !9
  %163 = icmp eq i32 %162, 9
  br i1 %163, label %164, label %167

164:                                              ; preds = %161
  %165 = load ptr, ptr %3, align 8, !tbaa !5
  %166 = load ptr, ptr %10, align 8, !tbaa !5
  call void @mImageDataInputD64(ptr noundef %165, ptr noundef %166, i32 noundef -1, ptr noundef null, ptr noundef null)
  br label %167

167:                                              ; preds = %164, %161
  br label %168

168:                                              ; preds = %167, %158
  br label %169

169:                                              ; preds = %168, %152
  br label %170

170:                                              ; preds = %169, %146
  br label %171

171:                                              ; preds = %170, %140
  br label %172

172:                                              ; preds = %171, %134
  br label %173

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

174:                                              ; preds = %173, %122
  br label %175

175:                                              ; preds = %174, %116
  br label %176

176:                                              ; preds = %175, %110
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  br label %177

177:                                              ; preds = %176
  br label %178

178:                                              ; preds = %177
  br label %758

179:                                              ; preds = %98
  %180 = load i32, ptr %14, align 4, !tbaa !9
  %181 = icmp eq i32 %180, 1
  br i1 %181, label %182, label %374

182:                                              ; preds = %179
  %183 = load i64, ptr %15, align 8, !tbaa !12
  %184 = icmp slt i64 %183, 6
  br i1 %184, label %185, label %279

185:                                              ; preds = %182
  br label %186

186:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  %187 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @morn_data_type)
  store i32 0, ptr %187, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  %188 = load i32, ptr %19, align 4, !tbaa !9
  %189 = icmp eq i32 %188, 0
  br i1 %189, label %190, label %195

190:                                              ; preds = %186
  %191 = load ptr, ptr %3, align 8, !tbaa !5
  %192 = load ptr, ptr %10, align 8, !tbaa !5
  %193 = load i64, ptr %15, align 8, !tbaa !12
  %194 = trunc i64 %193 to i32
  call void @mImageDataInputU8(ptr noundef %191, ptr noundef %192, i32 noundef %194, ptr noundef null, ptr noundef null)
  br label %276

195:                                              ; preds = %186
  %196 = load i32, ptr %19, align 4, !tbaa !9
  %197 = icmp eq i32 %196, 1
  br i1 %197, label %198, label %203

198:                                              ; preds = %195
  %199 = load ptr, ptr %3, align 8, !tbaa !5
  %200 = load ptr, ptr %10, align 8, !tbaa !5
  %201 = load i64, ptr %15, align 8, !tbaa !12
  %202 = trunc i64 %201 to i32
  call void @mImageDataInputS8(ptr noundef %199, ptr noundef %200, i32 noundef %202, ptr noundef null, ptr noundef null)
  br label %275

203:                                              ; preds = %195
  %204 = load i32, ptr %19, align 4, !tbaa !9
  %205 = icmp eq i32 %204, 2
  br i1 %205, label %206, label %211

206:                                              ; preds = %203
  %207 = load ptr, ptr %3, align 8, !tbaa !5
  %208 = load ptr, ptr %10, align 8, !tbaa !5
  %209 = load i64, ptr %15, align 8, !tbaa !12
  %210 = trunc i64 %209 to i32
  call void @mImageDataInputU16(ptr noundef %207, ptr noundef %208, i32 noundef %210, ptr noundef null, ptr noundef null)
  br label %274

211:                                              ; preds = %203
  %212 = load i32, ptr %19, align 4, !tbaa !9
  %213 = icmp eq i32 %212, 3
  br i1 %213, label %214, label %219

214:                                              ; preds = %211
  %215 = load ptr, ptr %3, align 8, !tbaa !5
  %216 = load ptr, ptr %10, align 8, !tbaa !5
  %217 = load i64, ptr %15, align 8, !tbaa !12
  %218 = trunc i64 %217 to i32
  call void @mImageDataInputS16(ptr noundef %215, ptr noundef %216, i32 noundef %218, ptr noundef null, ptr noundef null)
  br label %273

219:                                              ; preds = %211
  %220 = load i32, ptr %19, align 4, !tbaa !9
  %221 = icmp eq i32 %220, 4
  br i1 %221, label %222, label %227

222:                                              ; preds = %219
  %223 = load ptr, ptr %3, align 8, !tbaa !5
  %224 = load ptr, ptr %10, align 8, !tbaa !5
  %225 = load i64, ptr %15, align 8, !tbaa !12
  %226 = trunc i64 %225 to i32
  call void @mImageDataInputU32(ptr noundef %223, ptr noundef %224, i32 noundef %226, ptr noundef null, ptr noundef null)
  br label %272

227:                                              ; preds = %219
  %228 = load i32, ptr %19, align 4, !tbaa !9
  %229 = icmp eq i32 %228, 5
  br i1 %229, label %230, label %235

230:                                              ; preds = %227
  %231 = load ptr, ptr %3, align 8, !tbaa !5
  %232 = load ptr, ptr %10, align 8, !tbaa !5
  %233 = load i64, ptr %15, align 8, !tbaa !12
  %234 = trunc i64 %233 to i32
  call void @mImageDataInputS32(ptr noundef %231, ptr noundef %232, i32 noundef %234, ptr noundef null, ptr noundef null)
  br label %271

235:                                              ; preds = %227
  %236 = load i32, ptr %19, align 4, !tbaa !9
  %237 = icmp eq i32 %236, 8
  br i1 %237, label %238, label %243

238:                                              ; preds = %235
  %239 = load ptr, ptr %3, align 8, !tbaa !5
  %240 = load ptr, ptr %10, align 8, !tbaa !5
  %241 = load i64, ptr %15, align 8, !tbaa !12
  %242 = trunc i64 %241 to i32
  call void @mImageDataInputF32(ptr noundef %239, ptr noundef %240, i32 noundef %242, ptr noundef null, ptr noundef null)
  br label %270

243:                                              ; preds = %235
  %244 = load i32, ptr %19, align 4, !tbaa !9
  %245 = icmp eq i32 %244, 7
  br i1 %245, label %246, label %251

246:                                              ; preds = %243
  %247 = load ptr, ptr %3, align 8, !tbaa !5
  %248 = load ptr, ptr %10, align 8, !tbaa !5
  %249 = load i64, ptr %15, align 8, !tbaa !12
  %250 = trunc i64 %249 to i32
  call void @mImageDataInputS64(ptr noundef %247, ptr noundef %248, i32 noundef %250, ptr noundef null, ptr noundef null)
  br label %269

251:                                              ; preds = %243
  %252 = load i32, ptr %19, align 4, !tbaa !9
  %253 = icmp eq i32 %252, 6
  br i1 %253, label %254, label %259

254:                                              ; preds = %251
  %255 = load ptr, ptr %3, align 8, !tbaa !5
  %256 = load ptr, ptr %10, align 8, !tbaa !5
  %257 = load i64, ptr %15, align 8, !tbaa !12
  %258 = trunc i64 %257 to i32
  call void @mImageDataInputU64(ptr noundef %255, ptr noundef %256, i32 noundef %258, ptr noundef null, ptr noundef null)
  br label %268

259:                                              ; preds = %251
  %260 = load i32, ptr %19, align 4, !tbaa !9
  %261 = icmp eq i32 %260, 9
  br i1 %261, label %262, label %267

262:                                              ; preds = %259
  %263 = load ptr, ptr %3, align 8, !tbaa !5
  %264 = load ptr, ptr %10, align 8, !tbaa !5
  %265 = load i64, ptr %15, align 8, !tbaa !12
  %266 = trunc i64 %265 to i32
  call void @mImageDataInputD64(ptr noundef %263, ptr noundef %264, i32 noundef %266, ptr noundef null, ptr noundef null)
  br label %267

267:                                              ; preds = %262, %259
  br label %268

268:                                              ; preds = %267, %254
  br label %269

269:                                              ; preds = %268, %246
  br label %270

270:                                              ; preds = %269, %238
  br label %271

271:                                              ; preds = %270, %230
  br label %272

272:                                              ; preds = %271, %222
  br label %273

273:                                              ; preds = %272, %214
  br label %274

274:                                              ; preds = %273, %206
  br label %275

275:                                              ; preds = %274, %198
  br label %276

276:                                              ; preds = %275, %190
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  br label %277

277:                                              ; preds = %276
  br label %278

278:                                              ; preds = %277
  br label %373

279:                                              ; preds = %182
  br label %280

280:                                              ; preds = %279
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  %281 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @morn_data_type)
  store i32 0, ptr %281, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  %282 = load i32, ptr %20, align 4, !tbaa !9
  %283 = icmp eq i32 %282, 0
  br i1 %283, label %284, label %289

284:                                              ; preds = %280
  %285 = load ptr, ptr %3, align 8, !tbaa !5
  %286 = load ptr, ptr %10, align 8, !tbaa !5
  %287 = load i64, ptr %15, align 8, !tbaa !12
  %288 = inttoptr i64 %287 to ptr
  call void @mImageDataInputU8(ptr noundef %285, ptr noundef %286, i32 noundef -1, ptr noundef %288, ptr noundef null)
  br label %370

289:                                              ; preds = %280
  %290 = load i32, ptr %20, align 4, !tbaa !9
  %291 = icmp eq i32 %290, 1
  br i1 %291, label %292, label %297

292:                                              ; preds = %289
  %293 = load ptr, ptr %3, align 8, !tbaa !5
  %294 = load ptr, ptr %10, align 8, !tbaa !5
  %295 = load i64, ptr %15, align 8, !tbaa !12
  %296 = inttoptr i64 %295 to ptr
  call void @mImageDataInputS8(ptr noundef %293, ptr noundef %294, i32 noundef -1, ptr noundef %296, ptr noundef null)
  br label %369

297:                                              ; preds = %289
  %298 = load i32, ptr %20, align 4, !tbaa !9
  %299 = icmp eq i32 %298, 2
  br i1 %299, label %300, label %305

300:                                              ; preds = %297
  %301 = load ptr, ptr %3, align 8, !tbaa !5
  %302 = load ptr, ptr %10, align 8, !tbaa !5
  %303 = load i64, ptr %15, align 8, !tbaa !12
  %304 = inttoptr i64 %303 to ptr
  call void @mImageDataInputU16(ptr noundef %301, ptr noundef %302, i32 noundef -1, ptr noundef %304, ptr noundef null)
  br label %368

305:                                              ; preds = %297
  %306 = load i32, ptr %20, align 4, !tbaa !9
  %307 = icmp eq i32 %306, 3
  br i1 %307, label %308, label %313

308:                                              ; preds = %305
  %309 = load ptr, ptr %3, align 8, !tbaa !5
  %310 = load ptr, ptr %10, align 8, !tbaa !5
  %311 = load i64, ptr %15, align 8, !tbaa !12
  %312 = inttoptr i64 %311 to ptr
  call void @mImageDataInputS16(ptr noundef %309, ptr noundef %310, i32 noundef -1, ptr noundef %312, ptr noundef null)
  br label %367

313:                                              ; preds = %305
  %314 = load i32, ptr %20, align 4, !tbaa !9
  %315 = icmp eq i32 %314, 4
  br i1 %315, label %316, label %321

316:                                              ; preds = %313
  %317 = load ptr, ptr %3, align 8, !tbaa !5
  %318 = load ptr, ptr %10, align 8, !tbaa !5
  %319 = load i64, ptr %15, align 8, !tbaa !12
  %320 = inttoptr i64 %319 to ptr
  call void @mImageDataInputU32(ptr noundef %317, ptr noundef %318, i32 noundef -1, ptr noundef %320, ptr noundef null)
  br label %366

321:                                              ; preds = %313
  %322 = load i32, ptr %20, align 4, !tbaa !9
  %323 = icmp eq i32 %322, 5
  br i1 %323, label %324, label %329

324:                                              ; preds = %321
  %325 = load ptr, ptr %3, align 8, !tbaa !5
  %326 = load ptr, ptr %10, align 8, !tbaa !5
  %327 = load i64, ptr %15, align 8, !tbaa !12
  %328 = inttoptr i64 %327 to ptr
  call void @mImageDataInputS32(ptr noundef %325, ptr noundef %326, i32 noundef -1, ptr noundef %328, ptr noundef null)
  br label %365

329:                                              ; preds = %321
  %330 = load i32, ptr %20, align 4, !tbaa !9
  %331 = icmp eq i32 %330, 8
  br i1 %331, label %332, label %337

332:                                              ; preds = %329
  %333 = load ptr, ptr %3, align 8, !tbaa !5
  %334 = load ptr, ptr %10, align 8, !tbaa !5
  %335 = load i64, ptr %15, align 8, !tbaa !12
  %336 = inttoptr i64 %335 to ptr
  call void @mImageDataInputF32(ptr noundef %333, ptr noundef %334, i32 noundef -1, ptr noundef %336, ptr noundef null)
  br label %364

337:                                              ; preds = %329
  %338 = load i32, ptr %20, align 4, !tbaa !9
  %339 = icmp eq i32 %338, 7
  br i1 %339, label %340, label %345

340:                                              ; preds = %337
  %341 = load ptr, ptr %3, align 8, !tbaa !5
  %342 = load ptr, ptr %10, align 8, !tbaa !5
  %343 = load i64, ptr %15, align 8, !tbaa !12
  %344 = inttoptr i64 %343 to ptr
  call void @mImageDataInputS64(ptr noundef %341, ptr noundef %342, i32 noundef -1, ptr noundef %344, ptr noundef null)
  br label %363

345:                                              ; preds = %337
  %346 = load i32, ptr %20, align 4, !tbaa !9
  %347 = icmp eq i32 %346, 6
  br i1 %347, label %348, label %353

348:                                              ; preds = %345
  %349 = load ptr, ptr %3, align 8, !tbaa !5
  %350 = load ptr, ptr %10, align 8, !tbaa !5
  %351 = load i64, ptr %15, align 8, !tbaa !12
  %352 = inttoptr i64 %351 to ptr
  call void @mImageDataInputU64(ptr noundef %349, ptr noundef %350, i32 noundef -1, ptr noundef %352, ptr noundef null)
  br label %362

353:                                              ; preds = %345
  %354 = load i32, ptr %20, align 4, !tbaa !9
  %355 = icmp eq i32 %354, 9
  br i1 %355, label %356, label %361

356:                                              ; preds = %353
  %357 = load ptr, ptr %3, align 8, !tbaa !5
  %358 = load ptr, ptr %10, align 8, !tbaa !5
  %359 = load i64, ptr %15, align 8, !tbaa !12
  %360 = inttoptr i64 %359 to ptr
  call void @mImageDataInputD64(ptr noundef %357, ptr noundef %358, i32 noundef -1, ptr noundef %360, ptr noundef null)
  br label %361

361:                                              ; preds = %356, %353
  br label %362

362:                                              ; preds = %361, %348
  br label %363

363:                                              ; preds = %362, %340
  br label %364

364:                                              ; preds = %363, %332
  br label %365

365:                                              ; preds = %364, %324
  br label %366

366:                                              ; preds = %365, %316
  br label %367

367:                                              ; preds = %366, %308
  br label %368

368:                                              ; preds = %367, %300
  br label %369

369:                                              ; preds = %368, %292
  br label %370

370:                                              ; preds = %369, %284
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  br label %371

371:                                              ; preds = %370
  br label %372

372:                                              ; preds = %371
  br label %373

373:                                              ; preds = %372, %278
  br label %757

374:                                              ; preds = %179
  %375 = load i32, ptr %14, align 4, !tbaa !9
  %376 = icmp eq i32 %375, 2
  br i1 %376, label %377, label %609

377:                                              ; preds = %374
  %378 = load i64, ptr %15, align 8, !tbaa !12
  %379 = icmp slt i64 %378, 6
  br i1 %379, label %380, label %494

380:                                              ; preds = %377
  br label %381

381:                                              ; preds = %380
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #6
  %382 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @morn_data_type)
  store i32 0, ptr %382, align 4, !tbaa !9
  store i32 0, ptr %21, align 4, !tbaa !9
  %383 = load i32, ptr %21, align 4, !tbaa !9
  %384 = icmp eq i32 %383, 0
  br i1 %384, label %385, label %392

385:                                              ; preds = %381
  %386 = load ptr, ptr %3, align 8, !tbaa !5
  %387 = load ptr, ptr %10, align 8, !tbaa !5
  %388 = load i64, ptr %15, align 8, !tbaa !12
  %389 = trunc i64 %388 to i32
  %390 = load i64, ptr %16, align 8, !tbaa !12
  %391 = inttoptr i64 %390 to ptr
  call void @mImageDataInputU8(ptr noundef %386, ptr noundef %387, i32 noundef %389, ptr noundef %391, ptr noundef null)
  br label %491

392:                                              ; preds = %381
  %393 = load i32, ptr %21, align 4, !tbaa !9
  %394 = icmp eq i32 %393, 1
  br i1 %394, label %395, label %402

395:                                              ; preds = %392
  %396 = load ptr, ptr %3, align 8, !tbaa !5
  %397 = load ptr, ptr %10, align 8, !tbaa !5
  %398 = load i64, ptr %15, align 8, !tbaa !12
  %399 = trunc i64 %398 to i32
  %400 = load i64, ptr %16, align 8, !tbaa !12
  %401 = inttoptr i64 %400 to ptr
  call void @mImageDataInputS8(ptr noundef %396, ptr noundef %397, i32 noundef %399, ptr noundef %401, ptr noundef null)
  br label %490

402:                                              ; preds = %392
  %403 = load i32, ptr %21, align 4, !tbaa !9
  %404 = icmp eq i32 %403, 2
  br i1 %404, label %405, label %412

405:                                              ; preds = %402
  %406 = load ptr, ptr %3, align 8, !tbaa !5
  %407 = load ptr, ptr %10, align 8, !tbaa !5
  %408 = load i64, ptr %15, align 8, !tbaa !12
  %409 = trunc i64 %408 to i32
  %410 = load i64, ptr %16, align 8, !tbaa !12
  %411 = inttoptr i64 %410 to ptr
  call void @mImageDataInputU16(ptr noundef %406, ptr noundef %407, i32 noundef %409, ptr noundef %411, ptr noundef null)
  br label %489

412:                                              ; preds = %402
  %413 = load i32, ptr %21, align 4, !tbaa !9
  %414 = icmp eq i32 %413, 3
  br i1 %414, label %415, label %422

415:                                              ; preds = %412
  %416 = load ptr, ptr %3, align 8, !tbaa !5
  %417 = load ptr, ptr %10, align 8, !tbaa !5
  %418 = load i64, ptr %15, align 8, !tbaa !12
  %419 = trunc i64 %418 to i32
  %420 = load i64, ptr %16, align 8, !tbaa !12
  %421 = inttoptr i64 %420 to ptr
  call void @mImageDataInputS16(ptr noundef %416, ptr noundef %417, i32 noundef %419, ptr noundef %421, ptr noundef null)
  br label %488

422:                                              ; preds = %412
  %423 = load i32, ptr %21, align 4, !tbaa !9
  %424 = icmp eq i32 %423, 4
  br i1 %424, label %425, label %432

425:                                              ; preds = %422
  %426 = load ptr, ptr %3, align 8, !tbaa !5
  %427 = load ptr, ptr %10, align 8, !tbaa !5
  %428 = load i64, ptr %15, align 8, !tbaa !12
  %429 = trunc i64 %428 to i32
  %430 = load i64, ptr %16, align 8, !tbaa !12
  %431 = inttoptr i64 %430 to ptr
  call void @mImageDataInputU32(ptr noundef %426, ptr noundef %427, i32 noundef %429, ptr noundef %431, ptr noundef null)
  br label %487

432:                                              ; preds = %422
  %433 = load i32, ptr %21, align 4, !tbaa !9
  %434 = icmp eq i32 %433, 5
  br i1 %434, label %435, label %442

435:                                              ; preds = %432
  %436 = load ptr, ptr %3, align 8, !tbaa !5
  %437 = load ptr, ptr %10, align 8, !tbaa !5
  %438 = load i64, ptr %15, align 8, !tbaa !12
  %439 = trunc i64 %438 to i32
  %440 = load i64, ptr %16, align 8, !tbaa !12
  %441 = inttoptr i64 %440 to ptr
  call void @mImageDataInputS32(ptr noundef %436, ptr noundef %437, i32 noundef %439, ptr noundef %441, ptr noundef null)
  br label %486

442:                                              ; preds = %432
  %443 = load i32, ptr %21, align 4, !tbaa !9
  %444 = icmp eq i32 %443, 8
  br i1 %444, label %445, label %452

445:                                              ; preds = %442
  %446 = load ptr, ptr %3, align 8, !tbaa !5
  %447 = load ptr, ptr %10, align 8, !tbaa !5
  %448 = load i64, ptr %15, align 8, !tbaa !12
  %449 = trunc i64 %448 to i32
  %450 = load i64, ptr %16, align 8, !tbaa !12
  %451 = inttoptr i64 %450 to ptr
  call void @mImageDataInputF32(ptr noundef %446, ptr noundef %447, i32 noundef %449, ptr noundef %451, ptr noundef null)
  br label %485

452:                                              ; preds = %442
  %453 = load i32, ptr %21, align 4, !tbaa !9
  %454 = icmp eq i32 %453, 7
  br i1 %454, label %455, label %462

455:                                              ; preds = %452
  %456 = load ptr, ptr %3, align 8, !tbaa !5
  %457 = load ptr, ptr %10, align 8, !tbaa !5
  %458 = load i64, ptr %15, align 8, !tbaa !12
  %459 = trunc i64 %458 to i32
  %460 = load i64, ptr %16, align 8, !tbaa !12
  %461 = inttoptr i64 %460 to ptr
  call void @mImageDataInputS64(ptr noundef %456, ptr noundef %457, i32 noundef %459, ptr noundef %461, ptr noundef null)
  br label %484

462:                                              ; preds = %452
  %463 = load i32, ptr %21, align 4, !tbaa !9
  %464 = icmp eq i32 %463, 6
  br i1 %464, label %465, label %472

465:                                              ; preds = %462
  %466 = load ptr, ptr %3, align 8, !tbaa !5
  %467 = load ptr, ptr %10, align 8, !tbaa !5
  %468 = load i64, ptr %15, align 8, !tbaa !12
  %469 = trunc i64 %468 to i32
  %470 = load i64, ptr %16, align 8, !tbaa !12
  %471 = inttoptr i64 %470 to ptr
  call void @mImageDataInputU64(ptr noundef %466, ptr noundef %467, i32 noundef %469, ptr noundef %471, ptr noundef null)
  br label %483

472:                                              ; preds = %462
  %473 = load i32, ptr %21, align 4, !tbaa !9
  %474 = icmp eq i32 %473, 9
  br i1 %474, label %475, label %482

475:                                              ; preds = %472
  %476 = load ptr, ptr %3, align 8, !tbaa !5
  %477 = load ptr, ptr %10, align 8, !tbaa !5
  %478 = load i64, ptr %15, align 8, !tbaa !12
  %479 = trunc i64 %478 to i32
  %480 = load i64, ptr %16, align 8, !tbaa !12
  %481 = inttoptr i64 %480 to ptr
  call void @mImageDataInputD64(ptr noundef %476, ptr noundef %477, i32 noundef %479, ptr noundef %481, ptr noundef null)
  br label %482

482:                                              ; preds = %475, %472
  br label %483

483:                                              ; preds = %482, %465
  br label %484

484:                                              ; preds = %483, %455
  br label %485

485:                                              ; preds = %484, %445
  br label %486

486:                                              ; preds = %485, %435
  br label %487

487:                                              ; preds = %486, %425
  br label %488

488:                                              ; preds = %487, %415
  br label %489

489:                                              ; preds = %488, %405
  br label %490

490:                                              ; preds = %489, %395
  br label %491

491:                                              ; preds = %490, %385
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  br label %492

492:                                              ; preds = %491
  br label %493

493:                                              ; preds = %492
  br label %608

494:                                              ; preds = %377
  br label %495

495:                                              ; preds = %494
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  %496 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @morn_data_type)
  store i32 0, ptr %496, align 4, !tbaa !9
  store i32 0, ptr %22, align 4, !tbaa !9
  %497 = load i32, ptr %22, align 4, !tbaa !9
  %498 = icmp eq i32 %497, 0
  br i1 %498, label %499, label %506

499:                                              ; preds = %495
  %500 = load ptr, ptr %3, align 8, !tbaa !5
  %501 = load ptr, ptr %10, align 8, !tbaa !5
  %502 = load i64, ptr %15, align 8, !tbaa !12
  %503 = inttoptr i64 %502 to ptr
  %504 = load i64, ptr %17, align 8, !tbaa !12
  %505 = inttoptr i64 %504 to ptr
  call void @mImageDataInputU8(ptr noundef %500, ptr noundef %501, i32 noundef -1, ptr noundef %503, ptr noundef %505)
  br label %605

506:                                              ; preds = %495
  %507 = load i32, ptr %22, align 4, !tbaa !9
  %508 = icmp eq i32 %507, 1
  br i1 %508, label %509, label %516

509:                                              ; preds = %506
  %510 = load ptr, ptr %3, align 8, !tbaa !5
  %511 = load ptr, ptr %10, align 8, !tbaa !5
  %512 = load i64, ptr %15, align 8, !tbaa !12
  %513 = inttoptr i64 %512 to ptr
  %514 = load i64, ptr %17, align 8, !tbaa !12
  %515 = inttoptr i64 %514 to ptr
  call void @mImageDataInputS8(ptr noundef %510, ptr noundef %511, i32 noundef -1, ptr noundef %513, ptr noundef %515)
  br label %604

516:                                              ; preds = %506
  %517 = load i32, ptr %22, align 4, !tbaa !9
  %518 = icmp eq i32 %517, 2
  br i1 %518, label %519, label %526

519:                                              ; preds = %516
  %520 = load ptr, ptr %3, align 8, !tbaa !5
  %521 = load ptr, ptr %10, align 8, !tbaa !5
  %522 = load i64, ptr %15, align 8, !tbaa !12
  %523 = inttoptr i64 %522 to ptr
  %524 = load i64, ptr %17, align 8, !tbaa !12
  %525 = inttoptr i64 %524 to ptr
  call void @mImageDataInputU16(ptr noundef %520, ptr noundef %521, i32 noundef -1, ptr noundef %523, ptr noundef %525)
  br label %603

526:                                              ; preds = %516
  %527 = load i32, ptr %22, align 4, !tbaa !9
  %528 = icmp eq i32 %527, 3
  br i1 %528, label %529, label %536

529:                                              ; preds = %526
  %530 = load ptr, ptr %3, align 8, !tbaa !5
  %531 = load ptr, ptr %10, align 8, !tbaa !5
  %532 = load i64, ptr %15, align 8, !tbaa !12
  %533 = inttoptr i64 %532 to ptr
  %534 = load i64, ptr %17, align 8, !tbaa !12
  %535 = inttoptr i64 %534 to ptr
  call void @mImageDataInputS16(ptr noundef %530, ptr noundef %531, i32 noundef -1, ptr noundef %533, ptr noundef %535)
  br label %602

536:                                              ; preds = %526
  %537 = load i32, ptr %22, align 4, !tbaa !9
  %538 = icmp eq i32 %537, 4
  br i1 %538, label %539, label %546

539:                                              ; preds = %536
  %540 = load ptr, ptr %3, align 8, !tbaa !5
  %541 = load ptr, ptr %10, align 8, !tbaa !5
  %542 = load i64, ptr %15, align 8, !tbaa !12
  %543 = inttoptr i64 %542 to ptr
  %544 = load i64, ptr %17, align 8, !tbaa !12
  %545 = inttoptr i64 %544 to ptr
  call void @mImageDataInputU32(ptr noundef %540, ptr noundef %541, i32 noundef -1, ptr noundef %543, ptr noundef %545)
  br label %601

546:                                              ; preds = %536
  %547 = load i32, ptr %22, align 4, !tbaa !9
  %548 = icmp eq i32 %547, 5
  br i1 %548, label %549, label %556

549:                                              ; preds = %546
  %550 = load ptr, ptr %3, align 8, !tbaa !5
  %551 = load ptr, ptr %10, align 8, !tbaa !5
  %552 = load i64, ptr %15, align 8, !tbaa !12
  %553 = inttoptr i64 %552 to ptr
  %554 = load i64, ptr %17, align 8, !tbaa !12
  %555 = inttoptr i64 %554 to ptr
  call void @mImageDataInputS32(ptr noundef %550, ptr noundef %551, i32 noundef -1, ptr noundef %553, ptr noundef %555)
  br label %600

556:                                              ; preds = %546
  %557 = load i32, ptr %22, align 4, !tbaa !9
  %558 = icmp eq i32 %557, 8
  br i1 %558, label %559, label %566

559:                                              ; preds = %556
  %560 = load ptr, ptr %3, align 8, !tbaa !5
  %561 = load ptr, ptr %10, align 8, !tbaa !5
  %562 = load i64, ptr %15, align 8, !tbaa !12
  %563 = inttoptr i64 %562 to ptr
  %564 = load i64, ptr %17, align 8, !tbaa !12
  %565 = inttoptr i64 %564 to ptr
  call void @mImageDataInputF32(ptr noundef %560, ptr noundef %561, i32 noundef -1, ptr noundef %563, ptr noundef %565)
  br label %599

566:                                              ; preds = %556
  %567 = load i32, ptr %22, align 4, !tbaa !9
  %568 = icmp eq i32 %567, 7
  br i1 %568, label %569, label %576

569:                                              ; preds = %566
  %570 = load ptr, ptr %3, align 8, !tbaa !5
  %571 = load ptr, ptr %10, align 8, !tbaa !5
  %572 = load i64, ptr %15, align 8, !tbaa !12
  %573 = inttoptr i64 %572 to ptr
  %574 = load i64, ptr %17, align 8, !tbaa !12
  %575 = inttoptr i64 %574 to ptr
  call void @mImageDataInputS64(ptr noundef %570, ptr noundef %571, i32 noundef -1, ptr noundef %573, ptr noundef %575)
  br label %598

576:                                              ; preds = %566
  %577 = load i32, ptr %22, align 4, !tbaa !9
  %578 = icmp eq i32 %577, 6
  br i1 %578, label %579, label %586

579:                                              ; preds = %576
  %580 = load ptr, ptr %3, align 8, !tbaa !5
  %581 = load ptr, ptr %10, align 8, !tbaa !5
  %582 = load i64, ptr %15, align 8, !tbaa !12
  %583 = inttoptr i64 %582 to ptr
  %584 = load i64, ptr %17, align 8, !tbaa !12
  %585 = inttoptr i64 %584 to ptr
  call void @mImageDataInputU64(ptr noundef %580, ptr noundef %581, i32 noundef -1, ptr noundef %583, ptr noundef %585)
  br label %597

586:                                              ; preds = %576
  %587 = load i32, ptr %22, align 4, !tbaa !9
  %588 = icmp eq i32 %587, 9
  br i1 %588, label %589, label %596

589:                                              ; preds = %586
  %590 = load ptr, ptr %3, align 8, !tbaa !5
  %591 = load ptr, ptr %10, align 8, !tbaa !5
  %592 = load i64, ptr %15, align 8, !tbaa !12
  %593 = inttoptr i64 %592 to ptr
  %594 = load i64, ptr %17, align 8, !tbaa !12
  %595 = inttoptr i64 %594 to ptr
  call void @mImageDataInputD64(ptr noundef %590, ptr noundef %591, i32 noundef -1, ptr noundef %593, ptr noundef %595)
  br label %596

596:                                              ; preds = %589, %586
  br label %597

597:                                              ; preds = %596, %579
  br label %598

598:                                              ; preds = %597, %569
  br label %599

599:                                              ; preds = %598, %559
  br label %600

600:                                              ; preds = %599, %549
  br label %601

601:                                              ; preds = %600, %539
  br label %602

602:                                              ; preds = %601, %529
  br label %603

603:                                              ; preds = %602, %519
  br label %604

604:                                              ; preds = %603, %509
  br label %605

605:                                              ; preds = %604, %499
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  br label %606

606:                                              ; preds = %605
  br label %607

607:                                              ; preds = %606
  br label %608

608:                                              ; preds = %607, %493
  br label %756

609:                                              ; preds = %374
  %610 = load i32, ptr %14, align 4, !tbaa !9
  %611 = icmp eq i32 %610, 3
  br i1 %611, label %612, label %746

612:                                              ; preds = %609
  br label %613

613:                                              ; preds = %612
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  %614 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @morn_data_type)
  store i32 0, ptr %614, align 4, !tbaa !9
  store i32 0, ptr %23, align 4, !tbaa !9
  %615 = load i32, ptr %23, align 4, !tbaa !9
  %616 = icmp eq i32 %615, 0
  br i1 %616, label %617, label %626

617:                                              ; preds = %613
  %618 = load ptr, ptr %3, align 8, !tbaa !5
  %619 = load ptr, ptr %10, align 8, !tbaa !5
  %620 = load i64, ptr %15, align 8, !tbaa !12
  %621 = trunc i64 %620 to i32
  %622 = load i64, ptr %16, align 8, !tbaa !12
  %623 = inttoptr i64 %622 to ptr
  %624 = load i64, ptr %17, align 8, !tbaa !12
  %625 = inttoptr i64 %624 to ptr
  call void @mImageDataInputU8(ptr noundef %618, ptr noundef %619, i32 noundef %621, ptr noundef %623, ptr noundef %625)
  br label %743

626:                                              ; preds = %613
  %627 = load i32, ptr %23, align 4, !tbaa !9
  %628 = icmp eq i32 %627, 1
  br i1 %628, label %629, label %638

629:                                              ; preds = %626
  %630 = load ptr, ptr %3, align 8, !tbaa !5
  %631 = load ptr, ptr %10, align 8, !tbaa !5
  %632 = load i64, ptr %15, align 8, !tbaa !12
  %633 = trunc i64 %632 to i32
  %634 = load i64, ptr %16, align 8, !tbaa !12
  %635 = inttoptr i64 %634 to ptr
  %636 = load i64, ptr %17, align 8, !tbaa !12
  %637 = inttoptr i64 %636 to ptr
  call void @mImageDataInputS8(ptr noundef %630, ptr noundef %631, i32 noundef %633, ptr noundef %635, ptr noundef %637)
  br label %742

638:                                              ; preds = %626
  %639 = load i32, ptr %23, align 4, !tbaa !9
  %640 = icmp eq i32 %639, 2
  br i1 %640, label %641, label %650

641:                                              ; preds = %638
  %642 = load ptr, ptr %3, align 8, !tbaa !5
  %643 = load ptr, ptr %10, align 8, !tbaa !5
  %644 = load i64, ptr %15, align 8, !tbaa !12
  %645 = trunc i64 %644 to i32
  %646 = load i64, ptr %16, align 8, !tbaa !12
  %647 = inttoptr i64 %646 to ptr
  %648 = load i64, ptr %17, align 8, !tbaa !12
  %649 = inttoptr i64 %648 to ptr
  call void @mImageDataInputU16(ptr noundef %642, ptr noundef %643, i32 noundef %645, ptr noundef %647, ptr noundef %649)
  br label %741

650:                                              ; preds = %638
  %651 = load i32, ptr %23, align 4, !tbaa !9
  %652 = icmp eq i32 %651, 3
  br i1 %652, label %653, label %662

653:                                              ; preds = %650
  %654 = load ptr, ptr %3, align 8, !tbaa !5
  %655 = load ptr, ptr %10, align 8, !tbaa !5
  %656 = load i64, ptr %15, align 8, !tbaa !12
  %657 = trunc i64 %656 to i32
  %658 = load i64, ptr %16, align 8, !tbaa !12
  %659 = inttoptr i64 %658 to ptr
  %660 = load i64, ptr %17, align 8, !tbaa !12
  %661 = inttoptr i64 %660 to ptr
  call void @mImageDataInputS16(ptr noundef %654, ptr noundef %655, i32 noundef %657, ptr noundef %659, ptr noundef %661)
  br label %740

662:                                              ; preds = %650
  %663 = load i32, ptr %23, align 4, !tbaa !9
  %664 = icmp eq i32 %663, 4
  br i1 %664, label %665, label %674

665:                                              ; preds = %662
  %666 = load ptr, ptr %3, align 8, !tbaa !5
  %667 = load ptr, ptr %10, align 8, !tbaa !5
  %668 = load i64, ptr %15, align 8, !tbaa !12
  %669 = trunc i64 %668 to i32
  %670 = load i64, ptr %16, align 8, !tbaa !12
  %671 = inttoptr i64 %670 to ptr
  %672 = load i64, ptr %17, align 8, !tbaa !12
  %673 = inttoptr i64 %672 to ptr
  call void @mImageDataInputU32(ptr noundef %666, ptr noundef %667, i32 noundef %669, ptr noundef %671, ptr noundef %673)
  br label %739

674:                                              ; preds = %662
  %675 = load i32, ptr %23, align 4, !tbaa !9
  %676 = icmp eq i32 %675, 5
  br i1 %676, label %677, label %686

677:                                              ; preds = %674
  %678 = load ptr, ptr %3, align 8, !tbaa !5
  %679 = load ptr, ptr %10, align 8, !tbaa !5
  %680 = load i64, ptr %15, align 8, !tbaa !12
  %681 = trunc i64 %680 to i32
  %682 = load i64, ptr %16, align 8, !tbaa !12
  %683 = inttoptr i64 %682 to ptr
  %684 = load i64, ptr %17, align 8, !tbaa !12
  %685 = inttoptr i64 %684 to ptr
  call void @mImageDataInputS32(ptr noundef %678, ptr noundef %679, i32 noundef %681, ptr noundef %683, ptr noundef %685)
  br label %738

686:                                              ; preds = %674
  %687 = load i32, ptr %23, align 4, !tbaa !9
  %688 = icmp eq i32 %687, 8
  br i1 %688, label %689, label %698

689:                                              ; preds = %686
  %690 = load ptr, ptr %3, align 8, !tbaa !5
  %691 = load ptr, ptr %10, align 8, !tbaa !5
  %692 = load i64, ptr %15, align 8, !tbaa !12
  %693 = trunc i64 %692 to i32
  %694 = load i64, ptr %16, align 8, !tbaa !12
  %695 = inttoptr i64 %694 to ptr
  %696 = load i64, ptr %17, align 8, !tbaa !12
  %697 = inttoptr i64 %696 to ptr
  call void @mImageDataInputF32(ptr noundef %690, ptr noundef %691, i32 noundef %693, ptr noundef %695, ptr noundef %697)
  br label %737

698:                                              ; preds = %686
  %699 = load i32, ptr %23, align 4, !tbaa !9
  %700 = icmp eq i32 %699, 7
  br i1 %700, label %701, label %710

701:                                              ; preds = %698
  %702 = load ptr, ptr %3, align 8, !tbaa !5
  %703 = load ptr, ptr %10, align 8, !tbaa !5
  %704 = load i64, ptr %15, align 8, !tbaa !12
  %705 = trunc i64 %704 to i32
  %706 = load i64, ptr %16, align 8, !tbaa !12
  %707 = inttoptr i64 %706 to ptr
  %708 = load i64, ptr %17, align 8, !tbaa !12
  %709 = inttoptr i64 %708 to ptr
  call void @mImageDataInputS64(ptr noundef %702, ptr noundef %703, i32 noundef %705, ptr noundef %707, ptr noundef %709)
  br label %736

710:                                              ; preds = %698
  %711 = load i32, ptr %23, align 4, !tbaa !9
  %712 = icmp eq i32 %711, 6
  br i1 %712, label %713, label %722

713:                                              ; preds = %710
  %714 = load ptr, ptr %3, align 8, !tbaa !5
  %715 = load ptr, ptr %10, align 8, !tbaa !5
  %716 = load i64, ptr %15, align 8, !tbaa !12
  %717 = trunc i64 %716 to i32
  %718 = load i64, ptr %16, align 8, !tbaa !12
  %719 = inttoptr i64 %718 to ptr
  %720 = load i64, ptr %17, align 8, !tbaa !12
  %721 = inttoptr i64 %720 to ptr
  call void @mImageDataInputU64(ptr noundef %714, ptr noundef %715, i32 noundef %717, ptr noundef %719, ptr noundef %721)
  br label %735

722:                                              ; preds = %710
  %723 = load i32, ptr %23, align 4, !tbaa !9
  %724 = icmp eq i32 %723, 9
  br i1 %724, label %725, label %734

725:                                              ; preds = %722
  %726 = load ptr, ptr %3, align 8, !tbaa !5
  %727 = load ptr, ptr %10, align 8, !tbaa !5
  %728 = load i64, ptr %15, align 8, !tbaa !12
  %729 = trunc i64 %728 to i32
  %730 = load i64, ptr %16, align 8, !tbaa !12
  %731 = inttoptr i64 %730 to ptr
  %732 = load i64, ptr %17, align 8, !tbaa !12
  %733 = inttoptr i64 %732 to ptr
  call void @mImageDataInputD64(ptr noundef %726, ptr noundef %727, i32 noundef %729, ptr noundef %731, ptr noundef %733)
  br label %734

734:                                              ; preds = %725, %722
  br label %735

735:                                              ; preds = %734, %713
  br label %736

736:                                              ; preds = %735, %701
  br label %737

737:                                              ; preds = %736, %689
  br label %738

738:                                              ; preds = %737, %677
  br label %739

739:                                              ; preds = %738, %665
  br label %740

740:                                              ; preds = %739, %653
  br label %741

741:                                              ; preds = %740, %641
  br label %742

742:                                              ; preds = %741, %629
  br label %743

743:                                              ; preds = %742, %617
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  br label %744

744:                                              ; preds = %743
  br label %745

745:                                              ; preds = %744
  br label %755

746:                                              ; preds = %609
  br label %747

747:                                              ; preds = %746
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #6
  store i32 1, ptr %24, align 4, !tbaa !9
  %748 = load i32, ptr %24, align 4, !tbaa !9
  %749 = icmp ne i32 %748, 0
  br i1 %749, label %750, label %752

750:                                              ; preds = %747
  %751 = load i32, ptr %24, align 4, !tbaa !9
  call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef %751, i32 noundef -1, ptr noundef @.str.9, i32 noundef 19, ptr noundef @__FUNCTION__.mImageLoad, ptr noundef @.str.12)
  br label %752

752:                                              ; preds = %750, %747
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  br label %753

753:                                              ; preds = %752
  br label %754

754:                                              ; preds = %753
  br label %755

755:                                              ; preds = %754, %745
  br label %756

756:                                              ; preds = %755, %608
  br label %757

757:                                              ; preds = %756, %373
  br label %758

758:                                              ; preds = %757, %178
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  br label %759

759:                                              ; preds = %758
  br label %760

760:                                              ; preds = %759
  %761 = load i32, ptr %9, align 4, !tbaa !9
  %762 = icmp sge i32 %761, 3
  br i1 %762, label %763, label %779

763:                                              ; preds = %760
  %764 = load ptr, ptr %3, align 8, !tbaa !5
  %765 = getelementptr inbounds %struct.MImage, ptr %764, i32 0, i32 3
  %766 = getelementptr inbounds [4 x ptr], ptr %765, i64 0, i64 0
  %767 = load ptr, ptr %766, align 8, !tbaa !5
  store ptr %767, ptr %13, align 8, !tbaa !5
  %768 = load ptr, ptr %3, align 8, !tbaa !5
  %769 = getelementptr inbounds %struct.MImage, ptr %768, i32 0, i32 3
  %770 = getelementptr inbounds [4 x ptr], ptr %769, i64 0, i64 2
  %771 = load ptr, ptr %770, align 8, !tbaa !5
  %772 = load ptr, ptr %3, align 8, !tbaa !5
  %773 = getelementptr inbounds %struct.MImage, ptr %772, i32 0, i32 3
  %774 = getelementptr inbounds [4 x ptr], ptr %773, i64 0, i64 0
  store ptr %771, ptr %774, align 8, !tbaa !5
  %775 = load ptr, ptr %13, align 8, !tbaa !5
  %776 = load ptr, ptr %3, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct.MImage, ptr %776, i32 0, i32 3
  %778 = getelementptr inbounds [4 x ptr], ptr %777, i64 0, i64 2
  store ptr %775, ptr %778, align 8, !tbaa !5
  br label %779

779:                                              ; preds = %763, %760
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 256, ptr %5) #6
  ret void
}

; Function Attrs: nocallback nofree nosync nounwind willreturn
declare void @llvm.va_start.p0(ptr) #3

; Function Attrs: nounwind
declare i32 @vsprintf(ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: nocallback nofree nosync nounwind willreturn
declare void @llvm.va_end.p0(ptr) #3

declare void @ImageRedefine(ptr noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef) #5

declare void @m_Exception(i32 noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ...) #5

declare void @mImageDataInputU8(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) #5

declare void @mImageDataInputS8(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) #5

declare void @mImageDataInputU16(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) #5

declare void @mImageDataInputS16(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) #5

declare void @mImageDataInputU32(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) #5

declare void @mImageDataInputS32(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) #5

declare void @mImageDataInputF32(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) #5

declare void @mImageDataInputS64(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) #5

declare void @mImageDataInputU64(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) #5

declare void @mImageDataInputD64(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) #5

attributes #0 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #1 = { 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 #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { nocallback nofree nosync nounwind willreturn }
attributes #4 = { 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 #5 = { "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 #6 = { 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/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"long", !7, i64 0}


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

%struct.__va_list_tag = type { i32, i32, ptr, ptr }

@.str.11 = external hidden unnamed_addr constant [1 x i8], align 1
@morn_data_type = external thread_local local_unnamed_addr global i32, align 4

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull) #0

; Function Attrs: nounwind uwtable
declare dso_local ptr @stbi_load(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

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

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

; Function Attrs: nounwind uwtable
define dso_local void @mImageLoad(ptr noundef %0, ptr noundef %1, ...) local_unnamed_addr #1 {
  %3 = alloca [256 x i8], align 16
  %4 = alloca [1 x %struct.__va_list_tag], align 16
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %3) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #6
  call void @llvm.va_start.p0(ptr nonnull %4)
  %8 = call i32 @vsprintf(ptr noundef nonnull %3, ptr noundef %1, ptr noundef nonnull %4) #6
  call void @llvm.va_end.p0(ptr nonnull %4)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #6
  %9 = call ptr @stbi_load(ptr noundef %1, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %7, i32 noundef 0)
  %10 = load i32, ptr %7, align 4, !tbaa !5
  %11 = load i32, ptr %6, align 4, !tbaa !5
  %12 = load i32, ptr %5, align 4, !tbaa !5
  %13 = getelementptr inbounds i8, ptr %0, i64 16
  call void @ImageRedefine(ptr noundef %0, i32 noundef %10, i32 noundef %11, i32 noundef %12, ptr noundef nonnull %13) #6
  %14 = load i32, ptr %7, align 4, !tbaa !5
  %15 = icmp sgt i32 %14, 2
  br i1 %15, label %16, label %20

16:                                               ; preds = %2
  %17 = load ptr, ptr %13, align 8, !tbaa !9
  %18 = getelementptr inbounds i8, ptr %0, i64 32
  %19 = load ptr, ptr %18, align 8, !tbaa !9
  store ptr %19, ptr %13, align 8, !tbaa !9
  store ptr %17, ptr %18, align 8, !tbaa !9
  br label %20

20:                                               ; preds = %2, %16
  %21 = load i8, ptr @.str.11, align 1, !tbaa !11
  %.not = icmp eq i8 %21, 0
  %22 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @morn_data_type)
  store i32 0, ptr %22, align 4, !tbaa !5
  %. = sext i1 %.not to i32
  call void @mImageDataInputU8(ptr noundef %0, ptr noundef %9, i32 noundef %., ptr noundef null, ptr noundef null) #6
  %23 = load i32, ptr %7, align 4, !tbaa !5
  %24 = icmp sgt i32 %23, 2
  br i1 %24, label %25, label %29

25:                                               ; preds = %20
  %26 = load ptr, ptr %13, align 8, !tbaa !9
  %27 = getelementptr inbounds i8, ptr %0, i64 32
  %28 = load ptr, ptr %27, align 8, !tbaa !9
  store ptr %28, ptr %13, align 8, !tbaa !9
  store ptr %26, ptr %27, align 8, !tbaa !9
  br label %29

29:                                               ; preds = %25, %20
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %3) #6
  ret void
}

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn
declare void @llvm.va_start.p0(ptr) #3

; Function Attrs: nofree nounwind
declare noundef i32 @vsprintf(ptr nocapture noundef, ptr nocapture noundef readonly, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn
declare void @llvm.va_end.p0(ptr) #3

declare void @ImageRedefine(ptr noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #5

declare void @mImageDataInputU8(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

attributes #0 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #1 = { 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 #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn }
attributes #4 = { nofree 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 #5 = { "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 #6 = { 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/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!7, !7, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,SROAPass,SimplifyCFGPass