; LLVM IR from reazon-research/OpenArm :: control/canfd_control/Drivers/STM32H7xx_HAL_Driver/Src (stm32h7xx_hal_rcc_ex)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.RCC_PeriphCLKInitTypeDef = type { i64, %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 }
%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 i64, ptr %10, align 8, !tbaa !11
  %12 = and i64 %11, 134217728
  %13 = icmp eq i64 %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 10
  %17 = load i32, ptr %16, align 4, !tbaa !15
  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 !16
  %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 !16
  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 !18
  %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 10
  %41 = load i32, ptr %40, align 4, !tbaa !15
  %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 !18
  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 i64, ptr %50, align 8, !tbaa !11
  %52 = and i64 %51, 256
  %53 = icmp eq i64 %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 8, !tbaa !19
  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 !16
  %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 !16
  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 !18
  %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 8, !tbaa !19
  %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 !18
  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 i64, ptr %90, align 8, !tbaa !11
  %92 = and i64 %91, 1024
  %93 = icmp eq i64 %92, 1024
  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 26
  %97 = load i32, ptr %96, align 4, !tbaa !20
  switch i32 %97, label %111 [
    i32 0, label %98
    i32 2097152, label %103
    i32 4194304, label %107
    i32 6291456, label %112
    i32 8388608, label %112
    i32 10485760, 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 !16
  %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 !16
  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, %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 22), align 4, !tbaa !21
  %117 = zext i32 %116 to i64
  %118 = and i64 %117, -14680065
  %119 = load ptr, ptr %3, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %119, i32 0, i32 26
  %121 = load i32, ptr %120, align 4, !tbaa !20
  %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 22), align 4, !tbaa !21
  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 i64, ptr %130, align 8, !tbaa !11
  %132 = and i64 %131, 2048
  %133 = icmp eq i64 %132, 2048
  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 8, !tbaa !22
  switch i32 %137, label %151 [
    i32 0, label %138
    i32 16777216, label %143
    i32 33554432, label %147
    i32 50331648, label %152
    i32 67108864, label %152
    i32 83886080, 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 !16
  %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 !16
  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, %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, -117440513
  %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 8, !tbaa !22
  %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 i64, ptr %170, align 8, !tbaa !11
  %172 = and i64 %171, 33554432
  %173 = icmp eq i64 %172, 33554432
  br i1 %173, label %174, label %204

174:                                              ; preds = %168
  %175 = load ptr, ptr %3, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %175, i32 0, i32 4
  %177 = load i32, ptr %176, align 4, !tbaa !23
  switch i32 %177, label %187 [
    i32 16, label %178
    i32 32, label %183
    i32 48, label %188
    i32 0, label %188
  ]

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 !16
  %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 !16
  br label %188

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 2)
  store i32 %186, ptr %6, align 4, !tbaa !9
  br label %188

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

188:                                              ; preds = %187, %183, %178, %174, %174
  %189 = load i32, ptr %6, align 4, !tbaa !9
  %190 = icmp eq i32 %189, 0
  br i1 %190, label %191, label %201

191:                                              ; preds = %188
  %192 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 19), align 4, !tbaa !24
  %193 = zext i32 %192 to i64
  %194 = and i64 %193, -49
  %195 = load ptr, ptr %3, align 8, !tbaa !5
  %196 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %195, i32 0, i32 4
  %197 = load i32, ptr %196, align 4, !tbaa !23
  %198 = zext i32 %197 to i64
  %199 = or i64 %194, %198
  %200 = trunc i64 %199 to i32
  store volatile i32 %200, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 19), align 4, !tbaa !24
  br label %203

201:                                              ; preds = %188
  %202 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %202, ptr %7, align 4, !tbaa !9
  br label %203

203:                                              ; preds = %201, %191
  br label %204

204:                                              ; preds = %203, %168
  %205 = load ptr, ptr %3, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %205, i32 0, i32 0
  %207 = load i64, ptr %206, align 8, !tbaa !11
  %208 = and i64 %207, 4096
  %209 = icmp eq i64 %208, 4096
  br i1 %209, label %210, label %244

210:                                              ; preds = %204
  %211 = load ptr, ptr %3, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %211, i32 0, i32 8
  %213 = load i32, ptr %212, align 4, !tbaa !25
  switch i32 %213, label %227 [
    i32 0, label %214
    i32 4096, label %219
    i32 8192, label %223
    i32 12288, label %228
    i32 16384, label %228
  ]

214:                                              ; preds = %210
  %215 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !16
  %216 = zext i32 %215 to i64
  %217 = or i64 %216, 131072
  %218 = trunc i64 %217 to i32
  store volatile i32 %218, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !16
  br label %228

219:                                              ; preds = %210
  %220 = load ptr, ptr %3, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %220, i32 0, i32 1
  %222 = call i32 @RCCEx_PLL2_Config(ptr noundef %221, i32 noundef 0)
  store i32 %222, ptr %6, align 4, !tbaa !9
  br label %228

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

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

228:                                              ; preds = %227, %223, %219, %214, %210, %210
  %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 20), align 4, !tbaa !18
  %233 = zext i32 %232 to i64
  %234 = and i64 %233, -28673
  %235 = load ptr, ptr %3, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %235, i32 0, i32 8
  %237 = load i32, ptr %236, align 4, !tbaa !25
  %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 20), align 4, !tbaa !18
  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, %204
  %245 = load ptr, ptr %3, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %245, i32 0, i32 0
  %247 = load i64, ptr %246, align 8, !tbaa !11
  %248 = and i64 %247, 8192
  %249 = icmp eq i64 %248, 8192
  br i1 %249, label %250, label %279

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 8, !tbaa !26
  switch i32 %253, label %262 [
    i32 0, label %263
    i32 65536, label %254
    i32 131072, label %258
    i32 196608, label %263
    i32 262144, label %263
    i32 327680, label %263
  ]

254:                                              ; preds = %250
  %255 = load ptr, ptr %3, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %255, i32 0, i32 1
  %257 = call i32 @RCCEx_PLL2_Config(ptr noundef %256, i32 noundef 1)
  store i32 %257, ptr %6, align 4, !tbaa !9
  br label %263

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

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

263:                                              ; preds = %262, %258, %254, %250, %250, %250, %250
  %264 = load i32, ptr %6, align 4, !tbaa !9
  %265 = icmp eq i32 %264, 0
  br i1 %265, label %266, label %276

266:                                              ; preds = %263
  %267 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 20), align 4, !tbaa !18
  %268 = zext i32 %267 to i64
  %269 = and i64 %268, -458753
  %270 = load ptr, ptr %3, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %270, i32 0, i32 9
  %272 = load i32, ptr %271, align 8, !tbaa !26
  %273 = zext i32 %272 to i64
  %274 = or i64 %269, %273
  %275 = trunc i64 %274 to i32
  store volatile i32 %275, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 20), align 4, !tbaa !18
  br label %278

276:                                              ; preds = %263
  %277 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %277, ptr %7, align 4, !tbaa !9
  br label %278

278:                                              ; preds = %276, %266
  br label %279

279:                                              ; preds = %278, %244
  %280 = load ptr, ptr %3, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %280, i32 0, i32 0
  %282 = load i64, ptr %281, align 8, !tbaa !11
  %283 = and i64 %282, 16384
  %284 = icmp eq i64 %283, 16384
  br i1 %284, label %285, label %314

285:                                              ; preds = %279
  %286 = load ptr, ptr %3, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %286, i32 0, i32 28
  %288 = load i32, ptr %287, align 4, !tbaa !27
  switch i32 %288, label %297 [
    i32 0, label %298
    i32 268435456, label %289
    i32 536870912, label %293
    i32 805306368, label %298
    i32 1073741824, label %298
    i32 1342177280, label %298
  ]

289:                                              ; preds = %285
  %290 = load ptr, ptr %3, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %290, i32 0, i32 1
  %292 = call i32 @RCCEx_PLL2_Config(ptr noundef %291, i32 noundef 1)
  store i32 %292, ptr %6, align 4, !tbaa !9
  br label %298

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

297:                                              ; preds = %285
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %298

298:                                              ; preds = %297, %293, %289, %285, %285, %285, %285
  %299 = load i32, ptr %6, align 4, !tbaa !9
  %300 = icmp eq i32 %299, 0
  br i1 %300, label %301, label %311

301:                                              ; preds = %298
  %302 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  %303 = zext i32 %302 to i64
  %304 = and i64 %303, -1879048193
  %305 = load ptr, ptr %3, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %305, i32 0, i32 28
  %307 = load i32, ptr %306, align 4, !tbaa !27
  %308 = zext i32 %307 to i64
  %309 = or i64 %304, %308
  %310 = trunc i64 %309 to i32
  store volatile i32 %310, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  br label %313

311:                                              ; preds = %298
  %312 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %312, ptr %7, align 4, !tbaa !9
  br label %313

313:                                              ; preds = %311, %301
  br label %314

314:                                              ; preds = %313, %279
  %315 = load ptr, ptr %3, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %315, i32 0, i32 0
  %317 = load i64, ptr %316, align 8, !tbaa !11
  %318 = and i64 %317, 32768
  %319 = icmp eq i64 %318, 32768
  br i1 %319, label %320, label %350

320:                                              ; preds = %314
  %321 = load ptr, ptr %3, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %321, i32 0, i32 12
  %323 = load i32, ptr %322, align 4, !tbaa !28
  switch i32 %323, label %333 [
    i32 268435456, label %324
    i32 536870912, label %329
    i32 0, label %334
  ]

324:                                              ; preds = %320
  %325 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !16
  %326 = zext i32 %325 to i64
  %327 = or i64 %326, 131072
  %328 = trunc i64 %327 to i32
  store volatile i32 %328, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !16
  br label %334

329:                                              ; preds = %320
  %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 %334

333:                                              ; preds = %320
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %334

334:                                              ; preds = %333, %329, %324, %320
  %335 = load i32, ptr %6, align 4, !tbaa !9
  %336 = icmp eq i32 %335, 0
  br i1 %336, label %337, label %347

337:                                              ; preds = %334
  %338 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 20), align 4, !tbaa !18
  %339 = zext i32 %338 to i64
  %340 = and i64 %339, -805306369
  %341 = load ptr, ptr %3, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %341, i32 0, i32 12
  %343 = load i32, ptr %342, align 4, !tbaa !28
  %344 = zext i32 %343 to i64
  %345 = or i64 %340, %344
  %346 = trunc i64 %345 to i32
  store volatile i32 %346, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 20), align 4, !tbaa !18
  br label %349

347:                                              ; preds = %334
  %348 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %348, ptr %7, align 4, !tbaa !9
  br label %349

349:                                              ; preds = %347, %337
  br label %350

350:                                              ; preds = %349, %314
  %351 = load ptr, ptr %3, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %351, i32 0, i32 0
  %353 = load i64, ptr %352, align 8, !tbaa !11
  %354 = and i64 %353, 16777216
  %355 = icmp eq i64 %354, 16777216
  br i1 %355, label %356, label %386

356:                                              ; preds = %350
  %357 = load ptr, ptr %3, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %357, i32 0, i32 3
  %359 = load i32, ptr %358, align 8, !tbaa !29
  switch i32 %359, label %369 [
    i32 1, label %360
    i32 2, label %365
    i32 3, label %370
    i32 0, label %370
  ]

360:                                              ; preds = %356
  %361 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !16
  %362 = zext i32 %361 to i64
  %363 = or i64 %362, 131072
  %364 = trunc i64 %363 to i32
  store volatile i32 %364, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !16
  br label %370

365:                                              ; preds = %356
  %366 = load ptr, ptr %3, align 8, !tbaa !5
  %367 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %366, i32 0, i32 1
  %368 = call i32 @RCCEx_PLL2_Config(ptr noundef %367, i32 noundef 2)
  store i32 %368, ptr %6, align 4, !tbaa !9
  br label %370

369:                                              ; preds = %356
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %370

370:                                              ; preds = %369, %365, %360, %356, %356
  %371 = load i32, ptr %6, align 4, !tbaa !9
  %372 = icmp eq i32 %371, 0
  br i1 %372, label %373, label %383

373:                                              ; preds = %370
  %374 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 19), align 4, !tbaa !24
  %375 = zext i32 %374 to i64
  %376 = and i64 %375, -4
  %377 = load ptr, ptr %3, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %377, i32 0, i32 3
  %379 = load i32, ptr %378, align 8, !tbaa !29
  %380 = zext i32 %379 to i64
  %381 = or i64 %376, %380
  %382 = trunc i64 %381 to i32
  store volatile i32 %382, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 19), align 4, !tbaa !24
  br label %385

383:                                              ; preds = %370
  %384 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %384, ptr %7, align 4, !tbaa !9
  br label %385

385:                                              ; preds = %383, %373
  br label %386

386:                                              ; preds = %385, %350
  %387 = load ptr, ptr %3, align 8, !tbaa !5
  %388 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %387, i32 0, i32 0
  %389 = load i64, ptr %388, align 8, !tbaa !11
  %390 = and i64 %389, 4194304
  %391 = icmp eq i64 %390, 4194304
  br i1 %391, label %392, label %505

392:                                              ; preds = %386
  %393 = load volatile i32, ptr inttoptr (i64 1476544512 to ptr), align 4, !tbaa !30
  %394 = zext i32 %393 to i64
  %395 = or i64 %394, 256
  %396 = trunc i64 %395 to i32
  store volatile i32 %396, ptr inttoptr (i64 1476544512 to ptr), align 4, !tbaa !30
  %397 = call i32 @HAL_GetTick()
  store i32 %397, ptr %5, align 4, !tbaa !9
  br label %398

398:                                              ; preds = %409, %392
  %399 = load volatile i32, ptr inttoptr (i64 1476544512 to ptr), align 4, !tbaa !30
  %400 = zext i32 %399 to i64
  %401 = and i64 %400, 256
  %402 = icmp eq i64 %401, 0
  br i1 %402, label %403, label %410

403:                                              ; preds = %398
  %404 = call i32 @HAL_GetTick()
  %405 = load i32, ptr %5, align 4, !tbaa !9
  %406 = sub i32 %404, %405
  %407 = icmp ugt i32 %406, 100
  br i1 %407, label %408, label %409

408:                                              ; preds = %403
  store i32 3, ptr %6, align 4, !tbaa !9
  br label %410

409:                                              ; preds = %403
  br label %398, !llvm.loop !32

410:                                              ; preds = %408, %398
  %411 = load i32, ptr %6, align 4, !tbaa !9
  %412 = icmp eq i32 %411, 0
  br i1 %412, label %413, label %502

413:                                              ; preds = %410
  %414 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 28), align 4, !tbaa !34
  %415 = zext i32 %414 to i64
  %416 = and i64 %415, 768
  %417 = load ptr, ptr %3, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %417, i32 0, i32 29
  %419 = load i32, ptr %418, align 8, !tbaa !35
  %420 = zext i32 %419 to i64
  %421 = and i64 %420, 768
  %422 = icmp ne i64 %416, %421
  br i1 %422, label %423, label %437

423:                                              ; preds = %413
  %424 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 28), align 4, !tbaa !34
  %425 = zext i32 %424 to i64
  %426 = and i64 %425, -769
  %427 = trunc i64 %426 to i32
  store i32 %427, ptr %4, align 4, !tbaa !9
  %428 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 28), align 4, !tbaa !34
  %429 = zext i32 %428 to i64
  %430 = or i64 %429, 65536
  %431 = trunc i64 %430 to i32
  store volatile i32 %431, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 28), align 4, !tbaa !34
  %432 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 28), align 4, !tbaa !34
  %433 = zext i32 %432 to i64
  %434 = and i64 %433, -65537
  %435 = trunc i64 %434 to i32
  store volatile i32 %435, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 28), align 4, !tbaa !34
  %436 = load i32, ptr %4, align 4, !tbaa !9
  store volatile i32 %436, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 28), align 4, !tbaa !34
  br label %437

437:                                              ; preds = %423, %413
  %438 = load ptr, ptr %3, align 8, !tbaa !5
  %439 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %438, i32 0, i32 29
  %440 = load i32, ptr %439, align 8, !tbaa !35
  %441 = icmp eq i32 %440, 256
  br i1 %441, label %442, label %461

442:                                              ; preds = %437
  %443 = call i32 @HAL_GetTick()
  store i32 %443, ptr %5, align 4, !tbaa !9
  br label %444

444:                                              ; preds = %459, %442
  %445 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 28), align 4, !tbaa !34
  %446 = zext i32 %445 to i64
  %447 = and i64 %446, 2
  %448 = icmp ne i64 %447, 0
  %449 = zext i1 %448 to i64
  %450 = select i1 %448, i32 1, i32 0
  %451 = icmp eq i32 %450, 0
  br i1 %451, label %452, label %460

452:                                              ; preds = %444
  %453 = call i32 @HAL_GetTick()
  %454 = load i32, ptr %5, align 4, !tbaa !9
  %455 = sub i32 %453, %454
  %456 = zext i32 %455 to i64
  %457 = icmp ugt i64 %456, 5000
  br i1 %457, label %458, label %459

458:                                              ; preds = %452
  store i32 3, ptr %6, align 4, !tbaa !9
  br label %460

459:                                              ; preds = %452
  br label %444, !llvm.loop !36

460:                                              ; preds = %458, %444
  br label %461

461:                                              ; preds = %460, %437
  %462 = load i32, ptr %6, align 4, !tbaa !9
  %463 = icmp eq i32 %462, 0
  br i1 %463, label %464, label %499

464:                                              ; preds = %461
  br label %465

465:                                              ; preds = %464
  %466 = load ptr, ptr %3, align 8, !tbaa !5
  %467 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %466, i32 0, i32 29
  %468 = load i32, ptr %467, align 8, !tbaa !35
  %469 = zext i32 %468 to i64
  %470 = and i64 %469, 768
  %471 = icmp eq i64 %470, 768
  br i1 %471, label %472, label %484

472:                                              ; preds = %465
  %473 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 4), align 4, !tbaa !37
  %474 = zext i32 %473 to i64
  %475 = and i64 %474, -16129
  %476 = load ptr, ptr %3, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %476, i32 0, i32 29
  %478 = load i32, ptr %477, align 8, !tbaa !35
  %479 = and i32 %478, 268434687
  %480 = lshr i32 %479, 4
  %481 = zext i32 %480 to i64
  %482 = or i64 %475, %481
  %483 = trunc i64 %482 to i32
  store volatile i32 %483, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 4), align 4, !tbaa !37
  br label %489

484:                                              ; preds = %465
  %485 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 4), align 4, !tbaa !37
  %486 = zext i32 %485 to i64
  %487 = and i64 %486, -16129
  %488 = trunc i64 %487 to i32
  store volatile i32 %488, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 4), align 4, !tbaa !37
  br label %489

489:                                              ; preds = %484, %472
  %490 = phi i32 [ %483, %472 ], [ %488, %484 ]
  %491 = load ptr, ptr %3, align 8, !tbaa !5
  %492 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %491, i32 0, i32 29
  %493 = load i32, ptr %492, align 8, !tbaa !35
  %494 = and i32 %493, 4095
  %495 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 28), align 4, !tbaa !34
  %496 = or i32 %495, %494
  store volatile i32 %496, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 28), align 4, !tbaa !34
  br label %497

497:                                              ; preds = %489
  br label %498

498:                                              ; preds = %497
  br label %501

499:                                              ; preds = %461
  %500 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %500, ptr %7, align 4, !tbaa !9
  br label %501

501:                                              ; preds = %499, %498
  br label %504

502:                                              ; preds = %410
  %503 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %503, ptr %7, align 4, !tbaa !9
  br label %504

504:                                              ; preds = %502, %501
  br label %505

505:                                              ; preds = %504, %386
  %506 = load ptr, ptr %3, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %506, i32 0, i32 0
  %508 = load i64, ptr %507, align 8, !tbaa !11
  %509 = and i64 %508, 1
  %510 = icmp eq i64 %509, 1
  br i1 %510, label %511, label %540

511:                                              ; preds = %505
  %512 = load ptr, ptr %3, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %512, i32 0, i32 15
  %514 = load i32, ptr %513, align 8, !tbaa !38
  switch i32 %514, label %523 [
    i32 0, label %524
    i32 8, label %515
    i32 16, label %519
    i32 24, label %524
    i32 32, label %524
    i32 40, label %524
  ]

515:                                              ; preds = %511
  %516 = load ptr, ptr %3, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %516, i32 0, i32 1
  %518 = call i32 @RCCEx_PLL2_Config(ptr noundef %517, i32 noundef 1)
  store i32 %518, ptr %6, align 4, !tbaa !9
  br label %524

519:                                              ; preds = %511
  %520 = load ptr, ptr %3, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %520, i32 0, i32 2
  %522 = call i32 @RCCEx_PLL3_Config(ptr noundef %521, i32 noundef 1)
  store i32 %522, ptr %6, align 4, !tbaa !9
  br label %524

523:                                              ; preds = %511
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %524

524:                                              ; preds = %523, %519, %515, %511, %511, %511, %511
  %525 = load i32, ptr %6, align 4, !tbaa !9
  %526 = icmp eq i32 %525, 0
  br i1 %526, label %527, label %537

527:                                              ; preds = %524
  %528 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  %529 = zext i32 %528 to i64
  %530 = and i64 %529, -57
  %531 = load ptr, ptr %3, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %531, i32 0, i32 15
  %533 = load i32, ptr %532, align 8, !tbaa !38
  %534 = zext i32 %533 to i64
  %535 = or i64 %530, %534
  %536 = trunc i64 %535 to i32
  store volatile i32 %536, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  br label %539

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

539:                                              ; preds = %537, %527
  br label %540

540:                                              ; preds = %539, %505
  %541 = load ptr, ptr %3, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %541, i32 0, i32 0
  %543 = load i64, ptr %542, align 8, !tbaa !11
  %544 = and i64 %543, 2
  %545 = icmp eq i64 %544, 2
  br i1 %545, label %546, label %575

546:                                              ; preds = %540
  %547 = load ptr, ptr %3, align 8, !tbaa !5
  %548 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %547, i32 0, i32 14
  %549 = load i32, ptr %548, align 4, !tbaa !40
  switch i32 %549, label %558 [
    i32 0, label %559
    i32 1, label %550
    i32 2, label %554
    i32 3, label %559
    i32 4, label %559
    i32 5, label %559
  ]

550:                                              ; preds = %546
  %551 = load ptr, ptr %3, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %551, i32 0, i32 1
  %553 = call i32 @RCCEx_PLL2_Config(ptr noundef %552, i32 noundef 1)
  store i32 %553, ptr %6, align 4, !tbaa !9
  br label %559

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

558:                                              ; preds = %546
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %559

559:                                              ; preds = %558, %554, %550, %546, %546, %546, %546
  %560 = load i32, ptr %6, align 4, !tbaa !9
  %561 = icmp eq i32 %560, 0
  br i1 %561, label %562, label %572

562:                                              ; preds = %559
  %563 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  %564 = zext i32 %563 to i64
  %565 = and i64 %564, -8
  %566 = load ptr, ptr %3, align 8, !tbaa !5
  %567 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %566, i32 0, i32 14
  %568 = load i32, ptr %567, align 4, !tbaa !40
  %569 = zext i32 %568 to i64
  %570 = or i64 %565, %569
  %571 = trunc i64 %570 to i32
  store volatile i32 %571, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  br label %574

572:                                              ; preds = %559
  %573 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %573, ptr %7, align 4, !tbaa !9
  br label %574

574:                                              ; preds = %572, %562
  br label %575

575:                                              ; preds = %574, %540
  %576 = load ptr, ptr %3, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %576, i32 0, i32 0
  %578 = load i64, ptr %577, align 8, !tbaa !11
  %579 = and i64 %578, 4
  %580 = icmp eq i64 %579, 4
  br i1 %580, label %581, label %610

581:                                              ; preds = %575
  %582 = load ptr, ptr %3, align 8, !tbaa !5
  %583 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %582, i32 0, i32 21
  %584 = load i32, ptr %583, align 8, !tbaa !41
  switch i32 %584, label %593 [
    i32 0, label %594
    i32 1, label %585
    i32 2, label %589
    i32 3, label %594
    i32 4, label %594
    i32 5, label %594
  ]

585:                                              ; preds = %581
  %586 = load ptr, ptr %3, align 8, !tbaa !5
  %587 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %586, i32 0, i32 1
  %588 = call i32 @RCCEx_PLL2_Config(ptr noundef %587, i32 noundef 1)
  store i32 %588, ptr %6, align 4, !tbaa !9
  br label %594

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

593:                                              ; preds = %581
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %594

594:                                              ; preds = %593, %589, %585, %581, %581, %581, %581
  %595 = load i32, ptr %6, align 4, !tbaa !9
  %596 = icmp eq i32 %595, 0
  br i1 %596, label %597, label %607

597:                                              ; preds = %594
  %598 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  %599 = zext i32 %598 to i64
  %600 = and i64 %599, -8
  %601 = load ptr, ptr %3, align 8, !tbaa !5
  %602 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %601, i32 0, i32 21
  %603 = load i32, ptr %602, align 8, !tbaa !41
  %604 = zext i32 %603 to i64
  %605 = or i64 %600, %604
  %606 = trunc i64 %605 to i32
  store volatile i32 %606, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  br label %609

607:                                              ; preds = %594
  %608 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %608, ptr %7, align 4, !tbaa !9
  br label %609

609:                                              ; preds = %607, %597
  br label %610

610:                                              ; preds = %609, %575
  %611 = load ptr, ptr %3, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %611, i32 0, i32 0
  %613 = load i64, ptr %612, align 8, !tbaa !11
  %614 = and i64 %613, 32
  %615 = icmp eq i64 %614, 32
  br i1 %615, label %616, label %645

616:                                              ; preds = %610
  %617 = load ptr, ptr %3, align 8, !tbaa !5
  %618 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %617, i32 0, i32 20
  %619 = load i32, ptr %618, align 4, !tbaa !42
  switch i32 %619, label %628 [
    i32 0, label %629
    i32 268435456, label %620
    i32 536870912, label %624
    i32 805306368, label %629
    i32 1073741824, label %629
    i32 1342177280, label %629
  ]

620:                                              ; preds = %616
  %621 = load ptr, ptr %3, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %621, i32 0, i32 1
  %623 = call i32 @RCCEx_PLL2_Config(ptr noundef %622, i32 noundef 0)
  store i32 %623, ptr %6, align 4, !tbaa !9
  br label %629

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

628:                                              ; preds = %616
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %629

629:                                              ; preds = %628, %624, %620, %616, %616, %616, %616
  %630 = load i32, ptr %6, align 4, !tbaa !9
  %631 = icmp eq i32 %630, 0
  br i1 %631, label %632, label %642

632:                                              ; preds = %629
  %633 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  %634 = zext i32 %633 to i64
  %635 = and i64 %634, -1879048193
  %636 = load ptr, ptr %3, align 8, !tbaa !5
  %637 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %636, i32 0, i32 20
  %638 = load i32, ptr %637, align 4, !tbaa !42
  %639 = zext i32 %638 to i64
  %640 = or i64 %635, %639
  %641 = trunc i64 %640 to i32
  store volatile i32 %641, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  br label %644

642:                                              ; preds = %629
  %643 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %643, ptr %7, align 4, !tbaa !9
  br label %644

644:                                              ; preds = %642, %632
  br label %645

645:                                              ; preds = %644, %610
  %646 = load ptr, ptr %3, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %646, i32 0, i32 0
  %648 = load i64, ptr %647, align 8, !tbaa !11
  %649 = and i64 %648, 64
  %650 = icmp eq i64 %649, 64
  br i1 %650, label %651, label %680

651:                                              ; preds = %645
  %652 = load ptr, ptr %3, align 8, !tbaa !5
  %653 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %652, i32 0, i32 23
  %654 = load i32, ptr %653, align 8, !tbaa !43
  switch i32 %654, label %663 [
    i32 0, label %664
    i32 1024, label %655
    i32 2048, label %659
    i32 3072, label %664
    i32 4096, label %664
    i32 5120, label %664
  ]

655:                                              ; preds = %651
  %656 = load ptr, ptr %3, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %656, i32 0, i32 1
  %658 = call i32 @RCCEx_PLL2_Config(ptr noundef %657, i32 noundef 0)
  store i32 %658, ptr %6, align 4, !tbaa !9
  br label %664

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

663:                                              ; preds = %651
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %664

664:                                              ; preds = %663, %659, %655, %651, %651, %651, %651
  %665 = load i32, ptr %6, align 4, !tbaa !9
  %666 = icmp eq i32 %665, 0
  br i1 %666, label %667, label %677

667:                                              ; preds = %664
  %668 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  %669 = zext i32 %668 to i64
  %670 = and i64 %669, -7169
  %671 = load ptr, ptr %3, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %671, i32 0, i32 23
  %673 = load i32, ptr %672, align 8, !tbaa !43
  %674 = zext i32 %673 to i64
  %675 = or i64 %670, %674
  %676 = trunc i64 %675 to i32
  store volatile i32 %676, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  br label %679

677:                                              ; preds = %664
  %678 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %678, ptr %7, align 4, !tbaa !9
  br label %679

679:                                              ; preds = %677, %667
  br label %680

680:                                              ; preds = %679, %645
  %681 = load ptr, ptr %3, align 8, !tbaa !5
  %682 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %681, i32 0, i32 0
  %683 = load i64, ptr %682, align 8, !tbaa !11
  %684 = and i64 %683, 128
  %685 = icmp eq i64 %684, 128
  br i1 %685, label %686, label %715

686:                                              ; preds = %680
  %687 = load ptr, ptr %3, align 8, !tbaa !5
  %688 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %687, i32 0, i32 24
  %689 = load i32, ptr %688, align 4, !tbaa !44
  switch i32 %689, label %698 [
    i32 0, label %699
    i32 8192, label %690
    i32 16384, label %694
    i32 24576, label %699
    i32 32768, label %699
    i32 40960, label %699
  ]

690:                                              ; preds = %686
  %691 = load ptr, ptr %3, align 8, !tbaa !5
  %692 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %691, i32 0, i32 1
  %693 = call i32 @RCCEx_PLL2_Config(ptr noundef %692, i32 noundef 0)
  store i32 %693, ptr %6, align 4, !tbaa !9
  br label %699

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

698:                                              ; preds = %686
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %699

699:                                              ; preds = %698, %694, %690, %686, %686, %686, %686
  %700 = load i32, ptr %6, align 4, !tbaa !9
  %701 = icmp eq i32 %700, 0
  br i1 %701, label %702, label %712

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

712:                                              ; preds = %699
  %713 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %713, ptr %7, align 4, !tbaa !9
  br label %714

714:                                              ; preds = %712, %702
  br label %715

715:                                              ; preds = %714, %680
  %716 = load ptr, ptr %3, align 8, !tbaa !5
  %717 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %716, i32 0, i32 0
  %718 = load i64, ptr %717, align 8, !tbaa !11
  %719 = and i64 %718, 8
  %720 = icmp eq i64 %719, 8
  br i1 %720, label %721, label %744

721:                                              ; preds = %715
  %722 = load ptr, ptr %3, align 8, !tbaa !5
  %723 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %722, i32 0, i32 17
  %724 = load i32, ptr %723, align 8, !tbaa !45
  %725 = zext i32 %724 to i64
  %726 = icmp eq i64 %725, 4096
  br i1 %726, label %727, label %734

727:                                              ; preds = %721
  %728 = load ptr, ptr %3, align 8, !tbaa !5
  %729 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %728, i32 0, i32 2
  %730 = call i32 @RCCEx_PLL3_Config(ptr noundef %729, i32 noundef 2)
  %731 = icmp ne i32 %730, 0
  br i1 %731, label %732, label %733

732:                                              ; preds = %727
  store i32 1, ptr %7, align 4, !tbaa !9
  br label %733

733:                                              ; preds = %732, %727
  br label %734

734:                                              ; preds = %733, %721
  %735 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  %736 = zext i32 %735 to i64
  %737 = and i64 %736, -12289
  %738 = load ptr, ptr %3, align 8, !tbaa !5
  %739 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %738, i32 0, i32 17
  %740 = load i32, ptr %739, align 8, !tbaa !45
  %741 = zext i32 %740 to i64
  %742 = or i64 %737, %741
  %743 = trunc i64 %742 to i32
  store volatile i32 %743, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  br label %744

744:                                              ; preds = %734, %715
  %745 = load ptr, ptr %3, align 8, !tbaa !5
  %746 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %745, i32 0, i32 0
  %747 = load i64, ptr %746, align 8, !tbaa !11
  %748 = and i64 %747, 16
  %749 = icmp eq i64 %748, 16
  br i1 %749, label %750, label %773

750:                                              ; preds = %744
  %751 = load ptr, ptr %3, align 8, !tbaa !5
  %752 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %751, i32 0, i32 22
  %753 = load i32, ptr %752, align 4, !tbaa !46
  %754 = zext i32 %753 to i64
  %755 = icmp eq i64 %754, 256
  br i1 %755, label %756, label %763

756:                                              ; preds = %750
  %757 = load ptr, ptr %3, align 8, !tbaa !5
  %758 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %757, i32 0, i32 2
  %759 = call i32 @RCCEx_PLL3_Config(ptr noundef %758, i32 noundef 2)
  %760 = icmp ne i32 %759, 0
  br i1 %760, label %761, label %762

761:                                              ; preds = %756
  store i32 1, ptr %7, align 4, !tbaa !9
  br label %762

762:                                              ; preds = %761, %756
  br label %763

763:                                              ; preds = %762, %750
  %764 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  %765 = zext i32 %764 to i64
  %766 = and i64 %765, -769
  %767 = load ptr, ptr %3, align 8, !tbaa !5
  %768 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %767, i32 0, i32 22
  %769 = load i32, ptr %768, align 4, !tbaa !46
  %770 = zext i32 %769 to i64
  %771 = or i64 %766, %770
  %772 = trunc i64 %771 to i32
  store volatile i32 %772, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  br label %773

773:                                              ; preds = %763, %744
  %774 = load ptr, ptr %3, align 8, !tbaa !5
  %775 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %774, i32 0, i32 0
  %776 = load i64, ptr %775, align 8, !tbaa !11
  %777 = and i64 %776, 524288
  %778 = icmp eq i64 %777, 524288
  br i1 %778, label %779, label %808

779:                                              ; preds = %773
  %780 = load ptr, ptr %3, align 8, !tbaa !5
  %781 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %780, i32 0, i32 25
  %782 = load i32, ptr %781, align 8, !tbaa !47
  switch i32 %782, label %791 [
    i32 0, label %783
    i32 65536, label %787
    i32 131072, label %792
  ]

783:                                              ; preds = %779
  %784 = load ptr, ptr %3, align 8, !tbaa !5
  %785 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %784, i32 0, i32 1
  %786 = call i32 @RCCEx_PLL2_Config(ptr noundef %785, i32 noundef 0)
  store i32 %786, ptr %6, align 4, !tbaa !9
  br label %792

787:                                              ; preds = %779
  %788 = load ptr, ptr %3, align 8, !tbaa !5
  %789 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %788, i32 0, i32 2
  %790 = call i32 @RCCEx_PLL3_Config(ptr noundef %789, i32 noundef 2)
  store i32 %790, ptr %6, align 4, !tbaa !9
  br label %792

791:                                              ; preds = %779
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %792

792:                                              ; preds = %791, %787, %783, %779
  %793 = load i32, ptr %6, align 4, !tbaa !9
  %794 = icmp eq i32 %793, 0
  br i1 %794, label %795, label %805

795:                                              ; preds = %792
  %796 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  %797 = zext i32 %796 to i64
  %798 = and i64 %797, -196609
  %799 = load ptr, ptr %3, align 8, !tbaa !5
  %800 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %799, i32 0, i32 25
  %801 = load i32, ptr %800, align 8, !tbaa !47
  %802 = zext i32 %801 to i64
  %803 = or i64 %798, %802
  %804 = trunc i64 %803 to i32
  store volatile i32 %804, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !21
  br label %807

805:                                              ; preds = %792
  %806 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %806, ptr %7, align 4, !tbaa !9
  br label %807

807:                                              ; preds = %805, %795
  br label %808

808:                                              ; preds = %807, %773
  %809 = load ptr, ptr %3, align 8, !tbaa !5
  %810 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %809, i32 0, i32 0
  %811 = load i64, ptr %810, align 8, !tbaa !11
  %812 = and i64 %811, 262144
  %813 = icmp eq i64 %812, 262144
  br i1 %813, label %814, label %844

814:                                              ; preds = %808
  %815 = load ptr, ptr %3, align 8, !tbaa !5
  %816 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %815, i32 0, i32 18
  %817 = load i32, ptr %816, align 4, !tbaa !48
  switch i32 %817, label %827 [
    i32 1048576, label %818
    i32 2097152, label %823
    i32 3145728, label %828
  ]

818:                                              ; preds = %814
  %819 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !16
  %820 = zext i32 %819 to i64
  %821 = or i64 %820, 131072
  %822 = trunc i64 %821 to i32
  store volatile i32 %822, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !16
  br label %828

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

827:                                              ; preds = %814
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %828

828:                                              ; preds = %827, %823, %818, %814
  %829 = load i32, ptr %6, align 4, !tbaa !9
  %830 = icmp eq i32 %829, 0
  br i1 %830, label %831, label %841

831:                                              ; preds = %828
  %832 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  %833 = zext i32 %832 to i64
  %834 = and i64 %833, -3145729
  %835 = load ptr, ptr %3, align 8, !tbaa !5
  %836 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %835, i32 0, i32 18
  %837 = load i32, ptr %836, align 4, !tbaa !48
  %838 = zext i32 %837 to i64
  %839 = or i64 %834, %838
  %840 = trunc i64 %839 to i32
  store volatile i32 %840, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  br label %843

841:                                              ; preds = %828
  %842 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %842, ptr %7, align 4, !tbaa !9
  br label %843

843:                                              ; preds = %841, %831
  br label %844

844:                                              ; preds = %843, %808
  %845 = load ptr, ptr %3, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %845, i32 0, i32 0
  %847 = load i64, ptr %846, align 8, !tbaa !11
  %848 = and i64 %847, 65536
  %849 = icmp eq i64 %848, 65536
  br i1 %849, label %850, label %880

850:                                              ; preds = %844
  %851 = load ptr, ptr %3, align 8, !tbaa !5
  %852 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %851, i32 0, i32 5
  %853 = load i32, ptr %852, align 8, !tbaa !49
  switch i32 %853, label %863 [
    i32 0, label %854
    i32 65536, label %859
  ]

854:                                              ; preds = %850
  %855 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !16
  %856 = zext i32 %855 to i64
  %857 = or i64 %856, 131072
  %858 = trunc i64 %857 to i32
  store volatile i32 %858, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !16
  br label %864

859:                                              ; preds = %850
  %860 = load ptr, ptr %3, align 8, !tbaa !5
  %861 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %860, i32 0, i32 1
  %862 = call i32 @RCCEx_PLL2_Config(ptr noundef %861, i32 noundef 2)
  store i32 %862, ptr %6, align 4, !tbaa !9
  br label %864

863:                                              ; preds = %850
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %864

864:                                              ; preds = %863, %859, %854
  %865 = load i32, ptr %6, align 4, !tbaa !9
  %866 = icmp eq i32 %865, 0
  br i1 %866, label %867, label %877

867:                                              ; preds = %864
  %868 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 19), align 4, !tbaa !24
  %869 = zext i32 %868 to i64
  %870 = and i64 %869, -65537
  %871 = load ptr, ptr %3, align 8, !tbaa !5
  %872 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %871, i32 0, i32 5
  %873 = load i32, ptr %872, align 8, !tbaa !49
  %874 = zext i32 %873 to i64
  %875 = or i64 %870, %874
  %876 = trunc i64 %875 to i32
  store volatile i32 %876, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 19), align 4, !tbaa !24
  br label %879

877:                                              ; preds = %864
  %878 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %878, ptr %7, align 4, !tbaa !9
  br label %879

879:                                              ; preds = %877, %867
  br label %880

880:                                              ; preds = %879, %844
  %881 = load ptr, ptr %3, align 8, !tbaa !5
  %882 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %881, i32 0, i32 0
  %883 = load i64, ptr %882, align 8, !tbaa !11
  %884 = and i64 %883, 536870912
  %885 = icmp eq i64 %884, 536870912
  br i1 %885, label %886, label %893

886:                                              ; preds = %880
  %887 = load ptr, ptr %3, align 8, !tbaa !5
  %888 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %887, i32 0, i32 2
  %889 = call i32 @RCCEx_PLL3_Config(ptr noundef %888, i32 noundef 2)
  %890 = icmp ne i32 %889, 0
  br i1 %890, label %891, label %892

891:                                              ; preds = %886
  store i32 1, ptr %7, align 4, !tbaa !9
  br label %892

892:                                              ; preds = %891, %886
  br label %893

893:                                              ; preds = %892, %880
  %894 = load ptr, ptr %3, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %894, i32 0, i32 0
  %896 = load i64, ptr %895, align 8, !tbaa !11
  %897 = and i64 %896, 131072
  %898 = icmp eq i64 %897, 131072
  br i1 %898, label %899, label %925

899:                                              ; preds = %893
  %900 = load ptr, ptr %3, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %900, i32 0, i32 16
  %902 = load i32, ptr %901, align 4, !tbaa !50
  switch i32 %902, label %908 [
    i32 256, label %903
    i32 512, label %909
    i32 768, label %909
    i32 0, label %909
  ]

903:                                              ; preds = %899
  %904 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !16
  %905 = zext i32 %904 to i64
  %906 = or i64 %905, 131072
  %907 = trunc i64 %906 to i32
  store volatile i32 %907, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 11), align 4, !tbaa !16
  br label %909

908:                                              ; preds = %899
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %909

909:                                              ; preds = %908, %903, %899, %899, %899
  %910 = load i32, ptr %6, align 4, !tbaa !9
  %911 = icmp eq i32 %910, 0
  br i1 %911, label %912, label %922

912:                                              ; preds = %909
  %913 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  %914 = zext i32 %913 to i64
  %915 = and i64 %914, -769
  %916 = load ptr, ptr %3, align 8, !tbaa !5
  %917 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %916, i32 0, i32 16
  %918 = load i32, ptr %917, align 4, !tbaa !50
  %919 = zext i32 %918 to i64
  %920 = or i64 %915, %919
  %921 = trunc i64 %920 to i32
  store volatile i32 %921, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  br label %924

922:                                              ; preds = %909
  %923 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %923, ptr %7, align 4, !tbaa !9
  br label %924

924:                                              ; preds = %922, %912
  br label %925

925:                                              ; preds = %924, %893
  %926 = load ptr, ptr %3, align 8, !tbaa !5
  %927 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %926, i32 0, i32 0
  %928 = load i64, ptr %927, align 8, !tbaa !11
  %929 = and i64 %928, 1048576
  %930 = icmp eq i64 %929, 1048576
  br i1 %930, label %931, label %941

931:                                              ; preds = %925
  %932 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 20), align 4, !tbaa !18
  %933 = zext i32 %932 to i64
  %934 = and i64 %933, -2147483649
  %935 = load ptr, ptr %3, align 8, !tbaa !5
  %936 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %935, i32 0, i32 13
  %937 = load i32, ptr %936, align 8, !tbaa !51
  %938 = zext i32 %937 to i64
  %939 = or i64 %934, %938
  %940 = trunc i64 %939 to i32
  store volatile i32 %940, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 20), align 4, !tbaa !18
  br label %941

941:                                              ; preds = %931, %925
  %942 = load ptr, ptr %3, align 8, !tbaa !5
  %943 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %942, i32 0, i32 0
  %944 = load i64, ptr %943, align 8, !tbaa !11
  %945 = and i64 %944, 2097152
  %946 = icmp eq i64 %945, 2097152
  br i1 %946, label %947, label %957

947:                                              ; preds = %941
  %948 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 20), align 4, !tbaa !18
  %949 = zext i32 %948 to i64
  %950 = and i64 %949, -16777217
  %951 = load ptr, ptr %3, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %951, i32 0, i32 11
  %953 = load i32, ptr %952, align 8, !tbaa !52
  %954 = zext i32 %953 to i64
  %955 = or i64 %950, %954
  %956 = trunc i64 %955 to i32
  store volatile i32 %956, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 20), align 4, !tbaa !18
  br label %957

957:                                              ; preds = %947, %941
  %958 = load ptr, ptr %3, align 8, !tbaa !5
  %959 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %958, i32 0, i32 0
  %960 = load i64, ptr %959, align 8, !tbaa !11
  %961 = and i64 %960, 1073741824
  %962 = icmp eq i64 %961, 1073741824
  br i1 %962, label %963, label %976

963:                                              ; preds = %957
  br label %964

964:                                              ; preds = %963
  %965 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 4), align 4, !tbaa !37
  %966 = zext i32 %965 to i64
  %967 = and i64 %966, -32769
  %968 = trunc i64 %967 to i32
  store volatile i32 %968, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 4), align 4, !tbaa !37
  %969 = load ptr, ptr %3, align 8, !tbaa !5
  %970 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %969, i32 0, i32 30
  %971 = load i32, ptr %970, align 4, !tbaa !53
  %972 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 4), align 4, !tbaa !37
  %973 = or i32 %972, %971
  store volatile i32 %973, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 4), align 4, !tbaa !37
  br label %974

974:                                              ; preds = %964
  br label %975

975:                                              ; preds = %974
  br label %976

976:                                              ; preds = %975, %957
  %977 = load ptr, ptr %3, align 8, !tbaa !5
  %978 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %977, i32 0, i32 0
  %979 = load i64, ptr %978, align 8, !tbaa !11
  %980 = and i64 %979, 2147483648
  %981 = icmp eq i64 %980, 2147483648
  br i1 %981, label %982, label %992

982:                                              ; preds = %976
  %983 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 19), align 4, !tbaa !24
  %984 = zext i32 %983 to i64
  %985 = and i64 %984, -805306369
  %986 = load ptr, ptr %3, align 8, !tbaa !5
  %987 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %986, i32 0, i32 6
  %988 = load i32, ptr %987, align 4, !tbaa !54
  %989 = zext i32 %988 to i64
  %990 = or i64 %985, %989
  %991 = trunc i64 %990 to i32
  store volatile i32 %991, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 19), align 4, !tbaa !24
  br label %992

992:                                              ; preds = %982, %976
  %993 = load ptr, ptr %3, align 8, !tbaa !5
  %994 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %993, i32 0, i32 0
  %995 = load i64, ptr %994, align 8, !tbaa !11
  %996 = and i64 %995, 8388608
  %997 = icmp eq i64 %996, 8388608
  br i1 %997, label %998, label %1008

998:                                              ; preds = %992
  %999 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  %1000 = zext i32 %999 to i64
  %1001 = and i64 %1000, -12582913
  %1002 = load ptr, ptr %3, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %1002, i32 0, i32 19
  %1004 = load i32, ptr %1003, align 8, !tbaa !55
  %1005 = zext i32 %1004 to i64
  %1006 = or i64 %1001, %1005
  %1007 = trunc i64 %1006 to i32
  store volatile i32 %1007, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !39
  br label %1008

1008:                                             ; preds = %998, %992
  %1009 = load ptr, ptr %3, align 8, !tbaa !5
  %1010 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %1009, i32 0, i32 0
  %1011 = load i64, ptr %1010, align 8, !tbaa !11
  %1012 = and i64 %1011, 4294967296
  %1013 = icmp eq i64 %1012, 4294967296
  br i1 %1013, label %1014, label %1024

1014:                                             ; preds = %1008
  %1015 = load ptr, ptr %3, align 8, !tbaa !5
  %1016 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %1015, i32 0, i32 1
  %1017 = call i32 @RCCEx_PLL2_Config(ptr noundef %1016, i32 noundef 0)
  store i32 %1017, ptr %6, align 4, !tbaa !9
  %1018 = load i32, ptr %6, align 4, !tbaa !9
  %1019 = icmp eq i32 %1018, 0
  br i1 %1019, label %1020, label %1021

1020:                                             ; preds = %1014
  br label %1023

1021:                                             ; preds = %1014
  %1022 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1022, ptr %7, align 4, !tbaa !9
  br label %1023

1023:                                             ; preds = %1021, %1020
  br label %1024

1024:                                             ; preds = %1023, %1008
  %1025 = load ptr, ptr %3, align 8, !tbaa !5
  %1026 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %1025, i32 0, i32 0
  %1027 = load i64, ptr %1026, align 8, !tbaa !11
  %1028 = and i64 %1027, 8589934592
  %1029 = icmp eq i64 %1028, 8589934592
  br i1 %1029, label %1030, label %1040

1030:                                             ; preds = %1024
  %1031 = load ptr, ptr %3, align 8, !tbaa !5
  %1032 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %1031, i32 0, i32 1
  %1033 = call i32 @RCCEx_PLL2_Config(ptr noundef %1032, i32 noundef 1)
  store i32 %1033, ptr %6, align 4, !tbaa !9
  %1034 = load i32, ptr %6, align 4, !tbaa !9
  %1035 = icmp eq i32 %1034, 0
  br i1 %1035, label %1036, label %1037

1036:                                             ; preds = %1030
  br label %1039

1037:                                             ; preds = %1030
  %1038 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1038, ptr %7, align 4, !tbaa !9
  br label %1039

1039:                                             ; preds = %1037, %1036
  br label %1040

1040:                                             ; preds = %1039, %1024
  %1041 = load ptr, ptr %3, align 8, !tbaa !5
  %1042 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %1041, i32 0, i32 0
  %1043 = load i64, ptr %1042, align 8, !tbaa !11
  %1044 = and i64 %1043, 17179869184
  %1045 = icmp eq i64 %1044, 17179869184
  br i1 %1045, label %1046, label %1056

1046:                                             ; preds = %1040
  %1047 = load ptr, ptr %3, align 8, !tbaa !5
  %1048 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %1047, i32 0, i32 1
  %1049 = call i32 @RCCEx_PLL2_Config(ptr noundef %1048, i32 noundef 2)
  store i32 %1049, ptr %6, align 4, !tbaa !9
  %1050 = load i32, ptr %6, align 4, !tbaa !9
  %1051 = icmp eq i32 %1050, 0
  br i1 %1051, label %1052, label %1053

1052:                                             ; preds = %1046
  br label %1055

1053:                                             ; preds = %1046
  %1054 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1054, ptr %7, align 4, !tbaa !9
  br label %1055

1055:                                             ; preds = %1053, %1052
  br label %1056

1056:                                             ; preds = %1055, %1040
  %1057 = load ptr, ptr %3, align 8, !tbaa !5
  %1058 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %1057, i32 0, i32 0
  %1059 = load i64, ptr %1058, align 8, !tbaa !11
  %1060 = and i64 %1059, 34359738368
  %1061 = icmp eq i64 %1060, 34359738368
  br i1 %1061, label %1062, label %1072

1062:                                             ; preds = %1056
  %1063 = load ptr, ptr %3, align 8, !tbaa !5
  %1064 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %1063, i32 0, i32 2
  %1065 = call i32 @RCCEx_PLL3_Config(ptr noundef %1064, i32 noundef 0)
  store i32 %1065, ptr %6, align 4, !tbaa !9
  %1066 = load i32, ptr %6, align 4, !tbaa !9
  %1067 = icmp eq i32 %1066, 0
  br i1 %1067, label %1068, label %1069

1068:                                             ; preds = %1062
  br label %1071

1069:                                             ; preds = %1062
  %1070 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1070, ptr %7, align 4, !tbaa !9
  br label %1071

1071:                                             ; preds = %1069, %1068
  br label %1072

1072:                                             ; preds = %1071, %1056
  %1073 = load ptr, ptr %3, align 8, !tbaa !5
  %1074 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %1073, i32 0, i32 0
  %1075 = load i64, ptr %1074, align 8, !tbaa !11
  %1076 = and i64 %1075, 68719476736
  %1077 = icmp eq i64 %1076, 68719476736
  br i1 %1077, label %1078, label %1088

1078:                                             ; preds = %1072
  %1079 = load ptr, ptr %3, align 8, !tbaa !5
  %1080 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %1079, i32 0, i32 2
  %1081 = call i32 @RCCEx_PLL3_Config(ptr noundef %1080, i32 noundef 1)
  store i32 %1081, ptr %6, align 4, !tbaa !9
  %1082 = load i32, ptr %6, align 4, !tbaa !9
  %1083 = icmp eq i32 %1082, 0
  br i1 %1083, label %1084, label %1085

1084:                                             ; preds = %1078
  br label %1087

1085:                                             ; preds = %1078
  %1086 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1086, ptr %7, align 4, !tbaa !9
  br label %1087

1087:                                             ; preds = %1085, %1084
  br label %1088

1088:                                             ; preds = %1087, %1072
  %1089 = load ptr, ptr %3, align 8, !tbaa !5
  %1090 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %1089, i32 0, i32 0
  %1091 = load i64, ptr %1090, align 8, !tbaa !11
  %1092 = and i64 %1091, 137438953472
  %1093 = icmp eq i64 %1092, 137438953472
  br i1 %1093, label %1094, label %1104

1094:                                             ; preds = %1088
  %1095 = load ptr, ptr %3, align 8, !tbaa !5
  %1096 = getelementptr inbounds %struct.RCC_PeriphCLKInitTypeDef, ptr %1095, i32 0, i32 2
  %1097 = call i32 @RCCEx_PLL3_Config(ptr noundef %1096, i32 noundef 2)
  store i32 %1097, ptr %6, align 4, !tbaa !9
  %1098 = load i32, ptr %6, align 4, !tbaa !9
  %1099 = icmp eq i32 %1098, 0
  br i1 %1099, label %1100, label %1101

1100:                                             ; preds = %1094
  br label %1103

1101:                                             ; preds = %1094
  %1102 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %1102, ptr %7, align 4, !tbaa !9
  br label %1103

1103:                                             ; preds = %1101, %1100
  br label %1104

1104:                                             ; preds = %1103, %1088
  %1105 = load i32, ptr %7, align 4, !tbaa !9
  %1106 = icmp eq i32 %1105, 0
  br i1 %1106, label %1107, label %1108

1107:                                             ; preds = %1104
  store i32 0, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %1109

1108:                                             ; preds = %1104
  store i32 1, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %1109

1109:                                             ; preds = %1108, %1107
  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
  %1110 = load i32, ptr %2, align 4
  ret i32 %1110
}

; 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, !13, i64 0}
!12 = !{!"", !13, i64 0, !14, i64 8, !14, i64 40, !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}
!13 = !{!"long", !7, i64 0}
!14 = !{!"", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!15 = !{!12, !10, i64 100}
!16 = !{!17, !10, i64 44}
!17 = !{!"", !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}
!18 = !{!17, !10, i64 80}
!19 = !{!12, !10, i64 88}
!20 = !{!12, !10, i64 164}
!21 = !{!17, !10, i64 88}
!22 = !{!12, !10, i64 168}
!23 = !{!12, !10, i64 76}
!24 = !{!17, !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 72}
!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 = !{!17, !10, i64 112}
!35 = !{!12, !10, i64 176}
!36 = distinct !{!36, !33}
!37 = !{!17, !10, i64 16}
!38 = !{!12, !10, i64 120}
!39 = !{!17, !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 80}
!50 = !{!12, !10, i64 124}
!51 = !{!12, !10, i64 112}
!52 = !{!12, !10, i64 104}
!53 = !{!12, !10, i64 180}
!54 = !{!12, !10, i64 84}
!55 = !{!12, !10, i64 136}


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

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

4:                                                ; preds = %1
  %5 = getelementptr inbounds i8, ptr %0, i64 100
  %6 = load i32, ptr %5, align 4, !tbaa !12
  %7 = tail call i32 @llvm.fshl.i32(i32 %6, i32 %6, i32 12)
  switch i32 %7, label %.thread278 [
    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 !13
  %10 = or i32 %9, 131072
  store volatile i32 %10, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !13
  br label %.thread

11:                                               ; preds = %4
  %12 = getelementptr inbounds i8, ptr %0, i64 8
  %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 40
  %16 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %15, i32 noundef 2)
  br label %17

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

..thread_crit_edge:                               ; preds = %17
  %.pre = load i32, ptr %5, align 4, !tbaa !12
  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 !15
  %21 = and i32 %20, -3145729
  %22 = or i32 %21, %19
  store volatile i32 %22, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !15
  br label %.thread278

.thread278:                                       ; preds = %4, %17, %.thread, %1
  %.0 = phi i32 [ 0, %.thread ], [ 0, %1 ], [ %.0191, %17 ], [ 1, %4 ]
  %23 = load i64, ptr %0, align 8, !tbaa !5
  %24 = and i64 %23, 256
  %.not230 = icmp eq i64 %24, 0
  br i1 %.not230, label %.thread280, label %25

25:                                               ; preds = %.thread278
  %26 = getelementptr inbounds i8, ptr %0, i64 88
  %27 = load i32, ptr %26, align 8, !tbaa !16
  switch i32 %27, label %.thread280 [
    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 !13
  %30 = or i32 %29, 131072
  store volatile i32 %30, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !13
  br label %37

31:                                               ; preds = %25
  %32 = getelementptr inbounds i8, ptr %0, i64 8
  %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 40
  %36 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %35, i32 noundef 0)
  br label %37

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

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

.thread280:                                       ; preds = %25, %37, %39, %.thread278
  %.3194 = phi i32 [ 0, %39 ], [ %.0, %.thread278 ], [ %.2193, %37 ], [ 1, %25 ]
  %.1 = phi i32 [ %.0, %39 ], [ %.0, %.thread278 ], [ %.2193, %37 ], [ 1, %25 ]
  %44 = load i64, ptr %0, align 8, !tbaa !5
  %45 = and i64 %44, 1024
  %.not231 = icmp eq i64 %45, 0
  br i1 %.not231, label %.thread282, label %46

46:                                               ; preds = %.thread280
  %47 = getelementptr inbounds i8, ptr %0, i64 164
  %48 = load i32, ptr %47, align 4, !tbaa !17
  %49 = tail call i32 @llvm.fshl.i32(i32 %48, i32 %48, i32 11)
  switch i32 %49, label %.thread282 [
    i32 0, label %50
    i32 1, label %53
    i32 2, label %56
    i32 3, label %59
    i32 4, label %59
    i32 5, label %59
  ]

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

53:                                               ; preds = %46
  %54 = getelementptr inbounds i8, ptr %0, i64 8
  %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 40
  %58 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %57, i32 noundef 0)
  br label %59

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

61:                                               ; preds = %59
  %62 = load volatile i32, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  %63 = and i32 %62, -14680065
  %64 = load i32, ptr %47, align 4, !tbaa !17
  %65 = or i32 %63, %64
  store volatile i32 %65, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  br label %.thread282

.thread282:                                       ; preds = %46, %59, %61, %.thread280
  %.5196 = phi i32 [ 0, %61 ], [ %.3194, %.thread280 ], [ %.4195, %59 ], [ 1, %46 ]
  %.2 = phi i32 [ %.1, %61 ], [ %.1, %.thread280 ], [ %.4195, %59 ], [ 1, %46 ]
  %66 = load i64, ptr %0, align 8, !tbaa !5
  %67 = and i64 %66, 2048
  %.not232 = icmp eq i64 %67, 0
  br i1 %.not232, label %.thread284, label %68

68:                                               ; preds = %.thread282
  %69 = getelementptr inbounds i8, ptr %0, i64 168
  %70 = load i32, ptr %69, align 8, !tbaa !19
  %71 = tail call i32 @llvm.fshl.i32(i32 %70, i32 %70, i32 8)
  switch i32 %71, label %.thread284 [
    i32 0, label %72
    i32 1, label %75
    i32 2, label %78
    i32 3, label %81
    i32 4, label %81
    i32 5, label %81
  ]

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

75:                                               ; preds = %68
  %76 = getelementptr inbounds i8, ptr %0, i64 8
  %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 40
  %80 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %79, i32 noundef 0)
  br label %81

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

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

.thread284:                                       ; preds = %68, %81, %83, %.thread282
  %.7198 = phi i32 [ 0, %83 ], [ %.5196, %.thread282 ], [ %.6197, %81 ], [ 1, %68 ]
  %.3 = phi i32 [ %.2, %83 ], [ %.2, %.thread282 ], [ %.6197, %81 ], [ 1, %68 ]
  %88 = load i64, ptr %0, align 8, !tbaa !5
  %89 = and i64 %88, 33554432
  %.not233 = icmp eq i64 %89, 0
  br i1 %.not233, label %.thread286, label %90

90:                                               ; preds = %.thread284
  %91 = getelementptr inbounds i8, ptr %0, i64 76
  %92 = load i32, ptr %91, align 4, !tbaa !20
  %93 = tail call i32 @llvm.fshl.i32(i32 %92, i32 %92, i32 28)
  switch i32 %93, label %.thread286 [
    i32 1, label %94
    i32 2, label %97
    i32 3, label %100
    i32 0, label %100
  ]

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

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

100:                                              ; preds = %97, %94, %90, %90
  %.8199 = phi i32 [ %.7198, %90 ], [ %.7198, %90 ], [ %99, %97 ], [ %.7198, %94 ]
  %101 = icmp eq i32 %.8199, 0
  br i1 %101, label %102, label %.thread286

102:                                              ; preds = %100
  %103 = load volatile i32, ptr inttoptr (i64 1476543564 to ptr), align 4, !tbaa !21
  %104 = and i32 %103, -49
  %105 = load i32, ptr %91, align 4, !tbaa !20
  %106 = or i32 %104, %105
  store volatile i32 %106, ptr inttoptr (i64 1476543564 to ptr), align 4, !tbaa !21
  br label %.thread286

.thread286:                                       ; preds = %90, %100, %102, %.thread284
  %.9200 = phi i32 [ 0, %102 ], [ %.7198, %.thread284 ], [ %.8199, %100 ], [ 1, %90 ]
  %.4 = phi i32 [ %.3, %102 ], [ %.3, %.thread284 ], [ %.8199, %100 ], [ 1, %90 ]
  %107 = load i64, ptr %0, align 8, !tbaa !5
  %108 = and i64 %107, 4096
  %.not234 = icmp eq i64 %108, 0
  br i1 %.not234, label %.thread288, label %109

109:                                              ; preds = %.thread286
  %110 = getelementptr inbounds i8, ptr %0, i64 92
  %111 = load i32, ptr %110, align 4, !tbaa !22
  %112 = tail call i32 @llvm.fshl.i32(i32 %111, i32 %111, i32 20)
  switch i32 %112, label %.thread288 [
    i32 0, label %113
    i32 1, label %116
    i32 2, label %119
    i32 3, label %122
    i32 4, label %122
  ]

113:                                              ; preds = %109
  %114 = load volatile i32, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !13
  %115 = or i32 %114, 131072
  store volatile i32 %115, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !13
  br label %122

116:                                              ; preds = %109
  %117 = getelementptr inbounds i8, ptr %0, i64 8
  %118 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %117, i32 noundef 0)
  br label %122

119:                                              ; preds = %109
  %120 = getelementptr inbounds i8, ptr %0, i64 40
  %121 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %120, i32 noundef 0)
  br label %122

122:                                              ; preds = %119, %116, %113, %109, %109
  %.10201 = phi i32 [ %.9200, %109 ], [ %.9200, %109 ], [ %121, %119 ], [ %118, %116 ], [ %.9200, %113 ]
  %123 = icmp eq i32 %.10201, 0
  br i1 %123, label %124, label %.thread288

124:                                              ; preds = %122
  %125 = load volatile i32, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !15
  %126 = and i32 %125, -28673
  %127 = load i32, ptr %110, align 4, !tbaa !22
  %128 = or i32 %126, %127
  store volatile i32 %128, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !15
  br label %.thread288

.thread288:                                       ; preds = %109, %122, %124, %.thread286
  %.11202 = phi i32 [ 0, %124 ], [ %.9200, %.thread286 ], [ %.10201, %122 ], [ 1, %109 ]
  %.5 = phi i32 [ %.4, %124 ], [ %.4, %.thread286 ], [ %.10201, %122 ], [ 1, %109 ]
  %129 = load i64, ptr %0, align 8, !tbaa !5
  %130 = and i64 %129, 8192
  %.not235 = icmp eq i64 %130, 0
  br i1 %.not235, label %.thread290, label %131

131:                                              ; preds = %.thread288
  %132 = getelementptr inbounds i8, ptr %0, i64 96
  %133 = load i32, ptr %132, align 8, !tbaa !23
  %134 = tail call i32 @llvm.fshl.i32(i32 %133, i32 %133, i32 16)
  switch i32 %134, label %.thread290 [
    i32 0, label %141
    i32 1, label %135
    i32 2, label %138
    i32 3, label %141
    i32 4, label %141
    i32 5, label %141
  ]

135:                                              ; preds = %131
  %136 = getelementptr inbounds i8, ptr %0, i64 8
  %137 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %136, i32 noundef 1)
  br label %141

138:                                              ; preds = %131
  %139 = getelementptr inbounds i8, ptr %0, i64 40
  %140 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %139, i32 noundef 1)
  br label %141

141:                                              ; preds = %138, %135, %131, %131, %131, %131
  %.12203 = phi i32 [ %140, %138 ], [ %137, %135 ], [ %.11202, %131 ], [ %.11202, %131 ], [ %.11202, %131 ], [ %.11202, %131 ]
  %142 = icmp eq i32 %.12203, 0
  br i1 %142, label %143, label %.thread290

143:                                              ; preds = %141
  %144 = load volatile i32, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !15
  %145 = and i32 %144, -458753
  %146 = load i32, ptr %132, align 8, !tbaa !23
  %147 = or i32 %145, %146
  store volatile i32 %147, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !15
  br label %.thread290

.thread290:                                       ; preds = %131, %141, %143, %.thread288
  %.13204 = phi i32 [ 0, %143 ], [ %.11202, %.thread288 ], [ %.12203, %141 ], [ 1, %131 ]
  %.6 = phi i32 [ %.5, %143 ], [ %.5, %.thread288 ], [ %.12203, %141 ], [ 1, %131 ]
  %148 = load i64, ptr %0, align 8, !tbaa !5
  %149 = and i64 %148, 16384
  %.not236 = icmp eq i64 %149, 0
  br i1 %.not236, label %.thread292, label %150

150:                                              ; preds = %.thread290
  %151 = getelementptr inbounds i8, ptr %0, i64 172
  %152 = load i32, ptr %151, align 4, !tbaa !24
  %153 = tail call i32 @llvm.fshl.i32(i32 %152, i32 %152, i32 4)
  switch i32 %153, label %.thread292 [
    i32 0, label %160
    i32 1, label %154
    i32 2, label %157
    i32 3, label %160
    i32 4, label %160
    i32 5, label %160
  ]

154:                                              ; preds = %150
  %155 = getelementptr inbounds i8, ptr %0, i64 8
  %156 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %155, i32 noundef 1)
  br label %160

157:                                              ; preds = %150
  %158 = getelementptr inbounds i8, ptr %0, i64 40
  %159 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %158, i32 noundef 1)
  br label %160

160:                                              ; preds = %157, %154, %150, %150, %150, %150
  %.14205 = phi i32 [ %159, %157 ], [ %156, %154 ], [ %.13204, %150 ], [ %.13204, %150 ], [ %.13204, %150 ], [ %.13204, %150 ]
  %161 = icmp eq i32 %.14205, 0
  br i1 %161, label %162, label %.thread292

162:                                              ; preds = %160
  %163 = load volatile i32, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  %164 = and i32 %163, -1879048193
  %165 = load i32, ptr %151, align 4, !tbaa !24
  %166 = or i32 %164, %165
  store volatile i32 %166, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  br label %.thread292

.thread292:                                       ; preds = %150, %160, %162, %.thread290
  %.15206 = phi i32 [ 0, %162 ], [ %.13204, %.thread290 ], [ %.14205, %160 ], [ 1, %150 ]
  %.7 = phi i32 [ %.6, %162 ], [ %.6, %.thread290 ], [ %.14205, %160 ], [ 1, %150 ]
  %167 = load i64, ptr %0, align 8, !tbaa !5
  %168 = and i64 %167, 32768
  %.not237 = icmp eq i64 %168, 0
  br i1 %.not237, label %.thread294, label %169

169:                                              ; preds = %.thread292
  %170 = getelementptr inbounds i8, ptr %0, i64 108
  %171 = load i32, ptr %170, align 4, !tbaa !25
  switch i32 %171, label %.thread294 [
    i32 268435456, label %172
    i32 536870912, label %175
    i32 0, label %178
  ]

172:                                              ; preds = %169
  %173 = load volatile i32, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !13
  %174 = or i32 %173, 131072
  store volatile i32 %174, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !13
  br label %178

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

178:                                              ; preds = %175, %172, %169
  %.16207 = phi i32 [ %.15206, %169 ], [ %177, %175 ], [ %.15206, %172 ]
  %179 = icmp eq i32 %.16207, 0
  br i1 %179, label %180, label %.thread294

180:                                              ; preds = %178
  %181 = load volatile i32, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !15
  %182 = and i32 %181, -805306369
  %183 = load i32, ptr %170, align 4, !tbaa !25
  %184 = or i32 %182, %183
  store volatile i32 %184, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !15
  br label %.thread294

.thread294:                                       ; preds = %169, %178, %180, %.thread292
  %.17208 = phi i32 [ 0, %180 ], [ %.15206, %.thread292 ], [ %.16207, %178 ], [ 1, %169 ]
  %.8 = phi i32 [ %.7, %180 ], [ %.7, %.thread292 ], [ %.16207, %178 ], [ 1, %169 ]
  %185 = load i64, ptr %0, align 8, !tbaa !5
  %186 = and i64 %185, 16777216
  %.not238 = icmp eq i64 %186, 0
  br i1 %.not238, label %.thread296, label %187

187:                                              ; preds = %.thread294
  %188 = getelementptr inbounds i8, ptr %0, i64 72
  %189 = load i32, ptr %188, align 8, !tbaa !26
  switch i32 %189, label %.thread296 [
    i32 1, label %190
    i32 2, label %193
    i32 3, label %196
    i32 0, label %196
  ]

190:                                              ; preds = %187
  %191 = load volatile i32, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !13
  %192 = or i32 %191, 131072
  store volatile i32 %192, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !13
  br label %196

193:                                              ; preds = %187
  %194 = getelementptr inbounds i8, ptr %0, i64 8
  %195 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %194, i32 noundef 2)
  br label %196

196:                                              ; preds = %193, %190, %187, %187
  %.18209 = phi i32 [ %.17208, %187 ], [ %.17208, %187 ], [ %195, %193 ], [ %.17208, %190 ]
  %197 = icmp eq i32 %.18209, 0
  br i1 %197, label %198, label %.thread296

198:                                              ; preds = %196
  %199 = load volatile i32, ptr inttoptr (i64 1476543564 to ptr), align 4, !tbaa !21
  %200 = and i32 %199, -4
  %201 = load i32, ptr %188, align 8, !tbaa !26
  %202 = or i32 %200, %201
  store volatile i32 %202, ptr inttoptr (i64 1476543564 to ptr), align 4, !tbaa !21
  br label %.thread296

.thread296:                                       ; preds = %187, %196, %198, %.thread294
  %.19210 = phi i32 [ 0, %198 ], [ %.17208, %.thread294 ], [ %.18209, %196 ], [ 1, %187 ]
  %.9 = phi i32 [ %.8, %198 ], [ %.8, %.thread294 ], [ %.18209, %196 ], [ 1, %187 ]
  %203 = load i64, ptr %0, align 8, !tbaa !5
  %204 = and i64 %203, 4194304
  %.not239 = icmp eq i64 %204, 0
  br i1 %.not239, label %.thread298, label %205

205:                                              ; preds = %.thread296
  %206 = load volatile i32, ptr inttoptr (i64 1476544512 to ptr), align 2048, !tbaa !27
  %207 = or i32 %206, 256
  store volatile i32 %207, ptr inttoptr (i64 1476544512 to ptr), align 2048, !tbaa !27
  %208 = tail call i32 @HAL_GetTick() #3
  br label %209

209:                                              ; preds = %213, %205
  %210 = load volatile i32, ptr inttoptr (i64 1476544512 to ptr), align 2048, !tbaa !27
  %211 = and i32 %210, 256
  %212 = icmp eq i32 %211, 0
  br i1 %212, label %213, label %217

213:                                              ; preds = %209
  %214 = tail call i32 @HAL_GetTick() #3
  %215 = sub i32 %214, %208
  %216 = icmp ugt i32 %215, 100
  br i1 %216, label %.thread298, label %209, !llvm.loop !29

217:                                              ; preds = %209
  %218 = icmp eq i32 %.19210, 0
  br i1 %218, label %219, label %.thread298

219:                                              ; preds = %217
  %220 = load volatile i32, ptr inttoptr (i64 1476543600 to ptr), align 16, !tbaa !31
  %221 = getelementptr inbounds i8, ptr %0, i64 176
  %222 = load i32, ptr %221, align 8, !tbaa !32
  %223 = xor i32 %222, %220
  %224 = and i32 %223, 768
  %.not240 = icmp eq i32 %224, 0
  br i1 %.not240, label %232, label %225

225:                                              ; preds = %219
  %226 = load volatile i32, ptr inttoptr (i64 1476543600 to ptr), align 16, !tbaa !31
  %227 = and i32 %226, -769
  %228 = load volatile i32, ptr inttoptr (i64 1476543600 to ptr), align 16, !tbaa !31
  %229 = or i32 %228, 65536
  store volatile i32 %229, ptr inttoptr (i64 1476543600 to ptr), align 16, !tbaa !31
  %230 = load volatile i32, ptr inttoptr (i64 1476543600 to ptr), align 16, !tbaa !31
  %231 = and i32 %230, -65537
  store volatile i32 %231, ptr inttoptr (i64 1476543600 to ptr), align 16, !tbaa !31
  store volatile i32 %227, ptr inttoptr (i64 1476543600 to ptr), align 16, !tbaa !31
  br label %232

232:                                              ; preds = %225, %219
  %233 = icmp eq i32 %222, 256
  br i1 %233, label %234, label %.loopexit

234:                                              ; preds = %232
  %235 = tail call i32 @HAL_GetTick() #3
  br label %236

236:                                              ; preds = %240, %234
  %237 = load volatile i32, ptr inttoptr (i64 1476543600 to ptr), align 16, !tbaa !31
  %238 = and i32 %237, 2
  %239 = icmp eq i32 %238, 0
  br i1 %239, label %240, label %.loopexit.loopexit

240:                                              ; preds = %236
  %241 = tail call i32 @HAL_GetTick() #3
  %242 = sub i32 %241, %235
  %243 = icmp ugt i32 %242, 5000
  br i1 %243, label %.thread298, label %236, !llvm.loop !33

.loopexit.loopexit:                               ; preds = %236
  %.pre325 = load i32, ptr %221, align 8, !tbaa !32
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %232
  %244 = phi i32 [ %.pre325, %.loopexit.loopexit ], [ %222, %232 ]
  %245 = and i32 %244, 768
  %246 = icmp eq i32 %245, 768
  %247 = load volatile i32, ptr inttoptr (i64 1476543504 to ptr), align 16, !tbaa !34
  %248 = and i32 %247, -16129
  %249 = lshr i32 %244, 4
  %250 = and i32 %249, 16777167
  %251 = select i1 %246, i32 %250, i32 0
  %.sink = or i32 %248, %251
  store volatile i32 %.sink, ptr inttoptr (i64 1476543504 to ptr), align 16, !tbaa !34
  %252 = and i32 %244, 4095
  %253 = load volatile i32, ptr inttoptr (i64 1476543600 to ptr), align 16, !tbaa !31
  %254 = or i32 %253, %252
  store volatile i32 %254, ptr inttoptr (i64 1476543600 to ptr), align 16, !tbaa !31
  br label %.thread298

.thread298:                                       ; preds = %213, %240, %217, %.loopexit, %.thread296
  %.22213 = phi i32 [ 0, %.loopexit ], [ %.19210, %.thread296 ], [ %.19210, %217 ], [ 3, %240 ], [ 3, %213 ]
  %.10 = phi i32 [ %.9, %.loopexit ], [ %.9, %.thread296 ], [ %.19210, %217 ], [ 3, %240 ], [ 3, %213 ]
  %255 = load i64, ptr %0, align 8, !tbaa !5
  %256 = and i64 %255, 1
  %.not242 = icmp eq i64 %256, 0
  br i1 %.not242, label %.thread303, label %257

257:                                              ; preds = %.thread298
  %258 = getelementptr inbounds i8, ptr %0, i64 120
  %259 = load i32, ptr %258, align 8, !tbaa !35
  %260 = tail call i32 @llvm.fshl.i32(i32 %259, i32 %259, i32 29)
  switch i32 %260, label %.thread303 [
    i32 0, label %267
    i32 1, label %261
    i32 2, label %264
    i32 3, label %267
    i32 4, label %267
    i32 5, label %267
  ]

261:                                              ; preds = %257
  %262 = getelementptr inbounds i8, ptr %0, i64 8
  %263 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %262, i32 noundef 1)
  br label %267

264:                                              ; preds = %257
  %265 = getelementptr inbounds i8, ptr %0, i64 40
  %266 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %265, i32 noundef 1)
  br label %267

267:                                              ; preds = %264, %261, %257, %257, %257, %257
  %.23214 = phi i32 [ %266, %264 ], [ %263, %261 ], [ %.22213, %257 ], [ %.22213, %257 ], [ %.22213, %257 ], [ %.22213, %257 ]
  %268 = icmp eq i32 %.23214, 0
  br i1 %268, label %269, label %.thread303

269:                                              ; preds = %267
  %270 = load volatile i32, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  %271 = and i32 %270, -57
  %272 = load i32, ptr %258, align 8, !tbaa !35
  %273 = or i32 %271, %272
  store volatile i32 %273, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  br label %.thread303

.thread303:                                       ; preds = %257, %267, %269, %.thread298
  %.24215 = phi i32 [ 0, %269 ], [ %.22213, %.thread298 ], [ %.23214, %267 ], [ 1, %257 ]
  %.11 = phi i32 [ %.10, %269 ], [ %.10, %.thread298 ], [ %.23214, %267 ], [ 1, %257 ]
  %274 = load i64, ptr %0, align 8, !tbaa !5
  %275 = and i64 %274, 2
  %.not243 = icmp eq i64 %275, 0
  br i1 %.not243, label %.thread305, label %276

276:                                              ; preds = %.thread303
  %277 = getelementptr inbounds i8, ptr %0, i64 116
  %278 = load i32, ptr %277, align 4, !tbaa !37
  switch i32 %278, label %.thread305 [
    i32 0, label %285
    i32 1, label %279
    i32 2, label %282
    i32 3, label %285
    i32 4, label %285
    i32 5, label %285
  ]

279:                                              ; preds = %276
  %280 = getelementptr inbounds i8, ptr %0, i64 8
  %281 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %280, i32 noundef 1)
  br label %285

282:                                              ; preds = %276
  %283 = getelementptr inbounds i8, ptr %0, i64 40
  %284 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %283, i32 noundef 1)
  br label %285

285:                                              ; preds = %282, %279, %276, %276, %276, %276
  %.25216 = phi i32 [ %284, %282 ], [ %281, %279 ], [ %.24215, %276 ], [ %.24215, %276 ], [ %.24215, %276 ], [ %.24215, %276 ]
  %286 = icmp eq i32 %.25216, 0
  br i1 %286, label %287, label %.thread305

287:                                              ; preds = %285
  %288 = load volatile i32, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  %289 = and i32 %288, -8
  %290 = load i32, ptr %277, align 4, !tbaa !37
  %291 = or i32 %289, %290
  store volatile i32 %291, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  br label %.thread305

.thread305:                                       ; preds = %276, %285, %287, %.thread303
  %.26217 = phi i32 [ 0, %287 ], [ %.24215, %.thread303 ], [ %.25216, %285 ], [ 1, %276 ]
  %.12 = phi i32 [ %.11, %287 ], [ %.11, %.thread303 ], [ %.25216, %285 ], [ 1, %276 ]
  %292 = load i64, ptr %0, align 8, !tbaa !5
  %293 = and i64 %292, 4
  %.not244 = icmp eq i64 %293, 0
  br i1 %.not244, label %.thread307, label %294

294:                                              ; preds = %.thread305
  %295 = getelementptr inbounds i8, ptr %0, i64 144
  %296 = load i32, ptr %295, align 8, !tbaa !38
  switch i32 %296, label %.thread307 [
    i32 0, label %303
    i32 1, label %297
    i32 2, label %300
    i32 3, label %303
    i32 4, label %303
    i32 5, label %303
  ]

297:                                              ; preds = %294
  %298 = getelementptr inbounds i8, ptr %0, i64 8
  %299 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %298, i32 noundef 1)
  br label %303

300:                                              ; preds = %294
  %301 = getelementptr inbounds i8, ptr %0, i64 40
  %302 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %301, i32 noundef 1)
  br label %303

303:                                              ; preds = %300, %297, %294, %294, %294, %294
  %.27218 = phi i32 [ %302, %300 ], [ %299, %297 ], [ %.26217, %294 ], [ %.26217, %294 ], [ %.26217, %294 ], [ %.26217, %294 ]
  %304 = icmp eq i32 %.27218, 0
  br i1 %304, label %305, label %.thread307

305:                                              ; preds = %303
  %306 = load volatile i32, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  %307 = and i32 %306, -8
  %308 = load i32, ptr %295, align 8, !tbaa !38
  %309 = or i32 %307, %308
  store volatile i32 %309, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  br label %.thread307

.thread307:                                       ; preds = %294, %303, %305, %.thread305
  %.28219 = phi i32 [ 0, %305 ], [ %.26217, %.thread305 ], [ %.27218, %303 ], [ 1, %294 ]
  %.13 = phi i32 [ %.12, %305 ], [ %.12, %.thread305 ], [ %.27218, %303 ], [ 1, %294 ]
  %310 = load i64, ptr %0, align 8, !tbaa !5
  %311 = and i64 %310, 32
  %.not245 = icmp eq i64 %311, 0
  br i1 %.not245, label %.thread309, label %312

312:                                              ; preds = %.thread307
  %313 = getelementptr inbounds i8, ptr %0, i64 140
  %314 = load i32, ptr %313, align 4, !tbaa !39
  %315 = tail call i32 @llvm.fshl.i32(i32 %314, i32 %314, i32 4)
  switch i32 %315, label %.thread309 [
    i32 0, label %322
    i32 1, label %316
    i32 2, label %319
    i32 3, label %322
    i32 4, label %322
    i32 5, label %322
  ]

316:                                              ; preds = %312
  %317 = getelementptr inbounds i8, ptr %0, i64 8
  %318 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %317, i32 noundef 0)
  br label %322

319:                                              ; preds = %312
  %320 = getelementptr inbounds i8, ptr %0, i64 40
  %321 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %320, i32 noundef 2)
  br label %322

322:                                              ; preds = %319, %316, %312, %312, %312, %312
  %.29220 = phi i32 [ %321, %319 ], [ %318, %316 ], [ %.28219, %312 ], [ %.28219, %312 ], [ %.28219, %312 ], [ %.28219, %312 ]
  %323 = icmp eq i32 %.29220, 0
  br i1 %323, label %324, label %.thread309

324:                                              ; preds = %322
  %325 = load volatile i32, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  %326 = and i32 %325, -1879048193
  %327 = load i32, ptr %313, align 4, !tbaa !39
  %328 = or i32 %326, %327
  store volatile i32 %328, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  br label %.thread309

.thread309:                                       ; preds = %312, %322, %324, %.thread307
  %.30221 = phi i32 [ 0, %324 ], [ %.28219, %.thread307 ], [ %.29220, %322 ], [ 1, %312 ]
  %.14 = phi i32 [ %.13, %324 ], [ %.13, %.thread307 ], [ %.29220, %322 ], [ 1, %312 ]
  %329 = load i64, ptr %0, align 8, !tbaa !5
  %330 = and i64 %329, 64
  %.not246 = icmp eq i64 %330, 0
  br i1 %.not246, label %.thread311, label %331

331:                                              ; preds = %.thread309
  %332 = getelementptr inbounds i8, ptr %0, i64 152
  %333 = load i32, ptr %332, align 8, !tbaa !40
  %334 = tail call i32 @llvm.fshl.i32(i32 %333, i32 %333, i32 22)
  switch i32 %334, label %.thread311 [
    i32 0, label %341
    i32 1, label %335
    i32 2, label %338
    i32 3, label %341
    i32 4, label %341
    i32 5, label %341
  ]

335:                                              ; preds = %331
  %336 = getelementptr inbounds i8, ptr %0, i64 8
  %337 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %336, i32 noundef 0)
  br label %341

338:                                              ; preds = %331
  %339 = getelementptr inbounds i8, ptr %0, i64 40
  %340 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %339, i32 noundef 2)
  br label %341

341:                                              ; preds = %338, %335, %331, %331, %331, %331
  %.31222 = phi i32 [ %340, %338 ], [ %337, %335 ], [ %.30221, %331 ], [ %.30221, %331 ], [ %.30221, %331 ], [ %.30221, %331 ]
  %342 = icmp eq i32 %.31222, 0
  br i1 %342, label %343, label %.thread311

343:                                              ; preds = %341
  %344 = load volatile i32, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  %345 = and i32 %344, -7169
  %346 = load i32, ptr %332, align 8, !tbaa !40
  %347 = or i32 %345, %346
  store volatile i32 %347, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  br label %.thread311

.thread311:                                       ; preds = %331, %341, %343, %.thread309
  %.32 = phi i32 [ 0, %343 ], [ %.30221, %.thread309 ], [ %.31222, %341 ], [ 1, %331 ]
  %.15 = phi i32 [ %.14, %343 ], [ %.14, %.thread309 ], [ %.31222, %341 ], [ 1, %331 ]
  %348 = load i64, ptr %0, align 8, !tbaa !5
  %349 = and i64 %348, 128
  %.not247 = icmp eq i64 %349, 0
  br i1 %.not247, label %.thread313, label %350

350:                                              ; preds = %.thread311
  %351 = getelementptr inbounds i8, ptr %0, i64 156
  %352 = load i32, ptr %351, align 4, !tbaa !41
  %353 = tail call i32 @llvm.fshl.i32(i32 %352, i32 %352, i32 19)
  switch i32 %353, label %.thread313 [
    i32 0, label %360
    i32 1, label %354
    i32 2, label %357
    i32 3, label %360
    i32 4, label %360
    i32 5, label %360
  ]

354:                                              ; preds = %350
  %355 = getelementptr inbounds i8, ptr %0, i64 8
  %356 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %355, i32 noundef 0)
  br label %360

357:                                              ; preds = %350
  %358 = getelementptr inbounds i8, ptr %0, i64 40
  %359 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %358, i32 noundef 2)
  br label %360

360:                                              ; preds = %357, %354, %350, %350, %350, %350
  %.33 = phi i32 [ %359, %357 ], [ %356, %354 ], [ %.32, %350 ], [ %.32, %350 ], [ %.32, %350 ], [ %.32, %350 ]
  %361 = icmp eq i32 %.33, 0
  br i1 %361, label %362, label %.thread313

362:                                              ; preds = %360
  %363 = load volatile i32, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  %364 = and i32 %363, -57345
  %365 = load i32, ptr %351, align 4, !tbaa !41
  %366 = or i32 %364, %365
  store volatile i32 %366, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  br label %.thread313

.thread313:                                       ; preds = %350, %360, %362, %.thread311
  %.34 = phi i32 [ 0, %362 ], [ %.32, %.thread311 ], [ %.33, %360 ], [ 1, %350 ]
  %.16 = phi i32 [ %.15, %362 ], [ %.15, %.thread311 ], [ %.33, %360 ], [ 1, %350 ]
  %367 = load i64, ptr %0, align 8, !tbaa !5
  %368 = and i64 %367, 8
  %.not248 = icmp eq i64 %368, 0
  br i1 %.not248, label %381, label %369

369:                                              ; preds = %.thread313
  %370 = getelementptr inbounds i8, ptr %0, i64 128
  %371 = load i32, ptr %370, align 8, !tbaa !42
  %372 = icmp eq i32 %371, 4096
  br i1 %372, label %373, label %376

373:                                              ; preds = %369
  %374 = getelementptr inbounds i8, ptr %0, i64 40
  %375 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %374, i32 noundef 2)
  %.not249 = icmp eq i32 %375, 0
  %spec.select = select i1 %.not249, i32 %.16, i32 1
  %.pre326 = load i32, ptr %370, align 8, !tbaa !42
  br label %376

376:                                              ; preds = %373, %369
  %377 = phi i32 [ %371, %369 ], [ %.pre326, %373 ]
  %.17 = phi i32 [ %.16, %369 ], [ %spec.select, %373 ]
  %378 = load volatile i32, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  %379 = and i32 %378, -12289
  %380 = or i32 %379, %377
  store volatile i32 %380, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  %.pre327 = load i64, ptr %0, align 8, !tbaa !5
  br label %381

381:                                              ; preds = %376, %.thread313
  %382 = phi i64 [ %.pre327, %376 ], [ %367, %.thread313 ]
  %.18 = phi i32 [ %.17, %376 ], [ %.16, %.thread313 ]
  %383 = and i64 %382, 16
  %.not250 = icmp eq i64 %383, 0
  br i1 %.not250, label %396, label %384

384:                                              ; preds = %381
  %385 = getelementptr inbounds i8, ptr %0, i64 148
  %386 = load i32, ptr %385, align 4, !tbaa !43
  %387 = icmp eq i32 %386, 256
  br i1 %387, label %388, label %391

388:                                              ; preds = %384
  %389 = getelementptr inbounds i8, ptr %0, i64 40
  %390 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %389, i32 noundef 2)
  %.not251 = icmp eq i32 %390, 0
  %spec.select269 = select i1 %.not251, i32 %.18, i32 1
  %.pre328 = load i32, ptr %385, align 4, !tbaa !43
  br label %391

391:                                              ; preds = %388, %384
  %392 = phi i32 [ %386, %384 ], [ %.pre328, %388 ]
  %.19 = phi i32 [ %.18, %384 ], [ %spec.select269, %388 ]
  %393 = load volatile i32, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  %394 = and i32 %393, -769
  %395 = or i32 %394, %392
  store volatile i32 %395, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  %.pre329 = load i64, ptr %0, align 8, !tbaa !5
  br label %396

396:                                              ; preds = %391, %381
  %397 = phi i64 [ %.pre329, %391 ], [ %382, %381 ]
  %.20 = phi i32 [ %.19, %391 ], [ %.18, %381 ]
  %398 = and i64 %397, 524288
  %.not252 = icmp eq i64 %398, 0
  br i1 %.not252, label %.thread315, label %399

399:                                              ; preds = %396
  %400 = getelementptr inbounds i8, ptr %0, i64 160
  %401 = load i32, ptr %400, align 8, !tbaa !44
  switch i32 %401, label %.thread315 [
    i32 0, label %402
    i32 65536, label %405
    i32 131072, label %408
  ]

402:                                              ; preds = %399
  %403 = getelementptr inbounds i8, ptr %0, i64 8
  %404 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %403, i32 noundef 0)
  br label %408

405:                                              ; preds = %399
  %406 = getelementptr inbounds i8, ptr %0, i64 40
  %407 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %406, i32 noundef 2)
  br label %408

408:                                              ; preds = %405, %402, %399
  %.35 = phi i32 [ %.34, %399 ], [ %407, %405 ], [ %404, %402 ]
  %409 = icmp eq i32 %.35, 0
  br i1 %409, label %410, label %.thread315

410:                                              ; preds = %408
  %411 = load volatile i32, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  %412 = and i32 %411, -196609
  %413 = load i32, ptr %400, align 8, !tbaa !44
  %414 = or i32 %412, %413
  store volatile i32 %414, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !18
  br label %.thread315

.thread315:                                       ; preds = %399, %408, %410, %396
  %.36 = phi i32 [ 0, %410 ], [ %.34, %396 ], [ %.35, %408 ], [ 1, %399 ]
  %.21 = phi i32 [ %.20, %410 ], [ %.20, %396 ], [ %.35, %408 ], [ 1, %399 ]
  %415 = load i64, ptr %0, align 8, !tbaa !5
  %416 = and i64 %415, 262144
  %.not253 = icmp eq i64 %416, 0
  br i1 %.not253, label %.thread317, label %417

417:                                              ; preds = %.thread315
  %418 = getelementptr inbounds i8, ptr %0, i64 132
  %419 = load i32, ptr %418, align 4, !tbaa !45
  switch i32 %419, label %.thread317 [
    i32 1048576, label %420
    i32 2097152, label %423
    i32 3145728, label %426
  ]

420:                                              ; preds = %417
  %421 = load volatile i32, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !13
  %422 = or i32 %421, 131072
  store volatile i32 %422, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !13
  br label %426

423:                                              ; preds = %417
  %424 = getelementptr inbounds i8, ptr %0, i64 40
  %425 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %424, i32 noundef 1)
  br label %426

426:                                              ; preds = %423, %420, %417
  %.37 = phi i32 [ %.36, %417 ], [ %425, %423 ], [ %.36, %420 ]
  %427 = icmp eq i32 %.37, 0
  br i1 %427, label %428, label %.thread317

428:                                              ; preds = %426
  %429 = load volatile i32, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  %430 = and i32 %429, -3145729
  %431 = load i32, ptr %418, align 4, !tbaa !45
  %432 = or i32 %430, %431
  store volatile i32 %432, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  br label %.thread317

.thread317:                                       ; preds = %417, %426, %428, %.thread315
  %.38 = phi i32 [ 0, %428 ], [ %.36, %.thread315 ], [ %.37, %426 ], [ 1, %417 ]
  %.22 = phi i32 [ %.21, %428 ], [ %.21, %.thread315 ], [ %.37, %426 ], [ 1, %417 ]
  %433 = load i64, ptr %0, align 8, !tbaa !5
  %434 = and i64 %433, 65536
  %.not254 = icmp eq i64 %434, 0
  br i1 %.not254, label %.thread319, label %435

435:                                              ; preds = %.thread317
  %436 = getelementptr inbounds i8, ptr %0, i64 80
  %437 = load i32, ptr %436, align 8, !tbaa !46
  switch i32 %437, label %.thread319 [
    i32 0, label %438
    i32 65536, label %441
  ]

438:                                              ; preds = %435
  %439 = load volatile i32, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !13
  %440 = or i32 %439, 131072
  store volatile i32 %440, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !13
  br label %444

441:                                              ; preds = %435
  %442 = getelementptr inbounds i8, ptr %0, i64 8
  %443 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %442, i32 noundef 2)
  br label %444

444:                                              ; preds = %441, %438
  %.39 = phi i32 [ %443, %441 ], [ %.38, %438 ]
  %445 = icmp eq i32 %.39, 0
  br i1 %445, label %446, label %.thread319

446:                                              ; preds = %444
  %447 = load volatile i32, ptr inttoptr (i64 1476543564 to ptr), align 4, !tbaa !21
  %448 = and i32 %447, -65537
  %449 = load i32, ptr %436, align 8, !tbaa !46
  %450 = or i32 %448, %449
  store volatile i32 %450, ptr inttoptr (i64 1476543564 to ptr), align 4, !tbaa !21
  br label %.thread319

.thread319:                                       ; preds = %435, %444, %446, %.thread317
  %.40 = phi i32 [ 0, %446 ], [ %.38, %.thread317 ], [ %.39, %444 ], [ 1, %435 ]
  %.23 = phi i32 [ %.22, %446 ], [ %.22, %.thread317 ], [ %.39, %444 ], [ 1, %435 ]
  %451 = load i64, ptr %0, align 8, !tbaa !5
  %452 = and i64 %451, 536870912
  %.not255 = icmp eq i64 %452, 0
  br i1 %.not255, label %456, label %453

453:                                              ; preds = %.thread319
  %454 = getelementptr inbounds i8, ptr %0, i64 40
  %455 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %454, i32 noundef 2)
  %.not256 = icmp eq i32 %455, 0
  %spec.select270 = select i1 %.not256, i32 %.23, i32 1
  %.pre330 = load i64, ptr %0, align 8, !tbaa !5
  br label %456

456:                                              ; preds = %453, %.thread319
  %457 = phi i64 [ %451, %.thread319 ], [ %.pre330, %453 ]
  %.24 = phi i32 [ %.23, %.thread319 ], [ %spec.select270, %453 ]
  %458 = and i64 %457, 131072
  %.not257 = icmp eq i64 %458, 0
  br i1 %.not257, label %.thread321, label %459

459:                                              ; preds = %456
  %460 = getelementptr inbounds i8, ptr %0, i64 124
  %461 = load i32, ptr %460, align 4, !tbaa !47
  %462 = tail call i32 @llvm.fshl.i32(i32 %461, i32 %461, i32 24)
  switch i32 %462, label %.thread321 [
    i32 1, label %463
    i32 2, label %466
    i32 3, label %466
    i32 0, label %466
  ]

463:                                              ; preds = %459
  %464 = load volatile i32, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !13
  %465 = or i32 %464, 131072
  store volatile i32 %465, ptr inttoptr (i64 1476543532 to ptr), align 4, !tbaa !13
  br label %466

466:                                              ; preds = %463, %459, %459, %459
  %467 = icmp eq i32 %.40, 0
  br i1 %467, label %468, label %.thread321

468:                                              ; preds = %466
  %469 = load volatile i32, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  %470 = and i32 %469, -769
  %471 = or i32 %470, %461
  store volatile i32 %471, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  br label %.thread321

.thread321:                                       ; preds = %459, %466, %468, %456
  %.25 = phi i32 [ %.24, %468 ], [ %.24, %456 ], [ %.40, %466 ], [ 1, %459 ]
  %472 = and i64 %457, 1048576
  %.not258 = icmp eq i64 %472, 0
  br i1 %.not258, label %479, label %473

473:                                              ; preds = %.thread321
  %474 = load volatile i32, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !15
  %475 = and i32 %474, 2147483647
  %476 = getelementptr inbounds i8, ptr %0, i64 112
  %477 = load i32, ptr %476, align 8, !tbaa !48
  %478 = or i32 %475, %477
  store volatile i32 %478, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !15
  br label %479

479:                                              ; preds = %473, %.thread321
  %480 = and i64 %457, 2097152
  %.not259 = icmp eq i64 %480, 0
  br i1 %.not259, label %487, label %481

481:                                              ; preds = %479
  %482 = load volatile i32, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !15
  %483 = and i32 %482, -16777217
  %484 = getelementptr inbounds i8, ptr %0, i64 104
  %485 = load i32, ptr %484, align 8, !tbaa !49
  %486 = or i32 %483, %485
  store volatile i32 %486, ptr inttoptr (i64 1476543568 to ptr), align 16, !tbaa !15
  br label %487

487:                                              ; preds = %481, %479
  %488 = and i64 %457, 1073741824
  %.not260 = icmp eq i64 %488, 0
  br i1 %.not260, label %496, label %489

489:                                              ; preds = %487
  %490 = load volatile i32, ptr inttoptr (i64 1476543504 to ptr), align 16, !tbaa !34
  %491 = and i32 %490, -32769
  store volatile i32 %491, ptr inttoptr (i64 1476543504 to ptr), align 16, !tbaa !34
  %492 = getelementptr inbounds i8, ptr %0, i64 180
  %493 = load i32, ptr %492, align 4, !tbaa !50
  %494 = load volatile i32, ptr inttoptr (i64 1476543504 to ptr), align 16, !tbaa !34
  %495 = or i32 %494, %493
  store volatile i32 %495, ptr inttoptr (i64 1476543504 to ptr), align 16, !tbaa !34
  br label %496

496:                                              ; preds = %489, %487
  %497 = and i64 %457, 2147483648
  %.not261 = icmp eq i64 %497, 0
  br i1 %.not261, label %504, label %498

498:                                              ; preds = %496
  %499 = load volatile i32, ptr inttoptr (i64 1476543564 to ptr), align 4, !tbaa !21
  %500 = and i32 %499, -805306369
  %501 = getelementptr inbounds i8, ptr %0, i64 84
  %502 = load i32, ptr %501, align 4, !tbaa !51
  %503 = or i32 %500, %502
  store volatile i32 %503, ptr inttoptr (i64 1476543564 to ptr), align 4, !tbaa !21
  br label %504

504:                                              ; preds = %498, %496
  %505 = and i64 %457, 8388608
  %.not262 = icmp eq i64 %505, 0
  br i1 %.not262, label %512, label %506

506:                                              ; preds = %504
  %507 = load volatile i32, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  %508 = and i32 %507, -12582913
  %509 = getelementptr inbounds i8, ptr %0, i64 136
  %510 = load i32, ptr %509, align 8, !tbaa !52
  %511 = or i32 %508, %510
  store volatile i32 %511, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !36
  br label %512

512:                                              ; preds = %506, %504
  %513 = and i64 %457, 4294967296
  %.not263 = icmp eq i64 %513, 0
  br i1 %.not263, label %518, label %514

514:                                              ; preds = %512
  %515 = getelementptr inbounds i8, ptr %0, i64 8
  %516 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %515, i32 noundef 0)
  %517 = icmp eq i32 %516, 0
  %spec.select271 = select i1 %517, i32 %.25, i32 %516
  %.pre331 = load i64, ptr %0, align 8, !tbaa !5
  br label %518

518:                                              ; preds = %514, %512
  %519 = phi i64 [ %457, %512 ], [ %.pre331, %514 ]
  %.26 = phi i32 [ %.25, %512 ], [ %spec.select271, %514 ]
  %520 = and i64 %519, 8589934592
  %.not264 = icmp eq i64 %520, 0
  br i1 %.not264, label %525, label %521

521:                                              ; preds = %518
  %522 = getelementptr inbounds i8, ptr %0, i64 8
  %523 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %522, i32 noundef 1)
  %524 = icmp eq i32 %523, 0
  %spec.select272 = select i1 %524, i32 %.26, i32 %523
  %.pre332 = load i64, ptr %0, align 8, !tbaa !5
  br label %525

525:                                              ; preds = %521, %518
  %526 = phi i64 [ %519, %518 ], [ %.pre332, %521 ]
  %.27 = phi i32 [ %.26, %518 ], [ %spec.select272, %521 ]
  %527 = and i64 %526, 17179869184
  %.not265 = icmp eq i64 %527, 0
  br i1 %.not265, label %532, label %528

528:                                              ; preds = %525
  %529 = getelementptr inbounds i8, ptr %0, i64 8
  %530 = tail call i32 @RCCEx_PLL2_Config(ptr noundef nonnull %529, i32 noundef 2)
  %531 = icmp eq i32 %530, 0
  %spec.select273 = select i1 %531, i32 %.27, i32 %530
  %.pre333 = load i64, ptr %0, align 8, !tbaa !5
  br label %532

532:                                              ; preds = %528, %525
  %533 = phi i64 [ %526, %525 ], [ %.pre333, %528 ]
  %.28 = phi i32 [ %.27, %525 ], [ %spec.select273, %528 ]
  %534 = and i64 %533, 34359738368
  %.not266 = icmp eq i64 %534, 0
  br i1 %.not266, label %539, label %535

535:                                              ; preds = %532
  %536 = getelementptr inbounds i8, ptr %0, i64 40
  %537 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %536, i32 noundef 0)
  %538 = icmp eq i32 %537, 0
  %spec.select274 = select i1 %538, i32 %.28, i32 %537
  %.pre334 = load i64, ptr %0, align 8, !tbaa !5
  br label %539

539:                                              ; preds = %535, %532
  %540 = phi i64 [ %533, %532 ], [ %.pre334, %535 ]
  %.29 = phi i32 [ %.28, %532 ], [ %spec.select274, %535 ]
  %541 = and i64 %540, 68719476736
  %.not267 = icmp eq i64 %541, 0
  br i1 %.not267, label %546, label %542

542:                                              ; preds = %539
  %543 = getelementptr inbounds i8, ptr %0, i64 40
  %544 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %543, i32 noundef 1)
  %545 = icmp eq i32 %544, 0
  %spec.select275 = select i1 %545, i32 %.29, i32 %544
  %.pre335 = load i64, ptr %0, align 8, !tbaa !5
  br label %546

546:                                              ; preds = %542, %539
  %547 = phi i64 [ %540, %539 ], [ %.pre335, %542 ]
  %.30 = phi i32 [ %.29, %539 ], [ %spec.select275, %542 ]
  %548 = and i64 %547, 137438953472
  %.not268 = icmp eq i64 %548, 0
  br i1 %.not268, label %553, label %549

549:                                              ; preds = %546
  %550 = getelementptr inbounds i8, ptr %0, i64 40
  %551 = tail call i32 @RCCEx_PLL3_Config(ptr noundef nonnull %550, i32 noundef 2)
  %552 = icmp eq i32 %551, 0
  %spec.select276 = select i1 %552, i32 %.30, i32 1
  br label %553

553:                                              ; preds = %549, %546
  %.31 = phi i32 [ %.30, %546 ], [ %spec.select276, %549 ]
  %554 = icmp ne i32 %.31, 0
  %. = zext i1 %554 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 8, !10, i64 40, !11, i64 72, !11, i64 76, !11, i64 80, !11, i64 84, !11, i64 88, !11, i64 92, !11, i64 96, !11, i64 100, !11, i64 104, !11, i64 108, !11, i64 112, !11, i64 116, !11, i64 120, !11, i64 124, !11, i64 128, !11, i64 132, !11, i64 136, !11, i64 140, !11, i64 144, !11, i64 148, !11, i64 152, !11, i64 156, !11, i64 160, !11, i64 164, !11, i64 168, !11, i64 172, !11, i64 176, !11, i64 180}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28}
!11 = !{!"int", !8, i64 0}
!12 = !{!6, !11, i64 100}
!13 = !{!14, !11, i64 44}
!14 = !{!"", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44, !11, i64 48, !11, i64 52, !11, i64 56, !11, i64 60, !11, i64 64, !11, i64 68, !11, i64 72, !11, i64 76, !11, i64 80, !11, i64 84, !11, i64 88, !11, i64 92, !11, i64 96, !11, i64 100, !11, i64 104, !11, i64 108, !11, i64 112, !11, i64 116, !11, i64 120, !11, i64 124, !11, i64 128, !11, i64 132, !11, i64 136, !11, i64 140, !11, i64 144, !11, i64 148, !11, i64 152, !11, i64 156, !11, i64 160, !11, i64 164, !11, i64 168, !8, i64 172, !11, i64 208, !11, i64 212, !11, i64 216, !11, i64 220, !11, i64 224, !11, i64 228, !11, i64 232, !11, i64 236, !11, i64 240, !11, i64 244, !11, i64 248, !11, i64 252, !11, i64 256, !11, i64 260, !11, i64 264, !11, i64 268, !11, i64 272, !11, i64 276, !11, i64 280, !11, i64 284, !8, i64 288}
!15 = !{!14, !11, i64 80}
!16 = !{!6, !11, i64 88}
!17 = !{!6, !11, i64 164}
!18 = !{!14, !11, i64 88}
!19 = !{!6, !11, i64 168}
!20 = !{!6, !11, i64 76}
!21 = !{!14, !11, i64 76}
!22 = !{!6, !11, i64 92}
!23 = !{!6, !11, i64 96}
!24 = !{!6, !11, i64 172}
!25 = !{!6, !11, i64 108}
!26 = !{!6, !11, i64 72}
!27 = !{!28, !11, i64 0}
!28 = !{!"", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = !{!14, !11, i64 112}
!32 = !{!6, !11, i64 176}
!33 = distinct !{!33, !30}
!34 = !{!14, !11, i64 16}
!35 = !{!6, !11, i64 120}
!36 = !{!14, !11, i64 84}
!37 = !{!6, !11, i64 116}
!38 = !{!6, !11, i64 144}
!39 = !{!6, !11, i64 140}
!40 = !{!6, !11, i64 152}
!41 = !{!6, !11, i64 156}
!42 = !{!6, !11, i64 128}
!43 = !{!6, !11, i64 148}
!44 = !{!6, !11, i64 160}
!45 = !{!6, !11, i64 132}
!46 = !{!6, !11, i64 80}
!47 = !{!6, !11, i64 124}
!48 = !{!6, !11, i64 112}
!49 = !{!6, !11, i64 104}
!50 = !{!6, !11, i64 180}
!51 = !{!6, !11, i64 84}
!52 = !{!6, !11, i64 136}


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