; LLVM IR from sslab-gatech/janus :: lkl/arch/parisc/math-emu (sfmpy)

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

; Function Attrs: nounwind uwtable
define dso_local i32 @sgl_fmpy(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) #0 {
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %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 i32, align 4
  %20 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #2
  store i32 0, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #2
  store i32 0, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #2
  store i32 0, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #2
  %21 = load ptr, ptr %6, align 8, !tbaa !5
  %22 = load i32, ptr %21, align 4, !tbaa !9
  store i32 %22, ptr %10, align 4, !tbaa !9
  %23 = load ptr, ptr %7, align 8, !tbaa !5
  %24 = load i32, ptr %23, align 4, !tbaa !9
  store i32 %24, ptr %11, align 4, !tbaa !9
  %25 = load i32, ptr %10, align 4, !tbaa !9
  %26 = lshr i32 %25, 31
  %27 = and i32 %26, 1
  %28 = load i32, ptr %11, align 4, !tbaa !9
  %29 = lshr i32 %28, 31
  %30 = and i32 %29, 1
  %31 = xor i32 %27, %30
  %32 = icmp ne i32 %31, 0
  br i1 %32, label %33, label %34

33:                                               ; preds = %4
  store i32 -2147483648, ptr %13, align 4, !tbaa !9
  br label %35

34:                                               ; preds = %4
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %35

35:                                               ; preds = %34, %33
  %36 = load i32, ptr %10, align 4, !tbaa !9
  %37 = lshr i32 %36, 23
  %38 = and i32 %37, 255
  %39 = icmp eq i32 %38, 255
  br i1 %39, label %40, label %127

40:                                               ; preds = %35
  %41 = load i32, ptr %10, align 4, !tbaa !9
  %42 = and i32 %41, 8388607
  %43 = icmp eq i32 %42, 0
  br i1 %43, label %44, label %79

44:                                               ; preds = %40
  %45 = load i32, ptr %11, align 4, !tbaa !9
  %46 = lshr i32 %45, 23
  %47 = and i32 %46, 255
  %48 = icmp ne i32 %47, 255
  br i1 %48, label %53, label %49

49:                                               ; preds = %44
  %50 = load i32, ptr %11, align 4, !tbaa !9
  %51 = and i32 %50, 8388607
  %52 = icmp eq i32 %51, 0
  br i1 %52, label %53, label %78

53:                                               ; preds = %49, %44
  %54 = load i32, ptr %11, align 4, !tbaa !9
  %55 = and i32 %54, 2147483647
  %56 = icmp eq i32 %55, 0
  br i1 %56, label %57, label %72

57:                                               ; preds = %53
  %58 = load ptr, ptr %9, align 8, !tbaa !5
  %59 = load i32, ptr %58, align 4, !tbaa !9
  %60 = lshr i32 %59, 4
  %61 = and i32 %60, 1
  %62 = icmp ne i32 %61, 0
  br i1 %62, label %63, label %64

63:                                               ; preds = %57
  store i32 32, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %739

64:                                               ; preds = %57
  %65 = load ptr, ptr %9, align 8, !tbaa !5
  %66 = load i32, ptr %65, align 4, !tbaa !9
  %67 = and i32 %66, 2147483647
  %68 = or i32 %67, -2147483648
  %69 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %68, ptr %69, align 4, !tbaa !9
  store i32 2141192192, ptr %13, align 4, !tbaa !9
  %70 = load i32, ptr %13, align 4, !tbaa !9
  %71 = load ptr, ptr %8, align 8, !tbaa !5
  store i32 %70, ptr %71, align 4, !tbaa !9
  store i32 0, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %739

72:                                               ; preds = %53
  %73 = load i32, ptr %13, align 4, !tbaa !9
  %74 = and i32 %73, -2147483648
  %75 = or i32 %74, 2139095040
  store i32 %75, ptr %13, align 4, !tbaa !9
  %76 = load i32, ptr %13, align 4, !tbaa !9
  %77 = load ptr, ptr %8, align 8, !tbaa !5
  store i32 %76, ptr %77, align 4, !tbaa !9
  store i32 0, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %739

78:                                               ; preds = %49
  br label %126

79:                                               ; preds = %40
  %80 = load i32, ptr %10, align 4, !tbaa !9
  %81 = and i32 %80, 4194304
  %82 = icmp ne i32 %81, 0
  br i1 %82, label %83, label %99

83:                                               ; preds = %79
  %84 = load ptr, ptr %9, align 8, !tbaa !5
  %85 = load i32, ptr %84, align 4, !tbaa !9
  %86 = lshr i32 %85, 4
  %87 = and i32 %86, 1
  %88 = icmp ne i32 %87, 0
  br i1 %88, label %89, label %90

89:                                               ; preds = %83
  store i32 32, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %739

90:                                               ; preds = %83
  %91 = load ptr, ptr %9, align 8, !tbaa !5
  %92 = load i32, ptr %91, align 4, !tbaa !9
  %93 = and i32 %92, 2147483647
  %94 = or i32 %93, -2147483648
  %95 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %94, ptr %95, align 4, !tbaa !9
  %96 = load i32, ptr %10, align 4, !tbaa !9
  %97 = and i32 %96, -6291457
  %98 = or i32 %97, 2097152
  store i32 %98, ptr %10, align 4, !tbaa !9
  br label %123

99:                                               ; preds = %79
  %100 = load i32, ptr %11, align 4, !tbaa !9
  %101 = lshr i32 %100, 22
  %102 = and i32 %101, 511
  %103 = icmp eq i32 %102, 511
  br i1 %103, label %104, label %122

104:                                              ; preds = %99
  %105 = load ptr, ptr %9, align 8, !tbaa !5
  %106 = load i32, ptr %105, align 4, !tbaa !9
  %107 = lshr i32 %106, 4
  %108 = and i32 %107, 1
  %109 = icmp ne i32 %108, 0
  br i1 %109, label %110, label %111

110:                                              ; preds = %104
  store i32 32, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %739

111:                                              ; preds = %104
  %112 = load ptr, ptr %9, align 8, !tbaa !5
  %113 = load i32, ptr %112, align 4, !tbaa !9
  %114 = and i32 %113, 2147483647
  %115 = or i32 %114, -2147483648
  %116 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %115, ptr %116, align 4, !tbaa !9
  %117 = load i32, ptr %11, align 4, !tbaa !9
  %118 = and i32 %117, -6291457
  %119 = or i32 %118, 2097152
  store i32 %119, ptr %11, align 4, !tbaa !9
  %120 = load i32, ptr %11, align 4, !tbaa !9
  %121 = load ptr, ptr %8, align 8, !tbaa !5
  store i32 %120, ptr %121, align 4, !tbaa !9
  store i32 0, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %739

122:                                              ; preds = %99
  br label %123

123:                                              ; preds = %122, %90
  %124 = load i32, ptr %10, align 4, !tbaa !9
  %125 = load ptr, ptr %8, align 8, !tbaa !5
  store i32 %124, ptr %125, align 4, !tbaa !9
  store i32 0, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %739

126:                                              ; preds = %78
  br label %127

127:                                              ; preds = %126, %35
  %128 = load i32, ptr %11, align 4, !tbaa !9
  %129 = lshr i32 %128, 23
  %130 = and i32 %129, 255
  %131 = icmp eq i32 %130, 255
  br i1 %131, label %132, label %184

132:                                              ; preds = %127
  %133 = load i32, ptr %11, align 4, !tbaa !9
  %134 = and i32 %133, 8388607
  %135 = icmp eq i32 %134, 0
  br i1 %135, label %136, label %161

136:                                              ; preds = %132
  %137 = load i32, ptr %10, align 4, !tbaa !9
  %138 = and i32 %137, 2147483647
  %139 = icmp eq i32 %138, 0
  br i1 %139, label %140, label %155

140:                                              ; preds = %136
  %141 = load ptr, ptr %9, align 8, !tbaa !5
  %142 = load i32, ptr %141, align 4, !tbaa !9
  %143 = lshr i32 %142, 4
  %144 = and i32 %143, 1
  %145 = icmp ne i32 %144, 0
  br i1 %145, label %146, label %147

146:                                              ; preds = %140
  store i32 32, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %739

147:                                              ; preds = %140
  %148 = load ptr, ptr %9, align 8, !tbaa !5
  %149 = load i32, ptr %148, align 4, !tbaa !9
  %150 = and i32 %149, 2147483647
  %151 = or i32 %150, -2147483648
  %152 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %151, ptr %152, align 4, !tbaa !9
  store i32 2141192192, ptr %11, align 4, !tbaa !9
  %153 = load i32, ptr %11, align 4, !tbaa !9
  %154 = load ptr, ptr %8, align 8, !tbaa !5
  store i32 %153, ptr %154, align 4, !tbaa !9
  store i32 0, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %739

155:                                              ; preds = %136
  %156 = load i32, ptr %13, align 4, !tbaa !9
  %157 = and i32 %156, -2147483648
  %158 = or i32 %157, 2139095040
  store i32 %158, ptr %13, align 4, !tbaa !9
  %159 = load i32, ptr %13, align 4, !tbaa !9
  %160 = load ptr, ptr %8, align 8, !tbaa !5
  store i32 %159, ptr %160, align 4, !tbaa !9
  store i32 0, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %739

161:                                              ; preds = %132
  %162 = load i32, ptr %11, align 4, !tbaa !9
  %163 = and i32 %162, 4194304
  %164 = icmp ne i32 %163, 0
  br i1 %164, label %165, label %181

165:                                              ; preds = %161
  %166 = load ptr, ptr %9, align 8, !tbaa !5
  %167 = load i32, ptr %166, align 4, !tbaa !9
  %168 = lshr i32 %167, 4
  %169 = and i32 %168, 1
  %170 = icmp ne i32 %169, 0
  br i1 %170, label %171, label %172

171:                                              ; preds = %165
  store i32 32, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %739

172:                                              ; preds = %165
  %173 = load ptr, ptr %9, align 8, !tbaa !5
  %174 = load i32, ptr %173, align 4, !tbaa !9
  %175 = and i32 %174, 2147483647
  %176 = or i32 %175, -2147483648
  %177 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %176, ptr %177, align 4, !tbaa !9
  %178 = load i32, ptr %11, align 4, !tbaa !9
  %179 = and i32 %178, -6291457
  %180 = or i32 %179, 2097152
  store i32 %180, ptr %11, align 4, !tbaa !9
  br label %181

181:                                              ; preds = %172, %161
  %182 = load i32, ptr %11, align 4, !tbaa !9
  %183 = load ptr, ptr %8, align 8, !tbaa !5
  store i32 %182, ptr %183, align 4, !tbaa !9
  store i32 0, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %739

184:                                              ; preds = %127
  %185 = load i32, ptr %10, align 4, !tbaa !9
  %186 = lshr i32 %185, 23
  %187 = and i32 %186, 255
  %188 = load i32, ptr %11, align 4, !tbaa !9
  %189 = lshr i32 %188, 23
  %190 = and i32 %189, 255
  %191 = add i32 %187, %190
  %192 = sub i32 %191, 127
  store i32 %192, ptr %14, align 4, !tbaa !9
  %193 = load i32, ptr %10, align 4, !tbaa !9
  %194 = lshr i32 %193, 23
  %195 = and i32 %194, 255
  %196 = icmp ne i32 %195, 0
  br i1 %196, label %197, label %201

197:                                              ; preds = %184
  %198 = load i32, ptr %10, align 4, !tbaa !9
  %199 = and i32 %198, 8388607
  %200 = or i32 %199, 8388608
  store i32 %200, ptr %10, align 4, !tbaa !9
  br label %246

201:                                              ; preds = %184
  %202 = load i32, ptr %10, align 4, !tbaa !9
  %203 = and i32 %202, 8388607
  %204 = icmp eq i32 %203, 0
  br i1 %204, label %205, label %210

205:                                              ; preds = %201
  %206 = load i32, ptr %13, align 4, !tbaa !9
  %207 = and i32 %206, -2147483648
  store i32 %207, ptr %13, align 4, !tbaa !9
  %208 = load i32, ptr %13, align 4, !tbaa !9
  %209 = load ptr, ptr %8, align 8, !tbaa !5
  store i32 %208, ptr %209, align 4, !tbaa !9
  store i32 0, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %739

210:                                              ; preds = %201
  %211 = load i32, ptr %10, align 4, !tbaa !9
  %212 = and i32 %211, 8388607
  store i32 %212, ptr %10, align 4, !tbaa !9
  %213 = load i32, ptr %10, align 4, !tbaa !9
  %214 = shl i32 %213, 1
  store i32 %214, ptr %10, align 4, !tbaa !9
  br label %215

215:                                              ; preds = %220, %210
  %216 = load i32, ptr %10, align 4, !tbaa !9
  %217 = lshr i32 %216, 16
  %218 = and i32 %217, 255
  %219 = icmp eq i32 %218, 0
  br i1 %219, label %220, label %225

220:                                              ; preds = %215
  %221 = load i32, ptr %10, align 4, !tbaa !9
  %222 = shl i32 %221, 8
  store i32 %222, ptr %10, align 4, !tbaa !9
  %223 = load i32, ptr %14, align 4, !tbaa !9
  %224 = sub nsw i32 %223, 8
  store i32 %224, ptr %14, align 4, !tbaa !9
  br label %215, !llvm.loop !11

225:                                              ; preds = %215
  %226 = load i32, ptr %10, align 4, !tbaa !9
  %227 = lshr i32 %226, 20
  %228 = and i32 %227, 15
  %229 = icmp eq i32 %228, 0
  br i1 %229, label %230, label %235

230:                                              ; preds = %225
  %231 = load i32, ptr %10, align 4, !tbaa !9
  %232 = shl i32 %231, 4
  store i32 %232, ptr %10, align 4, !tbaa !9
  %233 = load i32, ptr %14, align 4, !tbaa !9
  %234 = sub nsw i32 %233, 4
  store i32 %234, ptr %14, align 4, !tbaa !9
  br label %235

235:                                              ; preds = %230, %225
  br label %236

236:                                              ; preds = %240, %235
  %237 = load i32, ptr %10, align 4, !tbaa !9
  %238 = and i32 %237, 8388608
  %239 = icmp eq i32 %238, 0
  br i1 %239, label %240, label %245

240:                                              ; preds = %236
  %241 = load i32, ptr %10, align 4, !tbaa !9
  %242 = shl i32 %241, 1
  store i32 %242, ptr %10, align 4, !tbaa !9
  %243 = load i32, ptr %14, align 4, !tbaa !9
  %244 = sub nsw i32 %243, 1
  store i32 %244, ptr %14, align 4, !tbaa !9
  br label %236, !llvm.loop !13

245:                                              ; preds = %236
  br label %246

246:                                              ; preds = %245, %197
  %247 = load i32, ptr %11, align 4, !tbaa !9
  %248 = lshr i32 %247, 23
  %249 = and i32 %248, 255
  %250 = icmp ne i32 %249, 0
  br i1 %250, label %251, label %255

251:                                              ; preds = %246
  %252 = load i32, ptr %11, align 4, !tbaa !9
  %253 = and i32 %252, 8388607
  %254 = or i32 %253, 8388608
  store i32 %254, ptr %11, align 4, !tbaa !9
  br label %300

255:                                              ; preds = %246
  %256 = load i32, ptr %11, align 4, !tbaa !9
  %257 = and i32 %256, 8388607
  %258 = icmp eq i32 %257, 0
  br i1 %258, label %259, label %264

259:                                              ; preds = %255
  %260 = load i32, ptr %13, align 4, !tbaa !9
  %261 = and i32 %260, -2147483648
  store i32 %261, ptr %13, align 4, !tbaa !9
  %262 = load i32, ptr %13, align 4, !tbaa !9
  %263 = load ptr, ptr %8, align 8, !tbaa !5
  store i32 %262, ptr %263, align 4, !tbaa !9
  store i32 0, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %739

264:                                              ; preds = %255
  %265 = load i32, ptr %11, align 4, !tbaa !9
  %266 = and i32 %265, 8388607
  store i32 %266, ptr %11, align 4, !tbaa !9
  %267 = load i32, ptr %11, align 4, !tbaa !9
  %268 = shl i32 %267, 1
  store i32 %268, ptr %11, align 4, !tbaa !9
  br label %269

269:                                              ; preds = %274, %264
  %270 = load i32, ptr %11, align 4, !tbaa !9
  %271 = lshr i32 %270, 16
  %272 = and i32 %271, 255
  %273 = icmp eq i32 %272, 0
  br i1 %273, label %274, label %279

274:                                              ; preds = %269
  %275 = load i32, ptr %11, align 4, !tbaa !9
  %276 = shl i32 %275, 8
  store i32 %276, ptr %11, align 4, !tbaa !9
  %277 = load i32, ptr %14, align 4, !tbaa !9
  %278 = sub nsw i32 %277, 8
  store i32 %278, ptr %14, align 4, !tbaa !9
  br label %269, !llvm.loop !14

279:                                              ; preds = %269
  %280 = load i32, ptr %11, align 4, !tbaa !9
  %281 = lshr i32 %280, 20
  %282 = and i32 %281, 15
  %283 = icmp eq i32 %282, 0
  br i1 %283, label %284, label %289

284:                                              ; preds = %279
  %285 = load i32, ptr %11, align 4, !tbaa !9
  %286 = shl i32 %285, 4
  store i32 %286, ptr %11, align 4, !tbaa !9
  %287 = load i32, ptr %14, align 4, !tbaa !9
  %288 = sub nsw i32 %287, 4
  store i32 %288, ptr %14, align 4, !tbaa !9
  br label %289

289:                                              ; preds = %284, %279
  br label %290

290:                                              ; preds = %294, %289
  %291 = load i32, ptr %11, align 4, !tbaa !9
  %292 = and i32 %291, 8388608
  %293 = icmp eq i32 %292, 0
  br i1 %293, label %294, label %299

294:                                              ; preds = %290
  %295 = load i32, ptr %11, align 4, !tbaa !9
  %296 = shl i32 %295, 1
  store i32 %296, ptr %11, align 4, !tbaa !9
  %297 = load i32, ptr %14, align 4, !tbaa !9
  %298 = sub nsw i32 %297, 1
  store i32 %298, ptr %14, align 4, !tbaa !9
  br label %290, !llvm.loop !15

299:                                              ; preds = %290
  br label %300

300:                                              ; preds = %299, %251
  %301 = load i32, ptr %11, align 4, !tbaa !9
  %302 = shl i32 %301, 4
  store i32 %302, ptr %11, align 4, !tbaa !9
  store i32 0, ptr %12, align 4, !tbaa !9
  store i32 1, ptr %15, align 4, !tbaa !9
  br label %303

303:                                              ; preds = %353, %300
  %304 = load i32, ptr %15, align 4, !tbaa !9
  %305 = icmp slt i32 %304, 24
  br i1 %305, label %306, label %356

306:                                              ; preds = %303
  %307 = load i32, ptr %12, align 4, !tbaa !9
  %308 = and i32 %307, 15
  %309 = load i32, ptr %18, align 4, !tbaa !9
  %310 = or i32 %309, %308
  store i32 %310, ptr %18, align 4, !tbaa !9
  %311 = load i32, ptr %12, align 4, !tbaa !9
  %312 = lshr i32 %311, 4
  store i32 %312, ptr %12, align 4, !tbaa !9
  %313 = load i32, ptr %10, align 4, !tbaa !9
  %314 = lshr i32 %313, 3
  %315 = and i32 %314, 1
  %316 = icmp ne i32 %315, 0
  br i1 %316, label %317, label %322

317:                                              ; preds = %306
  %318 = load i32, ptr %11, align 4, !tbaa !9
  %319 = shl i32 %318, 3
  %320 = load i32, ptr %12, align 4, !tbaa !9
  %321 = add i32 %320, %319
  store i32 %321, ptr %12, align 4, !tbaa !9
  br label %322

322:                                              ; preds = %317, %306
  %323 = load i32, ptr %10, align 4, !tbaa !9
  %324 = lshr i32 %323, 2
  %325 = and i32 %324, 1
  %326 = icmp ne i32 %325, 0
  br i1 %326, label %327, label %332

327:                                              ; preds = %322
  %328 = load i32, ptr %11, align 4, !tbaa !9
  %329 = shl i32 %328, 2
  %330 = load i32, ptr %12, align 4, !tbaa !9
  %331 = add i32 %330, %329
  store i32 %331, ptr %12, align 4, !tbaa !9
  br label %332

332:                                              ; preds = %327, %322
  %333 = load i32, ptr %10, align 4, !tbaa !9
  %334 = lshr i32 %333, 1
  %335 = and i32 %334, 1
  %336 = icmp ne i32 %335, 0
  br i1 %336, label %337, label %342

337:                                              ; preds = %332
  %338 = load i32, ptr %11, align 4, !tbaa !9
  %339 = shl i32 %338, 1
  %340 = load i32, ptr %12, align 4, !tbaa !9
  %341 = add i32 %340, %339
  store i32 %341, ptr %12, align 4, !tbaa !9
  br label %342

342:                                              ; preds = %337, %332
  %343 = load i32, ptr %10, align 4, !tbaa !9
  %344 = and i32 %343, 1
  %345 = icmp ne i32 %344, 0
  br i1 %345, label %346, label %350

346:                                              ; preds = %342
  %347 = load i32, ptr %11, align 4, !tbaa !9
  %348 = load i32, ptr %12, align 4, !tbaa !9
  %349 = add i32 %348, %347
  store i32 %349, ptr %12, align 4, !tbaa !9
  br label %350

350:                                              ; preds = %346, %342
  %351 = load i32, ptr %10, align 4, !tbaa !9
  %352 = lshr i32 %351, 4
  store i32 %352, ptr %10, align 4, !tbaa !9
  br label %353

353:                                              ; preds = %350
  %354 = load i32, ptr %15, align 4, !tbaa !9
  %355 = add nsw i32 %354, 4
  store i32 %355, ptr %15, align 4, !tbaa !9
  br label %303, !llvm.loop !16

356:                                              ; preds = %303
  %357 = load i32, ptr %12, align 4, !tbaa !9
  %358 = and i32 %357, -2147483648
  %359 = icmp eq i32 %358, 0
  br i1 %359, label %360, label %363

360:                                              ; preds = %356
  %361 = load i32, ptr %12, align 4, !tbaa !9
  %362 = shl i32 %361, 1
  store i32 %362, ptr %12, align 4, !tbaa !9
  br label %366

363:                                              ; preds = %356
  %364 = load i32, ptr %14, align 4, !tbaa !9
  %365 = add nsw i32 %364, 1
  store i32 %365, ptr %14, align 4, !tbaa !9
  br label %366

366:                                              ; preds = %363, %360
  br label %367

367:                                              ; preds = %371, %366
  %368 = load i32, ptr %12, align 4, !tbaa !9
  %369 = and i32 %368, -2147483648
  %370 = icmp eq i32 %369, 0
  br i1 %370, label %371, label %376

371:                                              ; preds = %367
  %372 = load i32, ptr %12, align 4, !tbaa !9
  %373 = shl i32 %372, 1
  store i32 %373, ptr %12, align 4, !tbaa !9
  %374 = load i32, ptr %14, align 4, !tbaa !9
  %375 = add nsw i32 %374, -1
  store i32 %375, ptr %14, align 4, !tbaa !9
  br label %367, !llvm.loop !17

376:                                              ; preds = %367
  %377 = load i32, ptr %12, align 4, !tbaa !9
  %378 = shl i32 %377, 25
  %379 = load i32, ptr %18, align 4, !tbaa !9
  %380 = or i32 %379, %378
  store i32 %380, ptr %18, align 4, !tbaa !9
  %381 = load i32, ptr %12, align 4, !tbaa !9
  %382 = lshr i32 %381, 7
  %383 = and i32 %382, 1
  store i32 %383, ptr %17, align 4, !tbaa !9
  %384 = load i32, ptr %17, align 4, !tbaa !9
  %385 = load i32, ptr %18, align 4, !tbaa !9
  %386 = or i32 %384, %385
  store i32 %386, ptr %16, align 4, !tbaa !9
  %387 = load i32, ptr %12, align 4, !tbaa !9
  %388 = lshr i32 %387, 8
  store i32 %388, ptr %12, align 4, !tbaa !9
  %389 = load i32, ptr %16, align 4, !tbaa !9
  %390 = icmp ne i32 %389, 0
  br i1 %390, label %391, label %447

391:                                              ; preds = %376
  %392 = load i32, ptr %14, align 4, !tbaa !9
  %393 = icmp sgt i32 %392, 0
  br i1 %393, label %400, label %394

394:                                              ; preds = %391
  %395 = load ptr, ptr %9, align 8, !tbaa !5
  %396 = load i32, ptr %395, align 4, !tbaa !9
  %397 = lshr i32 %396, 1
  %398 = and i32 %397, 1
  %399 = icmp ne i32 %398, 0
  br i1 %399, label %400, label %447

400:                                              ; preds = %394, %391
  %401 = load i32, ptr %12, align 4, !tbaa !9
  %402 = and i32 %401, 8388607
  store i32 %402, ptr %12, align 4, !tbaa !9
  %403 = load ptr, ptr %9, align 8, !tbaa !5
  %404 = load i32, ptr %403, align 4, !tbaa !9
  %405 = lshr i32 %404, 9
  %406 = and i32 %405, 3
  switch i32 %406, label %438 [
    i32 2, label %407
    i32 3, label %415
    i32 0, label %423
  ]

407:                                              ; preds = %400
  %408 = load i32, ptr %13, align 4, !tbaa !9
  %409 = and i32 %408, -2147483648
  %410 = icmp eq i32 %409, 0
  br i1 %410, label %411, label %414

411:                                              ; preds = %407
  %412 = load i32, ptr %12, align 4, !tbaa !9
  %413 = add i32 %412, 1
  store i32 %413, ptr %12, align 4, !tbaa !9
  br label %414

414:                                              ; preds = %411, %407
  br label %438

415:                                              ; preds = %400
  %416 = load i32, ptr %13, align 4, !tbaa !9
  %417 = and i32 %416, -2147483648
  %418 = icmp ne i32 %417, 0
  br i1 %418, label %419, label %422

419:                                              ; preds = %415
  %420 = load i32, ptr %12, align 4, !tbaa !9
  %421 = add i32 %420, 1
  store i32 %421, ptr %12, align 4, !tbaa !9
  br label %422

422:                                              ; preds = %419, %415
  br label %438

423:                                              ; preds = %400
  %424 = load i32, ptr %17, align 4, !tbaa !9
  %425 = icmp ne i32 %424, 0
  br i1 %425, label %426, label %437

426:                                              ; preds = %423
  %427 = load i32, ptr %18, align 4, !tbaa !9
  %428 = icmp ne i32 %427, 0
  br i1 %428, label %433, label %429

429:                                              ; preds = %426
  %430 = load i32, ptr %12, align 4, !tbaa !9
  %431 = and i32 %430, 1
  %432 = icmp ne i32 %431, 0
  br i1 %432, label %433, label %436

433:                                              ; preds = %429, %426
  %434 = load i32, ptr %12, align 4, !tbaa !9
  %435 = add i32 %434, 1
  store i32 %435, ptr %12, align 4, !tbaa !9
  br label %436

436:                                              ; preds = %433, %429
  br label %437

437:                                              ; preds = %436, %423
  br label %438

438:                                              ; preds = %437, %422, %414, %400
  %439 = load i32, ptr %12, align 4, !tbaa !9
  %440 = lshr i32 %439, 23
  %441 = and i32 %440, 1
  %442 = icmp ne i32 %441, 0
  br i1 %442, label %443, label %446

443:                                              ; preds = %438
  %444 = load i32, ptr %14, align 4, !tbaa !9
  %445 = add nsw i32 %444, 1
  store i32 %445, ptr %14, align 4, !tbaa !9
  br label %446

446:                                              ; preds = %443, %438
  br label %447

447:                                              ; preds = %446, %394, %376
  %448 = load i32, ptr %13, align 4, !tbaa !9
  %449 = and i32 %448, -8388608
  %450 = load i32, ptr %12, align 4, !tbaa !9
  %451 = and i32 %450, 8388607
  %452 = shl i32 %451, 0
  %453 = or i32 %449, %452
  store i32 %453, ptr %13, align 4, !tbaa !9
  %454 = load i32, ptr %14, align 4, !tbaa !9
  %455 = icmp sge i32 %454, 255
  br i1 %455, label %456, label %522

456:                                              ; preds = %447
  %457 = load ptr, ptr %9, align 8, !tbaa !5
  %458 = load i32, ptr %457, align 4, !tbaa !9
  %459 = lshr i32 %458, 2
  %460 = and i32 %459, 1
  %461 = icmp ne i32 %460, 0
  br i1 %461, label %462, label %489

462:                                              ; preds = %456
  %463 = load i32, ptr %13, align 4, !tbaa !9
  %464 = and i32 %463, -2139095041
  %465 = load i32, ptr %14, align 4, !tbaa !9
  %466 = sub nsw i32 %465, 192
  %467 = and i32 %466, 255
  %468 = shl i32 %467, 23
  %469 = or i32 %464, %468
  store i32 %469, ptr %13, align 4, !tbaa !9
  %470 = load i32, ptr %13, align 4, !tbaa !9
  %471 = load ptr, ptr %8, align 8, !tbaa !5
  store i32 %470, ptr %471, align 4, !tbaa !9
  %472 = load i32, ptr %16, align 4, !tbaa !9
  %473 = icmp ne i32 %472, 0
  br i1 %473, label %474, label %488

474:                                              ; preds = %462
  %475 = load ptr, ptr %9, align 8, !tbaa !5
  %476 = load i32, ptr %475, align 4, !tbaa !9
  %477 = lshr i32 %476, 0
  %478 = and i32 %477, 1
  %479 = icmp ne i32 %478, 0
  br i1 %479, label %480, label %481

480:                                              ; preds = %474
  store i32 10, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %739

481:                                              ; preds = %474
  %482 = load ptr, ptr %9, align 8, !tbaa !5
  %483 = load i32, ptr %482, align 4, !tbaa !9
  %484 = and i32 %483, -134217729
  %485 = or i32 %484, 134217728
  %486 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %485, ptr %486, align 4, !tbaa !9
  br label %487

487:                                              ; preds = %481
  br label %488

488:                                              ; preds = %487, %462
  store i32 8, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %739

489:                                              ; preds = %456
  store i32 1, ptr %16, align 4, !tbaa !9
  %490 = load ptr, ptr %9, align 8, !tbaa !5
  %491 = load i32, ptr %490, align 4, !tbaa !9
  %492 = and i32 %491, -536870913
  %493 = or i32 %492, 536870912
  %494 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %493, ptr %494, align 4, !tbaa !9
  %495 = load ptr, ptr %9, align 8, !tbaa !5
  %496 = load i32, ptr %495, align 4, !tbaa !9
  %497 = lshr i32 %496, 9
  %498 = and i32 %497, 3
  switch i32 %498, label %521 [
    i32 2, label %499
    i32 3, label %506
    i32 0, label %513
    i32 1, label %517
  ]

499:                                              ; preds = %489
  %500 = load i32, ptr %13, align 4, !tbaa !9
  %501 = and i32 %500, -2147483648
  %502 = icmp ne i32 %501, 0
  br i1 %502, label %503, label %504

503:                                              ; preds = %499
  store i32 -8388609, ptr %13, align 4, !tbaa !9
  br label %505

504:                                              ; preds = %499
  store i32 2139095040, ptr %13, align 4, !tbaa !9
  br label %505

505:                                              ; preds = %504, %503
  br label %521

506:                                              ; preds = %489
  %507 = load i32, ptr %13, align 4, !tbaa !9
  %508 = and i32 %507, -2147483648
  %509 = icmp eq i32 %508, 0
  br i1 %509, label %510, label %511

510:                                              ; preds = %506
  store i32 2139095039, ptr %13, align 4, !tbaa !9
  br label %512

511:                                              ; preds = %506
  store i32 -8388608, ptr %13, align 4, !tbaa !9
  br label %512

512:                                              ; preds = %511, %510
  br label %521

513:                                              ; preds = %489
  %514 = load i32, ptr %13, align 4, !tbaa !9
  %515 = and i32 %514, -2147483648
  %516 = or i32 %515, 2139095040
  store i32 %516, ptr %13, align 4, !tbaa !9
  br label %521

517:                                              ; preds = %489
  %518 = load i32, ptr %13, align 4, !tbaa !9
  %519 = and i32 %518, -2147483648
  %520 = or i32 %519, 2139095039
  store i32 %520, ptr %13, align 4, !tbaa !9
  br label %521

521:                                              ; preds = %517, %513, %512, %505, %489
  br label %719

522:                                              ; preds = %447
  %523 = load i32, ptr %14, align 4, !tbaa !9
  %524 = icmp sle i32 %523, 0
  br i1 %524, label %525, label %711

525:                                              ; preds = %522
  %526 = load ptr, ptr %9, align 8, !tbaa !5
  %527 = load i32, ptr %526, align 4, !tbaa !9
  %528 = lshr i32 %527, 1
  %529 = and i32 %528, 1
  %530 = icmp ne i32 %529, 0
  br i1 %530, label %531, label %558

531:                                              ; preds = %525
  %532 = load i32, ptr %13, align 4, !tbaa !9
  %533 = and i32 %532, -2139095041
  %534 = load i32, ptr %14, align 4, !tbaa !9
  %535 = add nsw i32 %534, 192
  %536 = and i32 %535, 255
  %537 = shl i32 %536, 23
  %538 = or i32 %533, %537
  store i32 %538, ptr %13, align 4, !tbaa !9
  %539 = load i32, ptr %13, align 4, !tbaa !9
  %540 = load ptr, ptr %8, align 8, !tbaa !5
  store i32 %539, ptr %540, align 4, !tbaa !9
  %541 = load i32, ptr %16, align 4, !tbaa !9
  %542 = icmp ne i32 %541, 0
  br i1 %542, label %543, label %557

543:                                              ; preds = %531
  %544 = load ptr, ptr %9, align 8, !tbaa !5
  %545 = load i32, ptr %544, align 4, !tbaa !9
  %546 = lshr i32 %545, 0
  %547 = and i32 %546, 1
  %548 = icmp ne i32 %547, 0
  br i1 %548, label %549, label %550

549:                                              ; preds = %543
  store i32 6, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %739

550:                                              ; preds = %543
  %551 = load ptr, ptr %9, align 8, !tbaa !5
  %552 = load i32, ptr %551, align 4, !tbaa !9
  %553 = and i32 %552, -134217729
  %554 = or i32 %553, 134217728
  %555 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %554, ptr %555, align 4, !tbaa !9
  br label %556

556:                                              ; preds = %550
  br label %557

557:                                              ; preds = %556, %531
  store i32 4, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %739

558:                                              ; preds = %525
  store i32 1, ptr %19, align 4, !tbaa !9
  %559 = load i32, ptr %14, align 4, !tbaa !9
  %560 = icmp eq i32 %559, 0
  br i1 %560, label %561, label %621

561:                                              ; preds = %558
  %562 = load i32, ptr %16, align 4, !tbaa !9
  %563 = icmp ne i32 %562, 0
  br i1 %563, label %564, label %621

564:                                              ; preds = %561
  %565 = load ptr, ptr %9, align 8, !tbaa !5
  %566 = load i32, ptr %565, align 4, !tbaa !9
  %567 = lshr i32 %566, 9
  %568 = and i32 %567, 3
  switch i32 %568, label %620 [
    i32 2, label %569
    i32 3, label %584
    i32 0, label %599
  ]

569:                                              ; preds = %564
  %570 = load i32, ptr %13, align 4, !tbaa !9
  %571 = and i32 %570, -2147483648
  %572 = icmp eq i32 %571, 0
  br i1 %572, label %573, label %583

573:                                              ; preds = %569
  %574 = load i32, ptr %12, align 4, !tbaa !9
  %575 = add i32 %574, 1
  store i32 %575, ptr %12, align 4, !tbaa !9
  %576 = load i32, ptr %12, align 4, !tbaa !9
  %577 = and i32 %576, 16777216
  %578 = icmp ne i32 %577, 0
  br i1 %578, label %579, label %580

579:                                              ; preds = %573
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %580

580:                                              ; preds = %579, %573
  %581 = load i32, ptr %12, align 4, !tbaa !9
  %582 = sub i32 %581, 1
  store i32 %582, ptr %12, align 4, !tbaa !9
  br label %583

583:                                              ; preds = %580, %569
  br label %620

584:                                              ; preds = %564
  %585 = load i32, ptr %13, align 4, !tbaa !9
  %586 = and i32 %585, -2147483648
  %587 = icmp ne i32 %586, 0
  br i1 %587, label %588, label %598

588:                                              ; preds = %584
  %589 = load i32, ptr %12, align 4, !tbaa !9
  %590 = add i32 %589, 1
  store i32 %590, ptr %12, align 4, !tbaa !9
  %591 = load i32, ptr %12, align 4, !tbaa !9
  %592 = and i32 %591, 16777216
  %593 = icmp ne i32 %592, 0
  br i1 %593, label %594, label %595

594:                                              ; preds = %588
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %595

595:                                              ; preds = %594, %588
  %596 = load i32, ptr %12, align 4, !tbaa !9
  %597 = sub i32 %596, 1
  store i32 %597, ptr %12, align 4, !tbaa !9
  br label %598

598:                                              ; preds = %595, %584
  br label %620

599:                                              ; preds = %564
  %600 = load i32, ptr %17, align 4, !tbaa !9
  %601 = icmp ne i32 %600, 0
  br i1 %601, label %602, label %619

602:                                              ; preds = %599
  %603 = load i32, ptr %18, align 4, !tbaa !9
  %604 = icmp ne i32 %603, 0
  br i1 %604, label %609, label %605

605:                                              ; preds = %602
  %606 = load i32, ptr %12, align 4, !tbaa !9
  %607 = and i32 %606, 1
  %608 = icmp ne i32 %607, 0
  br i1 %608, label %609, label %619

609:                                              ; preds = %605, %602
  %610 = load i32, ptr %12, align 4, !tbaa !9
  %611 = add i32 %610, 1
  store i32 %611, ptr %12, align 4, !tbaa !9
  %612 = load i32, ptr %12, align 4, !tbaa !9
  %613 = and i32 %612, 16777216
  %614 = icmp ne i32 %613, 0
  br i1 %614, label %615, label %616

615:                                              ; preds = %609
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %616

616:                                              ; preds = %615, %609
  %617 = load i32, ptr %12, align 4, !tbaa !9
  %618 = sub i32 %617, 1
  store i32 %618, ptr %12, align 4, !tbaa !9
  br label %619

619:                                              ; preds = %616, %605, %599
  br label %620

620:                                              ; preds = %619, %598, %583, %564
  br label %621

621:                                              ; preds = %620, %561, %558
  %622 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %622, ptr %18, align 4, !tbaa !9
  %623 = load i32, ptr %12, align 4, !tbaa !9
  %624 = and i32 %623, 8388607
  %625 = or i32 %624, 8388608
  store i32 %625, ptr %12, align 4, !tbaa !9
  %626 = load i32, ptr %14, align 4, !tbaa !9
  %627 = icmp sge i32 %626, -23
  br i1 %627, label %628, label %651

628:                                              ; preds = %621
  %629 = load i32, ptr %12, align 4, !tbaa !9
  %630 = load i32, ptr %14, align 4, !tbaa !9
  %631 = sub nsw i32 0, %630
  %632 = lshr i32 %629, %631
  %633 = and i32 %632, 1
  store i32 %633, ptr %17, align 4, !tbaa !9
  %634 = load i32, ptr %14, align 4, !tbaa !9
  %635 = icmp slt i32 %634, 0
  br i1 %635, label %636, label %643

636:                                              ; preds = %628
  %637 = load i32, ptr %12, align 4, !tbaa !9
  %638 = load i32, ptr %14, align 4, !tbaa !9
  %639 = add nsw i32 32, %638
  %640 = shl i32 %637, %639
  %641 = load i32, ptr %18, align 4, !tbaa !9
  %642 = or i32 %641, %640
  store i32 %642, ptr %18, align 4, !tbaa !9
  br label %643

643:                                              ; preds = %636, %628
  %644 = load i32, ptr %17, align 4, !tbaa !9
  %645 = load i32, ptr %18, align 4, !tbaa !9
  %646 = or i32 %644, %645
  store i32 %646, ptr %16, align 4, !tbaa !9
  %647 = load i32, ptr %14, align 4, !tbaa !9
  %648 = sub nsw i32 1, %647
  %649 = load i32, ptr %12, align 4, !tbaa !9
  %650 = lshr i32 %649, %648
  store i32 %650, ptr %12, align 4, !tbaa !9
  br label %656

651:                                              ; preds = %621
  store i32 0, ptr %17, align 4, !tbaa !9
  %652 = load i32, ptr %12, align 4, !tbaa !9
  %653 = load i32, ptr %18, align 4, !tbaa !9
  %654 = or i32 %653, %652
  store i32 %654, ptr %18, align 4, !tbaa !9
  %655 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %655, ptr %16, align 4, !tbaa !9
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %656

656:                                              ; preds = %651, %643
  %657 = load i32, ptr %16, align 4, !tbaa !9
  %658 = icmp ne i32 %657, 0
  br i1 %658, label %659, label %704

659:                                              ; preds = %656
  %660 = load ptr, ptr %9, align 8, !tbaa !5
  %661 = load i32, ptr %660, align 4, !tbaa !9
  %662 = lshr i32 %661, 9
  %663 = and i32 %662, 3
  switch i32 %663, label %694 [
    i32 2, label %664
    i32 3, label %672
    i32 0, label %680
  ]

664:                                              ; preds = %659
  %665 = load i32, ptr %13, align 4, !tbaa !9
  %666 = and i32 %665, -2147483648
  %667 = icmp eq i32 %666, 0
  br i1 %667, label %668, label %671

668:                                              ; preds = %664
  %669 = load i32, ptr %12, align 4, !tbaa !9
  %670 = add i32 %669, 1
  store i32 %670, ptr %12, align 4, !tbaa !9
  br label %671

671:                                              ; preds = %668, %664
  br label %694

672:                                              ; preds = %659
  %673 = load i32, ptr %13, align 4, !tbaa !9
  %674 = and i32 %673, -2147483648
  %675 = icmp ne i32 %674, 0
  br i1 %675, label %676, label %679

676:                                              ; preds = %672
  %677 = load i32, ptr %12, align 4, !tbaa !9
  %678 = add i32 %677, 1
  store i32 %678, ptr %12, align 4, !tbaa !9
  br label %679

679:                                              ; preds = %676, %672
  br label %694

680:                                              ; preds = %659
  %681 = load i32, ptr %17, align 4, !tbaa !9
  %682 = icmp ne i32 %681, 0
  br i1 %682, label %683, label %693

683:                                              ; preds = %680
  %684 = load i32, ptr %18, align 4, !tbaa !9
  %685 = icmp ne i32 %684, 0
  br i1 %685, label %690, label %686

686:                                              ; preds = %683
  %687 = load i32, ptr %12, align 4, !tbaa !9
  %688 = and i32 %687, 1
  %689 = icmp ne i32 %688, 0
  br i1 %689, label %690, label %693

690:                                              ; preds = %686, %683
  %691 = load i32, ptr %12, align 4, !tbaa !9
  %692 = add i32 %691, 1
  store i32 %692, ptr %12, align 4, !tbaa !9
  br label %693

693:                                              ; preds = %690, %686, %680
  br label %694

694:                                              ; preds = %693, %679, %671, %659
  %695 = load i32, ptr %19, align 4, !tbaa !9
  %696 = icmp ne i32 %695, 0
  br i1 %696, label %697, label %703

697:                                              ; preds = %694
  %698 = load ptr, ptr %9, align 8, !tbaa !5
  %699 = load i32, ptr %698, align 4, !tbaa !9
  %700 = and i32 %699, -268435457
  %701 = or i32 %700, 268435456
  %702 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %701, ptr %702, align 4, !tbaa !9
  br label %703

703:                                              ; preds = %697, %694
  br label %704

704:                                              ; preds = %703, %656
  %705 = load i32, ptr %13, align 4, !tbaa !9
  %706 = and i32 %705, -2147483648
  %707 = load i32, ptr %12, align 4, !tbaa !9
  %708 = and i32 %707, 2147483647
  %709 = shl i32 %708, 0
  %710 = or i32 %706, %709
  store i32 %710, ptr %13, align 4, !tbaa !9
  br label %718

711:                                              ; preds = %522
  %712 = load i32, ptr %13, align 4, !tbaa !9
  %713 = and i32 %712, -2139095041
  %714 = load i32, ptr %14, align 4, !tbaa !9
  %715 = and i32 %714, 255
  %716 = shl i32 %715, 23
  %717 = or i32 %713, %716
  store i32 %717, ptr %13, align 4, !tbaa !9
  br label %718

718:                                              ; preds = %711, %704
  br label %719

719:                                              ; preds = %718, %521
  %720 = load i32, ptr %13, align 4, !tbaa !9
  %721 = load ptr, ptr %8, align 8, !tbaa !5
  store i32 %720, ptr %721, align 4, !tbaa !9
  %722 = load i32, ptr %16, align 4, !tbaa !9
  %723 = icmp ne i32 %722, 0
  br i1 %723, label %724, label %738

724:                                              ; preds = %719
  %725 = load ptr, ptr %9, align 8, !tbaa !5
  %726 = load i32, ptr %725, align 4, !tbaa !9
  %727 = lshr i32 %726, 0
  %728 = and i32 %727, 1
  %729 = icmp ne i32 %728, 0
  br i1 %729, label %730, label %731

730:                                              ; preds = %724
  store i32 2, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %739

731:                                              ; preds = %724
  %732 = load ptr, ptr %9, align 8, !tbaa !5
  %733 = load i32, ptr %732, align 4, !tbaa !9
  %734 = and i32 %733, -134217729
  %735 = or i32 %734, 134217728
  %736 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %735, ptr %736, align 4, !tbaa !9
  br label %737

737:                                              ; preds = %731
  br label %738

738:                                              ; preds = %737, %719
  store i32 0, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %739

739:                                              ; preds = %738, %730, %557, %549, %488, %480, %259, %205, %181, %171, %155, %147, %146, %123, %111, %110, %89, %72, %64, %63
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #2
  %740 = load i32, ptr %5, align 4
  ret i32 %740
}

; 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

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 = { 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 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}


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

; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable
define dso_local range(i32 0, 33) i32 @sgl_fmpy(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef writeonly %2, ptr nocapture noundef %3) local_unnamed_addr #0 {
  %5 = load i32, ptr %0, align 4, !tbaa !5
  %6 = load i32, ptr %1, align 4, !tbaa !5
  %7 = xor i32 %6, %5
  %.not = icmp sgt i32 %7, -1
  %. = and i32 %7, -2147483648
  %8 = lshr i32 %5, 23
  %9 = and i32 %8, 255
  %10 = icmp eq i32 %9, 255
  br i1 %10, label %11, label %48

11:                                               ; preds = %4
  %12 = and i32 %5, 8388607
  %13 = icmp eq i32 %12, 0
  br i1 %13, label %14, label %28

14:                                               ; preds = %11
  %15 = and i32 %6, 2139095040
  %.not262 = icmp ne i32 %15, 2139095040
  %16 = and i32 %6, 8388607
  %17 = icmp eq i32 %16, 0
  %or.cond300 = or i1 %.not262, %17
  br i1 %or.cond300, label %18, label %.thread.thread

18:                                               ; preds = %14
  %19 = and i32 %6, 2147483647
  %20 = icmp eq i32 %19, 0
  br i1 %20, label %21, label %26

21:                                               ; preds = %18
  %22 = load i32, ptr %3, align 4, !tbaa !5
  %23 = and i32 %22, 16
  %.not298 = icmp eq i32 %23, 0
  br i1 %.not298, label %24, label %324

24:                                               ; preds = %21
  %25 = or i32 %22, -2147483648
  store i32 %25, ptr %3, align 4, !tbaa !5
  store i32 2141192192, ptr %2, align 4, !tbaa !5
  br label %324

26:                                               ; preds = %18
  %27 = or disjoint i32 %., 2139095040
  store i32 %27, ptr %2, align 4, !tbaa !5
  br label %324

28:                                               ; preds = %11
  %29 = and i32 %5, 4194304
  %.not259 = icmp eq i32 %29, 0
  br i1 %.not259, label %37, label %30

30:                                               ; preds = %28
  %31 = load i32, ptr %3, align 4, !tbaa !5
  %32 = and i32 %31, 16
  %.not261 = icmp eq i32 %32, 0
  br i1 %.not261, label %33, label %324

33:                                               ; preds = %30
  %34 = or i32 %31, -2147483648
  store i32 %34, ptr %3, align 4, !tbaa !5
  %35 = and i32 %5, -6291457
  %36 = or disjoint i32 %35, 2097152
  br label %47

37:                                               ; preds = %28
  %38 = and i32 %6, 2143289344
  %39 = icmp eq i32 %38, 2143289344
  br i1 %39, label %40, label %47

40:                                               ; preds = %37
  %41 = load i32, ptr %3, align 4, !tbaa !5
  %42 = and i32 %41, 16
  %.not260 = icmp eq i32 %42, 0
  br i1 %.not260, label %43, label %324

43:                                               ; preds = %40
  %44 = or i32 %41, -2147483648
  store i32 %44, ptr %3, align 4, !tbaa !5
  %45 = and i32 %6, -6291457
  %46 = or disjoint i32 %45, 2097152
  store i32 %46, ptr %2, align 4, !tbaa !5
  br label %324

47:                                               ; preds = %37, %33
  %.0249 = phi i32 [ %36, %33 ], [ %5, %37 ]
  store i32 %.0249, ptr %2, align 4, !tbaa !5
  br label %324

48:                                               ; preds = %4
  %49 = lshr i32 %6, 23
  %50 = and i32 %49, 255
  %51 = icmp eq i32 %50, 255
  br i1 %51, label %.thread, label %72

.thread:                                          ; preds = %48
  %.pre398 = and i32 %6, 8388607
  %52 = icmp eq i32 %.pre398, 0
  br i1 %52, label %53, label %.thread.thread

53:                                               ; preds = %.thread
  %54 = and i32 %5, 2147483647
  %55 = icmp eq i32 %54, 0
  br i1 %55, label %56, label %61

56:                                               ; preds = %53
  %57 = load i32, ptr %3, align 4, !tbaa !5
  %58 = and i32 %57, 16
  %.not297 = icmp eq i32 %58, 0
  br i1 %.not297, label %59, label %324

59:                                               ; preds = %56
  %60 = or i32 %57, -2147483648
  store i32 %60, ptr %3, align 4, !tbaa !5
  store i32 2141192192, ptr %2, align 4, !tbaa !5
  br label %324

61:                                               ; preds = %53
  %62 = or disjoint i32 %., 2139095040
  store i32 %62, ptr %2, align 4, !tbaa !5
  br label %324

.thread.thread:                                   ; preds = %14, %.thread
  %63 = and i32 %6, 4194304
  %.not295 = icmp eq i32 %63, 0
  br i1 %.not295, label %71, label %64

64:                                               ; preds = %.thread.thread
  %65 = load i32, ptr %3, align 4, !tbaa !5
  %66 = and i32 %65, 16
  %.not296 = icmp eq i32 %66, 0
  br i1 %.not296, label %67, label %324

67:                                               ; preds = %64
  %68 = or i32 %65, -2147483648
  store i32 %68, ptr %3, align 4, !tbaa !5
  %69 = and i32 %6, -6291457
  %70 = or disjoint i32 %69, 2097152
  br label %71

71:                                               ; preds = %67, %.thread.thread
  %.0244 = phi i32 [ %70, %67 ], [ %6, %.thread.thread ]
  store i32 %.0244, ptr %2, align 4, !tbaa !5
  br label %324

72:                                               ; preds = %48
  %73 = add nsw i32 %9, -127
  %74 = add nsw i32 %73, %50
  %.not263 = icmp eq i32 %9, 0
  br i1 %.not263, label %77, label %75

75:                                               ; preds = %72
  %76 = or i32 %5, 8388608
  br label %.loopexit352

77:                                               ; preds = %72
  %78 = and i32 %5, 8388607
  %79 = icmp eq i32 %78, 0
  br i1 %79, label %80, label %81

80:                                               ; preds = %77
  store i32 %., ptr %2, align 4, !tbaa !5
  br label %324

81:                                               ; preds = %77
  %82 = shl nuw nsw i32 %78, 1
  %83 = icmp ult i32 %78, 32768
  br i1 %83, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %81, %.lr.ph
  %.0227354 = phi i32 [ %85, %.lr.ph ], [ %74, %81 ]
  %.1250353 = phi i32 [ %84, %.lr.ph ], [ %82, %81 ]
  %84 = shl i32 %.1250353, 8
  %85 = add nsw i32 %.0227354, -8
  %86 = and i32 %.1250353, 65280
  %87 = icmp eq i32 %86, 0
  br i1 %87, label %.lr.ph, label %._crit_edge, !llvm.loop !9

._crit_edge:                                      ; preds = %.lr.ph, %81
  %.1250.lcssa = phi i32 [ %82, %81 ], [ %84, %.lr.ph ]
  %.0227.lcssa = phi i32 [ %74, %81 ], [ %85, %.lr.ph ]
  %88 = and i32 %.1250.lcssa, 15728640
  %89 = icmp eq i32 %88, 0
  %90 = shl i32 %.1250.lcssa, 4
  %91 = add nsw i32 %.0227.lcssa, -4
  %.2251 = select i1 %89, i32 %90, i32 %.1250.lcssa
  %.1228 = select i1 %89, i32 %91, i32 %.0227.lcssa
  %92 = and i32 %.2251, 8388608
  %93 = icmp eq i32 %92, 0
  br i1 %93, label %.lr.ph359.preheader, label %.loopexit352

.lr.ph359.preheader:                              ; preds = %._crit_edge
  %.2251.masked = and i32 %.2251, 8388606
  %.2251.masked.numleadingzeros = tail call range(i32 9, 33) i32 @llvm.ctlz.i32(i32 %.2251.masked, i1 true)
  %.2251.masked.leadingonepos = xor i32 %.2251.masked.numleadingzeros, 31
  %.lr.ph359.tripcount = sub nuw nsw i32 23, %.2251.masked.leadingonepos
  %94 = shl i32 %.2251, %.lr.ph359.tripcount
  %95 = add nsw i32 %.1228, 8
  %96 = sub i32 %95, %.2251.masked.numleadingzeros
  br label %.loopexit352

.loopexit352:                                     ; preds = %.lr.ph359.preheader, %._crit_edge, %75
  %.4253 = phi i32 [ %76, %75 ], [ %.2251, %._crit_edge ], [ %94, %.lr.ph359.preheader ]
  %.3230 = phi i32 [ %74, %75 ], [ %.1228, %._crit_edge ], [ %96, %.lr.ph359.preheader ]
  %.not264 = icmp eq i32 %50, 0
  %97 = and i32 %6, 8388607
  br i1 %.not264, label %100, label %98

98:                                               ; preds = %.loopexit352
  %99 = or disjoint i32 %97, 8388608
  br label %.loopexit

100:                                              ; preds = %.loopexit352
  %101 = icmp eq i32 %97, 0
  br i1 %101, label %102, label %103

102:                                              ; preds = %100
  store i32 %., ptr %2, align 4, !tbaa !5
  br label %324

103:                                              ; preds = %100
  %104 = shl nuw nsw i32 %97, 1
  %105 = icmp ult i32 %97, 32768
  br i1 %105, label %.lr.ph365, label %._crit_edge366

.lr.ph365:                                        ; preds = %103, %.lr.ph365
  %.4363 = phi i32 [ %107, %.lr.ph365 ], [ %.3230, %103 ]
  %.1245362 = phi i32 [ %106, %.lr.ph365 ], [ %104, %103 ]
  %106 = shl i32 %.1245362, 8
  %107 = add nsw i32 %.4363, -8
  %108 = and i32 %.1245362, 65280
  %109 = icmp eq i32 %108, 0
  br i1 %109, label %.lr.ph365, label %._crit_edge366, !llvm.loop !11

._crit_edge366:                                   ; preds = %.lr.ph365, %103
  %.1245.lcssa = phi i32 [ %104, %103 ], [ %106, %.lr.ph365 ]
  %.4.lcssa = phi i32 [ %.3230, %103 ], [ %107, %.lr.ph365 ]
  %110 = and i32 %.1245.lcssa, 15728640
  %111 = icmp eq i32 %110, 0
  %112 = shl i32 %.1245.lcssa, 4
  %113 = add nsw i32 %.4.lcssa, -4
  %.2246 = select i1 %111, i32 %112, i32 %.1245.lcssa
  %.5 = select i1 %111, i32 %113, i32 %.4.lcssa
  %114 = and i32 %.2246, 8388608
  %115 = icmp eq i32 %114, 0
  br i1 %115, label %.lr.ph372.preheader, label %.loopexit

.lr.ph372.preheader:                              ; preds = %._crit_edge366
  %.2246.masked = and i32 %.2246, 8388606
  %.2246.masked.numleadingzeros = tail call range(i32 9, 33) i32 @llvm.ctlz.i32(i32 %.2246.masked, i1 true)
  %.2246.masked.leadingonepos = xor i32 %.2246.masked.numleadingzeros, 31
  %.lr.ph372.tripcount = sub nuw nsw i32 23, %.2246.masked.leadingonepos
  %116 = shl i32 %.2246, %.lr.ph372.tripcount
  %117 = add i32 %.5, 8
  %118 = sub i32 %117, %.2246.masked.numleadingzeros
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph372.preheader, %._crit_edge366, %98
  %.4248 = phi i32 [ %99, %98 ], [ %.2246, %._crit_edge366 ], [ %116, %.lr.ph372.preheader ]
  %.7 = phi i32 [ %.3230, %98 ], [ %.5, %._crit_edge366 ], [ %118, %.lr.ph372.preheader ]
  %119 = shl i32 %.4248, 4
  %120 = shl i32 %.4248, 7
  %121 = shl i32 %.4248, 6
  %122 = shl i32 %.4248, 5
  %123 = and i32 %.4253, 8
  %.not291 = icmp eq i32 %123, 0
  %124 = select i1 %.not291, i32 0, i32 %120
  %125 = and i32 %.4253, 4
  %.not292 = icmp eq i32 %125, 0
  %126 = select i1 %.not292, i32 0, i32 %121
  %.2235 = add i32 %124, %126
  %127 = and i32 %.4253, 2
  %.not293 = icmp eq i32 %127, 0
  %128 = select i1 %.not293, i32 0, i32 %122
  %.3236 = add i32 %.2235, %128
  %129 = and i32 %.4253, 1
  %.not294 = icmp eq i32 %129, 0
  %130 = select i1 %.not294, i32 0, i32 %119
  %.4237 = add i32 %.3236, %130
  %131 = lshr exact i32 %.4237, 4
  %132 = and i32 %.4253, 128
  %.not291.1 = icmp eq i32 %132, 0
  %133 = select i1 %.not291.1, i32 0, i32 %120
  %.1234.1 = add i32 %133, %131
  %134 = and i32 %.4253, 64
  %.not292.1 = icmp eq i32 %134, 0
  %135 = select i1 %.not292.1, i32 0, i32 %121
  %.2235.1 = add i32 %.1234.1, %135
  %136 = and i32 %.4253, 32
  %.not293.1 = icmp eq i32 %136, 0
  %137 = select i1 %.not293.1, i32 0, i32 %122
  %.3236.1 = add i32 %.2235.1, %137
  %138 = and i32 %.4253, 16
  %.not294.1 = icmp eq i32 %138, 0
  %139 = select i1 %.not294.1, i32 0, i32 %119
  %.4237.1 = add i32 %.3236.1, %139
  %140 = lshr i32 %.4237.1, 4
  %141 = insertelement <16 x i32> poison, i32 %.4253, i64 0
  %142 = shufflevector <16 x i32> %141, <16 x i32> poison, <16 x i32> zeroinitializer
  %143 = and <16 x i32> %142, <i32 1048576, i32 2097152, i32 4194304, i32 8388608, i32 65536, i32 131072, i32 262144, i32 524288, i32 4096, i32 8192, i32 16384, i32 32768, i32 256, i32 512, i32 1024, i32 2048>
  %144 = or i32 %131, %140
  %145 = icmp eq <16 x i32> %143, zeroinitializer
  %146 = extractelement <16 x i1> %145, i64 15
  %147 = select i1 %146, i32 0, i32 %120
  %.1234.2 = add i32 %147, %140
  %148 = extractelement <16 x i1> %145, i64 14
  %149 = select i1 %148, i32 0, i32 %121
  %.2235.2 = add i32 %.1234.2, %149
  %150 = extractelement <16 x i1> %145, i64 13
  %151 = select i1 %150, i32 0, i32 %122
  %.3236.2 = add i32 %.2235.2, %151
  %152 = extractelement <16 x i1> %145, i64 12
  %153 = select i1 %152, i32 0, i32 %119
  %.4237.2 = add i32 %.3236.2, %153
  %154 = lshr i32 %.4237.2, 4
  %155 = extractelement <16 x i1> %145, i64 11
  %156 = select i1 %155, i32 0, i32 %120
  %.1234.3 = add i32 %156, %154
  %157 = extractelement <16 x i1> %145, i64 10
  %158 = select i1 %157, i32 0, i32 %121
  %.2235.3 = add i32 %.1234.3, %158
  %159 = extractelement <16 x i1> %145, i64 9
  %160 = select i1 %159, i32 0, i32 %122
  %.3236.3 = add i32 %.2235.3, %160
  %161 = extractelement <16 x i1> %145, i64 8
  %162 = select i1 %161, i32 0, i32 %119
  %.4237.3 = add i32 %.3236.3, %162
  %163 = or i32 %144, %154
  %164 = lshr i32 %.4237.3, 4
  %165 = extractelement <16 x i1> %145, i64 7
  %166 = select i1 %165, i32 0, i32 %120
  %.1234.4 = add i32 %166, %164
  %167 = extractelement <16 x i1> %145, i64 6
  %168 = select i1 %167, i32 0, i32 %121
  %.2235.4 = add i32 %.1234.4, %168
  %169 = extractelement <16 x i1> %145, i64 5
  %170 = select i1 %169, i32 0, i32 %122
  %.3236.4 = add i32 %.2235.4, %170
  %171 = extractelement <16 x i1> %145, i64 4
  %172 = select i1 %171, i32 0, i32 %119
  %.4237.4 = add i32 %.3236.4, %172
  %173 = or i32 %163, %164
  %174 = and i32 %173, 15
  %175 = lshr i32 %.4237.4, 4
  %176 = extractelement <16 x i1> %145, i64 3
  %177 = select i1 %176, i32 0, i32 %120
  %.1234.5 = add i32 %177, %175
  %178 = extractelement <16 x i1> %145, i64 2
  %179 = select i1 %178, i32 0, i32 %121
  %.2235.5 = add i32 %.1234.5, %179
  %180 = extractelement <16 x i1> %145, i64 1
  %181 = select i1 %180, i32 0, i32 %122
  %.3236.5 = add i32 %.2235.5, %181
  %182 = extractelement <16 x i1> %145, i64 0
  %183 = select i1 %182, i32 0, i32 %119
  %.4237.5 = add i32 %.3236.5, %183
  %184 = icmp sgt i32 %.4237.5, -1
  %185 = zext i1 %184 to i32
  %.5238 = shl nuw i32 %.4237.5, %185
  %not. = xor i1 %184, true
  %186 = zext i1 %not. to i32
  %.8 = add nsw i32 %.7, %186
  %187 = icmp sgt i32 %.5238, -1
  br i1 %187, label %.lr.ph382, label %._crit_edge383

.lr.ph382:                                        ; preds = %.loopexit, %.lr.ph382
  %.9380 = phi i32 [ %189, %.lr.ph382 ], [ %.8, %.loopexit ]
  %.6239379 = phi i32 [ %188, %.lr.ph382 ], [ %.5238, %.loopexit ]
  %188 = shl nuw i32 %.6239379, 1
  %189 = add nsw i32 %.9380, -1
  %190 = icmp sgt i32 %188, -1
  br i1 %190, label %.lr.ph382, label %._crit_edge383, !llvm.loop !12

._crit_edge383:                                   ; preds = %.lr.ph382, %.loopexit
  %.6239.lcssa = phi i32 [ %.5238, %.loopexit ], [ %188, %.lr.ph382 ]
  %.9.lcssa = phi i32 [ %.8, %.loopexit ], [ %189, %.lr.ph382 ]
  %191 = shl i32 %.6239.lcssa, 25
  %192 = or disjoint i32 %191, %174
  %193 = lshr i32 %.6239.lcssa, 7
  %194 = and i32 %193, 1
  %195 = or i32 %194, %192
  %196 = lshr i32 %.6239.lcssa, 8
  %197 = icmp ne i32 %195, 0
  br i1 %197, label %198, label %216

198:                                              ; preds = %._crit_edge383
  %199 = icmp slt i32 %.9.lcssa, 1
  %.pre = load i32, ptr %3, align 4, !tbaa !5
  %200 = and i32 %.pre, 2
  %.not265 = icmp eq i32 %200, 0
  %or.cond406 = select i1 %199, i1 %.not265, i1 false
  %201 = and i32 %196, 8388607
  br i1 %or.cond406, label %.thread322, label %203

.thread322:                                       ; preds = %198
  %202 = or disjoint i32 %201, %.
  br label %245

203:                                              ; preds = %198
  %204 = lshr i32 %.pre, 9
  %205 = and i32 %204, 3
  switch i32 %205, label %default.unreachable399 [
    i32 2, label %206
    i32 3, label %208
    i32 0, label %209
    i32 1, label %214
  ]

206:                                              ; preds = %203
  %207 = zext i1 %.not to i32
  %spec.select = add nuw nsw i32 %201, %207
  br label %214

208:                                              ; preds = %203
  %.lobit = lshr i32 %7, 31
  %spec.select301 = add nuw nsw i32 %201, %.lobit
  br label %214

209:                                              ; preds = %203
  %.not266 = icmp eq i32 %194, 0
  br i1 %.not266, label %214, label %210

210:                                              ; preds = %209
  %211 = and i32 %.6239.lcssa, 256
  %212 = or disjoint i32 %192, %211
  %or.cond302 = icmp ne i32 %212, 0
  %213 = zext i1 %or.cond302 to i32
  %spec.select313 = add nuw nsw i32 %201, %213
  br label %214

default.unreachable399:                           ; preds = %299, %262, %233, %203
  unreachable

214:                                              ; preds = %210, %208, %206, %209, %203
  %.7240 = phi i32 [ %201, %203 ], [ %201, %209 ], [ %spec.select, %206 ], [ %spec.select301, %208 ], [ %spec.select313, %210 ]
  %215 = lshr i32 %.7240, 23
  %spec.select303 = add i32 %215, %.9.lcssa
  br label %216

216:                                              ; preds = %214, %._crit_edge383
  %.8241 = phi i32 [ %196, %._crit_edge383 ], [ %.7240, %214 ]
  %.10 = phi i32 [ %.9.lcssa, %._crit_edge383 ], [ %spec.select303, %214 ]
  %217 = and i32 %.8241, 8388607
  %218 = or disjoint i32 %217, %.
  %219 = icmp sgt i32 %.10, 254
  br i1 %219, label %220, label %243

220:                                              ; preds = %216
  %221 = load i32, ptr %3, align 4, !tbaa !5
  %222 = and i32 %221, 4
  %.not286 = icmp eq i32 %222, 0
  br i1 %.not286, label %233, label %223

223:                                              ; preds = %220
  %224 = shl i32 %.10, 23
  %225 = add i32 %224, 536870912
  %226 = and i32 %225, 2139095040
  %227 = or disjoint i32 %226, %218
  store i32 %227, ptr %2, align 4, !tbaa !5
  br i1 %197, label %228, label %324

228:                                              ; preds = %223
  %229 = load i32, ptr %3, align 4, !tbaa !5
  %230 = and i32 %229, 1
  %.not290 = icmp eq i32 %230, 0
  br i1 %.not290, label %231, label %324

231:                                              ; preds = %228
  %232 = or i32 %229, 134217728
  store i32 %232, ptr %3, align 4, !tbaa !5
  br label %324

233:                                              ; preds = %220
  %234 = or i32 %221, 536870912
  store i32 %234, ptr %3, align 4, !tbaa !5
  %235 = lshr i32 %221, 9
  %236 = and i32 %235, 3
  switch i32 %236, label %default.unreachable399 [
    i32 2, label %237
    i32 3, label %238
    i32 0, label %239
    i32 1, label %241
  ]

237:                                              ; preds = %233
  %.304 = select i1 %.not, i32 2139095040, i32 -8388609
  br label %.thread345

238:                                              ; preds = %233
  %.305 = select i1 %.not, i32 2139095039, i32 -8388608
  br label %.thread345

239:                                              ; preds = %233
  %240 = or disjoint i32 %., 2139095040
  br label %.thread345

241:                                              ; preds = %233
  %242 = or disjoint i32 %., 2139095039
  br label %.thread345

243:                                              ; preds = %216
  %244 = icmp slt i32 %.10, 1
  br i1 %244, label %._crit_edge396, label %315

._crit_edge396:                                   ; preds = %243
  %.pre397 = load i32, ptr %3, align 4, !tbaa !5
  br label %245

245:                                              ; preds = %._crit_edge396, %.thread322
  %246 = phi i32 [ %.pre, %.thread322 ], [ %.pre397, %._crit_edge396 ]
  %.8241320326 = phi i32 [ %196, %.thread322 ], [ %.8241, %._crit_edge396 ]
  %.10321325 = phi i32 [ %.9.lcssa, %.thread322 ], [ %.10, %._crit_edge396 ]
  %247 = phi i32 [ %201, %.thread322 ], [ %217, %._crit_edge396 ]
  %248 = phi i32 [ %202, %.thread322 ], [ %218, %._crit_edge396 ]
  %249 = and i32 %246, 2
  %.not271 = icmp eq i32 %249, 0
  br i1 %.not271, label %260, label %250

250:                                              ; preds = %245
  %251 = shl i32 %.10321325, 23
  %252 = add i32 %251, 1610612736
  %253 = and i32 %252, 2139095040
  %254 = or disjoint i32 %253, %248
  store i32 %254, ptr %2, align 4, !tbaa !5
  br i1 %197, label %255, label %324

255:                                              ; preds = %250
  %256 = load i32, ptr %3, align 4, !tbaa !5
  %257 = and i32 %256, 1
  %.not285 = icmp eq i32 %257, 0
  br i1 %.not285, label %258, label %324

258:                                              ; preds = %255
  %259 = or i32 %256, 134217728
  store i32 %259, ptr %3, align 4, !tbaa !5
  br label %324

260:                                              ; preds = %245
  %261 = icmp eq i32 %.10321325, 0
  %or.cond = and i1 %197, %261
  br i1 %or.cond, label %262, label %281

262:                                              ; preds = %260
  %263 = lshr i32 %246, 9
  %264 = and i32 %263, 3
  switch i32 %264, label %default.unreachable399 [
    i32 2, label %265
    i32 3, label %269
    i32 0, label %273
    i32 1, label %.thread327
  ]

265:                                              ; preds = %262
  br i1 %.not, label %266, label %.thread327

266:                                              ; preds = %265
  %267 = add nuw nsw i32 %.8241320326, 1
  %268 = lshr i32 %267, 24
  %spec.select306 = xor i32 %268, 1
  br label %.thread327

269:                                              ; preds = %262
  br i1 %.not, label %.thread327, label %270

270:                                              ; preds = %269
  %271 = add nuw nsw i32 %.8241320326, 1
  %272 = lshr i32 %271, 24
  %spec.select307 = xor i32 %272, 1
  br label %.thread327

273:                                              ; preds = %262
  %.not272 = icmp eq i32 %194, 0
  br i1 %.not272, label %.thread327, label %274

274:                                              ; preds = %273
  %275 = and i32 %.8241320326, 1
  %276 = or i32 %275, %192
  %or.cond308 = icmp eq i32 %276, 0
  br i1 %or.cond308, label %.thread327, label %277

277:                                              ; preds = %274
  %278 = add nuw nsw i32 %.8241320326, 1
  %279 = lshr i32 %278, 24
  %spec.select309 = xor i32 %279, 1
  br label %.thread327

.thread327:                                       ; preds = %274, %262, %266, %265, %270, %269, %277, %273
  %.3.ph = phi i32 [ 1, %274 ], [ 1, %265 ], [ %spec.select306, %266 ], [ 1, %269 ], [ %spec.select307, %270 ], [ 1, %273 ], [ %spec.select309, %277 ], [ %264, %262 ]
  %280 = or disjoint i32 %247, 8388608
  br label %285

281:                                              ; preds = %260
  %282 = or disjoint i32 %247, 8388608
  %283 = icmp sgt i32 %.10321325, -24
  br i1 %283, label %285, label %.thread331

.thread331:                                       ; preds = %281
  %284 = or i32 %282, %195
  br label %299

285:                                              ; preds = %281, %.thread327
  %286 = phi i32 [ %280, %.thread327 ], [ %282, %281 ]
  %.3330 = phi i32 [ %.3.ph, %.thread327 ], [ 1, %281 ]
  %287 = sub nsw i32 0, %.10321325
  %288 = lshr i32 %286, %287
  %289 = and i32 %288, 1
  %290 = icmp slt i32 %.10321325, 0
  %291 = add nsw i32 %.10321325, 32
  %292 = shl i32 %286, %291
  %293 = select i1 %290, i32 %292, i32 0
  %.1221 = or i32 %293, %195
  %294 = or i32 %.1221, %289
  %295 = sub nsw i32 1, %.10321325
  %296 = lshr i32 %286, %295
  %297 = icmp eq i32 %289, 0
  %298 = icmp eq i32 %.1221, 0
  %.not279 = icmp eq i32 %294, 0
  br i1 %.not279, label %313, label %299

299:                                              ; preds = %.thread331, %285
  %.2222343 = phi i1 [ false, %.thread331 ], [ %298, %285 ]
  %.0223342 = phi i1 [ true, %.thread331 ], [ %297, %285 ]
  %.0224340 = phi i32 [ %284, %.thread331 ], [ %294, %285 ]
  %.10243339 = phi i32 [ 0, %.thread331 ], [ %296, %285 ]
  %.3329338 = phi i32 [ 1, %.thread331 ], [ %.3330, %285 ]
  %300 = lshr i32 %246, 9
  %301 = and i32 %300, 3
  switch i32 %301, label %default.unreachable399 [
    i32 2, label %302
    i32 3, label %304
    i32 0, label %306
    i32 1, label %310
  ]

302:                                              ; preds = %299
  %303 = zext i1 %.not to i32
  %spec.select310 = add nuw nsw i32 %.10243339, %303
  br label %310

304:                                              ; preds = %299
  %not..not = xor i1 %.not, true
  %305 = zext i1 %not..not to i32
  %spec.select311 = add nuw nsw i32 %.10243339, %305
  br label %310

306:                                              ; preds = %299
  br i1 %.0223342, label %310, label %307

307:                                              ; preds = %306
  %308 = and i32 %.10243339, 1
  %.not282 = icmp ne i32 %308, 0
  %not..2222343 = xor i1 %.2222343, true
  %or.cond312 = select i1 %not..2222343, i1 true, i1 %.not282
  %309 = zext i1 %or.cond312 to i32
  %spec.select314 = add nuw nsw i32 %.10243339, %309
  br label %310

310:                                              ; preds = %307, %304, %302, %306, %299
  %.11 = phi i32 [ %.10243339, %299 ], [ %.10243339, %306 ], [ %spec.select310, %302 ], [ %spec.select311, %304 ], [ %spec.select314, %307 ]
  %.not284 = icmp eq i32 %.3329338, 0
  br i1 %.not284, label %313, label %311

311:                                              ; preds = %310
  %312 = or i32 %246, 268435456
  store i32 %312, ptr %3, align 4, !tbaa !5
  br label %313

313:                                              ; preds = %310, %311, %285
  %.0224341 = phi i32 [ %.0224340, %311 ], [ %.0224340, %310 ], [ 0, %285 ]
  %.12 = phi i32 [ %.11, %311 ], [ %.11, %310 ], [ %296, %285 ]
  %314 = or disjoint i32 %.12, %.
  br label %318

315:                                              ; preds = %243
  %316 = shl nuw nsw i32 %.10, 23
  %317 = or disjoint i32 %218, %316
  br label %318

.thread345:                                       ; preds = %241, %239, %237, %238
  %.1232.ph = phi i32 [ %.305, %238 ], [ %.304, %237 ], [ %240, %239 ], [ %242, %241 ]
  store i32 %.1232.ph, ptr %2, align 4, !tbaa !5
  br label %319

318:                                              ; preds = %313, %315
  %.1232 = phi i32 [ %314, %313 ], [ %317, %315 ]
  %.1225 = phi i32 [ %.0224341, %313 ], [ %195, %315 ]
  store i32 %.1232, ptr %2, align 4, !tbaa !5
  %.not288 = icmp eq i32 %.1225, 0
  br i1 %.not288, label %324, label %319

319:                                              ; preds = %.thread345, %318
  %320 = load i32, ptr %3, align 4, !tbaa !5
  %321 = and i32 %320, 1
  %.not289 = icmp eq i32 %321, 0
  br i1 %.not289, label %322, label %324

322:                                              ; preds = %319
  %323 = or i32 %320, 134217728
  store i32 %323, ptr %3, align 4, !tbaa !5
  br label %324

324:                                              ; preds = %318, %322, %319, %250, %258, %255, %223, %231, %228, %64, %56, %40, %30, %21, %102, %80, %71, %61, %59, %47, %43, %26, %24
  %.0255 = phi i32 [ 0, %24 ], [ 0, %26 ], [ 0, %59 ], [ 0, %61 ], [ 0, %71 ], [ 0, %102 ], [ 0, %80 ], [ 0, %47 ], [ 0, %43 ], [ 32, %21 ], [ 32, %30 ], [ 32, %40 ], [ 32, %56 ], [ 32, %64 ], [ 10, %228 ], [ 8, %231 ], [ 8, %223 ], [ 6, %255 ], [ 4, %258 ], [ 4, %250 ], [ 2, %319 ], [ 0, %322 ], [ 0, %318 ]
  ret i32 %.0255
}

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

attributes #0 = { nofree norecurse nosync nounwind memory(argmem: readwrite) 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 speculatable willreturn memory(none) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = distinct !{!11, !10}
!12 = distinct !{!12, !10}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass