; LLVM IR from lichen-community-systems/signaletic :: hosts/daisy/vendor/libDaisy/Drivers/STM32H7xx_HAL_Driver/Src (PollForTransfer)

; 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.__DMA_HandleTypeDef = type { ptr, %struct.DMA_InitTypeDef, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, ptr, ptr, i32, ptr, ptr, i32 }
%struct.DMA_InitTypeDef = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.DMA_Stream_TypeDef = type { i32, i32, i32, i32, i32, i32 }
%struct.DMA_Base_Registers = type { i32, i32, i32 }
%struct.BDMA_Channel_TypeDef = type { i32, i32, i32, i32, i32 }
%struct.BDMA_Base_Registers = type { i32, i32 }
%struct.DMAMUX_RequestGenStatus_TypeDef = type { i32, i32 }
%struct.DMAMUX_ChannelStatus_TypeDef = type { i32, i32 }

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

declare i32 @HAL_GetTick() #1

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @HAL_DMA_Abort(ptr noundef) #2

; Function Attrs: nounwind uwtable
define dso_local i32 @HAL_DMA_PollForTransfer(ptr noundef %0, i32 noundef %1, i32 noundef %2) #2 {
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store i32 %1, ptr %6, align 4, !tbaa !9
  store i32 %2, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #3
  store i32 0, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #3
  %14 = call i32 @HAL_GetTick()
  store i32 %14, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #3
  %15 = load ptr, ptr %5, align 8, !tbaa !5
  %16 = icmp eq ptr %15, null
  br i1 %16, label %17, label %18

17:                                               ; preds = %3
  store i32 1, ptr %4, align 4
  store i32 1, ptr %13, align 4
  br label %667

18:                                               ; preds = %3
  %19 = load ptr, ptr %5, align 8, !tbaa !5
  %20 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %19, i32 0, i32 3
  %21 = load volatile i32, ptr %20, align 4, !tbaa !11
  %22 = icmp ne i32 2, %21
  br i1 %22, label %23, label %31

23:                                               ; preds = %18
  %24 = load ptr, ptr %5, align 8, !tbaa !5
  %25 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %24, i32 0, i32 11
  store volatile i32 128, ptr %25, align 8, !tbaa !14
  br label %26

26:                                               ; preds = %23
  %27 = load ptr, ptr %5, align 8, !tbaa !5
  %28 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %27, i32 0, i32 2
  store i32 0, ptr %28, align 8, !tbaa !15
  br label %29

29:                                               ; preds = %26
  br label %30

30:                                               ; preds = %29
  store i32 1, ptr %4, align 4
  store i32 1, ptr %13, align 4
  br label %667

31:                                               ; preds = %18
  %32 = load ptr, ptr %5, align 8, !tbaa !5
  %33 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %32, i32 0, i32 0
  %34 = load ptr, ptr %33, align 8, !tbaa !16
  %35 = icmp eq ptr %34, inttoptr (i64 1073872912 to ptr)
  br i1 %35, label %111, label %36

36:                                               ; preds = %31
  %37 = load ptr, ptr %5, align 8, !tbaa !5
  %38 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %37, i32 0, i32 0
  %39 = load ptr, ptr %38, align 8, !tbaa !16
  %40 = icmp eq ptr %39, inttoptr (i64 1073872936 to ptr)
  br i1 %40, label %111, label %41

41:                                               ; preds = %36
  %42 = load ptr, ptr %5, align 8, !tbaa !5
  %43 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %42, i32 0, i32 0
  %44 = load ptr, ptr %43, align 8, !tbaa !16
  %45 = icmp eq ptr %44, inttoptr (i64 1073872960 to ptr)
  br i1 %45, label %111, label %46

46:                                               ; preds = %41
  %47 = load ptr, ptr %5, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %47, i32 0, i32 0
  %49 = load ptr, ptr %48, align 8, !tbaa !16
  %50 = icmp eq ptr %49, inttoptr (i64 1073872984 to ptr)
  br i1 %50, label %111, label %51

51:                                               ; preds = %46
  %52 = load ptr, ptr %5, align 8, !tbaa !5
  %53 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %52, i32 0, i32 0
  %54 = load ptr, ptr %53, align 8, !tbaa !16
  %55 = icmp eq ptr %54, inttoptr (i64 1073873008 to ptr)
  br i1 %55, label %111, label %56

56:                                               ; preds = %51
  %57 = load ptr, ptr %5, align 8, !tbaa !5
  %58 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %57, i32 0, i32 0
  %59 = load ptr, ptr %58, align 8, !tbaa !16
  %60 = icmp eq ptr %59, inttoptr (i64 1073873032 to ptr)
  br i1 %60, label %111, label %61

61:                                               ; preds = %56
  %62 = load ptr, ptr %5, align 8, !tbaa !5
  %63 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %62, i32 0, i32 0
  %64 = load ptr, ptr %63, align 8, !tbaa !16
  %65 = icmp eq ptr %64, inttoptr (i64 1073873056 to ptr)
  br i1 %65, label %111, label %66

66:                                               ; preds = %61
  %67 = load ptr, ptr %5, align 8, !tbaa !5
  %68 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %67, i32 0, i32 0
  %69 = load ptr, ptr %68, align 8, !tbaa !16
  %70 = icmp eq ptr %69, inttoptr (i64 1073873080 to ptr)
  br i1 %70, label %111, label %71

71:                                               ; preds = %66
  %72 = load ptr, ptr %5, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %72, i32 0, i32 0
  %74 = load ptr, ptr %73, align 8, !tbaa !16
  %75 = icmp eq ptr %74, inttoptr (i64 1073873936 to ptr)
  br i1 %75, label %111, label %76

76:                                               ; preds = %71
  %77 = load ptr, ptr %5, align 8, !tbaa !5
  %78 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %77, i32 0, i32 0
  %79 = load ptr, ptr %78, align 8, !tbaa !16
  %80 = icmp eq ptr %79, inttoptr (i64 1073873960 to ptr)
  br i1 %80, label %111, label %81

81:                                               ; preds = %76
  %82 = load ptr, ptr %5, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %82, i32 0, i32 0
  %84 = load ptr, ptr %83, align 8, !tbaa !16
  %85 = icmp eq ptr %84, inttoptr (i64 1073873984 to ptr)
  br i1 %85, label %111, label %86

86:                                               ; preds = %81
  %87 = load ptr, ptr %5, align 8, !tbaa !5
  %88 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %87, i32 0, i32 0
  %89 = load ptr, ptr %88, align 8, !tbaa !16
  %90 = icmp eq ptr %89, inttoptr (i64 1073874008 to ptr)
  br i1 %90, label %111, label %91

91:                                               ; preds = %86
  %92 = load ptr, ptr %5, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %92, i32 0, i32 0
  %94 = load ptr, ptr %93, align 8, !tbaa !16
  %95 = icmp eq ptr %94, inttoptr (i64 1073874032 to ptr)
  br i1 %95, label %111, label %96

96:                                               ; preds = %91
  %97 = load ptr, ptr %5, align 8, !tbaa !5
  %98 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %97, i32 0, i32 0
  %99 = load ptr, ptr %98, align 8, !tbaa !16
  %100 = icmp eq ptr %99, inttoptr (i64 1073874056 to ptr)
  br i1 %100, label %111, label %101

101:                                              ; preds = %96
  %102 = load ptr, ptr %5, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %102, i32 0, i32 0
  %104 = load ptr, ptr %103, align 8, !tbaa !16
  %105 = icmp eq ptr %104, inttoptr (i64 1073874080 to ptr)
  br i1 %105, label %111, label %106

106:                                              ; preds = %101
  %107 = load ptr, ptr %5, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %107, i32 0, i32 0
  %109 = load ptr, ptr %108, align 8, !tbaa !16
  %110 = icmp eq ptr %109, inttoptr (i64 1073874104 to ptr)
  br label %111

111:                                              ; preds = %106, %101, %96, %91, %86, %81, %76, %71, %66, %61, %56, %51, %46, %41, %36, %31
  %112 = phi i1 [ true, %101 ], [ true, %96 ], [ true, %91 ], [ true, %86 ], [ true, %81 ], [ true, %76 ], [ true, %71 ], [ true, %66 ], [ true, %61 ], [ true, %56 ], [ true, %51 ], [ true, %46 ], [ true, %41 ], [ true, %36 ], [ true, %31 ], [ %110, %106 ]
  %113 = zext i1 %112 to i32
  %114 = icmp ne i32 %113, 0
  br i1 %114, label %115, label %155

115:                                              ; preds = %111
  %116 = load ptr, ptr %5, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %116, i32 0, i32 0
  %118 = load ptr, ptr %117, align 8, !tbaa !16
  %119 = getelementptr inbounds %struct.DMA_Stream_TypeDef, ptr %118, i32 0, i32 0
  %120 = load volatile i32, ptr %119, align 4, !tbaa !17
  %121 = zext i32 %120 to i64
  %122 = and i64 %121, 256
  %123 = icmp ne i64 %122, 0
  br i1 %123, label %124, label %127

124:                                              ; preds = %115
  %125 = load ptr, ptr %5, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %125, i32 0, i32 11
  store volatile i32 256, ptr %126, align 8, !tbaa !14
  store i32 1, ptr %4, align 4
  store i32 1, ptr %13, align 4
  br label %667

127:                                              ; preds = %115
  %128 = load i32, ptr %6, align 4, !tbaa !9
  %129 = icmp eq i32 %128, 0
  br i1 %129, label %130, label %136

130:                                              ; preds = %127
  %131 = load ptr, ptr %5, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %131, i32 0, i32 13
  %133 = load i32, ptr %132, align 8, !tbaa !19
  %134 = and i32 %133, 31
  %135 = shl i32 32, %134
  store i32 %135, ptr %9, align 4, !tbaa !9
  br label %142

136:                                              ; preds = %127
  %137 = load ptr, ptr %5, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %137, i32 0, i32 13
  %139 = load i32, ptr %138, align 8, !tbaa !19
  %140 = and i32 %139, 31
  %141 = shl i32 16, %140
  store i32 %141, ptr %9, align 4, !tbaa !9
  br label %142

142:                                              ; preds = %136, %130
  %143 = load ptr, ptr %5, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %143, i32 0, i32 12
  %145 = load i32, ptr %144, align 4, !tbaa !20
  %146 = zext i32 %145 to i64
  %147 = inttoptr i64 %146 to ptr
  %148 = getelementptr inbounds %struct.DMA_Base_Registers, ptr %147, i32 0, i32 0
  store ptr %148, ptr %11, align 8, !tbaa !5
  %149 = load ptr, ptr %5, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %149, i32 0, i32 12
  %151 = load i32, ptr %150, align 4, !tbaa !20
  %152 = zext i32 %151 to i64
  %153 = inttoptr i64 %152 to ptr
  %154 = getelementptr inbounds %struct.DMA_Base_Registers, ptr %153, i32 0, i32 2
  store ptr %154, ptr %12, align 8, !tbaa !5
  br label %195

155:                                              ; preds = %111
  %156 = load ptr, ptr %5, align 8, !tbaa !5
  %157 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %156, i32 0, i32 0
  %158 = load ptr, ptr %157, align 8, !tbaa !16
  %159 = getelementptr inbounds %struct.BDMA_Channel_TypeDef, ptr %158, i32 0, i32 0
  %160 = load volatile i32, ptr %159, align 4, !tbaa !21
  %161 = zext i32 %160 to i64
  %162 = and i64 %161, 32
  %163 = icmp ne i64 %162, 0
  br i1 %163, label %164, label %167

164:                                              ; preds = %155
  %165 = load ptr, ptr %5, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %165, i32 0, i32 11
  store volatile i32 256, ptr %166, align 8, !tbaa !14
  store i32 1, ptr %4, align 4
  store i32 1, ptr %13, align 4
  br label %667

167:                                              ; preds = %155
  %168 = load i32, ptr %6, align 4, !tbaa !9
  %169 = icmp eq i32 %168, 0
  br i1 %169, label %170, label %176

170:                                              ; preds = %167
  %171 = load ptr, ptr %5, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %171, i32 0, i32 13
  %173 = load i32, ptr %172, align 8, !tbaa !19
  %174 = and i32 %173, 31
  %175 = shl i32 2, %174
  store i32 %175, ptr %9, align 4, !tbaa !9
  br label %182

176:                                              ; preds = %167
  %177 = load ptr, ptr %5, align 8, !tbaa !5
  %178 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %177, i32 0, i32 13
  %179 = load i32, ptr %178, align 8, !tbaa !19
  %180 = and i32 %179, 31
  %181 = shl i32 4, %180
  store i32 %181, ptr %9, align 4, !tbaa !9
  br label %182

182:                                              ; preds = %176, %170
  %183 = load ptr, ptr %5, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %183, i32 0, i32 12
  %185 = load i32, ptr %184, align 4, !tbaa !20
  %186 = zext i32 %185 to i64
  %187 = inttoptr i64 %186 to ptr
  %188 = getelementptr inbounds %struct.BDMA_Base_Registers, ptr %187, i32 0, i32 0
  store ptr %188, ptr %11, align 8, !tbaa !5
  %189 = load ptr, ptr %5, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %189, i32 0, i32 12
  %191 = load i32, ptr %190, align 4, !tbaa !20
  %192 = zext i32 %191 to i64
  %193 = inttoptr i64 %192 to ptr
  %194 = getelementptr inbounds %struct.BDMA_Base_Registers, ptr %193, i32 0, i32 1
  store ptr %194, ptr %12, align 8, !tbaa !5
  br label %195

195:                                              ; preds = %182, %142
  br label %196

196:                                              ; preds = %456, %195
  %197 = load ptr, ptr %11, align 8, !tbaa !5
  %198 = load volatile i32, ptr %197, align 4, !tbaa !9
  %199 = load i32, ptr %9, align 4, !tbaa !9
  %200 = and i32 %198, %199
  %201 = icmp eq i32 %200, 0
  br i1 %201, label %202, label %457

202:                                              ; preds = %196
  %203 = load ptr, ptr %5, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %203, i32 0, i32 0
  %205 = load ptr, ptr %204, align 8, !tbaa !16
  %206 = icmp eq ptr %205, inttoptr (i64 1073872912 to ptr)
  br i1 %206, label %282, label %207

207:                                              ; preds = %202
  %208 = load ptr, ptr %5, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %208, i32 0, i32 0
  %210 = load ptr, ptr %209, align 8, !tbaa !16
  %211 = icmp eq ptr %210, inttoptr (i64 1073872936 to ptr)
  br i1 %211, label %282, label %212

212:                                              ; preds = %207
  %213 = load ptr, ptr %5, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %213, i32 0, i32 0
  %215 = load ptr, ptr %214, align 8, !tbaa !16
  %216 = icmp eq ptr %215, inttoptr (i64 1073872960 to ptr)
  br i1 %216, label %282, label %217

217:                                              ; preds = %212
  %218 = load ptr, ptr %5, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %218, i32 0, i32 0
  %220 = load ptr, ptr %219, align 8, !tbaa !16
  %221 = icmp eq ptr %220, inttoptr (i64 1073872984 to ptr)
  br i1 %221, label %282, label %222

222:                                              ; preds = %217
  %223 = load ptr, ptr %5, align 8, !tbaa !5
  %224 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %223, i32 0, i32 0
  %225 = load ptr, ptr %224, align 8, !tbaa !16
  %226 = icmp eq ptr %225, inttoptr (i64 1073873008 to ptr)
  br i1 %226, label %282, label %227

227:                                              ; preds = %222
  %228 = load ptr, ptr %5, align 8, !tbaa !5
  %229 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %228, i32 0, i32 0
  %230 = load ptr, ptr %229, align 8, !tbaa !16
  %231 = icmp eq ptr %230, inttoptr (i64 1073873032 to ptr)
  br i1 %231, label %282, label %232

232:                                              ; preds = %227
  %233 = load ptr, ptr %5, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %233, i32 0, i32 0
  %235 = load ptr, ptr %234, align 8, !tbaa !16
  %236 = icmp eq ptr %235, inttoptr (i64 1073873056 to ptr)
  br i1 %236, label %282, label %237

237:                                              ; preds = %232
  %238 = load ptr, ptr %5, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %238, i32 0, i32 0
  %240 = load ptr, ptr %239, align 8, !tbaa !16
  %241 = icmp eq ptr %240, inttoptr (i64 1073873080 to ptr)
  br i1 %241, label %282, label %242

242:                                              ; preds = %237
  %243 = load ptr, ptr %5, align 8, !tbaa !5
  %244 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %243, i32 0, i32 0
  %245 = load ptr, ptr %244, align 8, !tbaa !16
  %246 = icmp eq ptr %245, inttoptr (i64 1073873936 to ptr)
  br i1 %246, label %282, label %247

247:                                              ; preds = %242
  %248 = load ptr, ptr %5, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %248, i32 0, i32 0
  %250 = load ptr, ptr %249, align 8, !tbaa !16
  %251 = icmp eq ptr %250, inttoptr (i64 1073873960 to ptr)
  br i1 %251, label %282, label %252

252:                                              ; preds = %247
  %253 = load ptr, ptr %5, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %253, i32 0, i32 0
  %255 = load ptr, ptr %254, align 8, !tbaa !16
  %256 = icmp eq ptr %255, inttoptr (i64 1073873984 to ptr)
  br i1 %256, label %282, label %257

257:                                              ; preds = %252
  %258 = load ptr, ptr %5, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %258, i32 0, i32 0
  %260 = load ptr, ptr %259, align 8, !tbaa !16
  %261 = icmp eq ptr %260, inttoptr (i64 1073874008 to ptr)
  br i1 %261, label %282, label %262

262:                                              ; preds = %257
  %263 = load ptr, ptr %5, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %263, i32 0, i32 0
  %265 = load ptr, ptr %264, align 8, !tbaa !16
  %266 = icmp eq ptr %265, inttoptr (i64 1073874032 to ptr)
  br i1 %266, label %282, label %267

267:                                              ; preds = %262
  %268 = load ptr, ptr %5, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %268, i32 0, i32 0
  %270 = load ptr, ptr %269, align 8, !tbaa !16
  %271 = icmp eq ptr %270, inttoptr (i64 1073874056 to ptr)
  br i1 %271, label %282, label %272

272:                                              ; preds = %267
  %273 = load ptr, ptr %5, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %273, i32 0, i32 0
  %275 = load ptr, ptr %274, align 8, !tbaa !16
  %276 = icmp eq ptr %275, inttoptr (i64 1073874080 to ptr)
  br i1 %276, label %282, label %277

277:                                              ; preds = %272
  %278 = load ptr, ptr %5, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %278, i32 0, i32 0
  %280 = load ptr, ptr %279, align 8, !tbaa !16
  %281 = icmp eq ptr %280, inttoptr (i64 1073874104 to ptr)
  br label %282

282:                                              ; preds = %277, %272, %267, %262, %257, %252, %247, %242, %237, %232, %227, %222, %217, %212, %207, %202
  %283 = phi i1 [ true, %272 ], [ true, %267 ], [ true, %262 ], [ true, %257 ], [ true, %252 ], [ true, %247 ], [ true, %242 ], [ true, %237 ], [ true, %232 ], [ true, %227 ], [ true, %222 ], [ true, %217 ], [ true, %212 ], [ true, %207 ], [ true, %202 ], [ %281, %277 ]
  %284 = zext i1 %283 to i32
  %285 = icmp ne i32 %284, 0
  br i1 %285, label %286, label %357

286:                                              ; preds = %282
  %287 = load ptr, ptr %11, align 8, !tbaa !5
  %288 = load volatile i32, ptr %287, align 4, !tbaa !9
  %289 = load ptr, ptr %5, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %289, i32 0, i32 13
  %291 = load i32, ptr %290, align 8, !tbaa !19
  %292 = and i32 %291, 31
  %293 = shl i32 1, %292
  %294 = and i32 %288, %293
  %295 = icmp ne i32 %294, 0
  br i1 %295, label %296, label %307

296:                                              ; preds = %286
  %297 = load ptr, ptr %5, align 8, !tbaa !5
  %298 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %297, i32 0, i32 11
  %299 = load volatile i32, ptr %298, align 8, !tbaa !14
  %300 = or i32 %299, 2
  store volatile i32 %300, ptr %298, align 8, !tbaa !14
  %301 = load ptr, ptr %5, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %301, i32 0, i32 13
  %303 = load i32, ptr %302, align 8, !tbaa !19
  %304 = and i32 %303, 31
  %305 = shl i32 1, %304
  %306 = load ptr, ptr %12, align 8, !tbaa !5
  store volatile i32 %305, ptr %306, align 4, !tbaa !9
  br label %307

307:                                              ; preds = %296, %286
  %308 = load ptr, ptr %11, align 8, !tbaa !5
  %309 = load volatile i32, ptr %308, align 4, !tbaa !9
  %310 = load ptr, ptr %5, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %310, i32 0, i32 13
  %312 = load i32, ptr %311, align 8, !tbaa !19
  %313 = and i32 %312, 31
  %314 = shl i32 4, %313
  %315 = and i32 %309, %314
  %316 = icmp ne i32 %315, 0
  br i1 %316, label %317, label %328

317:                                              ; preds = %307
  %318 = load ptr, ptr %5, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %318, i32 0, i32 11
  %320 = load volatile i32, ptr %319, align 8, !tbaa !14
  %321 = or i32 %320, 4
  store volatile i32 %321, ptr %319, align 8, !tbaa !14
  %322 = load ptr, ptr %5, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %322, i32 0, i32 13
  %324 = load i32, ptr %323, align 8, !tbaa !19
  %325 = and i32 %324, 31
  %326 = shl i32 4, %325
  %327 = load ptr, ptr %12, align 8, !tbaa !5
  store volatile i32 %326, ptr %327, align 4, !tbaa !9
  br label %328

328:                                              ; preds = %317, %307
  %329 = load ptr, ptr %11, align 8, !tbaa !5
  %330 = load volatile i32, ptr %329, align 4, !tbaa !9
  %331 = load ptr, ptr %5, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %331, i32 0, i32 13
  %333 = load i32, ptr %332, align 8, !tbaa !19
  %334 = and i32 %333, 31
  %335 = shl i32 8, %334
  %336 = and i32 %330, %335
  %337 = icmp ne i32 %336, 0
  br i1 %337, label %338, label %356

338:                                              ; preds = %328
  %339 = load ptr, ptr %5, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %339, i32 0, i32 11
  %341 = load volatile i32, ptr %340, align 8, !tbaa !14
  %342 = or i32 %341, 1
  store volatile i32 %342, ptr %340, align 8, !tbaa !14
  %343 = load ptr, ptr %5, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %343, i32 0, i32 13
  %345 = load i32, ptr %344, align 8, !tbaa !19
  %346 = and i32 %345, 31
  %347 = shl i32 8, %346
  %348 = load ptr, ptr %12, align 8, !tbaa !5
  store volatile i32 %347, ptr %348, align 4, !tbaa !9
  %349 = load ptr, ptr %5, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %349, i32 0, i32 3
  store volatile i32 1, ptr %350, align 4, !tbaa !11
  br label %351

351:                                              ; preds = %338
  %352 = load ptr, ptr %5, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %352, i32 0, i32 2
  store i32 0, ptr %353, align 8, !tbaa !15
  br label %354

354:                                              ; preds = %351
  br label %355

355:                                              ; preds = %354
  store i32 1, ptr %4, align 4
  store i32 1, ptr %13, align 4
  br label %667

356:                                              ; preds = %328
  br label %386

357:                                              ; preds = %282
  %358 = load ptr, ptr %11, align 8, !tbaa !5
  %359 = load volatile i32, ptr %358, align 4, !tbaa !9
  %360 = load ptr, ptr %5, align 8, !tbaa !5
  %361 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %360, i32 0, i32 13
  %362 = load i32, ptr %361, align 8, !tbaa !19
  %363 = and i32 %362, 31
  %364 = shl i32 8, %363
  %365 = and i32 %359, %364
  %366 = icmp ne i32 %365, 0
  br i1 %366, label %367, label %385

367:                                              ; preds = %357
  %368 = load ptr, ptr %5, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %368, i32 0, i32 13
  %370 = load i32, ptr %369, align 8, !tbaa !19
  %371 = and i32 %370, 31
  %372 = zext i32 %371 to i64
  %373 = shl i64 1, %372
  %374 = trunc i64 %373 to i32
  %375 = load ptr, ptr %11, align 8, !tbaa !5
  store volatile i32 %374, ptr %375, align 4, !tbaa !9
  %376 = load ptr, ptr %5, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %376, i32 0, i32 11
  store volatile i32 1, ptr %377, align 8, !tbaa !14
  %378 = load ptr, ptr %5, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %378, i32 0, i32 3
  store volatile i32 1, ptr %379, align 4, !tbaa !11
  br label %380

380:                                              ; preds = %367
  %381 = load ptr, ptr %5, align 8, !tbaa !5
  %382 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %381, i32 0, i32 2
  store i32 0, ptr %382, align 8, !tbaa !15
  br label %383

383:                                              ; preds = %380
  br label %384

384:                                              ; preds = %383
  store i32 1, ptr %4, align 4
  store i32 1, ptr %13, align 4
  br label %667

385:                                              ; preds = %357
  br label %386

386:                                              ; preds = %385, %356
  %387 = load i32, ptr %7, align 4, !tbaa !9
  %388 = icmp ne i32 %387, -1
  br i1 %388, label %389, label %404

389:                                              ; preds = %386
  %390 = call i32 @HAL_GetTick()
  %391 = load i32, ptr %10, align 4, !tbaa !9
  %392 = sub i32 %390, %391
  %393 = load i32, ptr %7, align 4, !tbaa !9
  %394 = icmp ugt i32 %392, %393
  br i1 %394, label %398, label %395

395:                                              ; preds = %389
  %396 = load i32, ptr %7, align 4, !tbaa !9
  %397 = icmp eq i32 %396, 0
  br i1 %397, label %398, label %403

398:                                              ; preds = %395, %389
  %399 = load ptr, ptr %5, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %399, i32 0, i32 11
  store volatile i32 32, ptr %400, align 8, !tbaa !14
  %401 = load ptr, ptr %5, align 8, !tbaa !5
  %402 = call i32 @HAL_DMA_Abort(ptr noundef %401)
  store i32 1, ptr %4, align 4
  store i32 1, ptr %13, align 4
  br label %667

403:                                              ; preds = %395
  br label %404

404:                                              ; preds = %403, %386
  %405 = load ptr, ptr %5, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %405, i32 0, i32 17
  %407 = load ptr, ptr %406, align 8, !tbaa !23
  %408 = icmp ne ptr %407, null
  br i1 %408, label %409, label %433

409:                                              ; preds = %404
  %410 = load ptr, ptr %5, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %410, i32 0, i32 18
  %412 = load ptr, ptr %411, align 8, !tbaa !24
  %413 = getelementptr inbounds %struct.DMAMUX_RequestGenStatus_TypeDef, ptr %412, i32 0, i32 0
  %414 = load volatile i32, ptr %413, align 4, !tbaa !25
  %415 = load ptr, ptr %5, align 8, !tbaa !5
  %416 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %415, i32 0, i32 19
  %417 = load i32, ptr %416, align 8, !tbaa !27
  %418 = and i32 %414, %417
  %419 = icmp ne i32 %418, 0
  br i1 %419, label %420, label %432

420:                                              ; preds = %409
  %421 = load ptr, ptr %5, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %421, i32 0, i32 19
  %423 = load i32, ptr %422, align 8, !tbaa !27
  %424 = load ptr, ptr %5, align 8, !tbaa !5
  %425 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %424, i32 0, i32 18
  %426 = load ptr, ptr %425, align 8, !tbaa !24
  %427 = getelementptr inbounds %struct.DMAMUX_RequestGenStatus_TypeDef, ptr %426, i32 0, i32 1
  store volatile i32 %423, ptr %427, align 4, !tbaa !28
  %428 = load ptr, ptr %5, align 8, !tbaa !5
  %429 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %428, i32 0, i32 11
  %430 = load volatile i32, ptr %429, align 8, !tbaa !14
  %431 = or i32 %430, 1024
  store volatile i32 %431, ptr %429, align 8, !tbaa !14
  br label %432

432:                                              ; preds = %420, %409
  br label %433

433:                                              ; preds = %432, %404
  %434 = load ptr, ptr %5, align 8, !tbaa !5
  %435 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %434, i32 0, i32 15
  %436 = load ptr, ptr %435, align 8, !tbaa !29
  %437 = getelementptr inbounds %struct.DMAMUX_ChannelStatus_TypeDef, ptr %436, i32 0, i32 0
  %438 = load volatile i32, ptr %437, align 4, !tbaa !25
  %439 = load ptr, ptr %5, align 8, !tbaa !5
  %440 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %439, i32 0, i32 16
  %441 = load i32, ptr %440, align 8, !tbaa !30
  %442 = and i32 %438, %441
  %443 = icmp ne i32 %442, 0
  br i1 %443, label %444, label %456

444:                                              ; preds = %433
  %445 = load ptr, ptr %5, align 8, !tbaa !5
  %446 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %445, i32 0, i32 16
  %447 = load i32, ptr %446, align 8, !tbaa !30
  %448 = load ptr, ptr %5, align 8, !tbaa !5
  %449 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %448, i32 0, i32 15
  %450 = load ptr, ptr %449, align 8, !tbaa !29
  %451 = getelementptr inbounds %struct.DMAMUX_ChannelStatus_TypeDef, ptr %450, i32 0, i32 1
  store volatile i32 %447, ptr %451, align 4, !tbaa !28
  %452 = load ptr, ptr %5, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %452, i32 0, i32 11
  %454 = load volatile i32, ptr %453, align 8, !tbaa !14
  %455 = or i32 %454, 512
  store volatile i32 %455, ptr %453, align 8, !tbaa !14
  br label %456

456:                                              ; preds = %444, %433
  br label %196, !llvm.loop !31

457:                                              ; preds = %196
  %458 = load i32, ptr %6, align 4, !tbaa !9
  %459 = icmp eq i32 %458, 0
  br i1 %459, label %460, label %566

460:                                              ; preds = %457
  %461 = load ptr, ptr %5, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %461, i32 0, i32 0
  %463 = load ptr, ptr %462, align 8, !tbaa !16
  %464 = icmp eq ptr %463, inttoptr (i64 1073872912 to ptr)
  br i1 %464, label %540, label %465

465:                                              ; preds = %460
  %466 = load ptr, ptr %5, align 8, !tbaa !5
  %467 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %466, i32 0, i32 0
  %468 = load ptr, ptr %467, align 8, !tbaa !16
  %469 = icmp eq ptr %468, inttoptr (i64 1073872936 to ptr)
  br i1 %469, label %540, label %470

470:                                              ; preds = %465
  %471 = load ptr, ptr %5, align 8, !tbaa !5
  %472 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %471, i32 0, i32 0
  %473 = load ptr, ptr %472, align 8, !tbaa !16
  %474 = icmp eq ptr %473, inttoptr (i64 1073872960 to ptr)
  br i1 %474, label %540, label %475

475:                                              ; preds = %470
  %476 = load ptr, ptr %5, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %476, i32 0, i32 0
  %478 = load ptr, ptr %477, align 8, !tbaa !16
  %479 = icmp eq ptr %478, inttoptr (i64 1073872984 to ptr)
  br i1 %479, label %540, label %480

480:                                              ; preds = %475
  %481 = load ptr, ptr %5, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %481, i32 0, i32 0
  %483 = load ptr, ptr %482, align 8, !tbaa !16
  %484 = icmp eq ptr %483, inttoptr (i64 1073873008 to ptr)
  br i1 %484, label %540, label %485

485:                                              ; preds = %480
  %486 = load ptr, ptr %5, align 8, !tbaa !5
  %487 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %486, i32 0, i32 0
  %488 = load ptr, ptr %487, align 8, !tbaa !16
  %489 = icmp eq ptr %488, inttoptr (i64 1073873032 to ptr)
  br i1 %489, label %540, label %490

490:                                              ; preds = %485
  %491 = load ptr, ptr %5, align 8, !tbaa !5
  %492 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %491, i32 0, i32 0
  %493 = load ptr, ptr %492, align 8, !tbaa !16
  %494 = icmp eq ptr %493, inttoptr (i64 1073873056 to ptr)
  br i1 %494, label %540, label %495

495:                                              ; preds = %490
  %496 = load ptr, ptr %5, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %496, i32 0, i32 0
  %498 = load ptr, ptr %497, align 8, !tbaa !16
  %499 = icmp eq ptr %498, inttoptr (i64 1073873080 to ptr)
  br i1 %499, label %540, label %500

500:                                              ; preds = %495
  %501 = load ptr, ptr %5, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %501, i32 0, i32 0
  %503 = load ptr, ptr %502, align 8, !tbaa !16
  %504 = icmp eq ptr %503, inttoptr (i64 1073873936 to ptr)
  br i1 %504, label %540, label %505

505:                                              ; preds = %500
  %506 = load ptr, ptr %5, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %506, i32 0, i32 0
  %508 = load ptr, ptr %507, align 8, !tbaa !16
  %509 = icmp eq ptr %508, inttoptr (i64 1073873960 to ptr)
  br i1 %509, label %540, label %510

510:                                              ; preds = %505
  %511 = load ptr, ptr %5, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %511, i32 0, i32 0
  %513 = load ptr, ptr %512, align 8, !tbaa !16
  %514 = icmp eq ptr %513, inttoptr (i64 1073873984 to ptr)
  br i1 %514, label %540, label %515

515:                                              ; preds = %510
  %516 = load ptr, ptr %5, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %516, i32 0, i32 0
  %518 = load ptr, ptr %517, align 8, !tbaa !16
  %519 = icmp eq ptr %518, inttoptr (i64 1073874008 to ptr)
  br i1 %519, label %540, label %520

520:                                              ; preds = %515
  %521 = load ptr, ptr %5, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %521, i32 0, i32 0
  %523 = load ptr, ptr %522, align 8, !tbaa !16
  %524 = icmp eq ptr %523, inttoptr (i64 1073874032 to ptr)
  br i1 %524, label %540, label %525

525:                                              ; preds = %520
  %526 = load ptr, ptr %5, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %526, i32 0, i32 0
  %528 = load ptr, ptr %527, align 8, !tbaa !16
  %529 = icmp eq ptr %528, inttoptr (i64 1073874056 to ptr)
  br i1 %529, label %540, label %530

530:                                              ; preds = %525
  %531 = load ptr, ptr %5, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %531, i32 0, i32 0
  %533 = load ptr, ptr %532, align 8, !tbaa !16
  %534 = icmp eq ptr %533, inttoptr (i64 1073874080 to ptr)
  br i1 %534, label %540, label %535

535:                                              ; preds = %530
  %536 = load ptr, ptr %5, align 8, !tbaa !5
  %537 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %536, i32 0, i32 0
  %538 = load ptr, ptr %537, align 8, !tbaa !16
  %539 = icmp eq ptr %538, inttoptr (i64 1073874104 to ptr)
  br label %540

540:                                              ; preds = %535, %530, %525, %520, %515, %510, %505, %500, %495, %490, %485, %480, %475, %470, %465, %460
  %541 = phi i1 [ true, %530 ], [ true, %525 ], [ true, %520 ], [ true, %515 ], [ true, %510 ], [ true, %505 ], [ true, %500 ], [ true, %495 ], [ true, %490 ], [ true, %485 ], [ true, %480 ], [ true, %475 ], [ true, %470 ], [ true, %465 ], [ true, %460 ], [ %539, %535 ]
  %542 = zext i1 %541 to i32
  %543 = icmp ne i32 %542, 0
  br i1 %543, label %544, label %551

544:                                              ; preds = %540
  %545 = load ptr, ptr %5, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %545, i32 0, i32 13
  %547 = load i32, ptr %546, align 8, !tbaa !19
  %548 = and i32 %547, 31
  %549 = shl i32 48, %548
  %550 = load ptr, ptr %12, align 8, !tbaa !5
  store volatile i32 %549, ptr %550, align 4, !tbaa !9
  br label %558

551:                                              ; preds = %540
  %552 = load ptr, ptr %5, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %552, i32 0, i32 13
  %554 = load i32, ptr %553, align 8, !tbaa !19
  %555 = and i32 %554, 31
  %556 = shl i32 2, %555
  %557 = load ptr, ptr %12, align 8, !tbaa !5
  store volatile i32 %556, ptr %557, align 4, !tbaa !9
  br label %558

558:                                              ; preds = %551, %544
  br label %559

559:                                              ; preds = %558
  %560 = load ptr, ptr %5, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %560, i32 0, i32 2
  store i32 0, ptr %561, align 8, !tbaa !15
  br label %562

562:                                              ; preds = %559
  br label %563

563:                                              ; preds = %562
  %564 = load ptr, ptr %5, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %564, i32 0, i32 3
  store volatile i32 1, ptr %565, align 4, !tbaa !11
  br label %665

566:                                              ; preds = %457
  %567 = load ptr, ptr %5, align 8, !tbaa !5
  %568 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %567, i32 0, i32 0
  %569 = load ptr, ptr %568, align 8, !tbaa !16
  %570 = icmp eq ptr %569, inttoptr (i64 1073872912 to ptr)
  br i1 %570, label %646, label %571

571:                                              ; preds = %566
  %572 = load ptr, ptr %5, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %572, i32 0, i32 0
  %574 = load ptr, ptr %573, align 8, !tbaa !16
  %575 = icmp eq ptr %574, inttoptr (i64 1073872936 to ptr)
  br i1 %575, label %646, label %576

576:                                              ; preds = %571
  %577 = load ptr, ptr %5, align 8, !tbaa !5
  %578 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %577, i32 0, i32 0
  %579 = load ptr, ptr %578, align 8, !tbaa !16
  %580 = icmp eq ptr %579, inttoptr (i64 1073872960 to ptr)
  br i1 %580, label %646, label %581

581:                                              ; preds = %576
  %582 = load ptr, ptr %5, align 8, !tbaa !5
  %583 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %582, i32 0, i32 0
  %584 = load ptr, ptr %583, align 8, !tbaa !16
  %585 = icmp eq ptr %584, inttoptr (i64 1073872984 to ptr)
  br i1 %585, label %646, label %586

586:                                              ; preds = %581
  %587 = load ptr, ptr %5, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %587, i32 0, i32 0
  %589 = load ptr, ptr %588, align 8, !tbaa !16
  %590 = icmp eq ptr %589, inttoptr (i64 1073873008 to ptr)
  br i1 %590, label %646, label %591

591:                                              ; preds = %586
  %592 = load ptr, ptr %5, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %592, i32 0, i32 0
  %594 = load ptr, ptr %593, align 8, !tbaa !16
  %595 = icmp eq ptr %594, inttoptr (i64 1073873032 to ptr)
  br i1 %595, label %646, label %596

596:                                              ; preds = %591
  %597 = load ptr, ptr %5, align 8, !tbaa !5
  %598 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %597, i32 0, i32 0
  %599 = load ptr, ptr %598, align 8, !tbaa !16
  %600 = icmp eq ptr %599, inttoptr (i64 1073873056 to ptr)
  br i1 %600, label %646, label %601

601:                                              ; preds = %596
  %602 = load ptr, ptr %5, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %602, i32 0, i32 0
  %604 = load ptr, ptr %603, align 8, !tbaa !16
  %605 = icmp eq ptr %604, inttoptr (i64 1073873080 to ptr)
  br i1 %605, label %646, label %606

606:                                              ; preds = %601
  %607 = load ptr, ptr %5, align 8, !tbaa !5
  %608 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %607, i32 0, i32 0
  %609 = load ptr, ptr %608, align 8, !tbaa !16
  %610 = icmp eq ptr %609, inttoptr (i64 1073873936 to ptr)
  br i1 %610, label %646, label %611

611:                                              ; preds = %606
  %612 = load ptr, ptr %5, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %612, i32 0, i32 0
  %614 = load ptr, ptr %613, align 8, !tbaa !16
  %615 = icmp eq ptr %614, inttoptr (i64 1073873960 to ptr)
  br i1 %615, label %646, label %616

616:                                              ; preds = %611
  %617 = load ptr, ptr %5, align 8, !tbaa !5
  %618 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %617, i32 0, i32 0
  %619 = load ptr, ptr %618, align 8, !tbaa !16
  %620 = icmp eq ptr %619, inttoptr (i64 1073873984 to ptr)
  br i1 %620, label %646, label %621

621:                                              ; preds = %616
  %622 = load ptr, ptr %5, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %622, i32 0, i32 0
  %624 = load ptr, ptr %623, align 8, !tbaa !16
  %625 = icmp eq ptr %624, inttoptr (i64 1073874008 to ptr)
  br i1 %625, label %646, label %626

626:                                              ; preds = %621
  %627 = load ptr, ptr %5, align 8, !tbaa !5
  %628 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %627, i32 0, i32 0
  %629 = load ptr, ptr %628, align 8, !tbaa !16
  %630 = icmp eq ptr %629, inttoptr (i64 1073874032 to ptr)
  br i1 %630, label %646, label %631

631:                                              ; preds = %626
  %632 = load ptr, ptr %5, align 8, !tbaa !5
  %633 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %632, i32 0, i32 0
  %634 = load ptr, ptr %633, align 8, !tbaa !16
  %635 = icmp eq ptr %634, inttoptr (i64 1073874056 to ptr)
  br i1 %635, label %646, label %636

636:                                              ; preds = %631
  %637 = load ptr, ptr %5, align 8, !tbaa !5
  %638 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %637, i32 0, i32 0
  %639 = load ptr, ptr %638, align 8, !tbaa !16
  %640 = icmp eq ptr %639, inttoptr (i64 1073874080 to ptr)
  br i1 %640, label %646, label %641

641:                                              ; preds = %636
  %642 = load ptr, ptr %5, align 8, !tbaa !5
  %643 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %642, i32 0, i32 0
  %644 = load ptr, ptr %643, align 8, !tbaa !16
  %645 = icmp eq ptr %644, inttoptr (i64 1073874104 to ptr)
  br label %646

646:                                              ; preds = %641, %636, %631, %626, %621, %616, %611, %606, %601, %596, %591, %586, %581, %576, %571, %566
  %647 = phi i1 [ true, %636 ], [ true, %631 ], [ true, %626 ], [ true, %621 ], [ true, %616 ], [ true, %611 ], [ true, %606 ], [ true, %601 ], [ true, %596 ], [ true, %591 ], [ true, %586 ], [ true, %581 ], [ true, %576 ], [ true, %571 ], [ true, %566 ], [ %645, %641 ]
  %648 = zext i1 %647 to i32
  %649 = icmp ne i32 %648, 0
  br i1 %649, label %650, label %657

650:                                              ; preds = %646
  %651 = load ptr, ptr %5, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %651, i32 0, i32 13
  %653 = load i32, ptr %652, align 8, !tbaa !19
  %654 = and i32 %653, 31
  %655 = shl i32 16, %654
  %656 = load ptr, ptr %12, align 8, !tbaa !5
  store volatile i32 %655, ptr %656, align 4, !tbaa !9
  br label %664

657:                                              ; preds = %646
  %658 = load ptr, ptr %5, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %658, i32 0, i32 13
  %660 = load i32, ptr %659, align 8, !tbaa !19
  %661 = and i32 %660, 31
  %662 = shl i32 4, %661
  %663 = load ptr, ptr %12, align 8, !tbaa !5
  store volatile i32 %662, ptr %663, align 4, !tbaa !9
  br label %664

664:                                              ; preds = %657, %650
  br label %665

665:                                              ; preds = %664, %563
  %666 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %666, ptr %4, align 4
  store i32 1, ptr %13, align 4
  br label %667

667:                                              ; preds = %665, %398, %384, %355, %164, %124, %30, %17
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #3
  %668 = load i32, ptr %4, align 4
  ret i32 %668
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 60}
!12 = !{!"__DMA_HandleTypeDef", !6, i64 0, !13, i64 8, !10, i64 56, !10, i64 60, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !10, i64 120, !10, i64 124, !10, i64 128, !6, i64 136, !6, i64 144, !10, i64 152, !6, i64 160, !6, i64 168, !10, i64 176}
!13 = !{!"", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44}
!14 = !{!12, !10, i64 120}
!15 = !{!12, !10, i64 56}
!16 = !{!12, !6, i64 0}
!17 = !{!18, !10, i64 0}
!18 = !{!"", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20}
!19 = !{!12, !10, i64 128}
!20 = !{!12, !10, i64 124}
!21 = !{!22, !10, i64 0}
!22 = !{!"", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16}
!23 = !{!12, !6, i64 160}
!24 = !{!12, !6, i64 168}
!25 = !{!26, !10, i64 0}
!26 = !{!"", !10, i64 0, !10, i64 4}
!27 = !{!12, !10, i64 176}
!28 = !{!26, !10, i64 4}
!29 = !{!12, !6, i64 144}
!30 = !{!12, !10, i64 152}
!31 = distinct !{!31, !32}
!32 = !{!"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"

declare i32 @HAL_GetTick() local_unnamed_addr #0

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

; Function Attrs: nounwind uwtable
define dso_local range(i32 0, 2) i32 @HAL_DMA_PollForTransfer(ptr noundef %0, i32 noundef %1, i32 noundef %2) local_unnamed_addr #1 {
  %4 = tail call i32 @HAL_GetTick() #2
  %5 = icmp eq ptr %0, null
  br i1 %5, label %136, label %6

6:                                                ; preds = %3
  %7 = getelementptr inbounds i8, ptr %0, i64 60
  %8 = load volatile i32, ptr %7, align 4, !tbaa !5
  %.not = icmp eq i32 %8, 2
  br i1 %.not, label %12, label %9

9:                                                ; preds = %6
  %10 = getelementptr inbounds i8, ptr %0, i64 120
  store volatile i32 128, ptr %10, align 8, !tbaa !12
  %11 = getelementptr inbounds i8, ptr %0, i64 56
  store i32 0, ptr %11, align 8, !tbaa !13
  br label %136

12:                                               ; preds = %6
  %13 = load ptr, ptr %0, align 8, !tbaa !14
  %magicptr = ptrtoint ptr %13 to i64
  switch i64 %magicptr, label %24 [
    i64 1073872912, label %.critedge
    i64 1073872936, label %.critedge
    i64 1073872960, label %.critedge
    i64 1073872984, label %.critedge
    i64 1073873008, label %.critedge
    i64 1073873032, label %.critedge
    i64 1073873056, label %.critedge
    i64 1073873080, label %.critedge
    i64 1073873936, label %.critedge
    i64 1073873960, label %.critedge
    i64 1073873984, label %.critedge
    i64 1073874008, label %.critedge
    i64 1073874032, label %.critedge
    i64 1073874056, label %.critedge
    i64 1073874080, label %.critedge
    i64 1073874104, label %.critedge
  ]

.critedge:                                        ; preds = %12, %12, %12, %12, %12, %12, %12, %12, %12, %12, %12, %12, %12, %12, %12, %12
  %14 = load volatile i32, ptr %13, align 4, !tbaa !15
  %15 = and i32 %14, 256
  %.not148 = icmp eq i32 %15, 0
  br i1 %.not148, label %18, label %16

16:                                               ; preds = %.critedge
  %17 = getelementptr inbounds i8, ptr %0, i64 120
  store volatile i32 256, ptr %17, align 8, !tbaa !12
  br label %136

18:                                               ; preds = %.critedge
  %19 = icmp eq i32 %1, 0
  %20 = getelementptr inbounds i8, ptr %0, i64 128
  %21 = load i32, ptr %20, align 8, !tbaa !17
  %22 = and i32 %21, 31
  %. = select i1 %19, i32 32, i32 16
  %23 = shl i32 %., %22
  br label %35

24:                                               ; preds = %12
  %25 = load volatile i32, ptr %13, align 4, !tbaa !18
  %26 = and i32 %25, 32
  %.not147 = icmp eq i32 %26, 0
  br i1 %.not147, label %29, label %27

27:                                               ; preds = %24
  %28 = getelementptr inbounds i8, ptr %0, i64 120
  store volatile i32 256, ptr %28, align 8, !tbaa !12
  br label %136

29:                                               ; preds = %24
  %30 = icmp eq i32 %1, 0
  %31 = getelementptr inbounds i8, ptr %0, i64 128
  %32 = load i32, ptr %31, align 8, !tbaa !17
  %33 = and i32 %32, 31
  %.212 = select i1 %30, i32 2, i32 4
  %34 = shl i32 %.212, %33
  br label %35

35:                                               ; preds = %29, %18
  %.sink203 = phi i64 [ 4, %29 ], [ 8, %18 ]
  %.2 = phi i32 [ %34, %29 ], [ %23, %18 ]
  %36 = getelementptr inbounds i8, ptr %0, i64 124
  %37 = load i32, ptr %36, align 4, !tbaa !20
  %38 = zext i32 %37 to i64
  %39 = inttoptr i64 %38 to ptr
  %40 = getelementptr inbounds i8, ptr %39, i64 %.sink203
  %41 = load volatile i32, ptr %39, align 4, !tbaa !21
  %42 = and i32 %41, %.2
  %43 = icmp eq i32 %42, 0
  br i1 %43, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %35
  %44 = getelementptr inbounds i8, ptr %0, i64 128
  %45 = getelementptr inbounds i8, ptr %0, i64 120
  %.not153 = icmp eq i32 %2, -1
  %46 = icmp eq i32 %2, 0
  %47 = getelementptr inbounds i8, ptr %0, i64 160
  %48 = getelementptr inbounds i8, ptr %0, i64 168
  %49 = getelementptr inbounds i8, ptr %0, i64 176
  %50 = getelementptr inbounds i8, ptr %0, i64 144
  %51 = getelementptr inbounds i8, ptr %0, i64 152
  br label %52

52:                                               ; preds = %.lr.ph, %113
  %53 = load ptr, ptr %0, align 8, !tbaa !14
  %magicptr191 = ptrtoint ptr %53 to i64
  switch i64 %magicptr191, label %77 [
    i64 1073872912, label %.critedge172
    i64 1073872936, label %.critedge172
    i64 1073872960, label %.critedge172
    i64 1073872984, label %.critedge172
    i64 1073873008, label %.critedge172
    i64 1073873032, label %.critedge172
    i64 1073873056, label %.critedge172
    i64 1073873080, label %.critedge172
    i64 1073873936, label %.critedge172
    i64 1073873960, label %.critedge172
    i64 1073873984, label %.critedge172
    i64 1073874008, label %.critedge172
    i64 1073874032, label %.critedge172
    i64 1073874056, label %.critedge172
    i64 1073874080, label %.critedge172
    i64 1073874104, label %.critedge172
  ]

.critedge172:                                     ; preds = %52, %52, %52, %52, %52, %52, %52, %52, %52, %52, %52, %52, %52, %52, %52, %52
  %54 = load volatile i32, ptr %39, align 4, !tbaa !21
  %55 = load i32, ptr %44, align 8, !tbaa !17
  %56 = and i32 %55, 31
  %57 = shl nuw i32 1, %56
  %58 = and i32 %57, %54
  %.not150 = icmp eq i32 %58, 0
  br i1 %.not150, label %62, label %59

59:                                               ; preds = %.critedge172
  %60 = load volatile i32, ptr %45, align 8, !tbaa !12
  %61 = or i32 %60, 2
  store volatile i32 %61, ptr %45, align 8, !tbaa !12
  store volatile i32 %57, ptr %40, align 4, !tbaa !21
  %.pre = load i32, ptr %44, align 8, !tbaa !17
  %.pre197 = and i32 %.pre, 31
  br label %62

62:                                               ; preds = %59, %.critedge172
  %.pre-phi = phi i32 [ %.pre197, %59 ], [ %56, %.critedge172 ]
  %63 = load volatile i32, ptr %39, align 4, !tbaa !21
  %64 = shl i32 4, %.pre-phi
  %65 = and i32 %64, %63
  %.not151 = icmp eq i32 %65, 0
  br i1 %.not151, label %69, label %66

66:                                               ; preds = %62
  %67 = load volatile i32, ptr %45, align 8, !tbaa !12
  %68 = or i32 %67, 4
  store volatile i32 %68, ptr %45, align 8, !tbaa !12
  store volatile i32 %64, ptr %40, align 4, !tbaa !21
  %.pre196 = load i32, ptr %44, align 8, !tbaa !17
  %.pre198 = and i32 %.pre196, 31
  br label %69

69:                                               ; preds = %66, %62
  %.pre-phi199 = phi i32 [ %.pre198, %66 ], [ %.pre-phi, %62 ]
  %70 = load volatile i32, ptr %39, align 4, !tbaa !21
  %71 = shl i32 8, %.pre-phi199
  %72 = and i32 %71, %70
  %.not152 = icmp eq i32 %72, 0
  br i1 %.not152, label %86, label %73

73:                                               ; preds = %69
  %74 = load volatile i32, ptr %45, align 8, !tbaa !12
  %75 = or i32 %74, 1
  store volatile i32 %75, ptr %45, align 8, !tbaa !12
  store volatile i32 %71, ptr %40, align 4, !tbaa !21
  store volatile i32 1, ptr %7, align 4, !tbaa !5
  %76 = getelementptr inbounds i8, ptr %0, i64 56
  store i32 0, ptr %76, align 8, !tbaa !13
  br label %136

77:                                               ; preds = %52
  %78 = load volatile i32, ptr %39, align 4, !tbaa !21
  %79 = load i32, ptr %44, align 8, !tbaa !17
  %80 = and i32 %79, 31
  %81 = shl i32 8, %80
  %82 = and i32 %81, %78
  %.not149 = icmp eq i32 %82, 0
  br i1 %.not149, label %86, label %83

83:                                               ; preds = %77
  %84 = shl nuw i32 1, %80
  store volatile i32 %84, ptr %39, align 4, !tbaa !21
  store volatile i32 1, ptr %45, align 8, !tbaa !12
  store volatile i32 1, ptr %7, align 4, !tbaa !5
  %85 = getelementptr inbounds i8, ptr %0, i64 56
  store i32 0, ptr %85, align 8, !tbaa !13
  br label %136

86:                                               ; preds = %77, %69
  br i1 %.not153, label %93, label %87

87:                                               ; preds = %86
  %88 = tail call i32 @HAL_GetTick() #2
  %89 = sub i32 %88, %4
  %90 = icmp ugt i32 %89, %2
  %or.cond = or i1 %46, %90
  br i1 %or.cond, label %91, label %93

91:                                               ; preds = %87
  store volatile i32 32, ptr %45, align 8, !tbaa !12
  %92 = tail call i32 @HAL_DMA_Abort(ptr noundef nonnull %0)
  br label %136

93:                                               ; preds = %87, %86
  %94 = load ptr, ptr %47, align 8, !tbaa !22
  %.not154 = icmp eq ptr %94, null
  br i1 %.not154, label %104, label %95

95:                                               ; preds = %93
  %96 = load ptr, ptr %48, align 8, !tbaa !23
  %97 = load volatile i32, ptr %96, align 4, !tbaa !24
  %98 = load i32, ptr %49, align 8, !tbaa !26
  %99 = and i32 %98, %97
  %.not155 = icmp eq i32 %99, 0
  br i1 %.not155, label %104, label %100

100:                                              ; preds = %95
  %101 = getelementptr inbounds i8, ptr %96, i64 4
  store volatile i32 %98, ptr %101, align 4, !tbaa !27
  %102 = load volatile i32, ptr %45, align 8, !tbaa !12
  %103 = or i32 %102, 1024
  store volatile i32 %103, ptr %45, align 8, !tbaa !12
  br label %104

104:                                              ; preds = %95, %100, %93
  %105 = load ptr, ptr %50, align 8, !tbaa !28
  %106 = load volatile i32, ptr %105, align 4, !tbaa !24
  %107 = load i32, ptr %51, align 8, !tbaa !29
  %108 = and i32 %107, %106
  %.not156 = icmp eq i32 %108, 0
  br i1 %.not156, label %113, label %109

109:                                              ; preds = %104
  %110 = getelementptr inbounds i8, ptr %105, i64 4
  store volatile i32 %107, ptr %110, align 4, !tbaa !27
  %111 = load volatile i32, ptr %45, align 8, !tbaa !12
  %112 = or i32 %111, 512
  store volatile i32 %112, ptr %45, align 8, !tbaa !12
  br label %113

113:                                              ; preds = %109, %104
  %114 = load volatile i32, ptr %39, align 4, !tbaa !21
  %115 = and i32 %114, %.2
  %116 = icmp eq i32 %115, 0
  br i1 %116, label %52, label %._crit_edge, !llvm.loop !30

._crit_edge:                                      ; preds = %113, %35
  %117 = icmp eq i32 %1, 0
  %118 = load ptr, ptr %0, align 8, !tbaa !14
  %magicptr192 = ptrtoint ptr %118 to i64
  br i1 %117, label %119, label %126

119:                                              ; preds = %._crit_edge
  switch i64 %magicptr192, label %120 [
    i64 1073872912, label %.critedge181
    i64 1073872936, label %.critedge181
    i64 1073872960, label %.critedge181
    i64 1073872984, label %.critedge181
    i64 1073873008, label %.critedge181
    i64 1073873032, label %.critedge181
    i64 1073873056, label %.critedge181
    i64 1073873080, label %.critedge181
    i64 1073873936, label %.critedge181
    i64 1073873960, label %.critedge181
    i64 1073873984, label %.critedge181
    i64 1073874008, label %.critedge181
    i64 1073874032, label %.critedge181
    i64 1073874056, label %.critedge181
    i64 1073874080, label %.critedge181
    i64 1073874104, label %.critedge181
  ]

120:                                              ; preds = %119
  br label %.critedge181

.critedge181:                                     ; preds = %119, %119, %119, %119, %119, %119, %119, %119, %119, %119, %119, %119, %119, %119, %119, %119, %120
  %.sink208 = phi i32 [ 2, %120 ], [ 48, %119 ], [ 48, %119 ], [ 48, %119 ], [ 48, %119 ], [ 48, %119 ], [ 48, %119 ], [ 48, %119 ], [ 48, %119 ], [ 48, %119 ], [ 48, %119 ], [ 48, %119 ], [ 48, %119 ], [ 48, %119 ], [ 48, %119 ], [ 48, %119 ], [ 48, %119 ]
  %121 = getelementptr inbounds i8, ptr %0, i64 128
  %122 = load i32, ptr %121, align 8, !tbaa !17
  %123 = and i32 %122, 31
  %124 = shl i32 %.sink208, %123
  store volatile i32 %124, ptr %40, align 4, !tbaa !21
  %125 = getelementptr inbounds i8, ptr %0, i64 56
  store i32 0, ptr %125, align 8, !tbaa !13
  store volatile i32 1, ptr %7, align 4, !tbaa !5
  br label %136

126:                                              ; preds = %._crit_edge
  switch i64 %magicptr192, label %131 [
    i64 1073872912, label %.critedge190
    i64 1073872936, label %.critedge190
    i64 1073872960, label %.critedge190
    i64 1073872984, label %.critedge190
    i64 1073873008, label %.critedge190
    i64 1073873032, label %.critedge190
    i64 1073873056, label %.critedge190
    i64 1073873080, label %.critedge190
    i64 1073873936, label %.critedge190
    i64 1073873960, label %.critedge190
    i64 1073873984, label %.critedge190
    i64 1073874008, label %.critedge190
    i64 1073874032, label %.critedge190
    i64 1073874056, label %.critedge190
    i64 1073874080, label %.critedge190
    i64 1073874104, label %.critedge190
  ]

.critedge190:                                     ; preds = %126, %126, %126, %126, %126, %126, %126, %126, %126, %126, %126, %126, %126, %126, %126, %126
  %127 = getelementptr inbounds i8, ptr %0, i64 128
  %128 = load i32, ptr %127, align 8, !tbaa !17
  %129 = and i32 %128, 31
  %130 = shl i32 16, %129
  store volatile i32 %130, ptr %40, align 4, !tbaa !21
  br label %136

131:                                              ; preds = %126
  %132 = getelementptr inbounds i8, ptr %0, i64 128
  %133 = load i32, ptr %132, align 8, !tbaa !17
  %134 = and i32 %133, 31
  %135 = shl i32 4, %134
  store volatile i32 %135, ptr %40, align 4, !tbaa !21
  br label %136

136:                                              ; preds = %.critedge181, %131, %.critedge190, %3, %91, %83, %73, %27, %16, %9
  %.0139 = phi i32 [ 1, %9 ], [ 1, %16 ], [ 1, %73 ], [ 1, %91 ], [ 1, %83 ], [ 1, %27 ], [ 1, %3 ], [ 0, %.critedge190 ], [ 0, %131 ], [ 0, %.critedge181 ]
  ret i32 %.0139
}

attributes #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 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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, !11, i64 60}
!6 = !{!"__DMA_HandleTypeDef", !7, i64 0, !10, i64 8, !11, i64 56, !11, i64 60, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112, !11, i64 120, !11, i64 124, !11, i64 128, !7, i64 136, !7, i64 144, !11, i64 152, !7, i64 160, !7, i64 168, !11, i64 176}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44}
!11 = !{!"int", !8, i64 0}
!12 = !{!6, !11, i64 120}
!13 = !{!6, !11, i64 56}
!14 = !{!6, !7, i64 0}
!15 = !{!16, !11, i64 0}
!16 = !{!"", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20}
!17 = !{!6, !11, i64 128}
!18 = !{!19, !11, i64 0}
!19 = !{!"", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16}
!20 = !{!6, !11, i64 124}
!21 = !{!11, !11, i64 0}
!22 = !{!6, !7, i64 160}
!23 = !{!6, !7, i64 168}
!24 = !{!25, !11, i64 0}
!25 = !{!"", !11, i64 0, !11, i64 4}
!26 = !{!6, !11, i64 176}
!27 = !{!25, !11, i64 4}
!28 = !{!6, !7, i64 144}
!29 = !{!6, !11, i64 152}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}


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