; LLVM IR from eclipse-threadx/threadx :: ports_arch/ARMv7-M/threadx_modules/common/module_manager/src/txm_module_manager_bc398928 (adjust)

; 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.TXM_MODULE_PREAMBLE_STRUCT = type { i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64 }

; Function Attrs: nounwind uwtable
declare dso_local i64 @_txm_power_of_two_block_size(i64 noundef) #0

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

32:                                               ; preds = %5
  %33 = load i64, ptr %11, align 8, !tbaa !9
  %34 = icmp ule i64 %33, 96
  br i1 %34, label %35, label %36

35:                                               ; preds = %32
  store i64 32, ptr %15, align 8, !tbaa !9
  br label %122

36:                                               ; preds = %32
  %37 = load i64, ptr %11, align 8, !tbaa !9
  %38 = icmp ule i64 %37, 192
  br i1 %38, label %39, label %40

39:                                               ; preds = %36
  store i64 64, ptr %15, align 8, !tbaa !9
  br label %121

40:                                               ; preds = %36
  %41 = load i64, ptr %11, align 8, !tbaa !9
  %42 = icmp ule i64 %41, 384
  br i1 %42, label %43, label %44

43:                                               ; preds = %40
  store i64 128, ptr %15, align 8, !tbaa !9
  br label %120

44:                                               ; preds = %40
  %45 = load i64, ptr %11, align 8, !tbaa !9
  %46 = icmp ule i64 %45, 768
  br i1 %46, label %47, label %48

47:                                               ; preds = %44
  store i64 256, ptr %15, align 8, !tbaa !9
  br label %119

48:                                               ; preds = %44
  %49 = load i64, ptr %11, align 8, !tbaa !9
  %50 = icmp ule i64 %49, 1536
  br i1 %50, label %51, label %52

51:                                               ; preds = %48
  store i64 512, ptr %15, align 8, !tbaa !9
  br label %118

52:                                               ; preds = %48
  %53 = load i64, ptr %11, align 8, !tbaa !9
  %54 = icmp ule i64 %53, 3072
  br i1 %54, label %55, label %56

55:                                               ; preds = %52
  store i64 1024, ptr %15, align 8, !tbaa !9
  br label %117

56:                                               ; preds = %52
  %57 = load i64, ptr %11, align 8, !tbaa !9
  %58 = icmp ule i64 %57, 6144
  br i1 %58, label %59, label %60

59:                                               ; preds = %56
  store i64 2048, ptr %15, align 8, !tbaa !9
  br label %116

60:                                               ; preds = %56
  %61 = load i64, ptr %11, align 8, !tbaa !9
  %62 = icmp ule i64 %61, 12288
  br i1 %62, label %63, label %64

63:                                               ; preds = %60
  store i64 4096, ptr %15, align 8, !tbaa !9
  br label %115

64:                                               ; preds = %60
  %65 = load i64, ptr %11, align 8, !tbaa !9
  %66 = icmp ule i64 %65, 24576
  br i1 %66, label %67, label %68

67:                                               ; preds = %64
  store i64 8192, ptr %15, align 8, !tbaa !9
  br label %114

68:                                               ; preds = %64
  %69 = load i64, ptr %11, align 8, !tbaa !9
  %70 = icmp ule i64 %69, 49152
  br i1 %70, label %71, label %72

71:                                               ; preds = %68
  store i64 16384, ptr %15, align 8, !tbaa !9
  br label %113

72:                                               ; preds = %68
  %73 = load i64, ptr %11, align 8, !tbaa !9
  %74 = icmp ule i64 %73, 98304
  br i1 %74, label %75, label %76

75:                                               ; preds = %72
  store i64 32768, ptr %15, align 8, !tbaa !9
  br label %112

76:                                               ; preds = %72
  %77 = load i64, ptr %11, align 8, !tbaa !9
  %78 = icmp ule i64 %77, 196608
  br i1 %78, label %79, label %80

79:                                               ; preds = %76
  store i64 65536, ptr %15, align 8, !tbaa !9
  br label %111

80:                                               ; preds = %76
  %81 = load i64, ptr %11, align 8, !tbaa !9
  %82 = icmp ule i64 %81, 393216
  br i1 %82, label %83, label %84

83:                                               ; preds = %80
  store i64 131072, ptr %15, align 8, !tbaa !9
  br label %110

84:                                               ; preds = %80
  %85 = load i64, ptr %11, align 8, !tbaa !9
  %86 = icmp ule i64 %85, 786432
  br i1 %86, label %87, label %88

87:                                               ; preds = %84
  store i64 262144, ptr %15, align 8, !tbaa !9
  br label %109

88:                                               ; preds = %84
  %89 = load i64, ptr %11, align 8, !tbaa !9
  %90 = icmp ule i64 %89, 1572864
  br i1 %90, label %91, label %92

91:                                               ; preds = %88
  store i64 524288, ptr %15, align 8, !tbaa !9
  br label %108

92:                                               ; preds = %88
  %93 = load i64, ptr %11, align 8, !tbaa !9
  %94 = icmp ule i64 %93, 3145728
  br i1 %94, label %95, label %96

95:                                               ; preds = %92
  store i64 1048576, ptr %15, align 8, !tbaa !9
  br label %107

96:                                               ; preds = %92
  %97 = load i64, ptr %11, align 8, !tbaa !9
  %98 = icmp ule i64 %97, 6291456
  br i1 %98, label %99, label %100

99:                                               ; preds = %96
  store i64 2097152, ptr %15, align 8, !tbaa !9
  br label %106

100:                                              ; preds = %96
  %101 = load i64, ptr %11, align 8, !tbaa !9
  %102 = icmp ule i64 %101, 12582912
  br i1 %102, label %103, label %104

103:                                              ; preds = %100
  store i64 4194304, ptr %15, align 8, !tbaa !9
  br label %105

104:                                              ; preds = %100
  store i64 33554432, ptr %15, align 8, !tbaa !9
  br label %105

105:                                              ; preds = %104, %103
  br label %106

106:                                              ; preds = %105, %99
  br label %107

107:                                              ; preds = %106, %95
  br label %108

108:                                              ; preds = %107, %91
  br label %109

109:                                              ; preds = %108, %87
  br label %110

110:                                              ; preds = %109, %83
  br label %111

111:                                              ; preds = %110, %79
  br label %112

112:                                              ; preds = %111, %75
  br label %113

113:                                              ; preds = %112, %71
  br label %114

114:                                              ; preds = %113, %67
  br label %115

115:                                              ; preds = %114, %63
  br label %116

116:                                              ; preds = %115, %59
  br label %117

117:                                              ; preds = %116, %55
  br label %118

118:                                              ; preds = %117, %51
  br label %119

119:                                              ; preds = %118, %47
  br label %120

120:                                              ; preds = %119, %43
  br label %121

121:                                              ; preds = %120, %39
  br label %122

122:                                              ; preds = %121, %35
  %123 = load i64, ptr %15, align 8, !tbaa !9
  %124 = mul i64 %123, 3
  store i64 %124, ptr %11, align 8, !tbaa !9
  %125 = load i64, ptr %15, align 8, !tbaa !9
  %126 = load i64, ptr %12, align 8, !tbaa !9
  %127 = icmp ugt i64 %125, %126
  br i1 %127, label %128, label %130

128:                                              ; preds = %122
  %129 = load i64, ptr %15, align 8, !tbaa !9
  store i64 %129, ptr %12, align 8, !tbaa !9
  br label %130

130:                                              ; preds = %128, %122
  br label %152

131:                                              ; preds = %5
  %132 = load i64, ptr %11, align 8, !tbaa !9
  %133 = call i64 @_txm_power_of_two_block_size(i64 noundef %132)
  %134 = lshr i64 %133, 2
  store i64 %134, ptr %12, align 8, !tbaa !9
  %135 = load i64, ptr %12, align 8, !tbaa !9
  %136 = load i64, ptr %12, align 8, !tbaa !9
  %137 = add i64 %135, %136
  store i64 %137, ptr %17, align 8, !tbaa !9
  %138 = load i64, ptr %17, align 8, !tbaa !9
  %139 = load i64, ptr %11, align 8, !tbaa !9
  %140 = load i64, ptr %17, align 8, !tbaa !9
  %141 = sub i64 %139, %140
  %142 = call i64 @_txm_power_of_two_block_size(i64 noundef %141)
  %143 = lshr i64 %142, 1
  %144 = add i64 %138, %143
  store i64 %144, ptr %17, align 8, !tbaa !9
  %145 = load i64, ptr %17, align 8, !tbaa !9
  %146 = load i64, ptr %11, align 8, !tbaa !9
  %147 = load i64, ptr %17, align 8, !tbaa !9
  %148 = sub i64 %146, %147
  %149 = call i64 @_txm_power_of_two_block_size(i64 noundef %148)
  %150 = add i64 %145, %149
  store i64 %150, ptr %17, align 8, !tbaa !9
  %151 = load i64, ptr %17, align 8, !tbaa !9
  store i64 %151, ptr %11, align 8, !tbaa !9
  br label %152

152:                                              ; preds = %131, %130
  %153 = load i64, ptr %13, align 8, !tbaa !9
  %154 = icmp ule i64 %153, 96
  br i1 %154, label %155, label %156

155:                                              ; preds = %152
  store i64 32, ptr %16, align 8, !tbaa !9
  br label %242

156:                                              ; preds = %152
  %157 = load i64, ptr %13, align 8, !tbaa !9
  %158 = icmp ule i64 %157, 192
  br i1 %158, label %159, label %160

159:                                              ; preds = %156
  store i64 64, ptr %16, align 8, !tbaa !9
  br label %241

160:                                              ; preds = %156
  %161 = load i64, ptr %13, align 8, !tbaa !9
  %162 = icmp ule i64 %161, 384
  br i1 %162, label %163, label %164

163:                                              ; preds = %160
  store i64 128, ptr %16, align 8, !tbaa !9
  br label %240

164:                                              ; preds = %160
  %165 = load i64, ptr %13, align 8, !tbaa !9
  %166 = icmp ule i64 %165, 768
  br i1 %166, label %167, label %168

167:                                              ; preds = %164
  store i64 256, ptr %16, align 8, !tbaa !9
  br label %239

168:                                              ; preds = %164
  %169 = load i64, ptr %13, align 8, !tbaa !9
  %170 = icmp ule i64 %169, 1536
  br i1 %170, label %171, label %172

171:                                              ; preds = %168
  store i64 512, ptr %16, align 8, !tbaa !9
  br label %238

172:                                              ; preds = %168
  %173 = load i64, ptr %13, align 8, !tbaa !9
  %174 = icmp ule i64 %173, 3072
  br i1 %174, label %175, label %176

175:                                              ; preds = %172
  store i64 1024, ptr %16, align 8, !tbaa !9
  br label %237

176:                                              ; preds = %172
  %177 = load i64, ptr %13, align 8, !tbaa !9
  %178 = icmp ule i64 %177, 6144
  br i1 %178, label %179, label %180

179:                                              ; preds = %176
  store i64 2048, ptr %16, align 8, !tbaa !9
  br label %236

180:                                              ; preds = %176
  %181 = load i64, ptr %13, align 8, !tbaa !9
  %182 = icmp ule i64 %181, 12288
  br i1 %182, label %183, label %184

183:                                              ; preds = %180
  store i64 4096, ptr %16, align 8, !tbaa !9
  br label %235

184:                                              ; preds = %180
  %185 = load i64, ptr %13, align 8, !tbaa !9
  %186 = icmp ule i64 %185, 24576
  br i1 %186, label %187, label %188

187:                                              ; preds = %184
  store i64 8192, ptr %16, align 8, !tbaa !9
  br label %234

188:                                              ; preds = %184
  %189 = load i64, ptr %13, align 8, !tbaa !9
  %190 = icmp ule i64 %189, 49152
  br i1 %190, label %191, label %192

191:                                              ; preds = %188
  store i64 16384, ptr %16, align 8, !tbaa !9
  br label %233

192:                                              ; preds = %188
  %193 = load i64, ptr %13, align 8, !tbaa !9
  %194 = icmp ule i64 %193, 98304
  br i1 %194, label %195, label %196

195:                                              ; preds = %192
  store i64 32768, ptr %16, align 8, !tbaa !9
  br label %232

196:                                              ; preds = %192
  %197 = load i64, ptr %13, align 8, !tbaa !9
  %198 = icmp ule i64 %197, 196608
  br i1 %198, label %199, label %200

199:                                              ; preds = %196
  store i64 65536, ptr %16, align 8, !tbaa !9
  br label %231

200:                                              ; preds = %196
  %201 = load i64, ptr %13, align 8, !tbaa !9
  %202 = icmp ule i64 %201, 393216
  br i1 %202, label %203, label %204

203:                                              ; preds = %200
  store i64 131072, ptr %16, align 8, !tbaa !9
  br label %230

204:                                              ; preds = %200
  %205 = load i64, ptr %13, align 8, !tbaa !9
  %206 = icmp ule i64 %205, 786432
  br i1 %206, label %207, label %208

207:                                              ; preds = %204
  store i64 262144, ptr %16, align 8, !tbaa !9
  br label %229

208:                                              ; preds = %204
  %209 = load i64, ptr %13, align 8, !tbaa !9
  %210 = icmp ule i64 %209, 1572864
  br i1 %210, label %211, label %212

211:                                              ; preds = %208
  store i64 524288, ptr %16, align 8, !tbaa !9
  br label %228

212:                                              ; preds = %208
  %213 = load i64, ptr %13, align 8, !tbaa !9
  %214 = icmp ule i64 %213, 3145728
  br i1 %214, label %215, label %216

215:                                              ; preds = %212
  store i64 1048576, ptr %16, align 8, !tbaa !9
  br label %227

216:                                              ; preds = %212
  %217 = load i64, ptr %13, align 8, !tbaa !9
  %218 = icmp ule i64 %217, 6291456
  br i1 %218, label %219, label %220

219:                                              ; preds = %216
  store i64 2097152, ptr %16, align 8, !tbaa !9
  br label %226

220:                                              ; preds = %216
  %221 = load i64, ptr %13, align 8, !tbaa !9
  %222 = icmp ule i64 %221, 12582912
  br i1 %222, label %223, label %224

223:                                              ; preds = %220
  store i64 4194304, ptr %16, align 8, !tbaa !9
  br label %225

224:                                              ; preds = %220
  store i64 33554432, ptr %16, align 8, !tbaa !9
  br label %225

225:                                              ; preds = %224, %223
  br label %226

226:                                              ; preds = %225, %219
  br label %227

227:                                              ; preds = %226, %215
  br label %228

228:                                              ; preds = %227, %211
  br label %229

229:                                              ; preds = %228, %207
  br label %230

230:                                              ; preds = %229, %203
  br label %231

231:                                              ; preds = %230, %199
  br label %232

232:                                              ; preds = %231, %195
  br label %233

233:                                              ; preds = %232, %191
  br label %234

234:                                              ; preds = %233, %187
  br label %235

235:                                              ; preds = %234, %183
  br label %236

236:                                              ; preds = %235, %179
  br label %237

237:                                              ; preds = %236, %175
  br label %238

238:                                              ; preds = %237, %171
  br label %239

239:                                              ; preds = %238, %167
  br label %240

240:                                              ; preds = %239, %163
  br label %241

241:                                              ; preds = %240, %159
  br label %242

242:                                              ; preds = %241, %155
  %243 = load i64, ptr %16, align 8, !tbaa !9
  store i64 %243, ptr %18, align 8, !tbaa !9
  br label %244

244:                                              ; preds = %248, %242
  %245 = load i64, ptr %18, align 8, !tbaa !9
  %246 = load i64, ptr %13, align 8, !tbaa !9
  %247 = icmp ult i64 %245, %246
  br i1 %247, label %248, label %252

248:                                              ; preds = %244
  %249 = load i64, ptr %16, align 8, !tbaa !9
  %250 = load i64, ptr %18, align 8, !tbaa !9
  %251 = add i64 %250, %249
  store i64 %251, ptr %18, align 8, !tbaa !9
  br label %244, !llvm.loop !13

252:                                              ; preds = %244
  %253 = load i64, ptr %18, align 8, !tbaa !9
  store i64 %253, ptr %13, align 8, !tbaa !9
  %254 = load i64, ptr %16, align 8, !tbaa !9
  %255 = load i64, ptr %14, align 8, !tbaa !9
  %256 = icmp ugt i64 %254, %255
  br i1 %256, label %257, label %259

257:                                              ; preds = %252
  %258 = load i64, ptr %16, align 8, !tbaa !9
  store i64 %258, ptr %14, align 8, !tbaa !9
  br label %259

259:                                              ; preds = %257, %252
  %260 = load i64, ptr %11, align 8, !tbaa !9
  %261 = load ptr, ptr %7, align 8, !tbaa !5
  store i64 %260, ptr %261, align 8, !tbaa !9
  %262 = load i64, ptr %12, align 8, !tbaa !9
  %263 = load ptr, ptr %8, align 8, !tbaa !5
  store i64 %262, ptr %263, align 8, !tbaa !9
  %264 = load i64, ptr %13, align 8, !tbaa !9
  %265 = load ptr, ptr %9, align 8, !tbaa !5
  store i64 %264, ptr %265, align 8, !tbaa !9
  %266 = load i64, ptr %14, align 8, !tbaa !9
  %267 = load ptr, ptr %10, align 8, !tbaa !5
  store i64 %266, ptr %267, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #2
  ret void
}

; 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 = !{!"long", !7, i64 0}
!11 = !{!12, !10, i64 40}
!12 = !{!"TXM_MODULE_PREAMBLE_STRUCT", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !10, i64 112, !10, i64 120, !10, i64 128, !10, i64 136, !10, i64 144, !10, i64 152, !10, i64 160, !10, i64 168, !10, i64 176, !10, i64 184, !10, i64 192, !10, i64 200, !10, i64 208, !10, i64 216, !10, i64 224, !10, i64 232, !10, i64 240, !10, i64 248}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}


; 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: nounwind uwtable
declare dso_local i64 @_txm_power_of_two_block_size(i64 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local void @_txm_module_manager_alignment_adjust(ptr nocapture noundef readonly %0, ptr nocapture noundef %1, ptr nocapture noundef %2, ptr nocapture noundef %3, ptr nocapture noundef %4) local_unnamed_addr #0 {
  %6 = load i64, ptr %1, align 8, !tbaa !5
  %7 = load i64, ptr %2, align 8, !tbaa !5
  %8 = load i64, ptr %3, align 8, !tbaa !5
  %9 = load i64, ptr %4, align 8, !tbaa !5
  %10 = getelementptr inbounds i8, ptr %0, i64 40
  %11 = load i64, ptr %10, align 8, !tbaa !9
  %12 = and i64 %11, 4
  %.not = icmp eq i64 %12, 0
  br i1 %.not, label %51, label %13

13:                                               ; preds = %5
  %14 = icmp ult i64 %6, 97
  br i1 %14, label %49, label %15

15:                                               ; preds = %13
  %16 = icmp ult i64 %6, 193
  br i1 %16, label %49, label %17

17:                                               ; preds = %15
  %18 = icmp ult i64 %6, 385
  br i1 %18, label %49, label %19

19:                                               ; preds = %17
  %20 = icmp ult i64 %6, 769
  br i1 %20, label %49, label %21

21:                                               ; preds = %19
  %22 = icmp ult i64 %6, 1537
  br i1 %22, label %49, label %23

23:                                               ; preds = %21
  %24 = icmp ult i64 %6, 3073
  br i1 %24, label %49, label %25

25:                                               ; preds = %23
  %26 = icmp ult i64 %6, 6145
  br i1 %26, label %49, label %27

27:                                               ; preds = %25
  %28 = icmp ult i64 %6, 12289
  br i1 %28, label %49, label %29

29:                                               ; preds = %27
  %30 = icmp ult i64 %6, 24577
  br i1 %30, label %49, label %31

31:                                               ; preds = %29
  %32 = icmp ult i64 %6, 49153
  br i1 %32, label %49, label %33

33:                                               ; preds = %31
  %34 = icmp ult i64 %6, 98305
  br i1 %34, label %49, label %35

35:                                               ; preds = %33
  %36 = icmp ult i64 %6, 196609
  br i1 %36, label %49, label %37

37:                                               ; preds = %35
  %38 = icmp ult i64 %6, 393217
  br i1 %38, label %49, label %39

39:                                               ; preds = %37
  %40 = icmp ult i64 %6, 786433
  br i1 %40, label %49, label %41

41:                                               ; preds = %39
  %42 = icmp ult i64 %6, 1572865
  br i1 %42, label %49, label %43

43:                                               ; preds = %41
  %44 = icmp ult i64 %6, 3145729
  br i1 %44, label %49, label %45

45:                                               ; preds = %43
  %46 = icmp ult i64 %6, 6291457
  br i1 %46, label %49, label %47

47:                                               ; preds = %45
  %48 = icmp ult i64 %6, 12582913
  %. = select i1 %48, i64 4194304, i64 33554432
  br label %49

49:                                               ; preds = %47, %45, %43, %41, %39, %37, %35, %33, %31, %29, %27, %25, %23, %21, %19, %17, %15, %13
  %.073 = phi i64 [ 32, %13 ], [ 64, %15 ], [ 128, %17 ], [ 256, %19 ], [ 512, %21 ], [ 1024, %23 ], [ 2048, %25 ], [ 4096, %27 ], [ 8192, %29 ], [ 16384, %31 ], [ 32768, %33 ], [ 65536, %35 ], [ 131072, %37 ], [ 262144, %39 ], [ 524288, %41 ], [ 1048576, %43 ], [ 2097152, %45 ], [ %., %47 ]
  %50 = mul nuw nsw i64 %.073, 3
  %spec.select = tail call i64 @llvm.umax.i64(i64 %.073, i64 %7)
  br label %62

51:                                               ; preds = %5
  %52 = tail call i64 @_txm_power_of_two_block_size(i64 noundef %6)
  %53 = lshr i64 %52, 2
  %54 = shl nuw nsw i64 %53, 1
  %55 = sub i64 %6, %54
  %56 = tail call i64 @_txm_power_of_two_block_size(i64 noundef %55)
  %57 = lshr i64 %56, 1
  %58 = add nuw i64 %54, %57
  %59 = sub i64 %6, %58
  %60 = tail call i64 @_txm_power_of_two_block_size(i64 noundef %59)
  %61 = add i64 %58, %60
  br label %62

62:                                               ; preds = %49, %51
  %.075 = phi i64 [ %53, %51 ], [ %spec.select, %49 ]
  %.071 = phi i64 [ %61, %51 ], [ %50, %49 ]
  %63 = icmp ult i64 %8, 97
  br i1 %63, label %98, label %64

64:                                               ; preds = %62
  %65 = icmp ult i64 %8, 193
  br i1 %65, label %98, label %66

66:                                               ; preds = %64
  %67 = icmp ult i64 %8, 385
  br i1 %67, label %98, label %68

68:                                               ; preds = %66
  %69 = icmp ult i64 %8, 769
  br i1 %69, label %98, label %70

70:                                               ; preds = %68
  %71 = icmp ult i64 %8, 1537
  br i1 %71, label %98, label %72

72:                                               ; preds = %70
  %73 = icmp ult i64 %8, 3073
  br i1 %73, label %98, label %74

74:                                               ; preds = %72
  %75 = icmp ult i64 %8, 6145
  br i1 %75, label %98, label %76

76:                                               ; preds = %74
  %77 = icmp ult i64 %8, 12289
  br i1 %77, label %98, label %78

78:                                               ; preds = %76
  %79 = icmp ult i64 %8, 24577
  br i1 %79, label %98, label %80

80:                                               ; preds = %78
  %81 = icmp ult i64 %8, 49153
  br i1 %81, label %98, label %82

82:                                               ; preds = %80
  %83 = icmp ult i64 %8, 98305
  br i1 %83, label %98, label %84

84:                                               ; preds = %82
  %85 = icmp ult i64 %8, 196609
  br i1 %85, label %98, label %86

86:                                               ; preds = %84
  %87 = icmp ult i64 %8, 393217
  br i1 %87, label %98, label %88

88:                                               ; preds = %86
  %89 = icmp ult i64 %8, 786433
  br i1 %89, label %98, label %90

90:                                               ; preds = %88
  %91 = icmp ult i64 %8, 1572865
  br i1 %91, label %98, label %92

92:                                               ; preds = %90
  %93 = icmp ult i64 %8, 3145729
  br i1 %93, label %98, label %94

94:                                               ; preds = %92
  %95 = icmp ult i64 %8, 6291457
  br i1 %95, label %98, label %96

96:                                               ; preds = %94
  %97 = icmp ult i64 %8, 12582913
  %.80 = select i1 %97, i64 4194304, i64 33554432
  br label %98

98:                                               ; preds = %96, %94, %92, %90, %88, %86, %84, %82, %80, %78, %76, %74, %72, %70, %68, %66, %64, %62
  %.072 = phi i64 [ 32, %62 ], [ 64, %64 ], [ 128, %66 ], [ 256, %68 ], [ 512, %70 ], [ 1024, %72 ], [ 2048, %74 ], [ 4096, %76 ], [ 8192, %78 ], [ 16384, %80 ], [ 32768, %82 ], [ 65536, %84 ], [ 131072, %86 ], [ 262144, %88 ], [ 524288, %90 ], [ 1048576, %92 ], [ 2097152, %94 ], [ %.80, %96 ]
  br label %99

99:                                               ; preds = %99, %98
  %.0 = phi i64 [ %.072, %98 ], [ %101, %99 ]
  %100 = icmp ult i64 %.0, %8
  %101 = add i64 %.0, %.072
  br i1 %100, label %99, label %102, !llvm.loop !11

102:                                              ; preds = %99
  %spec.select81 = tail call i64 @llvm.umax.i64(i64 %.072, i64 %9)
  store i64 %.071, ptr %1, align 8, !tbaa !5
  store i64 %.075, ptr %2, align 8, !tbaa !5
  store i64 %.0, ptr %3, align 8, !tbaa !5
  store i64 %spec.select81, ptr %4, align 8, !tbaa !5
  ret void
}

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umax.i64(i64, i64) #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 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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !6, i64 40}
!10 = !{!"TXM_MODULE_PREAMBLE_STRUCT", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,LCSSAPass,LoopRotatePass,LoopUnrollPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass