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

; 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.RCC_PeriphCLKInitTypeDef = type { i32, %struct.RCC_PLL2InitTypeDef, %struct.RCC_PLL3InitTypeDef, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.RCC_PLL2InitTypeDef = type { i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.RCC_PLL3InitTypeDef = type { i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.RCC_TypeDef = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [9 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [4 x i32] }

; Function Attrs: nounwind uwtable
define dso_local i32 @HAL_RCCEx_PeriphCLKConfig(ptr noundef %0) #0 {
  %2 = alloca i32, align 4
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %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 4, ptr %4) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #3
  store i32 0, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #3
  store i32 0, ptr %7, align 4, !tbaa !9
  %9 = load ptr, ptr %3, align 8, !tbaa !5
  %10 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %9, i32 0, i32 0
  %11 = load i32, ptr %10, align 4, !tbaa !11
  %12 = and i32 %11, 134217728
  %13 = icmp eq i32 %12, 134217728
  br i1 %13, label %14, label %48

14:                                               ; preds = %1
  %15 = load ptr, ptr %3, align 8, !tbaa !5
  %16 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %15, i32 0, i32 11
  %17 = load i32, ptr %16, align 4, !tbaa !14
  switch i32 %17, label %31 [
    i32 0, label %18
    i32 1048576, label %23
    i32 2097152, label %27
    i32 3145728, label %32
  ]

18:                                               ; preds = %14
  %19 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !15
  %20 = zext i32 %19 to i64
  %21 = or i64 %20, 131072
  %22 = trunc i64 %21 to i32
  store volatile i32 %22, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !15
  br label %32

23:                                               ; preds = %14
  %24 = load ptr, ptr %3, align 8, !tbaa !5
  %25 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %24, i32 0, i32 1
  %26 = call i32 @RCCEx_PLL2_Config(ptr noundef %25, i32 noundef 2)
  store i32 %26, ptr %6, align 4, !tbaa !9
  br label %32

27:                                               ; preds = %14
  %28 = load ptr, ptr %3, align 8, !tbaa !5
  %29 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %28, i32 0, i32 2
  %30 = call i32 @RCCEx_PLL3_Config(ptr noundef %29, i32 noundef 2)
  store i32 %30, ptr %6, align 4, !tbaa !9
  br label %32

31:                                               ; preds = %14
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %32

32:                                               ; preds = %31, %27, %23, %18, %14
  %33 = load i32, ptr %6, align 4, !tbaa !9
  %34 = icmp eq i32 %33, 0
  br i1 %34, label %35, label %45

35:                                               ; preds = %32
  %36 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 20), align 4, !tbaa !17
  %37 = zext i32 %36 to i64
  %38 = and i64 %37, -3145729
  %39 = load ptr, ptr %3, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %39, i32 0, i32 11
  %41 = load i32, ptr %40, align 4, !tbaa !14
  %42 = zext i32 %41 to i64
  %43 = or i64 %38, %42
  %44 = trunc i64 %43 to i32
  store volatile i32 %44, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 20), align 4, !tbaa !17
  br label %47

45:                                               ; preds = %32
  %46 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %46, ptr %7, align 4, !tbaa !9
  br label %47

47:                                               ; preds = %45, %35
  br label %48

48:                                               ; preds = %47, %1
  %49 = load ptr, ptr %3, align 8, !tbaa !5
  %50 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %49, i32 0, i32 0
  %51 = load i32, ptr %50, align 4, !tbaa !11
  %52 = and i32 %51, 256
  %53 = icmp eq i32 %52, 256
  br i1 %53, label %54, label %88

54:                                               ; preds = %48
  %55 = load ptr, ptr %3, align 8, !tbaa !5
  %56 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %55, i32 0, i32 7
  %57 = load i32, ptr %56, align 4, !tbaa !18
  switch i32 %57, label %71 [
    i32 0, label %58
    i32 1, label %63
    i32 2, label %67
    i32 3, label %72
    i32 4, label %72
  ]

58:                                               ; preds = %54
  %59 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !15
  %60 = zext i32 %59 to i64
  %61 = or i64 %60, 131072
  %62 = trunc i64 %61 to i32
  store volatile i32 %62, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !15
  br label %72

63:                                               ; preds = %54
  %64 = load ptr, ptr %3, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %64, i32 0, i32 1
  %66 = call i32 @RCCEx_PLL2_Config(ptr noundef %65, i32 noundef 0)
  store i32 %66, ptr %6, align 4, !tbaa !9
  br label %72

67:                                               ; preds = %54
  %68 = load ptr, ptr %3, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %68, i32 0, i32 2
  %70 = call i32 @RCCEx_PLL3_Config(ptr noundef %69, i32 noundef 0)
  store i32 %70, ptr %6, align 4, !tbaa !9
  br label %72

71:                                               ; preds = %54
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %72

72:                                               ; preds = %71, %67, %63, %58, %54, %54
  %73 = load i32, ptr %6, align 4, !tbaa !9
  %74 = icmp eq i32 %73, 0
  br i1 %74, label %75, label %85

75:                                               ; preds = %72
  %76 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 20), align 4, !tbaa !17
  %77 = zext i32 %76 to i64
  %78 = and i64 %77, -8
  %79 = load ptr, ptr %3, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %79, i32 0, i32 7
  %81 = load i32, ptr %80, align 4, !tbaa !18
  %82 = zext i32 %81 to i64
  %83 = or i64 %78, %82
  %84 = trunc i64 %83 to i32
  store volatile i32 %84, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 20), align 4, !tbaa !17
  br label %87

85:                                               ; preds = %72
  %86 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %86, ptr %7, align 4, !tbaa !9
  br label %87

87:                                               ; preds = %85, %75
  br label %88

88:                                               ; preds = %87, %48
  %89 = load ptr, ptr %3, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %89, i32 0, i32 0
  %91 = load i32, ptr %90, align 4, !tbaa !11
  %92 = and i32 %91, 512
  %93 = icmp eq i32 %92, 512
  br i1 %93, label %94, label %128

94:                                               ; preds = %88
  %95 = load ptr, ptr %3, align 8, !tbaa !5
  %96 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %95, i32 0, i32 8
  %97 = load i32, ptr %96, align 4, !tbaa !19
  switch i32 %97, label %111 [
    i32 0, label %98
    i32 64, label %103
    i32 128, label %107
    i32 192, label %112
    i32 256, label %112
  ]

98:                                               ; preds = %94
  %99 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !15
  %100 = zext i32 %99 to i64
  %101 = or i64 %100, 131072
  %102 = trunc i64 %101 to i32
  store volatile i32 %102, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !15
  br label %112

103:                                              ; preds = %94
  %104 = load ptr, ptr %3, align 8, !tbaa !5
  %105 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %104, i32 0, i32 1
  %106 = call i32 @RCCEx_PLL2_Config(ptr noundef %105, i32 noundef 0)
  store i32 %106, ptr %6, align 4, !tbaa !9
  br label %112

107:                                              ; preds = %94
  %108 = load ptr, ptr %3, align 8, !tbaa !5
  %109 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %108, i32 0, i32 2
  %110 = call i32 @RCCEx_PLL3_Config(ptr noundef %109, i32 noundef 0)
  store i32 %110, ptr %6, align 4, !tbaa !9
  br label %112

111:                                              ; preds = %94
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %112

112:                                              ; preds = %111, %107, %103, %98, %94, %94
  %113 = load i32, ptr %6, align 4, !tbaa !9
  %114 = icmp eq i32 %113, 0
  br i1 %114, label %115, label %125

115:                                              ; preds = %112
  %116 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 20), align 4, !tbaa !17
  %117 = zext i32 %116 to i64
  %118 = and i64 %117, -449
  %119 = load ptr, ptr %3, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %119, i32 0, i32 8
  %121 = load i32, ptr %120, align 4, !tbaa !19
  %122 = zext i32 %121 to i64
  %123 = or i64 %118, %122
  %124 = trunc i64 %123 to i32
  store volatile i32 %124, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 20), align 4, !tbaa !17
  br label %127

125:                                              ; preds = %112
  %126 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %126, ptr %7, align 4, !tbaa !9
  br label %127

127:                                              ; preds = %125, %115
  br label %128

128:                                              ; preds = %127, %88
  %129 = load ptr, ptr %3, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %129, i32 0, i32 0
  %131 = load i32, ptr %130, align 4, !tbaa !11
  %132 = and i32 %131, 1024
  %133 = icmp eq i32 %132, 1024
  br i1 %133, label %134, label %168

134:                                              ; preds = %128
  %135 = load ptr, ptr %3, align 8, !tbaa !5
  %136 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %135, i32 0, i32 27
  %137 = load i32, ptr %136, align 4, !tbaa !20
  switch i32 %137, label %151 [
    i32 0, label %138
    i32 2097152, label %143
    i32 4194304, label %147
    i32 6291456, label %152
    i32 8388608, label %152
  ]

138:                                              ; preds = %134
  %139 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !15
  %140 = zext i32 %139 to i64
  %141 = or i64 %140, 131072
  %142 = trunc i64 %141 to i32
  store volatile i32 %142, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !15
  br label %152

143:                                              ; preds = %134
  %144 = load ptr, ptr %3, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %144, i32 0, i32 1
  %146 = call i32 @RCCEx_PLL2_Config(ptr noundef %145, i32 noundef 0)
  store i32 %146, ptr %6, align 4, !tbaa !9
  br label %152

147:                                              ; preds = %134
  %148 = load ptr, ptr %3, align 8, !tbaa !5
  %149 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %148, i32 0, i32 2
  %150 = call i32 @RCCEx_PLL3_Config(ptr noundef %149, i32 noundef 0)
  store i32 %150, ptr %6, align 4, !tbaa !9
  br label %152

151:                                              ; preds = %134
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %152

152:                                              ; preds = %151, %147, %143, %138, %134, %134
  %153 = load i32, ptr %6, align 4, !tbaa !9
  %154 = icmp eq i32 %153, 0
  br i1 %154, label %155, label %165

155:                                              ; preds = %152
  %156 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  %157 = zext i32 %156 to i64
  %158 = and i64 %157, -14680065
  %159 = load ptr, ptr %3, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %159, i32 0, i32 27
  %161 = load i32, ptr %160, align 4, !tbaa !20
  %162 = zext i32 %161 to i64
  %163 = or i64 %158, %162
  %164 = trunc i64 %163 to i32
  store volatile i32 %164, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  br label %167

165:                                              ; preds = %152
  %166 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %166, ptr %7, align 4, !tbaa !9
  br label %167

167:                                              ; preds = %165, %155
  br label %168

168:                                              ; preds = %167, %128
  %169 = load ptr, ptr %3, align 8, !tbaa !5
  %170 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %169, i32 0, i32 0
  %171 = load i32, ptr %170, align 4, !tbaa !11
  %172 = and i32 %171, 2048
  %173 = icmp eq i32 %172, 2048
  br i1 %173, label %174, label %208

174:                                              ; preds = %168
  %175 = load ptr, ptr %3, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %175, i32 0, i32 28
  %177 = load i32, ptr %176, align 4, !tbaa !22
  switch i32 %177, label %191 [
    i32 0, label %178
    i32 16777216, label %183
    i32 33554432, label %187
    i32 50331648, label %192
    i32 67108864, label %192
  ]

178:                                              ; preds = %174
  %179 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !15
  %180 = zext i32 %179 to i64
  %181 = or i64 %180, 131072
  %182 = trunc i64 %181 to i32
  store volatile i32 %182, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !15
  br label %192

183:                                              ; preds = %174
  %184 = load ptr, ptr %3, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %184, i32 0, i32 1
  %186 = call i32 @RCCEx_PLL2_Config(ptr noundef %185, i32 noundef 0)
  store i32 %186, ptr %6, align 4, !tbaa !9
  br label %192

187:                                              ; preds = %174
  %188 = load ptr, ptr %3, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %188, i32 0, i32 2
  %190 = call i32 @RCCEx_PLL3_Config(ptr noundef %189, i32 noundef 0)
  store i32 %190, ptr %6, align 4, !tbaa !9
  br label %192

191:                                              ; preds = %174
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %192

192:                                              ; preds = %191, %187, %183, %178, %174, %174
  %193 = load i32, ptr %6, align 4, !tbaa !9
  %194 = icmp eq i32 %193, 0
  br i1 %194, label %195, label %205

195:                                              ; preds = %192
  %196 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  %197 = zext i32 %196 to i64
  %198 = and i64 %197, -117440513
  %199 = load ptr, ptr %3, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %199, i32 0, i32 28
  %201 = load i32, ptr %200, align 4, !tbaa !22
  %202 = zext i32 %201 to i64
  %203 = or i64 %198, %202
  %204 = trunc i64 %203 to i32
  store volatile i32 %204, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  br label %207

205:                                              ; preds = %192
  %206 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %206, ptr %7, align 4, !tbaa !9
  br label %207

207:                                              ; preds = %205, %195
  br label %208

208:                                              ; preds = %207, %168
  %209 = load ptr, ptr %3, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %209, i32 0, i32 0
  %211 = load i32, ptr %210, align 4, !tbaa !11
  %212 = and i32 %211, 33554432
  %213 = icmp eq i32 %212, 33554432
  br i1 %213, label %214, label %244

214:                                              ; preds = %208
  %215 = load ptr, ptr %3, align 8, !tbaa !5
  %216 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %215, i32 0, i32 4
  %217 = load i32, ptr %216, align 4, !tbaa !23
  switch i32 %217, label %227 [
    i32 16, label %218
    i32 32, label %223
    i32 48, label %228
    i32 0, label %228
  ]

218:                                              ; preds = %214
  %219 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !15
  %220 = zext i32 %219 to i64
  %221 = or i64 %220, 131072
  %222 = trunc i64 %221 to i32
  store volatile i32 %222, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !15
  br label %228

223:                                              ; preds = %214
  %224 = load ptr, ptr %3, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %224, i32 0, i32 1
  %226 = call i32 @RCCEx_PLL2_Config(ptr noundef %225, i32 noundef 2)
  store i32 %226, ptr %6, align 4, !tbaa !9
  br label %228

227:                                              ; preds = %214
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %228

228:                                              ; preds = %227, %223, %218, %214, %214
  %229 = load i32, ptr %6, align 4, !tbaa !9
  %230 = icmp eq i32 %229, 0
  br i1 %230, label %231, label %241

231:                                              ; preds = %228
  %232 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 19), align 4, !tbaa !24
  %233 = zext i32 %232 to i64
  %234 = and i64 %233, -49
  %235 = load ptr, ptr %3, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %235, i32 0, i32 4
  %237 = load i32, ptr %236, align 4, !tbaa !23
  %238 = zext i32 %237 to i64
  %239 = or i64 %234, %238
  %240 = trunc i64 %239 to i32
  store volatile i32 %240, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 19), align 4, !tbaa !24
  br label %243

241:                                              ; preds = %228
  %242 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %242, ptr %7, align 4, !tbaa !9
  br label %243

243:                                              ; preds = %241, %231
  br label %244

244:                                              ; preds = %243, %208
  %245 = load ptr, ptr %3, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %245, i32 0, i32 0
  %247 = load i32, ptr %246, align 4, !tbaa !11
  %248 = and i32 %247, 4096
  %249 = icmp eq i32 %248, 4096
  br i1 %249, label %250, label %284

250:                                              ; preds = %244
  %251 = load ptr, ptr %3, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %251, i32 0, i32 9
  %253 = load i32, ptr %252, align 4, !tbaa !25
  switch i32 %253, label %267 [
    i32 0, label %254
    i32 4096, label %259
    i32 8192, label %263
    i32 12288, label %268
    i32 16384, label %268
  ]

254:                                              ; preds = %250
  %255 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !15
  %256 = zext i32 %255 to i64
  %257 = or i64 %256, 131072
  %258 = trunc i64 %257 to i32
  store volatile i32 %258, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !15
  br label %268

259:                                              ; preds = %250
  %260 = load ptr, ptr %3, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %260, i32 0, i32 1
  %262 = call i32 @RCCEx_PLL2_Config(ptr noundef %261, i32 noundef 0)
  store i32 %262, ptr %6, align 4, !tbaa !9
  br label %268

263:                                              ; preds = %250
  %264 = load ptr, ptr %3, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %264, i32 0, i32 2
  %266 = call i32 @RCCEx_PLL3_Config(ptr noundef %265, i32 noundef 0)
  store i32 %266, ptr %6, align 4, !tbaa !9
  br label %268

267:                                              ; preds = %250
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %268

268:                                              ; preds = %267, %263, %259, %254, %250, %250
  %269 = load i32, ptr %6, align 4, !tbaa !9
  %270 = icmp eq i32 %269, 0
  br i1 %270, label %271, label %281

271:                                              ; preds = %268
  %272 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 20), align 4, !tbaa !17
  %273 = zext i32 %272 to i64
  %274 = and i64 %273, -28673
  %275 = load ptr, ptr %3, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %275, i32 0, i32 9
  %277 = load i32, ptr %276, align 4, !tbaa !25
  %278 = zext i32 %277 to i64
  %279 = or i64 %274, %278
  %280 = trunc i64 %279 to i32
  store volatile i32 %280, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 20), align 4, !tbaa !17
  br label %283

281:                                              ; preds = %268
  %282 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %282, ptr %7, align 4, !tbaa !9
  br label %283

283:                                              ; preds = %281, %271
  br label %284

284:                                              ; preds = %283, %244
  %285 = load ptr, ptr %3, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %285, i32 0, i32 0
  %287 = load i32, ptr %286, align 4, !tbaa !11
  %288 = and i32 %287, 8192
  %289 = icmp eq i32 %288, 8192
  br i1 %289, label %290, label %319

290:                                              ; preds = %284
  %291 = load ptr, ptr %3, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %291, i32 0, i32 10
  %293 = load i32, ptr %292, align 4, !tbaa !26
  switch i32 %293, label %302 [
    i32 0, label %303
    i32 65536, label %294
    i32 131072, label %298
    i32 196608, label %303
    i32 262144, label %303
    i32 327680, label %303
  ]

294:                                              ; preds = %290
  %295 = load ptr, ptr %3, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %295, i32 0, i32 1
  %297 = call i32 @RCCEx_PLL2_Config(ptr noundef %296, i32 noundef 1)
  store i32 %297, ptr %6, align 4, !tbaa !9
  br label %303

298:                                              ; preds = %290
  %299 = load ptr, ptr %3, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %299, i32 0, i32 2
  %301 = call i32 @RCCEx_PLL3_Config(ptr noundef %300, i32 noundef 1)
  store i32 %301, ptr %6, align 4, !tbaa !9
  br label %303

302:                                              ; preds = %290
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %303

303:                                              ; preds = %302, %298, %294, %290, %290, %290, %290
  %304 = load i32, ptr %6, align 4, !tbaa !9
  %305 = icmp eq i32 %304, 0
  br i1 %305, label %306, label %316

306:                                              ; preds = %303
  %307 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 20), align 4, !tbaa !17
  %308 = zext i32 %307 to i64
  %309 = and i64 %308, -458753
  %310 = load ptr, ptr %3, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %310, i32 0, i32 10
  %312 = load i32, ptr %311, align 4, !tbaa !26
  %313 = zext i32 %312 to i64
  %314 = or i64 %309, %313
  %315 = trunc i64 %314 to i32
  store volatile i32 %315, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 20), align 4, !tbaa !17
  br label %318

316:                                              ; preds = %303
  %317 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %317, ptr %7, align 4, !tbaa !9
  br label %318

318:                                              ; preds = %316, %306
  br label %319

319:                                              ; preds = %318, %284
  %320 = load ptr, ptr %3, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %320, i32 0, i32 0
  %322 = load i32, ptr %321, align 4, !tbaa !11
  %323 = and i32 %322, 16384
  %324 = icmp eq i32 %323, 16384
  br i1 %324, label %325, label %354

325:                                              ; preds = %319
  %326 = load ptr, ptr %3, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %326, i32 0, i32 29
  %328 = load i32, ptr %327, align 4, !tbaa !27
  switch i32 %328, label %337 [
    i32 0, label %338
    i32 268435456, label %329
    i32 536870912, label %333
    i32 805306368, label %338
    i32 1073741824, label %338
    i32 1342177280, label %338
  ]

329:                                              ; preds = %325
  %330 = load ptr, ptr %3, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %330, i32 0, i32 1
  %332 = call i32 @RCCEx_PLL2_Config(ptr noundef %331, i32 noundef 1)
  store i32 %332, ptr %6, align 4, !tbaa !9
  br label %338

333:                                              ; preds = %325
  %334 = load ptr, ptr %3, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %334, i32 0, i32 2
  %336 = call i32 @RCCEx_PLL3_Config(ptr noundef %335, i32 noundef 1)
  store i32 %336, ptr %6, align 4, !tbaa !9
  br label %338

337:                                              ; preds = %325
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %338

338:                                              ; preds = %337, %333, %329, %325, %325, %325, %325
  %339 = load i32, ptr %6, align 4, !tbaa !9
  %340 = icmp eq i32 %339, 0
  br i1 %340, label %341, label %351

341:                                              ; preds = %338
  %342 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  %343 = zext i32 %342 to i64
  %344 = and i64 %343, -1879048193
  %345 = load ptr, ptr %3, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %345, i32 0, i32 29
  %347 = load i32, ptr %346, align 4, !tbaa !27
  %348 = zext i32 %347 to i64
  %349 = or i64 %344, %348
  %350 = trunc i64 %349 to i32
  store volatile i32 %350, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  br label %353

351:                                              ; preds = %338
  %352 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %352, ptr %7, align 4, !tbaa !9
  br label %353

353:                                              ; preds = %351, %341
  br label %354

354:                                              ; preds = %353, %319
  %355 = load ptr, ptr %3, align 8, !tbaa !5
  %356 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %355, i32 0, i32 0
  %357 = load i32, ptr %356, align 4, !tbaa !11
  %358 = and i32 %357, 32768
  %359 = icmp eq i32 %358, 32768
  br i1 %359, label %360, label %390

360:                                              ; preds = %354
  %361 = load ptr, ptr %3, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %361, i32 0, i32 13
  %363 = load i32, ptr %362, align 4, !tbaa !28
  switch i32 %363, label %373 [
    i32 268435456, label %364
    i32 536870912, label %369
    i32 0, label %374
  ]

364:                                              ; preds = %360
  %365 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !15
  %366 = zext i32 %365 to i64
  %367 = or i64 %366, 131072
  %368 = trunc i64 %367 to i32
  store volatile i32 %368, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !15
  br label %374

369:                                              ; preds = %360
  %370 = load ptr, ptr %3, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %370, i32 0, i32 1
  %372 = call i32 @RCCEx_PLL2_Config(ptr noundef %371, i32 noundef 1)
  store i32 %372, ptr %6, align 4, !tbaa !9
  br label %374

373:                                              ; preds = %360
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %374

374:                                              ; preds = %373, %369, %364, %360
  %375 = load i32, ptr %6, align 4, !tbaa !9
  %376 = icmp eq i32 %375, 0
  br i1 %376, label %377, label %387

377:                                              ; preds = %374
  %378 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 20), align 4, !tbaa !17
  %379 = zext i32 %378 to i64
  %380 = and i64 %379, -805306369
  %381 = load ptr, ptr %3, align 8, !tbaa !5
  %382 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %381, i32 0, i32 13
  %383 = load i32, ptr %382, align 4, !tbaa !28
  %384 = zext i32 %383 to i64
  %385 = or i64 %380, %384
  %386 = trunc i64 %385 to i32
  store volatile i32 %386, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 20), align 4, !tbaa !17
  br label %389

387:                                              ; preds = %374
  %388 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %388, ptr %7, align 4, !tbaa !9
  br label %389

389:                                              ; preds = %387, %377
  br label %390

390:                                              ; preds = %389, %354
  %391 = load ptr, ptr %3, align 8, !tbaa !5
  %392 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %391, i32 0, i32 0
  %393 = load i32, ptr %392, align 4, !tbaa !11
  %394 = and i32 %393, 16777216
  %395 = icmp eq i32 %394, 16777216
  br i1 %395, label %396, label %426

396:                                              ; preds = %390
  %397 = load ptr, ptr %3, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %397, i32 0, i32 3
  %399 = load i32, ptr %398, align 4, !tbaa !29
  switch i32 %399, label %409 [
    i32 1, label %400
    i32 2, label %405
    i32 3, label %410
    i32 0, label %410
  ]

400:                                              ; preds = %396
  %401 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !15
  %402 = zext i32 %401 to i64
  %403 = or i64 %402, 131072
  %404 = trunc i64 %403 to i32
  store volatile i32 %404, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !15
  br label %410

405:                                              ; preds = %396
  %406 = load ptr, ptr %3, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %406, i32 0, i32 1
  %408 = call i32 @RCCEx_PLL2_Config(ptr noundef %407, i32 noundef 2)
  store i32 %408, ptr %6, align 4, !tbaa !9
  br label %410

409:                                              ; preds = %396
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %410

410:                                              ; preds = %409, %405, %400, %396, %396
  %411 = load i32, ptr %6, align 4, !tbaa !9
  %412 = icmp eq i32 %411, 0
  br i1 %412, label %413, label %423

413:                                              ; preds = %410
  %414 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 19), align 4, !tbaa !24
  %415 = zext i32 %414 to i64
  %416 = and i64 %415, -4
  %417 = load ptr, ptr %3, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %417, i32 0, i32 3
  %419 = load i32, ptr %418, align 4, !tbaa !29
  %420 = zext i32 %419 to i64
  %421 = or i64 %416, %420
  %422 = trunc i64 %421 to i32
  store volatile i32 %422, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 19), align 4, !tbaa !24
  br label %425

423:                                              ; preds = %410
  %424 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %424, ptr %7, align 4, !tbaa !9
  br label %425

425:                                              ; preds = %423, %413
  br label %426

426:                                              ; preds = %425, %390
  %427 = load ptr, ptr %3, align 8, !tbaa !5
  %428 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %427, i32 0, i32 0
  %429 = load i32, ptr %428, align 4, !tbaa !11
  %430 = and i32 %429, 4194304
  %431 = icmp eq i32 %430, 4194304
  br i1 %431, label %432, label %545

432:                                              ; preds = %426
  %433 = load volatile i32, ptr inttoptr (i64 1476544512 to ptr), align 4, !tbaa !30
  %434 = zext i32 %433 to i64
  %435 = or i64 %434, 256
  %436 = trunc i64 %435 to i32
  store volatile i32 %436, ptr inttoptr (i64 1476544512 to ptr), align 4, !tbaa !30
  %437 = call i32 @HAL_GetTick()
  store i32 %437, ptr %5, align 4, !tbaa !9
  br label %438

438:                                              ; preds = %449, %432
  %439 = load volatile i32, ptr inttoptr (i64 1476544512 to ptr), align 4, !tbaa !30
  %440 = zext i32 %439 to i64
  %441 = and i64 %440, 256
  %442 = icmp eq i64 %441, 0
  br i1 %442, label %443, label %450

443:                                              ; preds = %438
  %444 = call i32 @HAL_GetTick()
  %445 = load i32, ptr %5, align 4, !tbaa !9
  %446 = sub i32 %444, %445
  %447 = icmp ugt i32 %446, 100
  br i1 %447, label %448, label %449

448:                                              ; preds = %443
  store i32 3, ptr %6, align 4, !tbaa !9
  br label %450

449:                                              ; preds = %443
  br label %438, !llvm.loop !32

450:                                              ; preds = %448, %438
  %451 = load i32, ptr %6, align 4, !tbaa !9
  %452 = icmp eq i32 %451, 0
  br i1 %452, label %453, label %542

453:                                              ; preds = %450
  %454 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 28), align 4, !tbaa !34
  %455 = zext i32 %454 to i64
  %456 = and i64 %455, 768
  %457 = load ptr, ptr %3, align 8, !tbaa !5
  %458 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %457, i32 0, i32 30
  %459 = load i32, ptr %458, align 4, !tbaa !35
  %460 = zext i32 %459 to i64
  %461 = and i64 %460, 768
  %462 = icmp ne i64 %456, %461
  br i1 %462, label %463, label %477

463:                                              ; preds = %453
  %464 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 28), align 4, !tbaa !34
  %465 = zext i32 %464 to i64
  %466 = and i64 %465, -769
  %467 = trunc i64 %466 to i32
  store i32 %467, ptr %4, align 4, !tbaa !9
  %468 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 28), align 4, !tbaa !34
  %469 = zext i32 %468 to i64
  %470 = or i64 %469, 65536
  %471 = trunc i64 %470 to i32
  store volatile i32 %471, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 28), align 4, !tbaa !34
  %472 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 28), align 4, !tbaa !34
  %473 = zext i32 %472 to i64
  %474 = and i64 %473, -65537
  %475 = trunc i64 %474 to i32
  store volatile i32 %475, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 28), align 4, !tbaa !34
  %476 = load i32, ptr %4, align 4, !tbaa !9
  store volatile i32 %476, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 28), align 4, !tbaa !34
  br label %477

477:                                              ; preds = %463, %453
  %478 = load ptr, ptr %3, align 8, !tbaa !5
  %479 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %478, i32 0, i32 30
  %480 = load i32, ptr %479, align 4, !tbaa !35
  %481 = icmp eq i32 %480, 256
  br i1 %481, label %482, label %501

482:                                              ; preds = %477
  %483 = call i32 @HAL_GetTick()
  store i32 %483, ptr %5, align 4, !tbaa !9
  br label %484

484:                                              ; preds = %499, %482
  %485 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 28), align 4, !tbaa !34
  %486 = zext i32 %485 to i64
  %487 = and i64 %486, 2
  %488 = icmp ne i64 %487, 0
  %489 = zext i1 %488 to i64
  %490 = select i1 %488, i32 1, i32 0
  %491 = icmp eq i32 %490, 0
  br i1 %491, label %492, label %500

492:                                              ; preds = %484
  %493 = call i32 @HAL_GetTick()
  %494 = load i32, ptr %5, align 4, !tbaa !9
  %495 = sub i32 %493, %494
  %496 = zext i32 %495 to i64
  %497 = icmp ugt i64 %496, 5000
  br i1 %497, label %498, label %499

498:                                              ; preds = %492
  store i32 3, ptr %6, align 4, !tbaa !9
  br label %500

499:                                              ; preds = %492
  br label %484, !llvm.loop !36

500:                                              ; preds = %498, %484
  br label %501

501:                                              ; preds = %500, %477
  %502 = load i32, ptr %6, align 4, !tbaa !9
  %503 = icmp eq i32 %502, 0
  br i1 %503, label %504, label %539

504:                                              ; preds = %501
  br label %505

505:                                              ; preds = %504
  %506 = load ptr, ptr %3, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %506, i32 0, i32 30
  %508 = load i32, ptr %507, align 4, !tbaa !35
  %509 = zext i32 %508 to i64
  %510 = and i64 %509, 768
  %511 = icmp eq i64 %510, 768
  br i1 %511, label %512, label %524

512:                                              ; preds = %505
  %513 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 4), align 4, !tbaa !37
  %514 = zext i32 %513 to i64
  %515 = and i64 %514, -16129
  %516 = load ptr, ptr %3, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %516, i32 0, i32 30
  %518 = load i32, ptr %517, align 4, !tbaa !35
  %519 = and i32 %518, 268434687
  %520 = lshr i32 %519, 4
  %521 = zext i32 %520 to i64
  %522 = or i64 %515, %521
  %523 = trunc i64 %522 to i32
  store volatile i32 %523, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 4), align 4, !tbaa !37
  br label %529

524:                                              ; preds = %505
  %525 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 4), align 4, !tbaa !37
  %526 = zext i32 %525 to i64
  %527 = and i64 %526, -16129
  %528 = trunc i64 %527 to i32
  store volatile i32 %528, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 4), align 4, !tbaa !37
  br label %529

529:                                              ; preds = %524, %512
  %530 = phi i32 [ %523, %512 ], [ %528, %524 ]
  %531 = load ptr, ptr %3, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %531, i32 0, i32 30
  %533 = load i32, ptr %532, align 4, !tbaa !35
  %534 = and i32 %533, 4095
  %535 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 28), align 4, !tbaa !34
  %536 = or i32 %535, %534
  store volatile i32 %536, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 28), align 4, !tbaa !34
  br label %537

537:                                              ; preds = %529
  br label %538

538:                                              ; preds = %537
  br label %541

539:                                              ; preds = %501
  %540 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %540, ptr %7, align 4, !tbaa !9
  br label %541

541:                                              ; preds = %539, %538
  br label %544

542:                                              ; preds = %450
  %543 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %543, ptr %7, align 4, !tbaa !9
  br label %544

544:                                              ; preds = %542, %541
  br label %545

545:                                              ; preds = %544, %426
  %546 = load ptr, ptr %3, align 8, !tbaa !5
  %547 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %546, i32 0, i32 0
  %548 = load i32, ptr %547, align 4, !tbaa !11
  %549 = and i32 %548, 1
  %550 = icmp eq i32 %549, 1
  br i1 %550, label %551, label %580

551:                                              ; preds = %545
  %552 = load ptr, ptr %3, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %552, i32 0, i32 16
  %554 = load i32, ptr %553, align 4, !tbaa !38
  switch i32 %554, label %563 [
    i32 0, label %564
    i32 8, label %555
    i32 16, label %559
    i32 24, label %564
    i32 32, label %564
    i32 40, label %564
  ]

555:                                              ; preds = %551
  %556 = load ptr, ptr %3, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %556, i32 0, i32 1
  %558 = call i32 @RCCEx_PLL2_Config(ptr noundef %557, i32 noundef 1)
  store i32 %558, ptr %6, align 4, !tbaa !9
  br label %564

559:                                              ; preds = %551
  %560 = load ptr, ptr %3, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %560, i32 0, i32 2
  %562 = call i32 @RCCEx_PLL3_Config(ptr noundef %561, i32 noundef 1)
  store i32 %562, ptr %6, align 4, !tbaa !9
  br label %564

563:                                              ; preds = %551
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %564

564:                                              ; preds = %563, %559, %555, %551, %551, %551, %551
  %565 = load i32, ptr %6, align 4, !tbaa !9
  %566 = icmp eq i32 %565, 0
  br i1 %566, label %567, label %577

567:                                              ; preds = %564
  %568 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  %569 = zext i32 %568 to i64
  %570 = and i64 %569, -57
  %571 = load ptr, ptr %3, align 8, !tbaa !5
  %572 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %571, i32 0, i32 16
  %573 = load i32, ptr %572, align 4, !tbaa !38
  %574 = zext i32 %573 to i64
  %575 = or i64 %570, %574
  %576 = trunc i64 %575 to i32
  store volatile i32 %576, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  br label %579

577:                                              ; preds = %564
  %578 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %578, ptr %7, align 4, !tbaa !9
  br label %579

579:                                              ; preds = %577, %567
  br label %580

580:                                              ; preds = %579, %545
  %581 = load ptr, ptr %3, align 8, !tbaa !5
  %582 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %581, i32 0, i32 0
  %583 = load i32, ptr %582, align 4, !tbaa !11
  %584 = and i32 %583, 2
  %585 = icmp eq i32 %584, 2
  br i1 %585, label %586, label %615

586:                                              ; preds = %580
  %587 = load ptr, ptr %3, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %587, i32 0, i32 15
  %589 = load i32, ptr %588, align 4, !tbaa !40
  switch i32 %589, label %598 [
    i32 0, label %599
    i32 1, label %590
    i32 2, label %594
    i32 3, label %599
    i32 4, label %599
    i32 5, label %599
  ]

590:                                              ; preds = %586
  %591 = load ptr, ptr %3, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %591, i32 0, i32 1
  %593 = call i32 @RCCEx_PLL2_Config(ptr noundef %592, i32 noundef 1)
  store i32 %593, ptr %6, align 4, !tbaa !9
  br label %599

594:                                              ; preds = %586
  %595 = load ptr, ptr %3, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %595, i32 0, i32 2
  %597 = call i32 @RCCEx_PLL3_Config(ptr noundef %596, i32 noundef 1)
  store i32 %597, ptr %6, align 4, !tbaa !9
  br label %599

598:                                              ; preds = %586
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %599

599:                                              ; preds = %598, %594, %590, %586, %586, %586, %586
  %600 = load i32, ptr %6, align 4, !tbaa !9
  %601 = icmp eq i32 %600, 0
  br i1 %601, label %602, label %612

602:                                              ; preds = %599
  %603 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  %604 = zext i32 %603 to i64
  %605 = and i64 %604, -8
  %606 = load ptr, ptr %3, align 8, !tbaa !5
  %607 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %606, i32 0, i32 15
  %608 = load i32, ptr %607, align 4, !tbaa !40
  %609 = zext i32 %608 to i64
  %610 = or i64 %605, %609
  %611 = trunc i64 %610 to i32
  store volatile i32 %611, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  br label %614

612:                                              ; preds = %599
  %613 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %613, ptr %7, align 4, !tbaa !9
  br label %614

614:                                              ; preds = %612, %602
  br label %615

615:                                              ; preds = %614, %580
  %616 = load ptr, ptr %3, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %616, i32 0, i32 0
  %618 = load i32, ptr %617, align 4, !tbaa !11
  %619 = and i32 %618, 4
  %620 = icmp eq i32 %619, 4
  br i1 %620, label %621, label %650

621:                                              ; preds = %615
  %622 = load ptr, ptr %3, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %622, i32 0, i32 22
  %624 = load i32, ptr %623, align 4, !tbaa !41
  switch i32 %624, label %633 [
    i32 0, label %634
    i32 1, label %625
    i32 2, label %629
    i32 3, label %634
    i32 4, label %634
    i32 5, label %634
  ]

625:                                              ; preds = %621
  %626 = load ptr, ptr %3, align 8, !tbaa !5
  %627 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %626, i32 0, i32 1
  %628 = call i32 @RCCEx_PLL2_Config(ptr noundef %627, i32 noundef 1)
  store i32 %628, ptr %6, align 4, !tbaa !9
  br label %634

629:                                              ; preds = %621
  %630 = load ptr, ptr %3, align 8, !tbaa !5
  %631 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %630, i32 0, i32 2
  %632 = call i32 @RCCEx_PLL3_Config(ptr noundef %631, i32 noundef 1)
  store i32 %632, ptr %6, align 4, !tbaa !9
  br label %634

633:                                              ; preds = %621
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %634

634:                                              ; preds = %633, %629, %625, %621, %621, %621, %621
  %635 = load i32, ptr %6, align 4, !tbaa !9
  %636 = icmp eq i32 %635, 0
  br i1 %636, label %637, label %647

637:                                              ; preds = %634
  %638 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  %639 = zext i32 %638 to i64
  %640 = and i64 %639, -8
  %641 = load ptr, ptr %3, align 8, !tbaa !5
  %642 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %641, i32 0, i32 22
  %643 = load i32, ptr %642, align 4, !tbaa !41
  %644 = zext i32 %643 to i64
  %645 = or i64 %640, %644
  %646 = trunc i64 %645 to i32
  store volatile i32 %646, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  br label %649

647:                                              ; preds = %634
  %648 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %648, ptr %7, align 4, !tbaa !9
  br label %649

649:                                              ; preds = %647, %637
  br label %650

650:                                              ; preds = %649, %615
  %651 = load ptr, ptr %3, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %651, i32 0, i32 0
  %653 = load i32, ptr %652, align 4, !tbaa !11
  %654 = and i32 %653, 32
  %655 = icmp eq i32 %654, 32
  br i1 %655, label %656, label %685

656:                                              ; preds = %650
  %657 = load ptr, ptr %3, align 8, !tbaa !5
  %658 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %657, i32 0, i32 21
  %659 = load i32, ptr %658, align 4, !tbaa !42
  switch i32 %659, label %668 [
    i32 0, label %669
    i32 268435456, label %660
    i32 536870912, label %664
    i32 805306368, label %669
    i32 1073741824, label %669
    i32 1342177280, label %669
  ]

660:                                              ; preds = %656
  %661 = load ptr, ptr %3, align 8, !tbaa !5
  %662 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %661, i32 0, i32 1
  %663 = call i32 @RCCEx_PLL2_Config(ptr noundef %662, i32 noundef 0)
  store i32 %663, ptr %6, align 4, !tbaa !9
  br label %669

664:                                              ; preds = %656
  %665 = load ptr, ptr %3, align 8, !tbaa !5
  %666 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %665, i32 0, i32 2
  %667 = call i32 @RCCEx_PLL3_Config(ptr noundef %666, i32 noundef 2)
  store i32 %667, ptr %6, align 4, !tbaa !9
  br label %669

668:                                              ; preds = %656
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %669

669:                                              ; preds = %668, %664, %660, %656, %656, %656, %656
  %670 = load i32, ptr %6, align 4, !tbaa !9
  %671 = icmp eq i32 %670, 0
  br i1 %671, label %672, label %682

672:                                              ; preds = %669
  %673 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  %674 = zext i32 %673 to i64
  %675 = and i64 %674, -1879048193
  %676 = load ptr, ptr %3, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %676, i32 0, i32 21
  %678 = load i32, ptr %677, align 4, !tbaa !42
  %679 = zext i32 %678 to i64
  %680 = or i64 %675, %679
  %681 = trunc i64 %680 to i32
  store volatile i32 %681, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  br label %684

682:                                              ; preds = %669
  %683 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %683, ptr %7, align 4, !tbaa !9
  br label %684

684:                                              ; preds = %682, %672
  br label %685

685:                                              ; preds = %684, %650
  %686 = load ptr, ptr %3, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %686, i32 0, i32 0
  %688 = load i32, ptr %687, align 4, !tbaa !11
  %689 = and i32 %688, 64
  %690 = icmp eq i32 %689, 64
  br i1 %690, label %691, label %720

691:                                              ; preds = %685
  %692 = load ptr, ptr %3, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %692, i32 0, i32 24
  %694 = load i32, ptr %693, align 4, !tbaa !43
  switch i32 %694, label %703 [
    i32 0, label %704
    i32 1024, label %695
    i32 2048, label %699
    i32 3072, label %704
    i32 4096, label %704
    i32 5120, label %704
  ]

695:                                              ; preds = %691
  %696 = load ptr, ptr %3, align 8, !tbaa !5
  %697 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %696, i32 0, i32 1
  %698 = call i32 @RCCEx_PLL2_Config(ptr noundef %697, i32 noundef 0)
  store i32 %698, ptr %6, align 4, !tbaa !9
  br label %704

699:                                              ; preds = %691
  %700 = load ptr, ptr %3, align 8, !tbaa !5
  %701 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %700, i32 0, i32 2
  %702 = call i32 @RCCEx_PLL3_Config(ptr noundef %701, i32 noundef 2)
  store i32 %702, ptr %6, align 4, !tbaa !9
  br label %704

703:                                              ; preds = %691
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %704

704:                                              ; preds = %703, %699, %695, %691, %691, %691, %691
  %705 = load i32, ptr %6, align 4, !tbaa !9
  %706 = icmp eq i32 %705, 0
  br i1 %706, label %707, label %717

707:                                              ; preds = %704
  %708 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  %709 = zext i32 %708 to i64
  %710 = and i64 %709, -7169
  %711 = load ptr, ptr %3, align 8, !tbaa !5
  %712 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %711, i32 0, i32 24
  %713 = load i32, ptr %712, align 4, !tbaa !43
  %714 = zext i32 %713 to i64
  %715 = or i64 %710, %714
  %716 = trunc i64 %715 to i32
  store volatile i32 %716, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  br label %719

717:                                              ; preds = %704
  %718 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %718, ptr %7, align 4, !tbaa !9
  br label %719

719:                                              ; preds = %717, %707
  br label %720

720:                                              ; preds = %719, %685
  %721 = load ptr, ptr %3, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %721, i32 0, i32 0
  %723 = load i32, ptr %722, align 4, !tbaa !11
  %724 = and i32 %723, 128
  %725 = icmp eq i32 %724, 128
  br i1 %725, label %726, label %755

726:                                              ; preds = %720
  %727 = load ptr, ptr %3, align 8, !tbaa !5
  %728 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %727, i32 0, i32 25
  %729 = load i32, ptr %728, align 4, !tbaa !44
  switch i32 %729, label %738 [
    i32 0, label %739
    i32 8192, label %730
    i32 16384, label %734
    i32 24576, label %739
    i32 32768, label %739
    i32 40960, label %739
  ]

730:                                              ; preds = %726
  %731 = load ptr, ptr %3, align 8, !tbaa !5
  %732 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %731, i32 0, i32 1
  %733 = call i32 @RCCEx_PLL2_Config(ptr noundef %732, i32 noundef 0)
  store i32 %733, ptr %6, align 4, !tbaa !9
  br label %739

734:                                              ; preds = %726
  %735 = load ptr, ptr %3, align 8, !tbaa !5
  %736 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %735, i32 0, i32 2
  %737 = call i32 @RCCEx_PLL3_Config(ptr noundef %736, i32 noundef 2)
  store i32 %737, ptr %6, align 4, !tbaa !9
  br label %739

738:                                              ; preds = %726
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %739

739:                                              ; preds = %738, %734, %730, %726, %726, %726, %726
  %740 = load i32, ptr %6, align 4, !tbaa !9
  %741 = icmp eq i32 %740, 0
  br i1 %741, label %742, label %752

742:                                              ; preds = %739
  %743 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  %744 = zext i32 %743 to i64
  %745 = and i64 %744, -57345
  %746 = load ptr, ptr %3, align 8, !tbaa !5
  %747 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %746, i32 0, i32 25
  %748 = load i32, ptr %747, align 4, !tbaa !44
  %749 = zext i32 %748 to i64
  %750 = or i64 %745, %749
  %751 = trunc i64 %750 to i32
  store volatile i32 %751, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  br label %754

752:                                              ; preds = %739
  %753 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %753, ptr %7, align 4, !tbaa !9
  br label %754

754:                                              ; preds = %752, %742
  br label %755

755:                                              ; preds = %754, %720
  %756 = load ptr, ptr %3, align 8, !tbaa !5
  %757 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %756, i32 0, i32 0
  %758 = load i32, ptr %757, align 4, !tbaa !11
  %759 = and i32 %758, 8
  %760 = icmp eq i32 %759, 8
  br i1 %760, label %761, label %784

761:                                              ; preds = %755
  %762 = load ptr, ptr %3, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %762, i32 0, i32 18
  %764 = load i32, ptr %763, align 4, !tbaa !45
  %765 = zext i32 %764 to i64
  %766 = icmp eq i64 %765, 4096
  br i1 %766, label %767, label %774

767:                                              ; preds = %761
  %768 = load ptr, ptr %3, align 8, !tbaa !5
  %769 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %768, i32 0, i32 2
  %770 = call i32 @RCCEx_PLL3_Config(ptr noundef %769, i32 noundef 2)
  %771 = icmp ne i32 %770, 0
  br i1 %771, label %772, label %773

772:                                              ; preds = %767
  store i32 1, ptr %7, align 4, !tbaa !9
  br label %773

773:                                              ; preds = %772, %767
  br label %774

774:                                              ; preds = %773, %761
  %775 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  %776 = zext i32 %775 to i64
  %777 = and i64 %776, -12289
  %778 = load ptr, ptr %3, align 8, !tbaa !5
  %779 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %778, i32 0, i32 18
  %780 = load i32, ptr %779, align 4, !tbaa !45
  %781 = zext i32 %780 to i64
  %782 = or i64 %777, %781
  %783 = trunc i64 %782 to i32
  store volatile i32 %783, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  br label %784

784:                                              ; preds = %774, %755
  %785 = load ptr, ptr %3, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %785, i32 0, i32 0
  %787 = load i32, ptr %786, align 4, !tbaa !11
  %788 = and i32 %787, 16
  %789 = icmp eq i32 %788, 16
  br i1 %789, label %790, label %813

790:                                              ; preds = %784
  %791 = load ptr, ptr %3, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %791, i32 0, i32 23
  %793 = load i32, ptr %792, align 4, !tbaa !46
  %794 = zext i32 %793 to i64
  %795 = icmp eq i64 %794, 256
  br i1 %795, label %796, label %803

796:                                              ; preds = %790
  %797 = load ptr, ptr %3, align 8, !tbaa !5
  %798 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %797, i32 0, i32 2
  %799 = call i32 @RCCEx_PLL3_Config(ptr noundef %798, i32 noundef 2)
  %800 = icmp ne i32 %799, 0
  br i1 %800, label %801, label %802

801:                                              ; preds = %796
  store i32 1, ptr %7, align 4, !tbaa !9
  br label %802

802:                                              ; preds = %801, %796
  br label %803

803:                                              ; preds = %802, %790
  %804 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  %805 = zext i32 %804 to i64
  %806 = and i64 %805, -769
  %807 = load ptr, ptr %3, align 8, !tbaa !5
  %808 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %807, i32 0, i32 23
  %809 = load i32, ptr %808, align 4, !tbaa !46
  %810 = zext i32 %809 to i64
  %811 = or i64 %806, %810
  %812 = trunc i64 %811 to i32
  store volatile i32 %812, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  br label %813

813:                                              ; preds = %803, %784
  %814 = load ptr, ptr %3, align 8, !tbaa !5
  %815 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %814, i32 0, i32 0
  %816 = load i32, ptr %815, align 4, !tbaa !11
  %817 = and i32 %816, 524288
  %818 = icmp eq i32 %817, 524288
  br i1 %818, label %819, label %848

819:                                              ; preds = %813
  %820 = load ptr, ptr %3, align 8, !tbaa !5
  %821 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %820, i32 0, i32 26
  %822 = load i32, ptr %821, align 4, !tbaa !47
  switch i32 %822, label %831 [
    i32 0, label %823
    i32 65536, label %827
    i32 131072, label %832
  ]

823:                                              ; preds = %819
  %824 = load ptr, ptr %3, align 8, !tbaa !5
  %825 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %824, i32 0, i32 1
  %826 = call i32 @RCCEx_PLL2_Config(ptr noundef %825, i32 noundef 0)
  store i32 %826, ptr %6, align 4, !tbaa !9
  br label %832

827:                                              ; preds = %819
  %828 = load ptr, ptr %3, align 8, !tbaa !5
  %829 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %828, i32 0, i32 2
  %830 = call i32 @RCCEx_PLL3_Config(ptr noundef %829, i32 noundef 2)
  store i32 %830, ptr %6, align 4, !tbaa !9
  br label %832

831:                                              ; preds = %819
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %832

832:                                              ; preds = %831, %827, %823, %819
  %833 = load i32, ptr %6, align 4, !tbaa !9
  %834 = icmp eq i32 %833, 0
  br i1 %834, label %835, label %845

835:                                              ; preds = %832
  %836 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  %837 = zext i32 %836 to i64
  %838 = and i64 %837, -196609
  %839 = load ptr, ptr %3, align 8, !tbaa !5
  %840 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %839, i32 0, i32 26
  %841 = load i32, ptr %840, align 4, !tbaa !47
  %842 = zext i32 %841 to i64
  %843 = or i64 %838, %842
  %844 = trunc i64 %843 to i32
  store volatile i32 %844, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  br label %847

845:                                              ; preds = %832
  %846 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %846, ptr %7, align 4, !tbaa !9
  br label %847

847:                                              ; preds = %845, %835
  br label %848

848:                                              ; preds = %847, %813
  %849 = load ptr, ptr %3, align 8, !tbaa !5
  %850 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %849, i32 0, i32 0
  %851 = load i32, ptr %850, align 4, !tbaa !11
  %852 = and i32 %851, 262144
  %853 = icmp eq i32 %852, 262144
  br i1 %853, label %854, label %884

854:                                              ; preds = %848
  %855 = load ptr, ptr %3, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %855, i32 0, i32 19
  %857 = load i32, ptr %856, align 4, !tbaa !48
  switch i32 %857, label %867 [
    i32 1048576, label %858
    i32 2097152, label %863
    i32 3145728, label %868
  ]

858:                                              ; preds = %854
  %859 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !15
  %860 = zext i32 %859 to i64
  %861 = or i64 %860, 131072
  %862 = trunc i64 %861 to i32
  store volatile i32 %862, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !15
  br label %868

863:                                              ; preds = %854
  %864 = load ptr, ptr %3, align 8, !tbaa !5
  %865 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %864, i32 0, i32 2
  %866 = call i32 @RCCEx_PLL3_Config(ptr noundef %865, i32 noundef 1)
  store i32 %866, ptr %6, align 4, !tbaa !9
  br label %868

867:                                              ; preds = %854
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %868

868:                                              ; preds = %867, %863, %858, %854
  %869 = load i32, ptr %6, align 4, !tbaa !9
  %870 = icmp eq i32 %869, 0
  br i1 %870, label %871, label %881

871:                                              ; preds = %868
  %872 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  %873 = zext i32 %872 to i64
  %874 = and i64 %873, -3145729
  %875 = load ptr, ptr %3, align 8, !tbaa !5
  %876 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %875, i32 0, i32 19
  %877 = load i32, ptr %876, align 4, !tbaa !48
  %878 = zext i32 %877 to i64
  %879 = or i64 %874, %878
  %880 = trunc i64 %879 to i32
  store volatile i32 %880, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  br label %883

881:                                              ; preds = %868
  %882 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %882, ptr %7, align 4, !tbaa !9
  br label %883

883:                                              ; preds = %881, %871
  br label %884

884:                                              ; preds = %883, %848
  %885 = load ptr, ptr %3, align 8, !tbaa !5
  %886 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %885, i32 0, i32 0
  %887 = load i32, ptr %886, align 4, !tbaa !11
  %888 = and i32 %887, 65536
  %889 = icmp eq i32 %888, 65536
  br i1 %889, label %890, label %920

890:                                              ; preds = %884
  %891 = load ptr, ptr %3, align 8, !tbaa !5
  %892 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %891, i32 0, i32 5
  %893 = load i32, ptr %892, align 4, !tbaa !49
  switch i32 %893, label %903 [
    i32 0, label %894
    i32 65536, label %899
  ]

894:                                              ; preds = %890
  %895 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !15
  %896 = zext i32 %895 to i64
  %897 = or i64 %896, 131072
  %898 = trunc i64 %897 to i32
  store volatile i32 %898, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !15
  br label %904

899:                                              ; preds = %890
  %900 = load ptr, ptr %3, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %900, i32 0, i32 1
  %902 = call i32 @RCCEx_PLL2_Config(ptr noundef %901, i32 noundef 2)
  store i32 %902, ptr %6, align 4, !tbaa !9
  br label %904

903:                                              ; preds = %890
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %904

904:                                              ; preds = %903, %899, %894
  %905 = load i32, ptr %6, align 4, !tbaa !9
  %906 = icmp eq i32 %905, 0
  br i1 %906, label %907, label %917

907:                                              ; preds = %904
  %908 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 19), align 4, !tbaa !24
  %909 = zext i32 %908 to i64
  %910 = and i64 %909, -65537
  %911 = load ptr, ptr %3, align 8, !tbaa !5
  %912 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %911, i32 0, i32 5
  %913 = load i32, ptr %912, align 4, !tbaa !49
  %914 = zext i32 %913 to i64
  %915 = or i64 %910, %914
  %916 = trunc i64 %915 to i32
  store volatile i32 %916, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 19), align 4, !tbaa !24
  br label %919

917:                                              ; preds = %904
  %918 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %918, ptr %7, align 4, !tbaa !9
  br label %919

919:                                              ; preds = %917, %907
  br label %920

920:                                              ; preds = %919, %884
  %921 = load ptr, ptr %3, align 8, !tbaa !5
  %922 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %921, i32 0, i32 0
  %923 = load i32, ptr %922, align 4, !tbaa !11
  %924 = and i32 %923, 536870912
  %925 = icmp eq i32 %924, 536870912
  br i1 %925, label %926, label %933

926:                                              ; preds = %920
  %927 = load ptr, ptr %3, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %927, i32 0, i32 2
  %929 = call i32 @RCCEx_PLL3_Config(ptr noundef %928, i32 noundef 2)
  %930 = icmp ne i32 %929, 0
  br i1 %930, label %931, label %932

931:                                              ; preds = %926
  store i32 1, ptr %7, align 4, !tbaa !9
  br label %932

932:                                              ; preds = %931, %926
  br label %933

933:                                              ; preds = %932, %920
  %934 = load ptr, ptr %3, align 8, !tbaa !5
  %935 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %934, i32 0, i32 0
  %936 = load i32, ptr %935, align 4, !tbaa !11
  %937 = and i32 %936, 131072
  %938 = icmp eq i32 %937, 131072
  br i1 %938, label %939, label %965

939:                                              ; preds = %933
  %940 = load ptr, ptr %3, align 8, !tbaa !5
  %941 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %940, i32 0, i32 17
  %942 = load i32, ptr %941, align 4, !tbaa !50
  switch i32 %942, label %948 [
    i32 256, label %943
    i32 512, label %949
    i32 768, label %949
    i32 0, label %949
  ]

943:                                              ; preds = %939
  %944 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !15
  %945 = zext i32 %944 to i64
  %946 = or i64 %945, 131072
  %947 = trunc i64 %946 to i32
  store volatile i32 %947, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !15
  br label %949

948:                                              ; preds = %939
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %949

949:                                              ; preds = %948, %943, %939, %939, %939
  %950 = load i32, ptr %6, align 4, !tbaa !9
  %951 = icmp eq i32 %950, 0
  br i1 %951, label %952, label %962

952:                                              ; preds = %949
  %953 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  %954 = zext i32 %953 to i64
  %955 = and i64 %954, -769
  %956 = load ptr, ptr %3, align 8, !tbaa !5
  %957 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %956, i32 0, i32 17
  %958 = load i32, ptr %957, align 4, !tbaa !50
  %959 = zext i32 %958 to i64
  %960 = or i64 %955, %959
  %961 = trunc i64 %960 to i32
  store volatile i32 %961, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  br label %964

962:                                              ; preds = %949
  %963 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %963, ptr %7, align 4, !tbaa !9
  br label %964

964:                                              ; preds = %962, %952
  br label %965

965:                                              ; preds = %964, %933
  %966 = load ptr, ptr %3, align 8, !tbaa !5
  %967 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %966, i32 0, i32 0
  %968 = load i32, ptr %967, align 4, !tbaa !11
  %969 = and i32 %968, 1048576
  %970 = icmp eq i32 %969, 1048576
  br i1 %970, label %971, label %981

971:                                              ; preds = %965
  %972 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 20), align 4, !tbaa !17
  %973 = zext i32 %972 to i64
  %974 = and i64 %973, -2147483649
  %975 = load ptr, ptr %3, align 8, !tbaa !5
  %976 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %975, i32 0, i32 14
  %977 = load i32, ptr %976, align 4, !tbaa !51
  %978 = zext i32 %977 to i64
  %979 = or i64 %974, %978
  %980 = trunc i64 %979 to i32
  store volatile i32 %980, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 20), align 4, !tbaa !17
  br label %981

981:                                              ; preds = %971, %965
  %982 = load ptr, ptr %3, align 8, !tbaa !5
  %983 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %982, i32 0, i32 0
  %984 = load i32, ptr %983, align 4, !tbaa !11
  %985 = and i32 %984, 268435456
  %986 = icmp eq i32 %985, 268435456
  br i1 %986, label %987, label %997

987:                                              ; preds = %981
  %988 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 4), align 4, !tbaa !37
  %989 = zext i32 %988 to i64
  %990 = and i64 %989, -16385
  %991 = load ptr, ptr %3, align 8, !tbaa !5
  %992 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %991, i32 0, i32 31
  %993 = load i32, ptr %992, align 4, !tbaa !52
  %994 = zext i32 %993 to i64
  %995 = or i64 %990, %994
  %996 = trunc i64 %995 to i32
  store volatile i32 %996, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 4), align 4, !tbaa !37
  br label %997

997:                                              ; preds = %987, %981
  %998 = load ptr, ptr %3, align 8, !tbaa !5
  %999 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %998, i32 0, i32 0
  %1000 = load i32, ptr %999, align 4, !tbaa !11
  %1001 = and i32 %1000, 2097152
  %1002 = icmp eq i32 %1001, 2097152
  br i1 %1002, label %1003, label %1013

1003:                                             ; preds = %997
  %1004 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 20), align 4, !tbaa !17
  %1005 = zext i32 %1004 to i64
  %1006 = and i64 %1005, -16777217
  %1007 = load ptr, ptr %3, align 8, !tbaa !5
  %1008 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %1007, i32 0, i32 12
  %1009 = load i32, ptr %1008, align 4, !tbaa !53
  %1010 = zext i32 %1009 to i64
  %1011 = or i64 %1006, %1010
  %1012 = trunc i64 %1011 to i32
  store volatile i32 %1012, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 20), align 4, !tbaa !17
  br label %1013

1013:                                             ; preds = %1003, %997
  %1014 = load ptr, ptr %3, align 8, !tbaa !5
  %1015 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %1014, i32 0, i32 0
  %1016 = load i32, ptr %1015, align 4, !tbaa !11
  %1017 = and i32 %1016, 1073741824
  %1018 = icmp eq i32 %1017, 1073741824
  br i1 %1018, label %1019, label %1032

1019:                                             ; preds = %1013
  br label %1020

1020:                                             ; preds = %1019
  %1021 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 4), align 4, !tbaa !37
  %1022 = zext i32 %1021 to i64
  %1023 = and i64 %1022, -32769
  %1024 = trunc i64 %1023 to i32
  store volatile i32 %1024, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 4), align 4, !tbaa !37
  %1025 = load ptr, ptr %3, align 8, !tbaa !5
  %1026 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %1025, i32 0, i32 32
  %1027 = load i32, ptr %1026, align 4, !tbaa !54
  %1028 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 4), align 4, !tbaa !37
  %1029 = or i32 %1028, %1027
  store volatile i32 %1029, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 4), align 4, !tbaa !37
  br label %1030

1030:                                             ; preds = %1020
  br label %1031

1031:                                             ; preds = %1030
  br label %1032

1032:                                             ; preds = %1031, %1013
  %1033 = load ptr, ptr %3, align 8, !tbaa !5
  %1034 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %1033, i32 0, i32 0
  %1035 = load i32, ptr %1034, align 4, !tbaa !11
  %1036 = and i32 %1035, -2147483648
  %1037 = icmp eq i32 %1036, -2147483648
  br i1 %1037, label %1038, label %1048

1038:                                             ; preds = %1032
  %1039 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 19), align 4, !tbaa !24
  %1040 = zext i32 %1039 to i64
  %1041 = and i64 %1040, -805306369
  %1042 = load ptr, ptr %3, align 8, !tbaa !5
  %1043 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %1042, i32 0, i32 6
  %1044 = load i32, ptr %1043, align 4, !tbaa !55
  %1045 = zext i32 %1044 to i64
  %1046 = or i64 %1041, %1045
  %1047 = trunc i64 %1046 to i32
  store volatile i32 %1047, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 19), align 4, !tbaa !24
  br label %1048

1048:                                             ; preds = %1038, %1032
  %1049 = load ptr, ptr %3, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %1049, i32 0, i32 0
  %1051 = load i32, ptr %1050, align 4, !tbaa !11
  %1052 = and i32 %1051, 8388608
  %1053 = icmp eq i32 %1052, 8388608
  br i1 %1053, label %1054, label %1064

1054:                                             ; preds = %1048
  %1055 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  %1056 = zext i32 %1055 to i64
  %1057 = and i64 %1056, -12582913
  %1058 = load ptr, ptr %3, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %1058, i32 0, i32 20
  %1060 = load i32, ptr %1059, align 4, !tbaa !56
  %1061 = zext i32 %1060 to i64
  %1062 = or i64 %1057, %1061
  %1063 = trunc i64 %1062 to i32
  store volatile i32 %1063, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  br label %1064

1064:                                             ; preds = %1054, %1048
  %1065 = load i32, ptr %7, align 4, !tbaa !9
  %1066 = icmp eq i32 %1065, 0
  br i1 %1066, label %1067, label %1068

1067:                                             ; preds = %1064
  store i32 0, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %1069

1068:                                             ; preds = %1064
  store i32 1, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %1069

1069:                                             ; preds = %1068, %1067
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #3
  %1070 = load i32, ptr %2, align 4
  ret i32 %1070
}

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

; Function Attrs: nounwind uwtable
declare hidden i32 @RCCEx_PLL2_Config(ptr noundef, i32 noundef) #0

; Function Attrs: nounwind uwtable
declare hidden i32 @RCCEx_PLL3_Config(ptr noundef, i32 noundef) #0

declare i32 @HAL_GetTick() #2

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "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 0}
!12 = !{!"", !10, i64 0, !13, i64 4, !13, i64 36, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184}
!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}
!14 = !{!12, !10, i64 100}
!15 = !{!16, !10, i64 44}
!16 = !{!"", !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, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !7, i64 172, !10, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !10, i64 236, !10, i64 240, !10, i64 244, !10, i64 248, !10, i64 252, !10, i64 256, !10, i64 260, !10, i64 264, !10, i64 268, !10, i64 272, !10, i64 276, !10, i64 280, !10, i64 284, !7, i64 288}
!17 = !{!16, !10, i64 80}
!18 = !{!12, !10, i64 84}
!19 = !{!12, !10, i64 88}
!20 = !{!12, !10, i64 164}
!21 = !{!16, !10, i64 88}
!22 = !{!12, !10, i64 168}
!23 = !{!12, !10, i64 72}
!24 = !{!16, !10, i64 76}
!25 = !{!12, !10, i64 92}
!26 = !{!12, !10, i64 96}
!27 = !{!12, !10, i64 172}
!28 = !{!12, !10, i64 108}
!29 = !{!12, !10, i64 68}
!30 = !{!31, !10, i64 0}
!31 = !{!"", !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}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}
!34 = !{!16, !10, i64 112}
!35 = !{!12, !10, i64 176}
!36 = distinct !{!36, !33}
!37 = !{!16, !10, i64 16}
!38 = !{!12, !10, i64 120}
!39 = !{!16, !10, i64 84}
!40 = !{!12, !10, i64 116}
!41 = !{!12, !10, i64 144}
!42 = !{!12, !10, i64 140}
!43 = !{!12, !10, i64 152}
!44 = !{!12, !10, i64 156}
!45 = !{!12, !10, i64 128}
!46 = !{!12, !10, i64 148}
!47 = !{!12, !10, i64 160}
!48 = !{!12, !10, i64 132}
!49 = !{!12, !10, i64 76}
!50 = !{!12, !10, i64 124}
!51 = !{!12, !10, i64 112}
!52 = !{!12, !10, i64 180}
!53 = !{!12, !10, i64 104}
!54 = !{!12, !10, i64 184}
!55 = !{!12, !10, i64 80}
!56 = !{!12, !10, i64 136}


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

; Function Attrs: nounwind uwtable
define dso_local range(i32 0, 2) i32 @HAL_RCCEx_PeriphCLKConfig(ptr noundef %0) local_unnamed_addr #0 {
  %2 = load i32, ptr %0, align 4, !tbaa !5
  %3 = and i32 %2, 134217728
  %.not = icmp eq i32 %3, 0
  br i1 %.not, label %.thread242, label %4

4:                                                ; preds = %1
  %5 = getelementptr inbounds i8, ptr %0, i64 100
  %6 = load i32, ptr %5, align 4, !tbaa !11
  %7 = tail call i32 @llvm.fshl.i32(i32 %6, i32 %6, i32 12)
  switch i32 %7, label %.thread242 [
    i32 0, label %8
    i32 1, label %11
    i32 2, label %14
    i32 3, label %.thread
  ]

8:                                                ; preds = %4
  %9 = load volatile i32, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  %10 = or i32 %9, 131072
  store volatile i32 %10, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  br label %.thread

11:                                               ; preds = %4
  %12 = getelementptr inbounds i8, ptr %0, i64 4
  %13 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %12, i32 noundef 2)
  br label %17

14:                                               ; preds = %4
  %15 = getelementptr inbounds i8, ptr %0, i64 36
  %16 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %15, i32 noundef 2)
  br label %17

17:                                               ; preds = %14, %11
  %.0176 = phi i32 [ %16, %14 ], [ %13, %11 ]
  %18 = icmp eq i32 %.0176, 0
  br i1 %18, label %..thread_crit_edge, label %.thread242

..thread_crit_edge:                               ; preds = %17
  %.pre = load i32, ptr %5, align 4, !tbaa !11
  br label %.thread

.thread:                                          ; preds = %..thread_crit_edge, %8, %4
  %19 = phi i32 [ %.pre, %..thread_crit_edge ], [ %6, %8 ], [ %6, %4 ]
  %20 = load volatile i32, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !14
  %21 = and i32 %20, -3145729
  %22 = or i32 %21, %19
  store volatile i32 %22, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !14
  br label %.thread242

.thread242:                                       ; preds = %4, %17, %.thread, %1
  %.0 = phi i32 [ 0, %.thread ], [ 0, %1 ], [ %.0176, %17 ], [ 1, %4 ]
  %23 = load i32, ptr %0, align 4, !tbaa !5
  %24 = and i32 %23, 256
  %.not204 = icmp eq i32 %24, 0
  br i1 %.not204, label %.thread244, label %25

25:                                               ; preds = %.thread242
  %26 = getelementptr inbounds i8, ptr %0, i64 84
  %27 = load i32, ptr %26, align 4, !tbaa !15
  switch i32 %27, label %.thread244 [
    i32 0, label %28
    i32 1, label %31
    i32 2, label %34
    i32 3, label %37
    i32 4, label %37
  ]

28:                                               ; preds = %25
  %29 = load volatile i32, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  %30 = or i32 %29, 131072
  store volatile i32 %30, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  br label %37

31:                                               ; preds = %25
  %32 = getelementptr inbounds i8, ptr %0, i64 4
  %33 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %32, i32 noundef 0)
  br label %37

34:                                               ; preds = %25
  %35 = getelementptr inbounds i8, ptr %0, i64 36
  %36 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %35, i32 noundef 0)
  br label %37

37:                                               ; preds = %34, %31, %28, %25, %25
  %.2178 = phi i32 [ %.0, %25 ], [ %.0, %25 ], [ %36, %34 ], [ %33, %31 ], [ %.0, %28 ]
  %38 = icmp eq i32 %.2178, 0
  br i1 %38, label %39, label %.thread244

39:                                               ; preds = %37
  %40 = load volatile i32, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !14
  %41 = and i32 %40, -8
  %42 = load i32, ptr %26, align 4, !tbaa !15
  %43 = or i32 %41, %42
  store volatile i32 %43, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !14
  br label %.thread244

.thread244:                                       ; preds = %25, %37, %39, %.thread242
  %.3179 = phi i32 [ 0, %39 ], [ %.0, %.thread242 ], [ %.2178, %37 ], [ 1, %25 ]
  %.1 = phi i32 [ %.0, %39 ], [ %.0, %.thread242 ], [ %.2178, %37 ], [ 1, %25 ]
  %44 = load i32, ptr %0, align 4, !tbaa !5
  %45 = and i32 %44, 512
  %.not205 = icmp eq i32 %45, 0
  br i1 %.not205, label %.thread246, label %46

46:                                               ; preds = %.thread244
  %47 = getelementptr inbounds i8, ptr %0, i64 88
  %48 = load i32, ptr %47, align 4, !tbaa !16
  %49 = tail call i32 @llvm.fshl.i32(i32 %48, i32 %48, i32 26)
  switch i32 %49, label %.thread246 [
    i32 0, label %50
    i32 1, label %53
    i32 2, label %56
    i32 3, label %59
    i32 4, label %59
  ]

50:                                               ; preds = %46
  %51 = load volatile i32, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  %52 = or i32 %51, 131072
  store volatile i32 %52, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  br label %59

53:                                               ; preds = %46
  %54 = getelementptr inbounds i8, ptr %0, i64 4
  %55 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %54, i32 noundef 0)
  br label %59

56:                                               ; preds = %46
  %57 = getelementptr inbounds i8, ptr %0, i64 36
  %58 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %57, i32 noundef 0)
  br label %59

59:                                               ; preds = %56, %53, %50, %46, %46
  %.4180 = phi i32 [ %.3179, %46 ], [ %.3179, %46 ], [ %58, %56 ], [ %55, %53 ], [ %.3179, %50 ]
  %60 = icmp eq i32 %.4180, 0
  br i1 %60, label %61, label %.thread246

61:                                               ; preds = %59
  %62 = load volatile i32, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !14
  %63 = and i32 %62, -449
  %64 = load i32, ptr %47, align 4, !tbaa !16
  %65 = or i32 %63, %64
  store volatile i32 %65, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !14
  br label %.thread246

.thread246:                                       ; preds = %46, %59, %61, %.thread244
  %.5181 = phi i32 [ 0, %61 ], [ %.3179, %.thread244 ], [ %.4180, %59 ], [ 1, %46 ]
  %.2 = phi i32 [ %.1, %61 ], [ %.1, %.thread244 ], [ %.4180, %59 ], [ 1, %46 ]
  %66 = load i32, ptr %0, align 4, !tbaa !5
  %67 = and i32 %66, 1024
  %.not206 = icmp eq i32 %67, 0
  br i1 %.not206, label %.thread248, label %68

68:                                               ; preds = %.thread246
  %69 = getelementptr inbounds i8, ptr %0, i64 164
  %70 = load i32, ptr %69, align 4, !tbaa !17
  %71 = tail call i32 @llvm.fshl.i32(i32 %70, i32 %70, i32 11)
  switch i32 %71, label %.thread248 [
    i32 0, label %72
    i32 1, label %75
    i32 2, label %78
    i32 3, label %81
    i32 4, label %81
  ]

72:                                               ; preds = %68
  %73 = load volatile i32, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  %74 = or i32 %73, 131072
  store volatile i32 %74, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  br label %81

75:                                               ; preds = %68
  %76 = getelementptr inbounds i8, ptr %0, i64 4
  %77 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %76, i32 noundef 0)
  br label %81

78:                                               ; preds = %68
  %79 = getelementptr inbounds i8, ptr %0, i64 36
  %80 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %79, i32 noundef 0)
  br label %81

81:                                               ; preds = %78, %75, %72, %68, %68
  %.6182 = phi i32 [ %.5181, %68 ], [ %.5181, %68 ], [ %80, %78 ], [ %77, %75 ], [ %.5181, %72 ]
  %82 = icmp eq i32 %.6182, 0
  br i1 %82, label %83, label %.thread248

83:                                               ; preds = %81
  %84 = load volatile i32, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  %85 = and i32 %84, -14680065
  %86 = load i32, ptr %69, align 4, !tbaa !17
  %87 = or i32 %85, %86
  store volatile i32 %87, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  br label %.thread248

.thread248:                                       ; preds = %68, %81, %83, %.thread246
  %.7183 = phi i32 [ 0, %83 ], [ %.5181, %.thread246 ], [ %.6182, %81 ], [ 1, %68 ]
  %.3 = phi i32 [ %.2, %83 ], [ %.2, %.thread246 ], [ %.6182, %81 ], [ 1, %68 ]
  %88 = load i32, ptr %0, align 4, !tbaa !5
  %89 = and i32 %88, 2048
  %.not207 = icmp eq i32 %89, 0
  br i1 %.not207, label %.thread250, label %90

90:                                               ; preds = %.thread248
  %91 = getelementptr inbounds i8, ptr %0, i64 168
  %92 = load i32, ptr %91, align 4, !tbaa !19
  %93 = tail call i32 @llvm.fshl.i32(i32 %92, i32 %92, i32 8)
  switch i32 %93, label %.thread250 [
    i32 0, label %94
    i32 1, label %97
    i32 2, label %100
    i32 3, label %103
    i32 4, label %103
  ]

94:                                               ; preds = %90
  %95 = load volatile i32, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  %96 = or i32 %95, 131072
  store volatile i32 %96, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  br label %103

97:                                               ; preds = %90
  %98 = getelementptr inbounds i8, ptr %0, i64 4
  %99 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %98, i32 noundef 0)
  br label %103

100:                                              ; preds = %90
  %101 = getelementptr inbounds i8, ptr %0, i64 36
  %102 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %101, i32 noundef 0)
  br label %103

103:                                              ; preds = %100, %97, %94, %90, %90
  %.8184 = phi i32 [ %.7183, %90 ], [ %.7183, %90 ], [ %102, %100 ], [ %99, %97 ], [ %.7183, %94 ]
  %104 = icmp eq i32 %.8184, 0
  br i1 %104, label %105, label %.thread250

105:                                              ; preds = %103
  %106 = load volatile i32, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  %107 = and i32 %106, -117440513
  %108 = load i32, ptr %91, align 4, !tbaa !19
  %109 = or i32 %107, %108
  store volatile i32 %109, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  br label %.thread250

.thread250:                                       ; preds = %90, %103, %105, %.thread248
  %.9185 = phi i32 [ 0, %105 ], [ %.7183, %.thread248 ], [ %.8184, %103 ], [ 1, %90 ]
  %.4 = phi i32 [ %.3, %105 ], [ %.3, %.thread248 ], [ %.8184, %103 ], [ 1, %90 ]
  %110 = load i32, ptr %0, align 4, !tbaa !5
  %111 = and i32 %110, 33554432
  %.not208 = icmp eq i32 %111, 0
  br i1 %.not208, label %.thread252, label %112

112:                                              ; preds = %.thread250
  %113 = getelementptr inbounds i8, ptr %0, i64 72
  %114 = load i32, ptr %113, align 4, !tbaa !20
  %115 = tail call i32 @llvm.fshl.i32(i32 %114, i32 %114, i32 28)
  switch i32 %115, label %.thread252 [
    i32 1, label %116
    i32 2, label %119
    i32 3, label %122
    i32 0, label %122
  ]

116:                                              ; preds = %112
  %117 = load volatile i32, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  %118 = or i32 %117, 131072
  store volatile i32 %118, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  br label %122

119:                                              ; preds = %112
  %120 = getelementptr inbounds i8, ptr %0, i64 4
  %121 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %120, i32 noundef 2)
  br label %122

122:                                              ; preds = %119, %116, %112, %112
  %.10186 = phi i32 [ %.9185, %112 ], [ %.9185, %112 ], [ %121, %119 ], [ %.9185, %116 ]
  %123 = icmp eq i32 %.10186, 0
  br i1 %123, label %124, label %.thread252

124:                                              ; preds = %122
  %125 = load volatile i32, ptr inttoptr (i64 1476543564 to ptr), align 4, !tbaa !21
  %126 = and i32 %125, -49
  %127 = load i32, ptr %113, align 4, !tbaa !20
  %128 = or i32 %126, %127
  store volatile i32 %128, ptr inttoptr (i64 1476543564 to ptr), align 4, !tbaa !21
  br label %.thread252

.thread252:                                       ; preds = %112, %122, %124, %.thread250
  %.11187 = phi i32 [ 0, %124 ], [ %.9185, %.thread250 ], [ %.10186, %122 ], [ 1, %112 ]
  %.5 = phi i32 [ %.4, %124 ], [ %.4, %.thread250 ], [ %.10186, %122 ], [ 1, %112 ]
  %129 = load i32, ptr %0, align 4, !tbaa !5
  %130 = and i32 %129, 4096
  %.not209 = icmp eq i32 %130, 0
  br i1 %.not209, label %.thread254, label %131

131:                                              ; preds = %.thread252
  %132 = getelementptr inbounds i8, ptr %0, i64 92
  %133 = load i32, ptr %132, align 4, !tbaa !22
  %134 = tail call i32 @llvm.fshl.i32(i32 %133, i32 %133, i32 20)
  switch i32 %134, label %.thread254 [
    i32 0, label %135
    i32 1, label %138
    i32 2, label %141
    i32 3, label %144
    i32 4, label %144
  ]

135:                                              ; preds = %131
  %136 = load volatile i32, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  %137 = or i32 %136, 131072
  store volatile i32 %137, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  br label %144

138:                                              ; preds = %131
  %139 = getelementptr inbounds i8, ptr %0, i64 4
  %140 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %139, i32 noundef 0)
  br label %144

141:                                              ; preds = %131
  %142 = getelementptr inbounds i8, ptr %0, i64 36
  %143 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %142, i32 noundef 0)
  br label %144

144:                                              ; preds = %141, %138, %135, %131, %131
  %.12188 = phi i32 [ %.11187, %131 ], [ %.11187, %131 ], [ %143, %141 ], [ %140, %138 ], [ %.11187, %135 ]
  %145 = icmp eq i32 %.12188, 0
  br i1 %145, label %146, label %.thread254

146:                                              ; preds = %144
  %147 = load volatile i32, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !14
  %148 = and i32 %147, -28673
  %149 = load i32, ptr %132, align 4, !tbaa !22
  %150 = or i32 %148, %149
  store volatile i32 %150, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !14
  br label %.thread254

.thread254:                                       ; preds = %131, %144, %146, %.thread252
  %.13189 = phi i32 [ 0, %146 ], [ %.11187, %.thread252 ], [ %.12188, %144 ], [ 1, %131 ]
  %.6 = phi i32 [ %.5, %146 ], [ %.5, %.thread252 ], [ %.12188, %144 ], [ 1, %131 ]
  %151 = load i32, ptr %0, align 4, !tbaa !5
  %152 = and i32 %151, 8192
  %.not210 = icmp eq i32 %152, 0
  br i1 %.not210, label %.thread256, label %153

153:                                              ; preds = %.thread254
  %154 = getelementptr inbounds i8, ptr %0, i64 96
  %155 = load i32, ptr %154, align 4, !tbaa !23
  %156 = tail call i32 @llvm.fshl.i32(i32 %155, i32 %155, i32 16)
  switch i32 %156, label %.thread256 [
    i32 0, label %163
    i32 1, label %157
    i32 2, label %160
    i32 3, label %163
    i32 4, label %163
    i32 5, label %163
  ]

157:                                              ; preds = %153
  %158 = getelementptr inbounds i8, ptr %0, i64 4
  %159 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %158, i32 noundef 1)
  br label %163

160:                                              ; preds = %153
  %161 = getelementptr inbounds i8, ptr %0, i64 36
  %162 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %161, i32 noundef 1)
  br label %163

163:                                              ; preds = %160, %157, %153, %153, %153, %153
  %.14190 = phi i32 [ %162, %160 ], [ %159, %157 ], [ %.13189, %153 ], [ %.13189, %153 ], [ %.13189, %153 ], [ %.13189, %153 ]
  %164 = icmp eq i32 %.14190, 0
  br i1 %164, label %165, label %.thread256

165:                                              ; preds = %163
  %166 = load volatile i32, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !14
  %167 = and i32 %166, -458753
  %168 = load i32, ptr %154, align 4, !tbaa !23
  %169 = or i32 %167, %168
  store volatile i32 %169, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !14
  br label %.thread256

.thread256:                                       ; preds = %153, %163, %165, %.thread254
  %.15191 = phi i32 [ 0, %165 ], [ %.13189, %.thread254 ], [ %.14190, %163 ], [ 1, %153 ]
  %.7 = phi i32 [ %.6, %165 ], [ %.6, %.thread254 ], [ %.14190, %163 ], [ 1, %153 ]
  %170 = load i32, ptr %0, align 4, !tbaa !5
  %171 = and i32 %170, 16384
  %.not211 = icmp eq i32 %171, 0
  br i1 %.not211, label %.thread258, label %172

172:                                              ; preds = %.thread256
  %173 = getelementptr inbounds i8, ptr %0, i64 172
  %174 = load i32, ptr %173, align 4, !tbaa !24
  %175 = tail call i32 @llvm.fshl.i32(i32 %174, i32 %174, i32 4)
  switch i32 %175, label %.thread258 [
    i32 0, label %182
    i32 1, label %176
    i32 2, label %179
    i32 3, label %182
    i32 4, label %182
    i32 5, label %182
  ]

176:                                              ; preds = %172
  %177 = getelementptr inbounds i8, ptr %0, i64 4
  %178 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %177, i32 noundef 1)
  br label %182

179:                                              ; preds = %172
  %180 = getelementptr inbounds i8, ptr %0, i64 36
  %181 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %180, i32 noundef 1)
  br label %182

182:                                              ; preds = %179, %176, %172, %172, %172, %172
  %.16192 = phi i32 [ %181, %179 ], [ %178, %176 ], [ %.15191, %172 ], [ %.15191, %172 ], [ %.15191, %172 ], [ %.15191, %172 ]
  %183 = icmp eq i32 %.16192, 0
  br i1 %183, label %184, label %.thread258

184:                                              ; preds = %182
  %185 = load volatile i32, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  %186 = and i32 %185, -1879048193
  %187 = load i32, ptr %173, align 4, !tbaa !24
  %188 = or i32 %186, %187
  store volatile i32 %188, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  br label %.thread258

.thread258:                                       ; preds = %172, %182, %184, %.thread256
  %.17193 = phi i32 [ 0, %184 ], [ %.15191, %.thread256 ], [ %.16192, %182 ], [ 1, %172 ]
  %.8 = phi i32 [ %.7, %184 ], [ %.7, %.thread256 ], [ %.16192, %182 ], [ 1, %172 ]
  %189 = load i32, ptr %0, align 4, !tbaa !5
  %190 = and i32 %189, 32768
  %.not212 = icmp eq i32 %190, 0
  br i1 %.not212, label %.thread260, label %191

191:                                              ; preds = %.thread258
  %192 = getelementptr inbounds i8, ptr %0, i64 108
  %193 = load i32, ptr %192, align 4, !tbaa !25
  switch i32 %193, label %.thread260 [
    i32 268435456, label %194
    i32 536870912, label %197
    i32 0, label %200
  ]

194:                                              ; preds = %191
  %195 = load volatile i32, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  %196 = or i32 %195, 131072
  store volatile i32 %196, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  br label %200

197:                                              ; preds = %191
  %198 = getelementptr inbounds i8, ptr %0, i64 4
  %199 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %198, i32 noundef 1)
  br label %200

200:                                              ; preds = %197, %194, %191
  %.18194 = phi i32 [ %.17193, %191 ], [ %199, %197 ], [ %.17193, %194 ]
  %201 = icmp eq i32 %.18194, 0
  br i1 %201, label %202, label %.thread260

202:                                              ; preds = %200
  %203 = load volatile i32, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !14
  %204 = and i32 %203, -805306369
  %205 = load i32, ptr %192, align 4, !tbaa !25
  %206 = or i32 %204, %205
  store volatile i32 %206, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !14
  br label %.thread260

.thread260:                                       ; preds = %191, %200, %202, %.thread258
  %.19195 = phi i32 [ 0, %202 ], [ %.17193, %.thread258 ], [ %.18194, %200 ], [ 1, %191 ]
  %.9 = phi i32 [ %.8, %202 ], [ %.8, %.thread258 ], [ %.18194, %200 ], [ 1, %191 ]
  %207 = load i32, ptr %0, align 4, !tbaa !5
  %208 = and i32 %207, 16777216
  %.not213 = icmp eq i32 %208, 0
  br i1 %.not213, label %.thread262, label %209

209:                                              ; preds = %.thread260
  %210 = getelementptr inbounds i8, ptr %0, i64 68
  %211 = load i32, ptr %210, align 4, !tbaa !26
  switch i32 %211, label %.thread262 [
    i32 1, label %212
    i32 2, label %215
    i32 3, label %218
    i32 0, label %218
  ]

212:                                              ; preds = %209
  %213 = load volatile i32, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  %214 = or i32 %213, 131072
  store volatile i32 %214, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  br label %218

215:                                              ; preds = %209
  %216 = getelementptr inbounds i8, ptr %0, i64 4
  %217 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %216, i32 noundef 2)
  br label %218

218:                                              ; preds = %215, %212, %209, %209
  %.20196 = phi i32 [ %.19195, %209 ], [ %.19195, %209 ], [ %217, %215 ], [ %.19195, %212 ]
  %219 = icmp eq i32 %.20196, 0
  br i1 %219, label %220, label %.thread262

220:                                              ; preds = %218
  %221 = load volatile i32, ptr inttoptr (i64 1476543564 to ptr), align 4, !tbaa !21
  %222 = and i32 %221, -4
  %223 = load i32, ptr %210, align 4, !tbaa !26
  %224 = or i32 %222, %223
  store volatile i32 %224, ptr inttoptr (i64 1476543564 to ptr), align 4, !tbaa !21
  br label %.thread262

.thread262:                                       ; preds = %209, %218, %220, %.thread260
  %.21197 = phi i32 [ 0, %220 ], [ %.19195, %.thread260 ], [ %.20196, %218 ], [ 1, %209 ]
  %.10 = phi i32 [ %.9, %220 ], [ %.9, %.thread260 ], [ %.20196, %218 ], [ 1, %209 ]
  %225 = load i32, ptr %0, align 4, !tbaa !5
  %226 = and i32 %225, 4194304
  %.not214 = icmp eq i32 %226, 0
  br i1 %.not214, label %.thread264, label %227

227:                                              ; preds = %.thread262
  %228 = load volatile i32, ptr inttoptr (i64 1476544512 to ptr), align 2048, !tbaa !27
  %229 = or i32 %228, 256
  store volatile i32 %229, ptr inttoptr (i64 1476544512 to ptr), align 2048, !tbaa !27
  %230 = tail call i32 @HAL_GetTick() #3
  br label %231

231:                                              ; preds = %235, %227
  %232 = load volatile i32, ptr inttoptr (i64 1476544512 to ptr), align 2048, !tbaa !27
  %233 = and i32 %232, 256
  %234 = icmp eq i32 %233, 0
  br i1 %234, label %235, label %239

235:                                              ; preds = %231
  %236 = tail call i32 @HAL_GetTick() #3
  %237 = sub i32 %236, %230
  %238 = icmp ugt i32 %237, 100
  br i1 %238, label %.thread264, label %231, !llvm.loop !29

239:                                              ; preds = %231
  %240 = icmp eq i32 %.21197, 0
  br i1 %240, label %241, label %.thread264

241:                                              ; preds = %239
  %242 = load volatile i32, ptr inttoptr (i64 1476543600 to ptr), align 16, !tbaa !31
  %243 = getelementptr inbounds i8, ptr %0, i64 176
  %244 = load i32, ptr %243, align 4, !tbaa !32
  %245 = xor i32 %244, %242
  %246 = and i32 %245, 768
  %.not215 = icmp eq i32 %246, 0
  br i1 %.not215, label %254, label %247

247:                                              ; preds = %241
  %248 = load volatile i32, ptr inttoptr (i64 1476543600 to ptr), align 16, !tbaa !31
  %249 = and i32 %248, -769
  %250 = load volatile i32, ptr inttoptr (i64 1476543600 to ptr), align 16, !tbaa !31
  %251 = or i32 %250, 65536
  store volatile i32 %251, ptr inttoptr (i64 1476543600 to ptr), align 16, !tbaa !31
  %252 = load volatile i32, ptr inttoptr (i64 1476543600 to ptr), align 16, !tbaa !31
  %253 = and i32 %252, -65537
  store volatile i32 %253, ptr inttoptr (i64 1476543600 to ptr), align 16, !tbaa !31
  store volatile i32 %249, ptr inttoptr (i64 1476543600 to ptr), align 16, !tbaa !31
  br label %254

254:                                              ; preds = %247, %241
  %255 = icmp eq i32 %244, 256
  br i1 %255, label %256, label %.loopexit

256:                                              ; preds = %254
  %257 = tail call i32 @HAL_GetTick() #3
  br label %258

258:                                              ; preds = %262, %256
  %259 = load volatile i32, ptr inttoptr (i64 1476543600 to ptr), align 16, !tbaa !31
  %260 = and i32 %259, 2
  %261 = icmp eq i32 %260, 0
  br i1 %261, label %262, label %.loopexit.loopexit

262:                                              ; preds = %258
  %263 = tail call i32 @HAL_GetTick() #3
  %264 = sub i32 %263, %257
  %265 = icmp ugt i32 %264, 5000
  br i1 %265, label %.thread264, label %258, !llvm.loop !33

.loopexit.loopexit:                               ; preds = %258
  %.pre291 = load i32, ptr %243, align 4, !tbaa !32
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %254
  %266 = phi i32 [ %.pre291, %.loopexit.loopexit ], [ %244, %254 ]
  %267 = and i32 %266, 768
  %268 = icmp eq i32 %267, 768
  %269 = load volatile i32, ptr inttoptr (i64 1476543504 to ptr), align 16, !tbaa !34
  %270 = and i32 %269, -16129
  %271 = lshr i32 %266, 4
  %272 = and i32 %271, 16777167
  %273 = select i1 %268, i32 %272, i32 0
  %.sink = or i32 %270, %273
  store volatile i32 %.sink, ptr inttoptr (i64 1476543504 to ptr), align 16, !tbaa !34
  %274 = and i32 %266, 4095
  %275 = load volatile i32, ptr inttoptr (i64 1476543600 to ptr), align 16, !tbaa !31
  %276 = or i32 %275, %274
  store volatile i32 %276, ptr inttoptr (i64 1476543600 to ptr), align 16, !tbaa !31
  br label %.thread264

.thread264:                                       ; preds = %235, %262, %239, %.loopexit, %.thread262
  %.24200 = phi i32 [ 0, %.loopexit ], [ %.21197, %.thread262 ], [ %.21197, %239 ], [ 3, %262 ], [ 3, %235 ]
  %.11 = phi i32 [ %.10, %.loopexit ], [ %.10, %.thread262 ], [ %.21197, %239 ], [ 3, %262 ], [ 3, %235 ]
  %277 = load i32, ptr %0, align 4, !tbaa !5
  %278 = and i32 %277, 1
  %.not217 = icmp eq i32 %278, 0
  br i1 %.not217, label %.thread269, label %279

279:                                              ; preds = %.thread264
  %280 = getelementptr inbounds i8, ptr %0, i64 120
  %281 = load i32, ptr %280, align 4, !tbaa !35
  %282 = tail call i32 @llvm.fshl.i32(i32 %281, i32 %281, i32 29)
  switch i32 %282, label %.thread269 [
    i32 0, label %289
    i32 1, label %283
    i32 2, label %286
    i32 3, label %289
    i32 4, label %289
    i32 5, label %289
  ]

283:                                              ; preds = %279
  %284 = getelementptr inbounds i8, ptr %0, i64 4
  %285 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %284, i32 noundef 1)
  br label %289

286:                                              ; preds = %279
  %287 = getelementptr inbounds i8, ptr %0, i64 36
  %288 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %287, i32 noundef 1)
  br label %289

289:                                              ; preds = %286, %283, %279, %279, %279, %279
  %.25201 = phi i32 [ %288, %286 ], [ %285, %283 ], [ %.24200, %279 ], [ %.24200, %279 ], [ %.24200, %279 ], [ %.24200, %279 ]
  %290 = icmp eq i32 %.25201, 0
  br i1 %290, label %291, label %.thread269

291:                                              ; preds = %289
  %292 = load volatile i32, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  %293 = and i32 %292, -57
  %294 = load i32, ptr %280, align 4, !tbaa !35
  %295 = or i32 %293, %294
  store volatile i32 %295, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  br label %.thread269

.thread269:                                       ; preds = %279, %289, %291, %.thread264
  %.26202 = phi i32 [ 0, %291 ], [ %.24200, %.thread264 ], [ %.25201, %289 ], [ 1, %279 ]
  %.12 = phi i32 [ %.11, %291 ], [ %.11, %.thread264 ], [ %.25201, %289 ], [ 1, %279 ]
  %296 = load i32, ptr %0, align 4, !tbaa !5
  %297 = and i32 %296, 2
  %.not218 = icmp eq i32 %297, 0
  br i1 %.not218, label %.thread271, label %298

298:                                              ; preds = %.thread269
  %299 = getelementptr inbounds i8, ptr %0, i64 116
  %300 = load i32, ptr %299, align 4, !tbaa !37
  switch i32 %300, label %.thread271 [
    i32 0, label %307
    i32 1, label %301
    i32 2, label %304
    i32 3, label %307
    i32 4, label %307
    i32 5, label %307
  ]

301:                                              ; preds = %298
  %302 = getelementptr inbounds i8, ptr %0, i64 4
  %303 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %302, i32 noundef 1)
  br label %307

304:                                              ; preds = %298
  %305 = getelementptr inbounds i8, ptr %0, i64 36
  %306 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %305, i32 noundef 1)
  br label %307

307:                                              ; preds = %304, %301, %298, %298, %298, %298
  %.27 = phi i32 [ %306, %304 ], [ %303, %301 ], [ %.26202, %298 ], [ %.26202, %298 ], [ %.26202, %298 ], [ %.26202, %298 ]
  %308 = icmp eq i32 %.27, 0
  br i1 %308, label %309, label %.thread271

309:                                              ; preds = %307
  %310 = load volatile i32, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  %311 = and i32 %310, -8
  %312 = load i32, ptr %299, align 4, !tbaa !37
  %313 = or i32 %311, %312
  store volatile i32 %313, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  br label %.thread271

.thread271:                                       ; preds = %298, %307, %309, %.thread269
  %.28 = phi i32 [ 0, %309 ], [ %.26202, %.thread269 ], [ %.27, %307 ], [ 1, %298 ]
  %.13 = phi i32 [ %.12, %309 ], [ %.12, %.thread269 ], [ %.27, %307 ], [ 1, %298 ]
  %314 = load i32, ptr %0, align 4, !tbaa !5
  %315 = and i32 %314, 4
  %.not219 = icmp eq i32 %315, 0
  br i1 %.not219, label %.thread273, label %316

316:                                              ; preds = %.thread271
  %317 = getelementptr inbounds i8, ptr %0, i64 144
  %318 = load i32, ptr %317, align 4, !tbaa !38
  switch i32 %318, label %.thread273 [
    i32 0, label %325
    i32 1, label %319
    i32 2, label %322
    i32 3, label %325
    i32 4, label %325
    i32 5, label %325
  ]

319:                                              ; preds = %316
  %320 = getelementptr inbounds i8, ptr %0, i64 4
  %321 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %320, i32 noundef 1)
  br label %325

322:                                              ; preds = %316
  %323 = getelementptr inbounds i8, ptr %0, i64 36
  %324 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %323, i32 noundef 1)
  br label %325

325:                                              ; preds = %322, %319, %316, %316, %316, %316
  %.29 = phi i32 [ %324, %322 ], [ %321, %319 ], [ %.28, %316 ], [ %.28, %316 ], [ %.28, %316 ], [ %.28, %316 ]
  %326 = icmp eq i32 %.29, 0
  br i1 %326, label %327, label %.thread273

327:                                              ; preds = %325
  %328 = load volatile i32, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  %329 = and i32 %328, -8
  %330 = load i32, ptr %317, align 4, !tbaa !38
  %331 = or i32 %329, %330
  store volatile i32 %331, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  br label %.thread273

.thread273:                                       ; preds = %316, %325, %327, %.thread271
  %.30 = phi i32 [ 0, %327 ], [ %.28, %.thread271 ], [ %.29, %325 ], [ 1, %316 ]
  %.14 = phi i32 [ %.13, %327 ], [ %.13, %.thread271 ], [ %.29, %325 ], [ 1, %316 ]
  %332 = load i32, ptr %0, align 4, !tbaa !5
  %333 = and i32 %332, 32
  %.not220 = icmp eq i32 %333, 0
  br i1 %.not220, label %.thread275, label %334

334:                                              ; preds = %.thread273
  %335 = getelementptr inbounds i8, ptr %0, i64 140
  %336 = load i32, ptr %335, align 4, !tbaa !39
  %337 = tail call i32 @llvm.fshl.i32(i32 %336, i32 %336, i32 4)
  switch i32 %337, label %.thread275 [
    i32 0, label %344
    i32 1, label %338
    i32 2, label %341
    i32 3, label %344
    i32 4, label %344
    i32 5, label %344
  ]

338:                                              ; preds = %334
  %339 = getelementptr inbounds i8, ptr %0, i64 4
  %340 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %339, i32 noundef 0)
  br label %344

341:                                              ; preds = %334
  %342 = getelementptr inbounds i8, ptr %0, i64 36
  %343 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %342, i32 noundef 2)
  br label %344

344:                                              ; preds = %341, %338, %334, %334, %334, %334
  %.31 = phi i32 [ %343, %341 ], [ %340, %338 ], [ %.30, %334 ], [ %.30, %334 ], [ %.30, %334 ], [ %.30, %334 ]
  %345 = icmp eq i32 %.31, 0
  br i1 %345, label %346, label %.thread275

346:                                              ; preds = %344
  %347 = load volatile i32, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  %348 = and i32 %347, -1879048193
  %349 = load i32, ptr %335, align 4, !tbaa !39
  %350 = or i32 %348, %349
  store volatile i32 %350, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  br label %.thread275

.thread275:                                       ; preds = %334, %344, %346, %.thread273
  %.32 = phi i32 [ 0, %346 ], [ %.30, %.thread273 ], [ %.31, %344 ], [ 1, %334 ]
  %.15 = phi i32 [ %.14, %346 ], [ %.14, %.thread273 ], [ %.31, %344 ], [ 1, %334 ]
  %351 = load i32, ptr %0, align 4, !tbaa !5
  %352 = and i32 %351, 64
  %.not221 = icmp eq i32 %352, 0
  br i1 %.not221, label %.thread277, label %353

353:                                              ; preds = %.thread275
  %354 = getelementptr inbounds i8, ptr %0, i64 152
  %355 = load i32, ptr %354, align 4, !tbaa !40
  %356 = tail call i32 @llvm.fshl.i32(i32 %355, i32 %355, i32 22)
  switch i32 %356, label %.thread277 [
    i32 0, label %363
    i32 1, label %357
    i32 2, label %360
    i32 3, label %363
    i32 4, label %363
    i32 5, label %363
  ]

357:                                              ; preds = %353
  %358 = getelementptr inbounds i8, ptr %0, i64 4
  %359 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %358, i32 noundef 0)
  br label %363

360:                                              ; preds = %353
  %361 = getelementptr inbounds i8, ptr %0, i64 36
  %362 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %361, i32 noundef 2)
  br label %363

363:                                              ; preds = %360, %357, %353, %353, %353, %353
  %.33 = phi i32 [ %362, %360 ], [ %359, %357 ], [ %.32, %353 ], [ %.32, %353 ], [ %.32, %353 ], [ %.32, %353 ]
  %364 = icmp eq i32 %.33, 0
  br i1 %364, label %365, label %.thread277

365:                                              ; preds = %363
  %366 = load volatile i32, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  %367 = and i32 %366, -7169
  %368 = load i32, ptr %354, align 4, !tbaa !40
  %369 = or i32 %367, %368
  store volatile i32 %369, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  br label %.thread277

.thread277:                                       ; preds = %353, %363, %365, %.thread275
  %.34 = phi i32 [ 0, %365 ], [ %.32, %.thread275 ], [ %.33, %363 ], [ 1, %353 ]
  %.16 = phi i32 [ %.15, %365 ], [ %.15, %.thread275 ], [ %.33, %363 ], [ 1, %353 ]
  %370 = load i32, ptr %0, align 4, !tbaa !5
  %371 = and i32 %370, 128
  %.not222 = icmp eq i32 %371, 0
  br i1 %.not222, label %.thread279, label %372

372:                                              ; preds = %.thread277
  %373 = getelementptr inbounds i8, ptr %0, i64 156
  %374 = load i32, ptr %373, align 4, !tbaa !41
  %375 = tail call i32 @llvm.fshl.i32(i32 %374, i32 %374, i32 19)
  switch i32 %375, label %.thread279 [
    i32 0, label %382
    i32 1, label %376
    i32 2, label %379
    i32 3, label %382
    i32 4, label %382
    i32 5, label %382
  ]

376:                                              ; preds = %372
  %377 = getelementptr inbounds i8, ptr %0, i64 4
  %378 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %377, i32 noundef 0)
  br label %382

379:                                              ; preds = %372
  %380 = getelementptr inbounds i8, ptr %0, i64 36
  %381 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %380, i32 noundef 2)
  br label %382

382:                                              ; preds = %379, %376, %372, %372, %372, %372
  %.35 = phi i32 [ %381, %379 ], [ %378, %376 ], [ %.34, %372 ], [ %.34, %372 ], [ %.34, %372 ], [ %.34, %372 ]
  %383 = icmp eq i32 %.35, 0
  br i1 %383, label %384, label %.thread279

384:                                              ; preds = %382
  %385 = load volatile i32, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  %386 = and i32 %385, -57345
  %387 = load i32, ptr %373, align 4, !tbaa !41
  %388 = or i32 %386, %387
  store volatile i32 %388, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  br label %.thread279

.thread279:                                       ; preds = %372, %382, %384, %.thread277
  %.36 = phi i32 [ 0, %384 ], [ %.34, %.thread277 ], [ %.35, %382 ], [ 1, %372 ]
  %.17 = phi i32 [ %.16, %384 ], [ %.16, %.thread277 ], [ %.35, %382 ], [ 1, %372 ]
  %389 = load i32, ptr %0, align 4, !tbaa !5
  %390 = and i32 %389, 8
  %.not223 = icmp eq i32 %390, 0
  br i1 %.not223, label %403, label %391

391:                                              ; preds = %.thread279
  %392 = getelementptr inbounds i8, ptr %0, i64 128
  %393 = load i32, ptr %392, align 4, !tbaa !42
  %394 = icmp eq i32 %393, 4096
  br i1 %394, label %395, label %398

395:                                              ; preds = %391
  %396 = getelementptr inbounds i8, ptr %0, i64 36
  %397 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %396, i32 noundef 2)
  %.not224 = icmp eq i32 %397, 0
  %spec.select = select i1 %.not224, i32 %.17, i32 1
  %.pre292 = load i32, ptr %392, align 4, !tbaa !42
  br label %398

398:                                              ; preds = %395, %391
  %399 = phi i32 [ %393, %391 ], [ %.pre292, %395 ]
  %.18 = phi i32 [ %.17, %391 ], [ %spec.select, %395 ]
  %400 = load volatile i32, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  %401 = and i32 %400, -12289
  %402 = or i32 %401, %399
  store volatile i32 %402, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  %.pre293 = load i32, ptr %0, align 4, !tbaa !5
  br label %403

403:                                              ; preds = %398, %.thread279
  %404 = phi i32 [ %.pre293, %398 ], [ %389, %.thread279 ]
  %.19 = phi i32 [ %.18, %398 ], [ %.17, %.thread279 ]
  %405 = and i32 %404, 16
  %.not225 = icmp eq i32 %405, 0
  br i1 %.not225, label %418, label %406

406:                                              ; preds = %403
  %407 = getelementptr inbounds i8, ptr %0, i64 148
  %408 = load i32, ptr %407, align 4, !tbaa !43
  %409 = icmp eq i32 %408, 256
  br i1 %409, label %410, label %413

410:                                              ; preds = %406
  %411 = getelementptr inbounds i8, ptr %0, i64 36
  %412 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %411, i32 noundef 2)
  %.not226 = icmp eq i32 %412, 0
  %spec.select239 = select i1 %.not226, i32 %.19, i32 1
  %.pre294 = load i32, ptr %407, align 4, !tbaa !43
  br label %413

413:                                              ; preds = %410, %406
  %414 = phi i32 [ %408, %406 ], [ %.pre294, %410 ]
  %.20 = phi i32 [ %.19, %406 ], [ %spec.select239, %410 ]
  %415 = load volatile i32, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  %416 = and i32 %415, -769
  %417 = or i32 %416, %414
  store volatile i32 %417, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  %.pre295 = load i32, ptr %0, align 4, !tbaa !5
  br label %418

418:                                              ; preds = %413, %403
  %419 = phi i32 [ %.pre295, %413 ], [ %404, %403 ]
  %.21 = phi i32 [ %.20, %413 ], [ %.19, %403 ]
  %420 = and i32 %419, 524288
  %.not227 = icmp eq i32 %420, 0
  br i1 %.not227, label %.thread281, label %421

421:                                              ; preds = %418
  %422 = getelementptr inbounds i8, ptr %0, i64 160
  %423 = load i32, ptr %422, align 4, !tbaa !44
  switch i32 %423, label %.thread281 [
    i32 0, label %424
    i32 65536, label %427
    i32 131072, label %430
  ]

424:                                              ; preds = %421
  %425 = getelementptr inbounds i8, ptr %0, i64 4
  %426 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %425, i32 noundef 0)
  br label %430

427:                                              ; preds = %421
  %428 = getelementptr inbounds i8, ptr %0, i64 36
  %429 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %428, i32 noundef 2)
  br label %430

430:                                              ; preds = %427, %424, %421
  %.37 = phi i32 [ %.36, %421 ], [ %429, %427 ], [ %426, %424 ]
  %431 = icmp eq i32 %.37, 0
  br i1 %431, label %432, label %.thread281

432:                                              ; preds = %430
  %433 = load volatile i32, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  %434 = and i32 %433, -196609
  %435 = load i32, ptr %422, align 4, !tbaa !44
  %436 = or i32 %434, %435
  store volatile i32 %436, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  br label %.thread281

.thread281:                                       ; preds = %421, %430, %432, %418
  %.38 = phi i32 [ 0, %432 ], [ %.36, %418 ], [ %.37, %430 ], [ 1, %421 ]
  %.22 = phi i32 [ %.21, %432 ], [ %.21, %418 ], [ %.37, %430 ], [ 1, %421 ]
  %437 = load i32, ptr %0, align 4, !tbaa !5
  %438 = and i32 %437, 262144
  %.not228 = icmp eq i32 %438, 0
  br i1 %.not228, label %.thread283, label %439

439:                                              ; preds = %.thread281
  %440 = getelementptr inbounds i8, ptr %0, i64 132
  %441 = load i32, ptr %440, align 4, !tbaa !45
  switch i32 %441, label %.thread283 [
    i32 1048576, label %442
    i32 2097152, label %445
    i32 3145728, label %448
  ]

442:                                              ; preds = %439
  %443 = load volatile i32, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  %444 = or i32 %443, 131072
  store volatile i32 %444, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  br label %448

445:                                              ; preds = %439
  %446 = getelementptr inbounds i8, ptr %0, i64 36
  %447 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %446, i32 noundef 1)
  br label %448

448:                                              ; preds = %445, %442, %439
  %.39 = phi i32 [ %.38, %439 ], [ %447, %445 ], [ %.38, %442 ]
  %449 = icmp eq i32 %.39, 0
  br i1 %449, label %450, label %.thread283

450:                                              ; preds = %448
  %451 = load volatile i32, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  %452 = and i32 %451, -3145729
  %453 = load i32, ptr %440, align 4, !tbaa !45
  %454 = or i32 %452, %453
  store volatile i32 %454, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  br label %.thread283

.thread283:                                       ; preds = %439, %448, %450, %.thread281
  %.40 = phi i32 [ 0, %450 ], [ %.38, %.thread281 ], [ %.39, %448 ], [ 1, %439 ]
  %.23 = phi i32 [ %.22, %450 ], [ %.22, %.thread281 ], [ %.39, %448 ], [ 1, %439 ]
  %455 = load i32, ptr %0, align 4, !tbaa !5
  %456 = and i32 %455, 65536
  %.not229 = icmp eq i32 %456, 0
  br i1 %.not229, label %.thread285, label %457

457:                                              ; preds = %.thread283
  %458 = getelementptr inbounds i8, ptr %0, i64 76
  %459 = load i32, ptr %458, align 4, !tbaa !46
  switch i32 %459, label %.thread285 [
    i32 0, label %460
    i32 65536, label %463
  ]

460:                                              ; preds = %457
  %461 = load volatile i32, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  %462 = or i32 %461, 131072
  store volatile i32 %462, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  br label %466

463:                                              ; preds = %457
  %464 = getelementptr inbounds i8, ptr %0, i64 4
  %465 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %464, i32 noundef 2)
  br label %466

466:                                              ; preds = %463, %460
  %.41 = phi i32 [ %465, %463 ], [ %.40, %460 ]
  %467 = icmp eq i32 %.41, 0
  br i1 %467, label %468, label %.thread285

468:                                              ; preds = %466
  %469 = load volatile i32, ptr inttoptr (i64 1476543564 to ptr), align 4, !tbaa !21
  %470 = and i32 %469, -65537
  %471 = load i32, ptr %458, align 4, !tbaa !46
  %472 = or i32 %470, %471
  store volatile i32 %472, ptr inttoptr (i64 1476543564 to ptr), align 4, !tbaa !21
  br label %.thread285

.thread285:                                       ; preds = %457, %466, %468, %.thread283
  %.42 = phi i32 [ 0, %468 ], [ %.40, %.thread283 ], [ %.41, %466 ], [ 1, %457 ]
  %.24 = phi i32 [ %.23, %468 ], [ %.23, %.thread283 ], [ %.41, %466 ], [ 1, %457 ]
  %473 = load i32, ptr %0, align 4, !tbaa !5
  %474 = and i32 %473, 536870912
  %.not230 = icmp eq i32 %474, 0
  br i1 %.not230, label %478, label %475

475:                                              ; preds = %.thread285
  %476 = getelementptr inbounds i8, ptr %0, i64 36
  %477 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %476, i32 noundef 2)
  %.not231 = icmp eq i32 %477, 0
  %spec.select240 = select i1 %.not231, i32 %.24, i32 1
  %.pr = load i32, ptr %0, align 4, !tbaa !5
  br label %478

478:                                              ; preds = %475, %.thread285
  %479 = phi i32 [ %.pr, %475 ], [ %473, %.thread285 ]
  %.25 = phi i32 [ %spec.select240, %475 ], [ %.24, %.thread285 ]
  %480 = and i32 %479, 131072
  %.not232 = icmp eq i32 %480, 0
  br i1 %.not232, label %.thread287, label %481

481:                                              ; preds = %478
  %482 = getelementptr inbounds i8, ptr %0, i64 124
  %483 = load i32, ptr %482, align 4, !tbaa !47
  %484 = tail call i32 @llvm.fshl.i32(i32 %483, i32 %483, i32 24)
  switch i32 %484, label %.thread287 [
    i32 1, label %485
    i32 2, label %488
    i32 3, label %488
    i32 0, label %488
  ]

485:                                              ; preds = %481
  %486 = load volatile i32, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  %487 = or i32 %486, 131072
  store volatile i32 %487, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  br label %488

488:                                              ; preds = %485, %481, %481, %481
  %489 = icmp eq i32 %.42, 0
  br i1 %489, label %490, label %.thread287

490:                                              ; preds = %488
  %491 = load volatile i32, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  %492 = and i32 %491, -769
  %493 = or i32 %492, %483
  store volatile i32 %493, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  br label %.thread287

.thread287:                                       ; preds = %481, %488, %490, %478
  %.26 = phi i32 [ %.25, %490 ], [ %.25, %478 ], [ 1, %488 ], [ 1, %481 ]
  %494 = and i32 %479, 1048576
  %.not233 = icmp eq i32 %494, 0
  br i1 %.not233, label %501, label %495

495:                                              ; preds = %.thread287
  %496 = load volatile i32, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !14
  %497 = and i32 %496, 2147483647
  %498 = getelementptr inbounds i8, ptr %0, i64 112
  %499 = load i32, ptr %498, align 4, !tbaa !48
  %500 = or i32 %497, %499
  store volatile i32 %500, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !14
  br label %501

501:                                              ; preds = %495, %.thread287
  %502 = and i32 %479, 268435456
  %.not234 = icmp eq i32 %502, 0
  br i1 %.not234, label %509, label %503

503:                                              ; preds = %501
  %504 = load volatile i32, ptr inttoptr (i64 1476543504 to ptr), align 16, !tbaa !34
  %505 = and i32 %504, -16385
  %506 = getelementptr inbounds i8, ptr %0, i64 180
  %507 = load i32, ptr %506, align 4, !tbaa !49
  %508 = or i32 %505, %507
  store volatile i32 %508, ptr inttoptr (i64 1476543504 to ptr), align 16, !tbaa !34
  br label %509

509:                                              ; preds = %503, %501
  %510 = and i32 %479, 2097152
  %.not235 = icmp eq i32 %510, 0
  br i1 %.not235, label %517, label %511

511:                                              ; preds = %509
  %512 = load volatile i32, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !14
  %513 = and i32 %512, -16777217
  %514 = getelementptr inbounds i8, ptr %0, i64 104
  %515 = load i32, ptr %514, align 4, !tbaa !50
  %516 = or i32 %513, %515
  store volatile i32 %516, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !14
  br label %517

517:                                              ; preds = %511, %509
  %518 = and i32 %479, 1073741824
  %.not236 = icmp eq i32 %518, 0
  br i1 %.not236, label %526, label %519

519:                                              ; preds = %517
  %520 = load volatile i32, ptr inttoptr (i64 1476543504 to ptr), align 16, !tbaa !34
  %521 = and i32 %520, -32769
  store volatile i32 %521, ptr inttoptr (i64 1476543504 to ptr), align 16, !tbaa !34
  %522 = getelementptr inbounds i8, ptr %0, i64 184
  %523 = load i32, ptr %522, align 4, !tbaa !51
  %524 = load volatile i32, ptr inttoptr (i64 1476543504 to ptr), align 16, !tbaa !34
  %525 = or i32 %524, %523
  store volatile i32 %525, ptr inttoptr (i64 1476543504 to ptr), align 16, !tbaa !34
  br label %526

526:                                              ; preds = %519, %517
  %.not237 = icmp sgt i32 %479, -1
  br i1 %.not237, label %533, label %527

527:                                              ; preds = %526
  %528 = load volatile i32, ptr inttoptr (i64 1476543564 to ptr), align 4, !tbaa !21
  %529 = and i32 %528, -805306369
  %530 = getelementptr inbounds i8, ptr %0, i64 80
  %531 = load i32, ptr %530, align 4, !tbaa !52
  %532 = or i32 %529, %531
  store volatile i32 %532, ptr inttoptr (i64 1476543564 to ptr), align 4, !tbaa !21
  br label %533

533:                                              ; preds = %527, %526
  %534 = and i32 %479, 8388608
  %.not238 = icmp eq i32 %534, 0
  br i1 %.not238, label %541, label %535

535:                                              ; preds = %533
  %536 = load volatile i32, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  %537 = and i32 %536, -12582913
  %538 = getelementptr inbounds i8, ptr %0, i64 136
  %539 = load i32, ptr %538, align 4, !tbaa !53
  %540 = or i32 %537, %539
  store volatile i32 %540, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  br label %541

541:                                              ; preds = %535, %533
  %542 = icmp ne i32 %.26, 0
  %. = zext i1 %542 to i32
  ret i32 %.
}

; Function Attrs: nounwind uwtable
declare hidden i32 @RCCEx_PLL2_Config(ptr noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare hidden i32 @RCCEx_PLL3_Config(ptr noundef, i32 noundef) local_unnamed_addr #0

declare i32 @HAL_GetTick() local_unnamed_addr #1

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.fshl.i32(i32, i32, i32) #2

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { "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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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, !7, i64 0}
!6 = !{!"", !7, i64 0, !10, i64 4, !10, i64 36, !7, i64 68, !7, i64 72, !7, i64 76, !7, i64 80, !7, i64 84, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128, !7, i64 132, !7, i64 136, !7, i64 140, !7, i64 144, !7, i64 148, !7, i64 152, !7, i64 156, !7, i64 160, !7, i64 164, !7, i64 168, !7, i64 172, !7, i64 176, !7, i64 180, !7, i64 184}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28}
!11 = !{!6, !7, i64 100}
!12 = !{!13, !7, i64 44}
!13 = !{!"", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !7, i64 72, !7, i64 76, !7, i64 80, !7, i64 84, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128, !7, i64 132, !7, i64 136, !7, i64 140, !7, i64 144, !7, i64 148, !7, i64 152, !7, i64 156, !7, i64 160, !7, i64 164, !7, i64 168, !8, i64 172, !7, i64 208, !7, i64 212, !7, i64 216, !7, i64 220, !7, i64 224, !7, i64 228, !7, i64 232, !7, i64 236, !7, i64 240, !7, i64 244, !7, i64 248, !7, i64 252, !7, i64 256, !7, i64 260, !7, i64 264, !7, i64 268, !7, i64 272, !7, i64 276, !7, i64 280, !7, i64 284, !8, i64 288}
!14 = !{!13, !7, i64 80}
!15 = !{!6, !7, i64 84}
!16 = !{!6, !7, i64 88}
!17 = !{!6, !7, i64 164}
!18 = !{!13, !7, i64 88}
!19 = !{!6, !7, i64 168}
!20 = !{!6, !7, i64 72}
!21 = !{!13, !7, i64 76}
!22 = !{!6, !7, i64 92}
!23 = !{!6, !7, i64 96}
!24 = !{!6, !7, i64 172}
!25 = !{!6, !7, i64 108}
!26 = !{!6, !7, i64 68}
!27 = !{!28, !7, i64 0}
!28 = !{!"", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = !{!13, !7, i64 112}
!32 = !{!6, !7, i64 176}
!33 = distinct !{!33, !30}
!34 = !{!13, !7, i64 16}
!35 = !{!6, !7, i64 120}
!36 = !{!13, !7, i64 84}
!37 = !{!6, !7, i64 116}
!38 = !{!6, !7, i64 144}
!39 = !{!6, !7, i64 140}
!40 = !{!6, !7, i64 152}
!41 = !{!6, !7, i64 156}
!42 = !{!6, !7, i64 128}
!43 = !{!6, !7, i64 148}
!44 = !{!6, !7, i64 160}
!45 = !{!6, !7, i64 132}
!46 = !{!6, !7, i64 76}
!47 = !{!6, !7, i64 124}
!48 = !{!6, !7, i64 112}
!49 = !{!6, !7, i64 180}
!50 = !{!6, !7, i64 104}
!51 = !{!6, !7, i64 184}
!52 = !{!6, !7, i64 80}
!53 = !{!6, !7, i64 136}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass