; LLVM IR from jingweizhanghuai/Morn :: src/image (morn_vedio_background)

; 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.MImage = type { i32, i32, i32, [4 x ptr], ptr }
%struct.MHandle = type { i32, i32, ptr, ptr }
%struct.HandleVideoBackground = type { [3 x [4 x ptr]], [3 x ptr], ptr, ptr }
%struct.MTable = type { i32, i32, i32, %union.anon }
%union.anon = type { ptr }

@.str = external hidden unnamed_addr constant [89 x i8], align 1
@__FUNCTION__.mVideoBackground = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [35 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @endVideoBackground(ptr noundef) #0

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

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

; Function Attrs: nounwind uwtable
define dso_local void @mVideoBackground(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3) #0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca ptr, align 8
  %32 = alloca [3 x ptr], align 16
  %33 = alloca ptr, align 8
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store i32 %2, ptr %7, align 4, !tbaa !9
  store i32 %3, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #5
  br label %44

44:                                               ; preds = %4
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #5
  %45 = load ptr, ptr %5, align 8, !tbaa !5
  %46 = icmp eq ptr %45, null
  br i1 %46, label %51, label %47

47:                                               ; preds = %44
  %48 = load ptr, ptr %5, align 8, !tbaa !5
  %49 = ptrtoint ptr %48 to i64
  %50 = icmp eq i64 %49, -1
  br i1 %50, label %51, label %52

51:                                               ; preds = %47, %44
  br label %81

52:                                               ; preds = %47
  %53 = load ptr, ptr %5, 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
  %56 = icmp eq ptr %55, null
  br i1 %56, label %78, label %57

57:                                               ; preds = %52
  %58 = load ptr, ptr %5, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.MImage, ptr %58, i32 0, i32 3
  %60 = getelementptr inbounds [4 x ptr], ptr %59, i64 0, i64 0
  %61 = ptrtoint ptr %60 to i64
  %62 = icmp eq i64 %61, -1
  br i1 %62, label %78, label %63

63:                                               ; preds = %57
  %64 = load ptr, ptr %5, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.MImage, ptr %64, i32 0, i32 0
  %66 = load i32, ptr %65, align 8, !tbaa !11
  %67 = icmp sle i32 %66, 0
  br i1 %67, label %78, label %68

68:                                               ; preds = %63
  %69 = load ptr, ptr %5, align 8, !tbaa !5
  %70 = getelementptr inbounds %struct.MImage, ptr %69, i32 0, i32 1
  %71 = load i32, ptr %70, align 4, !tbaa !13
  %72 = icmp sle i32 %71, 0
  br i1 %72, label %78, label %73

73:                                               ; preds = %68
  %74 = load ptr, ptr %5, align 8, !tbaa !5
  %75 = getelementptr inbounds %struct.MImage, ptr %74, i32 0, i32 2
  %76 = load i32, ptr %75, align 8, !tbaa !14
  %77 = icmp sle i32 %76, 0
  br label %78

78:                                               ; preds = %73, %68, %63, %57, %52
  %79 = phi i1 [ true, %68 ], [ true, %63 ], [ true, %57 ], [ true, %52 ], [ %77, %73 ]
  %80 = zext i1 %79 to i32
  br label %81

81:                                               ; preds = %78, %51
  %82 = phi i32 [ 1, %51 ], [ %80, %78 ]
  store i32 %82, ptr %10, align 4, !tbaa !9
  %83 = load i32, ptr %10, align 4, !tbaa !9
  %84 = icmp ne i32 %83, 0
  br i1 %84, label %85, label %87

85:                                               ; preds = %81
  %86 = load i32, ptr %10, align 4, !tbaa !9
  call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef %86, i32 noundef -1, ptr noundef @.str, i32 noundef 44, ptr noundef @__FUNCTION__.mVideoBackground, ptr noundef @.str.1)
  br label %87

87:                                               ; preds = %85, %81
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  br label %88

88:                                               ; preds = %87
  br label %89

89:                                               ; preds = %88
  br label %90

90:                                               ; preds = %89
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  %91 = load i32, ptr %8, align 4, !tbaa !9
  %92 = icmp sgt i32 %91, 128
  %93 = zext i1 %92 to i32
  store i32 %93, ptr %11, align 4, !tbaa !9
  %94 = load i32, ptr %11, align 4, !tbaa !9
  %95 = icmp ne i32 %94, 0
  br i1 %95, label %96, label %98

96:                                               ; preds = %90
  %97 = load i32, ptr %11, align 4, !tbaa !9
  call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef %97, i32 noundef -1, ptr noundef @.str, i32 noundef 45, ptr noundef @__FUNCTION__.mVideoBackground, ptr noundef @.str.1)
  br label %98

98:                                               ; preds = %96, %90
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  br label %99

99:                                               ; preds = %98
  br label %100

100:                                              ; preds = %99
  br label %101

101:                                              ; preds = %100
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  %102 = load ptr, ptr %6, align 8, !tbaa !5
  %103 = icmp eq ptr %102, null
  br i1 %103, label %108, label %104

104:                                              ; preds = %101
  %105 = load ptr, ptr %6, align 8, !tbaa !5
  %106 = ptrtoint ptr %105 to i64
  %107 = icmp eq i64 %106, -1
  br label %108

108:                                              ; preds = %104, %101
  %109 = phi i1 [ true, %101 ], [ %107, %104 ]
  %110 = zext i1 %109 to i32
  store i32 %110, ptr %12, align 4, !tbaa !9
  %111 = load i32, ptr %12, align 4, !tbaa !9
  %112 = icmp ne i32 %111, 0
  br i1 %112, label %113, label %115

113:                                              ; preds = %108
  %114 = load i32, ptr %12, align 4, !tbaa !9
  call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef %114, i32 noundef -1, ptr noundef @.str, i32 noundef 46, ptr noundef @__FUNCTION__.mVideoBackground, ptr noundef @.str.1)
  br label %115

115:                                              ; preds = %113, %108
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  br label %116

116:                                              ; preds = %115
  br label %117

117:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  %118 = load ptr, ptr %5, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.MImage, ptr %118, i32 0, i32 1
  %120 = load i32, ptr %119, align 4, !tbaa !13
  store i32 %120, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  %121 = load ptr, ptr %5, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.MImage, ptr %121, i32 0, i32 2
  %123 = load i32, ptr %122, align 8, !tbaa !14
  store i32 %123, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  %124 = load ptr, ptr %5, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.MImage, ptr %124, i32 0, i32 0
  %126 = load i32, ptr %125, align 8, !tbaa !11
  store i32 %126, ptr %15, align 4, !tbaa !9
  br label %127

127:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  %128 = load ptr, ptr %6, align 8, !tbaa !5
  %129 = icmp eq ptr %128, null
  br i1 %129, label %138, label %130

130:                                              ; preds = %127
  %131 = load ptr, ptr %6, align 8, !tbaa !5
  %132 = ptrtoint ptr %131 to i64
  %133 = icmp eq i64 %132, -1
  br i1 %133, label %138, label %134

134:                                              ; preds = %130
  %135 = load ptr, ptr %6, align 8, !tbaa !5
  %136 = load ptr, ptr %5, align 8, !tbaa !5
  %137 = icmp eq ptr %135, %136
  br label %138

138:                                              ; preds = %134, %130, %127
  %139 = phi i1 [ true, %130 ], [ true, %127 ], [ %137, %134 ]
  %140 = zext i1 %139 to i32
  store i32 %140, ptr %16, align 4, !tbaa !9
  %141 = load i32, ptr %16, align 4, !tbaa !9
  %142 = icmp ne i32 %141, 0
  br i1 %142, label %143, label %145

143:                                              ; preds = %138
  %144 = load i32, ptr %16, align 4, !tbaa !9
  call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef %144, i32 noundef -1, ptr noundef @.str, i32 noundef 51, ptr noundef @__FUNCTION__.mVideoBackground, ptr noundef @.str.1)
  br label %145

145:                                              ; preds = %143, %138
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  br label %146

146:                                              ; preds = %145
  br label %147

147:                                              ; preds = %146
  br label %148

148:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  store i32 4, ptr %17, align 4, !tbaa !9
  %149 = load i32, ptr %17, align 4, !tbaa !9
  %150 = icmp eq i32 %149, 2
  br i1 %150, label %151, label %159

151:                                              ; preds = %148
  %152 = load ptr, ptr %6, align 8, !tbaa !5
  %153 = load i32, ptr %15, align 4, !tbaa !9
  %154 = add nsw i32 %153, 0
  %155 = load i32, ptr %13, align 4, !tbaa !9
  %156 = load ptr, ptr %6, align 8, !tbaa !5
  %157 = getelementptr inbounds %struct.MImage, ptr %156, i32 0, i32 3
  %158 = getelementptr inbounds [4 x ptr], ptr %157, i64 0, i64 0
  call void @ImageRedefine(ptr noundef %152, i32 noundef -1, i32 noundef %154, i32 noundef %155, ptr noundef %158)
  br label %194

159:                                              ; preds = %148
  %160 = load i32, ptr %17, align 4, !tbaa !9
  %161 = icmp eq i32 %160, 3
  br i1 %161, label %162, label %171

162:                                              ; preds = %159
  %163 = load ptr, ptr %6, align 8, !tbaa !5
  %164 = load i32, ptr %15, align 4, !tbaa !9
  %165 = add nsw i32 %164, 0
  %166 = load i32, ptr %13, align 4, !tbaa !9
  %167 = load i32, ptr %14, align 4, !tbaa !9
  %168 = load ptr, ptr %6, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.MImage, ptr %168, i32 0, i32 3
  %170 = getelementptr inbounds [4 x ptr], ptr %169, i64 0, i64 0
  call void @ImageRedefine(ptr noundef %163, i32 noundef %165, i32 noundef %166, i32 noundef %167, ptr noundef %170)
  br label %193

171:                                              ; preds = %159
  %172 = load i32, ptr %17, align 4, !tbaa !9
  %173 = icmp eq i32 %172, 4
  br i1 %173, label %174, label %183

174:                                              ; preds = %171
  %175 = load ptr, ptr %6, align 8, !tbaa !5
  %176 = load i32, ptr %15, align 4, !tbaa !9
  %177 = add nsw i32 %176, 0
  %178 = load i32, ptr %13, align 4, !tbaa !9
  %179 = load i32, ptr %14, align 4, !tbaa !9
  %180 = load ptr, ptr %6, align 8, !tbaa !5
  %181 = getelementptr inbounds %struct.MImage, ptr %180, i32 0, i32 3
  %182 = getelementptr inbounds [4 x ptr], ptr %181, i64 0, i64 0
  call void @ImageRedefine(ptr noundef %175, i32 noundef %177, i32 noundef %178, i32 noundef %179, ptr noundef %182)
  br label %192

183:                                              ; preds = %171
  br label %184

184:                                              ; preds = %183
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  store i32 1, ptr %18, align 4, !tbaa !9
  %185 = load i32, ptr %18, align 4, !tbaa !9
  %186 = icmp ne i32 %185, 0
  br i1 %186, label %187, label %189

187:                                              ; preds = %184
  %188 = load i32, ptr %18, align 4, !tbaa !9
  call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef %188, i32 noundef -1, ptr noundef @.str, i32 noundef 52, ptr noundef @__FUNCTION__.mVideoBackground, ptr noundef @.str.2)
  br label %189

189:                                              ; preds = %187, %184
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  br label %190

190:                                              ; preds = %189
  br label %191

191:                                              ; preds = %190
  br label %192

192:                                              ; preds = %191, %174
  br label %193

193:                                              ; preds = %192, %162
  br label %194

194:                                              ; preds = %193, %151
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  br label %195

195:                                              ; preds = %194
  br label %196

196:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  %197 = load ptr, ptr %5, align 8, !tbaa !5
  %198 = call ptr @GetHandle(ptr noundef %197, i32 noundef 136, i32 noundef 431652798, ptr noundef @endVideoBackground)
  store ptr %198, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  %199 = load ptr, ptr %19, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.MHandle, ptr %199, i32 0, i32 3
  %201 = load ptr, ptr %200, align 8, !tbaa !15
  store ptr %201, ptr %20, align 8, !tbaa !5
  %202 = load ptr, ptr %19, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.MHandle, ptr %202, i32 0, i32 1
  %204 = load volatile i32, ptr %203, align 4, !tbaa !17
  %205 = icmp eq i32 %204, 0
  br i1 %205, label %206, label %465

206:                                              ; preds = %196
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %207

207:                                              ; preds = %389, %206
  %208 = load i32, ptr %21, align 4, !tbaa !9
  %209 = icmp slt i32 %208, 3
  br i1 %209, label %211, label %210

210:                                              ; preds = %207
  store i32 14, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  br label %392

211:                                              ; preds = %207
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #5
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %212

212:                                              ; preds = %295, %211
  %213 = load i32, ptr %23, align 4, !tbaa !9
  %214 = load i32, ptr %15, align 4, !tbaa !9
  %215 = icmp slt i32 %213, %214
  br i1 %215, label %217, label %216

216:                                              ; preds = %212
  store i32 17, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  br label %298

217:                                              ; preds = %212
  %218 = load ptr, ptr %20, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.HandleVideoBackground, ptr %218, i32 0, i32 0
  %220 = load i32, ptr %21, align 4, !tbaa !9
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds [3 x [4 x ptr]], ptr %219, i64 0, i64 %221
  %223 = load i32, ptr %23, align 4, !tbaa !9
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds [4 x ptr], ptr %222, i64 0, i64 %224
  %226 = load ptr, ptr %225, align 8, !tbaa !5
  %227 = icmp eq ptr %226, null
  br i1 %227, label %228, label %241

228:                                              ; preds = %217
  %229 = load i32, ptr %13, align 4, !tbaa !9
  %230 = add nsw i32 %229, 0
  %231 = load i32, ptr %14, align 4, !tbaa !9
  %232 = call ptr @TableCreate(i32 noundef %230, i32 noundef %231, i32 noundef 2, ptr noundef null)
  %233 = load ptr, ptr %20, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.HandleVideoBackground, ptr %233, i32 0, i32 0
  %235 = load i32, ptr %21, align 4, !tbaa !9
  %236 = sext i32 %235 to i64
  %237 = getelementptr inbounds [3 x [4 x ptr]], ptr %234, i64 0, i64 %236
  %238 = load i32, ptr %23, align 4, !tbaa !9
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds [4 x ptr], ptr %237, i64 0, i64 %239
  store ptr %232, ptr %240, align 8, !tbaa !5
  br label %294

241:                                              ; preds = %217
  br label %242

242:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #5
  store i32 5, ptr %24, align 4, !tbaa !9
  br label %243

243:                                              ; preds = %242
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #5
  %244 = load i32, ptr %24, align 4, !tbaa !9
  %245 = icmp eq i32 %244, 0
  br i1 %245, label %249, label %246

246:                                              ; preds = %243
  %247 = load i32, ptr %24, align 4, !tbaa !9
  %248 = icmp eq i32 %247, 2
  br label %249

249:                                              ; preds = %246, %243
  %250 = phi i1 [ true, %243 ], [ %248, %246 ]
  %251 = zext i1 %250 to i32
  store i32 %251, ptr %25, align 4, !tbaa !9
  %252 = load i32, ptr %25, align 4, !tbaa !9
  %253 = icmp ne i32 %252, 0
  br i1 %253, label %254, label %256

254:                                              ; preds = %249
  %255 = load i32, ptr %25, align 4, !tbaa !9
  call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef %255, i32 noundef -1, ptr noundef @.str, i32 noundef 63, ptr noundef @__FUNCTION__.mVideoBackground, ptr noundef @.str.3)
  br label %256

256:                                              ; preds = %254, %249
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  br label %257

257:                                              ; preds = %256
  br label %258

258:                                              ; preds = %257
  %259 = load i32, ptr %24, align 4, !tbaa !9
  %260 = icmp eq i32 %259, 3
  br i1 %260, label %261, label %274

261:                                              ; preds = %258
  %262 = load ptr, ptr %20, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.HandleVideoBackground, ptr %262, i32 0, i32 0
  %264 = load i32, ptr %21, align 4, !tbaa !9
  %265 = sext i32 %264 to i64
  %266 = getelementptr inbounds [3 x [4 x ptr]], ptr %263, i64 0, i64 %265
  %267 = load i32, ptr %23, align 4, !tbaa !9
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds [4 x ptr], ptr %266, i64 0, i64 %268
  %270 = load ptr, ptr %269, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.MTable, ptr %270, i64 0
  %272 = load i32, ptr %13, align 4, !tbaa !9
  %273 = load i32, ptr %14, align 4, !tbaa !9
  call void @TableRedefine(ptr noundef %271, i32 noundef %272, i32 noundef %273, i32 noundef -1, ptr noundef null)
  br label %291

274:                                              ; preds = %258
  %275 = load i32, ptr %24, align 4, !tbaa !9
  %276 = icmp sge i32 %275, 4
  br i1 %276, label %277, label %290

277:                                              ; preds = %274
  %278 = load ptr, ptr %20, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.HandleVideoBackground, ptr %278, i32 0, i32 0
  %280 = load i32, ptr %21, align 4, !tbaa !9
  %281 = sext i32 %280 to i64
  %282 = getelementptr inbounds [3 x [4 x ptr]], ptr %279, i64 0, i64 %281
  %283 = load i32, ptr %23, align 4, !tbaa !9
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds [4 x ptr], ptr %282, i64 0, i64 %284
  %286 = load ptr, ptr %285, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.MTable, ptr %286, i64 0
  %288 = load i32, ptr %13, align 4, !tbaa !9
  %289 = load i32, ptr %14, align 4, !tbaa !9
  call void @TableRedefine(ptr noundef %287, i32 noundef %288, i32 noundef %289, i32 noundef 2, ptr noundef null)
  br label %290

290:                                              ; preds = %277, %274
  br label %291

291:                                              ; preds = %290, %261
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  br label %292

292:                                              ; preds = %291
  br label %293

293:                                              ; preds = %292
  br label %294

294:                                              ; preds = %293, %228
  br label %295

295:                                              ; preds = %294
  %296 = load i32, ptr %23, align 4, !tbaa !9
  %297 = add nsw i32 %296, 1
  store i32 %297, ptr %23, align 4, !tbaa !9
  br label %212, !llvm.loop !18

298:                                              ; preds = %216
  %299 = load ptr, ptr %20, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.HandleVideoBackground, ptr %299, i32 0, i32 1
  %301 = load i32, ptr %21, align 4, !tbaa !9
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds [3 x ptr], ptr %300, i64 0, i64 %302
  %304 = load ptr, ptr %303, align 8, !tbaa !5
  %305 = icmp eq ptr %304, null
  br i1 %305, label %306, label %316

306:                                              ; preds = %298
  %307 = load i32, ptr %13, align 4, !tbaa !9
  %308 = add nsw i32 %307, 0
  %309 = load i32, ptr %14, align 4, !tbaa !9
  %310 = call ptr @TableCreate(i32 noundef %308, i32 noundef %309, i32 noundef 2, ptr noundef null)
  %311 = load ptr, ptr %20, align 8, !tbaa !5
  %312 = getelementptr inbounds %struct.HandleVideoBackground, ptr %311, i32 0, i32 1
  %313 = load i32, ptr %21, align 4, !tbaa !9
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds [3 x ptr], ptr %312, i64 0, i64 %314
  store ptr %310, ptr %315, align 8, !tbaa !5
  br label %363

316:                                              ; preds = %298
  br label %317

317:                                              ; preds = %316
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #5
  store i32 5, ptr %26, align 4, !tbaa !9
  br label %318

318:                                              ; preds = %317
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #5
  %319 = load i32, ptr %26, align 4, !tbaa !9
  %320 = icmp eq i32 %319, 0
  br i1 %320, label %324, label %321

321:                                              ; preds = %318
  %322 = load i32, ptr %26, align 4, !tbaa !9
  %323 = icmp eq i32 %322, 2
  br label %324

324:                                              ; preds = %321, %318
  %325 = phi i1 [ true, %318 ], [ %323, %321 ]
  %326 = zext i1 %325 to i32
  store i32 %326, ptr %27, align 4, !tbaa !9
  %327 = load i32, ptr %27, align 4, !tbaa !9
  %328 = icmp ne i32 %327, 0
  br i1 %328, label %329, label %331

329:                                              ; preds = %324
  %330 = load i32, ptr %27, align 4, !tbaa !9
  call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef %330, i32 noundef -1, ptr noundef @.str, i32 noundef 67, ptr noundef @__FUNCTION__.mVideoBackground, ptr noundef @.str.3)
  br label %331

331:                                              ; preds = %329, %324
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  br label %332

332:                                              ; preds = %331
  br label %333

333:                                              ; preds = %332
  %334 = load i32, ptr %26, align 4, !tbaa !9
  %335 = icmp eq i32 %334, 3
  br i1 %335, label %336, label %346

336:                                              ; preds = %333
  %337 = load ptr, ptr %20, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.HandleVideoBackground, ptr %337, i32 0, i32 1
  %339 = load i32, ptr %21, align 4, !tbaa !9
  %340 = sext i32 %339 to i64
  %341 = getelementptr inbounds [3 x ptr], ptr %338, i64 0, i64 %340
  %342 = load ptr, ptr %341, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.MTable, ptr %342, i64 0
  %344 = load i32, ptr %13, align 4, !tbaa !9
  %345 = load i32, ptr %14, align 4, !tbaa !9
  call void @TableRedefine(ptr noundef %343, i32 noundef %344, i32 noundef %345, i32 noundef -1, ptr noundef null)
  br label %360

346:                                              ; preds = %333
  %347 = load i32, ptr %26, align 4, !tbaa !9
  %348 = icmp sge i32 %347, 4
  br i1 %348, label %349, label %359

349:                                              ; preds = %346
  %350 = load ptr, ptr %20, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.HandleVideoBackground, ptr %350, i32 0, i32 1
  %352 = load i32, ptr %21, align 4, !tbaa !9
  %353 = sext i32 %352 to i64
  %354 = getelementptr inbounds [3 x ptr], ptr %351, i64 0, i64 %353
  %355 = load ptr, ptr %354, align 8, !tbaa !5
  %356 = getelementptr inbounds %struct.MTable, ptr %355, i64 0
  %357 = load i32, ptr %13, align 4, !tbaa !9
  %358 = load i32, ptr %14, align 4, !tbaa !9
  call void @TableRedefine(ptr noundef %356, i32 noundef %357, i32 noundef %358, i32 noundef 2, ptr noundef null)
  br label %359

359:                                              ; preds = %349, %346
  br label %360

360:                                              ; preds = %359, %336
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #5
  br label %361

361:                                              ; preds = %360
  br label %362

362:                                              ; preds = %361
  br label %363

363:                                              ; preds = %362, %306
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #5
  store i32 0, ptr %28, align 4, !tbaa !9
  br label %364

364:                                              ; preds = %385, %363
  %365 = load i32, ptr %28, align 4, !tbaa !9
  %366 = load i32, ptr %13, align 4, !tbaa !9
  %367 = icmp slt i32 %365, %366
  br i1 %367, label %369, label %368

368:                                              ; preds = %364
  store i32 28, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #5
  br label %388

369:                                              ; preds = %364
  %370 = load ptr, ptr %20, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.HandleVideoBackground, ptr %370, i32 0, i32 1
  %372 = load i32, ptr %21, align 4, !tbaa !9
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds [3 x ptr], ptr %371, i64 0, i64 %373
  %375 = load ptr, ptr %374, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.MTable, ptr %375, i32 0, i32 3
  %377 = load ptr, ptr %376, align 8, !tbaa !20
  %378 = load i32, ptr %28, align 4, !tbaa !9
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds ptr, ptr %377, i64 %379
  %381 = load ptr, ptr %380, align 8, !tbaa !5
  %382 = load i32, ptr %14, align 4, !tbaa !9
  %383 = sext i32 %382 to i64
  %384 = mul i64 %383, 2
  call void @llvm.memset.p0.i64(ptr align 2 %381, i8 0, i64 %384, i1 false)
  br label %385

385:                                              ; preds = %369
  %386 = load i32, ptr %28, align 4, !tbaa !9
  %387 = add nsw i32 %386, 1
  store i32 %387, ptr %28, align 4, !tbaa !9
  br label %364, !llvm.loop !21

388:                                              ; preds = %368
  br label %389

389:                                              ; preds = %388
  %390 = load i32, ptr %21, align 4, !tbaa !9
  %391 = add nsw i32 %390, 1
  store i32 %391, ptr %21, align 4, !tbaa !9
  br label %207, !llvm.loop !22

392:                                              ; preds = %210
  %393 = load ptr, ptr %20, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.HandleVideoBackground, ptr %393, i32 0, i32 2
  %395 = load ptr, ptr %394, align 8, !tbaa !23
  %396 = icmp eq ptr %395, null
  br i1 %396, label %397, label %405

397:                                              ; preds = %392
  %398 = load i32, ptr %15, align 4, !tbaa !9
  %399 = add nsw i32 %398, 0
  %400 = load i32, ptr %13, align 4, !tbaa !9
  %401 = load i32, ptr %14, align 4, !tbaa !9
  %402 = call ptr @ImageCreate(i32 noundef %399, i32 noundef %400, i32 noundef %401, ptr noundef null)
  %403 = load ptr, ptr %20, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct.HandleVideoBackground, ptr %403, i32 0, i32 2
  store ptr %402, ptr %404, align 8, !tbaa !23
  br label %462

405:                                              ; preds = %392
  br label %406

406:                                              ; preds = %405
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #5
  store i32 4, ptr %29, align 4, !tbaa !9
  %407 = load i32, ptr %29, align 4, !tbaa !9
  %408 = icmp eq i32 %407, 2
  br i1 %408, label %409, label %421

409:                                              ; preds = %406
  %410 = load ptr, ptr %20, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct.HandleVideoBackground, ptr %410, i32 0, i32 2
  %412 = load ptr, ptr %411, align 8, !tbaa !23
  %413 = load i32, ptr %15, align 4, !tbaa !9
  %414 = add nsw i32 %413, 0
  %415 = load i32, ptr %13, align 4, !tbaa !9
  %416 = load ptr, ptr %20, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.HandleVideoBackground, ptr %416, i32 0, i32 2
  %418 = load ptr, ptr %417, align 8, !tbaa !23
  %419 = getelementptr inbounds %struct.MImage, ptr %418, i32 0, i32 3
  %420 = getelementptr inbounds [4 x ptr], ptr %419, i64 0, i64 0
  call void @ImageRedefine(ptr noundef %412, i32 noundef -1, i32 noundef %414, i32 noundef %415, ptr noundef %420)
  br label %459

421:                                              ; preds = %406
  %422 = load i32, ptr %29, align 4, !tbaa !9
  %423 = icmp eq i32 %422, 3
  br i1 %423, label %424, label %437

424:                                              ; preds = %421
  %425 = load ptr, ptr %20, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.HandleVideoBackground, ptr %425, i32 0, i32 2
  %427 = load ptr, ptr %426, align 8, !tbaa !23
  %428 = load i32, ptr %15, align 4, !tbaa !9
  %429 = add nsw i32 %428, 0
  %430 = load i32, ptr %13, align 4, !tbaa !9
  %431 = load i32, ptr %14, align 4, !tbaa !9
  %432 = load ptr, ptr %20, align 8, !tbaa !5
  %433 = getelementptr inbounds %struct.HandleVideoBackground, ptr %432, i32 0, i32 2
  %434 = load ptr, ptr %433, align 8, !tbaa !23
  %435 = getelementptr inbounds %struct.MImage, ptr %434, i32 0, i32 3
  %436 = getelementptr inbounds [4 x ptr], ptr %435, i64 0, i64 0
  call void @ImageRedefine(ptr noundef %427, i32 noundef %429, i32 noundef %430, i32 noundef %431, ptr noundef %436)
  br label %458

437:                                              ; preds = %421
  %438 = load i32, ptr %29, align 4, !tbaa !9
  %439 = icmp eq i32 %438, 4
  br i1 %439, label %440, label %448

440:                                              ; preds = %437
  %441 = load ptr, ptr %20, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.HandleVideoBackground, ptr %441, i32 0, i32 2
  %443 = load ptr, ptr %442, align 8, !tbaa !23
  %444 = load i32, ptr %15, align 4, !tbaa !9
  %445 = add nsw i32 %444, 0
  %446 = load i32, ptr %13, align 4, !tbaa !9
  %447 = load i32, ptr %14, align 4, !tbaa !9
  call void @ImageRedefine(ptr noundef %443, i32 noundef %445, i32 noundef %446, i32 noundef %447, ptr noundef null)
  br label %457

448:                                              ; preds = %437
  br label %449

449:                                              ; preds = %448
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #5
  store i32 1, ptr %30, align 4, !tbaa !9
  %450 = load i32, ptr %30, align 4, !tbaa !9
  %451 = icmp ne i32 %450, 0
  br i1 %451, label %452, label %454

452:                                              ; preds = %449
  %453 = load i32, ptr %30, align 4, !tbaa !9
  call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef %453, i32 noundef -1, ptr noundef @.str, i32 noundef 73, ptr noundef @__FUNCTION__.mVideoBackground, ptr noundef @.str.2)
  br label %454

454:                                              ; preds = %452, %449
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  br label %455

455:                                              ; preds = %454
  br label %456

456:                                              ; preds = %455
  br label %457

457:                                              ; preds = %456, %440
  br label %458

458:                                              ; preds = %457, %424
  br label %459

459:                                              ; preds = %458, %409
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  br label %460

460:                                              ; preds = %459
  br label %461

461:                                              ; preds = %460
  br label %462

462:                                              ; preds = %461, %397
  %463 = load ptr, ptr %19, align 8, !tbaa !5
  %464 = getelementptr inbounds %struct.MHandle, ptr %463, i32 0, i32 1
  store volatile i32 1, ptr %464, align 4, !tbaa !17
  br label %465

465:                                              ; preds = %462, %196
  %466 = load ptr, ptr %6, align 8, !tbaa !5
  %467 = load ptr, ptr %20, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.HandleVideoBackground, ptr %467, i32 0, i32 3
  %469 = load ptr, ptr %468, align 8, !tbaa !25
  %470 = icmp ne ptr %466, %469
  br i1 %470, label %471, label %477

471:                                              ; preds = %465
  %472 = load ptr, ptr %5, align 8, !tbaa !5
  %473 = load ptr, ptr %6, align 8, !tbaa !5
  call void @mImageCopy(ptr noundef %472, ptr noundef %473)
  %474 = load ptr, ptr %6, align 8, !tbaa !5
  %475 = load ptr, ptr %20, align 8, !tbaa !5
  %476 = getelementptr inbounds %struct.HandleVideoBackground, ptr %475, i32 0, i32 3
  store ptr %474, ptr %476, align 8, !tbaa !25
  br label %477

477:                                              ; preds = %471, %465
  %478 = load i32, ptr %7, align 4, !tbaa !9
  %479 = icmp sle i32 %478, 0
  br i1 %479, label %480, label %481

480:                                              ; preds = %477
  store i32 20, ptr %7, align 4, !tbaa !9
  br label %481

481:                                              ; preds = %480, %477
  %482 = load i32, ptr %8, align 4, !tbaa !9
  %483 = icmp sle i32 %482, 0
  br i1 %483, label %484, label %485

484:                                              ; preds = %481
  store i32 10, ptr %8, align 4, !tbaa !9
  br label %485

485:                                              ; preds = %484, %481
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  %486 = load ptr, ptr %20, align 8, !tbaa !5
  %487 = getelementptr inbounds %struct.HandleVideoBackground, ptr %486, i32 0, i32 1
  %488 = getelementptr inbounds [3 x ptr], ptr %487, i64 0, i64 0
  store ptr %488, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %32) #5
  %489 = load ptr, ptr %20, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.HandleVideoBackground, ptr %489, i32 0, i32 0
  %491 = getelementptr inbounds [3 x [4 x ptr]], ptr %490, i64 0, i64 0
  %492 = getelementptr inbounds [4 x ptr], ptr %491, i64 0, i64 0
  %493 = getelementptr inbounds [3 x ptr], ptr %32, i64 0, i64 0
  store ptr %492, ptr %493, align 16, !tbaa !5
  %494 = load ptr, ptr %20, align 8, !tbaa !5
  %495 = getelementptr inbounds %struct.HandleVideoBackground, ptr %494, i32 0, i32 0
  %496 = getelementptr inbounds [3 x [4 x ptr]], ptr %495, i64 0, i64 1
  %497 = getelementptr inbounds [4 x ptr], ptr %496, i64 0, i64 0
  %498 = getelementptr inbounds [3 x ptr], ptr %32, i64 0, i64 1
  store ptr %497, ptr %498, align 8, !tbaa !5
  %499 = load ptr, ptr %20, align 8, !tbaa !5
  %500 = getelementptr inbounds %struct.HandleVideoBackground, ptr %499, i32 0, i32 0
  %501 = getelementptr inbounds [3 x [4 x ptr]], ptr %500, i64 0, i64 2
  %502 = getelementptr inbounds [4 x ptr], ptr %501, i64 0, i64 0
  %503 = getelementptr inbounds [3 x ptr], ptr %32, i64 0, i64 2
  store ptr %502, ptr %503, align 16, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #5
  %504 = load ptr, ptr %20, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.HandleVideoBackground, ptr %504, i32 0, i32 2
  %506 = load ptr, ptr %505, align 8, !tbaa !23
  store ptr %506, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #5
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %507

507:                                              ; preds = %1214, %485
  %508 = load i32, ptr %34, align 4, !tbaa !9
  %509 = load i32, ptr %13, align 4, !tbaa !9
  %510 = icmp slt i32 %508, %509
  br i1 %510, label %512, label %511

511:                                              ; preds = %507
  store i32 35, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  br label %1217

512:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #5
  store i32 0, ptr %35, align 4, !tbaa !9
  br label %513

513:                                              ; preds = %1210, %512
  %514 = load i32, ptr %35, align 4, !tbaa !9
  %515 = load i32, ptr %14, align 4, !tbaa !9
  %516 = icmp slt i32 %514, %515
  br i1 %516, label %518, label %517

517:                                              ; preds = %513
  store i32 38, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  br label %1213

518:                                              ; preds = %513
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #5
  store i32 0, ptr %38, align 4, !tbaa !9
  br label %519

519:                                              ; preds = %632, %518
  %520 = load i32, ptr %38, align 4, !tbaa !9
  %521 = load i32, ptr %15, align 4, !tbaa !9
  %522 = icmp slt i32 %520, %521
  br i1 %522, label %524, label %523

523:                                              ; preds = %519
  store i32 41, ptr %22, align 4
  br label %635

524:                                              ; preds = %519
  %525 = load ptr, ptr %5, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.MImage, ptr %525, i32 0, i32 3
  %527 = load i32, ptr %38, align 4, !tbaa !9
  %528 = sext i32 %527 to i64
  %529 = getelementptr inbounds [4 x ptr], ptr %526, i64 0, i64 %528
  %530 = load ptr, ptr %529, align 8, !tbaa !5
  %531 = load i32, ptr %34, align 4, !tbaa !9
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds ptr, ptr %530, i64 %532
  %534 = load ptr, ptr %533, align 8, !tbaa !5
  %535 = load i32, ptr %35, align 4, !tbaa !9
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds i8, ptr %534, i64 %536
  %538 = load i8, ptr %537, align 1, !tbaa !20
  %539 = zext i8 %538 to i32
  %540 = load ptr, ptr %33, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.MImage, ptr %540, i32 0, i32 3
  %542 = load i32, ptr %38, align 4, !tbaa !9
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds [4 x ptr], ptr %541, i64 0, i64 %543
  %545 = load ptr, ptr %544, align 8, !tbaa !5
  %546 = load i32, ptr %34, align 4, !tbaa !9
  %547 = sext i32 %546 to i64
  %548 = getelementptr inbounds ptr, ptr %545, i64 %547
  %549 = load ptr, ptr %548, align 8, !tbaa !5
  %550 = load i32, ptr %35, align 4, !tbaa !9
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds i8, ptr %549, i64 %551
  %553 = load i8, ptr %552, align 1, !tbaa !20
  %554 = zext i8 %553 to i32
  %555 = sub nsw i32 %539, %554
  %556 = icmp sgt i32 %555, 0
  br i1 %556, label %557, label %589

557:                                              ; preds = %524
  %558 = load ptr, ptr %5, align 8, !tbaa !5
  %559 = getelementptr inbounds %struct.MImage, ptr %558, i32 0, i32 3
  %560 = load i32, ptr %38, align 4, !tbaa !9
  %561 = sext i32 %560 to i64
  %562 = getelementptr inbounds [4 x ptr], ptr %559, i64 0, i64 %561
  %563 = load ptr, ptr %562, align 8, !tbaa !5
  %564 = load i32, ptr %34, align 4, !tbaa !9
  %565 = sext i32 %564 to i64
  %566 = getelementptr inbounds ptr, ptr %563, i64 %565
  %567 = load ptr, ptr %566, align 8, !tbaa !5
  %568 = load i32, ptr %35, align 4, !tbaa !9
  %569 = sext i32 %568 to i64
  %570 = getelementptr inbounds i8, ptr %567, i64 %569
  %571 = load i8, ptr %570, align 1, !tbaa !20
  %572 = zext i8 %571 to i32
  %573 = load ptr, ptr %33, align 8, !tbaa !5
  %574 = getelementptr inbounds %struct.MImage, ptr %573, i32 0, i32 3
  %575 = load i32, ptr %38, align 4, !tbaa !9
  %576 = sext i32 %575 to i64
  %577 = getelementptr inbounds [4 x ptr], ptr %574, i64 0, i64 %576
  %578 = load ptr, ptr %577, align 8, !tbaa !5
  %579 = load i32, ptr %34, align 4, !tbaa !9
  %580 = sext i32 %579 to i64
  %581 = getelementptr inbounds ptr, ptr %578, i64 %580
  %582 = load ptr, ptr %581, align 8, !tbaa !5
  %583 = load i32, ptr %35, align 4, !tbaa !9
  %584 = sext i32 %583 to i64
  %585 = getelementptr inbounds i8, ptr %582, i64 %584
  %586 = load i8, ptr %585, align 1, !tbaa !20
  %587 = zext i8 %586 to i32
  %588 = sub nsw i32 %572, %587
  br label %622

589:                                              ; preds = %524
  %590 = load ptr, ptr %5, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.MImage, ptr %590, i32 0, i32 3
  %592 = load i32, ptr %38, align 4, !tbaa !9
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds [4 x ptr], ptr %591, i64 0, i64 %593
  %595 = load ptr, ptr %594, align 8, !tbaa !5
  %596 = load i32, ptr %34, align 4, !tbaa !9
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds ptr, ptr %595, i64 %597
  %599 = load ptr, ptr %598, align 8, !tbaa !5
  %600 = load i32, ptr %35, align 4, !tbaa !9
  %601 = sext i32 %600 to i64
  %602 = getelementptr inbounds i8, ptr %599, i64 %601
  %603 = load i8, ptr %602, align 1, !tbaa !20
  %604 = zext i8 %603 to i32
  %605 = load ptr, ptr %33, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.MImage, ptr %605, i32 0, i32 3
  %607 = load i32, ptr %38, align 4, !tbaa !9
  %608 = sext i32 %607 to i64
  %609 = getelementptr inbounds [4 x ptr], ptr %606, i64 0, i64 %608
  %610 = load ptr, ptr %609, align 8, !tbaa !5
  %611 = load i32, ptr %34, align 4, !tbaa !9
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds ptr, ptr %610, i64 %612
  %614 = load ptr, ptr %613, align 8, !tbaa !5
  %615 = load i32, ptr %35, align 4, !tbaa !9
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds i8, ptr %614, i64 %616
  %618 = load i8, ptr %617, align 1, !tbaa !20
  %619 = zext i8 %618 to i32
  %620 = sub nsw i32 %604, %619
  %621 = sub nsw i32 0, %620
  br label %622

622:                                              ; preds = %589, %557
  %623 = phi i32 [ %588, %557 ], [ %621, %589 ]
  %624 = load i32, ptr %8, align 4, !tbaa !9
  %625 = sdiv i32 %624, 2
  %626 = icmp sgt i32 %623, %625
  %627 = zext i1 %626 to i32
  store i32 %627, ptr %9, align 4, !tbaa !9
  %628 = load i32, ptr %9, align 4, !tbaa !9
  %629 = icmp eq i32 %628, 1
  br i1 %629, label %630, label %631

630:                                              ; preds = %622
  store i32 41, ptr %22, align 4
  br label %635

631:                                              ; preds = %622
  br label %632

632:                                              ; preds = %631
  %633 = load i32, ptr %38, align 4, !tbaa !9
  %634 = add nsw i32 %633, 1
  store i32 %634, ptr %38, align 4, !tbaa !9
  br label %519, !llvm.loop !26

635:                                              ; preds = %630, %523
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #5
  br label %636

636:                                              ; preds = %635
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #5
  store i32 0, ptr %39, align 4, !tbaa !9
  br label %637

637:                                              ; preds = %670, %636
  %638 = load i32, ptr %39, align 4, !tbaa !9
  %639 = load i32, ptr %15, align 4, !tbaa !9
  %640 = icmp slt i32 %638, %639
  br i1 %640, label %642, label %641

641:                                              ; preds = %637
  store i32 44, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  br label %673

642:                                              ; preds = %637
  %643 = load ptr, ptr %5, align 8, !tbaa !5
  %644 = getelementptr inbounds %struct.MImage, ptr %643, i32 0, i32 3
  %645 = load i32, ptr %39, align 4, !tbaa !9
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds [4 x ptr], ptr %644, i64 0, i64 %646
  %648 = load ptr, ptr %647, align 8, !tbaa !5
  %649 = load i32, ptr %34, align 4, !tbaa !9
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds ptr, ptr %648, i64 %650
  %652 = load ptr, ptr %651, align 8, !tbaa !5
  %653 = load i32, ptr %35, align 4, !tbaa !9
  %654 = sext i32 %653 to i64
  %655 = getelementptr inbounds i8, ptr %652, i64 %654
  %656 = load i8, ptr %655, align 1, !tbaa !20
  %657 = load ptr, ptr %33, align 8, !tbaa !5
  %658 = getelementptr inbounds %struct.MImage, ptr %657, i32 0, i32 3
  %659 = load i32, ptr %39, align 4, !tbaa !9
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds [4 x ptr], ptr %658, i64 0, i64 %660
  %662 = load ptr, ptr %661, align 8, !tbaa !5
  %663 = load i32, ptr %34, align 4, !tbaa !9
  %664 = sext i32 %663 to i64
  %665 = getelementptr inbounds ptr, ptr %662, i64 %664
  %666 = load ptr, ptr %665, align 8, !tbaa !5
  %667 = load i32, ptr %35, align 4, !tbaa !9
  %668 = sext i32 %667 to i64
  %669 = getelementptr inbounds i8, ptr %666, i64 %668
  store i8 %656, ptr %669, align 1, !tbaa !20
  br label %670

670:                                              ; preds = %642
  %671 = load i32, ptr %39, align 4, !tbaa !9
  %672 = add nsw i32 %671, 1
  store i32 %672, ptr %39, align 4, !tbaa !9
  br label %637, !llvm.loop !27

673:                                              ; preds = %641
  %674 = load i32, ptr %9, align 4, !tbaa !9
  %675 = icmp ne i32 %674, 0
  br i1 %675, label %676, label %677

676:                                              ; preds = %673
  store i32 40, ptr %22, align 4
  br label %1207

677:                                              ; preds = %673
  store i32 0, ptr %36, align 4, !tbaa !9
  br label %678

678:                                              ; preds = %719, %677
  %679 = load i32, ptr %36, align 4, !tbaa !9
  %680 = icmp slt i32 %679, 3
  br i1 %680, label %681, label %722

681:                                              ; preds = %678
  %682 = load ptr, ptr %31, align 8, !tbaa !5
  %683 = load i32, ptr %36, align 4, !tbaa !9
  %684 = sext i32 %683 to i64
  %685 = getelementptr inbounds ptr, ptr %682, i64 %684
  %686 = load ptr, ptr %685, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.MTable, ptr %686, i32 0, i32 3
  %688 = load ptr, ptr %687, align 8, !tbaa !20
  %689 = load i32, ptr %34, align 4, !tbaa !9
  %690 = sext i32 %689 to i64
  %691 = getelementptr inbounds ptr, ptr %688, i64 %690
  %692 = load ptr, ptr %691, align 8, !tbaa !5
  %693 = load i32, ptr %36, align 4, !tbaa !9
  %694 = sext i32 %693 to i64
  %695 = getelementptr inbounds i16, ptr %692, i64 %694
  %696 = load i16, ptr %695, align 2, !tbaa !28
  %697 = sext i16 %696 to i32
  %698 = icmp sgt i32 %697, 0
  br i1 %698, label %699, label %718

699:                                              ; preds = %681
  %700 = load ptr, ptr %31, align 8, !tbaa !5
  %701 = load i32, ptr %36, align 4, !tbaa !9
  %702 = sext i32 %701 to i64
  %703 = getelementptr inbounds ptr, ptr %700, i64 %702
  %704 = load ptr, ptr %703, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.MTable, ptr %704, i32 0, i32 3
  %706 = load ptr, ptr %705, align 8, !tbaa !20
  %707 = load i32, ptr %34, align 4, !tbaa !9
  %708 = sext i32 %707 to i64
  %709 = getelementptr inbounds ptr, ptr %706, i64 %708
  %710 = load ptr, ptr %709, align 8, !tbaa !5
  %711 = load i32, ptr %36, align 4, !tbaa !9
  %712 = sext i32 %711 to i64
  %713 = getelementptr inbounds i16, ptr %710, i64 %712
  %714 = load i16, ptr %713, align 2, !tbaa !28
  %715 = sext i16 %714 to i32
  %716 = sub nsw i32 %715, 1
  %717 = trunc i32 %716 to i16
  store i16 %717, ptr %713, align 2, !tbaa !28
  br label %718

718:                                              ; preds = %699, %681
  br label %719

719:                                              ; preds = %718
  %720 = load i32, ptr %36, align 4, !tbaa !9
  %721 = add nsw i32 %720, 1
  store i32 %721, ptr %36, align 4, !tbaa !9
  br label %678, !llvm.loop !30

722:                                              ; preds = %678
  store i32 0, ptr %36, align 4, !tbaa !9
  br label %723

723:                                              ; preds = %988, %722
  %724 = load i32, ptr %36, align 4, !tbaa !9
  %725 = icmp slt i32 %724, 3
  br i1 %725, label %726, label %991

726:                                              ; preds = %723
  %727 = load ptr, ptr %31, align 8, !tbaa !5
  %728 = load i32, ptr %36, align 4, !tbaa !9
  %729 = sext i32 %728 to i64
  %730 = getelementptr inbounds ptr, ptr %727, i64 %729
  %731 = load ptr, ptr %730, align 8, !tbaa !5
  %732 = getelementptr inbounds %struct.MTable, ptr %731, i32 0, i32 3
  %733 = load ptr, ptr %732, align 8, !tbaa !20
  %734 = load i32, ptr %34, align 4, !tbaa !9
  %735 = sext i32 %734 to i64
  %736 = getelementptr inbounds ptr, ptr %733, i64 %735
  %737 = load ptr, ptr %736, align 8, !tbaa !5
  %738 = load i32, ptr %36, align 4, !tbaa !9
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds i16, ptr %737, i64 %739
  %741 = load i16, ptr %740, align 2, !tbaa !28
  %742 = sext i16 %741 to i32
  %743 = icmp slt i32 %742, 0
  br i1 %743, label %744, label %745

744:                                              ; preds = %726
  br label %988

745:                                              ; preds = %726
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #5
  store i32 0, ptr %40, align 4, !tbaa !9
  br label %746

746:                                              ; preds = %873, %745
  %747 = load i32, ptr %40, align 4, !tbaa !9
  %748 = load i32, ptr %15, align 4, !tbaa !9
  %749 = icmp slt i32 %747, %748
  br i1 %749, label %751, label %750

750:                                              ; preds = %746
  store i32 53, ptr %22, align 4
  br label %876

751:                                              ; preds = %746
  %752 = load ptr, ptr %5, align 8, !tbaa !5
  %753 = getelementptr inbounds %struct.MImage, ptr %752, i32 0, i32 3
  %754 = load i32, ptr %40, align 4, !tbaa !9
  %755 = sext i32 %754 to i64
  %756 = getelementptr inbounds [4 x ptr], ptr %753, i64 0, i64 %755
  %757 = load ptr, ptr %756, align 8, !tbaa !5
  %758 = load i32, ptr %34, align 4, !tbaa !9
  %759 = sext i32 %758 to i64
  %760 = getelementptr inbounds ptr, ptr %757, i64 %759
  %761 = load ptr, ptr %760, align 8, !tbaa !5
  %762 = load i32, ptr %35, align 4, !tbaa !9
  %763 = sext i32 %762 to i64
  %764 = getelementptr inbounds i8, ptr %761, i64 %763
  %765 = load i8, ptr %764, align 1, !tbaa !20
  %766 = zext i8 %765 to i32
  %767 = load i32, ptr %36, align 4, !tbaa !9
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds [3 x ptr], ptr %32, i64 0, i64 %768
  %770 = load ptr, ptr %769, align 8, !tbaa !5
  %771 = load i32, ptr %40, align 4, !tbaa !9
  %772 = sext i32 %771 to i64
  %773 = getelementptr inbounds ptr, ptr %770, i64 %772
  %774 = load ptr, ptr %773, align 8, !tbaa !5
  %775 = getelementptr inbounds %struct.MTable, ptr %774, i32 0, i32 3
  %776 = load ptr, ptr %775, align 8, !tbaa !20
  %777 = load i32, ptr %34, align 4, !tbaa !9
  %778 = sext i32 %777 to i64
  %779 = getelementptr inbounds ptr, ptr %776, i64 %778
  %780 = load ptr, ptr %779, align 8, !tbaa !5
  %781 = load i32, ptr %35, align 4, !tbaa !9
  %782 = sext i32 %781 to i64
  %783 = getelementptr inbounds i16, ptr %780, i64 %782
  %784 = load i16, ptr %783, align 2, !tbaa !28
  %785 = sext i16 %784 to i32
  %786 = ashr i32 %785, 7
  %787 = sub nsw i32 %766, %786
  %788 = icmp sgt i32 %787, 0
  br i1 %788, label %789, label %826

789:                                              ; preds = %751
  %790 = load ptr, ptr %5, align 8, !tbaa !5
  %791 = getelementptr inbounds %struct.MImage, ptr %790, i32 0, i32 3
  %792 = load i32, ptr %40, align 4, !tbaa !9
  %793 = sext i32 %792 to i64
  %794 = getelementptr inbounds [4 x ptr], ptr %791, i64 0, i64 %793
  %795 = load ptr, ptr %794, align 8, !tbaa !5
  %796 = load i32, ptr %34, align 4, !tbaa !9
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds ptr, ptr %795, i64 %797
  %799 = load ptr, ptr %798, align 8, !tbaa !5
  %800 = load i32, ptr %35, align 4, !tbaa !9
  %801 = sext i32 %800 to i64
  %802 = getelementptr inbounds i8, ptr %799, i64 %801
  %803 = load i8, ptr %802, align 1, !tbaa !20
  %804 = zext i8 %803 to i32
  %805 = load i32, ptr %36, align 4, !tbaa !9
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds [3 x ptr], ptr %32, i64 0, i64 %806
  %808 = load ptr, ptr %807, align 8, !tbaa !5
  %809 = load i32, ptr %40, align 4, !tbaa !9
  %810 = sext i32 %809 to i64
  %811 = getelementptr inbounds ptr, ptr %808, i64 %810
  %812 = load ptr, ptr %811, align 8, !tbaa !5
  %813 = getelementptr inbounds %struct.MTable, ptr %812, i32 0, i32 3
  %814 = load ptr, ptr %813, align 8, !tbaa !20
  %815 = load i32, ptr %34, align 4, !tbaa !9
  %816 = sext i32 %815 to i64
  %817 = getelementptr inbounds ptr, ptr %814, i64 %816
  %818 = load ptr, ptr %817, align 8, !tbaa !5
  %819 = load i32, ptr %35, align 4, !tbaa !9
  %820 = sext i32 %819 to i64
  %821 = getelementptr inbounds i16, ptr %818, i64 %820
  %822 = load i16, ptr %821, align 2, !tbaa !28
  %823 = sext i16 %822 to i32
  %824 = ashr i32 %823, 7
  %825 = sub nsw i32 %804, %824
  br label %864

826:                                              ; preds = %751
  %827 = load ptr, ptr %5, align 8, !tbaa !5
  %828 = getelementptr inbounds %struct.MImage, ptr %827, i32 0, i32 3
  %829 = load i32, ptr %40, align 4, !tbaa !9
  %830 = sext i32 %829 to i64
  %831 = getelementptr inbounds [4 x ptr], ptr %828, i64 0, i64 %830
  %832 = load ptr, ptr %831, align 8, !tbaa !5
  %833 = load i32, ptr %34, align 4, !tbaa !9
  %834 = sext i32 %833 to i64
  %835 = getelementptr inbounds ptr, ptr %832, i64 %834
  %836 = load ptr, ptr %835, align 8, !tbaa !5
  %837 = load i32, ptr %35, align 4, !tbaa !9
  %838 = sext i32 %837 to i64
  %839 = getelementptr inbounds i8, ptr %836, i64 %838
  %840 = load i8, ptr %839, align 1, !tbaa !20
  %841 = zext i8 %840 to i32
  %842 = load i32, ptr %36, align 4, !tbaa !9
  %843 = sext i32 %842 to i64
  %844 = getelementptr inbounds [3 x ptr], ptr %32, i64 0, i64 %843
  %845 = load ptr, ptr %844, align 8, !tbaa !5
  %846 = load i32, ptr %40, align 4, !tbaa !9
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds ptr, ptr %845, i64 %847
  %849 = load ptr, ptr %848, align 8, !tbaa !5
  %850 = getelementptr inbounds %struct.MTable, ptr %849, i32 0, i32 3
  %851 = load ptr, ptr %850, align 8, !tbaa !20
  %852 = load i32, ptr %34, align 4, !tbaa !9
  %853 = sext i32 %852 to i64
  %854 = getelementptr inbounds ptr, ptr %851, i64 %853
  %855 = load ptr, ptr %854, align 8, !tbaa !5
  %856 = load i32, ptr %35, align 4, !tbaa !9
  %857 = sext i32 %856 to i64
  %858 = getelementptr inbounds i16, ptr %855, i64 %857
  %859 = load i16, ptr %858, align 2, !tbaa !28
  %860 = sext i16 %859 to i32
  %861 = ashr i32 %860, 7
  %862 = sub nsw i32 %841, %861
  %863 = sub nsw i32 0, %862
  br label %864

864:                                              ; preds = %826, %789
  %865 = phi i32 [ %825, %789 ], [ %863, %826 ]
  %866 = load i32, ptr %8, align 4, !tbaa !9
  %867 = icmp sgt i32 %865, %866
  %868 = zext i1 %867 to i32
  store i32 %868, ptr %9, align 4, !tbaa !9
  %869 = load i32, ptr %9, align 4, !tbaa !9
  %870 = icmp eq i32 %869, 1
  br i1 %870, label %871, label %872

871:                                              ; preds = %864
  store i32 53, ptr %22, align 4
  br label %876

872:                                              ; preds = %864
  br label %873

873:                                              ; preds = %872
  %874 = load i32, ptr %40, align 4, !tbaa !9
  %875 = add nsw i32 %874, 1
  store i32 %875, ptr %40, align 4, !tbaa !9
  br label %746, !llvm.loop !31

876:                                              ; preds = %871, %750
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  br label %877

877:                                              ; preds = %876
  %878 = load i32, ptr %9, align 4, !tbaa !9
  %879 = icmp ne i32 %878, 0
  br i1 %879, label %987, label %880

880:                                              ; preds = %877
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #5
  store i32 0, ptr %41, align 4, !tbaa !9
  br label %881

881:                                              ; preds = %943, %880
  %882 = load i32, ptr %41, align 4, !tbaa !9
  %883 = load i32, ptr %15, align 4, !tbaa !9
  %884 = icmp slt i32 %882, %883
  br i1 %884, label %886, label %885

885:                                              ; preds = %881
  store i32 56, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #5
  br label %946

886:                                              ; preds = %881
  %887 = load ptr, ptr %5, align 8, !tbaa !5
  %888 = getelementptr inbounds %struct.MImage, ptr %887, i32 0, i32 3
  %889 = load i32, ptr %41, align 4, !tbaa !9
  %890 = sext i32 %889 to i64
  %891 = getelementptr inbounds [4 x ptr], ptr %888, i64 0, i64 %890
  %892 = load ptr, ptr %891, align 8, !tbaa !5
  %893 = load i32, ptr %34, align 4, !tbaa !9
  %894 = sext i32 %893 to i64
  %895 = getelementptr inbounds ptr, ptr %892, i64 %894
  %896 = load ptr, ptr %895, align 8, !tbaa !5
  %897 = load i32, ptr %35, align 4, !tbaa !9
  %898 = sext i32 %897 to i64
  %899 = getelementptr inbounds i8, ptr %896, i64 %898
  %900 = load i8, ptr %899, align 1, !tbaa !20
  %901 = uitofp i8 %900 to float
  %902 = fpext float %901 to double
  %903 = load i32, ptr %36, align 4, !tbaa !9
  %904 = sext i32 %903 to i64
  %905 = getelementptr inbounds [3 x ptr], ptr %32, i64 0, i64 %904
  %906 = load ptr, ptr %905, align 8, !tbaa !5
  %907 = load i32, ptr %41, align 4, !tbaa !9
  %908 = sext i32 %907 to i64
  %909 = getelementptr inbounds ptr, ptr %906, i64 %908
  %910 = load ptr, ptr %909, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.MTable, ptr %910, i32 0, i32 3
  %912 = load ptr, ptr %911, align 8, !tbaa !20
  %913 = load i32, ptr %34, align 4, !tbaa !9
  %914 = sext i32 %913 to i64
  %915 = getelementptr inbounds ptr, ptr %912, i64 %914
  %916 = load ptr, ptr %915, align 8, !tbaa !5
  %917 = load i32, ptr %35, align 4, !tbaa !9
  %918 = sext i32 %917 to i64
  %919 = getelementptr inbounds i16, ptr %916, i64 %918
  %920 = load i16, ptr %919, align 2, !tbaa !28
  %921 = sitofp i16 %920 to float
  %922 = fmul float %921, 0x3FECCCCCC0000000
  %923 = fpext float %922 to double
  %924 = call double @llvm.fmuladd.f64(double %902, double 1.280000e+01, double %923)
  %925 = fptosi double %924 to i16
  %926 = load i32, ptr %36, align 4, !tbaa !9
  %927 = sext i32 %926 to i64
  %928 = getelementptr inbounds [3 x ptr], ptr %32, i64 0, i64 %927
  %929 = load ptr, ptr %928, align 8, !tbaa !5
  %930 = load i32, ptr %41, align 4, !tbaa !9
  %931 = sext i32 %930 to i64
  %932 = getelementptr inbounds ptr, ptr %929, i64 %931
  %933 = load ptr, ptr %932, align 8, !tbaa !5
  %934 = getelementptr inbounds %struct.MTable, ptr %933, i32 0, i32 3
  %935 = load ptr, ptr %934, align 8, !tbaa !20
  %936 = load i32, ptr %34, align 4, !tbaa !9
  %937 = sext i32 %936 to i64
  %938 = getelementptr inbounds ptr, ptr %935, i64 %937
  %939 = load ptr, ptr %938, align 8, !tbaa !5
  %940 = load i32, ptr %35, align 4, !tbaa !9
  %941 = sext i32 %940 to i64
  %942 = getelementptr inbounds i16, ptr %939, i64 %941
  store i16 %925, ptr %942, align 2, !tbaa !28
  br label %943

943:                                              ; preds = %886
  %944 = load i32, ptr %41, align 4, !tbaa !9
  %945 = add nsw i32 %944, 1
  store i32 %945, ptr %41, align 4, !tbaa !9
  br label %881, !llvm.loop !32

946:                                              ; preds = %885
  %947 = load ptr, ptr %31, align 8, !tbaa !5
  %948 = load i32, ptr %36, align 4, !tbaa !9
  %949 = sext i32 %948 to i64
  %950 = getelementptr inbounds ptr, ptr %947, i64 %949
  %951 = load ptr, ptr %950, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.MTable, ptr %951, i32 0, i32 3
  %953 = load ptr, ptr %952, align 8, !tbaa !20
  %954 = load i32, ptr %34, align 4, !tbaa !9
  %955 = sext i32 %954 to i64
  %956 = getelementptr inbounds ptr, ptr %953, i64 %955
  %957 = load ptr, ptr %956, align 8, !tbaa !5
  %958 = load i32, ptr %35, align 4, !tbaa !9
  %959 = sext i32 %958 to i64
  %960 = getelementptr inbounds i16, ptr %957, i64 %959
  %961 = load i16, ptr %960, align 2, !tbaa !28
  %962 = sext i16 %961 to i32
  %963 = load i32, ptr %7, align 4, !tbaa !9
  %964 = load i32, ptr %7, align 4, !tbaa !9
  %965 = add nsw i32 %963, %964
  %966 = icmp slt i32 %962, %965
  br i1 %966, label %967, label %986

967:                                              ; preds = %946
  %968 = load ptr, ptr %31, align 8, !tbaa !5
  %969 = load i32, ptr %36, align 4, !tbaa !9
  %970 = sext i32 %969 to i64
  %971 = getelementptr inbounds ptr, ptr %968, i64 %970
  %972 = load ptr, ptr %971, align 8, !tbaa !5
  %973 = getelementptr inbounds %struct.MTable, ptr %972, i32 0, i32 3
  %974 = load ptr, ptr %973, align 8, !tbaa !20
  %975 = load i32, ptr %34, align 4, !tbaa !9
  %976 = sext i32 %975 to i64
  %977 = getelementptr inbounds ptr, ptr %974, i64 %976
  %978 = load ptr, ptr %977, align 8, !tbaa !5
  %979 = load i32, ptr %35, align 4, !tbaa !9
  %980 = sext i32 %979 to i64
  %981 = getelementptr inbounds i16, ptr %978, i64 %980
  %982 = load i16, ptr %981, align 2, !tbaa !28
  %983 = sext i16 %982 to i32
  %984 = add nsw i32 %983, 2
  %985 = trunc i32 %984 to i16
  store i16 %985, ptr %981, align 2, !tbaa !28
  br label %986

986:                                              ; preds = %967, %946
  br label %991

987:                                              ; preds = %877
  br label %988

988:                                              ; preds = %987, %744
  %989 = load i32, ptr %36, align 4, !tbaa !9
  %990 = add nsw i32 %989, 1
  store i32 %990, ptr %36, align 4, !tbaa !9
  br label %723, !llvm.loop !33

991:                                              ; preds = %986, %723
  %992 = load i32, ptr %36, align 4, !tbaa !9
  %993 = icmp eq i32 %992, 3
  br i1 %993, label %994, label %1081

994:                                              ; preds = %991
  store i32 0, ptr %36, align 4, !tbaa !9
  br label %995

995:                                              ; preds = %1077, %994
  %996 = load i32, ptr %36, align 4, !tbaa !9
  %997 = icmp slt i32 %996, 3
  br i1 %997, label %998, label %1080

998:                                              ; preds = %995
  %999 = load ptr, ptr %31, align 8, !tbaa !5
  %1000 = load i32, ptr %36, align 4, !tbaa !9
  %1001 = sext i32 %1000 to i64
  %1002 = getelementptr inbounds ptr, ptr %999, i64 %1001
  %1003 = load ptr, ptr %1002, align 8, !tbaa !5
  %1004 = getelementptr inbounds %struct.MTable, ptr %1003, i32 0, i32 3
  %1005 = load ptr, ptr %1004, align 8, !tbaa !20
  %1006 = load i32, ptr %34, align 4, !tbaa !9
  %1007 = sext i32 %1006 to i64
  %1008 = getelementptr inbounds ptr, ptr %1005, i64 %1007
  %1009 = load ptr, ptr %1008, align 8, !tbaa !5
  %1010 = load i32, ptr %36, align 4, !tbaa !9
  %1011 = sext i32 %1010 to i64
  %1012 = getelementptr inbounds i16, ptr %1009, i64 %1011
  %1013 = load i16, ptr %1012, align 2, !tbaa !28
  %1014 = sext i16 %1013 to i32
  %1015 = icmp eq i32 %1014, 0
  br i1 %1015, label %1016, label %1076

1016:                                             ; preds = %998
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #5
  store i32 0, ptr %42, align 4, !tbaa !9
  br label %1017

1017:                                             ; preds = %1058, %1016
  %1018 = load i32, ptr %42, align 4, !tbaa !9
  %1019 = load i32, ptr %15, align 4, !tbaa !9
  %1020 = icmp slt i32 %1018, %1019
  br i1 %1020, label %1022, label %1021

1021:                                             ; preds = %1017
  store i32 62, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #5
  br label %1061

1022:                                             ; preds = %1017
  %1023 = load ptr, ptr %5, align 8, !tbaa !5
  %1024 = getelementptr inbounds %struct.MImage, ptr %1023, i32 0, i32 3
  %1025 = load i32, ptr %42, align 4, !tbaa !9
  %1026 = sext i32 %1025 to i64
  %1027 = getelementptr inbounds [4 x ptr], ptr %1024, i64 0, i64 %1026
  %1028 = load ptr, ptr %1027, align 8, !tbaa !5
  %1029 = load i32, ptr %34, align 4, !tbaa !9
  %1030 = sext i32 %1029 to i64
  %1031 = getelementptr inbounds ptr, ptr %1028, i64 %1030
  %1032 = load ptr, ptr %1031, align 8, !tbaa !5
  %1033 = load i32, ptr %35, align 4, !tbaa !9
  %1034 = sext i32 %1033 to i64
  %1035 = getelementptr inbounds i8, ptr %1032, i64 %1034
  %1036 = load i8, ptr %1035, align 1, !tbaa !20
  %1037 = zext i8 %1036 to i16
  %1038 = sext i16 %1037 to i32
  %1039 = shl i32 %1038, 7
  %1040 = trunc i32 %1039 to i16
  %1041 = load i32, ptr %36, align 4, !tbaa !9
  %1042 = sext i32 %1041 to i64
  %1043 = getelementptr inbounds [3 x ptr], ptr %32, i64 0, i64 %1042
  %1044 = load ptr, ptr %1043, align 8, !tbaa !5
  %1045 = load i32, ptr %42, align 4, !tbaa !9
  %1046 = sext i32 %1045 to i64
  %1047 = getelementptr inbounds ptr, ptr %1044, i64 %1046
  %1048 = load ptr, ptr %1047, align 8, !tbaa !5
  %1049 = getelementptr inbounds %struct.MTable, ptr %1048, i32 0, i32 3
  %1050 = load ptr, ptr %1049, align 8, !tbaa !20
  %1051 = load i32, ptr %34, align 4, !tbaa !9
  %1052 = sext i32 %1051 to i64
  %1053 = getelementptr inbounds ptr, ptr %1050, i64 %1052
  %1054 = load ptr, ptr %1053, align 8, !tbaa !5
  %1055 = load i32, ptr %35, align 4, !tbaa !9
  %1056 = sext i32 %1055 to i64
  %1057 = getelementptr inbounds i16, ptr %1054, i64 %1056
  store i16 %1040, ptr %1057, align 2, !tbaa !28
  br label %1058

1058:                                             ; preds = %1022
  %1059 = load i32, ptr %42, align 4, !tbaa !9
  %1060 = add nsw i32 %1059, 1
  store i32 %1060, ptr %42, align 4, !tbaa !9
  br label %1017, !llvm.loop !34

1061:                                             ; preds = %1021
  %1062 = load ptr, ptr %31, align 8, !tbaa !5
  %1063 = load i32, ptr %36, align 4, !tbaa !9
  %1064 = sext i32 %1063 to i64
  %1065 = getelementptr inbounds ptr, ptr %1062, i64 %1064
  %1066 = load ptr, ptr %1065, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.MTable, ptr %1066, i32 0, i32 3
  %1068 = load ptr, ptr %1067, align 8, !tbaa !20
  %1069 = load i32, ptr %34, align 4, !tbaa !9
  %1070 = sext i32 %1069 to i64
  %1071 = getelementptr inbounds ptr, ptr %1068, i64 %1070
  %1072 = load ptr, ptr %1071, align 8, !tbaa !5
  %1073 = load i32, ptr %35, align 4, !tbaa !9
  %1074 = sext i32 %1073 to i64
  %1075 = getelementptr inbounds i16, ptr %1072, i64 %1074
  store i16 1, ptr %1075, align 2, !tbaa !28
  br label %1080

1076:                                             ; preds = %998
  br label %1077

1077:                                             ; preds = %1076
  %1078 = load i32, ptr %36, align 4, !tbaa !9
  %1079 = add nsw i32 %1078, 1
  store i32 %1079, ptr %36, align 4, !tbaa !9
  br label %995, !llvm.loop !35

1080:                                             ; preds = %1061, %995
  br label %1206

1081:                                             ; preds = %991
  store i32 0, ptr %36, align 4, !tbaa !9
  br label %1082

1082:                                             ; preds = %1202, %1081
  %1083 = load i32, ptr %36, align 4, !tbaa !9
  %1084 = icmp slt i32 %1083, 3
  br i1 %1084, label %1085, label %1205

1085:                                             ; preds = %1082
  %1086 = load ptr, ptr %31, align 8, !tbaa !5
  %1087 = load i32, ptr %36, align 4, !tbaa !9
  %1088 = sext i32 %1087 to i64
  %1089 = getelementptr inbounds ptr, ptr %1086, i64 %1088
  %1090 = load ptr, ptr %1089, align 8, !tbaa !5
  %1091 = getelementptr inbounds %struct.MTable, ptr %1090, i32 0, i32 3
  %1092 = load ptr, ptr %1091, align 8, !tbaa !20
  %1093 = load i32, ptr %34, align 4, !tbaa !9
  %1094 = sext i32 %1093 to i64
  %1095 = getelementptr inbounds ptr, ptr %1092, i64 %1094
  %1096 = load ptr, ptr %1095, align 8, !tbaa !5
  %1097 = load i32, ptr %35, align 4, !tbaa !9
  %1098 = sext i32 %1097 to i64
  %1099 = getelementptr inbounds i16, ptr %1096, i64 %1098
  %1100 = load i16, ptr %1099, align 2, !tbaa !28
  %1101 = sext i16 %1100 to i32
  %1102 = load i32, ptr %7, align 4, !tbaa !9
  %1103 = icmp sgt i32 %1101, %1102
  br i1 %1103, label %1104, label %1201

1104:                                             ; preds = %1085
  store i32 0, ptr %37, align 4, !tbaa !9
  br label %1105

1105:                                             ; preds = %1149, %1104
  %1106 = load i32, ptr %37, align 4, !tbaa !9
  %1107 = icmp slt i32 %1106, 3
  br i1 %1107, label %1108, label %1152

1108:                                             ; preds = %1105
  %1109 = load i32, ptr %37, align 4, !tbaa !9
  %1110 = load i32, ptr %36, align 4, !tbaa !9
  %1111 = icmp eq i32 %1109, %1110
  br i1 %1111, label %1112, label %1113

1112:                                             ; preds = %1108
  br label %1149

1113:                                             ; preds = %1108
  %1114 = load ptr, ptr %31, align 8, !tbaa !5
  %1115 = load i32, ptr %36, align 4, !tbaa !9
  %1116 = sext i32 %1115 to i64
  %1117 = getelementptr inbounds ptr, ptr %1114, i64 %1116
  %1118 = load ptr, ptr %1117, align 8, !tbaa !5
  %1119 = getelementptr inbounds %struct.MTable, ptr %1118, i32 0, i32 3
  %1120 = load ptr, ptr %1119, align 8, !tbaa !20
  %1121 = load i32, ptr %34, align 4, !tbaa !9
  %1122 = sext i32 %1121 to i64
  %1123 = getelementptr inbounds ptr, ptr %1120, i64 %1122
  %1124 = load ptr, ptr %1123, align 8, !tbaa !5
  %1125 = load i32, ptr %35, align 4, !tbaa !9
  %1126 = sext i32 %1125 to i64
  %1127 = getelementptr inbounds i16, ptr %1124, i64 %1126
  %1128 = load i16, ptr %1127, align 2, !tbaa !28
  %1129 = sext i16 %1128 to i32
  %1130 = load ptr, ptr %31, align 8, !tbaa !5
  %1131 = load i32, ptr %37, align 4, !tbaa !9
  %1132 = sext i32 %1131 to i64
  %1133 = getelementptr inbounds ptr, ptr %1130, i64 %1132
  %1134 = load ptr, ptr %1133, align 8, !tbaa !5
  %1135 = getelementptr inbounds %struct.MTable, ptr %1134, i32 0, i32 3
  %1136 = load ptr, ptr %1135, align 8, !tbaa !20
  %1137 = load i32, ptr %34, align 4, !tbaa !9
  %1138 = sext i32 %1137 to i64
  %1139 = getelementptr inbounds ptr, ptr %1136, i64 %1138
  %1140 = load ptr, ptr %1139, align 8, !tbaa !5
  %1141 = load i32, ptr %35, align 4, !tbaa !9
  %1142 = sext i32 %1141 to i64
  %1143 = getelementptr inbounds i16, ptr %1140, i64 %1142
  %1144 = load i16, ptr %1143, align 2, !tbaa !28
  %1145 = sext i16 %1144 to i32
  %1146 = icmp slt i32 %1129, %1145
  br i1 %1146, label %1147, label %1148

1147:                                             ; preds = %1113
  br label %1152

1148:                                             ; preds = %1113
  br label %1149

1149:                                             ; preds = %1148, %1112
  %1150 = load i32, ptr %37, align 4, !tbaa !9
  %1151 = add nsw i32 %1150, 1
  store i32 %1151, ptr %37, align 4, !tbaa !9
  br label %1105, !llvm.loop !36

1152:                                             ; preds = %1147, %1105
  %1153 = load i32, ptr %37, align 4, !tbaa !9
  %1154 = icmp eq i32 %1153, 3
  br i1 %1154, label %1155, label %1200

1155:                                             ; preds = %1152
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #5
  store i32 0, ptr %43, align 4, !tbaa !9
  br label %1156

1156:                                             ; preds = %1196, %1155
  %1157 = load i32, ptr %43, align 4, !tbaa !9
  %1158 = load i32, ptr %15, align 4, !tbaa !9
  %1159 = icmp slt i32 %1157, %1158
  br i1 %1159, label %1161, label %1160

1160:                                             ; preds = %1156
  store i32 71, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  br label %1199

1161:                                             ; preds = %1156
  %1162 = load i32, ptr %36, align 4, !tbaa !9
  %1163 = sext i32 %1162 to i64
  %1164 = getelementptr inbounds [3 x ptr], ptr %32, i64 0, i64 %1163
  %1165 = load ptr, ptr %1164, align 8, !tbaa !5
  %1166 = load i32, ptr %43, align 4, !tbaa !9
  %1167 = sext i32 %1166 to i64
  %1168 = getelementptr inbounds ptr, ptr %1165, i64 %1167
  %1169 = load ptr, ptr %1168, align 8, !tbaa !5
  %1170 = getelementptr inbounds %struct.MTable, ptr %1169, i32 0, i32 3
  %1171 = load ptr, ptr %1170, align 8, !tbaa !20
  %1172 = load i32, ptr %34, align 4, !tbaa !9
  %1173 = sext i32 %1172 to i64
  %1174 = getelementptr inbounds ptr, ptr %1171, i64 %1173
  %1175 = load ptr, ptr %1174, align 8, !tbaa !5
  %1176 = load i32, ptr %35, align 4, !tbaa !9
  %1177 = sext i32 %1176 to i64
  %1178 = getelementptr inbounds i16, ptr %1175, i64 %1177
  %1179 = load i16, ptr %1178, align 2, !tbaa !28
  %1180 = sext i16 %1179 to i32
  %1181 = ashr i32 %1180, 7
  %1182 = trunc i32 %1181 to i8
  %1183 = load ptr, ptr %6, align 8, !tbaa !5
  %1184 = getelementptr inbounds %struct.MImage, ptr %1183, i32 0, i32 3
  %1185 = load i32, ptr %43, align 4, !tbaa !9
  %1186 = sext i32 %1185 to i64
  %1187 = getelementptr inbounds [4 x ptr], ptr %1184, i64 0, i64 %1186
  %1188 = load ptr, ptr %1187, align 8, !tbaa !5
  %1189 = load i32, ptr %34, align 4, !tbaa !9
  %1190 = sext i32 %1189 to i64
  %1191 = getelementptr inbounds ptr, ptr %1188, i64 %1190
  %1192 = load ptr, ptr %1191, align 8, !tbaa !5
  %1193 = load i32, ptr %35, align 4, !tbaa !9
  %1194 = sext i32 %1193 to i64
  %1195 = getelementptr inbounds i8, ptr %1192, i64 %1194
  store i8 %1182, ptr %1195, align 1, !tbaa !20
  br label %1196

1196:                                             ; preds = %1161
  %1197 = load i32, ptr %43, align 4, !tbaa !9
  %1198 = add nsw i32 %1197, 1
  store i32 %1198, ptr %43, align 4, !tbaa !9
  br label %1156, !llvm.loop !37

1199:                                             ; preds = %1160
  br label %1200

1200:                                             ; preds = %1199, %1152
  br label %1201

1201:                                             ; preds = %1200, %1085
  br label %1202

1202:                                             ; preds = %1201
  %1203 = load i32, ptr %36, align 4, !tbaa !9
  %1204 = add nsw i32 %1203, 1
  store i32 %1204, ptr %36, align 4, !tbaa !9
  br label %1082, !llvm.loop !38

1205:                                             ; preds = %1082
  br label %1206

1206:                                             ; preds = %1205, %1080
  store i32 0, ptr %22, align 4
  br label %1207

1207:                                             ; preds = %1206, %676
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  %1208 = load i32, ptr %22, align 4
  switch i32 %1208, label %1218 [
    i32 0, label %1209
    i32 40, label %1210
  ]

1209:                                             ; preds = %1207
  br label %1210

1210:                                             ; preds = %1209, %1207
  %1211 = load i32, ptr %35, align 4, !tbaa !9
  %1212 = add nsw i32 %1211, 1
  store i32 %1212, ptr %35, align 4, !tbaa !9
  br label %513, !llvm.loop !39

1213:                                             ; preds = %517
  br label %1214

1214:                                             ; preds = %1213
  %1215 = load i32, ptr %34, align 4, !tbaa !9
  %1216 = add nsw i32 %1215, 1
  store i32 %1216, ptr %34, align 4, !tbaa !9
  br label %507, !llvm.loop !40

1217:                                             ; preds = %511
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  ret void

1218:                                             ; preds = %1207
  unreachable
}

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

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

declare ptr @GetHandle(ptr noundef, i32 noundef, i32 noundef, ptr noundef) #2

declare ptr @TableCreate(i32 noundef, i32 noundef, i32 noundef, ptr noundef) #2

declare void @TableRedefine(ptr noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef) #2

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

declare ptr @ImageCreate(i32 noundef, i32 noundef, i32 noundef, ptr noundef) #2

declare void @mImageCopy(ptr noundef, ptr noundef) #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #4

attributes #0 = { 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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { 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 = !{!12, !10, i64 0}
!12 = !{!"MImage", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 16, !6, i64 48}
!13 = !{!12, !10, i64 4}
!14 = !{!12, !10, i64 8}
!15 = !{!16, !6, i64 16}
!16 = !{!"MHandle", !10, i64 0, !10, i64 4, !6, i64 8, !6, i64 16}
!17 = !{!16, !10, i64 4}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}
!20 = !{!7, !7, i64 0}
!21 = distinct !{!21, !19}
!22 = distinct !{!22, !19}
!23 = !{!24, !6, i64 120}
!24 = !{!"HandleVideoBackground", !7, i64 0, !7, i64 96, !6, i64 120, !6, i64 128}
!25 = !{!24, !6, i64 128}
!26 = distinct !{!26, !19}
!27 = distinct !{!27, !19}
!28 = !{!29, !29, i64 0}
!29 = !{!"short", !7, i64 0}
!30 = distinct !{!30, !19}
!31 = distinct !{!31, !19}
!32 = distinct !{!32, !19}
!33 = distinct !{!33, !19}
!34 = distinct !{!34, !19}
!35 = distinct !{!35, !19}
!36 = distinct !{!36, !19}
!37 = distinct !{!37, !19}
!38 = distinct !{!38, !19}
!39 = distinct !{!39, !19}
!40 = distinct !{!40, !19}


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

@.str = external hidden unnamed_addr constant [89 x i8], align 1
@__FUNCTION__.mVideoBackground = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [14 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @endVideoBackground(ptr noundef) #0

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

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

; Function Attrs: nounwind uwtable
define dso_local void @mVideoBackground(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3) local_unnamed_addr #0 {
  %.sroa.0 = alloca ptr, align 16
  %.sroa.7 = alloca ptr, align 8
  %.sroa.12 = alloca ptr, align 16
  %magicptr = ptrtoint ptr %0 to i64
  switch i64 %magicptr, label %5 [
    i64 -1, label %.thread
    i64 0, label %.thread
  ]

5:                                                ; preds = %4
  %6 = getelementptr inbounds i8, ptr %0, i64 16
  %7 = icmp eq ptr %6, inttoptr (i64 -1 to ptr)
  br i1 %7, label %.thread, label %8

8:                                                ; preds = %5
  %9 = load i32, ptr %0, align 8, !tbaa !5
  %10 = icmp slt i32 %9, 1
  br i1 %10, label %.thread, label %11

11:                                               ; preds = %8
  %12 = getelementptr inbounds i8, ptr %0, i64 4
  %13 = load i32, ptr %12, align 4, !tbaa !11
  %14 = icmp slt i32 %13, 1
  br i1 %14, label %.thread, label %15

15:                                               ; preds = %11
  %16 = getelementptr inbounds i8, ptr %0, i64 8
  %17 = load i32, ptr %16, align 8, !tbaa !12
  %18 = icmp sgt i32 %17, 0
  br i1 %18, label %19, label %.thread

.thread:                                          ; preds = %5, %8, %11, %4, %4, %15
  tail call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef 1, i32 noundef -1, ptr noundef nonnull @.str, i32 noundef 44, ptr noundef nonnull @__FUNCTION__.mVideoBackground, ptr noundef nonnull @.str.1) #6
  br label %19

19:                                               ; preds = %.thread, %15
  %20 = icmp sgt i32 %3, 128
  br i1 %20, label %21, label %22

21:                                               ; preds = %19
  tail call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef 1, i32 noundef -1, ptr noundef nonnull @.str, i32 noundef 45, ptr noundef nonnull @__FUNCTION__.mVideoBackground, ptr noundef nonnull @.str.1) #6
  br label %22

22:                                               ; preds = %21, %19
  %magicptr352 = ptrtoint ptr %1 to i64
  switch i64 %magicptr352, label %28 [
    i64 -1, label %23
    i64 0, label %23
  ]

23:                                               ; preds = %22, %22
  %24 = icmp eq ptr %1, null
  %25 = icmp eq ptr %1, inttoptr (i64 -1 to ptr)
  %26 = or i1 %24, %25
  %27 = zext i1 %26 to i32
  tail call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef %27, i32 noundef -1, ptr noundef nonnull @.str, i32 noundef 46, ptr noundef nonnull @__FUNCTION__.mVideoBackground, ptr noundef nonnull @.str.1) #6
  br label %28

28:                                               ; preds = %22, %23
  %29 = getelementptr inbounds i8, ptr %0, i64 4
  %30 = load i32, ptr %29, align 4, !tbaa !11
  %.fr436 = freeze i32 %30
  %31 = getelementptr inbounds i8, ptr %0, i64 8
  %32 = load i32, ptr %31, align 8, !tbaa !12
  %33 = load i32, ptr %0, align 8, !tbaa !5
  switch i64 %magicptr352, label %34 [
    i64 -1, label %.thread359
    i64 0, label %.thread359
  ]

34:                                               ; preds = %28
  %35 = icmp eq ptr %1, %0
  br i1 %35, label %.thread359, label %36

.thread359:                                       ; preds = %28, %28, %34
  tail call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef 1, i32 noundef -1, ptr noundef nonnull @.str, i32 noundef 51, ptr noundef nonnull @__FUNCTION__.mVideoBackground, ptr noundef nonnull @.str.1) #6
  br label %36

36:                                               ; preds = %34, %.thread359
  %37 = getelementptr inbounds i8, ptr %1, i64 16
  tail call void @ImageRedefine(ptr noundef %1, i32 noundef %33, i32 noundef %.fr436, i32 noundef %32, ptr noundef nonnull %37) #6
  %38 = tail call ptr @GetHandle(ptr noundef nonnull %0, i32 noundef 136, i32 noundef 431652798, ptr noundef nonnull @endVideoBackground) #6
  %39 = getelementptr inbounds i8, ptr %38, i64 16
  %40 = load ptr, ptr %39, align 8, !tbaa !13
  %41 = getelementptr inbounds i8, ptr %38, i64 4
  %42 = load volatile i32, ptr %41, align 4, !tbaa !15
  %43 = icmp eq i32 %42, 0
  br i1 %43, label %.preheader377, label %291

.preheader377:                                    ; preds = %36
  %44 = icmp sgt i32 %33, 0
  %45 = getelementptr inbounds i8, ptr %40, i64 96
  %46 = icmp sgt i32 %.fr436, 0
  %47 = sext i32 %32 to i64
  %48 = shl nsw i64 %47, 1
  br i1 %44, label %.preheader376.us.preheader, label %.preheader377.split

.preheader376.us.preheader:                       ; preds = %.preheader377
  %wide.trip.count459 = zext nneg i32 %33 to i64
  br label %157

49:                                               ; preds = %._crit_edge.us
  tail call void @TableRedefine(ptr noundef nonnull %165, i32 noundef %.fr436, i32 noundef %32, i32 noundef 2, ptr noundef null) #6
  br label %52

50:                                               ; preds = %._crit_edge.us
  %51 = tail call ptr @TableCreate(i32 noundef %.fr436, i32 noundef %32, i32 noundef 2, ptr noundef null) #6
  store ptr %51, ptr %45, align 8, !tbaa !16
  br label %52

52:                                               ; preds = %50, %49
  br i1 %46, label %.lr.ph390.us.preheader, label %._crit_edge391.us.preheader

._crit_edge391.us.preheader.loopexit.unr-lcssa:   ; preds = %.lr.ph390.us, %.lr.ph390.us.preheader
  %indvars.iv461.unr = phi i64 [ 0, %.lr.ph390.us.preheader ], [ %indvars.iv.next462.3, %.lr.ph390.us ]
  %lcmp.mod607.not = icmp eq i64 %xtraiter605, 0
  br i1 %lcmp.mod607.not, label %._crit_edge391.us.preheader, label %.lr.ph390.us.epil

.lr.ph390.us.epil:                                ; preds = %._crit_edge391.us.preheader.loopexit.unr-lcssa, %.lr.ph390.us.epil
  %indvars.iv461.epil = phi i64 [ %indvars.iv.next462.epil, %.lr.ph390.us.epil ], [ %indvars.iv461.unr, %._crit_edge391.us.preheader.loopexit.unr-lcssa ]
  %epil.iter606 = phi i64 [ %epil.iter606.next, %.lr.ph390.us.epil ], [ 0, %._crit_edge391.us.preheader.loopexit.unr-lcssa ]
  %53 = load ptr, ptr %45, align 8, !tbaa !16
  %54 = getelementptr inbounds i8, ptr %53, i64 16
  %55 = load ptr, ptr %54, align 8, !tbaa !17
  %56 = getelementptr inbounds ptr, ptr %55, i64 %indvars.iv461.epil
  %57 = load ptr, ptr %56, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %57, i8 0, i64 %48, i1 false)
  %indvars.iv.next462.epil = add nuw nsw i64 %indvars.iv461.epil, 1
  %epil.iter606.next = add i64 %epil.iter606, 1
  %epil.iter606.cmp.not = icmp eq i64 %epil.iter606.next, %xtraiter605
  br i1 %epil.iter606.cmp.not, label %._crit_edge391.us.preheader, label %.lr.ph390.us.epil, !llvm.loop !18

._crit_edge391.us.preheader:                      ; preds = %._crit_edge391.us.preheader.loopexit.unr-lcssa, %.lr.ph390.us.epil, %52
  br label %._crit_edge391.us

.lr.ph390.us.preheader:                           ; preds = %52
  %wide.trip.count464 = zext nneg i32 %.fr436 to i64
  %58 = add nsw i64 %wide.trip.count464, -1
  %xtraiter605 = and i64 %wide.trip.count464, 3
  %59 = icmp ult i64 %58, 3
  br i1 %59, label %._crit_edge391.us.preheader.loopexit.unr-lcssa, label %.lr.ph390.us.preheader.new

.lr.ph390.us.preheader.new:                       ; preds = %.lr.ph390.us.preheader
  %unroll_iter608 = and i64 %wide.trip.count464, 2147483644
  br label %.lr.ph390.us

._crit_edge391.us:                                ; preds = %._crit_edge391.us.preheader, %66
  %indvars.iv456.1 = phi i64 [ %indvars.iv.next457.1, %66 ], [ 0, %._crit_edge391.us.preheader ]
  %60 = getelementptr inbounds [3 x [4 x ptr]], ptr %40, i64 0, i64 1, i64 %indvars.iv456.1
  %61 = load ptr, ptr %60, align 8, !tbaa !16
  %62 = icmp eq ptr %61, null
  br i1 %62, label %64, label %63

63:                                               ; preds = %._crit_edge391.us
  tail call void @TableRedefine(ptr noundef nonnull %61, i32 noundef %.fr436, i32 noundef %32, i32 noundef 2, ptr noundef null) #6
  br label %66

64:                                               ; preds = %._crit_edge391.us
  %65 = tail call ptr @TableCreate(i32 noundef %.fr436, i32 noundef %32, i32 noundef 2, ptr noundef null) #6
  store ptr %65, ptr %60, align 8, !tbaa !16
  br label %66

66:                                               ; preds = %64, %63
  %indvars.iv.next457.1 = add nuw nsw i64 %indvars.iv456.1, 1
  %exitcond460.1.not = icmp eq i64 %indvars.iv.next457.1, %wide.trip.count459
  br i1 %exitcond460.1.not, label %._crit_edge.us.1, label %._crit_edge391.us, !llvm.loop !20

._crit_edge.us.1:                                 ; preds = %66
  %67 = getelementptr inbounds i8, ptr %40, i64 104
  %68 = load ptr, ptr %67, align 8, !tbaa !16
  %69 = icmp eq ptr %68, null
  br i1 %69, label %71, label %70

70:                                               ; preds = %._crit_edge.us.1
  tail call void @TableRedefine(ptr noundef nonnull %68, i32 noundef %.fr436, i32 noundef %32, i32 noundef 2, ptr noundef null) #6
  br label %73

71:                                               ; preds = %._crit_edge.us.1
  %72 = tail call ptr @TableCreate(i32 noundef %.fr436, i32 noundef %32, i32 noundef 2, ptr noundef null) #6
  store ptr %72, ptr %67, align 8, !tbaa !16
  br label %73

73:                                               ; preds = %71, %70
  br i1 %46, label %.lr.ph390.us.preheader.1, label %._crit_edge391.us.1.preheader

.lr.ph390.us.preheader.1:                         ; preds = %73
  %wide.trip.count464.1 = zext nneg i32 %.fr436 to i64
  %74 = add nsw i64 %wide.trip.count464.1, -1
  %xtraiter616 = and i64 %wide.trip.count464.1, 3
  %75 = icmp ult i64 %74, 3
  br i1 %75, label %._crit_edge391.us.1.preheader.loopexit.unr-lcssa, label %.lr.ph390.us.preheader.1.new

.lr.ph390.us.preheader.1.new:                     ; preds = %.lr.ph390.us.preheader.1
  %unroll_iter619 = and i64 %wide.trip.count464.1, 2147483644
  br label %.lr.ph390.us.1

.lr.ph390.us.1:                                   ; preds = %.lr.ph390.us.1, %.lr.ph390.us.preheader.1.new
  %indvars.iv461.1 = phi i64 [ 0, %.lr.ph390.us.preheader.1.new ], [ %indvars.iv.next462.1.3, %.lr.ph390.us.1 ]
  %niter620 = phi i64 [ 0, %.lr.ph390.us.preheader.1.new ], [ %niter620.next.3, %.lr.ph390.us.1 ]
  %76 = load ptr, ptr %67, align 8, !tbaa !16
  %77 = getelementptr inbounds i8, ptr %76, i64 16
  %78 = load ptr, ptr %77, align 8, !tbaa !17
  %79 = getelementptr inbounds ptr, ptr %78, i64 %indvars.iv461.1
  %80 = load ptr, ptr %79, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %80, i8 0, i64 %48, i1 false)
  %indvars.iv.next462.1 = or disjoint i64 %indvars.iv461.1, 1
  %81 = load ptr, ptr %67, align 8, !tbaa !16
  %82 = getelementptr inbounds i8, ptr %81, i64 16
  %83 = load ptr, ptr %82, align 8, !tbaa !17
  %84 = getelementptr inbounds ptr, ptr %83, i64 %indvars.iv.next462.1
  %85 = load ptr, ptr %84, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %85, i8 0, i64 %48, i1 false)
  %indvars.iv.next462.1.1 = or disjoint i64 %indvars.iv461.1, 2
  %86 = load ptr, ptr %67, align 8, !tbaa !16
  %87 = getelementptr inbounds i8, ptr %86, i64 16
  %88 = load ptr, ptr %87, align 8, !tbaa !17
  %89 = getelementptr inbounds ptr, ptr %88, i64 %indvars.iv.next462.1.1
  %90 = load ptr, ptr %89, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %90, i8 0, i64 %48, i1 false)
  %indvars.iv.next462.1.2 = or disjoint i64 %indvars.iv461.1, 3
  %91 = load ptr, ptr %67, align 8, !tbaa !16
  %92 = getelementptr inbounds i8, ptr %91, i64 16
  %93 = load ptr, ptr %92, align 8, !tbaa !17
  %94 = getelementptr inbounds ptr, ptr %93, i64 %indvars.iv.next462.1.2
  %95 = load ptr, ptr %94, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %95, i8 0, i64 %48, i1 false)
  %indvars.iv.next462.1.3 = add nuw nsw i64 %indvars.iv461.1, 4
  %niter620.next.3 = add i64 %niter620, 4
  %niter620.ncmp.3 = icmp eq i64 %niter620.next.3, %unroll_iter619
  br i1 %niter620.ncmp.3, label %._crit_edge391.us.1.preheader.loopexit.unr-lcssa, label %.lr.ph390.us.1, !llvm.loop !22

._crit_edge391.us.1.preheader.loopexit.unr-lcssa: ; preds = %.lr.ph390.us.1, %.lr.ph390.us.preheader.1
  %indvars.iv461.1.unr = phi i64 [ 0, %.lr.ph390.us.preheader.1 ], [ %indvars.iv.next462.1.3, %.lr.ph390.us.1 ]
  %lcmp.mod618.not = icmp eq i64 %xtraiter616, 0
  br i1 %lcmp.mod618.not, label %._crit_edge391.us.1.preheader, label %.lr.ph390.us.1.epil

.lr.ph390.us.1.epil:                              ; preds = %._crit_edge391.us.1.preheader.loopexit.unr-lcssa, %.lr.ph390.us.1.epil
  %indvars.iv461.1.epil = phi i64 [ %indvars.iv.next462.1.epil, %.lr.ph390.us.1.epil ], [ %indvars.iv461.1.unr, %._crit_edge391.us.1.preheader.loopexit.unr-lcssa ]
  %epil.iter617 = phi i64 [ %epil.iter617.next, %.lr.ph390.us.1.epil ], [ 0, %._crit_edge391.us.1.preheader.loopexit.unr-lcssa ]
  %96 = load ptr, ptr %67, align 8, !tbaa !16
  %97 = getelementptr inbounds i8, ptr %96, i64 16
  %98 = load ptr, ptr %97, align 8, !tbaa !17
  %99 = getelementptr inbounds ptr, ptr %98, i64 %indvars.iv461.1.epil
  %100 = load ptr, ptr %99, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %100, i8 0, i64 %48, i1 false)
  %indvars.iv.next462.1.epil = add nuw nsw i64 %indvars.iv461.1.epil, 1
  %epil.iter617.next = add i64 %epil.iter617, 1
  %epil.iter617.cmp.not = icmp eq i64 %epil.iter617.next, %xtraiter616
  br i1 %epil.iter617.cmp.not, label %._crit_edge391.us.1.preheader, label %.lr.ph390.us.1.epil, !llvm.loop !23

._crit_edge391.us.1.preheader:                    ; preds = %._crit_edge391.us.1.preheader.loopexit.unr-lcssa, %.lr.ph390.us.1.epil, %73
  br label %._crit_edge391.us.1

._crit_edge391.us.1:                              ; preds = %._crit_edge391.us.1.preheader, %107
  %indvars.iv456.2 = phi i64 [ %indvars.iv.next457.2, %107 ], [ 0, %._crit_edge391.us.1.preheader ]
  %101 = getelementptr inbounds [3 x [4 x ptr]], ptr %40, i64 0, i64 2, i64 %indvars.iv456.2
  %102 = load ptr, ptr %101, align 8, !tbaa !16
  %103 = icmp eq ptr %102, null
  br i1 %103, label %105, label %104

104:                                              ; preds = %._crit_edge391.us.1
  tail call void @TableRedefine(ptr noundef nonnull %102, i32 noundef %.fr436, i32 noundef %32, i32 noundef 2, ptr noundef null) #6
  br label %107

105:                                              ; preds = %._crit_edge391.us.1
  %106 = tail call ptr @TableCreate(i32 noundef %.fr436, i32 noundef %32, i32 noundef 2, ptr noundef null) #6
  store ptr %106, ptr %101, align 8, !tbaa !16
  br label %107

107:                                              ; preds = %105, %104
  %indvars.iv.next457.2 = add nuw nsw i64 %indvars.iv456.2, 1
  %exitcond460.2.not = icmp eq i64 %indvars.iv.next457.2, %wide.trip.count459
  br i1 %exitcond460.2.not, label %._crit_edge.us.2, label %._crit_edge391.us.1, !llvm.loop !20

._crit_edge.us.2:                                 ; preds = %107
  %108 = getelementptr inbounds i8, ptr %40, i64 112
  %109 = load ptr, ptr %108, align 8, !tbaa !16
  %110 = icmp eq ptr %109, null
  br i1 %110, label %112, label %111

111:                                              ; preds = %._crit_edge.us.2
  tail call void @TableRedefine(ptr noundef nonnull %109, i32 noundef %.fr436, i32 noundef %32, i32 noundef 2, ptr noundef null) #6
  br label %114

112:                                              ; preds = %._crit_edge.us.2
  %113 = tail call ptr @TableCreate(i32 noundef %.fr436, i32 noundef %32, i32 noundef 2, ptr noundef null) #6
  store ptr %113, ptr %108, align 8, !tbaa !16
  br label %114

114:                                              ; preds = %112, %111
  br i1 %46, label %.lr.ph390.us.preheader.2, label %.split.us

.lr.ph390.us.preheader.2:                         ; preds = %114
  %wide.trip.count464.2 = zext nneg i32 %.fr436 to i64
  %115 = add nsw i64 %wide.trip.count464.2, -1
  %xtraiter621 = and i64 %wide.trip.count464.2, 3
  %116 = icmp ult i64 %115, 3
  br i1 %116, label %.split.us.loopexit.unr-lcssa, label %.lr.ph390.us.preheader.2.new

.lr.ph390.us.preheader.2.new:                     ; preds = %.lr.ph390.us.preheader.2
  %unroll_iter624 = and i64 %wide.trip.count464.2, 2147483644
  br label %.lr.ph390.us.2

.lr.ph390.us.2:                                   ; preds = %.lr.ph390.us.2, %.lr.ph390.us.preheader.2.new
  %indvars.iv461.2 = phi i64 [ 0, %.lr.ph390.us.preheader.2.new ], [ %indvars.iv.next462.2.3, %.lr.ph390.us.2 ]
  %niter625 = phi i64 [ 0, %.lr.ph390.us.preheader.2.new ], [ %niter625.next.3, %.lr.ph390.us.2 ]
  %117 = load ptr, ptr %108, align 8, !tbaa !16
  %118 = getelementptr inbounds i8, ptr %117, i64 16
  %119 = load ptr, ptr %118, align 8, !tbaa !17
  %120 = getelementptr inbounds ptr, ptr %119, i64 %indvars.iv461.2
  %121 = load ptr, ptr %120, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %121, i8 0, i64 %48, i1 false)
  %indvars.iv.next462.2 = or disjoint i64 %indvars.iv461.2, 1
  %122 = load ptr, ptr %108, align 8, !tbaa !16
  %123 = getelementptr inbounds i8, ptr %122, i64 16
  %124 = load ptr, ptr %123, align 8, !tbaa !17
  %125 = getelementptr inbounds ptr, ptr %124, i64 %indvars.iv.next462.2
  %126 = load ptr, ptr %125, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %126, i8 0, i64 %48, i1 false)
  %indvars.iv.next462.2.1 = or disjoint i64 %indvars.iv461.2, 2
  %127 = load ptr, ptr %108, align 8, !tbaa !16
  %128 = getelementptr inbounds i8, ptr %127, i64 16
  %129 = load ptr, ptr %128, align 8, !tbaa !17
  %130 = getelementptr inbounds ptr, ptr %129, i64 %indvars.iv.next462.2.1
  %131 = load ptr, ptr %130, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %131, i8 0, i64 %48, i1 false)
  %indvars.iv.next462.2.2 = or disjoint i64 %indvars.iv461.2, 3
  %132 = load ptr, ptr %108, align 8, !tbaa !16
  %133 = getelementptr inbounds i8, ptr %132, i64 16
  %134 = load ptr, ptr %133, align 8, !tbaa !17
  %135 = getelementptr inbounds ptr, ptr %134, i64 %indvars.iv.next462.2.2
  %136 = load ptr, ptr %135, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %136, i8 0, i64 %48, i1 false)
  %indvars.iv.next462.2.3 = add nuw nsw i64 %indvars.iv461.2, 4
  %niter625.next.3 = add i64 %niter625, 4
  %niter625.ncmp.3 = icmp eq i64 %niter625.next.3, %unroll_iter624
  br i1 %niter625.ncmp.3, label %.split.us.loopexit.unr-lcssa, label %.lr.ph390.us.2, !llvm.loop !22

.lr.ph390.us:                                     ; preds = %.lr.ph390.us, %.lr.ph390.us.preheader.new
  %indvars.iv461 = phi i64 [ 0, %.lr.ph390.us.preheader.new ], [ %indvars.iv.next462.3, %.lr.ph390.us ]
  %niter609 = phi i64 [ 0, %.lr.ph390.us.preheader.new ], [ %niter609.next.3, %.lr.ph390.us ]
  %137 = load ptr, ptr %45, align 8, !tbaa !16
  %138 = getelementptr inbounds i8, ptr %137, i64 16
  %139 = load ptr, ptr %138, align 8, !tbaa !17
  %140 = getelementptr inbounds ptr, ptr %139, i64 %indvars.iv461
  %141 = load ptr, ptr %140, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %141, i8 0, i64 %48, i1 false)
  %indvars.iv.next462 = or disjoint i64 %indvars.iv461, 1
  %142 = load ptr, ptr %45, align 8, !tbaa !16
  %143 = getelementptr inbounds i8, ptr %142, i64 16
  %144 = load ptr, ptr %143, align 8, !tbaa !17
  %145 = getelementptr inbounds ptr, ptr %144, i64 %indvars.iv.next462
  %146 = load ptr, ptr %145, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %146, i8 0, i64 %48, i1 false)
  %indvars.iv.next462.1611 = or disjoint i64 %indvars.iv461, 2
  %147 = load ptr, ptr %45, align 8, !tbaa !16
  %148 = getelementptr inbounds i8, ptr %147, i64 16
  %149 = load ptr, ptr %148, align 8, !tbaa !17
  %150 = getelementptr inbounds ptr, ptr %149, i64 %indvars.iv.next462.1611
  %151 = load ptr, ptr %150, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %151, i8 0, i64 %48, i1 false)
  %indvars.iv.next462.2614 = or disjoint i64 %indvars.iv461, 3
  %152 = load ptr, ptr %45, align 8, !tbaa !16
  %153 = getelementptr inbounds i8, ptr %152, i64 16
  %154 = load ptr, ptr %153, align 8, !tbaa !17
  %155 = getelementptr inbounds ptr, ptr %154, i64 %indvars.iv.next462.2614
  %156 = load ptr, ptr %155, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %156, i8 0, i64 %48, i1 false)
  %indvars.iv.next462.3 = add nuw nsw i64 %indvars.iv461, 4
  %niter609.next.3 = add i64 %niter609, 4
  %niter609.ncmp.3 = icmp eq i64 %niter609.next.3, %unroll_iter608
  br i1 %niter609.ncmp.3, label %._crit_edge391.us.preheader.loopexit.unr-lcssa, label %.lr.ph390.us, !llvm.loop !22

157:                                              ; preds = %.preheader376.us.preheader, %164
  %indvars.iv456 = phi i64 [ 0, %.preheader376.us.preheader ], [ %indvars.iv.next457, %164 ]
  %158 = getelementptr inbounds [3 x [4 x ptr]], ptr %40, i64 0, i64 0, i64 %indvars.iv456
  %159 = load ptr, ptr %158, align 8, !tbaa !16
  %160 = icmp eq ptr %159, null
  br i1 %160, label %162, label %161

161:                                              ; preds = %157
  tail call void @TableRedefine(ptr noundef nonnull %159, i32 noundef %.fr436, i32 noundef %32, i32 noundef 2, ptr noundef null) #6
  br label %164

162:                                              ; preds = %157
  %163 = tail call ptr @TableCreate(i32 noundef %.fr436, i32 noundef %32, i32 noundef 2, ptr noundef null) #6
  store ptr %163, ptr %158, align 8, !tbaa !16
  br label %164

164:                                              ; preds = %162, %161
  %indvars.iv.next457 = add nuw nsw i64 %indvars.iv456, 1
  %exitcond460.not = icmp eq i64 %indvars.iv.next457, %wide.trip.count459
  br i1 %exitcond460.not, label %._crit_edge.us, label %157, !llvm.loop !20

._crit_edge.us:                                   ; preds = %164
  %165 = load ptr, ptr %45, align 8, !tbaa !16
  %166 = icmp eq ptr %165, null
  br i1 %166, label %50, label %49

.preheader377.split:                              ; preds = %.preheader377
  %167 = load ptr, ptr %45, align 8, !tbaa !16
  %168 = icmp eq ptr %167, null
  br i1 %46, label %.preheader376.us393.preheader, label %.preheader376.preheader

.preheader376.preheader:                          ; preds = %.preheader377.split
  br i1 %168, label %272, label %274

.preheader376.us393.preheader:                    ; preds = %.preheader377.split
  br i1 %168, label %170, label %169

169:                                              ; preds = %.preheader376.us393.preheader
  tail call void @TableRedefine(ptr noundef nonnull %167, i32 noundef %.fr436, i32 noundef %32, i32 noundef 2, ptr noundef null) #6
  br label %.lr.ph390.us396

170:                                              ; preds = %.preheader376.us393.preheader
  %171 = tail call ptr @TableCreate(i32 noundef %.fr436, i32 noundef %32, i32 noundef 2, ptr noundef null) #6
  store ptr %171, ptr %45, align 8, !tbaa !16
  br label %.lr.ph390.us396

.lr.ph390.us396:                                  ; preds = %170, %169
  %wide.trip.count = zext nneg i32 %.fr436 to i64
  %172 = add nsw i64 %wide.trip.count, -1
  %xtraiter = and i64 %wide.trip.count, 3
  %173 = icmp ult i64 %172, 3
  br i1 %173, label %._crit_edge391.us397.unr-lcssa, label %.lr.ph390.us396.new

.lr.ph390.us396.new:                              ; preds = %.lr.ph390.us396
  %unroll_iter = and i64 %wide.trip.count, 2147483644
  br label %174

174:                                              ; preds = %174, %.lr.ph390.us396.new
  %indvars.iv = phi i64 [ 0, %.lr.ph390.us396.new ], [ %indvars.iv.next.3, %174 ]
  %niter = phi i64 [ 0, %.lr.ph390.us396.new ], [ %niter.next.3, %174 ]
  %175 = load ptr, ptr %45, align 8, !tbaa !16
  %176 = getelementptr inbounds i8, ptr %175, i64 16
  %177 = load ptr, ptr %176, align 8, !tbaa !17
  %178 = getelementptr inbounds ptr, ptr %177, i64 %indvars.iv
  %179 = load ptr, ptr %178, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %179, i8 0, i64 %48, i1 false)
  %indvars.iv.next = or disjoint i64 %indvars.iv, 1
  %180 = load ptr, ptr %45, align 8, !tbaa !16
  %181 = getelementptr inbounds i8, ptr %180, i64 16
  %182 = load ptr, ptr %181, align 8, !tbaa !17
  %183 = getelementptr inbounds ptr, ptr %182, i64 %indvars.iv.next
  %184 = load ptr, ptr %183, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %184, i8 0, i64 %48, i1 false)
  %indvars.iv.next.1592 = or disjoint i64 %indvars.iv, 2
  %185 = load ptr, ptr %45, align 8, !tbaa !16
  %186 = getelementptr inbounds i8, ptr %185, i64 16
  %187 = load ptr, ptr %186, align 8, !tbaa !17
  %188 = getelementptr inbounds ptr, ptr %187, i64 %indvars.iv.next.1592
  %189 = load ptr, ptr %188, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %189, i8 0, i64 %48, i1 false)
  %indvars.iv.next.2594 = or disjoint i64 %indvars.iv, 3
  %190 = load ptr, ptr %45, align 8, !tbaa !16
  %191 = getelementptr inbounds i8, ptr %190, i64 16
  %192 = load ptr, ptr %191, align 8, !tbaa !17
  %193 = getelementptr inbounds ptr, ptr %192, i64 %indvars.iv.next.2594
  %194 = load ptr, ptr %193, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %194, i8 0, i64 %48, i1 false)
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge391.us397.unr-lcssa, label %174, !llvm.loop !22

._crit_edge391.us397.unr-lcssa:                   ; preds = %174, %.lr.ph390.us396
  %indvars.iv.unr = phi i64 [ 0, %.lr.ph390.us396 ], [ %indvars.iv.next.3, %174 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge391.us397, label %.epil.preheader

.epil.preheader:                                  ; preds = %._crit_edge391.us397.unr-lcssa, %.epil.preheader
  %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %.epil.preheader ], [ %indvars.iv.unr, %._crit_edge391.us397.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %._crit_edge391.us397.unr-lcssa ]
  %195 = load ptr, ptr %45, align 8, !tbaa !16
  %196 = getelementptr inbounds i8, ptr %195, i64 16
  %197 = load ptr, ptr %196, align 8, !tbaa !17
  %198 = getelementptr inbounds ptr, ptr %197, i64 %indvars.iv.epil
  %199 = load ptr, ptr %198, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %199, i8 0, i64 %48, i1 false)
  %indvars.iv.next.epil = add nuw nsw i64 %indvars.iv.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge391.us397, label %.epil.preheader, !llvm.loop !24

._crit_edge391.us397:                             ; preds = %.epil.preheader, %._crit_edge391.us397.unr-lcssa
  %200 = getelementptr inbounds i8, ptr %40, i64 104
  %201 = load ptr, ptr %200, align 8, !tbaa !16
  %202 = icmp eq ptr %201, null
  br i1 %202, label %204, label %203

203:                                              ; preds = %._crit_edge391.us397
  tail call void @TableRedefine(ptr noundef nonnull %201, i32 noundef %.fr436, i32 noundef %32, i32 noundef 2, ptr noundef null) #6
  br label %.lr.ph390.us396.1.preheader

204:                                              ; preds = %._crit_edge391.us397
  %205 = tail call ptr @TableCreate(i32 noundef %.fr436, i32 noundef %32, i32 noundef 2, ptr noundef null) #6
  store ptr %205, ptr %200, align 8, !tbaa !16
  br label %.lr.ph390.us396.1.preheader

.lr.ph390.us396.1.preheader:                      ; preds = %204, %203
  %xtraiter595 = and i64 %wide.trip.count, 3
  %206 = icmp ult i64 %172, 3
  br i1 %206, label %._crit_edge391.us397.1.unr-lcssa, label %.lr.ph390.us396.1.preheader.new

.lr.ph390.us396.1.preheader.new:                  ; preds = %.lr.ph390.us396.1.preheader
  %unroll_iter598 = and i64 %wide.trip.count, 2147483644
  br label %.lr.ph390.us396.1

.lr.ph390.us396.1:                                ; preds = %.lr.ph390.us396.1, %.lr.ph390.us396.1.preheader.new
  %indvars.iv.1 = phi i64 [ 0, %.lr.ph390.us396.1.preheader.new ], [ %indvars.iv.next.1.3, %.lr.ph390.us396.1 ]
  %niter599 = phi i64 [ 0, %.lr.ph390.us396.1.preheader.new ], [ %niter599.next.3, %.lr.ph390.us396.1 ]
  %207 = load ptr, ptr %200, align 8, !tbaa !16
  %208 = getelementptr inbounds i8, ptr %207, i64 16
  %209 = load ptr, ptr %208, align 8, !tbaa !17
  %210 = getelementptr inbounds ptr, ptr %209, i64 %indvars.iv.1
  %211 = load ptr, ptr %210, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %211, i8 0, i64 %48, i1 false)
  %indvars.iv.next.1 = or disjoint i64 %indvars.iv.1, 1
  %212 = load ptr, ptr %200, align 8, !tbaa !16
  %213 = getelementptr inbounds i8, ptr %212, i64 16
  %214 = load ptr, ptr %213, align 8, !tbaa !17
  %215 = getelementptr inbounds ptr, ptr %214, i64 %indvars.iv.next.1
  %216 = load ptr, ptr %215, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %216, i8 0, i64 %48, i1 false)
  %indvars.iv.next.1.1 = or disjoint i64 %indvars.iv.1, 2
  %217 = load ptr, ptr %200, align 8, !tbaa !16
  %218 = getelementptr inbounds i8, ptr %217, i64 16
  %219 = load ptr, ptr %218, align 8, !tbaa !17
  %220 = getelementptr inbounds ptr, ptr %219, i64 %indvars.iv.next.1.1
  %221 = load ptr, ptr %220, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %221, i8 0, i64 %48, i1 false)
  %indvars.iv.next.1.2 = or disjoint i64 %indvars.iv.1, 3
  %222 = load ptr, ptr %200, align 8, !tbaa !16
  %223 = getelementptr inbounds i8, ptr %222, i64 16
  %224 = load ptr, ptr %223, align 8, !tbaa !17
  %225 = getelementptr inbounds ptr, ptr %224, i64 %indvars.iv.next.1.2
  %226 = load ptr, ptr %225, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %226, i8 0, i64 %48, i1 false)
  %indvars.iv.next.1.3 = add nuw nsw i64 %indvars.iv.1, 4
  %niter599.next.3 = add i64 %niter599, 4
  %niter599.ncmp.3 = icmp eq i64 %niter599.next.3, %unroll_iter598
  br i1 %niter599.ncmp.3, label %._crit_edge391.us397.1.unr-lcssa, label %.lr.ph390.us396.1, !llvm.loop !22

._crit_edge391.us397.1.unr-lcssa:                 ; preds = %.lr.ph390.us396.1, %.lr.ph390.us396.1.preheader
  %indvars.iv.1.unr = phi i64 [ 0, %.lr.ph390.us396.1.preheader ], [ %indvars.iv.next.1.3, %.lr.ph390.us396.1 ]
  %lcmp.mod597.not = icmp eq i64 %xtraiter595, 0
  br i1 %lcmp.mod597.not, label %._crit_edge391.us397.1, label %.lr.ph390.us396.1.epil

.lr.ph390.us396.1.epil:                           ; preds = %._crit_edge391.us397.1.unr-lcssa, %.lr.ph390.us396.1.epil
  %indvars.iv.1.epil = phi i64 [ %indvars.iv.next.1.epil, %.lr.ph390.us396.1.epil ], [ %indvars.iv.1.unr, %._crit_edge391.us397.1.unr-lcssa ]
  %epil.iter596 = phi i64 [ %epil.iter596.next, %.lr.ph390.us396.1.epil ], [ 0, %._crit_edge391.us397.1.unr-lcssa ]
  %227 = load ptr, ptr %200, align 8, !tbaa !16
  %228 = getelementptr inbounds i8, ptr %227, i64 16
  %229 = load ptr, ptr %228, align 8, !tbaa !17
  %230 = getelementptr inbounds ptr, ptr %229, i64 %indvars.iv.1.epil
  %231 = load ptr, ptr %230, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %231, i8 0, i64 %48, i1 false)
  %indvars.iv.next.1.epil = add nuw nsw i64 %indvars.iv.1.epil, 1
  %epil.iter596.next = add i64 %epil.iter596, 1
  %epil.iter596.cmp.not = icmp eq i64 %epil.iter596.next, %xtraiter595
  br i1 %epil.iter596.cmp.not, label %._crit_edge391.us397.1, label %.lr.ph390.us396.1.epil, !llvm.loop !25

._crit_edge391.us397.1:                           ; preds = %.lr.ph390.us396.1.epil, %._crit_edge391.us397.1.unr-lcssa
  %232 = getelementptr inbounds i8, ptr %40, i64 112
  %233 = load ptr, ptr %232, align 8, !tbaa !16
  %234 = icmp eq ptr %233, null
  br i1 %234, label %236, label %235

235:                                              ; preds = %._crit_edge391.us397.1
  tail call void @TableRedefine(ptr noundef nonnull %233, i32 noundef %.fr436, i32 noundef %32, i32 noundef 2, ptr noundef null) #6
  br label %.lr.ph390.us396.2.preheader

236:                                              ; preds = %._crit_edge391.us397.1
  %237 = tail call ptr @TableCreate(i32 noundef %.fr436, i32 noundef %32, i32 noundef 2, ptr noundef null) #6
  store ptr %237, ptr %232, align 8, !tbaa !16
  br label %.lr.ph390.us396.2.preheader

.lr.ph390.us396.2.preheader:                      ; preds = %236, %235
  %xtraiter600 = and i64 %wide.trip.count, 3
  %238 = icmp ult i64 %172, 3
  br i1 %238, label %.split.us.loopexit590.unr-lcssa, label %.lr.ph390.us396.2.preheader.new

.lr.ph390.us396.2.preheader.new:                  ; preds = %.lr.ph390.us396.2.preheader
  %unroll_iter603 = and i64 %wide.trip.count, 2147483644
  br label %.lr.ph390.us396.2

.lr.ph390.us396.2:                                ; preds = %.lr.ph390.us396.2, %.lr.ph390.us396.2.preheader.new
  %indvars.iv.2 = phi i64 [ 0, %.lr.ph390.us396.2.preheader.new ], [ %indvars.iv.next.2.3, %.lr.ph390.us396.2 ]
  %niter604 = phi i64 [ 0, %.lr.ph390.us396.2.preheader.new ], [ %niter604.next.3, %.lr.ph390.us396.2 ]
  %239 = load ptr, ptr %232, align 8, !tbaa !16
  %240 = getelementptr inbounds i8, ptr %239, i64 16
  %241 = load ptr, ptr %240, align 8, !tbaa !17
  %242 = getelementptr inbounds ptr, ptr %241, i64 %indvars.iv.2
  %243 = load ptr, ptr %242, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %243, i8 0, i64 %48, i1 false)
  %indvars.iv.next.2 = or disjoint i64 %indvars.iv.2, 1
  %244 = load ptr, ptr %232, align 8, !tbaa !16
  %245 = getelementptr inbounds i8, ptr %244, i64 16
  %246 = load ptr, ptr %245, align 8, !tbaa !17
  %247 = getelementptr inbounds ptr, ptr %246, i64 %indvars.iv.next.2
  %248 = load ptr, ptr %247, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %248, i8 0, i64 %48, i1 false)
  %indvars.iv.next.2.1 = or disjoint i64 %indvars.iv.2, 2
  %249 = load ptr, ptr %232, align 8, !tbaa !16
  %250 = getelementptr inbounds i8, ptr %249, i64 16
  %251 = load ptr, ptr %250, align 8, !tbaa !17
  %252 = getelementptr inbounds ptr, ptr %251, i64 %indvars.iv.next.2.1
  %253 = load ptr, ptr %252, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %253, i8 0, i64 %48, i1 false)
  %indvars.iv.next.2.2 = or disjoint i64 %indvars.iv.2, 3
  %254 = load ptr, ptr %232, align 8, !tbaa !16
  %255 = getelementptr inbounds i8, ptr %254, i64 16
  %256 = load ptr, ptr %255, align 8, !tbaa !17
  %257 = getelementptr inbounds ptr, ptr %256, i64 %indvars.iv.next.2.2
  %258 = load ptr, ptr %257, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %258, i8 0, i64 %48, i1 false)
  %indvars.iv.next.2.3 = add nuw nsw i64 %indvars.iv.2, 4
  %niter604.next.3 = add i64 %niter604, 4
  %niter604.ncmp.3 = icmp eq i64 %niter604.next.3, %unroll_iter603
  br i1 %niter604.ncmp.3, label %.split.us.loopexit590.unr-lcssa, label %.lr.ph390.us396.2, !llvm.loop !22

.split.us.loopexit.unr-lcssa:                     ; preds = %.lr.ph390.us.2, %.lr.ph390.us.preheader.2
  %indvars.iv461.2.unr = phi i64 [ 0, %.lr.ph390.us.preheader.2 ], [ %indvars.iv.next462.2.3, %.lr.ph390.us.2 ]
  %lcmp.mod623.not = icmp eq i64 %xtraiter621, 0
  br i1 %lcmp.mod623.not, label %.split.us, label %.lr.ph390.us.2.epil

.lr.ph390.us.2.epil:                              ; preds = %.split.us.loopexit.unr-lcssa, %.lr.ph390.us.2.epil
  %indvars.iv461.2.epil = phi i64 [ %indvars.iv.next462.2.epil, %.lr.ph390.us.2.epil ], [ %indvars.iv461.2.unr, %.split.us.loopexit.unr-lcssa ]
  %epil.iter622 = phi i64 [ %epil.iter622.next, %.lr.ph390.us.2.epil ], [ 0, %.split.us.loopexit.unr-lcssa ]
  %259 = load ptr, ptr %108, align 8, !tbaa !16
  %260 = getelementptr inbounds i8, ptr %259, i64 16
  %261 = load ptr, ptr %260, align 8, !tbaa !17
  %262 = getelementptr inbounds ptr, ptr %261, i64 %indvars.iv461.2.epil
  %263 = load ptr, ptr %262, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %263, i8 0, i64 %48, i1 false)
  %indvars.iv.next462.2.epil = add nuw nsw i64 %indvars.iv461.2.epil, 1
  %epil.iter622.next = add i64 %epil.iter622, 1
  %epil.iter622.cmp.not = icmp eq i64 %epil.iter622.next, %xtraiter621
  br i1 %epil.iter622.cmp.not, label %.split.us, label %.lr.ph390.us.2.epil, !llvm.loop !26

.split.us.loopexit590.unr-lcssa:                  ; preds = %.lr.ph390.us396.2, %.lr.ph390.us396.2.preheader
  %indvars.iv.2.unr = phi i64 [ 0, %.lr.ph390.us396.2.preheader ], [ %indvars.iv.next.2.3, %.lr.ph390.us396.2 ]
  %lcmp.mod602.not = icmp eq i64 %xtraiter600, 0
  br i1 %lcmp.mod602.not, label %.split.us, label %.lr.ph390.us396.2.epil

.lr.ph390.us396.2.epil:                           ; preds = %.split.us.loopexit590.unr-lcssa, %.lr.ph390.us396.2.epil
  %indvars.iv.2.epil = phi i64 [ %indvars.iv.next.2.epil, %.lr.ph390.us396.2.epil ], [ %indvars.iv.2.unr, %.split.us.loopexit590.unr-lcssa ]
  %epil.iter601 = phi i64 [ %epil.iter601.next, %.lr.ph390.us396.2.epil ], [ 0, %.split.us.loopexit590.unr-lcssa ]
  %264 = load ptr, ptr %232, align 8, !tbaa !16
  %265 = getelementptr inbounds i8, ptr %264, i64 16
  %266 = load ptr, ptr %265, align 8, !tbaa !17
  %267 = getelementptr inbounds ptr, ptr %266, i64 %indvars.iv.2.epil
  %268 = load ptr, ptr %267, align 8, !tbaa !16
  tail call void @llvm.memset.p0.i64(ptr align 2 %268, i8 0, i64 %48, i1 false)
  %indvars.iv.next.2.epil = add nuw nsw i64 %indvars.iv.2.epil, 1
  %epil.iter601.next = add i64 %epil.iter601, 1
  %epil.iter601.cmp.not = icmp eq i64 %epil.iter601.next, %xtraiter600
  br i1 %epil.iter601.cmp.not, label %.split.us, label %.lr.ph390.us396.2.epil, !llvm.loop !27

.split.us:                                        ; preds = %.split.us.loopexit590.unr-lcssa, %.lr.ph390.us396.2.epil, %.split.us.loopexit.unr-lcssa, %.lr.ph390.us.2.epil, %284, %285, %114
  %269 = getelementptr inbounds i8, ptr %40, i64 120
  %270 = load ptr, ptr %269, align 8, !tbaa !28
  %271 = icmp eq ptr %270, null
  br i1 %271, label %287, label %289

272:                                              ; preds = %.preheader376.preheader
  %273 = tail call ptr @TableCreate(i32 noundef %.fr436, i32 noundef %32, i32 noundef 2, ptr noundef null) #6
  store ptr %273, ptr %45, align 8, !tbaa !16
  br label %.preheader376.1

274:                                              ; preds = %.preheader376.preheader
  tail call void @TableRedefine(ptr noundef nonnull %167, i32 noundef %.fr436, i32 noundef %32, i32 noundef 2, ptr noundef null) #6
  br label %.preheader376.1

.preheader376.1:                                  ; preds = %274, %272
  %275 = getelementptr inbounds i8, ptr %40, i64 104
  %276 = load ptr, ptr %275, align 8, !tbaa !16
  %277 = icmp eq ptr %276, null
  br i1 %277, label %279, label %278

278:                                              ; preds = %.preheader376.1
  tail call void @TableRedefine(ptr noundef nonnull %276, i32 noundef %.fr436, i32 noundef %32, i32 noundef 2, ptr noundef null) #6
  br label %.preheader376.2

279:                                              ; preds = %.preheader376.1
  %280 = tail call ptr @TableCreate(i32 noundef %.fr436, i32 noundef %32, i32 noundef 2, ptr noundef null) #6
  store ptr %280, ptr %275, align 8, !tbaa !16
  br label %.preheader376.2

.preheader376.2:                                  ; preds = %279, %278
  %281 = getelementptr inbounds i8, ptr %40, i64 112
  %282 = load ptr, ptr %281, align 8, !tbaa !16
  %283 = icmp eq ptr %282, null
  br i1 %283, label %285, label %284

284:                                              ; preds = %.preheader376.2
  tail call void @TableRedefine(ptr noundef nonnull %282, i32 noundef %.fr436, i32 noundef %32, i32 noundef 2, ptr noundef null) #6
  br label %.split.us

285:                                              ; preds = %.preheader376.2
  %286 = tail call ptr @TableCreate(i32 noundef %.fr436, i32 noundef %32, i32 noundef 2, ptr noundef null) #6
  store ptr %286, ptr %281, align 8, !tbaa !16
  br label %.split.us

287:                                              ; preds = %.split.us
  %288 = tail call ptr @ImageCreate(i32 noundef %33, i32 noundef %.fr436, i32 noundef %32, ptr noundef null) #6
  store ptr %288, ptr %269, align 8, !tbaa !28
  br label %290

289:                                              ; preds = %.split.us
  tail call void @ImageRedefine(ptr noundef nonnull %270, i32 noundef %33, i32 noundef %.fr436, i32 noundef %32, ptr noundef null) #6
  br label %290

290:                                              ; preds = %289, %287
  store volatile i32 1, ptr %41, align 4, !tbaa !15
  br label %291

291:                                              ; preds = %290, %36
  %292 = getelementptr inbounds i8, ptr %40, i64 128
  %293 = load ptr, ptr %292, align 8, !tbaa !30
  %.not349 = icmp eq ptr %293, %1
  br i1 %.not349, label %295, label %294

294:                                              ; preds = %291
  tail call void @mImageCopy(ptr noundef nonnull %0, ptr noundef %1) #6
  store ptr %1, ptr %292, align 8, !tbaa !30
  br label %295

295:                                              ; preds = %294, %291
  %296 = icmp slt i32 %2, 1
  %spec.store.select = select i1 %296, i32 20, i32 %2
  %297 = icmp slt i32 %3, 1
  %spec.store.select11 = select i1 %297, i32 10, i32 %3
  %298 = getelementptr inbounds i8, ptr %40, i64 96
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %.sroa.0)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %.sroa.7)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %.sroa.12)
  store ptr %40, ptr %.sroa.0, align 16, !tbaa !16
  %299 = getelementptr inbounds i8, ptr %40, i64 32
  store ptr %299, ptr %.sroa.7, align 8, !tbaa !16
  %300 = getelementptr inbounds i8, ptr %40, i64 64
  store ptr %300, ptr %.sroa.12, align 16, !tbaa !16
  %301 = icmp sgt i32 %.fr436, 0
  br i1 %301, label %.preheader375.lr.ph, label %._crit_edge433

.preheader375.lr.ph:                              ; preds = %295
  %302 = getelementptr inbounds i8, ptr %40, i64 120
  %303 = load ptr, ptr %302, align 8, !tbaa !28
  %304 = icmp sgt i32 %32, 0
  %305 = getelementptr inbounds i8, ptr %0, i64 16
  %306 = icmp sgt i32 %33, 0
  %307 = getelementptr inbounds i8, ptr %303, i64 16
  %308 = lshr i32 %spec.store.select11, 1
  %309 = shl nuw nsw i32 %spec.store.select, 1
  %310 = icmp slt i32 %33, 1
  br i1 %304, label %.preheader375.us.preheader, label %._crit_edge433

.preheader375.us.preheader:                       ; preds = %.preheader375.lr.ph
  %wide.trip.count530 = zext nneg i32 %.fr436 to i64
  %wide.trip.count525 = zext nneg i32 %32 to i64
  %wide.trip.count473 = zext i32 %33 to i64
  %311 = getelementptr inbounds i8, ptr %40, i64 104
  %312 = getelementptr inbounds i8, ptr %40, i64 112
  %wide.trip.count487 = zext nneg i32 %33 to i64
  %wide.trip.count487.1 = zext nneg i32 %33 to i64
  %wide.trip.count487.2 = zext nneg i32 %33 to i64
  %wide.trip.count496 = zext nneg i32 %33 to i64
  %.sroa.0.0..sroa.0.0..sroa.0.0.536 = load ptr, ptr %.sroa.0, align 16
  %.sroa.7.0..sroa.7.0..sroa.7.8.537 = load ptr, ptr %.sroa.7, align 8
  %.sroa.12.0..sroa.12.0..sroa.12.16.538 = load ptr, ptr %.sroa.12, align 16
  %313 = add nsw i64 %wide.trip.count473, -1
  %xtraiter626 = and i64 %wide.trip.count473, 1
  %314 = icmp eq i64 %313, 0
  %unroll_iter629 = and i64 %wide.trip.count473, 2147483646
  %lcmp.mod628.not = icmp eq i64 %xtraiter626, 0
  %xtraiter631 = and i64 %wide.trip.count473, 1
  %315 = icmp eq i64 %313, 0
  %unroll_iter634 = and i64 %wide.trip.count473, 2147483646
  %lcmp.mod633.not = icmp eq i64 %xtraiter631, 0
  %xtraiter639 = and i64 %wide.trip.count473, 1
  %316 = icmp eq i64 %313, 0
  %unroll_iter642 = and i64 %wide.trip.count473, 2147483646
  %lcmp.mod641.not = icmp eq i64 %xtraiter639, 0
  %xtraiter644 = and i64 %wide.trip.count473, 1
  %317 = icmp eq i64 %313, 0
  %unroll_iter647 = and i64 %wide.trip.count473, 2147483646
  %lcmp.mod646.not = icmp eq i64 %xtraiter644, 0
  %xtraiter650 = and i64 %wide.trip.count473, 1
  %318 = icmp eq i64 %313, 0
  %unroll_iter653 = and i64 %wide.trip.count473, 2147483646
  %lcmp.mod652.not = icmp eq i64 %xtraiter650, 0
  br label %.preheader375.us

.preheader375.us:                                 ; preds = %.preheader375.us.preheader, %._crit_edge430.us
  %.sroa.12.0..sroa.12.16.547 = phi ptr [ %300, %.preheader375.us.preheader ], [ %.sroa.12.0..sroa.12.16.549, %._crit_edge430.us ]
  %.sroa.7.0..sroa.7.8.543 = phi ptr [ %299, %.preheader375.us.preheader ], [ %.sroa.7.0..sroa.7.8.545, %._crit_edge430.us ]
  %.sroa.0.0..sroa.0.0.539 = phi ptr [ %40, %.preheader375.us.preheader ], [ %.sroa.0.0..sroa.0.0.541, %._crit_edge430.us ]
  %indvars.iv527 = phi i64 [ 0, %.preheader375.us.preheader ], [ %indvars.iv.next528, %._crit_edge430.us ]
  %.0330431.us = phi i32 [ undef, %.preheader375.us.preheader ], [ %.9.us, %._crit_edge430.us ]
  br label %.preheader374.us

319:                                              ; preds = %.lr.ph.us
  %indvars.iv.next471 = add nuw nsw i64 %indvars.iv470, 1
  %exitcond474.not = icmp eq i64 %indvars.iv.next471, %wide.trip.count473
  br i1 %exitcond474.not, label %._crit_edge.us434, label %.lr.ph.us, !llvm.loop !31

.lr.ph.us:                                        ; preds = %.preheader374.us, %319
  %indvars.iv470 = phi i64 [ %indvars.iv.next471, %319 ], [ 0, %.preheader374.us ]
  %320 = getelementptr inbounds [4 x ptr], ptr %305, i64 0, i64 %indvars.iv470
  %321 = load ptr, ptr %320, align 8, !tbaa !16
  %322 = getelementptr inbounds ptr, ptr %321, i64 %indvars.iv527
  %323 = load ptr, ptr %322, align 8, !tbaa !16
  %324 = getelementptr inbounds i8, ptr %323, i64 %indvars.iv522
  %325 = load i8, ptr %324, align 1, !tbaa !17
  %326 = zext i8 %325 to i32
  %327 = getelementptr inbounds [4 x ptr], ptr %307, i64 0, i64 %indvars.iv470
  %328 = load ptr, ptr %327, align 8, !tbaa !16
  %329 = getelementptr inbounds ptr, ptr %328, i64 %indvars.iv527
  %330 = load ptr, ptr %329, align 8, !tbaa !16
  %331 = getelementptr inbounds i8, ptr %330, i64 %indvars.iv522
  %332 = load i8, ptr %331, align 1, !tbaa !17
  %333 = zext i8 %332 to i32
  %334 = sub nsw i32 %326, %333
  %335 = tail call i32 @llvm.abs.i32(i32 %334, i1 true)
  %336 = icmp ugt i32 %335, %308
  br i1 %336, label %._crit_edge.us434, label %319

._crit_edge.us434:                                ; preds = %319, %.lr.ph.us
  %.3333.us = phi i32 [ 0, %319 ], [ 1, %.lr.ph.us ]
  br i1 %306, label %.lr.ph403.us.preheader, label %._crit_edge404.us

.lr.ph403.us.preheader:                           ; preds = %._crit_edge.us434
  br i1 %314, label %._crit_edge404.us.loopexit.unr-lcssa, label %.lr.ph403.us

._crit_edge404.us.loopexit.unr-lcssa:             ; preds = %.lr.ph403.us, %.lr.ph403.us.preheader
  %indvars.iv475.unr = phi i64 [ 0, %.lr.ph403.us.preheader ], [ %indvars.iv.next476.1, %.lr.ph403.us ]
  br i1 %lcmp.mod628.not, label %._crit_edge404.us, label %.lr.ph403.us.epil

.lr.ph403.us.epil:                                ; preds = %._crit_edge404.us.loopexit.unr-lcssa
  %337 = getelementptr inbounds [4 x ptr], ptr %305, i64 0, i64 %indvars.iv475.unr
  %338 = load ptr, ptr %337, align 8, !tbaa !16
  %339 = getelementptr inbounds ptr, ptr %338, i64 %indvars.iv527
  %340 = load ptr, ptr %339, align 8, !tbaa !16
  %341 = getelementptr inbounds i8, ptr %340, i64 %indvars.iv522
  %342 = load i8, ptr %341, align 1, !tbaa !17
  %343 = getelementptr inbounds [4 x ptr], ptr %307, i64 0, i64 %indvars.iv475.unr
  %344 = load ptr, ptr %343, align 8, !tbaa !16
  %345 = getelementptr inbounds ptr, ptr %344, i64 %indvars.iv527
  %346 = load ptr, ptr %345, align 8, !tbaa !16
  %347 = getelementptr inbounds i8, ptr %346, i64 %indvars.iv522
  store i8 %342, ptr %347, align 1, !tbaa !17
  br label %._crit_edge404.us

._crit_edge404.us:                                ; preds = %.lr.ph403.us.epil, %._crit_edge404.us.loopexit.unr-lcssa, %.preheader374.us, %._crit_edge.us434
  %.3333.us557 = phi i32 [ %.3333.us, %._crit_edge.us434 ], [ %.1331426.us, %.preheader374.us ], [ %.3333.us, %._crit_edge404.us.loopexit.unr-lcssa ], [ %.3333.us, %.lr.ph403.us.epil ]
  %.not350.us = icmp eq i32 %.3333.us557, 0
  br i1 %.not350.us, label %.preheader373.us.preheader, label %.loopexit367.us

.preheader373.us.preheader:                       ; preds = %._crit_edge404.us
  %348 = load ptr, ptr %298, align 8, !tbaa !16
  %349 = getelementptr inbounds i8, ptr %348, i64 16
  %350 = load ptr, ptr %349, align 8, !tbaa !17
  %351 = getelementptr inbounds ptr, ptr %350, i64 %indvars.iv527
  %352 = load ptr, ptr %351, align 8, !tbaa !16
  %353 = load i16, ptr %352, align 2, !tbaa !32
  %354 = icmp sgt i16 %353, 0
  br i1 %354, label %724, label %.preheader373.us.1

355:                                              ; preds = %.lr.ph407.us
  %indvars.iv.next485 = add nuw nsw i64 %indvars.iv484, 1
  %exitcond488.not = icmp eq i64 %indvars.iv.next485, %wide.trip.count487
  br i1 %exitcond488.not, label %.preheader370.us, label %.lr.ph407.us, !llvm.loop !34

._crit_edge415.us.loopexit:                       ; preds = %629
  %.pre = load ptr, ptr %783, align 8, !tbaa !17
  br label %._crit_edge415.us

._crit_edge415.us:                                ; preds = %._crit_edge408.us.1, %._crit_edge408.us.2, %.preheader364.us, %._crit_edge415.us.loopexit, %.preheader370.us
  %356 = phi ptr [ %.pre, %._crit_edge415.us.loopexit ], [ %782, %.preheader370.us ], [ %746, %.preheader364.us ], [ %697, %._crit_edge408.us.2 ], [ %670, %._crit_edge408.us.1 ]
  %357 = getelementptr inbounds ptr, ptr %356, i64 %indvars.iv527
  %358 = load ptr, ptr %357, align 8, !tbaa !16
  %359 = getelementptr inbounds i16, ptr %358, i64 %indvars.iv522
  %360 = load i16, ptr %359, align 2, !tbaa !32
  %361 = sext i16 %360 to i32
  %362 = icmp sgt i32 %309, %361
  br i1 %362, label %363, label %.preheader368.us

363:                                              ; preds = %._crit_edge415.us
  %364 = add i16 %360, 2
  store i16 %364, ptr %359, align 2, !tbaa !32
  br label %.preheader368.us

.preheader366.us.preheader:                       ; preds = %.lr.ph407.us.2, %._crit_edge408.us.1, %._crit_edge408.us.2, %.thread360.us.1
  %.7.us.2 = phi i32 [ %.7.us.1, %.thread360.us.1 ], [ 1, %._crit_edge408.us.2 ], [ 1, %._crit_edge408.us.1 ], [ 1, %.lr.ph407.us.2 ]
  %365 = load ptr, ptr %349, align 8, !tbaa !17
  %366 = getelementptr inbounds ptr, ptr %365, i64 %indvars.iv527
  %367 = load ptr, ptr %366, align 8, !tbaa !16
  %368 = load i16, ptr %367, align 2, !tbaa !32
  %369 = icmp eq i16 %368, 0
  br i1 %369, label %.preheader365.us, label %.preheader366.us.1

.loopexit.us.loopexit.unr-lcssa:                  ; preds = %.lr.ph418.us, %.lr.ph418.us.preheader
  %indvars.iv502.unr = phi i64 [ 0, %.lr.ph418.us.preheader ], [ %indvars.iv.next503.1637, %.lr.ph418.us ]
  br i1 %lcmp.mod633.not, label %.loopexit.us.loopexit, label %.lr.ph418.us.epil

.lr.ph418.us.epil:                                ; preds = %.loopexit.us.loopexit.unr-lcssa
  %370 = getelementptr inbounds ptr, ptr %.sroa.0.0..sroa.0.0..sroa.0.0.536, i64 %indvars.iv502.unr
  %371 = load ptr, ptr %370, align 8, !tbaa !16
  %372 = getelementptr inbounds i8, ptr %371, i64 16
  %373 = load ptr, ptr %372, align 8, !tbaa !17
  %374 = getelementptr inbounds ptr, ptr %373, i64 %indvars.iv527
  %375 = load ptr, ptr %374, align 8, !tbaa !16
  %376 = getelementptr inbounds i16, ptr %375, i64 %indvars.iv522
  %377 = load i16, ptr %376, align 2, !tbaa !32
  %378 = lshr i16 %377, 7
  %379 = trunc i16 %378 to i8
  %380 = getelementptr inbounds [4 x ptr], ptr %37, i64 0, i64 %indvars.iv502.unr
  %381 = load ptr, ptr %380, align 8, !tbaa !16
  %382 = getelementptr inbounds ptr, ptr %381, i64 %indvars.iv527
  %383 = load ptr, ptr %382, align 8, !tbaa !16
  %384 = getelementptr inbounds i8, ptr %383, i64 %indvars.iv522
  store i8 %379, ptr %384, align 1, !tbaa !17
  br label %.loopexit.us.loopexit

.loopexit.us.loopexit:                            ; preds = %.loopexit.us.loopexit.unr-lcssa, %.lr.ph418.us.epil
  %.pre551 = load ptr, ptr %311, align 8, !tbaa !16
  br label %.loopexit.us

.loopexit.us:                                     ; preds = %.preheader363.us.2, %.preheader363.us.1, %.loopexit.us.loopexit, %.preheader368.us
  %385 = phi ptr [ %.pre551, %.loopexit.us.loopexit ], [ %726, %.preheader368.us ], [ %726, %.preheader363.us.1 ], [ %726, %.preheader363.us.2 ]
  %.sroa.0.0..sroa.0.0.542 = phi ptr [ %.sroa.0.0..sroa.0.0..sroa.0.0.536, %.loopexit.us.loopexit ], [ %.sroa.0.0..sroa.0.0., %.preheader368.us ], [ %.sroa.0.0..sroa.0.0., %.preheader363.us.1 ], [ %.sroa.0.0..sroa.0.0., %.preheader363.us.2 ]
  %386 = getelementptr inbounds i8, ptr %385, i64 16
  %387 = load ptr, ptr %386, align 8, !tbaa !17
  %388 = getelementptr inbounds ptr, ptr %387, i64 %indvars.iv527
  %389 = load ptr, ptr %388, align 8, !tbaa !16
  %390 = getelementptr inbounds i16, ptr %389, i64 %indvars.iv522
  %391 = load i16, ptr %390, align 2, !tbaa !32
  %392 = sext i16 %391 to i32
  %393 = icmp slt i32 %spec.store.select, %392
  br i1 %393, label %.preheader363.us.preheader.1, label %.loopexit.us.1

.preheader363.us.preheader.1:                     ; preds = %.loopexit.us
  %394 = load ptr, ptr %298, align 8, !tbaa !16
  %395 = getelementptr inbounds i8, ptr %394, i64 16
  %396 = load ptr, ptr %395, align 8, !tbaa !17
  %397 = getelementptr inbounds ptr, ptr %396, i64 %indvars.iv527
  %398 = load ptr, ptr %397, align 8, !tbaa !16
  %399 = getelementptr inbounds i16, ptr %398, i64 %indvars.iv522
  %400 = load i16, ptr %399, align 2, !tbaa !32
  %401 = icmp slt i16 %391, %400
  br i1 %401, label %.loopexit.us.1, label %.preheader363.us.2.1

.preheader363.us.2.1:                             ; preds = %.preheader363.us.preheader.1
  %402 = load ptr, ptr %312, align 8, !tbaa !16
  %403 = getelementptr inbounds i8, ptr %402, i64 16
  %404 = load ptr, ptr %403, align 8, !tbaa !17
  %405 = getelementptr inbounds ptr, ptr %404, i64 %indvars.iv527
  %406 = load ptr, ptr %405, align 8, !tbaa !16
  %407 = getelementptr inbounds i16, ptr %406, i64 %indvars.iv522
  %408 = load i16, ptr %407, align 2, !tbaa !32
  %409 = icmp slt i16 %391, %408
  %brmerge584 = select i1 %409, i1 true, i1 %310
  br i1 %brmerge584, label %.loopexit.us.1, label %.lr.ph418.us.1.preheader

.lr.ph418.us.1.preheader:                         ; preds = %.preheader363.us.2.1
  br i1 %316, label %.loopexit.us.1.loopexit.unr-lcssa, label %.lr.ph418.us.1

.lr.ph418.us.1:                                   ; preds = %.lr.ph418.us.1.preheader, %.lr.ph418.us.1
  %indvars.iv502.1 = phi i64 [ %indvars.iv.next503.1.1, %.lr.ph418.us.1 ], [ 0, %.lr.ph418.us.1.preheader ]
  %niter643 = phi i64 [ %niter643.next.1, %.lr.ph418.us.1 ], [ 0, %.lr.ph418.us.1.preheader ]
  %410 = getelementptr inbounds ptr, ptr %.sroa.7.0..sroa.7.0..sroa.7.8.537, i64 %indvars.iv502.1
  %411 = load ptr, ptr %410, align 8, !tbaa !16
  %412 = getelementptr inbounds i8, ptr %411, i64 16
  %413 = load ptr, ptr %412, align 8, !tbaa !17
  %414 = getelementptr inbounds ptr, ptr %413, i64 %indvars.iv527
  %415 = load ptr, ptr %414, align 8, !tbaa !16
  %416 = getelementptr inbounds i16, ptr %415, i64 %indvars.iv522
  %417 = load i16, ptr %416, align 2, !tbaa !32
  %418 = lshr i16 %417, 7
  %419 = trunc i16 %418 to i8
  %420 = getelementptr inbounds [4 x ptr], ptr %37, i64 0, i64 %indvars.iv502.1
  %421 = load ptr, ptr %420, align 8, !tbaa !16
  %422 = getelementptr inbounds ptr, ptr %421, i64 %indvars.iv527
  %423 = load ptr, ptr %422, align 8, !tbaa !16
  %424 = getelementptr inbounds i8, ptr %423, i64 %indvars.iv522
  store i8 %419, ptr %424, align 1, !tbaa !17
  %indvars.iv.next503.1 = or disjoint i64 %indvars.iv502.1, 1
  %425 = getelementptr inbounds ptr, ptr %.sroa.7.0..sroa.7.0..sroa.7.8.537, i64 %indvars.iv.next503.1
  %426 = load ptr, ptr %425, align 8, !tbaa !16
  %427 = getelementptr inbounds i8, ptr %426, i64 16
  %428 = load ptr, ptr %427, align 8, !tbaa !17
  %429 = getelementptr inbounds ptr, ptr %428, i64 %indvars.iv527
  %430 = load ptr, ptr %429, align 8, !tbaa !16
  %431 = getelementptr inbounds i16, ptr %430, i64 %indvars.iv522
  %432 = load i16, ptr %431, align 2, !tbaa !32
  %433 = lshr i16 %432, 7
  %434 = trunc i16 %433 to i8
  %435 = getelementptr inbounds [4 x ptr], ptr %37, i64 0, i64 %indvars.iv.next503.1
  %436 = load ptr, ptr %435, align 8, !tbaa !16
  %437 = getelementptr inbounds ptr, ptr %436, i64 %indvars.iv527
  %438 = load ptr, ptr %437, align 8, !tbaa !16
  %439 = getelementptr inbounds i8, ptr %438, i64 %indvars.iv522
  store i8 %434, ptr %439, align 1, !tbaa !17
  %indvars.iv.next503.1.1 = add nuw nsw i64 %indvars.iv502.1, 2
  %niter643.next.1 = add i64 %niter643, 2
  %niter643.ncmp.1 = icmp eq i64 %niter643.next.1, %unroll_iter642
  br i1 %niter643.ncmp.1, label %.loopexit.us.1.loopexit.unr-lcssa, label %.lr.ph418.us.1, !llvm.loop !35

.loopexit.us.1.loopexit.unr-lcssa:                ; preds = %.lr.ph418.us.1, %.lr.ph418.us.1.preheader
  %indvars.iv502.1.unr = phi i64 [ 0, %.lr.ph418.us.1.preheader ], [ %indvars.iv.next503.1.1, %.lr.ph418.us.1 ]
  br i1 %lcmp.mod641.not, label %.loopexit.us.1, label %.lr.ph418.us.1.epil

.lr.ph418.us.1.epil:                              ; preds = %.loopexit.us.1.loopexit.unr-lcssa
  %440 = getelementptr inbounds ptr, ptr %.sroa.7.0..sroa.7.0..sroa.7.8.537, i64 %indvars.iv502.1.unr
  %441 = load ptr, ptr %440, align 8, !tbaa !16
  %442 = getelementptr inbounds i8, ptr %441, i64 16
  %443 = load ptr, ptr %442, align 8, !tbaa !17
  %444 = getelementptr inbounds ptr, ptr %443, i64 %indvars.iv527
  %445 = load ptr, ptr %444, align 8, !tbaa !16
  %446 = getelementptr inbounds i16, ptr %445, i64 %indvars.iv522
  %447 = load i16, ptr %446, align 2, !tbaa !32
  %448 = lshr i16 %447, 7
  %449 = trunc i16 %448 to i8
  %450 = getelementptr inbounds [4 x ptr], ptr %37, i64 0, i64 %indvars.iv502.1.unr
  %451 = load ptr, ptr %450, align 8, !tbaa !16
  %452 = getelementptr inbounds ptr, ptr %451, i64 %indvars.iv527
  %453 = load ptr, ptr %452, align 8, !tbaa !16
  %454 = getelementptr inbounds i8, ptr %453, i64 %indvars.iv522
  store i8 %449, ptr %454, align 1, !tbaa !17
  br label %.loopexit.us.1

.loopexit.us.1:                                   ; preds = %.lr.ph418.us.1.epil, %.loopexit.us.1.loopexit.unr-lcssa, %.preheader363.us.2.1, %.preheader363.us.preheader.1, %.loopexit.us
  %.sroa.7.0..sroa.7.8.546 = phi ptr [ %.sroa.7.0..sroa.7.8., %.loopexit.us ], [ %.sroa.7.0..sroa.7.8., %.preheader363.us.preheader.1 ], [ %.sroa.7.0..sroa.7.8., %.preheader363.us.2.1 ], [ %.sroa.7.0..sroa.7.0..sroa.7.8.537, %.loopexit.us.1.loopexit.unr-lcssa ], [ %.sroa.7.0..sroa.7.0..sroa.7.8.537, %.lr.ph418.us.1.epil ]
  %455 = load ptr, ptr %312, align 8, !tbaa !16
  %456 = getelementptr inbounds i8, ptr %455, i64 16
  %457 = load ptr, ptr %456, align 8, !tbaa !17
  %458 = getelementptr inbounds ptr, ptr %457, i64 %indvars.iv527
  %459 = load ptr, ptr %458, align 8, !tbaa !16
  %460 = getelementptr inbounds i16, ptr %459, i64 %indvars.iv522
  %461 = load i16, ptr %460, align 2, !tbaa !32
  %462 = sext i16 %461 to i32
  %463 = icmp slt i32 %spec.store.select, %462
  br i1 %463, label %.preheader363.us.preheader.2, label %.loopexit367.us

.preheader363.us.preheader.2:                     ; preds = %.loopexit.us.1
  %464 = load ptr, ptr %298, align 8, !tbaa !16
  %465 = getelementptr inbounds i8, ptr %464, i64 16
  %466 = load ptr, ptr %465, align 8, !tbaa !17
  %467 = getelementptr inbounds ptr, ptr %466, i64 %indvars.iv527
  %468 = load ptr, ptr %467, align 8, !tbaa !16
  %469 = getelementptr inbounds i16, ptr %468, i64 %indvars.iv522
  %470 = load i16, ptr %469, align 2, !tbaa !32
  %471 = icmp slt i16 %461, %470
  br i1 %471, label %.loopexit367.us, label %.preheader363.us.1.2

.preheader363.us.1.2:                             ; preds = %.preheader363.us.preheader.2
  %472 = load ptr, ptr %311, align 8, !tbaa !16
  %473 = getelementptr inbounds i8, ptr %472, i64 16
  %474 = load ptr, ptr %473, align 8, !tbaa !17
  %475 = getelementptr inbounds ptr, ptr %474, i64 %indvars.iv527
  %476 = load ptr, ptr %475, align 8, !tbaa !16
  %477 = getelementptr inbounds i16, ptr %476, i64 %indvars.iv522
  %478 = load i16, ptr %477, align 2, !tbaa !32
  %479 = icmp slt i16 %461, %478
  br i1 %479, label %.loopexit367.us, label %480

480:                                              ; preds = %.preheader363.us.1.2
  br i1 %310, label %.loopexit367.us, label %.lr.ph418.us.2.preheader

.lr.ph418.us.2.preheader:                         ; preds = %480
  br i1 %317, label %.loopexit367.us.loopexit.unr-lcssa, label %.lr.ph418.us.2

.lr.ph418.us.2:                                   ; preds = %.lr.ph418.us.2.preheader, %.lr.ph418.us.2
  %indvars.iv502.2 = phi i64 [ %indvars.iv.next503.2.1, %.lr.ph418.us.2 ], [ 0, %.lr.ph418.us.2.preheader ]
  %niter648 = phi i64 [ %niter648.next.1, %.lr.ph418.us.2 ], [ 0, %.lr.ph418.us.2.preheader ]
  %481 = getelementptr inbounds ptr, ptr %.sroa.12.0..sroa.12.0..sroa.12.16.538, i64 %indvars.iv502.2
  %482 = load ptr, ptr %481, align 8, !tbaa !16
  %483 = getelementptr inbounds i8, ptr %482, i64 16
  %484 = load ptr, ptr %483, align 8, !tbaa !17
  %485 = getelementptr inbounds ptr, ptr %484, i64 %indvars.iv527
  %486 = load ptr, ptr %485, align 8, !tbaa !16
  %487 = getelementptr inbounds i16, ptr %486, i64 %indvars.iv522
  %488 = load i16, ptr %487, align 2, !tbaa !32
  %489 = lshr i16 %488, 7
  %490 = trunc i16 %489 to i8
  %491 = getelementptr inbounds [4 x ptr], ptr %37, i64 0, i64 %indvars.iv502.2
  %492 = load ptr, ptr %491, align 8, !tbaa !16
  %493 = getelementptr inbounds ptr, ptr %492, i64 %indvars.iv527
  %494 = load ptr, ptr %493, align 8, !tbaa !16
  %495 = getelementptr inbounds i8, ptr %494, i64 %indvars.iv522
  store i8 %490, ptr %495, align 1, !tbaa !17
  %indvars.iv.next503.2 = or disjoint i64 %indvars.iv502.2, 1
  %496 = getelementptr inbounds ptr, ptr %.sroa.12.0..sroa.12.0..sroa.12.16.538, i64 %indvars.iv.next503.2
  %497 = load ptr, ptr %496, align 8, !tbaa !16
  %498 = getelementptr inbounds i8, ptr %497, i64 16
  %499 = load ptr, ptr %498, align 8, !tbaa !17
  %500 = getelementptr inbounds ptr, ptr %499, i64 %indvars.iv527
  %501 = load ptr, ptr %500, align 8, !tbaa !16
  %502 = getelementptr inbounds i16, ptr %501, i64 %indvars.iv522
  %503 = load i16, ptr %502, align 2, !tbaa !32
  %504 = lshr i16 %503, 7
  %505 = trunc i16 %504 to i8
  %506 = getelementptr inbounds [4 x ptr], ptr %37, i64 0, i64 %indvars.iv.next503.2
  %507 = load ptr, ptr %506, align 8, !tbaa !16
  %508 = getelementptr inbounds ptr, ptr %507, i64 %indvars.iv527
  %509 = load ptr, ptr %508, align 8, !tbaa !16
  %510 = getelementptr inbounds i8, ptr %509, i64 %indvars.iv522
  store i8 %505, ptr %510, align 1, !tbaa !17
  %indvars.iv.next503.2.1 = add nuw nsw i64 %indvars.iv502.2, 2
  %niter648.next.1 = add i64 %niter648, 2
  %niter648.ncmp.1 = icmp eq i64 %niter648.next.1, %unroll_iter647
  br i1 %niter648.ncmp.1, label %.loopexit367.us.loopexit.unr-lcssa, label %.lr.ph418.us.2, !llvm.loop !35

.lr.ph418.us:                                     ; preds = %.lr.ph418.us.preheader, %.lr.ph418.us
  %indvars.iv502 = phi i64 [ %indvars.iv.next503.1637, %.lr.ph418.us ], [ 0, %.lr.ph418.us.preheader ]
  %niter635 = phi i64 [ %niter635.next.1, %.lr.ph418.us ], [ 0, %.lr.ph418.us.preheader ]
  %511 = getelementptr inbounds ptr, ptr %.sroa.0.0..sroa.0.0..sroa.0.0.536, i64 %indvars.iv502
  %512 = load ptr, ptr %511, align 8, !tbaa !16
  %513 = getelementptr inbounds i8, ptr %512, i64 16
  %514 = load ptr, ptr %513, align 8, !tbaa !17
  %515 = getelementptr inbounds ptr, ptr %514, i64 %indvars.iv527
  %516 = load ptr, ptr %515, align 8, !tbaa !16
  %517 = getelementptr inbounds i16, ptr %516, i64 %indvars.iv522
  %518 = load i16, ptr %517, align 2, !tbaa !32
  %519 = lshr i16 %518, 7
  %520 = trunc i16 %519 to i8
  %521 = getelementptr inbounds [4 x ptr], ptr %37, i64 0, i64 %indvars.iv502
  %522 = load ptr, ptr %521, align 8, !tbaa !16
  %523 = getelementptr inbounds ptr, ptr %522, i64 %indvars.iv527
  %524 = load ptr, ptr %523, align 8, !tbaa !16
  %525 = getelementptr inbounds i8, ptr %524, i64 %indvars.iv522
  store i8 %520, ptr %525, align 1, !tbaa !17
  %indvars.iv.next503 = or disjoint i64 %indvars.iv502, 1
  %526 = getelementptr inbounds ptr, ptr %.sroa.0.0..sroa.0.0..sroa.0.0.536, i64 %indvars.iv.next503
  %527 = load ptr, ptr %526, align 8, !tbaa !16
  %528 = getelementptr inbounds i8, ptr %527, i64 16
  %529 = load ptr, ptr %528, align 8, !tbaa !17
  %530 = getelementptr inbounds ptr, ptr %529, i64 %indvars.iv527
  %531 = load ptr, ptr %530, align 8, !tbaa !16
  %532 = getelementptr inbounds i16, ptr %531, i64 %indvars.iv522
  %533 = load i16, ptr %532, align 2, !tbaa !32
  %534 = lshr i16 %533, 7
  %535 = trunc i16 %534 to i8
  %536 = getelementptr inbounds [4 x ptr], ptr %37, i64 0, i64 %indvars.iv.next503
  %537 = load ptr, ptr %536, align 8, !tbaa !16
  %538 = getelementptr inbounds ptr, ptr %537, i64 %indvars.iv527
  %539 = load ptr, ptr %538, align 8, !tbaa !16
  %540 = getelementptr inbounds i8, ptr %539, i64 %indvars.iv522
  store i8 %535, ptr %540, align 1, !tbaa !17
  %indvars.iv.next503.1637 = add nuw nsw i64 %indvars.iv502, 2
  %niter635.next.1 = add i64 %niter635, 2
  %niter635.ncmp.1 = icmp eq i64 %niter635.next.1, %unroll_iter634
  br i1 %niter635.ncmp.1, label %.loopexit.us.loopexit.unr-lcssa, label %.lr.ph418.us, !llvm.loop !35

.preheader363.us.1:                               ; preds = %.preheader368.us
  %541 = load ptr, ptr %727, align 8, !tbaa !17
  %542 = getelementptr inbounds ptr, ptr %541, i64 %indvars.iv527
  %543 = load ptr, ptr %542, align 8, !tbaa !16
  %544 = getelementptr inbounds i16, ptr %543, i64 %indvars.iv522
  %545 = load i16, ptr %544, align 2, !tbaa !32
  %546 = icmp slt i16 %779, %545
  br i1 %546, label %.loopexit.us, label %.preheader363.us.2

.preheader363.us.2:                               ; preds = %.preheader363.us.1
  %547 = load ptr, ptr %737, align 8, !tbaa !17
  %548 = getelementptr inbounds ptr, ptr %547, i64 %indvars.iv527
  %549 = load ptr, ptr %548, align 8, !tbaa !16
  %550 = getelementptr inbounds i16, ptr %549, i64 %indvars.iv522
  %551 = load i16, ptr %550, align 2, !tbaa !32
  %552 = icmp slt i16 %779, %551
  %brmerge = select i1 %552, i1 true, i1 %310
  br i1 %brmerge, label %.loopexit.us, label %.lr.ph418.us.preheader

.lr.ph418.us.preheader:                           ; preds = %.preheader363.us.2
  br i1 %315, label %.loopexit.us.loopexit.unr-lcssa, label %.lr.ph418.us

.preheader366.us.1:                               ; preds = %.preheader366.us.preheader
  %553 = load ptr, ptr %727, align 8, !tbaa !17
  %554 = getelementptr inbounds ptr, ptr %553, i64 %indvars.iv527
  %555 = load ptr, ptr %554, align 8, !tbaa !16
  %556 = getelementptr inbounds i8, ptr %555, i64 2
  %557 = load i16, ptr %556, align 2, !tbaa !32
  %558 = icmp eq i16 %557, 0
  br i1 %558, label %.preheader365.us, label %.preheader366.us.2

.preheader366.us.2:                               ; preds = %.preheader366.us.1
  %559 = load ptr, ptr %737, align 8, !tbaa !17
  %560 = getelementptr inbounds ptr, ptr %559, i64 %indvars.iv527
  %561 = load ptr, ptr %560, align 8, !tbaa !16
  %562 = getelementptr inbounds i8, ptr %561, i64 4
  %563 = load i16, ptr %562, align 2, !tbaa !32
  %564 = icmp eq i16 %563, 0
  br i1 %564, label %.preheader365.us, label %.loopexit367.us

._crit_edge425.us.loopexit.unr-lcssa:             ; preds = %.lr.ph424.us.new, %.lr.ph424.us
  %indvars.iv517.unr = phi i64 [ 0, %.lr.ph424.us ], [ %indvars.iv.next518.1, %.lr.ph424.us.new ]
  br i1 %lcmp.mod652.not, label %._crit_edge425.us.loopexit, label %._crit_edge425.us.loopexit.epilog-lcssa

._crit_edge425.us.loopexit.epilog-lcssa:          ; preds = %._crit_edge425.us.loopexit.unr-lcssa
  %565 = getelementptr inbounds [4 x ptr], ptr %305, i64 0, i64 %indvars.iv517.unr
  %566 = load ptr, ptr %565, align 8, !tbaa !16
  %567 = getelementptr inbounds ptr, ptr %566, i64 %indvars.iv527
  %568 = load ptr, ptr %567, align 8, !tbaa !16
  %569 = getelementptr inbounds i8, ptr %568, i64 %indvars.iv522
  %570 = load i8, ptr %569, align 1, !tbaa !17
  %571 = zext i8 %570 to i16
  %572 = shl nuw nsw i16 %571, 7
  %573 = getelementptr inbounds ptr, ptr %785, i64 %indvars.iv517.unr
  %574 = load ptr, ptr %573, align 8, !tbaa !16
  %575 = getelementptr inbounds i8, ptr %574, i64 16
  %576 = load ptr, ptr %575, align 8, !tbaa !17
  %577 = getelementptr inbounds ptr, ptr %576, i64 %indvars.iv527
  %578 = load ptr, ptr %577, align 8, !tbaa !16
  %579 = getelementptr inbounds i16, ptr %578, i64 %indvars.iv522
  store i16 %572, ptr %579, align 2, !tbaa !32
  br label %._crit_edge425.us.loopexit

._crit_edge425.us.loopexit:                       ; preds = %._crit_edge425.us.loopexit.unr-lcssa, %._crit_edge425.us.loopexit.epilog-lcssa
  %.pre555 = load ptr, ptr %774, align 8, !tbaa !17
  br label %._crit_edge425.us

._crit_edge425.us:                                ; preds = %._crit_edge425.us.loopexit, %.preheader365.us
  %580 = phi ptr [ %.pre555, %._crit_edge425.us.loopexit ], [ %773, %.preheader365.us ]
  %581 = getelementptr inbounds ptr, ptr %580, i64 %indvars.iv527
  %582 = load ptr, ptr %581, align 8, !tbaa !16
  %583 = getelementptr inbounds i16, ptr %582, i64 %indvars.iv522
  store i16 1, ptr %583, align 2, !tbaa !32
  br label %.loopexit367.us

.loopexit367.us.loopexit.unr-lcssa:               ; preds = %.lr.ph418.us.2, %.lr.ph418.us.2.preheader
  %indvars.iv502.2.unr = phi i64 [ 0, %.lr.ph418.us.2.preheader ], [ %indvars.iv.next503.2.1, %.lr.ph418.us.2 ]
  br i1 %lcmp.mod646.not, label %.loopexit367.us, label %.lr.ph418.us.2.epil

.lr.ph418.us.2.epil:                              ; preds = %.loopexit367.us.loopexit.unr-lcssa
  %584 = getelementptr inbounds ptr, ptr %.sroa.12.0..sroa.12.0..sroa.12.16.538, i64 %indvars.iv502.2.unr
  %585 = load ptr, ptr %584, align 8, !tbaa !16
  %586 = getelementptr inbounds i8, ptr %585, i64 16
  %587 = load ptr, ptr %586, align 8, !tbaa !17
  %588 = getelementptr inbounds ptr, ptr %587, i64 %indvars.iv527
  %589 = load ptr, ptr %588, align 8, !tbaa !16
  %590 = getelementptr inbounds i16, ptr %589, i64 %indvars.iv522
  %591 = load i16, ptr %590, align 2, !tbaa !32
  %592 = lshr i16 %591, 7
  %593 = trunc i16 %592 to i8
  %594 = getelementptr inbounds [4 x ptr], ptr %37, i64 0, i64 %indvars.iv502.2.unr
  %595 = load ptr, ptr %594, align 8, !tbaa !16
  %596 = getelementptr inbounds ptr, ptr %595, i64 %indvars.iv527
  %597 = load ptr, ptr %596, align 8, !tbaa !16
  %598 = getelementptr inbounds i8, ptr %597, i64 %indvars.iv522
  store i8 %593, ptr %598, align 1, !tbaa !17
  br label %.loopexit367.us

.loopexit367.us:                                  ; preds = %.lr.ph418.us.2.epil, %.loopexit367.us.loopexit.unr-lcssa, %.preheader363.us.1.2, %.preheader363.us.preheader.2, %.preheader366.us.2, %.loopexit.us.1, %480, %._crit_edge425.us, %._crit_edge404.us
  %.sroa.12.0..sroa.12.16.549 = phi ptr [ %.sroa.12.0..sroa.12.16., %._crit_edge404.us ], [ %.sroa.12.0..sroa.12.16., %._crit_edge425.us ], [ %.sroa.12.0..sroa.12.16., %480 ], [ %.sroa.12.0..sroa.12.16., %.loopexit.us.1 ], [ %.sroa.12.0..sroa.12.16., %.preheader366.us.2 ], [ %.sroa.12.0..sroa.12.16., %.preheader363.us.preheader.2 ], [ %.sroa.12.0..sroa.12.16., %.preheader363.us.1.2 ], [ %.sroa.12.0..sroa.12.0..sroa.12.16.538, %.loopexit367.us.loopexit.unr-lcssa ], [ %.sroa.12.0..sroa.12.0..sroa.12.16.538, %.lr.ph418.us.2.epil ]
  %.sroa.7.0..sroa.7.8.545 = phi ptr [ %.sroa.7.0..sroa.7.8., %._crit_edge404.us ], [ %.sroa.7.0..sroa.7.8., %._crit_edge425.us ], [ %.sroa.7.0..sroa.7.8.546, %480 ], [ %.sroa.7.0..sroa.7.8.546, %.loopexit.us.1 ], [ %.sroa.7.0..sroa.7.8., %.preheader366.us.2 ], [ %.sroa.7.0..sroa.7.8.546, %.preheader363.us.preheader.2 ], [ %.sroa.7.0..sroa.7.8.546, %.preheader363.us.1.2 ], [ %.sroa.7.0..sroa.7.8.546, %.loopexit367.us.loopexit.unr-lcssa ], [ %.sroa.7.0..sroa.7.8.546, %.lr.ph418.us.2.epil ]
  %.sroa.0.0..sroa.0.0.541 = phi ptr [ %.sroa.0.0..sroa.0.0., %._crit_edge404.us ], [ %.sroa.0.0..sroa.0.0., %._crit_edge425.us ], [ %.sroa.0.0..sroa.0.0.542, %480 ], [ %.sroa.0.0..sroa.0.0.542, %.loopexit.us.1 ], [ %.sroa.0.0..sroa.0.0., %.preheader366.us.2 ], [ %.sroa.0.0..sroa.0.0.542, %.preheader363.us.preheader.2 ], [ %.sroa.0.0..sroa.0.0.542, %.preheader363.us.1.2 ], [ %.sroa.0.0..sroa.0.0.542, %.loopexit367.us.loopexit.unr-lcssa ], [ %.sroa.0.0..sroa.0.0.542, %.lr.ph418.us.2.epil ]
  %.9.us = phi i32 [ %.3333.us557, %._crit_edge404.us ], [ %.7.us.2, %._crit_edge425.us ], [ 0, %480 ], [ 0, %.loopexit.us.1 ], [ %.7.us.2, %.preheader366.us.2 ], [ 0, %.preheader363.us.preheader.2 ], [ 0, %.preheader363.us.1.2 ], [ 0, %.loopexit367.us.loopexit.unr-lcssa ], [ 0, %.lr.ph418.us.2.epil ]
  %indvars.iv.next523 = add nuw nsw i64 %indvars.iv522, 1
  %exitcond526.not = icmp eq i64 %indvars.iv.next523, %wide.trip.count525
  br i1 %exitcond526.not, label %._crit_edge430.us, label %.preheader374.us, !llvm.loop !36

.lr.ph424.us.new:                                 ; preds = %.lr.ph424.us, %.lr.ph424.us.new
  %indvars.iv517 = phi i64 [ %indvars.iv.next518.1, %.lr.ph424.us.new ], [ 0, %.lr.ph424.us ]
  %niter654 = phi i64 [ %niter654.next.1, %.lr.ph424.us.new ], [ 0, %.lr.ph424.us ]
  %599 = getelementptr inbounds [4 x ptr], ptr %305, i64 0, i64 %indvars.iv517
  %600 = load ptr, ptr %599, align 8, !tbaa !16
  %601 = getelementptr inbounds ptr, ptr %600, i64 %indvars.iv527
  %602 = load ptr, ptr %601, align 8, !tbaa !16
  %603 = getelementptr inbounds i8, ptr %602, i64 %indvars.iv522
  %604 = load i8, ptr %603, align 1, !tbaa !17
  %605 = zext i8 %604 to i16
  %606 = shl nuw nsw i16 %605, 7
  %607 = getelementptr inbounds ptr, ptr %785, i64 %indvars.iv517
  %608 = load ptr, ptr %607, align 8, !tbaa !16
  %609 = getelementptr inbounds i8, ptr %608, i64 16
  %610 = load ptr, ptr %609, align 8, !tbaa !17
  %611 = getelementptr inbounds ptr, ptr %610, i64 %indvars.iv527
  %612 = load ptr, ptr %611, align 8, !tbaa !16
  %613 = getelementptr inbounds i16, ptr %612, i64 %indvars.iv522
  store i16 %606, ptr %613, align 2, !tbaa !32
  %indvars.iv.next518 = or disjoint i64 %indvars.iv517, 1
  %614 = getelementptr inbounds [4 x ptr], ptr %305, i64 0, i64 %indvars.iv.next518
  %615 = load ptr, ptr %614, align 8, !tbaa !16
  %616 = getelementptr inbounds ptr, ptr %615, i64 %indvars.iv527
  %617 = load ptr, ptr %616, align 8, !tbaa !16
  %618 = getelementptr inbounds i8, ptr %617, i64 %indvars.iv522
  %619 = load i8, ptr %618, align 1, !tbaa !17
  %620 = zext i8 %619 to i16
  %621 = shl nuw nsw i16 %620, 7
  %622 = getelementptr inbounds ptr, ptr %785, i64 %indvars.iv.next518
  %623 = load ptr, ptr %622, align 8, !tbaa !16
  %624 = getelementptr inbounds i8, ptr %623, i64 16
  %625 = load ptr, ptr %624, align 8, !tbaa !17
  %626 = getelementptr inbounds ptr, ptr %625, i64 %indvars.iv527
  %627 = load ptr, ptr %626, align 8, !tbaa !16
  %628 = getelementptr inbounds i16, ptr %627, i64 %indvars.iv522
  store i16 %621, ptr %628, align 2, !tbaa !32
  %indvars.iv.next518.1 = add nuw nsw i64 %indvars.iv517, 2
  %niter654.next.1 = add i64 %niter654, 2
  %niter654.ncmp.1 = icmp eq i64 %niter654.next.1, %unroll_iter653
  br i1 %niter654.ncmp.1, label %._crit_edge425.us.loopexit.unr-lcssa, label %.lr.ph424.us.new, !llvm.loop !37

629:                                              ; preds = %.lr.ph414.us, %629
  %indvars.iv493 = phi i64 [ 0, %.lr.ph414.us ], [ %indvars.iv.next494, %629 ]
  %630 = getelementptr inbounds [4 x ptr], ptr %305, i64 0, i64 %indvars.iv493
  %631 = load ptr, ptr %630, align 8, !tbaa !16
  %632 = getelementptr inbounds ptr, ptr %631, i64 %indvars.iv527
  %633 = load ptr, ptr %632, align 8, !tbaa !16
  %634 = getelementptr inbounds i8, ptr %633, i64 %indvars.iv522
  %635 = load i8, ptr %634, align 1, !tbaa !17
  %636 = uitofp i8 %635 to double
  %637 = getelementptr inbounds ptr, ptr %784, i64 %indvars.iv493
  %638 = load ptr, ptr %637, align 8, !tbaa !16
  %639 = getelementptr inbounds i8, ptr %638, i64 16
  %640 = load ptr, ptr %639, align 8, !tbaa !17
  %641 = getelementptr inbounds ptr, ptr %640, i64 %indvars.iv527
  %642 = load ptr, ptr %641, align 8, !tbaa !16
  %643 = getelementptr inbounds i16, ptr %642, i64 %indvars.iv522
  %644 = load i16, ptr %643, align 2, !tbaa !32
  %645 = sitofp i16 %644 to float
  %646 = fmul float %645, 0x3FECCCCCC0000000
  %647 = fpext float %646 to double
  %648 = tail call double @llvm.fmuladd.f64(double %636, double 1.280000e+01, double %647)
  %649 = fptosi double %648 to i16
  store i16 %649, ptr %643, align 2, !tbaa !32
  %indvars.iv.next494 = add nuw nsw i64 %indvars.iv493, 1
  %exitcond497.not = icmp eq i64 %indvars.iv.next494, %wide.trip.count496
  br i1 %exitcond497.not, label %._crit_edge415.us.loopexit, label %629, !llvm.loop !38

.lr.ph407.us:                                     ; preds = %.preheader364.us, %355
  %indvars.iv484 = phi i64 [ %indvars.iv.next485, %355 ], [ 0, %.preheader364.us ]
  %650 = getelementptr inbounds [4 x ptr], ptr %305, i64 0, i64 %indvars.iv484
  %651 = load ptr, ptr %650, align 8, !tbaa !16
  %652 = getelementptr inbounds ptr, ptr %651, i64 %indvars.iv527
  %653 = load ptr, ptr %652, align 8, !tbaa !16
  %654 = getelementptr inbounds i8, ptr %653, i64 %indvars.iv522
  %655 = load i8, ptr %654, align 1, !tbaa !17
  %656 = zext i8 %655 to i32
  %657 = getelementptr inbounds ptr, ptr %.sroa.0.0..sroa.0.0., i64 %indvars.iv484
  %658 = load ptr, ptr %657, align 8, !tbaa !16
  %659 = getelementptr inbounds i8, ptr %658, i64 16
  %660 = load ptr, ptr %659, align 8, !tbaa !17
  %661 = getelementptr inbounds ptr, ptr %660, i64 %indvars.iv527
  %662 = load ptr, ptr %661, align 8, !tbaa !16
  %663 = getelementptr inbounds i16, ptr %662, i64 %indvars.iv522
  %664 = load i16, ptr %663, align 2, !tbaa !32
  %665 = ashr i16 %664, 7
  %666 = sext i16 %665 to i32
  %667 = sub nsw i32 %656, %666
  %668 = tail call i32 @llvm.abs.i32(i32 %667, i1 true)
  %669 = icmp ugt i32 %668, %spec.store.select11
  br i1 %669, label %.thread360.us, label %355

.thread360.us:                                    ; preds = %.lr.ph407.us, %.preheader371.us
  %.7.us = phi i32 [ 0, %.preheader371.us ], [ 1, %.lr.ph407.us ]
  %670 = load ptr, ptr %727, align 8, !tbaa !17
  %671 = getelementptr inbounds ptr, ptr %670, i64 %indvars.iv527
  %672 = load ptr, ptr %671, align 8, !tbaa !16
  %673 = getelementptr inbounds i8, ptr %672, i64 2
  %674 = load i16, ptr %673, align 2, !tbaa !32
  %675 = icmp slt i16 %674, 0
  br i1 %675, label %.thread360.us.1, label %.preheader364.us.1

.preheader364.us.1:                               ; preds = %.thread360.us
  br i1 %306, label %.lr.ph407.us.1, label %._crit_edge408.us.1

.lr.ph407.us.1:                                   ; preds = %.preheader364.us.1, %696
  %indvars.iv484.1 = phi i64 [ %indvars.iv.next485.1, %696 ], [ 0, %.preheader364.us.1 ]
  %676 = getelementptr inbounds [4 x ptr], ptr %305, i64 0, i64 %indvars.iv484.1
  %677 = load ptr, ptr %676, align 8, !tbaa !16
  %678 = getelementptr inbounds ptr, ptr %677, i64 %indvars.iv527
  %679 = load ptr, ptr %678, align 8, !tbaa !16
  %680 = getelementptr inbounds i8, ptr %679, i64 %indvars.iv522
  %681 = load i8, ptr %680, align 1, !tbaa !17
  %682 = zext i8 %681 to i32
  %683 = getelementptr inbounds ptr, ptr %.sroa.7.0..sroa.7.8., i64 %indvars.iv484.1
  %684 = load ptr, ptr %683, align 8, !tbaa !16
  %685 = getelementptr inbounds i8, ptr %684, i64 16
  %686 = load ptr, ptr %685, align 8, !tbaa !17
  %687 = getelementptr inbounds ptr, ptr %686, i64 %indvars.iv527
  %688 = load ptr, ptr %687, align 8, !tbaa !16
  %689 = getelementptr inbounds i16, ptr %688, i64 %indvars.iv522
  %690 = load i16, ptr %689, align 2, !tbaa !32
  %691 = ashr i16 %690, 7
  %692 = sext i16 %691 to i32
  %693 = sub nsw i32 %682, %692
  %694 = tail call i32 @llvm.abs.i32(i32 %693, i1 true)
  %695 = icmp ugt i32 %694, %spec.store.select11
  br i1 %695, label %.thread360.us.1, label %696

696:                                              ; preds = %.lr.ph407.us.1
  %indvars.iv.next485.1 = add nuw nsw i64 %indvars.iv484.1, 1
  %exitcond488.1.not = icmp eq i64 %indvars.iv.next485.1, %wide.trip.count487.1
  br i1 %exitcond488.1.not, label %.preheader370.us, label %.lr.ph407.us.1, !llvm.loop !34

._crit_edge408.us.1:                              ; preds = %.preheader364.us.1
  br i1 %750, label %._crit_edge415.us, label %.preheader366.us.preheader

.thread360.us.1:                                  ; preds = %.lr.ph407.us.1, %.thread360.us
  %.7.us.1 = phi i32 [ %.7.us, %.thread360.us ], [ 1, %.lr.ph407.us.1 ]
  %697 = load ptr, ptr %737, align 8, !tbaa !17
  %698 = getelementptr inbounds ptr, ptr %697, i64 %indvars.iv527
  %699 = load ptr, ptr %698, align 8, !tbaa !16
  %700 = getelementptr inbounds i8, ptr %699, i64 4
  %701 = load i16, ptr %700, align 2, !tbaa !32
  %702 = icmp slt i16 %701, 0
  br i1 %702, label %.preheader366.us.preheader, label %.preheader364.us.2

.preheader364.us.2:                               ; preds = %.thread360.us.1
  br i1 %306, label %.lr.ph407.us.2, label %._crit_edge408.us.2

.lr.ph407.us.2:                                   ; preds = %.preheader364.us.2, %723
  %indvars.iv484.2 = phi i64 [ %indvars.iv.next485.2, %723 ], [ 0, %.preheader364.us.2 ]
  %703 = getelementptr inbounds [4 x ptr], ptr %305, i64 0, i64 %indvars.iv484.2
  %704 = load ptr, ptr %703, align 8, !tbaa !16
  %705 = getelementptr inbounds ptr, ptr %704, i64 %indvars.iv527
  %706 = load ptr, ptr %705, align 8, !tbaa !16
  %707 = getelementptr inbounds i8, ptr %706, i64 %indvars.iv522
  %708 = load i8, ptr %707, align 1, !tbaa !17
  %709 = zext i8 %708 to i32
  %710 = getelementptr inbounds ptr, ptr %.sroa.12.0..sroa.12.16., i64 %indvars.iv484.2
  %711 = load ptr, ptr %710, align 8, !tbaa !16
  %712 = getelementptr inbounds i8, ptr %711, i64 16
  %713 = load ptr, ptr %712, align 8, !tbaa !17
  %714 = getelementptr inbounds ptr, ptr %713, i64 %indvars.iv527
  %715 = load ptr, ptr %714, align 8, !tbaa !16
  %716 = getelementptr inbounds i16, ptr %715, i64 %indvars.iv522
  %717 = load i16, ptr %716, align 2, !tbaa !32
  %718 = ashr i16 %717, 7
  %719 = sext i16 %718 to i32
  %720 = sub nsw i32 %709, %719
  %721 = tail call i32 @llvm.abs.i32(i32 %720, i1 true)
  %722 = icmp ugt i32 %721, %spec.store.select11
  br i1 %722, label %.preheader366.us.preheader, label %723

723:                                              ; preds = %.lr.ph407.us.2
  %indvars.iv.next485.2 = add nuw nsw i64 %indvars.iv484.2, 1
  %exitcond488.2.not = icmp eq i64 %indvars.iv.next485.2, %wide.trip.count487.2
  br i1 %exitcond488.2.not, label %.preheader370.us, label %.lr.ph407.us.2, !llvm.loop !34

._crit_edge408.us.2:                              ; preds = %.preheader364.us.2
  %.not351.us.2 = icmp eq i32 %.7.us.1, 0
  br i1 %.not351.us.2, label %._crit_edge415.us, label %.preheader366.us.preheader

724:                                              ; preds = %.preheader373.us.preheader
  %725 = add nsw i16 %353, -1
  store i16 %725, ptr %352, align 2, !tbaa !32
  br label %.preheader373.us.1

.preheader373.us.1:                               ; preds = %724, %.preheader373.us.preheader
  %726 = load ptr, ptr %311, align 8, !tbaa !16
  %727 = getelementptr inbounds i8, ptr %726, i64 16
  %728 = load ptr, ptr %727, align 8, !tbaa !17
  %729 = getelementptr inbounds ptr, ptr %728, i64 %indvars.iv527
  %730 = load ptr, ptr %729, align 8, !tbaa !16
  %731 = getelementptr inbounds i8, ptr %730, i64 2
  %732 = load i16, ptr %731, align 2, !tbaa !32
  %733 = icmp sgt i16 %732, 0
  br i1 %733, label %734, label %.preheader373.us.2

734:                                              ; preds = %.preheader373.us.1
  %735 = add nsw i16 %732, -1
  store i16 %735, ptr %731, align 2, !tbaa !32
  br label %.preheader373.us.2

.preheader373.us.2:                               ; preds = %734, %.preheader373.us.1
  %736 = load ptr, ptr %312, align 8, !tbaa !16
  %737 = getelementptr inbounds i8, ptr %736, i64 16
  %738 = load ptr, ptr %737, align 8, !tbaa !17
  %739 = getelementptr inbounds ptr, ptr %738, i64 %indvars.iv527
  %740 = load ptr, ptr %739, align 8, !tbaa !16
  %741 = getelementptr inbounds i8, ptr %740, i64 4
  %742 = load i16, ptr %741, align 2, !tbaa !32
  %743 = icmp sgt i16 %742, 0
  br i1 %743, label %744, label %.preheader371.us

744:                                              ; preds = %.preheader373.us.2
  %745 = add nsw i16 %742, -1
  store i16 %745, ptr %741, align 2, !tbaa !32
  br label %.preheader371.us

.preheader371.us:                                 ; preds = %744, %.preheader373.us.2
  %746 = load ptr, ptr %349, align 8, !tbaa !17
  %747 = getelementptr inbounds ptr, ptr %746, i64 %indvars.iv527
  %748 = load ptr, ptr %747, align 8, !tbaa !16
  %749 = load i16, ptr %748, align 2, !tbaa !32
  %750 = icmp slt i16 %749, 0
  br i1 %750, label %.thread360.us, label %.preheader364.us

.lr.ph403.us:                                     ; preds = %.lr.ph403.us.preheader, %.lr.ph403.us
  %indvars.iv475 = phi i64 [ %indvars.iv.next476.1, %.lr.ph403.us ], [ 0, %.lr.ph403.us.preheader ]
  %niter630 = phi i64 [ %niter630.next.1, %.lr.ph403.us ], [ 0, %.lr.ph403.us.preheader ]
  %751 = getelementptr inbounds [4 x ptr], ptr %305, i64 0, i64 %indvars.iv475
  %752 = load ptr, ptr %751, align 8, !tbaa !16
  %753 = getelementptr inbounds ptr, ptr %752, i64 %indvars.iv527
  %754 = load ptr, ptr %753, align 8, !tbaa !16
  %755 = getelementptr inbounds i8, ptr %754, i64 %indvars.iv522
  %756 = load i8, ptr %755, align 1, !tbaa !17
  %757 = getelementptr inbounds [4 x ptr], ptr %307, i64 0, i64 %indvars.iv475
  %758 = load ptr, ptr %757, align 8, !tbaa !16
  %759 = getelementptr inbounds ptr, ptr %758, i64 %indvars.iv527
  %760 = load ptr, ptr %759, align 8, !tbaa !16
  %761 = getelementptr inbounds i8, ptr %760, i64 %indvars.iv522
  store i8 %756, ptr %761, align 1, !tbaa !17
  %indvars.iv.next476 = or disjoint i64 %indvars.iv475, 1
  %762 = getelementptr inbounds [4 x ptr], ptr %305, i64 0, i64 %indvars.iv.next476
  %763 = load ptr, ptr %762, align 8, !tbaa !16
  %764 = getelementptr inbounds ptr, ptr %763, i64 %indvars.iv527
  %765 = load ptr, ptr %764, align 8, !tbaa !16
  %766 = getelementptr inbounds i8, ptr %765, i64 %indvars.iv522
  %767 = load i8, ptr %766, align 1, !tbaa !17
  %768 = getelementptr inbounds [4 x ptr], ptr %307, i64 0, i64 %indvars.iv.next476
  %769 = load ptr, ptr %768, align 8, !tbaa !16
  %770 = getelementptr inbounds ptr, ptr %769, i64 %indvars.iv527
  %771 = load ptr, ptr %770, align 8, !tbaa !16
  %772 = getelementptr inbounds i8, ptr %771, i64 %indvars.iv522
  store i8 %767, ptr %772, align 1, !tbaa !17
  %indvars.iv.next476.1 = add nuw nsw i64 %indvars.iv475, 2
  %niter630.next.1 = add i64 %niter630, 2
  %niter630.ncmp.1 = icmp eq i64 %niter630.next.1, %unroll_iter629
  br i1 %niter630.ncmp.1, label %._crit_edge404.us.loopexit.unr-lcssa, label %.lr.ph403.us, !llvm.loop !39

.preheader364.us:                                 ; preds = %.preheader371.us
  br i1 %306, label %.lr.ph407.us, label %._crit_edge415.us

.preheader365.us:                                 ; preds = %.preheader366.us.2, %.preheader366.us.1, %.preheader366.us.preheader
  %773 = phi ptr [ %365, %.preheader366.us.preheader ], [ %553, %.preheader366.us.1 ], [ %559, %.preheader366.us.2 ]
  %.lcssa448.sroa.phi = phi ptr [ %.sroa.0, %.preheader366.us.preheader ], [ %.sroa.7, %.preheader366.us.1 ], [ %.sroa.12, %.preheader366.us.2 ]
  %.lcssa446 = phi ptr [ %348, %.preheader366.us.preheader ], [ %726, %.preheader366.us.1 ], [ %736, %.preheader366.us.2 ]
  %774 = getelementptr inbounds i8, ptr %.lcssa446, i64 16
  br i1 %306, label %.lr.ph424.us, label %._crit_edge425.us

.preheader368.us:                                 ; preds = %363, %._crit_edge415.us
  %775 = load ptr, ptr %349, align 8, !tbaa !17
  %776 = getelementptr inbounds ptr, ptr %775, i64 %indvars.iv527
  %777 = load ptr, ptr %776, align 8, !tbaa !16
  %778 = getelementptr inbounds i16, ptr %777, i64 %indvars.iv522
  %779 = load i16, ptr %778, align 2, !tbaa !32
  %780 = sext i16 %779 to i32
  %781 = icmp slt i32 %spec.store.select, %780
  br i1 %781, label %.preheader363.us.1, label %.loopexit.us

.preheader370.us:                                 ; preds = %355, %696, %723
  %782 = phi ptr [ %697, %723 ], [ %670, %696 ], [ %746, %355 ]
  %.lcssa442.sroa.phi = phi ptr [ %.sroa.12, %723 ], [ %.sroa.7, %696 ], [ %.sroa.0, %355 ]
  %.lcssa = phi ptr [ %736, %723 ], [ %726, %696 ], [ %348, %355 ]
  %783 = getelementptr inbounds i8, ptr %.lcssa, i64 16
  br i1 %306, label %.lr.ph414.us, label %._crit_edge415.us

.preheader374.us:                                 ; preds = %.preheader375.us, %.loopexit367.us
  %.sroa.12.0..sroa.12.16. = phi ptr [ %.sroa.12.0..sroa.12.16.547, %.preheader375.us ], [ %.sroa.12.0..sroa.12.16.549, %.loopexit367.us ]
  %.sroa.7.0..sroa.7.8. = phi ptr [ %.sroa.7.0..sroa.7.8.543, %.preheader375.us ], [ %.sroa.7.0..sroa.7.8.545, %.loopexit367.us ]
  %.sroa.0.0..sroa.0.0. = phi ptr [ %.sroa.0.0..sroa.0.0.539, %.preheader375.us ], [ %.sroa.0.0..sroa.0.0.541, %.loopexit367.us ]
  %indvars.iv522 = phi i64 [ 0, %.preheader375.us ], [ %indvars.iv.next523, %.loopexit367.us ]
  %.1331426.us = phi i32 [ %.0330431.us, %.preheader375.us ], [ %.9.us, %.loopexit367.us ]
  br i1 %306, label %.lr.ph.us, label %._crit_edge404.us

.lr.ph414.us:                                     ; preds = %.preheader370.us
  %784 = load ptr, ptr %.lcssa442.sroa.phi, align 8, !tbaa !16
  br label %629

.lr.ph424.us:                                     ; preds = %.preheader365.us
  %785 = load ptr, ptr %.lcssa448.sroa.phi, align 8, !tbaa !16
  br i1 %318, label %._crit_edge425.us.loopexit.unr-lcssa, label %.lr.ph424.us.new

._crit_edge430.us:                                ; preds = %.loopexit367.us
  %indvars.iv.next528 = add nuw nsw i64 %indvars.iv527, 1
  %exitcond531.not = icmp eq i64 %indvars.iv.next528, %wide.trip.count530
  br i1 %exitcond531.not, label %._crit_edge433, label %.preheader375.us, !llvm.loop !40

._crit_edge433:                                   ; preds = %._crit_edge430.us, %.preheader375.lr.ph, %295
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %.sroa.0)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %.sroa.7)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %.sroa.12)
  ret void
}

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

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

declare ptr @GetHandle(ptr noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

declare ptr @TableCreate(i32 noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

declare void @TableRedefine(ptr noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

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

declare ptr @ImageCreate(i32 noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

declare void @mImageCopy(ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #4

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

attributes #0 = { 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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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, !7, i64 0}
!6 = !{!"MImage", !7, i64 0, !7, i64 4, !7, i64 8, !8, i64 16, !10, i64 48}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!6, !7, i64 4}
!12 = !{!6, !7, i64 8}
!13 = !{!14, !10, i64 16}
!14 = !{!"MHandle", !7, i64 0, !7, i64 4, !10, i64 8, !10, i64 16}
!15 = !{!14, !7, i64 4}
!16 = !{!10, !10, i64 0}
!17 = !{!8, !8, i64 0}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.unroll.disable"}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.mustprogress"}
!22 = distinct !{!22, !21}
!23 = distinct !{!23, !19}
!24 = distinct !{!24, !19}
!25 = distinct !{!25, !19}
!26 = distinct !{!26, !19}
!27 = distinct !{!27, !19}
!28 = !{!29, !10, i64 120}
!29 = !{!"HandleVideoBackground", !8, i64 0, !8, i64 96, !10, i64 120, !10, i64 128}
!30 = !{!29, !10, i64 128}
!31 = distinct !{!31, !21}
!32 = !{!33, !33, i64 0}
!33 = !{!"short", !8, i64 0}
!34 = distinct !{!34, !21}
!35 = distinct !{!35, !21}
!36 = distinct !{!36, !21}
!37 = distinct !{!37, !21}
!38 = distinct !{!38, !21}
!39 = distinct !{!39, !21}
!40 = distinct !{!40, !21}


; Effective O3 passes: ADCEPass,BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass