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

; 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 %544

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 %541

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 %500

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

484:                                              ; preds = %498, %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 %499

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

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

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

499:                                              ; preds = %497, %484
  br label %500

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

503:                                              ; preds = %500
  br label %504

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

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

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

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

536:                                              ; preds = %528
  br label %537

537:                                              ; preds = %536
  br label %540

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

540:                                              ; preds = %538, %537
  br label %543

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

543:                                              ; preds = %541, %540
  br label %544

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

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

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

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

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

563:                                              ; preds = %562, %558, %554, %550, %550, %550, %550
  %564 = load i32, ptr %6, align 4, !tbaa !9
  %565 = icmp eq i32 %564, 0
  br i1 %565, label %566, label %576

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

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

578:                                              ; preds = %576, %566
  br label %579

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

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

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

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

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

598:                                              ; preds = %597, %593, %589, %585, %585, %585, %585
  %599 = load i32, ptr %6, align 4, !tbaa !9
  %600 = icmp eq i32 %599, 0
  br i1 %600, label %601, label %611

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

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

613:                                              ; preds = %611, %601
  br label %614

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

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

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

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

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

633:                                              ; preds = %632, %628, %624, %620, %620, %620, %620
  %634 = load i32, ptr %6, align 4, !tbaa !9
  %635 = icmp eq i32 %634, 0
  br i1 %635, label %636, label %646

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

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

648:                                              ; preds = %646, %636
  br label %649

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

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

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

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

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

668:                                              ; preds = %667, %663, %659, %655, %655, %655, %655
  %669 = load i32, ptr %6, align 4, !tbaa !9
  %670 = icmp eq i32 %669, 0
  br i1 %670, label %671, label %681

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

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

683:                                              ; preds = %681, %671
  br label %684

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

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

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

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

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

703:                                              ; preds = %702, %698, %694, %690, %690, %690, %690
  %704 = load i32, ptr %6, align 4, !tbaa !9
  %705 = icmp eq i32 %704, 0
  br i1 %705, label %706, label %716

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

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

718:                                              ; preds = %716, %706
  br label %719

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

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

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

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

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

738:                                              ; preds = %737, %733, %729, %725, %725, %725, %725
  %739 = load i32, ptr %6, align 4, !tbaa !9
  %740 = icmp eq i32 %739, 0
  br i1 %740, label %741, label %751

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

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

753:                                              ; preds = %751, %741
  br label %754

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

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

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

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

772:                                              ; preds = %771, %766
  br label %783

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

783:                                              ; preds = %773, %772
  br label %784

784:                                              ; preds = %783, %754
  %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 %814

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 %813

803:                                              ; preds = %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, %802
  br label %814

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

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

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

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

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

833:                                              ; preds = %832, %828, %824, %820
  %834 = load i32, ptr %6, align 4, !tbaa !9
  %835 = icmp eq i32 %834, 0
  br i1 %835, label %836, label %846

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

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

848:                                              ; preds = %846, %836
  br label %849

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

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

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

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

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

869:                                              ; preds = %868, %864, %859, %855
  %870 = load i32, ptr %6, align 4, !tbaa !9
  %871 = icmp eq i32 %870, 0
  br i1 %871, label %872, label %882

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

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

884:                                              ; preds = %882, %872
  br label %885

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

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

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

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

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

905:                                              ; preds = %904, %900, %895
  %906 = load i32, ptr %6, align 4, !tbaa !9
  %907 = icmp eq i32 %906, 0
  br i1 %907, label %908, label %918

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

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

920:                                              ; preds = %918, %908
  br label %921

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

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

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

933:                                              ; preds = %932, %927
  br label %934

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

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

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

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

950:                                              ; preds = %949, %944, %940, %940, %940
  %951 = load i32, ptr %6, align 4, !tbaa !9
  %952 = icmp eq i32 %951, 0
  br i1 %952, label %953, label %963

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

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

965:                                              ; preds = %963, %953
  br label %966

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

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

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

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

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

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

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

1020:                                             ; preds = %1014
  br label %1021

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

1031:                                             ; preds = %1021
  br label %1032

1032:                                             ; preds = %1031
  br label %1033

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

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

1049:                                             ; preds = %1039, %1033
  %1050 = load i32, ptr %7, align 4, !tbaa !9
  %1051 = icmp eq i32 %1050, 0
  br i1 %1051, label %1052, label %1053

1052:                                             ; preds = %1049
  store i32 0, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %1054

1053:                                             ; preds = %1049
  store i32 1, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %1054

1054:                                             ; preds = %1053, %1052
  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
  %1055 = load i32, ptr %2, align 4
  ret i32 %1055
}

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


; 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 %.thread237, 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 %.thread237 [
    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
  %.0174 = phi i32 [ %16, %14 ], [ %13, %11 ]
  %18 = icmp eq i32 %.0174, 0
  br i1 %18, label %..thread_crit_edge, label %.thread237

..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 %.thread237

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

25:                                               ; preds = %.thread237
  %26 = getelementptr inbounds i8, ptr %0, i64 84
  %27 = load i32, ptr %26, align 4, !tbaa !15
  switch i32 %27, label %.thread239 [
    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
  %.2176 = phi i32 [ %.0, %25 ], [ %.0, %25 ], [ %36, %34 ], [ %33, %31 ], [ %.0, %28 ]
  %38 = icmp eq i32 %.2176, 0
  br i1 %38, label %39, label %.thread239

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 %.thread239

.thread239:                                       ; preds = %25, %37, %39, %.thread237
  %.3177 = phi i32 [ 0, %39 ], [ %.0, %.thread237 ], [ %.2176, %37 ], [ 1, %25 ]
  %.1 = phi i32 [ %.0, %39 ], [ %.0, %.thread237 ], [ %.2176, %37 ], [ 1, %25 ]
  %44 = load i32, ptr %0, align 4, !tbaa !5
  %45 = and i32 %44, 512
  %.not201 = icmp eq i32 %45, 0
  br i1 %.not201, label %.thread241, label %46

46:                                               ; preds = %.thread239
  %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 %.thread241 [
    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
  %.4178 = phi i32 [ %.3177, %46 ], [ %.3177, %46 ], [ %58, %56 ], [ %55, %53 ], [ %.3177, %50 ]
  %60 = icmp eq i32 %.4178, 0
  br i1 %60, label %61, label %.thread241

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 %.thread241

.thread241:                                       ; preds = %46, %59, %61, %.thread239
  %.5179 = phi i32 [ 0, %61 ], [ %.3177, %.thread239 ], [ %.4178, %59 ], [ 1, %46 ]
  %.2 = phi i32 [ %.1, %61 ], [ %.1, %.thread239 ], [ %.4178, %59 ], [ 1, %46 ]
  %66 = load i32, ptr %0, align 4, !tbaa !5
  %67 = and i32 %66, 1024
  %.not202 = icmp eq i32 %67, 0
  br i1 %.not202, label %.thread243, label %68

68:                                               ; preds = %.thread241
  %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 %.thread243 [
    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
  %.6180 = phi i32 [ %.5179, %68 ], [ %.5179, %68 ], [ %80, %78 ], [ %77, %75 ], [ %.5179, %72 ]
  %82 = icmp eq i32 %.6180, 0
  br i1 %82, label %83, label %.thread243

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 %.thread243

.thread243:                                       ; preds = %68, %81, %83, %.thread241
  %.7181 = phi i32 [ 0, %83 ], [ %.5179, %.thread241 ], [ %.6180, %81 ], [ 1, %68 ]
  %.3 = phi i32 [ %.2, %83 ], [ %.2, %.thread241 ], [ %.6180, %81 ], [ 1, %68 ]
  %88 = load i32, ptr %0, align 4, !tbaa !5
  %89 = and i32 %88, 2048
  %.not203 = icmp eq i32 %89, 0
  br i1 %.not203, label %.thread245, label %90

90:                                               ; preds = %.thread243
  %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 %.thread245 [
    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
  %.8182 = phi i32 [ %.7181, %90 ], [ %.7181, %90 ], [ %102, %100 ], [ %99, %97 ], [ %.7181, %94 ]
  %104 = icmp eq i32 %.8182, 0
  br i1 %104, label %105, label %.thread245

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 %.thread245

.thread245:                                       ; preds = %90, %103, %105, %.thread243
  %.9183 = phi i32 [ 0, %105 ], [ %.7181, %.thread243 ], [ %.8182, %103 ], [ 1, %90 ]
  %.4 = phi i32 [ %.3, %105 ], [ %.3, %.thread243 ], [ %.8182, %103 ], [ 1, %90 ]
  %110 = load i32, ptr %0, align 4, !tbaa !5
  %111 = and i32 %110, 33554432
  %.not204 = icmp eq i32 %111, 0
  br i1 %.not204, label %.thread247, label %112

112:                                              ; preds = %.thread245
  %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 %.thread247 [
    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
  %.10184 = phi i32 [ %.9183, %112 ], [ %.9183, %112 ], [ %121, %119 ], [ %.9183, %116 ]
  %123 = icmp eq i32 %.10184, 0
  br i1 %123, label %124, label %.thread247

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 %.thread247

.thread247:                                       ; preds = %112, %122, %124, %.thread245
  %.11185 = phi i32 [ 0, %124 ], [ %.9183, %.thread245 ], [ %.10184, %122 ], [ 1, %112 ]
  %.5 = phi i32 [ %.4, %124 ], [ %.4, %.thread245 ], [ %.10184, %122 ], [ 1, %112 ]
  %129 = load i32, ptr %0, align 4, !tbaa !5
  %130 = and i32 %129, 4096
  %.not205 = icmp eq i32 %130, 0
  br i1 %.not205, label %.thread249, label %131

131:                                              ; preds = %.thread247
  %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 %.thread249 [
    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
  %.12186 = phi i32 [ %.11185, %131 ], [ %.11185, %131 ], [ %143, %141 ], [ %140, %138 ], [ %.11185, %135 ]
  %145 = icmp eq i32 %.12186, 0
  br i1 %145, label %146, label %.thread249

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 %.thread249

.thread249:                                       ; preds = %131, %144, %146, %.thread247
  %.13187 = phi i32 [ 0, %146 ], [ %.11185, %.thread247 ], [ %.12186, %144 ], [ 1, %131 ]
  %.6 = phi i32 [ %.5, %146 ], [ %.5, %.thread247 ], [ %.12186, %144 ], [ 1, %131 ]
  %151 = load i32, ptr %0, align 4, !tbaa !5
  %152 = and i32 %151, 8192
  %.not206 = icmp eq i32 %152, 0
  br i1 %.not206, label %.thread251, label %153

153:                                              ; preds = %.thread249
  %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 %.thread251 [
    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
  %.14188 = phi i32 [ %162, %160 ], [ %159, %157 ], [ %.13187, %153 ], [ %.13187, %153 ], [ %.13187, %153 ], [ %.13187, %153 ]
  %164 = icmp eq i32 %.14188, 0
  br i1 %164, label %165, label %.thread251

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 %.thread251

.thread251:                                       ; preds = %153, %163, %165, %.thread249
  %.15189 = phi i32 [ 0, %165 ], [ %.13187, %.thread249 ], [ %.14188, %163 ], [ 1, %153 ]
  %.7 = phi i32 [ %.6, %165 ], [ %.6, %.thread249 ], [ %.14188, %163 ], [ 1, %153 ]
  %170 = load i32, ptr %0, align 4, !tbaa !5
  %171 = and i32 %170, 16384
  %.not207 = icmp eq i32 %171, 0
  br i1 %.not207, label %.thread253, label %172

172:                                              ; preds = %.thread251
  %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 %.thread253 [
    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
  %.16190 = phi i32 [ %181, %179 ], [ %178, %176 ], [ %.15189, %172 ], [ %.15189, %172 ], [ %.15189, %172 ], [ %.15189, %172 ]
  %183 = icmp eq i32 %.16190, 0
  br i1 %183, label %184, label %.thread253

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 %.thread253

.thread253:                                       ; preds = %172, %182, %184, %.thread251
  %.17191 = phi i32 [ 0, %184 ], [ %.15189, %.thread251 ], [ %.16190, %182 ], [ 1, %172 ]
  %.8 = phi i32 [ %.7, %184 ], [ %.7, %.thread251 ], [ %.16190, %182 ], [ 1, %172 ]
  %189 = load i32, ptr %0, align 4, !tbaa !5
  %190 = and i32 %189, 32768
  %.not208 = icmp eq i32 %190, 0
  br i1 %.not208, label %.thread255, label %191

191:                                              ; preds = %.thread253
  %192 = getelementptr inbounds i8, ptr %0, i64 108
  %193 = load i32, ptr %192, align 4, !tbaa !25
  switch i32 %193, label %.thread255 [
    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
  %.18192 = phi i32 [ %.17191, %191 ], [ %199, %197 ], [ %.17191, %194 ]
  %201 = icmp eq i32 %.18192, 0
  br i1 %201, label %202, label %.thread255

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 %.thread255

.thread255:                                       ; preds = %191, %200, %202, %.thread253
  %.19193 = phi i32 [ 0, %202 ], [ %.17191, %.thread253 ], [ %.18192, %200 ], [ 1, %191 ]
  %.9 = phi i32 [ %.8, %202 ], [ %.8, %.thread253 ], [ %.18192, %200 ], [ 1, %191 ]
  %207 = load i32, ptr %0, align 4, !tbaa !5
  %208 = and i32 %207, 16777216
  %.not209 = icmp eq i32 %208, 0
  br i1 %.not209, label %.thread257, label %209

209:                                              ; preds = %.thread255
  %210 = getelementptr inbounds i8, ptr %0, i64 68
  %211 = load i32, ptr %210, align 4, !tbaa !26
  switch i32 %211, label %.thread257 [
    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
  %.20194 = phi i32 [ %.19193, %209 ], [ %.19193, %209 ], [ %217, %215 ], [ %.19193, %212 ]
  %219 = icmp eq i32 %.20194, 0
  br i1 %219, label %220, label %.thread257

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 %.thread257

.thread257:                                       ; preds = %209, %218, %220, %.thread255
  %.21195 = phi i32 [ 0, %220 ], [ %.19193, %.thread255 ], [ %.20194, %218 ], [ 1, %209 ]
  %.10 = phi i32 [ %.9, %220 ], [ %.9, %.thread255 ], [ %.20194, %218 ], [ 1, %209 ]
  %225 = load i32, ptr %0, align 4, !tbaa !5
  %226 = and i32 %225, 4194304
  %.not210 = icmp eq i32 %226, 0
  br i1 %.not210, label %.thread259, label %227

227:                                              ; preds = %.thread257
  %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 %.thread259, label %231, !llvm.loop !29

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

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
  %.not211 = icmp eq i32 %246, 0
  br i1 %.not211, 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 %.thread259, label %258, !llvm.loop !33

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

.loopexit:                                        ; preds = %.loopexit.loopexit, %254
  %266 = phi i32 [ %.pre286, %.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 %.thread259

.thread259:                                       ; preds = %235, %262, %239, %.loopexit, %.thread257
  %.24198 = phi i32 [ 0, %.loopexit ], [ %.21195, %.thread257 ], [ %.21195, %239 ], [ 3, %262 ], [ 3, %235 ]
  %.11 = phi i32 [ %.10, %.loopexit ], [ %.10, %.thread257 ], [ %.21195, %239 ], [ 3, %262 ], [ 3, %235 ]
  %277 = load i32, ptr %0, align 4, !tbaa !5
  %278 = and i32 %277, 1
  %.not213 = icmp eq i32 %278, 0
  br i1 %.not213, label %.thread264, label %279

279:                                              ; preds = %.thread259
  %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 %.thread264 [
    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
  %.25 = phi i32 [ %288, %286 ], [ %285, %283 ], [ %.24198, %279 ], [ %.24198, %279 ], [ %.24198, %279 ], [ %.24198, %279 ]
  %290 = icmp eq i32 %.25, 0
  br i1 %290, label %291, label %.thread264

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 %.thread264

.thread264:                                       ; preds = %279, %289, %291, %.thread259
  %.26 = phi i32 [ 0, %291 ], [ %.24198, %.thread259 ], [ %.25, %289 ], [ 1, %279 ]
  %.12 = phi i32 [ %.11, %291 ], [ %.11, %.thread259 ], [ %.25, %289 ], [ 1, %279 ]
  %296 = load i32, ptr %0, align 4, !tbaa !5
  %297 = and i32 %296, 2
  %.not214 = icmp eq i32 %297, 0
  br i1 %.not214, label %.thread266, label %298

298:                                              ; preds = %.thread264
  %299 = getelementptr inbounds i8, ptr %0, i64 116
  %300 = load i32, ptr %299, align 4, !tbaa !37
  switch i32 %300, label %.thread266 [
    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 ], [ %.26, %298 ], [ %.26, %298 ], [ %.26, %298 ], [ %.26, %298 ]
  %308 = icmp eq i32 %.27, 0
  br i1 %308, label %309, label %.thread266

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 %.thread266

.thread266:                                       ; preds = %298, %307, %309, %.thread264
  %.28 = phi i32 [ 0, %309 ], [ %.26, %.thread264 ], [ %.27, %307 ], [ 1, %298 ]
  %.13 = phi i32 [ %.12, %309 ], [ %.12, %.thread264 ], [ %.27, %307 ], [ 1, %298 ]
  %314 = load i32, ptr %0, align 4, !tbaa !5
  %315 = and i32 %314, 4
  %.not215 = icmp eq i32 %315, 0
  br i1 %.not215, label %.thread268, label %316

316:                                              ; preds = %.thread266
  %317 = getelementptr inbounds i8, ptr %0, i64 144
  %318 = load i32, ptr %317, align 4, !tbaa !38
  switch i32 %318, label %.thread268 [
    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 %.thread268

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 %.thread268

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

334:                                              ; preds = %.thread268
  %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 %.thread270 [
    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 %.thread270

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 %.thread270

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

353:                                              ; preds = %.thread270
  %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 %.thread272 [
    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 %.thread272

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 %.thread272

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

372:                                              ; preds = %.thread272
  %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 %.thread274 [
    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 %.thread274

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 %.thread274

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

391:                                              ; preds = %.thread274
  %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)
  %.not220 = icmp eq i32 %397, 0
  %spec.select = select i1 %.not220, i32 %.17, i32 1
  %.pre287 = load i32, ptr %0, align 4, !tbaa !5
  br label %402

398:                                              ; preds = %391
  %399 = load volatile i32, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  %400 = and i32 %399, -12289
  %401 = or i32 %400, %393
  store volatile i32 %401, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  br label %402

402:                                              ; preds = %395, %398, %.thread274
  %403 = phi i32 [ %389, %398 ], [ %389, %.thread274 ], [ %.pre287, %395 ]
  %.18 = phi i32 [ %.17, %398 ], [ %.17, %.thread274 ], [ %spec.select, %395 ]
  %404 = and i32 %403, 16
  %.not221 = icmp eq i32 %404, 0
  br i1 %.not221, label %416, label %405

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

409:                                              ; preds = %405
  %410 = getelementptr inbounds i8, ptr %0, i64 36
  %411 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %410, i32 noundef 2)
  %.not222 = icmp eq i32 %411, 0
  %spec.select234 = select i1 %.not222, i32 %.18, i32 1
  %.pre288 = load i32, ptr %0, align 4, !tbaa !5
  br label %416

412:                                              ; preds = %405
  %413 = load volatile i32, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  %414 = and i32 %413, -769
  %415 = or i32 %414, %407
  store volatile i32 %415, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  br label %416

416:                                              ; preds = %409, %412, %402
  %417 = phi i32 [ %403, %412 ], [ %403, %402 ], [ %.pre288, %409 ]
  %.19 = phi i32 [ %.18, %412 ], [ %.18, %402 ], [ %spec.select234, %409 ]
  %418 = and i32 %417, 524288
  %.not223 = icmp eq i32 %418, 0
  br i1 %.not223, label %.thread276, label %419

419:                                              ; preds = %416
  %420 = getelementptr inbounds i8, ptr %0, i64 160
  %421 = load i32, ptr %420, align 4, !tbaa !44
  switch i32 %421, label %.thread276 [
    i32 0, label %422
    i32 65536, label %425
    i32 131072, label %428
  ]

422:                                              ; preds = %419
  %423 = getelementptr inbounds i8, ptr %0, i64 4
  %424 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %423, i32 noundef 0)
  br label %428

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

428:                                              ; preds = %425, %422, %419
  %.37 = phi i32 [ %.36, %419 ], [ %427, %425 ], [ %424, %422 ]
  %429 = icmp eq i32 %.37, 0
  br i1 %429, label %430, label %.thread276

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

.thread276:                                       ; preds = %419, %428, %430, %416
  %.38 = phi i32 [ 0, %430 ], [ %.36, %416 ], [ %.37, %428 ], [ 1, %419 ]
  %.20 = phi i32 [ %.19, %430 ], [ %.19, %416 ], [ %.37, %428 ], [ 1, %419 ]
  %435 = load i32, ptr %0, align 4, !tbaa !5
  %436 = and i32 %435, 262144
  %.not224 = icmp eq i32 %436, 0
  br i1 %.not224, label %.thread278, label %437

437:                                              ; preds = %.thread276
  %438 = getelementptr inbounds i8, ptr %0, i64 132
  %439 = load i32, ptr %438, align 4, !tbaa !45
  switch i32 %439, label %.thread278 [
    i32 1048576, label %440
    i32 2097152, label %443
    i32 3145728, label %446
  ]

440:                                              ; preds = %437
  %441 = load volatile i32, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  %442 = or i32 %441, 131072
  store volatile i32 %442, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  br label %446

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

446:                                              ; preds = %443, %440, %437
  %.39 = phi i32 [ %.38, %437 ], [ %445, %443 ], [ %.38, %440 ]
  %447 = icmp eq i32 %.39, 0
  br i1 %447, label %448, label %.thread278

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

.thread278:                                       ; preds = %437, %446, %448, %.thread276
  %.40 = phi i32 [ 0, %448 ], [ %.38, %.thread276 ], [ %.39, %446 ], [ 1, %437 ]
  %.21 = phi i32 [ %.20, %448 ], [ %.20, %.thread276 ], [ %.39, %446 ], [ 1, %437 ]
  %453 = load i32, ptr %0, align 4, !tbaa !5
  %454 = and i32 %453, 65536
  %.not225 = icmp eq i32 %454, 0
  br i1 %.not225, label %.thread280, label %455

455:                                              ; preds = %.thread278
  %456 = getelementptr inbounds i8, ptr %0, i64 76
  %457 = load i32, ptr %456, align 4, !tbaa !46
  switch i32 %457, label %.thread280 [
    i32 0, label %458
    i32 65536, label %461
  ]

458:                                              ; preds = %455
  %459 = load volatile i32, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  %460 = or i32 %459, 131072
  store volatile i32 %460, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !12
  br label %464

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

464:                                              ; preds = %461, %458
  %.41 = phi i32 [ %463, %461 ], [ %.40, %458 ]
  %465 = icmp eq i32 %.41, 0
  br i1 %465, label %466, label %.thread280

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

.thread280:                                       ; preds = %455, %464, %466, %.thread278
  %.42 = phi i32 [ 0, %466 ], [ %.40, %.thread278 ], [ %.41, %464 ], [ 1, %455 ]
  %.22 = phi i32 [ %.21, %466 ], [ %.21, %.thread278 ], [ %.41, %464 ], [ 1, %455 ]
  %471 = load i32, ptr %0, align 4, !tbaa !5
  %472 = and i32 %471, 536870912
  %.not226 = icmp eq i32 %472, 0
  br i1 %.not226, label %476, label %473

473:                                              ; preds = %.thread280
  %474 = getelementptr inbounds i8, ptr %0, i64 36
  %475 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %474, i32 noundef 2)
  %.not227 = icmp eq i32 %475, 0
  %spec.select235 = select i1 %.not227, i32 %.22, i32 1
  %.pr = load i32, ptr %0, align 4, !tbaa !5
  br label %476

476:                                              ; preds = %473, %.thread280
  %477 = phi i32 [ %.pr, %473 ], [ %471, %.thread280 ]
  %.23 = phi i32 [ %spec.select235, %473 ], [ %.22, %.thread280 ]
  %478 = and i32 %477, 131072
  %.not228 = icmp eq i32 %478, 0
  br i1 %.not228, label %.thread282, label %479

479:                                              ; preds = %476
  %480 = getelementptr inbounds i8, ptr %0, i64 124
  %481 = load i32, ptr %480, align 4, !tbaa !47
  %482 = tail call i32 @llvm.fshl.i32(i32 %481, i32 %481, i32 24)
  switch i32 %482, label %.thread282 [
    i32 1, label %483
    i32 2, label %486
    i32 3, label %486
    i32 0, label %486
  ]

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

486:                                              ; preds = %483, %479, %479, %479
  %487 = icmp eq i32 %.42, 0
  br i1 %487, label %488, label %.thread282

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

.thread282:                                       ; preds = %479, %486, %488, %476
  %.24 = phi i32 [ %.23, %488 ], [ %.23, %476 ], [ 1, %486 ], [ 1, %479 ]
  %492 = and i32 %477, 1048576
  %.not229 = icmp eq i32 %492, 0
  br i1 %.not229, label %499, label %493

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

499:                                              ; preds = %493, %.thread282
  %500 = and i32 %477, 268435456
  %.not230 = icmp eq i32 %500, 0
  br i1 %.not230, label %507, label %501

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

507:                                              ; preds = %501, %499
  %508 = and i32 %477, 2097152
  %.not231 = icmp eq i32 %508, 0
  br i1 %.not231, label %515, label %509

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

515:                                              ; preds = %509, %507
  %516 = and i32 %477, 1073741824
  %.not232 = icmp eq i32 %516, 0
  br i1 %.not232, label %524, label %517

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

524:                                              ; preds = %517, %515
  %.not233 = icmp sgt i32 %477, -1
  br i1 %.not233, label %531, label %525

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

531:                                              ; preds = %525, %524
  %532 = icmp ne i32 %.24, 0
  %. = zext i1 %532 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}


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