; LLVM IR from ctlst-tech/catpilot :: bsp/mcu/core/stm32/h753/hal/src (stm32h7xx_hal_dma)

; 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.BDMA_Channel_TypeDef = type { i32, i32, i32, i32, i32 }
%struct.DMAMUX_Channel_TypeDef = type { i32 }
%struct.DMA_Base_Registers = type { i32, i32, i32 }
%struct.BDMA_Base_Registers = type { i32, i32 }
%struct.DMAMUX_ChannelStatus_TypeDef = type { i32, i32 }
%struct.DMAMUX_RequestGen_TypeDef = type { i32 }
%struct.DMAMUX_RequestGenStatus_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
define dso_local i32 @HAL_DMA_Abort(ptr noundef %0) #2 {
  %2 = alloca i32, align 4
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #3
  %9 = call i32 @HAL_GetTick()
  store i32 %9, ptr %7, align 4, !tbaa !9
  %10 = load ptr, ptr %3, align 8, !tbaa !5
  %11 = icmp eq ptr %10, null
  br i1 %11, label %12, label %13

12:                                               ; preds = %1
  store i32 1, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %671

13:                                               ; preds = %1
  %14 = load ptr, ptr %3, align 8, !tbaa !5
  %15 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %14, i32 0, i32 3
  %16 = load volatile i32, ptr %15, align 4, !tbaa !11
  %17 = icmp ne i32 %16, 2
  br i1 %17, label %18, label %26

18:                                               ; preds = %13
  %19 = load ptr, ptr %3, align 8, !tbaa !5
  %20 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %19, i32 0, i32 11
  store volatile i32 128, ptr %20, align 8, !tbaa !14
  br label %21

21:                                               ; preds = %18
  %22 = load ptr, ptr %3, align 8, !tbaa !5
  %23 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %22, i32 0, i32 2
  store i32 0, ptr %23, align 8, !tbaa !15
  br label %24

24:                                               ; preds = %21
  br label %25

25:                                               ; preds = %24
  store i32 1, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %671

26:                                               ; preds = %13
  %27 = load ptr, ptr %3, align 8, !tbaa !5
  %28 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %27, i32 0, i32 0
  %29 = load ptr, ptr %28, align 8, !tbaa !16
  %30 = icmp eq ptr %29, inttoptr (i64 1073872912 to ptr)
  br i1 %30, label %106, label %31

31:                                               ; preds = %26
  %32 = load ptr, ptr %3, 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 1073872936 to ptr)
  br i1 %35, label %106, label %36

36:                                               ; preds = %31
  %37 = load ptr, ptr %3, 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 1073872960 to ptr)
  br i1 %40, label %106, label %41

41:                                               ; preds = %36
  %42 = load ptr, ptr %3, 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 1073872984 to ptr)
  br i1 %45, label %106, label %46

46:                                               ; preds = %41
  %47 = load ptr, ptr %3, 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 1073873008 to ptr)
  br i1 %50, label %106, label %51

51:                                               ; preds = %46
  %52 = load ptr, ptr %3, 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 1073873032 to ptr)
  br i1 %55, label %106, label %56

56:                                               ; preds = %51
  %57 = load ptr, ptr %3, 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 1073873056 to ptr)
  br i1 %60, label %106, label %61

61:                                               ; preds = %56
  %62 = load ptr, ptr %3, 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 1073873080 to ptr)
  br i1 %65, label %106, label %66

66:                                               ; preds = %61
  %67 = load ptr, ptr %3, 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 1073873936 to ptr)
  br i1 %70, label %106, label %71

71:                                               ; preds = %66
  %72 = load ptr, ptr %3, 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 1073873960 to ptr)
  br i1 %75, label %106, label %76

76:                                               ; preds = %71
  %77 = load ptr, ptr %3, 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 1073873984 to ptr)
  br i1 %80, label %106, label %81

81:                                               ; preds = %76
  %82 = load ptr, ptr %3, 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 1073874008 to ptr)
  br i1 %85, label %106, label %86

86:                                               ; preds = %81
  %87 = load ptr, ptr %3, 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 1073874032 to ptr)
  br i1 %90, label %106, label %91

91:                                               ; preds = %86
  %92 = load ptr, ptr %3, 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 1073874056 to ptr)
  br i1 %95, label %106, label %96

96:                                               ; preds = %91
  %97 = load ptr, ptr %3, 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 1073874080 to ptr)
  br i1 %100, label %106, label %101

101:                                              ; preds = %96
  %102 = load ptr, ptr %3, 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 1073874104 to ptr)
  br label %106

106:                                              ; preds = %101, %96, %91, %86, %81, %76, %71, %66, %61, %56, %51, %46, %41, %36, %31, %26
  %107 = phi i1 [ 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 ], [ true, %26 ], [ %105, %101 ]
  %108 = zext i1 %107 to i32
  %109 = icmp ne i32 %108, 0
  br i1 %109, label %110, label %127

110:                                              ; preds = %106
  %111 = load ptr, ptr %3, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %111, i32 0, i32 0
  %113 = load ptr, ptr %112, align 8, !tbaa !16
  %114 = getelementptr inbounds %struct.DMA_Stream_TypeDef, ptr %113, i32 0, i32 0
  %115 = load volatile i32, ptr %114, align 4, !tbaa !17
  %116 = and i32 %115, -31
  store volatile i32 %116, ptr %114, align 4, !tbaa !17
  %117 = load ptr, ptr %3, align 8, !tbaa !5
  %118 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %117, i32 0, i32 0
  %119 = load ptr, ptr %118, align 8, !tbaa !16
  %120 = getelementptr inbounds %struct.DMA_Stream_TypeDef, ptr %119, i32 0, i32 5
  %121 = load volatile i32, ptr %120, align 4, !tbaa !19
  %122 = and i32 %121, -129
  store volatile i32 %122, ptr %120, align 4, !tbaa !19
  %123 = load ptr, ptr %3, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %123, i32 0, i32 0
  %125 = load ptr, ptr %124, align 8, !tbaa !16
  %126 = getelementptr inbounds %struct.DMA_Stream_TypeDef, ptr %125, i32 0, i32 0
  store ptr %126, ptr %6, align 8, !tbaa !5
  br label %140

127:                                              ; preds = %106
  %128 = load ptr, ptr %3, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %128, i32 0, i32 0
  %130 = load ptr, ptr %129, align 8, !tbaa !16
  %131 = getelementptr inbounds %struct.BDMA_Channel_TypeDef, ptr %130, i32 0, i32 0
  %132 = load volatile i32, ptr %131, align 4, !tbaa !20
  %133 = zext i32 %132 to i64
  %134 = and i64 %133, -15
  %135 = trunc i64 %134 to i32
  store volatile i32 %135, ptr %131, align 4, !tbaa !20
  %136 = load ptr, ptr %3, align 8, !tbaa !5
  %137 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %136, i32 0, i32 0
  %138 = load ptr, ptr %137, align 8, !tbaa !16
  %139 = getelementptr inbounds %struct.BDMA_Channel_TypeDef, ptr %138, i32 0, i32 0
  store ptr %139, ptr %6, align 8, !tbaa !5
  br label %140

140:                                              ; preds = %127, %110
  %141 = load ptr, ptr %3, align 8, !tbaa !5
  %142 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %141, i32 0, i32 0
  %143 = load ptr, ptr %142, align 8, !tbaa !16
  %144 = icmp eq ptr %143, inttoptr (i64 1073872912 to ptr)
  br i1 %144, label %260, label %145

145:                                              ; preds = %140
  %146 = load ptr, ptr %3, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %146, i32 0, i32 0
  %148 = load ptr, ptr %147, align 8, !tbaa !16
  %149 = icmp eq ptr %148, inttoptr (i64 1073872936 to ptr)
  br i1 %149, label %260, label %150

150:                                              ; preds = %145
  %151 = load ptr, ptr %3, align 8, !tbaa !5
  %152 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %151, i32 0, i32 0
  %153 = load ptr, ptr %152, align 8, !tbaa !16
  %154 = icmp eq ptr %153, inttoptr (i64 1073872960 to ptr)
  br i1 %154, label %260, label %155

155:                                              ; preds = %150
  %156 = load ptr, ptr %3, 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 = icmp eq ptr %158, inttoptr (i64 1073872984 to ptr)
  br i1 %159, label %260, label %160

160:                                              ; preds = %155
  %161 = load ptr, ptr %3, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %161, i32 0, i32 0
  %163 = load ptr, ptr %162, align 8, !tbaa !16
  %164 = icmp eq ptr %163, inttoptr (i64 1073873008 to ptr)
  br i1 %164, label %260, label %165

165:                                              ; preds = %160
  %166 = load ptr, ptr %3, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %166, i32 0, i32 0
  %168 = load ptr, ptr %167, align 8, !tbaa !16
  %169 = icmp eq ptr %168, inttoptr (i64 1073873032 to ptr)
  br i1 %169, label %260, label %170

170:                                              ; preds = %165
  %171 = load ptr, ptr %3, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %171, i32 0, i32 0
  %173 = load ptr, ptr %172, align 8, !tbaa !16
  %174 = icmp eq ptr %173, inttoptr (i64 1073873056 to ptr)
  br i1 %174, label %260, label %175

175:                                              ; preds = %170
  %176 = load ptr, ptr %3, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %176, i32 0, i32 0
  %178 = load ptr, ptr %177, align 8, !tbaa !16
  %179 = icmp eq ptr %178, inttoptr (i64 1073873080 to ptr)
  br i1 %179, label %260, label %180

180:                                              ; preds = %175
  %181 = load ptr, ptr %3, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %181, i32 0, i32 0
  %183 = load ptr, ptr %182, align 8, !tbaa !16
  %184 = icmp eq ptr %183, inttoptr (i64 1073873936 to ptr)
  br i1 %184, label %260, label %185

185:                                              ; preds = %180
  %186 = load ptr, ptr %3, align 8, !tbaa !5
  %187 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %186, i32 0, i32 0
  %188 = load ptr, ptr %187, align 8, !tbaa !16
  %189 = icmp eq ptr %188, inttoptr (i64 1073873960 to ptr)
  br i1 %189, label %260, label %190

190:                                              ; preds = %185
  %191 = load ptr, ptr %3, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %191, i32 0, i32 0
  %193 = load ptr, ptr %192, align 8, !tbaa !16
  %194 = icmp eq ptr %193, inttoptr (i64 1073873984 to ptr)
  br i1 %194, label %260, label %195

195:                                              ; preds = %190
  %196 = load ptr, ptr %3, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %196, i32 0, i32 0
  %198 = load ptr, ptr %197, align 8, !tbaa !16
  %199 = icmp eq ptr %198, inttoptr (i64 1073874008 to ptr)
  br i1 %199, label %260, label %200

200:                                              ; preds = %195
  %201 = load ptr, ptr %3, align 8, !tbaa !5
  %202 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %201, i32 0, i32 0
  %203 = load ptr, ptr %202, align 8, !tbaa !16
  %204 = icmp eq ptr %203, inttoptr (i64 1073874032 to ptr)
  br i1 %204, label %260, label %205

205:                                              ; preds = %200
  %206 = load ptr, ptr %3, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %206, i32 0, i32 0
  %208 = load ptr, ptr %207, align 8, !tbaa !16
  %209 = icmp eq ptr %208, inttoptr (i64 1073874056 to ptr)
  br i1 %209, label %260, label %210

210:                                              ; preds = %205
  %211 = load ptr, ptr %3, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %211, i32 0, i32 0
  %213 = load ptr, ptr %212, align 8, !tbaa !16
  %214 = icmp eq ptr %213, inttoptr (i64 1073874080 to ptr)
  br i1 %214, label %260, label %215

215:                                              ; preds = %210
  %216 = load ptr, ptr %3, align 8, !tbaa !5
  %217 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %216, i32 0, i32 0
  %218 = load ptr, ptr %217, align 8, !tbaa !16
  %219 = icmp eq ptr %218, inttoptr (i64 1073874104 to ptr)
  br i1 %219, label %260, label %220

220:                                              ; preds = %215
  %221 = load ptr, ptr %3, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %221, i32 0, i32 0
  %223 = load ptr, ptr %222, align 8, !tbaa !16
  %224 = icmp eq ptr %223, inttoptr (i64 1476547592 to ptr)
  br i1 %224, label %260, label %225

225:                                              ; preds = %220
  %226 = load ptr, ptr %3, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %226, i32 0, i32 0
  %228 = load ptr, ptr %227, align 8, !tbaa !16
  %229 = icmp eq ptr %228, inttoptr (i64 1476547612 to ptr)
  br i1 %229, label %260, label %230

230:                                              ; preds = %225
  %231 = load ptr, ptr %3, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %231, i32 0, i32 0
  %233 = load ptr, ptr %232, align 8, !tbaa !16
  %234 = icmp eq ptr %233, inttoptr (i64 1476547632 to ptr)
  br i1 %234, label %260, label %235

235:                                              ; preds = %230
  %236 = load ptr, ptr %3, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %236, i32 0, i32 0
  %238 = load ptr, ptr %237, align 8, !tbaa !16
  %239 = icmp eq ptr %238, inttoptr (i64 1476547652 to ptr)
  br i1 %239, label %260, label %240

240:                                              ; preds = %235
  %241 = load ptr, ptr %3, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %241, i32 0, i32 0
  %243 = load ptr, ptr %242, align 8, !tbaa !16
  %244 = icmp eq ptr %243, inttoptr (i64 1476547672 to ptr)
  br i1 %244, label %260, label %245

245:                                              ; preds = %240
  %246 = load ptr, ptr %3, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %246, i32 0, i32 0
  %248 = load ptr, ptr %247, align 8, !tbaa !16
  %249 = icmp eq ptr %248, inttoptr (i64 1476547692 to ptr)
  br i1 %249, label %260, label %250

250:                                              ; preds = %245
  %251 = load ptr, ptr %3, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %251, i32 0, i32 0
  %253 = load ptr, ptr %252, align 8, !tbaa !16
  %254 = icmp eq ptr %253, inttoptr (i64 1476547712 to ptr)
  br i1 %254, label %260, label %255

255:                                              ; preds = %250
  %256 = load ptr, ptr %3, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %256, i32 0, i32 0
  %258 = load ptr, ptr %257, align 8, !tbaa !16
  %259 = icmp eq ptr %258, inttoptr (i64 1476547732 to ptr)
  br label %260

260:                                              ; preds = %255, %250, %245, %240, %235, %230, %225, %220, %215, %210, %205, %200, %195, %190, %185, %180, %175, %170, %165, %160, %155, %150, %145, %140
  %261 = phi i1 [ true, %250 ], [ true, %245 ], [ true, %240 ], [ true, %235 ], [ true, %230 ], [ true, %225 ], [ true, %220 ], [ true, %215 ], [ true, %210 ], [ true, %205 ], [ true, %200 ], [ true, %195 ], [ true, %190 ], [ true, %185 ], [ true, %180 ], [ true, %175 ], [ true, %170 ], [ true, %165 ], [ true, %160 ], [ true, %155 ], [ true, %150 ], [ true, %145 ], [ true, %140 ], [ %259, %255 ]
  %262 = zext i1 %261 to i32
  %263 = icmp ne i32 %262, 0
  br i1 %263, label %264, label %273

264:                                              ; preds = %260
  %265 = load ptr, ptr %3, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %265, i32 0, i32 14
  %267 = load ptr, ptr %266, align 8, !tbaa !22
  %268 = getelementptr inbounds %struct.DMAMUX_Channel_TypeDef, ptr %267, i32 0, i32 0
  %269 = load volatile i32, ptr %268, align 4, !tbaa !23
  %270 = zext i32 %269 to i64
  %271 = and i64 %270, -257
  %272 = trunc i64 %271 to i32
  store volatile i32 %272, ptr %268, align 4, !tbaa !23
  br label %273

273:                                              ; preds = %264, %260
  %274 = load ptr, ptr %3, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %274, i32 0, i32 0
  %276 = load ptr, ptr %275, align 8, !tbaa !16
  %277 = icmp eq ptr %276, inttoptr (i64 1073872912 to ptr)
  br i1 %277, label %353, label %278

278:                                              ; preds = %273
  %279 = load ptr, ptr %3, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %279, i32 0, i32 0
  %281 = load ptr, ptr %280, align 8, !tbaa !16
  %282 = icmp eq ptr %281, inttoptr (i64 1073872936 to ptr)
  br i1 %282, label %353, label %283

283:                                              ; preds = %278
  %284 = load ptr, ptr %3, align 8, !tbaa !5
  %285 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %284, i32 0, i32 0
  %286 = load ptr, ptr %285, align 8, !tbaa !16
  %287 = icmp eq ptr %286, inttoptr (i64 1073872960 to ptr)
  br i1 %287, label %353, label %288

288:                                              ; preds = %283
  %289 = load ptr, ptr %3, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %289, i32 0, i32 0
  %291 = load ptr, ptr %290, align 8, !tbaa !16
  %292 = icmp eq ptr %291, inttoptr (i64 1073872984 to ptr)
  br i1 %292, label %353, label %293

293:                                              ; preds = %288
  %294 = load ptr, ptr %3, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %294, i32 0, i32 0
  %296 = load ptr, ptr %295, align 8, !tbaa !16
  %297 = icmp eq ptr %296, inttoptr (i64 1073873008 to ptr)
  br i1 %297, label %353, label %298

298:                                              ; preds = %293
  %299 = load ptr, ptr %3, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %299, i32 0, i32 0
  %301 = load ptr, ptr %300, align 8, !tbaa !16
  %302 = icmp eq ptr %301, inttoptr (i64 1073873032 to ptr)
  br i1 %302, label %353, label %303

303:                                              ; preds = %298
  %304 = load ptr, ptr %3, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %304, i32 0, i32 0
  %306 = load ptr, ptr %305, align 8, !tbaa !16
  %307 = icmp eq ptr %306, inttoptr (i64 1073873056 to ptr)
  br i1 %307, label %353, label %308

308:                                              ; preds = %303
  %309 = load ptr, ptr %3, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %309, i32 0, i32 0
  %311 = load ptr, ptr %310, align 8, !tbaa !16
  %312 = icmp eq ptr %311, inttoptr (i64 1073873080 to ptr)
  br i1 %312, label %353, label %313

313:                                              ; preds = %308
  %314 = load ptr, ptr %3, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %314, i32 0, i32 0
  %316 = load ptr, ptr %315, align 8, !tbaa !16
  %317 = icmp eq ptr %316, inttoptr (i64 1073873936 to ptr)
  br i1 %317, label %353, label %318

318:                                              ; preds = %313
  %319 = load ptr, ptr %3, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %319, i32 0, i32 0
  %321 = load ptr, ptr %320, align 8, !tbaa !16
  %322 = icmp eq ptr %321, inttoptr (i64 1073873960 to ptr)
  br i1 %322, label %353, label %323

323:                                              ; preds = %318
  %324 = load ptr, ptr %3, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %324, i32 0, i32 0
  %326 = load ptr, ptr %325, align 8, !tbaa !16
  %327 = icmp eq ptr %326, inttoptr (i64 1073873984 to ptr)
  br i1 %327, label %353, label %328

328:                                              ; preds = %323
  %329 = load ptr, ptr %3, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %329, i32 0, i32 0
  %331 = load ptr, ptr %330, align 8, !tbaa !16
  %332 = icmp eq ptr %331, inttoptr (i64 1073874008 to ptr)
  br i1 %332, label %353, label %333

333:                                              ; preds = %328
  %334 = load ptr, ptr %3, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %334, i32 0, i32 0
  %336 = load ptr, ptr %335, align 8, !tbaa !16
  %337 = icmp eq ptr %336, inttoptr (i64 1073874032 to ptr)
  br i1 %337, label %353, label %338

338:                                              ; preds = %333
  %339 = load ptr, ptr %3, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %339, i32 0, i32 0
  %341 = load ptr, ptr %340, align 8, !tbaa !16
  %342 = icmp eq ptr %341, inttoptr (i64 1073874056 to ptr)
  br i1 %342, label %353, label %343

343:                                              ; preds = %338
  %344 = load ptr, ptr %3, align 8, !tbaa !5
  %345 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %344, i32 0, i32 0
  %346 = load ptr, ptr %345, align 8, !tbaa !16
  %347 = icmp eq ptr %346, inttoptr (i64 1073874080 to ptr)
  br i1 %347, label %353, label %348

348:                                              ; preds = %343
  %349 = load ptr, ptr %3, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %349, i32 0, i32 0
  %351 = load ptr, ptr %350, align 8, !tbaa !16
  %352 = icmp eq ptr %351, inttoptr (i64 1073874104 to ptr)
  br i1 %352, label %353, label %362

353:                                              ; preds = %348, %343, %338, %333, %328, %323, %318, %313, %308, %303, %298, %293, %288, %283, %278, %273
  %354 = load ptr, ptr %3, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %354, i32 0, i32 0
  %356 = load ptr, ptr %355, align 8, !tbaa !16
  %357 = getelementptr inbounds %struct.DMA_Stream_TypeDef, ptr %356, i32 0, i32 0
  %358 = load volatile i32, ptr %357, align 4, !tbaa !17
  %359 = zext i32 %358 to i64
  %360 = and i64 %359, -2
  %361 = trunc i64 %360 to i32
  store volatile i32 %361, ptr %357, align 4, !tbaa !17
  br label %371

362:                                              ; preds = %348
  %363 = load ptr, ptr %3, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %363, i32 0, i32 0
  %365 = load ptr, ptr %364, align 8, !tbaa !16
  %366 = getelementptr inbounds %struct.BDMA_Channel_TypeDef, ptr %365, i32 0, i32 0
  %367 = load volatile i32, ptr %366, align 4, !tbaa !20
  %368 = zext i32 %367 to i64
  %369 = and i64 %368, -2
  %370 = trunc i64 %369 to i32
  store volatile i32 %370, ptr %366, align 4, !tbaa !20
  br label %371

371:                                              ; preds = %362, %353
  %372 = phi i32 [ %361, %353 ], [ %370, %362 ]
  br label %373

373:                                              ; preds = %394, %371
  %374 = load ptr, ptr %6, align 8, !tbaa !5
  %375 = load volatile i32, ptr %374, align 4, !tbaa !9
  %376 = zext i32 %375 to i64
  %377 = and i64 %376, 1
  %378 = icmp ne i64 %377, 0
  br i1 %378, label %379, label %395

379:                                              ; preds = %373
  %380 = call i32 @HAL_GetTick()
  %381 = load i32, ptr %7, align 4, !tbaa !9
  %382 = sub i32 %380, %381
  %383 = icmp ugt i32 %382, 5
  br i1 %383, label %384, label %394

384:                                              ; preds = %379
  %385 = load ptr, ptr %3, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %385, i32 0, i32 11
  store volatile i32 32, ptr %386, align 8, !tbaa !14
  %387 = load ptr, ptr %3, align 8, !tbaa !5
  %388 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %387, i32 0, i32 3
  store volatile i32 3, ptr %388, align 4, !tbaa !11
  br label %389

389:                                              ; preds = %384
  %390 = load ptr, ptr %3, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %390, i32 0, i32 2
  store i32 0, ptr %391, align 8, !tbaa !15
  br label %392

392:                                              ; preds = %389
  br label %393

393:                                              ; preds = %392
  store i32 1, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %671

394:                                              ; preds = %379
  br label %373, !llvm.loop !25

395:                                              ; preds = %373
  %396 = load ptr, ptr %3, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %396, i32 0, i32 0
  %398 = load ptr, ptr %397, align 8, !tbaa !16
  %399 = icmp eq ptr %398, inttoptr (i64 1073872912 to ptr)
  br i1 %399, label %475, label %400

400:                                              ; preds = %395
  %401 = load ptr, ptr %3, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %401, i32 0, i32 0
  %403 = load ptr, ptr %402, align 8, !tbaa !16
  %404 = icmp eq ptr %403, inttoptr (i64 1073872936 to ptr)
  br i1 %404, label %475, label %405

405:                                              ; preds = %400
  %406 = load ptr, ptr %3, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %406, i32 0, i32 0
  %408 = load ptr, ptr %407, align 8, !tbaa !16
  %409 = icmp eq ptr %408, inttoptr (i64 1073872960 to ptr)
  br i1 %409, label %475, label %410

410:                                              ; preds = %405
  %411 = load ptr, ptr %3, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %411, i32 0, i32 0
  %413 = load ptr, ptr %412, align 8, !tbaa !16
  %414 = icmp eq ptr %413, inttoptr (i64 1073872984 to ptr)
  br i1 %414, label %475, label %415

415:                                              ; preds = %410
  %416 = load ptr, ptr %3, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %416, i32 0, i32 0
  %418 = load ptr, ptr %417, align 8, !tbaa !16
  %419 = icmp eq ptr %418, inttoptr (i64 1073873008 to ptr)
  br i1 %419, label %475, label %420

420:                                              ; preds = %415
  %421 = load ptr, ptr %3, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %421, i32 0, i32 0
  %423 = load ptr, ptr %422, align 8, !tbaa !16
  %424 = icmp eq ptr %423, inttoptr (i64 1073873032 to ptr)
  br i1 %424, label %475, label %425

425:                                              ; preds = %420
  %426 = load ptr, ptr %3, align 8, !tbaa !5
  %427 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %426, i32 0, i32 0
  %428 = load ptr, ptr %427, align 8, !tbaa !16
  %429 = icmp eq ptr %428, inttoptr (i64 1073873056 to ptr)
  br i1 %429, label %475, label %430

430:                                              ; preds = %425
  %431 = load ptr, ptr %3, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %431, i32 0, i32 0
  %433 = load ptr, ptr %432, align 8, !tbaa !16
  %434 = icmp eq ptr %433, inttoptr (i64 1073873080 to ptr)
  br i1 %434, label %475, label %435

435:                                              ; preds = %430
  %436 = load ptr, ptr %3, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %436, i32 0, i32 0
  %438 = load ptr, ptr %437, align 8, !tbaa !16
  %439 = icmp eq ptr %438, inttoptr (i64 1073873936 to ptr)
  br i1 %439, label %475, label %440

440:                                              ; preds = %435
  %441 = load ptr, ptr %3, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %441, i32 0, i32 0
  %443 = load ptr, ptr %442, align 8, !tbaa !16
  %444 = icmp eq ptr %443, inttoptr (i64 1073873960 to ptr)
  br i1 %444, label %475, label %445

445:                                              ; preds = %440
  %446 = load ptr, ptr %3, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %446, i32 0, i32 0
  %448 = load ptr, ptr %447, align 8, !tbaa !16
  %449 = icmp eq ptr %448, inttoptr (i64 1073873984 to ptr)
  br i1 %449, label %475, label %450

450:                                              ; preds = %445
  %451 = load ptr, ptr %3, align 8, !tbaa !5
  %452 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %451, i32 0, i32 0
  %453 = load ptr, ptr %452, align 8, !tbaa !16
  %454 = icmp eq ptr %453, inttoptr (i64 1073874008 to ptr)
  br i1 %454, label %475, label %455

455:                                              ; preds = %450
  %456 = load ptr, ptr %3, align 8, !tbaa !5
  %457 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %456, i32 0, i32 0
  %458 = load ptr, ptr %457, align 8, !tbaa !16
  %459 = icmp eq ptr %458, inttoptr (i64 1073874032 to ptr)
  br i1 %459, label %475, label %460

460:                                              ; preds = %455
  %461 = load ptr, ptr %3, 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 1073874056 to ptr)
  br i1 %464, label %475, label %465

465:                                              ; preds = %460
  %466 = load ptr, ptr %3, 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 1073874080 to ptr)
  br i1 %469, label %475, label %470

470:                                              ; preds = %465
  %471 = load ptr, ptr %3, 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 1073874104 to ptr)
  br label %475

475:                                              ; preds = %470, %465, %460, %455, %450, %445, %440, %435, %430, %425, %420, %415, %410, %405, %400, %395
  %476 = phi i1 [ true, %465 ], [ true, %460 ], [ true, %455 ], [ true, %450 ], [ true, %445 ], [ true, %440 ], [ true, %435 ], [ true, %430 ], [ true, %425 ], [ true, %420 ], [ true, %415 ], [ true, %410 ], [ true, %405 ], [ true, %400 ], [ true, %395 ], [ %474, %470 ]
  %477 = zext i1 %476 to i32
  %478 = icmp ne i32 %477, 0
  br i1 %478, label %479, label %494

479:                                              ; preds = %475
  %480 = load ptr, ptr %3, align 8, !tbaa !5
  %481 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %480, i32 0, i32 12
  %482 = load i32, ptr %481, align 4, !tbaa !27
  %483 = zext i32 %482 to i64
  %484 = inttoptr i64 %483 to ptr
  store ptr %484, ptr %4, align 8, !tbaa !5
  %485 = load ptr, ptr %3, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %485, i32 0, i32 13
  %487 = load i32, ptr %486, align 8, !tbaa !28
  %488 = and i32 %487, 31
  %489 = zext i32 %488 to i64
  %490 = shl i64 63, %489
  %491 = trunc i64 %490 to i32
  %492 = load ptr, ptr %4, align 8, !tbaa !5
  %493 = getelementptr inbounds %struct.DMA_Base_Registers, ptr %492, i32 0, i32 2
  store volatile i32 %491, ptr %493, align 4, !tbaa !29
  br label %509

494:                                              ; preds = %475
  %495 = load ptr, ptr %3, align 8, !tbaa !5
  %496 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %495, i32 0, i32 12
  %497 = load i32, ptr %496, align 4, !tbaa !27
  %498 = zext i32 %497 to i64
  %499 = inttoptr i64 %498 to ptr
  store ptr %499, ptr %5, align 8, !tbaa !5
  %500 = load ptr, ptr %3, align 8, !tbaa !5
  %501 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %500, i32 0, i32 13
  %502 = load i32, ptr %501, align 8, !tbaa !28
  %503 = and i32 %502, 31
  %504 = zext i32 %503 to i64
  %505 = shl i64 1, %504
  %506 = trunc i64 %505 to i32
  %507 = load ptr, ptr %5, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.BDMA_Base_Registers, ptr %507, i32 0, i32 1
  store volatile i32 %506, ptr %508, align 4, !tbaa !31
  br label %509

509:                                              ; preds = %494, %479
  %510 = load ptr, ptr %3, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %510, i32 0, i32 0
  %512 = load ptr, ptr %511, align 8, !tbaa !16
  %513 = icmp eq ptr %512, inttoptr (i64 1073872912 to ptr)
  br i1 %513, label %629, label %514

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

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

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

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

534:                                              ; preds = %529
  %535 = load ptr, ptr %3, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %535, i32 0, i32 0
  %537 = load ptr, ptr %536, align 8, !tbaa !16
  %538 = icmp eq ptr %537, inttoptr (i64 1073873032 to ptr)
  br i1 %538, label %629, label %539

539:                                              ; preds = %534
  %540 = load ptr, ptr %3, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %540, i32 0, i32 0
  %542 = load ptr, ptr %541, align 8, !tbaa !16
  %543 = icmp eq ptr %542, inttoptr (i64 1073873056 to ptr)
  br i1 %543, label %629, label %544

544:                                              ; preds = %539
  %545 = load ptr, ptr %3, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %545, i32 0, i32 0
  %547 = load ptr, ptr %546, align 8, !tbaa !16
  %548 = icmp eq ptr %547, inttoptr (i64 1073873080 to ptr)
  br i1 %548, label %629, label %549

549:                                              ; preds = %544
  %550 = load ptr, ptr %3, align 8, !tbaa !5
  %551 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %550, i32 0, i32 0
  %552 = load ptr, ptr %551, align 8, !tbaa !16
  %553 = icmp eq ptr %552, inttoptr (i64 1073873936 to ptr)
  br i1 %553, label %629, label %554

554:                                              ; preds = %549
  %555 = load ptr, ptr %3, align 8, !tbaa !5
  %556 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %555, i32 0, i32 0
  %557 = load ptr, ptr %556, align 8, !tbaa !16
  %558 = icmp eq ptr %557, inttoptr (i64 1073873960 to ptr)
  br i1 %558, label %629, label %559

559:                                              ; preds = %554
  %560 = load ptr, ptr %3, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %560, i32 0, i32 0
  %562 = load ptr, ptr %561, align 8, !tbaa !16
  %563 = icmp eq ptr %562, inttoptr (i64 1073873984 to ptr)
  br i1 %563, label %629, label %564

564:                                              ; preds = %559
  %565 = load ptr, ptr %3, align 8, !tbaa !5
  %566 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %565, i32 0, i32 0
  %567 = load ptr, ptr %566, align 8, !tbaa !16
  %568 = icmp eq ptr %567, inttoptr (i64 1073874008 to ptr)
  br i1 %568, label %629, label %569

569:                                              ; preds = %564
  %570 = load ptr, ptr %3, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %570, i32 0, i32 0
  %572 = load ptr, ptr %571, align 8, !tbaa !16
  %573 = icmp eq ptr %572, inttoptr (i64 1073874032 to ptr)
  br i1 %573, label %629, label %574

574:                                              ; preds = %569
  %575 = load ptr, ptr %3, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %575, i32 0, i32 0
  %577 = load ptr, ptr %576, align 8, !tbaa !16
  %578 = icmp eq ptr %577, inttoptr (i64 1073874056 to ptr)
  br i1 %578, label %629, label %579

579:                                              ; preds = %574
  %580 = load ptr, ptr %3, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %580, i32 0, i32 0
  %582 = load ptr, ptr %581, align 8, !tbaa !16
  %583 = icmp eq ptr %582, inttoptr (i64 1073874080 to ptr)
  br i1 %583, label %629, label %584

584:                                              ; preds = %579
  %585 = load ptr, ptr %3, align 8, !tbaa !5
  %586 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %585, i32 0, i32 0
  %587 = load ptr, ptr %586, align 8, !tbaa !16
  %588 = icmp eq ptr %587, inttoptr (i64 1073874104 to ptr)
  br i1 %588, label %629, label %589

589:                                              ; preds = %584
  %590 = load ptr, ptr %3, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %590, i32 0, i32 0
  %592 = load ptr, ptr %591, align 8, !tbaa !16
  %593 = icmp eq ptr %592, inttoptr (i64 1476547592 to ptr)
  br i1 %593, label %629, label %594

594:                                              ; preds = %589
  %595 = load ptr, ptr %3, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %595, i32 0, i32 0
  %597 = load ptr, ptr %596, align 8, !tbaa !16
  %598 = icmp eq ptr %597, inttoptr (i64 1476547612 to ptr)
  br i1 %598, label %629, label %599

599:                                              ; preds = %594
  %600 = load ptr, ptr %3, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %600, i32 0, i32 0
  %602 = load ptr, ptr %601, align 8, !tbaa !16
  %603 = icmp eq ptr %602, inttoptr (i64 1476547632 to ptr)
  br i1 %603, label %629, label %604

604:                                              ; preds = %599
  %605 = load ptr, ptr %3, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %605, i32 0, i32 0
  %607 = load ptr, ptr %606, align 8, !tbaa !16
  %608 = icmp eq ptr %607, inttoptr (i64 1476547652 to ptr)
  br i1 %608, label %629, label %609

609:                                              ; preds = %604
  %610 = load ptr, ptr %3, align 8, !tbaa !5
  %611 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %610, i32 0, i32 0
  %612 = load ptr, ptr %611, align 8, !tbaa !16
  %613 = icmp eq ptr %612, inttoptr (i64 1476547672 to ptr)
  br i1 %613, label %629, label %614

614:                                              ; preds = %609
  %615 = load ptr, ptr %3, align 8, !tbaa !5
  %616 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %615, i32 0, i32 0
  %617 = load ptr, ptr %616, align 8, !tbaa !16
  %618 = icmp eq ptr %617, inttoptr (i64 1476547692 to ptr)
  br i1 %618, label %629, label %619

619:                                              ; preds = %614
  %620 = load ptr, ptr %3, align 8, !tbaa !5
  %621 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %620, i32 0, i32 0
  %622 = load ptr, ptr %621, align 8, !tbaa !16
  %623 = icmp eq ptr %622, inttoptr (i64 1476547712 to ptr)
  br i1 %623, label %629, label %624

624:                                              ; preds = %619
  %625 = load ptr, ptr %3, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %625, i32 0, i32 0
  %627 = load ptr, ptr %626, align 8, !tbaa !16
  %628 = icmp eq ptr %627, inttoptr (i64 1476547732 to ptr)
  br label %629

629:                                              ; preds = %624, %619, %614, %609, %604, %599, %594, %589, %584, %579, %574, %569, %564, %559, %554, %549, %544, %539, %534, %529, %524, %519, %514, %509
  %630 = phi i1 [ true, %619 ], [ true, %614 ], [ true, %609 ], [ true, %604 ], [ true, %599 ], [ true, %594 ], [ true, %589 ], [ true, %584 ], [ true, %579 ], [ true, %574 ], [ true, %569 ], [ true, %564 ], [ true, %559 ], [ true, %554 ], [ true, %549 ], [ true, %544 ], [ true, %539 ], [ true, %534 ], [ true, %529 ], [ true, %524 ], [ true, %519 ], [ true, %514 ], [ true, %509 ], [ %628, %624 ]
  %631 = zext i1 %630 to i32
  %632 = icmp ne i32 %631, 0
  br i1 %632, label %633, label %662

633:                                              ; preds = %629
  %634 = load ptr, ptr %3, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %634, i32 0, i32 16
  %636 = load i32, ptr %635, align 8, !tbaa !33
  %637 = load ptr, ptr %3, align 8, !tbaa !5
  %638 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %637, i32 0, i32 15
  %639 = load ptr, ptr %638, align 8, !tbaa !34
  %640 = getelementptr inbounds %struct.DMAMUX_ChannelStatus_TypeDef, ptr %639, i32 0, i32 1
  store volatile i32 %636, ptr %640, align 4, !tbaa !31
  %641 = load ptr, ptr %3, align 8, !tbaa !5
  %642 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %641, i32 0, i32 17
  %643 = load ptr, ptr %642, align 8, !tbaa !35
  %644 = icmp ne ptr %643, null
  br i1 %644, label %645, label %661

645:                                              ; preds = %633
  %646 = load ptr, ptr %3, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %646, i32 0, i32 17
  %648 = load ptr, ptr %647, align 8, !tbaa !35
  %649 = getelementptr inbounds %struct.DMAMUX_RequestGen_TypeDef, ptr %648, i32 0, i32 0
  %650 = load volatile i32, ptr %649, align 4, !tbaa !23
  %651 = zext i32 %650 to i64
  %652 = and i64 %651, -257
  %653 = trunc i64 %652 to i32
  store volatile i32 %653, ptr %649, align 4, !tbaa !23
  %654 = load ptr, ptr %3, align 8, !tbaa !5
  %655 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %654, i32 0, i32 19
  %656 = load i32, ptr %655, align 8, !tbaa !36
  %657 = load ptr, ptr %3, align 8, !tbaa !5
  %658 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %657, i32 0, i32 18
  %659 = load ptr, ptr %658, align 8, !tbaa !37
  %660 = getelementptr inbounds %struct.DMAMUX_RequestGenStatus_TypeDef, ptr %659, i32 0, i32 1
  store volatile i32 %656, ptr %660, align 4, !tbaa !31
  br label %661

661:                                              ; preds = %645, %633
  br label %662

662:                                              ; preds = %661, %629
  %663 = load ptr, ptr %3, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %663, i32 0, i32 3
  store volatile i32 1, ptr %664, align 4, !tbaa !11
  br label %665

665:                                              ; preds = %662
  %666 = load ptr, ptr %3, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct.__DMA_HandleTypeDef, ptr %666, i32 0, i32 2
  store i32 0, ptr %667, align 8, !tbaa !15
  br label %668

668:                                              ; preds = %665
  br label %669

669:                                              ; preds = %668
  br label %670

670:                                              ; preds = %669
  store i32 0, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %671

671:                                              ; preds = %670, %393, %25, %12
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #3
  %672 = load i32, ptr %2, align 4
  ret i32 %672
}

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 = !{!18, !10, i64 20}
!20 = !{!21, !10, i64 0}
!21 = !{!"", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16}
!22 = !{!12, !6, i64 136}
!23 = !{!24, !10, i64 0}
!24 = !{!"", !10, i64 0}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = !{!12, !10, i64 124}
!28 = !{!12, !10, i64 128}
!29 = !{!30, !10, i64 8}
!30 = !{!"", !10, i64 0, !10, i64 4, !10, i64 8}
!31 = !{!32, !10, i64 4}
!32 = !{!"", !10, i64 0, !10, i64 4}
!33 = !{!12, !10, i64 152}
!34 = !{!12, !6, i64 144}
!35 = !{!12, !6, i64 160}
!36 = !{!12, !10, i64 176}
!37 = !{!12, !6, i64 168}


; 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
define dso_local range(i32 0, 2) i32 @HAL_DMA_Abort(ptr noundef %0) local_unnamed_addr #1 {
  %2 = tail call i32 @HAL_GetTick() #2
  %3 = icmp eq ptr %0, null
  br i1 %3, label %62, label %4

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

7:                                                ; preds = %4
  %8 = getelementptr inbounds i8, ptr %0, i64 120
  store volatile i32 128, ptr %8, align 8, !tbaa !12
  br label %.sink.split

9:                                                ; preds = %4
  %10 = load ptr, ptr %0, align 8, !tbaa !13
  %magicptr204 = ptrtoint ptr %10 to i64
  switch i64 %magicptr204, label %14 [
    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 = %9, %9, %9, %9, %9, %9, %9, %9, %9, %9, %9, %9, %9, %9, %9, %9
  %11 = load volatile i32, ptr %10, align 4, !tbaa !14
  %12 = and i32 %11, -31
  store volatile i32 %12, ptr %10, align 4, !tbaa !14
  %13 = getelementptr inbounds i8, ptr %10, i64 20
  br label %14

14:                                               ; preds = %9, %.critedge
  %.sink = phi ptr [ %13, %.critedge ], [ %10, %9 ]
  %.sink210 = phi i32 [ -129, %.critedge ], [ -15, %9 ]
  %15 = load volatile i32, ptr %.sink, align 4, !tbaa !16
  %16 = and i32 %15, %.sink210
  store volatile i32 %16, ptr %.sink, align 4, !tbaa !16
  switch i64 %magicptr204, label %21 [
    i64 1073872912, label %.critedge156
    i64 1073872936, label %.critedge156
    i64 1073872960, label %.critedge156
    i64 1073872984, label %.critedge156
    i64 1073873008, label %.critedge156
    i64 1073873032, label %.critedge156
    i64 1073873056, label %.critedge156
    i64 1073873080, label %.critedge156
    i64 1073873936, label %.critedge156
    i64 1073873960, label %.critedge156
    i64 1073873984, label %.critedge156
    i64 1073874008, label %.critedge156
    i64 1073874032, label %.critedge156
    i64 1073874056, label %.critedge156
    i64 1073874080, label %.critedge156
    i64 1073874104, label %.critedge156
    i64 1476547592, label %.critedge156
    i64 1476547612, label %.critedge156
    i64 1476547632, label %.critedge156
    i64 1476547652, label %.critedge156
    i64 1476547672, label %.critedge156
    i64 1476547692, label %.critedge156
    i64 1476547712, label %.critedge156
    i64 1476547732, label %.critedge156
  ]

.critedge156:                                     ; preds = %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14
  %17 = getelementptr inbounds i8, ptr %0, i64 136
  %18 = load ptr, ptr %17, align 8, !tbaa !17
  %19 = load volatile i32, ptr %18, align 4, !tbaa !18
  %20 = and i32 %19, -257
  store volatile i32 %20, ptr %18, align 4, !tbaa !18
  br label %21

21:                                               ; preds = %.critedge156, %14
  %22 = load volatile i32, ptr %10, align 4, !tbaa !16
  %23 = and i32 %22, -2
  store volatile i32 %23, ptr %10, align 4, !tbaa !16
  br label %24

24:                                               ; preds = %27, %21
  %25 = load volatile i32, ptr %10, align 4, !tbaa !16
  %26 = and i32 %25, 1
  %.not135 = icmp eq i32 %26, 0
  br i1 %.not135, label %33, label %27

27:                                               ; preds = %24
  %28 = tail call i32 @HAL_GetTick() #2
  %29 = sub i32 %28, %2
  %30 = icmp ugt i32 %29, 5
  br i1 %30, label %31, label %24, !llvm.loop !20

31:                                               ; preds = %27
  %32 = getelementptr inbounds i8, ptr %0, i64 120
  store volatile i32 32, ptr %32, align 8, !tbaa !12
  store volatile i32 3, ptr %5, align 4, !tbaa !5
  br label %.sink.split

33:                                               ; preds = %24
  %34 = load ptr, ptr %0, align 8, !tbaa !13
  %magicptr206 = ptrtoint ptr %34 to i64
  switch i64 %magicptr206, label %35 [
    i64 1073872912, label %.critedge179
    i64 1073872936, label %.critedge179
    i64 1073872960, label %.critedge179
    i64 1073872984, label %.critedge179
    i64 1073873008, label %.critedge179
    i64 1073873032, label %.critedge179
    i64 1073873056, label %.critedge179
    i64 1073873080, label %.critedge179
    i64 1073873936, label %.critedge179
    i64 1073873960, label %.critedge179
    i64 1073873984, label %.critedge179
    i64 1073874008, label %.critedge179
    i64 1073874032, label %.critedge179
    i64 1073874056, label %.critedge179
    i64 1073874080, label %.critedge179
    i64 1073874104, label %.critedge179
  ]

35:                                               ; preds = %33
  br label %.critedge179

.critedge179:                                     ; preds = %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %35
  %.sink217 = phi i32 [ 1, %35 ], [ 63, %33 ], [ 63, %33 ], [ 63, %33 ], [ 63, %33 ], [ 63, %33 ], [ 63, %33 ], [ 63, %33 ], [ 63, %33 ], [ 63, %33 ], [ 63, %33 ], [ 63, %33 ], [ 63, %33 ], [ 63, %33 ], [ 63, %33 ], [ 63, %33 ], [ 63, %33 ]
  %.sink216 = phi i64 [ 4, %35 ], [ 8, %33 ], [ 8, %33 ], [ 8, %33 ], [ 8, %33 ], [ 8, %33 ], [ 8, %33 ], [ 8, %33 ], [ 8, %33 ], [ 8, %33 ], [ 8, %33 ], [ 8, %33 ], [ 8, %33 ], [ 8, %33 ], [ 8, %33 ], [ 8, %33 ], [ 8, %33 ]
  %36 = getelementptr inbounds i8, ptr %0, i64 124
  %37 = load i32, ptr %36, align 4, !tbaa !22
  %38 = zext i32 %37 to i64
  %39 = inttoptr i64 %38 to ptr
  %40 = getelementptr inbounds i8, ptr %0, i64 128
  %41 = load i32, ptr %40, align 8, !tbaa !23
  %42 = and i32 %41, 31
  %43 = shl i32 %.sink217, %42
  %44 = getelementptr inbounds i8, ptr %39, i64 %.sink216
  store volatile i32 %43, ptr %44, align 4, !tbaa !16
  switch i64 %magicptr206, label %60 [
    i64 1073872912, label %.critedge203
    i64 1073872936, label %.critedge203
    i64 1073872960, label %.critedge203
    i64 1073872984, label %.critedge203
    i64 1073873008, label %.critedge203
    i64 1073873032, label %.critedge203
    i64 1073873056, label %.critedge203
    i64 1073873080, label %.critedge203
    i64 1073873936, label %.critedge203
    i64 1073873960, label %.critedge203
    i64 1073873984, label %.critedge203
    i64 1073874008, label %.critedge203
    i64 1073874032, label %.critedge203
    i64 1073874056, label %.critedge203
    i64 1073874080, label %.critedge203
    i64 1073874104, label %.critedge203
    i64 1476547592, label %.critedge203
    i64 1476547612, label %.critedge203
    i64 1476547632, label %.critedge203
    i64 1476547652, label %.critedge203
    i64 1476547672, label %.critedge203
    i64 1476547692, label %.critedge203
    i64 1476547712, label %.critedge203
    i64 1476547732, label %.critedge203
  ]

.critedge203:                                     ; preds = %.critedge179, %.critedge179, %.critedge179, %.critedge179, %.critedge179, %.critedge179, %.critedge179, %.critedge179, %.critedge179, %.critedge179, %.critedge179, %.critedge179, %.critedge179, %.critedge179, %.critedge179, %.critedge179, %.critedge179, %.critedge179, %.critedge179, %.critedge179, %.critedge179, %.critedge179, %.critedge179, %.critedge179
  %45 = getelementptr inbounds i8, ptr %0, i64 152
  %46 = load i32, ptr %45, align 8, !tbaa !24
  %47 = getelementptr inbounds i8, ptr %0, i64 144
  %48 = load ptr, ptr %47, align 8, !tbaa !25
  %49 = getelementptr inbounds i8, ptr %48, i64 4
  store volatile i32 %46, ptr %49, align 4, !tbaa !26
  %50 = getelementptr inbounds i8, ptr %0, i64 160
  %51 = load ptr, ptr %50, align 8, !tbaa !28
  %.not136 = icmp eq ptr %51, null
  br i1 %.not136, label %60, label %52

52:                                               ; preds = %.critedge203
  %53 = load volatile i32, ptr %51, align 4, !tbaa !18
  %54 = and i32 %53, -257
  store volatile i32 %54, ptr %51, align 4, !tbaa !18
  %55 = getelementptr inbounds i8, ptr %0, i64 176
  %56 = load i32, ptr %55, align 8, !tbaa !29
  %57 = getelementptr inbounds i8, ptr %0, i64 168
  %58 = load ptr, ptr %57, align 8, !tbaa !30
  %59 = getelementptr inbounds i8, ptr %58, i64 4
  store volatile i32 %56, ptr %59, align 4, !tbaa !26
  br label %60

60:                                               ; preds = %.critedge179, %.critedge203, %52
  store volatile i32 1, ptr %5, align 4, !tbaa !5
  br label %.sink.split

.sink.split:                                      ; preds = %7, %31, %60
  %.0.ph = phi i32 [ 0, %60 ], [ 1, %31 ], [ 1, %7 ]
  %61 = getelementptr inbounds i8, ptr %0, i64 56
  store i32 0, ptr %61, align 8, !tbaa !31
  br label %62

62:                                               ; preds = %.sink.split, %1
  %.0 = phi i32 [ 1, %1 ], [ %.0.ph, %.sink.split ]
  ret i32 %.0
}

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, !7, i64 0}
!14 = !{!15, !11, i64 0}
!15 = !{!"", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20}
!16 = !{!11, !11, i64 0}
!17 = !{!6, !7, i64 136}
!18 = !{!19, !11, i64 0}
!19 = !{!"", !11, i64 0}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.mustprogress"}
!22 = !{!6, !11, i64 124}
!23 = !{!6, !11, i64 128}
!24 = !{!6, !11, i64 152}
!25 = !{!6, !7, i64 144}
!26 = !{!27, !11, i64 4}
!27 = !{!"", !11, i64 0, !11, i64 4}
!28 = !{!6, !7, i64 160}
!29 = !{!6, !11, i64 176}
!30 = !{!6, !7, i64 168}
!31 = !{!6, !11, i64 56}


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