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

; 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.PLL2_ClocksTypeDef = type { i32, i32, i32 }
%struct.PLL3_ClocksTypeDef = type { i32, i32, i32 }
%struct.__UART_HandleTypeDef = type { ptr, %struct.UART_InitTypeDef, %struct.UART_AdvFeatureInitTypeDef, ptr, i16, i16, ptr, i16, i16, i16, i32, i16, i16, ptr, ptr, ptr, ptr, i32, i32, i32, i32 }
%struct.UART_InitTypeDef = type { i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.UART_AdvFeatureInitTypeDef = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.USART_TypeDef = type { i32, i32, i32, i32, 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 @UART_SetConfig(ptr noundef %0) #0 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  %4 = alloca i16, align 2
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca %struct.PLL2_ClocksTypeDef, align 4
  %10 = alloca %struct.PLL3_ClocksTypeDef, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #3
  call void @llvm.lifetime.start.p0(i64 2, 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
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #3
  store i32 0, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 12, ptr %9) #3
  call void @llvm.lifetime.start.p0(i64 12, ptr %10) #3
  %11 = load ptr, ptr %2, align 8, !tbaa !5
  %12 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %11, i32 0, i32 0
  %13 = load ptr, ptr %12, align 8, !tbaa !11
  %14 = icmp eq ptr %13, inttoptr (i64 1476398080 to ptr)
  br i1 %14, label %15, label %16

15:                                               ; preds = %1
  br label %17

16:                                               ; preds = %1
  br label %17

17:                                               ; preds = %16, %15
  %18 = load ptr, ptr %2, align 8, !tbaa !5
  %19 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %18, i32 0, i32 1
  %20 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %19, i32 0, i32 1
  %21 = load i32, ptr %20, align 4, !tbaa !16
  %22 = load ptr, ptr %2, align 8, !tbaa !5
  %23 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %22, i32 0, i32 1
  %24 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %23, i32 0, i32 3
  %25 = load i32, ptr %24, align 4, !tbaa !17
  %26 = or i32 %21, %25
  %27 = load ptr, ptr %2, align 8, !tbaa !5
  %28 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %27, i32 0, i32 1
  %29 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %28, i32 0, i32 4
  %30 = load i32, ptr %29, align 8, !tbaa !18
  %31 = or i32 %26, %30
  %32 = load ptr, ptr %2, align 8, !tbaa !5
  %33 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %32, i32 0, i32 1
  %34 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %33, i32 0, i32 6
  %35 = load i32, ptr %34, align 8, !tbaa !19
  %36 = or i32 %31, %35
  store i32 %36, ptr %3, align 4, !tbaa !9
  %37 = load ptr, ptr %2, align 8, !tbaa !5
  %38 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %37, i32 0, i32 10
  %39 = load i32, ptr %38, align 8, !tbaa !20
  %40 = load i32, ptr %3, align 4, !tbaa !9
  %41 = or i32 %40, %39
  store i32 %41, ptr %3, align 4, !tbaa !9
  %42 = load ptr, ptr %2, align 8, !tbaa !5
  %43 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %42, i32 0, i32 0
  %44 = load ptr, ptr %43, align 8, !tbaa !11
  %45 = getelementptr inbounds %struct.USART_TypeDef, ptr %44, i32 0, i32 0
  %46 = load volatile i32, ptr %45, align 4, !tbaa !21
  %47 = and i32 %46, -805344781
  %48 = load i32, ptr %3, align 4, !tbaa !9
  %49 = or i32 %47, %48
  %50 = load ptr, ptr %2, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %50, i32 0, i32 0
  %52 = load ptr, ptr %51, align 8, !tbaa !11
  %53 = getelementptr inbounds %struct.USART_TypeDef, ptr %52, i32 0, i32 0
  store volatile i32 %49, ptr %53, align 4, !tbaa !21
  %54 = load ptr, ptr %2, align 8, !tbaa !5
  %55 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %54, i32 0, i32 0
  %56 = load ptr, ptr %55, align 8, !tbaa !11
  %57 = getelementptr inbounds %struct.USART_TypeDef, ptr %56, i32 0, i32 1
  %58 = load volatile i32, ptr %57, align 4, !tbaa !23
  %59 = zext i32 %58 to i64
  %60 = and i64 %59, -12289
  %61 = load ptr, ptr %2, align 8, !tbaa !5
  %62 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %61, i32 0, i32 1
  %63 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %62, i32 0, i32 2
  %64 = load i32, ptr %63, align 8, !tbaa !24
  %65 = zext i32 %64 to i64
  %66 = or i64 %60, %65
  %67 = trunc i64 %66 to i32
  %68 = load ptr, ptr %2, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %68, i32 0, i32 0
  %70 = load ptr, ptr %69, align 8, !tbaa !11
  %71 = getelementptr inbounds %struct.USART_TypeDef, ptr %70, i32 0, i32 1
  store volatile i32 %67, ptr %71, align 4, !tbaa !23
  %72 = load ptr, ptr %2, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %72, i32 0, i32 1
  %74 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %73, i32 0, i32 5
  %75 = load i32, ptr %74, align 4, !tbaa !25
  store i32 %75, ptr %3, align 4, !tbaa !9
  %76 = load ptr, ptr %2, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %76, i32 0, i32 0
  %78 = load ptr, ptr %77, align 8, !tbaa !11
  %79 = icmp eq ptr %78, inttoptr (i64 1476398080 to ptr)
  br i1 %79, label %87, label %80

80:                                               ; preds = %17
  %81 = load ptr, ptr %2, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %81, i32 0, i32 1
  %83 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %82, i32 0, i32 7
  %84 = load i32, ptr %83, align 4, !tbaa !26
  %85 = load i32, ptr %3, align 4, !tbaa !9
  %86 = or i32 %85, %84
  store i32 %86, ptr %3, align 4, !tbaa !9
  br label %87

87:                                               ; preds = %80, %17
  %88 = load ptr, ptr %2, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %88, i32 0, i32 0
  %90 = load ptr, ptr %89, align 8, !tbaa !11
  %91 = getelementptr inbounds %struct.USART_TypeDef, ptr %90, i32 0, i32 2
  %92 = load volatile i32, ptr %91, align 4, !tbaa !27
  %93 = and i32 %92, 301987071
  %94 = load i32, ptr %3, align 4, !tbaa !9
  %95 = or i32 %93, %94
  %96 = load ptr, ptr %2, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %96, i32 0, i32 0
  %98 = load ptr, ptr %97, align 8, !tbaa !11
  %99 = getelementptr inbounds %struct.USART_TypeDef, ptr %98, i32 0, i32 2
  store volatile i32 %95, ptr %99, align 4, !tbaa !27
  %100 = load ptr, ptr %2, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %100, i32 0, i32 0
  %102 = load ptr, ptr %101, align 8, !tbaa !11
  %103 = getelementptr inbounds %struct.USART_TypeDef, ptr %102, i32 0, i32 11
  %104 = load volatile i32, ptr %103, align 4, !tbaa !28
  %105 = zext i32 %104 to i64
  %106 = and i64 %105, -16
  %107 = load ptr, ptr %2, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %107, i32 0, i32 1
  %109 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %108, i32 0, i32 8
  %110 = load i32, ptr %109, align 8, !tbaa !29
  %111 = zext i32 %110 to i64
  %112 = or i64 %106, %111
  %113 = trunc i64 %112 to i32
  %114 = load ptr, ptr %2, align 8, !tbaa !5
  %115 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %114, i32 0, i32 0
  %116 = load ptr, ptr %115, align 8, !tbaa !11
  %117 = getelementptr inbounds %struct.USART_TypeDef, ptr %116, i32 0, i32 11
  store volatile i32 %113, ptr %117, align 4, !tbaa !28
  br label %118

118:                                              ; preds = %87
  %119 = load ptr, ptr %2, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %119, i32 0, i32 0
  %121 = load ptr, ptr %120, align 8, !tbaa !11
  %122 = icmp eq ptr %121, inttoptr (i64 1073811456 to ptr)
  br i1 %122, label %123, label %136

123:                                              ; preds = %118
  %124 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !30
  %125 = zext i32 %124 to i64
  %126 = and i64 %125, 56
  %127 = trunc i64 %126 to i32
  switch i32 %127, label %134 [
    i32 0, label %128
    i32 8, label %129
    i32 16, label %130
    i32 24, label %131
    i32 32, label %132
    i32 40, label %133
  ]

128:                                              ; preds = %123
  store i32 1, ptr %5, align 4, !tbaa !9
  br label %135

129:                                              ; preds = %123
  store i32 4, ptr %5, align 4, !tbaa !9
  br label %135

130:                                              ; preds = %123
  store i32 8, ptr %5, align 4, !tbaa !9
  br label %135

131:                                              ; preds = %123
  store i32 16, ptr %5, align 4, !tbaa !9
  br label %135

132:                                              ; preds = %123
  store i32 32, ptr %5, align 4, !tbaa !9
  br label %135

133:                                              ; preds = %123
  store i32 64, ptr %5, align 4, !tbaa !9
  br label %135

134:                                              ; preds = %123
  store i32 128, ptr %5, align 4, !tbaa !9
  br label %135

135:                                              ; preds = %134, %133, %132, %131, %130, %129, %128
  br label %289

136:                                              ; preds = %118
  %137 = load ptr, ptr %2, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %137, i32 0, i32 0
  %139 = load ptr, ptr %138, align 8, !tbaa !11
  %140 = icmp eq ptr %139, inttoptr (i64 1073759232 to ptr)
  br i1 %140, label %141, label %154

141:                                              ; preds = %136
  %142 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !30
  %143 = zext i32 %142 to i64
  %144 = and i64 %143, 7
  %145 = trunc i64 %144 to i32
  switch i32 %145, label %152 [
    i32 0, label %146
    i32 1, label %147
    i32 2, label %148
    i32 3, label %149
    i32 4, label %150
    i32 5, label %151
  ]

146:                                              ; preds = %141
  store i32 0, ptr %5, align 4, !tbaa !9
  br label %153

147:                                              ; preds = %141
  store i32 4, ptr %5, align 4, !tbaa !9
  br label %153

148:                                              ; preds = %141
  store i32 8, ptr %5, align 4, !tbaa !9
  br label %153

149:                                              ; preds = %141
  store i32 16, ptr %5, align 4, !tbaa !9
  br label %153

150:                                              ; preds = %141
  store i32 32, ptr %5, align 4, !tbaa !9
  br label %153

151:                                              ; preds = %141
  store i32 64, ptr %5, align 4, !tbaa !9
  br label %153

152:                                              ; preds = %141
  store i32 128, ptr %5, align 4, !tbaa !9
  br label %153

153:                                              ; preds = %152, %151, %150, %149, %148, %147, %146
  br label %288

154:                                              ; preds = %136
  %155 = load ptr, ptr %2, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %155, i32 0, i32 0
  %157 = load ptr, ptr %156, align 8, !tbaa !11
  %158 = icmp eq ptr %157, inttoptr (i64 1073760256 to ptr)
  br i1 %158, label %159, label %172

159:                                              ; preds = %154
  %160 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !30
  %161 = zext i32 %160 to i64
  %162 = and i64 %161, 7
  %163 = trunc i64 %162 to i32
  switch i32 %163, label %170 [
    i32 0, label %164
    i32 1, label %165
    i32 2, label %166
    i32 3, label %167
    i32 4, label %168
    i32 5, label %169
  ]

164:                                              ; preds = %159
  store i32 0, ptr %5, align 4, !tbaa !9
  br label %171

165:                                              ; preds = %159
  store i32 4, ptr %5, align 4, !tbaa !9
  br label %171

166:                                              ; preds = %159
  store i32 8, ptr %5, align 4, !tbaa !9
  br label %171

167:                                              ; preds = %159
  store i32 16, ptr %5, align 4, !tbaa !9
  br label %171

168:                                              ; preds = %159
  store i32 32, ptr %5, align 4, !tbaa !9
  br label %171

169:                                              ; preds = %159
  store i32 64, ptr %5, align 4, !tbaa !9
  br label %171

170:                                              ; preds = %159
  store i32 128, ptr %5, align 4, !tbaa !9
  br label %171

171:                                              ; preds = %170, %169, %168, %167, %166, %165, %164
  br label %287

172:                                              ; preds = %154
  %173 = load ptr, ptr %2, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %173, i32 0, i32 0
  %175 = load ptr, ptr %174, align 8, !tbaa !11
  %176 = icmp eq ptr %175, inttoptr (i64 1073761280 to ptr)
  br i1 %176, label %177, label %190

177:                                              ; preds = %172
  %178 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !30
  %179 = zext i32 %178 to i64
  %180 = and i64 %179, 7
  %181 = trunc i64 %180 to i32
  switch i32 %181, label %188 [
    i32 0, label %182
    i32 1, label %183
    i32 2, label %184
    i32 3, label %185
    i32 4, label %186
    i32 5, label %187
  ]

182:                                              ; preds = %177
  store i32 0, ptr %5, align 4, !tbaa !9
  br label %189

183:                                              ; preds = %177
  store i32 4, ptr %5, align 4, !tbaa !9
  br label %189

184:                                              ; preds = %177
  store i32 8, ptr %5, align 4, !tbaa !9
  br label %189

185:                                              ; preds = %177
  store i32 16, ptr %5, align 4, !tbaa !9
  br label %189

186:                                              ; preds = %177
  store i32 32, ptr %5, align 4, !tbaa !9
  br label %189

187:                                              ; preds = %177
  store i32 64, ptr %5, align 4, !tbaa !9
  br label %189

188:                                              ; preds = %177
  store i32 128, ptr %5, align 4, !tbaa !9
  br label %189

189:                                              ; preds = %188, %187, %186, %185, %184, %183, %182
  br label %286

190:                                              ; preds = %172
  %191 = load ptr, ptr %2, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %191, i32 0, i32 0
  %193 = load ptr, ptr %192, align 8, !tbaa !11
  %194 = icmp eq ptr %193, inttoptr (i64 1073762304 to ptr)
  br i1 %194, label %195, label %208

195:                                              ; preds = %190
  %196 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !30
  %197 = zext i32 %196 to i64
  %198 = and i64 %197, 7
  %199 = trunc i64 %198 to i32
  switch i32 %199, label %206 [
    i32 0, label %200
    i32 1, label %201
    i32 2, label %202
    i32 3, label %203
    i32 4, label %204
    i32 5, label %205
  ]

200:                                              ; preds = %195
  store i32 0, ptr %5, align 4, !tbaa !9
  br label %207

201:                                              ; preds = %195
  store i32 4, ptr %5, align 4, !tbaa !9
  br label %207

202:                                              ; preds = %195
  store i32 8, ptr %5, align 4, !tbaa !9
  br label %207

203:                                              ; preds = %195
  store i32 16, ptr %5, align 4, !tbaa !9
  br label %207

204:                                              ; preds = %195
  store i32 32, ptr %5, align 4, !tbaa !9
  br label %207

205:                                              ; preds = %195
  store i32 64, ptr %5, align 4, !tbaa !9
  br label %207

206:                                              ; preds = %195
  store i32 128, ptr %5, align 4, !tbaa !9
  br label %207

207:                                              ; preds = %206, %205, %204, %203, %202, %201, %200
  br label %285

208:                                              ; preds = %190
  %209 = load ptr, ptr %2, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %209, i32 0, i32 0
  %211 = load ptr, ptr %210, align 8, !tbaa !11
  %212 = icmp eq ptr %211, inttoptr (i64 1073812480 to ptr)
  br i1 %212, label %213, label %226

213:                                              ; preds = %208
  %214 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !30
  %215 = zext i32 %214 to i64
  %216 = and i64 %215, 56
  %217 = trunc i64 %216 to i32
  switch i32 %217, label %224 [
    i32 0, label %218
    i32 8, label %219
    i32 16, label %220
    i32 24, label %221
    i32 32, label %222
    i32 40, label %223
  ]

218:                                              ; preds = %213
  store i32 1, ptr %5, align 4, !tbaa !9
  br label %225

219:                                              ; preds = %213
  store i32 4, ptr %5, align 4, !tbaa !9
  br label %225

220:                                              ; preds = %213
  store i32 8, ptr %5, align 4, !tbaa !9
  br label %225

221:                                              ; preds = %213
  store i32 16, ptr %5, align 4, !tbaa !9
  br label %225

222:                                              ; preds = %213
  store i32 32, ptr %5, align 4, !tbaa !9
  br label %225

223:                                              ; preds = %213
  store i32 64, ptr %5, align 4, !tbaa !9
  br label %225

224:                                              ; preds = %213
  store i32 128, ptr %5, align 4, !tbaa !9
  br label %225

225:                                              ; preds = %224, %223, %222, %221, %220, %219, %218
  br label %284

226:                                              ; preds = %208
  %227 = load ptr, ptr %2, align 8, !tbaa !5
  %228 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %227, i32 0, i32 0
  %229 = load ptr, ptr %228, align 8, !tbaa !11
  %230 = icmp eq ptr %229, inttoptr (i64 1073772544 to ptr)
  br i1 %230, label %231, label %244

231:                                              ; preds = %226
  %232 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !30
  %233 = zext i32 %232 to i64
  %234 = and i64 %233, 7
  %235 = trunc i64 %234 to i32
  switch i32 %235, label %242 [
    i32 0, label %236
    i32 1, label %237
    i32 2, label %238
    i32 3, label %239
    i32 4, label %240
    i32 5, label %241
  ]

236:                                              ; preds = %231
  store i32 0, ptr %5, align 4, !tbaa !9
  br label %243

237:                                              ; preds = %231
  store i32 4, ptr %5, align 4, !tbaa !9
  br label %243

238:                                              ; preds = %231
  store i32 8, ptr %5, align 4, !tbaa !9
  br label %243

239:                                              ; preds = %231
  store i32 16, ptr %5, align 4, !tbaa !9
  br label %243

240:                                              ; preds = %231
  store i32 32, ptr %5, align 4, !tbaa !9
  br label %243

241:                                              ; preds = %231
  store i32 64, ptr %5, align 4, !tbaa !9
  br label %243

242:                                              ; preds = %231
  store i32 128, ptr %5, align 4, !tbaa !9
  br label %243

243:                                              ; preds = %242, %241, %240, %239, %238, %237, %236
  br label %283

244:                                              ; preds = %226
  %245 = load ptr, ptr %2, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %245, i32 0, i32 0
  %247 = load ptr, ptr %246, align 8, !tbaa !11
  %248 = icmp eq ptr %247, inttoptr (i64 1073773568 to ptr)
  br i1 %248, label %249, label %262

249:                                              ; preds = %244
  %250 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 21), align 4, !tbaa !30
  %251 = zext i32 %250 to i64
  %252 = and i64 %251, 7
  %253 = trunc i64 %252 to i32
  switch i32 %253, label %260 [
    i32 0, label %254
    i32 1, label %255
    i32 2, label %256
    i32 3, label %257
    i32 4, label %258
    i32 5, label %259
  ]

254:                                              ; preds = %249
  store i32 0, ptr %5, align 4, !tbaa !9
  br label %261

255:                                              ; preds = %249
  store i32 4, ptr %5, align 4, !tbaa !9
  br label %261

256:                                              ; preds = %249
  store i32 8, ptr %5, align 4, !tbaa !9
  br label %261

257:                                              ; preds = %249
  store i32 16, ptr %5, align 4, !tbaa !9
  br label %261

258:                                              ; preds = %249
  store i32 32, ptr %5, align 4, !tbaa !9
  br label %261

259:                                              ; preds = %249
  store i32 64, ptr %5, align 4, !tbaa !9
  br label %261

260:                                              ; preds = %249
  store i32 128, ptr %5, align 4, !tbaa !9
  br label %261

261:                                              ; preds = %260, %259, %258, %257, %256, %255, %254
  br label %282

262:                                              ; preds = %244
  %263 = load ptr, ptr %2, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %263, i32 0, i32 0
  %265 = load ptr, ptr %264, align 8, !tbaa !11
  %266 = icmp eq ptr %265, inttoptr (i64 1476398080 to ptr)
  br i1 %266, label %267, label %280

267:                                              ; preds = %262
  %268 = load volatile i32, ptr getelementptr inbounds (%struct.RCC_TypeDef, ptr inttoptr (i64 1476543488 to ptr), i32 0, i32 22), align 4, !tbaa !32
  %269 = zext i32 %268 to i64
  %270 = and i64 %269, 7
  %271 = trunc i64 %270 to i32
  switch i32 %271, label %278 [
    i32 0, label %272
    i32 1, label %273
    i32 2, label %274
    i32 3, label %275
    i32 4, label %276
    i32 5, label %277
  ]

272:                                              ; preds = %267
  store i32 2, ptr %5, align 4, !tbaa !9
  br label %279

273:                                              ; preds = %267
  store i32 4, ptr %5, align 4, !tbaa !9
  br label %279

274:                                              ; preds = %267
  store i32 8, ptr %5, align 4, !tbaa !9
  br label %279

275:                                              ; preds = %267
  store i32 16, ptr %5, align 4, !tbaa !9
  br label %279

276:                                              ; preds = %267
  store i32 32, ptr %5, align 4, !tbaa !9
  br label %279

277:                                              ; preds = %267
  store i32 64, ptr %5, align 4, !tbaa !9
  br label %279

278:                                              ; preds = %267
  store i32 128, ptr %5, align 4, !tbaa !9
  br label %279

279:                                              ; preds = %278, %277, %276, %275, %274, %273, %272
  br label %281

280:                                              ; preds = %262
  store i32 128, ptr %5, align 4, !tbaa !9
  br label %281

281:                                              ; preds = %280, %279
  br label %282

282:                                              ; preds = %281, %261
  br label %283

283:                                              ; preds = %282, %243
  br label %284

284:                                              ; preds = %283, %225
  br label %285

285:                                              ; preds = %284, %207
  br label %286

286:                                              ; preds = %285, %189
  br label %287

287:                                              ; preds = %286, %171
  br label %288

288:                                              ; preds = %287, %153
  br label %289

289:                                              ; preds = %288, %135
  br label %290

290:                                              ; preds = %289
  br label %291

291:                                              ; preds = %290
  %292 = load ptr, ptr %2, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %292, i32 0, i32 0
  %294 = load ptr, ptr %293, align 8, !tbaa !11
  %295 = icmp eq ptr %294, inttoptr (i64 1476398080 to ptr)
  br i1 %295, label %296, label %2008

296:                                              ; preds = %291
  %297 = load i32, ptr %5, align 4, !tbaa !9
  switch i32 %297, label %1075 [
    i32 2, label %298
    i32 4, label %407
    i32 8, label %517
    i32 16, label %627
    i32 32, label %858
    i32 64, label %966
    i32 128, label %1074
  ]

298:                                              ; preds = %296
  %299 = call i32 @HAL_RCCEx_GetD3PCLK1Freq()
  %300 = load ptr, ptr %2, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %300, i32 0, i32 1
  %302 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %301, i32 0, i32 8
  %303 = load i32, ptr %302, align 8, !tbaa !29
  %304 = icmp eq i32 %303, 0
  br i1 %304, label %305, label %306

305:                                              ; preds = %298
  br label %404

306:                                              ; preds = %298
  %307 = load ptr, ptr %2, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %307, i32 0, i32 1
  %309 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %308, i32 0, i32 8
  %310 = load i32, ptr %309, align 8, !tbaa !29
  %311 = icmp eq i32 %310, 1
  br i1 %311, label %312, label %313

312:                                              ; preds = %306
  br label %402

313:                                              ; preds = %306
  %314 = load ptr, ptr %2, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %314, i32 0, i32 1
  %316 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %315, i32 0, i32 8
  %317 = load i32, ptr %316, align 8, !tbaa !29
  %318 = icmp eq i32 %317, 2
  br i1 %318, label %319, label %320

319:                                              ; preds = %313
  br label %400

320:                                              ; preds = %313
  %321 = load ptr, ptr %2, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %321, i32 0, i32 1
  %323 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %322, i32 0, i32 8
  %324 = load i32, ptr %323, align 8, !tbaa !29
  %325 = icmp eq i32 %324, 3
  br i1 %325, label %326, label %327

326:                                              ; preds = %320
  br label %398

327:                                              ; preds = %320
  %328 = load ptr, ptr %2, align 8, !tbaa !5
  %329 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %328, i32 0, i32 1
  %330 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %329, i32 0, i32 8
  %331 = load i32, ptr %330, align 8, !tbaa !29
  %332 = icmp eq i32 %331, 4
  br i1 %332, label %333, label %334

333:                                              ; preds = %327
  br label %396

334:                                              ; preds = %327
  %335 = load ptr, ptr %2, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %335, i32 0, i32 1
  %337 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %336, i32 0, i32 8
  %338 = load i32, ptr %337, align 8, !tbaa !29
  %339 = icmp eq i32 %338, 5
  br i1 %339, label %340, label %341

340:                                              ; preds = %334
  br label %394

341:                                              ; preds = %334
  %342 = load ptr, ptr %2, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %342, i32 0, i32 1
  %344 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %343, i32 0, i32 8
  %345 = load i32, ptr %344, align 8, !tbaa !29
  %346 = icmp eq i32 %345, 6
  br i1 %346, label %347, label %348

347:                                              ; preds = %341
  br label %392

348:                                              ; preds = %341
  %349 = load ptr, ptr %2, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %349, i32 0, i32 1
  %351 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %350, i32 0, i32 8
  %352 = load i32, ptr %351, align 8, !tbaa !29
  %353 = icmp eq i32 %352, 7
  br i1 %353, label %354, label %355

354:                                              ; preds = %348
  br label %390

355:                                              ; preds = %348
  %356 = load ptr, ptr %2, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %356, i32 0, i32 1
  %358 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %357, i32 0, i32 8
  %359 = load i32, ptr %358, align 8, !tbaa !29
  %360 = icmp eq i32 %359, 8
  br i1 %360, label %361, label %362

361:                                              ; preds = %355
  br label %388

362:                                              ; preds = %355
  %363 = load ptr, ptr %2, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %363, i32 0, i32 1
  %365 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %364, i32 0, i32 8
  %366 = load i32, ptr %365, align 8, !tbaa !29
  %367 = icmp eq i32 %366, 9
  br i1 %367, label %368, label %369

368:                                              ; preds = %362
  br label %386

369:                                              ; preds = %362
  %370 = load ptr, ptr %2, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %370, i32 0, i32 1
  %372 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %371, i32 0, i32 8
  %373 = load i32, ptr %372, align 8, !tbaa !29
  %374 = icmp eq i32 %373, 10
  br i1 %374, label %375, label %376

375:                                              ; preds = %369
  br label %384

376:                                              ; preds = %369
  %377 = load ptr, ptr %2, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %377, i32 0, i32 1
  %379 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %378, i32 0, i32 8
  %380 = load i32, ptr %379, align 8, !tbaa !29
  %381 = icmp eq i32 %380, 11
  %382 = zext i1 %381 to i64
  %383 = select i1 %381, i32 256, i32 1
  br label %384

384:                                              ; preds = %376, %375
  %385 = phi i32 [ 128, %375 ], [ %383, %376 ]
  br label %386

386:                                              ; preds = %384, %368
  %387 = phi i32 [ 64, %368 ], [ %385, %384 ]
  br label %388

388:                                              ; preds = %386, %361
  %389 = phi i32 [ 32, %361 ], [ %387, %386 ]
  br label %390

390:                                              ; preds = %388, %354
  %391 = phi i32 [ 16, %354 ], [ %389, %388 ]
  br label %392

392:                                              ; preds = %390, %347
  %393 = phi i32 [ 12, %347 ], [ %391, %390 ]
  br label %394

394:                                              ; preds = %392, %340
  %395 = phi i32 [ 10, %340 ], [ %393, %392 ]
  br label %396

396:                                              ; preds = %394, %333
  %397 = phi i32 [ 8, %333 ], [ %395, %394 ]
  br label %398

398:                                              ; preds = %396, %326
  %399 = phi i32 [ 6, %326 ], [ %397, %396 ]
  br label %400

400:                                              ; preds = %398, %319
  %401 = phi i32 [ 4, %319 ], [ %399, %398 ]
  br label %402

402:                                              ; preds = %400, %312
  %403 = phi i32 [ 2, %312 ], [ %401, %400 ]
  br label %404

404:                                              ; preds = %402, %305
  %405 = phi i32 [ 1, %305 ], [ %403, %402 ]
  %406 = udiv i32 %299, %405
  store i32 %406, ptr %8, align 4, !tbaa !9
  br label %1076

407:                                              ; preds = %296
  call void @HAL_RCCEx_GetPLL2ClockFreq(ptr noundef %9)
  %408 = getelementptr inbounds %struct.PLL2_ClocksTypeDef, ptr %9, i32 0, i32 1
  %409 = load i32, ptr %408, align 4, !tbaa !33
  %410 = load ptr, ptr %2, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %410, i32 0, i32 1
  %412 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %411, i32 0, i32 8
  %413 = load i32, ptr %412, align 8, !tbaa !29
  %414 = icmp eq i32 %413, 0
  br i1 %414, label %415, label %416

415:                                              ; preds = %407
  br label %514

416:                                              ; preds = %407
  %417 = load ptr, ptr %2, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %417, i32 0, i32 1
  %419 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %418, i32 0, i32 8
  %420 = load i32, ptr %419, align 8, !tbaa !29
  %421 = icmp eq i32 %420, 1
  br i1 %421, label %422, label %423

422:                                              ; preds = %416
  br label %512

423:                                              ; preds = %416
  %424 = load ptr, ptr %2, align 8, !tbaa !5
  %425 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %424, i32 0, i32 1
  %426 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %425, i32 0, i32 8
  %427 = load i32, ptr %426, align 8, !tbaa !29
  %428 = icmp eq i32 %427, 2
  br i1 %428, label %429, label %430

429:                                              ; preds = %423
  br label %510

430:                                              ; preds = %423
  %431 = load ptr, ptr %2, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %431, i32 0, i32 1
  %433 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %432, i32 0, i32 8
  %434 = load i32, ptr %433, align 8, !tbaa !29
  %435 = icmp eq i32 %434, 3
  br i1 %435, label %436, label %437

436:                                              ; preds = %430
  br label %508

437:                                              ; preds = %430
  %438 = load ptr, ptr %2, align 8, !tbaa !5
  %439 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %438, i32 0, i32 1
  %440 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %439, i32 0, i32 8
  %441 = load i32, ptr %440, align 8, !tbaa !29
  %442 = icmp eq i32 %441, 4
  br i1 %442, label %443, label %444

443:                                              ; preds = %437
  br label %506

444:                                              ; preds = %437
  %445 = load ptr, ptr %2, align 8, !tbaa !5
  %446 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %445, i32 0, i32 1
  %447 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %446, i32 0, i32 8
  %448 = load i32, ptr %447, align 8, !tbaa !29
  %449 = icmp eq i32 %448, 5
  br i1 %449, label %450, label %451

450:                                              ; preds = %444
  br label %504

451:                                              ; preds = %444
  %452 = load ptr, ptr %2, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %452, i32 0, i32 1
  %454 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %453, i32 0, i32 8
  %455 = load i32, ptr %454, align 8, !tbaa !29
  %456 = icmp eq i32 %455, 6
  br i1 %456, label %457, label %458

457:                                              ; preds = %451
  br label %502

458:                                              ; preds = %451
  %459 = load ptr, ptr %2, align 8, !tbaa !5
  %460 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %459, i32 0, i32 1
  %461 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %460, i32 0, i32 8
  %462 = load i32, ptr %461, align 8, !tbaa !29
  %463 = icmp eq i32 %462, 7
  br i1 %463, label %464, label %465

464:                                              ; preds = %458
  br label %500

465:                                              ; preds = %458
  %466 = load ptr, ptr %2, align 8, !tbaa !5
  %467 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %466, i32 0, i32 1
  %468 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %467, i32 0, i32 8
  %469 = load i32, ptr %468, align 8, !tbaa !29
  %470 = icmp eq i32 %469, 8
  br i1 %470, label %471, label %472

471:                                              ; preds = %465
  br label %498

472:                                              ; preds = %465
  %473 = load ptr, ptr %2, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %473, i32 0, i32 1
  %475 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %474, i32 0, i32 8
  %476 = load i32, ptr %475, align 8, !tbaa !29
  %477 = icmp eq i32 %476, 9
  br i1 %477, label %478, label %479

478:                                              ; preds = %472
  br label %496

479:                                              ; preds = %472
  %480 = load ptr, ptr %2, align 8, !tbaa !5
  %481 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %480, i32 0, i32 1
  %482 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %481, i32 0, i32 8
  %483 = load i32, ptr %482, align 8, !tbaa !29
  %484 = icmp eq i32 %483, 10
  br i1 %484, label %485, label %486

485:                                              ; preds = %479
  br label %494

486:                                              ; preds = %479
  %487 = load ptr, ptr %2, align 8, !tbaa !5
  %488 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %487, i32 0, i32 1
  %489 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %488, i32 0, i32 8
  %490 = load i32, ptr %489, align 8, !tbaa !29
  %491 = icmp eq i32 %490, 11
  %492 = zext i1 %491 to i64
  %493 = select i1 %491, i32 256, i32 1
  br label %494

494:                                              ; preds = %486, %485
  %495 = phi i32 [ 128, %485 ], [ %493, %486 ]
  br label %496

496:                                              ; preds = %494, %478
  %497 = phi i32 [ 64, %478 ], [ %495, %494 ]
  br label %498

498:                                              ; preds = %496, %471
  %499 = phi i32 [ 32, %471 ], [ %497, %496 ]
  br label %500

500:                                              ; preds = %498, %464
  %501 = phi i32 [ 16, %464 ], [ %499, %498 ]
  br label %502

502:                                              ; preds = %500, %457
  %503 = phi i32 [ 12, %457 ], [ %501, %500 ]
  br label %504

504:                                              ; preds = %502, %450
  %505 = phi i32 [ 10, %450 ], [ %503, %502 ]
  br label %506

506:                                              ; preds = %504, %443
  %507 = phi i32 [ 8, %443 ], [ %505, %504 ]
  br label %508

508:                                              ; preds = %506, %436
  %509 = phi i32 [ 6, %436 ], [ %507, %506 ]
  br label %510

510:                                              ; preds = %508, %429
  %511 = phi i32 [ 4, %429 ], [ %509, %508 ]
  br label %512

512:                                              ; preds = %510, %422
  %513 = phi i32 [ 2, %422 ], [ %511, %510 ]
  br label %514

514:                                              ; preds = %512, %415
  %515 = phi i32 [ 1, %415 ], [ %513, %512 ]
  %516 = udiv i32 %409, %515
  store i32 %516, ptr %8, align 4, !tbaa !9
  br label %1076

517:                                              ; preds = %296
  call void @HAL_RCCEx_GetPLL3ClockFreq(ptr noundef %10)
  %518 = getelementptr inbounds %struct.PLL3_ClocksTypeDef, ptr %10, i32 0, i32 1
  %519 = load i32, ptr %518, align 4, !tbaa !33
  %520 = load ptr, ptr %2, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %520, i32 0, i32 1
  %522 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %521, i32 0, i32 8
  %523 = load i32, ptr %522, align 8, !tbaa !29
  %524 = icmp eq i32 %523, 0
  br i1 %524, label %525, label %526

525:                                              ; preds = %517
  br label %624

526:                                              ; preds = %517
  %527 = load ptr, ptr %2, align 8, !tbaa !5
  %528 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %527, i32 0, i32 1
  %529 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %528, i32 0, i32 8
  %530 = load i32, ptr %529, align 8, !tbaa !29
  %531 = icmp eq i32 %530, 1
  br i1 %531, label %532, label %533

532:                                              ; preds = %526
  br label %622

533:                                              ; preds = %526
  %534 = load ptr, ptr %2, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %534, i32 0, i32 1
  %536 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %535, i32 0, i32 8
  %537 = load i32, ptr %536, align 8, !tbaa !29
  %538 = icmp eq i32 %537, 2
  br i1 %538, label %539, label %540

539:                                              ; preds = %533
  br label %620

540:                                              ; preds = %533
  %541 = load ptr, ptr %2, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %541, i32 0, i32 1
  %543 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %542, i32 0, i32 8
  %544 = load i32, ptr %543, align 8, !tbaa !29
  %545 = icmp eq i32 %544, 3
  br i1 %545, label %546, label %547

546:                                              ; preds = %540
  br label %618

547:                                              ; preds = %540
  %548 = load ptr, ptr %2, align 8, !tbaa !5
  %549 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %548, i32 0, i32 1
  %550 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %549, i32 0, i32 8
  %551 = load i32, ptr %550, align 8, !tbaa !29
  %552 = icmp eq i32 %551, 4
  br i1 %552, label %553, label %554

553:                                              ; preds = %547
  br label %616

554:                                              ; preds = %547
  %555 = load ptr, ptr %2, align 8, !tbaa !5
  %556 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %555, i32 0, i32 1
  %557 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %556, i32 0, i32 8
  %558 = load i32, ptr %557, align 8, !tbaa !29
  %559 = icmp eq i32 %558, 5
  br i1 %559, label %560, label %561

560:                                              ; preds = %554
  br label %614

561:                                              ; preds = %554
  %562 = load ptr, ptr %2, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %562, i32 0, i32 1
  %564 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %563, i32 0, i32 8
  %565 = load i32, ptr %564, align 8, !tbaa !29
  %566 = icmp eq i32 %565, 6
  br i1 %566, label %567, label %568

567:                                              ; preds = %561
  br label %612

568:                                              ; preds = %561
  %569 = load ptr, ptr %2, align 8, !tbaa !5
  %570 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %569, i32 0, i32 1
  %571 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %570, i32 0, i32 8
  %572 = load i32, ptr %571, align 8, !tbaa !29
  %573 = icmp eq i32 %572, 7
  br i1 %573, label %574, label %575

574:                                              ; preds = %568
  br label %610

575:                                              ; preds = %568
  %576 = load ptr, ptr %2, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %576, i32 0, i32 1
  %578 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %577, i32 0, i32 8
  %579 = load i32, ptr %578, align 8, !tbaa !29
  %580 = icmp eq i32 %579, 8
  br i1 %580, label %581, label %582

581:                                              ; preds = %575
  br label %608

582:                                              ; preds = %575
  %583 = load ptr, ptr %2, align 8, !tbaa !5
  %584 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %583, i32 0, i32 1
  %585 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %584, i32 0, i32 8
  %586 = load i32, ptr %585, align 8, !tbaa !29
  %587 = icmp eq i32 %586, 9
  br i1 %587, label %588, label %589

588:                                              ; preds = %582
  br label %606

589:                                              ; preds = %582
  %590 = load ptr, ptr %2, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %590, i32 0, i32 1
  %592 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %591, i32 0, i32 8
  %593 = load i32, ptr %592, align 8, !tbaa !29
  %594 = icmp eq i32 %593, 10
  br i1 %594, label %595, label %596

595:                                              ; preds = %589
  br label %604

596:                                              ; preds = %589
  %597 = load ptr, ptr %2, align 8, !tbaa !5
  %598 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %597, i32 0, i32 1
  %599 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %598, i32 0, i32 8
  %600 = load i32, ptr %599, align 8, !tbaa !29
  %601 = icmp eq i32 %600, 11
  %602 = zext i1 %601 to i64
  %603 = select i1 %601, i32 256, i32 1
  br label %604

604:                                              ; preds = %596, %595
  %605 = phi i32 [ 128, %595 ], [ %603, %596 ]
  br label %606

606:                                              ; preds = %604, %588
  %607 = phi i32 [ 64, %588 ], [ %605, %604 ]
  br label %608

608:                                              ; preds = %606, %581
  %609 = phi i32 [ 32, %581 ], [ %607, %606 ]
  br label %610

610:                                              ; preds = %608, %574
  %611 = phi i32 [ 16, %574 ], [ %609, %608 ]
  br label %612

612:                                              ; preds = %610, %567
  %613 = phi i32 [ 12, %567 ], [ %611, %610 ]
  br label %614

614:                                              ; preds = %612, %560
  %615 = phi i32 [ 10, %560 ], [ %613, %612 ]
  br label %616

616:                                              ; preds = %614, %553
  %617 = phi i32 [ 8, %553 ], [ %615, %614 ]
  br label %618

618:                                              ; preds = %616, %546
  %619 = phi i32 [ 6, %546 ], [ %617, %616 ]
  br label %620

620:                                              ; preds = %618, %539
  %621 = phi i32 [ 4, %539 ], [ %619, %618 ]
  br label %622

622:                                              ; preds = %620, %532
  %623 = phi i32 [ 2, %532 ], [ %621, %620 ]
  br label %624

624:                                              ; preds = %622, %525
  %625 = phi i32 [ 1, %525 ], [ %623, %622 ]
  %626 = udiv i32 %519, %625
  store i32 %626, ptr %8, align 4, !tbaa !9
  br label %1076

627:                                              ; preds = %296
  %628 = load volatile i32, ptr inttoptr (i64 1476543488 to ptr), align 4, !tbaa !35
  %629 = zext i32 %628 to i64
  %630 = and i64 %629, 32
  %631 = icmp ne i64 %630, 0
  %632 = zext i1 %631 to i64
  %633 = select i1 %631, i32 1, i32 0
  %634 = icmp ne i32 %633, 0
  br i1 %634, label %635, label %749

635:                                              ; preds = %627
  %636 = load volatile i32, ptr inttoptr (i64 1476543488 to ptr), align 4, !tbaa !35
  %637 = zext i32 %636 to i64
  %638 = and i64 %637, 24
  %639 = trunc i64 %638 to i32
  %640 = lshr i32 %639, 3
  %641 = lshr i32 64000000, %640
  %642 = load ptr, ptr %2, align 8, !tbaa !5
  %643 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %642, i32 0, i32 1
  %644 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %643, i32 0, i32 8
  %645 = load i32, ptr %644, align 8, !tbaa !29
  %646 = icmp eq i32 %645, 0
  br i1 %646, label %647, label %648

647:                                              ; preds = %635
  br label %746

648:                                              ; preds = %635
  %649 = load ptr, ptr %2, align 8, !tbaa !5
  %650 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %649, i32 0, i32 1
  %651 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %650, i32 0, i32 8
  %652 = load i32, ptr %651, align 8, !tbaa !29
  %653 = icmp eq i32 %652, 1
  br i1 %653, label %654, label %655

654:                                              ; preds = %648
  br label %744

655:                                              ; preds = %648
  %656 = load ptr, ptr %2, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %656, i32 0, i32 1
  %658 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %657, i32 0, i32 8
  %659 = load i32, ptr %658, align 8, !tbaa !29
  %660 = icmp eq i32 %659, 2
  br i1 %660, label %661, label %662

661:                                              ; preds = %655
  br label %742

662:                                              ; preds = %655
  %663 = load ptr, ptr %2, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %663, i32 0, i32 1
  %665 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %664, i32 0, i32 8
  %666 = load i32, ptr %665, align 8, !tbaa !29
  %667 = icmp eq i32 %666, 3
  br i1 %667, label %668, label %669

668:                                              ; preds = %662
  br label %740

669:                                              ; preds = %662
  %670 = load ptr, ptr %2, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %670, i32 0, i32 1
  %672 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %671, i32 0, i32 8
  %673 = load i32, ptr %672, align 8, !tbaa !29
  %674 = icmp eq i32 %673, 4
  br i1 %674, label %675, label %676

675:                                              ; preds = %669
  br label %738

676:                                              ; preds = %669
  %677 = load ptr, ptr %2, align 8, !tbaa !5
  %678 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %677, i32 0, i32 1
  %679 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %678, i32 0, i32 8
  %680 = load i32, ptr %679, align 8, !tbaa !29
  %681 = icmp eq i32 %680, 5
  br i1 %681, label %682, label %683

682:                                              ; preds = %676
  br label %736

683:                                              ; preds = %676
  %684 = load ptr, ptr %2, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %684, i32 0, i32 1
  %686 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %685, i32 0, i32 8
  %687 = load i32, ptr %686, align 8, !tbaa !29
  %688 = icmp eq i32 %687, 6
  br i1 %688, label %689, label %690

689:                                              ; preds = %683
  br label %734

690:                                              ; preds = %683
  %691 = load ptr, ptr %2, align 8, !tbaa !5
  %692 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %691, i32 0, i32 1
  %693 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %692, i32 0, i32 8
  %694 = load i32, ptr %693, align 8, !tbaa !29
  %695 = icmp eq i32 %694, 7
  br i1 %695, label %696, label %697

696:                                              ; preds = %690
  br label %732

697:                                              ; preds = %690
  %698 = load ptr, ptr %2, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %698, i32 0, i32 1
  %700 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %699, i32 0, i32 8
  %701 = load i32, ptr %700, align 8, !tbaa !29
  %702 = icmp eq i32 %701, 8
  br i1 %702, label %703, label %704

703:                                              ; preds = %697
  br label %730

704:                                              ; preds = %697
  %705 = load ptr, ptr %2, align 8, !tbaa !5
  %706 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %705, i32 0, i32 1
  %707 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %706, i32 0, i32 8
  %708 = load i32, ptr %707, align 8, !tbaa !29
  %709 = icmp eq i32 %708, 9
  br i1 %709, label %710, label %711

710:                                              ; preds = %704
  br label %728

711:                                              ; preds = %704
  %712 = load ptr, ptr %2, align 8, !tbaa !5
  %713 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %712, i32 0, i32 1
  %714 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %713, i32 0, i32 8
  %715 = load i32, ptr %714, align 8, !tbaa !29
  %716 = icmp eq i32 %715, 10
  br i1 %716, label %717, label %718

717:                                              ; preds = %711
  br label %726

718:                                              ; preds = %711
  %719 = load ptr, ptr %2, align 8, !tbaa !5
  %720 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %719, i32 0, i32 1
  %721 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %720, i32 0, i32 8
  %722 = load i32, ptr %721, align 8, !tbaa !29
  %723 = icmp eq i32 %722, 11
  %724 = zext i1 %723 to i64
  %725 = select i1 %723, i32 256, i32 1
  br label %726

726:                                              ; preds = %718, %717
  %727 = phi i32 [ 128, %717 ], [ %725, %718 ]
  br label %728

728:                                              ; preds = %726, %710
  %729 = phi i32 [ 64, %710 ], [ %727, %726 ]
  br label %730

730:                                              ; preds = %728, %703
  %731 = phi i32 [ 32, %703 ], [ %729, %728 ]
  br label %732

732:                                              ; preds = %730, %696
  %733 = phi i32 [ 16, %696 ], [ %731, %730 ]
  br label %734

734:                                              ; preds = %732, %689
  %735 = phi i32 [ 12, %689 ], [ %733, %732 ]
  br label %736

736:                                              ; preds = %734, %682
  %737 = phi i32 [ 10, %682 ], [ %735, %734 ]
  br label %738

738:                                              ; preds = %736, %675
  %739 = phi i32 [ 8, %675 ], [ %737, %736 ]
  br label %740

740:                                              ; preds = %738, %668
  %741 = phi i32 [ 6, %668 ], [ %739, %738 ]
  br label %742

742:                                              ; preds = %740, %661
  %743 = phi i32 [ 4, %661 ], [ %741, %740 ]
  br label %744

744:                                              ; preds = %742, %654
  %745 = phi i32 [ 2, %654 ], [ %743, %742 ]
  br label %746

746:                                              ; preds = %744, %647
  %747 = phi i32 [ 1, %647 ], [ %745, %744 ]
  %748 = udiv i32 %641, %747
  store i32 %748, ptr %8, align 4, !tbaa !9
  br label %857

749:                                              ; preds = %627
  %750 = load ptr, ptr %2, align 8, !tbaa !5
  %751 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %750, i32 0, i32 1
  %752 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %751, i32 0, i32 8
  %753 = load i32, ptr %752, align 8, !tbaa !29
  %754 = icmp eq i32 %753, 0
  br i1 %754, label %755, label %756

755:                                              ; preds = %749
  br label %854

756:                                              ; preds = %749
  %757 = load ptr, ptr %2, align 8, !tbaa !5
  %758 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %757, i32 0, i32 1
  %759 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %758, i32 0, i32 8
  %760 = load i32, ptr %759, align 8, !tbaa !29
  %761 = icmp eq i32 %760, 1
  br i1 %761, label %762, label %763

762:                                              ; preds = %756
  br label %852

763:                                              ; preds = %756
  %764 = load ptr, ptr %2, align 8, !tbaa !5
  %765 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %764, i32 0, i32 1
  %766 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %765, i32 0, i32 8
  %767 = load i32, ptr %766, align 8, !tbaa !29
  %768 = icmp eq i32 %767, 2
  br i1 %768, label %769, label %770

769:                                              ; preds = %763
  br label %850

770:                                              ; preds = %763
  %771 = load ptr, ptr %2, align 8, !tbaa !5
  %772 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %771, i32 0, i32 1
  %773 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %772, i32 0, i32 8
  %774 = load i32, ptr %773, align 8, !tbaa !29
  %775 = icmp eq i32 %774, 3
  br i1 %775, label %776, label %777

776:                                              ; preds = %770
  br label %848

777:                                              ; preds = %770
  %778 = load ptr, ptr %2, align 8, !tbaa !5
  %779 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %778, i32 0, i32 1
  %780 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %779, i32 0, i32 8
  %781 = load i32, ptr %780, align 8, !tbaa !29
  %782 = icmp eq i32 %781, 4
  br i1 %782, label %783, label %784

783:                                              ; preds = %777
  br label %846

784:                                              ; preds = %777
  %785 = load ptr, ptr %2, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %785, i32 0, i32 1
  %787 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %786, i32 0, i32 8
  %788 = load i32, ptr %787, align 8, !tbaa !29
  %789 = icmp eq i32 %788, 5
  br i1 %789, label %790, label %791

790:                                              ; preds = %784
  br label %844

791:                                              ; preds = %784
  %792 = load ptr, ptr %2, align 8, !tbaa !5
  %793 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %792, i32 0, i32 1
  %794 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %793, i32 0, i32 8
  %795 = load i32, ptr %794, align 8, !tbaa !29
  %796 = icmp eq i32 %795, 6
  br i1 %796, label %797, label %798

797:                                              ; preds = %791
  br label %842

798:                                              ; preds = %791
  %799 = load ptr, ptr %2, align 8, !tbaa !5
  %800 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %799, i32 0, i32 1
  %801 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %800, i32 0, i32 8
  %802 = load i32, ptr %801, align 8, !tbaa !29
  %803 = icmp eq i32 %802, 7
  br i1 %803, label %804, label %805

804:                                              ; preds = %798
  br label %840

805:                                              ; preds = %798
  %806 = load ptr, ptr %2, align 8, !tbaa !5
  %807 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %806, i32 0, i32 1
  %808 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %807, i32 0, i32 8
  %809 = load i32, ptr %808, align 8, !tbaa !29
  %810 = icmp eq i32 %809, 8
  br i1 %810, label %811, label %812

811:                                              ; preds = %805
  br label %838

812:                                              ; preds = %805
  %813 = load ptr, ptr %2, align 8, !tbaa !5
  %814 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %813, i32 0, i32 1
  %815 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %814, i32 0, i32 8
  %816 = load i32, ptr %815, align 8, !tbaa !29
  %817 = icmp eq i32 %816, 9
  br i1 %817, label %818, label %819

818:                                              ; preds = %812
  br label %836

819:                                              ; preds = %812
  %820 = load ptr, ptr %2, align 8, !tbaa !5
  %821 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %820, i32 0, i32 1
  %822 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %821, i32 0, i32 8
  %823 = load i32, ptr %822, align 8, !tbaa !29
  %824 = icmp eq i32 %823, 10
  br i1 %824, label %825, label %826

825:                                              ; preds = %819
  br label %834

826:                                              ; preds = %819
  %827 = load ptr, ptr %2, align 8, !tbaa !5
  %828 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %827, i32 0, i32 1
  %829 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %828, i32 0, i32 8
  %830 = load i32, ptr %829, align 8, !tbaa !29
  %831 = icmp eq i32 %830, 11
  %832 = zext i1 %831 to i64
  %833 = select i1 %831, i32 256, i32 1
  br label %834

834:                                              ; preds = %826, %825
  %835 = phi i32 [ 128, %825 ], [ %833, %826 ]
  br label %836

836:                                              ; preds = %834, %818
  %837 = phi i32 [ 64, %818 ], [ %835, %834 ]
  br label %838

838:                                              ; preds = %836, %811
  %839 = phi i32 [ 32, %811 ], [ %837, %836 ]
  br label %840

840:                                              ; preds = %838, %804
  %841 = phi i32 [ 16, %804 ], [ %839, %838 ]
  br label %842

842:                                              ; preds = %840, %797
  %843 = phi i32 [ 12, %797 ], [ %841, %840 ]
  br label %844

844:                                              ; preds = %842, %790
  %845 = phi i32 [ 10, %790 ], [ %843, %842 ]
  br label %846

846:                                              ; preds = %844, %783
  %847 = phi i32 [ 8, %783 ], [ %845, %844 ]
  br label %848

848:                                              ; preds = %846, %776
  %849 = phi i32 [ 6, %776 ], [ %847, %846 ]
  br label %850

850:                                              ; preds = %848, %769
  %851 = phi i32 [ 4, %769 ], [ %849, %848 ]
  br label %852

852:                                              ; preds = %850, %762
  %853 = phi i32 [ 2, %762 ], [ %851, %850 ]
  br label %854

854:                                              ; preds = %852, %755
  %855 = phi i32 [ 1, %755 ], [ %853, %852 ]
  %856 = udiv i32 64000000, %855
  store i32 %856, ptr %8, align 4, !tbaa !9
  br label %857

857:                                              ; preds = %854, %746
  br label %1076

858:                                              ; preds = %296
  %859 = load ptr, ptr %2, align 8, !tbaa !5
  %860 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %859, i32 0, i32 1
  %861 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %860, i32 0, i32 8
  %862 = load i32, ptr %861, align 8, !tbaa !29
  %863 = icmp eq i32 %862, 0
  br i1 %863, label %864, label %865

864:                                              ; preds = %858
  br label %963

865:                                              ; preds = %858
  %866 = load ptr, ptr %2, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %866, i32 0, i32 1
  %868 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %867, i32 0, i32 8
  %869 = load i32, ptr %868, align 8, !tbaa !29
  %870 = icmp eq i32 %869, 1
  br i1 %870, label %871, label %872

871:                                              ; preds = %865
  br label %961

872:                                              ; preds = %865
  %873 = load ptr, ptr %2, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %873, i32 0, i32 1
  %875 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %874, i32 0, i32 8
  %876 = load i32, ptr %875, align 8, !tbaa !29
  %877 = icmp eq i32 %876, 2
  br i1 %877, label %878, label %879

878:                                              ; preds = %872
  br label %959

879:                                              ; preds = %872
  %880 = load ptr, ptr %2, align 8, !tbaa !5
  %881 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %880, i32 0, i32 1
  %882 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %881, i32 0, i32 8
  %883 = load i32, ptr %882, align 8, !tbaa !29
  %884 = icmp eq i32 %883, 3
  br i1 %884, label %885, label %886

885:                                              ; preds = %879
  br label %957

886:                                              ; preds = %879
  %887 = load ptr, ptr %2, align 8, !tbaa !5
  %888 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %887, i32 0, i32 1
  %889 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %888, i32 0, i32 8
  %890 = load i32, ptr %889, align 8, !tbaa !29
  %891 = icmp eq i32 %890, 4
  br i1 %891, label %892, label %893

892:                                              ; preds = %886
  br label %955

893:                                              ; preds = %886
  %894 = load ptr, ptr %2, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %894, i32 0, i32 1
  %896 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %895, i32 0, i32 8
  %897 = load i32, ptr %896, align 8, !tbaa !29
  %898 = icmp eq i32 %897, 5
  br i1 %898, label %899, label %900

899:                                              ; preds = %893
  br label %953

900:                                              ; preds = %893
  %901 = load ptr, ptr %2, align 8, !tbaa !5
  %902 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %901, i32 0, i32 1
  %903 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %902, i32 0, i32 8
  %904 = load i32, ptr %903, align 8, !tbaa !29
  %905 = icmp eq i32 %904, 6
  br i1 %905, label %906, label %907

906:                                              ; preds = %900
  br label %951

907:                                              ; preds = %900
  %908 = load ptr, ptr %2, align 8, !tbaa !5
  %909 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %908, i32 0, i32 1
  %910 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %909, i32 0, i32 8
  %911 = load i32, ptr %910, align 8, !tbaa !29
  %912 = icmp eq i32 %911, 7
  br i1 %912, label %913, label %914

913:                                              ; preds = %907
  br label %949

914:                                              ; preds = %907
  %915 = load ptr, ptr %2, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %915, i32 0, i32 1
  %917 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %916, i32 0, i32 8
  %918 = load i32, ptr %917, align 8, !tbaa !29
  %919 = icmp eq i32 %918, 8
  br i1 %919, label %920, label %921

920:                                              ; preds = %914
  br label %947

921:                                              ; preds = %914
  %922 = load ptr, ptr %2, align 8, !tbaa !5
  %923 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %922, i32 0, i32 1
  %924 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %923, i32 0, i32 8
  %925 = load i32, ptr %924, align 8, !tbaa !29
  %926 = icmp eq i32 %925, 9
  br i1 %926, label %927, label %928

927:                                              ; preds = %921
  br label %945

928:                                              ; preds = %921
  %929 = load ptr, ptr %2, align 8, !tbaa !5
  %930 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %929, i32 0, i32 1
  %931 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %930, i32 0, i32 8
  %932 = load i32, ptr %931, align 8, !tbaa !29
  %933 = icmp eq i32 %932, 10
  br i1 %933, label %934, label %935

934:                                              ; preds = %928
  br label %943

935:                                              ; preds = %928
  %936 = load ptr, ptr %2, align 8, !tbaa !5
  %937 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %936, i32 0, i32 1
  %938 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %937, i32 0, i32 8
  %939 = load i32, ptr %938, align 8, !tbaa !29
  %940 = icmp eq i32 %939, 11
  %941 = zext i1 %940 to i64
  %942 = select i1 %940, i32 256, i32 1
  br label %943

943:                                              ; preds = %935, %934
  %944 = phi i32 [ 128, %934 ], [ %942, %935 ]
  br label %945

945:                                              ; preds = %943, %927
  %946 = phi i32 [ 64, %927 ], [ %944, %943 ]
  br label %947

947:                                              ; preds = %945, %920
  %948 = phi i32 [ 32, %920 ], [ %946, %945 ]
  br label %949

949:                                              ; preds = %947, %913
  %950 = phi i32 [ 16, %913 ], [ %948, %947 ]
  br label %951

951:                                              ; preds = %949, %906
  %952 = phi i32 [ 12, %906 ], [ %950, %949 ]
  br label %953

953:                                              ; preds = %951, %899
  %954 = phi i32 [ 10, %899 ], [ %952, %951 ]
  br label %955

955:                                              ; preds = %953, %892
  %956 = phi i32 [ 8, %892 ], [ %954, %953 ]
  br label %957

957:                                              ; preds = %955, %885
  %958 = phi i32 [ 6, %885 ], [ %956, %955 ]
  br label %959

959:                                              ; preds = %957, %878
  %960 = phi i32 [ 4, %878 ], [ %958, %957 ]
  br label %961

961:                                              ; preds = %959, %871
  %962 = phi i32 [ 2, %871 ], [ %960, %959 ]
  br label %963

963:                                              ; preds = %961, %864
  %964 = phi i32 [ 1, %864 ], [ %962, %961 ]
  %965 = udiv i32 4000000, %964
  store i32 %965, ptr %8, align 4, !tbaa !9
  br label %1076

966:                                              ; preds = %296
  %967 = load ptr, ptr %2, align 8, !tbaa !5
  %968 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %967, i32 0, i32 1
  %969 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %968, i32 0, i32 8
  %970 = load i32, ptr %969, align 8, !tbaa !29
  %971 = icmp eq i32 %970, 0
  br i1 %971, label %972, label %973

972:                                              ; preds = %966
  br label %1071

973:                                              ; preds = %966
  %974 = load ptr, ptr %2, align 8, !tbaa !5
  %975 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %974, i32 0, i32 1
  %976 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %975, i32 0, i32 8
  %977 = load i32, ptr %976, align 8, !tbaa !29
  %978 = icmp eq i32 %977, 1
  br i1 %978, label %979, label %980

979:                                              ; preds = %973
  br label %1069

980:                                              ; preds = %973
  %981 = load ptr, ptr %2, align 8, !tbaa !5
  %982 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %981, i32 0, i32 1
  %983 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %982, i32 0, i32 8
  %984 = load i32, ptr %983, align 8, !tbaa !29
  %985 = icmp eq i32 %984, 2
  br i1 %985, label %986, label %987

986:                                              ; preds = %980
  br label %1067

987:                                              ; preds = %980
  %988 = load ptr, ptr %2, align 8, !tbaa !5
  %989 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %988, i32 0, i32 1
  %990 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %989, i32 0, i32 8
  %991 = load i32, ptr %990, align 8, !tbaa !29
  %992 = icmp eq i32 %991, 3
  br i1 %992, label %993, label %994

993:                                              ; preds = %987
  br label %1065

994:                                              ; preds = %987
  %995 = load ptr, ptr %2, align 8, !tbaa !5
  %996 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %995, i32 0, i32 1
  %997 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %996, i32 0, i32 8
  %998 = load i32, ptr %997, align 8, !tbaa !29
  %999 = icmp eq i32 %998, 4
  br i1 %999, label %1000, label %1001

1000:                                             ; preds = %994
  br label %1063

1001:                                             ; preds = %994
  %1002 = load ptr, ptr %2, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1002, i32 0, i32 1
  %1004 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1003, i32 0, i32 8
  %1005 = load i32, ptr %1004, align 8, !tbaa !29
  %1006 = icmp eq i32 %1005, 5
  br i1 %1006, label %1007, label %1008

1007:                                             ; preds = %1001
  br label %1061

1008:                                             ; preds = %1001
  %1009 = load ptr, ptr %2, align 8, !tbaa !5
  %1010 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1009, i32 0, i32 1
  %1011 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1010, i32 0, i32 8
  %1012 = load i32, ptr %1011, align 8, !tbaa !29
  %1013 = icmp eq i32 %1012, 6
  br i1 %1013, label %1014, label %1015

1014:                                             ; preds = %1008
  br label %1059

1015:                                             ; preds = %1008
  %1016 = load ptr, ptr %2, align 8, !tbaa !5
  %1017 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1016, i32 0, i32 1
  %1018 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1017, i32 0, i32 8
  %1019 = load i32, ptr %1018, align 8, !tbaa !29
  %1020 = icmp eq i32 %1019, 7
  br i1 %1020, label %1021, label %1022

1021:                                             ; preds = %1015
  br label %1057

1022:                                             ; preds = %1015
  %1023 = load ptr, ptr %2, align 8, !tbaa !5
  %1024 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1023, i32 0, i32 1
  %1025 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1024, i32 0, i32 8
  %1026 = load i32, ptr %1025, align 8, !tbaa !29
  %1027 = icmp eq i32 %1026, 8
  br i1 %1027, label %1028, label %1029

1028:                                             ; preds = %1022
  br label %1055

1029:                                             ; preds = %1022
  %1030 = load ptr, ptr %2, align 8, !tbaa !5
  %1031 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1030, i32 0, i32 1
  %1032 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1031, i32 0, i32 8
  %1033 = load i32, ptr %1032, align 8, !tbaa !29
  %1034 = icmp eq i32 %1033, 9
  br i1 %1034, label %1035, label %1036

1035:                                             ; preds = %1029
  br label %1053

1036:                                             ; preds = %1029
  %1037 = load ptr, ptr %2, align 8, !tbaa !5
  %1038 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1037, i32 0, i32 1
  %1039 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1038, i32 0, i32 8
  %1040 = load i32, ptr %1039, align 8, !tbaa !29
  %1041 = icmp eq i32 %1040, 10
  br i1 %1041, label %1042, label %1043

1042:                                             ; preds = %1036
  br label %1051

1043:                                             ; preds = %1036
  %1044 = load ptr, ptr %2, align 8, !tbaa !5
  %1045 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1044, i32 0, i32 1
  %1046 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1045, i32 0, i32 8
  %1047 = load i32, ptr %1046, align 8, !tbaa !29
  %1048 = icmp eq i32 %1047, 11
  %1049 = zext i1 %1048 to i64
  %1050 = select i1 %1048, i32 256, i32 1
  br label %1051

1051:                                             ; preds = %1043, %1042
  %1052 = phi i32 [ 128, %1042 ], [ %1050, %1043 ]
  br label %1053

1053:                                             ; preds = %1051, %1035
  %1054 = phi i32 [ 64, %1035 ], [ %1052, %1051 ]
  br label %1055

1055:                                             ; preds = %1053, %1028
  %1056 = phi i32 [ 32, %1028 ], [ %1054, %1053 ]
  br label %1057

1057:                                             ; preds = %1055, %1021
  %1058 = phi i32 [ 16, %1021 ], [ %1056, %1055 ]
  br label %1059

1059:                                             ; preds = %1057, %1014
  %1060 = phi i32 [ 12, %1014 ], [ %1058, %1057 ]
  br label %1061

1061:                                             ; preds = %1059, %1007
  %1062 = phi i32 [ 10, %1007 ], [ %1060, %1059 ]
  br label %1063

1063:                                             ; preds = %1061, %1000
  %1064 = phi i32 [ 8, %1000 ], [ %1062, %1061 ]
  br label %1065

1065:                                             ; preds = %1063, %993
  %1066 = phi i32 [ 6, %993 ], [ %1064, %1063 ]
  br label %1067

1067:                                             ; preds = %1065, %986
  %1068 = phi i32 [ 4, %986 ], [ %1066, %1065 ]
  br label %1069

1069:                                             ; preds = %1067, %979
  %1070 = phi i32 [ 2, %979 ], [ %1068, %1067 ]
  br label %1071

1071:                                             ; preds = %1069, %972
  %1072 = phi i32 [ 1, %972 ], [ %1070, %1069 ]
  %1073 = udiv i32 32768, %1072
  store i32 %1073, ptr %8, align 4, !tbaa !9
  br label %1076

1074:                                             ; preds = %296
  br label %1075

1075:                                             ; preds = %1074, %296
  store i32 1, ptr %7, align 4, !tbaa !9
  br label %1076

1076:                                             ; preds = %1075, %1071, %963, %857, %624, %514, %404
  %1077 = load i32, ptr %8, align 4, !tbaa !9
  %1078 = icmp ne i32 %1077, 0
  br i1 %1078, label %1079, label %2007

1079:                                             ; preds = %1076
  %1080 = load i32, ptr %8, align 4, !tbaa !9
  %1081 = load ptr, ptr %2, align 8, !tbaa !5
  %1082 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1081, i32 0, i32 1
  %1083 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1082, i32 0, i32 0
  %1084 = load i32, ptr %1083, align 8, !tbaa !36
  %1085 = mul i32 3, %1084
  %1086 = icmp ult i32 %1080, %1085
  br i1 %1086, label %1095, label %1087

1087:                                             ; preds = %1079
  %1088 = load i32, ptr %8, align 4, !tbaa !9
  %1089 = load ptr, ptr %2, align 8, !tbaa !5
  %1090 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1089, i32 0, i32 1
  %1091 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1090, i32 0, i32 0
  %1092 = load i32, ptr %1091, align 8, !tbaa !36
  %1093 = mul i32 4096, %1092
  %1094 = icmp ugt i32 %1088, %1093
  br i1 %1094, label %1095, label %1096

1095:                                             ; preds = %1087, %1079
  store i32 1, ptr %7, align 4, !tbaa !9
  br label %2006

1096:                                             ; preds = %1087
  %1097 = load i32, ptr %5, align 4, !tbaa !9
  switch i32 %1097, label %1991 [
    i32 2, label %1098
    i32 4, label %1224
    i32 8, label %1351
    i32 16, label %1478
    i32 32, label %1742
    i32 64, label %1866
    i32 128, label %1990
  ]

1098:                                             ; preds = %1096
  %1099 = call i32 @HAL_RCCEx_GetD3PCLK1Freq()
  %1100 = zext i32 %1099 to i64
  %1101 = load ptr, ptr %2, align 8, !tbaa !5
  %1102 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1101, i32 0, i32 1
  %1103 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1102, i32 0, i32 8
  %1104 = load i32, ptr %1103, align 8, !tbaa !29
  %1105 = icmp eq i32 %1104, 0
  br i1 %1105, label %1106, label %1107

1106:                                             ; preds = %1098
  br label %1205

1107:                                             ; preds = %1098
  %1108 = load ptr, ptr %2, align 8, !tbaa !5
  %1109 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1108, i32 0, i32 1
  %1110 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1109, i32 0, i32 8
  %1111 = load i32, ptr %1110, align 8, !tbaa !29
  %1112 = icmp eq i32 %1111, 1
  br i1 %1112, label %1113, label %1114

1113:                                             ; preds = %1107
  br label %1203

1114:                                             ; preds = %1107
  %1115 = load ptr, ptr %2, align 8, !tbaa !5
  %1116 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1115, i32 0, i32 1
  %1117 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1116, i32 0, i32 8
  %1118 = load i32, ptr %1117, align 8, !tbaa !29
  %1119 = icmp eq i32 %1118, 2
  br i1 %1119, label %1120, label %1121

1120:                                             ; preds = %1114
  br label %1201

1121:                                             ; preds = %1114
  %1122 = load ptr, ptr %2, align 8, !tbaa !5
  %1123 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1122, i32 0, i32 1
  %1124 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1123, i32 0, i32 8
  %1125 = load i32, ptr %1124, align 8, !tbaa !29
  %1126 = icmp eq i32 %1125, 3
  br i1 %1126, label %1127, label %1128

1127:                                             ; preds = %1121
  br label %1199

1128:                                             ; preds = %1121
  %1129 = load ptr, ptr %2, align 8, !tbaa !5
  %1130 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1129, i32 0, i32 1
  %1131 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1130, i32 0, i32 8
  %1132 = load i32, ptr %1131, align 8, !tbaa !29
  %1133 = icmp eq i32 %1132, 4
  br i1 %1133, label %1134, label %1135

1134:                                             ; preds = %1128
  br label %1197

1135:                                             ; preds = %1128
  %1136 = load ptr, ptr %2, align 8, !tbaa !5
  %1137 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1136, i32 0, i32 1
  %1138 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1137, i32 0, i32 8
  %1139 = load i32, ptr %1138, align 8, !tbaa !29
  %1140 = icmp eq i32 %1139, 5
  br i1 %1140, label %1141, label %1142

1141:                                             ; preds = %1135
  br label %1195

1142:                                             ; preds = %1135
  %1143 = load ptr, ptr %2, align 8, !tbaa !5
  %1144 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1143, i32 0, i32 1
  %1145 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1144, i32 0, i32 8
  %1146 = load i32, ptr %1145, align 8, !tbaa !29
  %1147 = icmp eq i32 %1146, 6
  br i1 %1147, label %1148, label %1149

1148:                                             ; preds = %1142
  br label %1193

1149:                                             ; preds = %1142
  %1150 = load ptr, ptr %2, align 8, !tbaa !5
  %1151 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1150, i32 0, i32 1
  %1152 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1151, i32 0, i32 8
  %1153 = load i32, ptr %1152, align 8, !tbaa !29
  %1154 = icmp eq i32 %1153, 7
  br i1 %1154, label %1155, label %1156

1155:                                             ; preds = %1149
  br label %1191

1156:                                             ; preds = %1149
  %1157 = load ptr, ptr %2, align 8, !tbaa !5
  %1158 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1157, i32 0, i32 1
  %1159 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1158, i32 0, i32 8
  %1160 = load i32, ptr %1159, align 8, !tbaa !29
  %1161 = icmp eq i32 %1160, 8
  br i1 %1161, label %1162, label %1163

1162:                                             ; preds = %1156
  br label %1189

1163:                                             ; preds = %1156
  %1164 = load ptr, ptr %2, align 8, !tbaa !5
  %1165 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1164, i32 0, i32 1
  %1166 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1165, i32 0, i32 8
  %1167 = load i32, ptr %1166, align 8, !tbaa !29
  %1168 = icmp eq i32 %1167, 9
  br i1 %1168, label %1169, label %1170

1169:                                             ; preds = %1163
  br label %1187

1170:                                             ; preds = %1163
  %1171 = load ptr, ptr %2, align 8, !tbaa !5
  %1172 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1171, i32 0, i32 1
  %1173 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1172, i32 0, i32 8
  %1174 = load i32, ptr %1173, align 8, !tbaa !29
  %1175 = icmp eq i32 %1174, 10
  br i1 %1175, label %1176, label %1177

1176:                                             ; preds = %1170
  br label %1185

1177:                                             ; preds = %1170
  %1178 = load ptr, ptr %2, align 8, !tbaa !5
  %1179 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1178, i32 0, i32 1
  %1180 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1179, i32 0, i32 8
  %1181 = load i32, ptr %1180, align 8, !tbaa !29
  %1182 = icmp eq i32 %1181, 11
  %1183 = zext i1 %1182 to i64
  %1184 = select i1 %1182, i32 256, i32 1
  br label %1185

1185:                                             ; preds = %1177, %1176
  %1186 = phi i32 [ 128, %1176 ], [ %1184, %1177 ]
  br label %1187

1187:                                             ; preds = %1185, %1169
  %1188 = phi i32 [ 64, %1169 ], [ %1186, %1185 ]
  br label %1189

1189:                                             ; preds = %1187, %1162
  %1190 = phi i32 [ 32, %1162 ], [ %1188, %1187 ]
  br label %1191

1191:                                             ; preds = %1189, %1155
  %1192 = phi i32 [ 16, %1155 ], [ %1190, %1189 ]
  br label %1193

1193:                                             ; preds = %1191, %1148
  %1194 = phi i32 [ 12, %1148 ], [ %1192, %1191 ]
  br label %1195

1195:                                             ; preds = %1193, %1141
  %1196 = phi i32 [ 10, %1141 ], [ %1194, %1193 ]
  br label %1197

1197:                                             ; preds = %1195, %1134
  %1198 = phi i32 [ 8, %1134 ], [ %1196, %1195 ]
  br label %1199

1199:                                             ; preds = %1197, %1127
  %1200 = phi i32 [ 6, %1127 ], [ %1198, %1197 ]
  br label %1201

1201:                                             ; preds = %1199, %1120
  %1202 = phi i32 [ 4, %1120 ], [ %1200, %1199 ]
  br label %1203

1203:                                             ; preds = %1201, %1113
  %1204 = phi i32 [ 2, %1113 ], [ %1202, %1201 ]
  br label %1205

1205:                                             ; preds = %1203, %1106
  %1206 = phi i32 [ 1, %1106 ], [ %1204, %1203 ]
  %1207 = zext i32 %1206 to i64
  %1208 = udiv i64 %1100, %1207
  %1209 = mul i64 %1208, 256
  %1210 = load ptr, ptr %2, align 8, !tbaa !5
  %1211 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1210, i32 0, i32 1
  %1212 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1211, i32 0, i32 0
  %1213 = load i32, ptr %1212, align 8, !tbaa !36
  %1214 = udiv i32 %1213, 2
  %1215 = zext i32 %1214 to i64
  %1216 = add i64 %1209, %1215
  %1217 = load ptr, ptr %2, align 8, !tbaa !5
  %1218 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1217, i32 0, i32 1
  %1219 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1218, i32 0, i32 0
  %1220 = load i32, ptr %1219, align 8, !tbaa !36
  %1221 = zext i32 %1220 to i64
  %1222 = udiv i64 %1216, %1221
  %1223 = trunc i64 %1222 to i32
  store i32 %1223, ptr %6, align 4, !tbaa !9
  br label %1992

1224:                                             ; preds = %1096
  call void @HAL_RCCEx_GetPLL2ClockFreq(ptr noundef %9)
  %1225 = getelementptr inbounds %struct.PLL2_ClocksTypeDef, ptr %9, i32 0, i32 1
  %1226 = load i32, ptr %1225, align 4, !tbaa !33
  %1227 = zext i32 %1226 to i64
  %1228 = load ptr, ptr %2, align 8, !tbaa !5
  %1229 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1228, i32 0, i32 1
  %1230 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1229, i32 0, i32 8
  %1231 = load i32, ptr %1230, align 8, !tbaa !29
  %1232 = icmp eq i32 %1231, 0
  br i1 %1232, label %1233, label %1234

1233:                                             ; preds = %1224
  br label %1332

1234:                                             ; preds = %1224
  %1235 = load ptr, ptr %2, align 8, !tbaa !5
  %1236 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1235, i32 0, i32 1
  %1237 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1236, i32 0, i32 8
  %1238 = load i32, ptr %1237, align 8, !tbaa !29
  %1239 = icmp eq i32 %1238, 1
  br i1 %1239, label %1240, label %1241

1240:                                             ; preds = %1234
  br label %1330

1241:                                             ; preds = %1234
  %1242 = load ptr, ptr %2, align 8, !tbaa !5
  %1243 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1242, i32 0, i32 1
  %1244 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1243, i32 0, i32 8
  %1245 = load i32, ptr %1244, align 8, !tbaa !29
  %1246 = icmp eq i32 %1245, 2
  br i1 %1246, label %1247, label %1248

1247:                                             ; preds = %1241
  br label %1328

1248:                                             ; preds = %1241
  %1249 = load ptr, ptr %2, align 8, !tbaa !5
  %1250 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1249, i32 0, i32 1
  %1251 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1250, i32 0, i32 8
  %1252 = load i32, ptr %1251, align 8, !tbaa !29
  %1253 = icmp eq i32 %1252, 3
  br i1 %1253, label %1254, label %1255

1254:                                             ; preds = %1248
  br label %1326

1255:                                             ; preds = %1248
  %1256 = load ptr, ptr %2, align 8, !tbaa !5
  %1257 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1256, i32 0, i32 1
  %1258 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1257, i32 0, i32 8
  %1259 = load i32, ptr %1258, align 8, !tbaa !29
  %1260 = icmp eq i32 %1259, 4
  br i1 %1260, label %1261, label %1262

1261:                                             ; preds = %1255
  br label %1324

1262:                                             ; preds = %1255
  %1263 = load ptr, ptr %2, align 8, !tbaa !5
  %1264 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1263, i32 0, i32 1
  %1265 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1264, i32 0, i32 8
  %1266 = load i32, ptr %1265, align 8, !tbaa !29
  %1267 = icmp eq i32 %1266, 5
  br i1 %1267, label %1268, label %1269

1268:                                             ; preds = %1262
  br label %1322

1269:                                             ; preds = %1262
  %1270 = load ptr, ptr %2, align 8, !tbaa !5
  %1271 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1270, i32 0, i32 1
  %1272 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1271, i32 0, i32 8
  %1273 = load i32, ptr %1272, align 8, !tbaa !29
  %1274 = icmp eq i32 %1273, 6
  br i1 %1274, label %1275, label %1276

1275:                                             ; preds = %1269
  br label %1320

1276:                                             ; preds = %1269
  %1277 = load ptr, ptr %2, align 8, !tbaa !5
  %1278 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1277, i32 0, i32 1
  %1279 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1278, i32 0, i32 8
  %1280 = load i32, ptr %1279, align 8, !tbaa !29
  %1281 = icmp eq i32 %1280, 7
  br i1 %1281, label %1282, label %1283

1282:                                             ; preds = %1276
  br label %1318

1283:                                             ; preds = %1276
  %1284 = load ptr, ptr %2, align 8, !tbaa !5
  %1285 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1284, i32 0, i32 1
  %1286 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1285, i32 0, i32 8
  %1287 = load i32, ptr %1286, align 8, !tbaa !29
  %1288 = icmp eq i32 %1287, 8
  br i1 %1288, label %1289, label %1290

1289:                                             ; preds = %1283
  br label %1316

1290:                                             ; preds = %1283
  %1291 = load ptr, ptr %2, align 8, !tbaa !5
  %1292 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1291, i32 0, i32 1
  %1293 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1292, i32 0, i32 8
  %1294 = load i32, ptr %1293, align 8, !tbaa !29
  %1295 = icmp eq i32 %1294, 9
  br i1 %1295, label %1296, label %1297

1296:                                             ; preds = %1290
  br label %1314

1297:                                             ; preds = %1290
  %1298 = load ptr, ptr %2, align 8, !tbaa !5
  %1299 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1298, i32 0, i32 1
  %1300 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1299, i32 0, i32 8
  %1301 = load i32, ptr %1300, align 8, !tbaa !29
  %1302 = icmp eq i32 %1301, 10
  br i1 %1302, label %1303, label %1304

1303:                                             ; preds = %1297
  br label %1312

1304:                                             ; preds = %1297
  %1305 = load ptr, ptr %2, align 8, !tbaa !5
  %1306 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1305, i32 0, i32 1
  %1307 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1306, i32 0, i32 8
  %1308 = load i32, ptr %1307, align 8, !tbaa !29
  %1309 = icmp eq i32 %1308, 11
  %1310 = zext i1 %1309 to i64
  %1311 = select i1 %1309, i32 256, i32 1
  br label %1312

1312:                                             ; preds = %1304, %1303
  %1313 = phi i32 [ 128, %1303 ], [ %1311, %1304 ]
  br label %1314

1314:                                             ; preds = %1312, %1296
  %1315 = phi i32 [ 64, %1296 ], [ %1313, %1312 ]
  br label %1316

1316:                                             ; preds = %1314, %1289
  %1317 = phi i32 [ 32, %1289 ], [ %1315, %1314 ]
  br label %1318

1318:                                             ; preds = %1316, %1282
  %1319 = phi i32 [ 16, %1282 ], [ %1317, %1316 ]
  br label %1320

1320:                                             ; preds = %1318, %1275
  %1321 = phi i32 [ 12, %1275 ], [ %1319, %1318 ]
  br label %1322

1322:                                             ; preds = %1320, %1268
  %1323 = phi i32 [ 10, %1268 ], [ %1321, %1320 ]
  br label %1324

1324:                                             ; preds = %1322, %1261
  %1325 = phi i32 [ 8, %1261 ], [ %1323, %1322 ]
  br label %1326

1326:                                             ; preds = %1324, %1254
  %1327 = phi i32 [ 6, %1254 ], [ %1325, %1324 ]
  br label %1328

1328:                                             ; preds = %1326, %1247
  %1329 = phi i32 [ 4, %1247 ], [ %1327, %1326 ]
  br label %1330

1330:                                             ; preds = %1328, %1240
  %1331 = phi i32 [ 2, %1240 ], [ %1329, %1328 ]
  br label %1332

1332:                                             ; preds = %1330, %1233
  %1333 = phi i32 [ 1, %1233 ], [ %1331, %1330 ]
  %1334 = zext i32 %1333 to i64
  %1335 = udiv i64 %1227, %1334
  %1336 = mul i64 %1335, 256
  %1337 = load ptr, ptr %2, align 8, !tbaa !5
  %1338 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1337, i32 0, i32 1
  %1339 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1338, i32 0, i32 0
  %1340 = load i32, ptr %1339, align 8, !tbaa !36
  %1341 = udiv i32 %1340, 2
  %1342 = zext i32 %1341 to i64
  %1343 = add i64 %1336, %1342
  %1344 = load ptr, ptr %2, align 8, !tbaa !5
  %1345 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1344, i32 0, i32 1
  %1346 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1345, i32 0, i32 0
  %1347 = load i32, ptr %1346, align 8, !tbaa !36
  %1348 = zext i32 %1347 to i64
  %1349 = udiv i64 %1343, %1348
  %1350 = trunc i64 %1349 to i32
  store i32 %1350, ptr %6, align 4, !tbaa !9
  br label %1992

1351:                                             ; preds = %1096
  call void @HAL_RCCEx_GetPLL3ClockFreq(ptr noundef %10)
  %1352 = getelementptr inbounds %struct.PLL3_ClocksTypeDef, ptr %10, i32 0, i32 1
  %1353 = load i32, ptr %1352, align 4, !tbaa !33
  %1354 = zext i32 %1353 to i64
  %1355 = load ptr, ptr %2, align 8, !tbaa !5
  %1356 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1355, i32 0, i32 1
  %1357 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1356, i32 0, i32 8
  %1358 = load i32, ptr %1357, align 8, !tbaa !29
  %1359 = icmp eq i32 %1358, 0
  br i1 %1359, label %1360, label %1361

1360:                                             ; preds = %1351
  br label %1459

1361:                                             ; preds = %1351
  %1362 = load ptr, ptr %2, align 8, !tbaa !5
  %1363 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1362, i32 0, i32 1
  %1364 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1363, i32 0, i32 8
  %1365 = load i32, ptr %1364, align 8, !tbaa !29
  %1366 = icmp eq i32 %1365, 1
  br i1 %1366, label %1367, label %1368

1367:                                             ; preds = %1361
  br label %1457

1368:                                             ; preds = %1361
  %1369 = load ptr, ptr %2, align 8, !tbaa !5
  %1370 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1369, i32 0, i32 1
  %1371 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1370, i32 0, i32 8
  %1372 = load i32, ptr %1371, align 8, !tbaa !29
  %1373 = icmp eq i32 %1372, 2
  br i1 %1373, label %1374, label %1375

1374:                                             ; preds = %1368
  br label %1455

1375:                                             ; preds = %1368
  %1376 = load ptr, ptr %2, align 8, !tbaa !5
  %1377 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1376, i32 0, i32 1
  %1378 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1377, i32 0, i32 8
  %1379 = load i32, ptr %1378, align 8, !tbaa !29
  %1380 = icmp eq i32 %1379, 3
  br i1 %1380, label %1381, label %1382

1381:                                             ; preds = %1375
  br label %1453

1382:                                             ; preds = %1375
  %1383 = load ptr, ptr %2, align 8, !tbaa !5
  %1384 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1383, i32 0, i32 1
  %1385 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1384, i32 0, i32 8
  %1386 = load i32, ptr %1385, align 8, !tbaa !29
  %1387 = icmp eq i32 %1386, 4
  br i1 %1387, label %1388, label %1389

1388:                                             ; preds = %1382
  br label %1451

1389:                                             ; preds = %1382
  %1390 = load ptr, ptr %2, align 8, !tbaa !5
  %1391 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1390, i32 0, i32 1
  %1392 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1391, i32 0, i32 8
  %1393 = load i32, ptr %1392, align 8, !tbaa !29
  %1394 = icmp eq i32 %1393, 5
  br i1 %1394, label %1395, label %1396

1395:                                             ; preds = %1389
  br label %1449

1396:                                             ; preds = %1389
  %1397 = load ptr, ptr %2, align 8, !tbaa !5
  %1398 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1397, i32 0, i32 1
  %1399 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1398, i32 0, i32 8
  %1400 = load i32, ptr %1399, align 8, !tbaa !29
  %1401 = icmp eq i32 %1400, 6
  br i1 %1401, label %1402, label %1403

1402:                                             ; preds = %1396
  br label %1447

1403:                                             ; preds = %1396
  %1404 = load ptr, ptr %2, align 8, !tbaa !5
  %1405 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1404, i32 0, i32 1
  %1406 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1405, i32 0, i32 8
  %1407 = load i32, ptr %1406, align 8, !tbaa !29
  %1408 = icmp eq i32 %1407, 7
  br i1 %1408, label %1409, label %1410

1409:                                             ; preds = %1403
  br label %1445

1410:                                             ; preds = %1403
  %1411 = load ptr, ptr %2, align 8, !tbaa !5
  %1412 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1411, i32 0, i32 1
  %1413 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1412, i32 0, i32 8
  %1414 = load i32, ptr %1413, align 8, !tbaa !29
  %1415 = icmp eq i32 %1414, 8
  br i1 %1415, label %1416, label %1417

1416:                                             ; preds = %1410
  br label %1443

1417:                                             ; preds = %1410
  %1418 = load ptr, ptr %2, align 8, !tbaa !5
  %1419 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1418, i32 0, i32 1
  %1420 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1419, i32 0, i32 8
  %1421 = load i32, ptr %1420, align 8, !tbaa !29
  %1422 = icmp eq i32 %1421, 9
  br i1 %1422, label %1423, label %1424

1423:                                             ; preds = %1417
  br label %1441

1424:                                             ; preds = %1417
  %1425 = load ptr, ptr %2, align 8, !tbaa !5
  %1426 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1425, i32 0, i32 1
  %1427 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1426, i32 0, i32 8
  %1428 = load i32, ptr %1427, align 8, !tbaa !29
  %1429 = icmp eq i32 %1428, 10
  br i1 %1429, label %1430, label %1431

1430:                                             ; preds = %1424
  br label %1439

1431:                                             ; preds = %1424
  %1432 = load ptr, ptr %2, align 8, !tbaa !5
  %1433 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1432, i32 0, i32 1
  %1434 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1433, i32 0, i32 8
  %1435 = load i32, ptr %1434, align 8, !tbaa !29
  %1436 = icmp eq i32 %1435, 11
  %1437 = zext i1 %1436 to i64
  %1438 = select i1 %1436, i32 256, i32 1
  br label %1439

1439:                                             ; preds = %1431, %1430
  %1440 = phi i32 [ 128, %1430 ], [ %1438, %1431 ]
  br label %1441

1441:                                             ; preds = %1439, %1423
  %1442 = phi i32 [ 64, %1423 ], [ %1440, %1439 ]
  br label %1443

1443:                                             ; preds = %1441, %1416
  %1444 = phi i32 [ 32, %1416 ], [ %1442, %1441 ]
  br label %1445

1445:                                             ; preds = %1443, %1409
  %1446 = phi i32 [ 16, %1409 ], [ %1444, %1443 ]
  br label %1447

1447:                                             ; preds = %1445, %1402
  %1448 = phi i32 [ 12, %1402 ], [ %1446, %1445 ]
  br label %1449

1449:                                             ; preds = %1447, %1395
  %1450 = phi i32 [ 10, %1395 ], [ %1448, %1447 ]
  br label %1451

1451:                                             ; preds = %1449, %1388
  %1452 = phi i32 [ 8, %1388 ], [ %1450, %1449 ]
  br label %1453

1453:                                             ; preds = %1451, %1381
  %1454 = phi i32 [ 6, %1381 ], [ %1452, %1451 ]
  br label %1455

1455:                                             ; preds = %1453, %1374
  %1456 = phi i32 [ 4, %1374 ], [ %1454, %1453 ]
  br label %1457

1457:                                             ; preds = %1455, %1367
  %1458 = phi i32 [ 2, %1367 ], [ %1456, %1455 ]
  br label %1459

1459:                                             ; preds = %1457, %1360
  %1460 = phi i32 [ 1, %1360 ], [ %1458, %1457 ]
  %1461 = zext i32 %1460 to i64
  %1462 = udiv i64 %1354, %1461
  %1463 = mul i64 %1462, 256
  %1464 = load ptr, ptr %2, align 8, !tbaa !5
  %1465 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1464, i32 0, i32 1
  %1466 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1465, i32 0, i32 0
  %1467 = load i32, ptr %1466, align 8, !tbaa !36
  %1468 = udiv i32 %1467, 2
  %1469 = zext i32 %1468 to i64
  %1470 = add i64 %1463, %1469
  %1471 = load ptr, ptr %2, align 8, !tbaa !5
  %1472 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1471, i32 0, i32 1
  %1473 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1472, i32 0, i32 0
  %1474 = load i32, ptr %1473, align 8, !tbaa !36
  %1475 = zext i32 %1474 to i64
  %1476 = udiv i64 %1470, %1475
  %1477 = trunc i64 %1476 to i32
  store i32 %1477, ptr %6, align 4, !tbaa !9
  br label %1992

1478:                                             ; preds = %1096
  %1479 = load volatile i32, ptr inttoptr (i64 1476543488 to ptr), align 4, !tbaa !35
  %1480 = zext i32 %1479 to i64
  %1481 = and i64 %1480, 32
  %1482 = icmp ne i64 %1481, 0
  %1483 = zext i1 %1482 to i64
  %1484 = select i1 %1482, i32 1, i32 0
  %1485 = icmp ne i32 %1484, 0
  br i1 %1485, label %1486, label %1617

1486:                                             ; preds = %1478
  %1487 = load volatile i32, ptr inttoptr (i64 1476543488 to ptr), align 4, !tbaa !35
  %1488 = zext i32 %1487 to i64
  %1489 = and i64 %1488, 24
  %1490 = trunc i64 %1489 to i32
  %1491 = lshr i32 %1490, 3
  %1492 = lshr i32 64000000, %1491
  %1493 = zext i32 %1492 to i64
  %1494 = load ptr, ptr %2, align 8, !tbaa !5
  %1495 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1494, i32 0, i32 1
  %1496 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1495, i32 0, i32 8
  %1497 = load i32, ptr %1496, align 8, !tbaa !29
  %1498 = icmp eq i32 %1497, 0
  br i1 %1498, label %1499, label %1500

1499:                                             ; preds = %1486
  br label %1598

1500:                                             ; preds = %1486
  %1501 = load ptr, ptr %2, align 8, !tbaa !5
  %1502 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1501, i32 0, i32 1
  %1503 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1502, i32 0, i32 8
  %1504 = load i32, ptr %1503, align 8, !tbaa !29
  %1505 = icmp eq i32 %1504, 1
  br i1 %1505, label %1506, label %1507

1506:                                             ; preds = %1500
  br label %1596

1507:                                             ; preds = %1500
  %1508 = load ptr, ptr %2, align 8, !tbaa !5
  %1509 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1508, i32 0, i32 1
  %1510 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1509, i32 0, i32 8
  %1511 = load i32, ptr %1510, align 8, !tbaa !29
  %1512 = icmp eq i32 %1511, 2
  br i1 %1512, label %1513, label %1514

1513:                                             ; preds = %1507
  br label %1594

1514:                                             ; preds = %1507
  %1515 = load ptr, ptr %2, align 8, !tbaa !5
  %1516 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1515, i32 0, i32 1
  %1517 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1516, i32 0, i32 8
  %1518 = load i32, ptr %1517, align 8, !tbaa !29
  %1519 = icmp eq i32 %1518, 3
  br i1 %1519, label %1520, label %1521

1520:                                             ; preds = %1514
  br label %1592

1521:                                             ; preds = %1514
  %1522 = load ptr, ptr %2, align 8, !tbaa !5
  %1523 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1522, i32 0, i32 1
  %1524 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1523, i32 0, i32 8
  %1525 = load i32, ptr %1524, align 8, !tbaa !29
  %1526 = icmp eq i32 %1525, 4
  br i1 %1526, label %1527, label %1528

1527:                                             ; preds = %1521
  br label %1590

1528:                                             ; preds = %1521
  %1529 = load ptr, ptr %2, align 8, !tbaa !5
  %1530 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1529, i32 0, i32 1
  %1531 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1530, i32 0, i32 8
  %1532 = load i32, ptr %1531, align 8, !tbaa !29
  %1533 = icmp eq i32 %1532, 5
  br i1 %1533, label %1534, label %1535

1534:                                             ; preds = %1528
  br label %1588

1535:                                             ; preds = %1528
  %1536 = load ptr, ptr %2, align 8, !tbaa !5
  %1537 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1536, i32 0, i32 1
  %1538 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1537, i32 0, i32 8
  %1539 = load i32, ptr %1538, align 8, !tbaa !29
  %1540 = icmp eq i32 %1539, 6
  br i1 %1540, label %1541, label %1542

1541:                                             ; preds = %1535
  br label %1586

1542:                                             ; preds = %1535
  %1543 = load ptr, ptr %2, align 8, !tbaa !5
  %1544 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1543, i32 0, i32 1
  %1545 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1544, i32 0, i32 8
  %1546 = load i32, ptr %1545, align 8, !tbaa !29
  %1547 = icmp eq i32 %1546, 7
  br i1 %1547, label %1548, label %1549

1548:                                             ; preds = %1542
  br label %1584

1549:                                             ; preds = %1542
  %1550 = load ptr, ptr %2, align 8, !tbaa !5
  %1551 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1550, i32 0, i32 1
  %1552 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1551, i32 0, i32 8
  %1553 = load i32, ptr %1552, align 8, !tbaa !29
  %1554 = icmp eq i32 %1553, 8
  br i1 %1554, label %1555, label %1556

1555:                                             ; preds = %1549
  br label %1582

1556:                                             ; preds = %1549
  %1557 = load ptr, ptr %2, align 8, !tbaa !5
  %1558 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1557, i32 0, i32 1
  %1559 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1558, i32 0, i32 8
  %1560 = load i32, ptr %1559, align 8, !tbaa !29
  %1561 = icmp eq i32 %1560, 9
  br i1 %1561, label %1562, label %1563

1562:                                             ; preds = %1556
  br label %1580

1563:                                             ; preds = %1556
  %1564 = load ptr, ptr %2, align 8, !tbaa !5
  %1565 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1564, i32 0, i32 1
  %1566 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1565, i32 0, i32 8
  %1567 = load i32, ptr %1566, align 8, !tbaa !29
  %1568 = icmp eq i32 %1567, 10
  br i1 %1568, label %1569, label %1570

1569:                                             ; preds = %1563
  br label %1578

1570:                                             ; preds = %1563
  %1571 = load ptr, ptr %2, align 8, !tbaa !5
  %1572 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1571, i32 0, i32 1
  %1573 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1572, i32 0, i32 8
  %1574 = load i32, ptr %1573, align 8, !tbaa !29
  %1575 = icmp eq i32 %1574, 11
  %1576 = zext i1 %1575 to i64
  %1577 = select i1 %1575, i32 256, i32 1
  br label %1578

1578:                                             ; preds = %1570, %1569
  %1579 = phi i32 [ 128, %1569 ], [ %1577, %1570 ]
  br label %1580

1580:                                             ; preds = %1578, %1562
  %1581 = phi i32 [ 64, %1562 ], [ %1579, %1578 ]
  br label %1582

1582:                                             ; preds = %1580, %1555
  %1583 = phi i32 [ 32, %1555 ], [ %1581, %1580 ]
  br label %1584

1584:                                             ; preds = %1582, %1548
  %1585 = phi i32 [ 16, %1548 ], [ %1583, %1582 ]
  br label %1586

1586:                                             ; preds = %1584, %1541
  %1587 = phi i32 [ 12, %1541 ], [ %1585, %1584 ]
  br label %1588

1588:                                             ; preds = %1586, %1534
  %1589 = phi i32 [ 10, %1534 ], [ %1587, %1586 ]
  br label %1590

1590:                                             ; preds = %1588, %1527
  %1591 = phi i32 [ 8, %1527 ], [ %1589, %1588 ]
  br label %1592

1592:                                             ; preds = %1590, %1520
  %1593 = phi i32 [ 6, %1520 ], [ %1591, %1590 ]
  br label %1594

1594:                                             ; preds = %1592, %1513
  %1595 = phi i32 [ 4, %1513 ], [ %1593, %1592 ]
  br label %1596

1596:                                             ; preds = %1594, %1506
  %1597 = phi i32 [ 2, %1506 ], [ %1595, %1594 ]
  br label %1598

1598:                                             ; preds = %1596, %1499
  %1599 = phi i32 [ 1, %1499 ], [ %1597, %1596 ]
  %1600 = zext i32 %1599 to i64
  %1601 = udiv i64 %1493, %1600
  %1602 = mul i64 %1601, 256
  %1603 = load ptr, ptr %2, align 8, !tbaa !5
  %1604 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1603, i32 0, i32 1
  %1605 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1604, i32 0, i32 0
  %1606 = load i32, ptr %1605, align 8, !tbaa !36
  %1607 = udiv i32 %1606, 2
  %1608 = zext i32 %1607 to i64
  %1609 = add i64 %1602, %1608
  %1610 = load ptr, ptr %2, align 8, !tbaa !5
  %1611 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1610, i32 0, i32 1
  %1612 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1611, i32 0, i32 0
  %1613 = load i32, ptr %1612, align 8, !tbaa !36
  %1614 = zext i32 %1613 to i64
  %1615 = udiv i64 %1609, %1614
  %1616 = trunc i64 %1615 to i32
  store i32 %1616, ptr %6, align 4, !tbaa !9
  br label %1741

1617:                                             ; preds = %1478
  %1618 = load ptr, ptr %2, align 8, !tbaa !5
  %1619 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1618, i32 0, i32 1
  %1620 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1619, i32 0, i32 8
  %1621 = load i32, ptr %1620, align 8, !tbaa !29
  %1622 = icmp eq i32 %1621, 0
  br i1 %1622, label %1623, label %1624

1623:                                             ; preds = %1617
  br label %1722

1624:                                             ; preds = %1617
  %1625 = load ptr, ptr %2, align 8, !tbaa !5
  %1626 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1625, i32 0, i32 1
  %1627 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1626, i32 0, i32 8
  %1628 = load i32, ptr %1627, align 8, !tbaa !29
  %1629 = icmp eq i32 %1628, 1
  br i1 %1629, label %1630, label %1631

1630:                                             ; preds = %1624
  br label %1720

1631:                                             ; preds = %1624
  %1632 = load ptr, ptr %2, align 8, !tbaa !5
  %1633 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1632, i32 0, i32 1
  %1634 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1633, i32 0, i32 8
  %1635 = load i32, ptr %1634, align 8, !tbaa !29
  %1636 = icmp eq i32 %1635, 2
  br i1 %1636, label %1637, label %1638

1637:                                             ; preds = %1631
  br label %1718

1638:                                             ; preds = %1631
  %1639 = load ptr, ptr %2, align 8, !tbaa !5
  %1640 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1639, i32 0, i32 1
  %1641 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1640, i32 0, i32 8
  %1642 = load i32, ptr %1641, align 8, !tbaa !29
  %1643 = icmp eq i32 %1642, 3
  br i1 %1643, label %1644, label %1645

1644:                                             ; preds = %1638
  br label %1716

1645:                                             ; preds = %1638
  %1646 = load ptr, ptr %2, align 8, !tbaa !5
  %1647 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1646, i32 0, i32 1
  %1648 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1647, i32 0, i32 8
  %1649 = load i32, ptr %1648, align 8, !tbaa !29
  %1650 = icmp eq i32 %1649, 4
  br i1 %1650, label %1651, label %1652

1651:                                             ; preds = %1645
  br label %1714

1652:                                             ; preds = %1645
  %1653 = load ptr, ptr %2, align 8, !tbaa !5
  %1654 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1653, i32 0, i32 1
  %1655 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1654, i32 0, i32 8
  %1656 = load i32, ptr %1655, align 8, !tbaa !29
  %1657 = icmp eq i32 %1656, 5
  br i1 %1657, label %1658, label %1659

1658:                                             ; preds = %1652
  br label %1712

1659:                                             ; preds = %1652
  %1660 = load ptr, ptr %2, align 8, !tbaa !5
  %1661 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1660, i32 0, i32 1
  %1662 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1661, i32 0, i32 8
  %1663 = load i32, ptr %1662, align 8, !tbaa !29
  %1664 = icmp eq i32 %1663, 6
  br i1 %1664, label %1665, label %1666

1665:                                             ; preds = %1659
  br label %1710

1666:                                             ; preds = %1659
  %1667 = load ptr, ptr %2, align 8, !tbaa !5
  %1668 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1667, i32 0, i32 1
  %1669 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1668, i32 0, i32 8
  %1670 = load i32, ptr %1669, align 8, !tbaa !29
  %1671 = icmp eq i32 %1670, 7
  br i1 %1671, label %1672, label %1673

1672:                                             ; preds = %1666
  br label %1708

1673:                                             ; preds = %1666
  %1674 = load ptr, ptr %2, align 8, !tbaa !5
  %1675 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1674, i32 0, i32 1
  %1676 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1675, i32 0, i32 8
  %1677 = load i32, ptr %1676, align 8, !tbaa !29
  %1678 = icmp eq i32 %1677, 8
  br i1 %1678, label %1679, label %1680

1679:                                             ; preds = %1673
  br label %1706

1680:                                             ; preds = %1673
  %1681 = load ptr, ptr %2, align 8, !tbaa !5
  %1682 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1681, i32 0, i32 1
  %1683 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1682, i32 0, i32 8
  %1684 = load i32, ptr %1683, align 8, !tbaa !29
  %1685 = icmp eq i32 %1684, 9
  br i1 %1685, label %1686, label %1687

1686:                                             ; preds = %1680
  br label %1704

1687:                                             ; preds = %1680
  %1688 = load ptr, ptr %2, align 8, !tbaa !5
  %1689 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1688, i32 0, i32 1
  %1690 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1689, i32 0, i32 8
  %1691 = load i32, ptr %1690, align 8, !tbaa !29
  %1692 = icmp eq i32 %1691, 10
  br i1 %1692, label %1693, label %1694

1693:                                             ; preds = %1687
  br label %1702

1694:                                             ; preds = %1687
  %1695 = load ptr, ptr %2, align 8, !tbaa !5
  %1696 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1695, i32 0, i32 1
  %1697 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1696, i32 0, i32 8
  %1698 = load i32, ptr %1697, align 8, !tbaa !29
  %1699 = icmp eq i32 %1698, 11
  %1700 = zext i1 %1699 to i64
  %1701 = select i1 %1699, i32 256, i32 1
  br label %1702

1702:                                             ; preds = %1694, %1693
  %1703 = phi i32 [ 128, %1693 ], [ %1701, %1694 ]
  br label %1704

1704:                                             ; preds = %1702, %1686
  %1705 = phi i32 [ 64, %1686 ], [ %1703, %1702 ]
  br label %1706

1706:                                             ; preds = %1704, %1679
  %1707 = phi i32 [ 32, %1679 ], [ %1705, %1704 ]
  br label %1708

1708:                                             ; preds = %1706, %1672
  %1709 = phi i32 [ 16, %1672 ], [ %1707, %1706 ]
  br label %1710

1710:                                             ; preds = %1708, %1665
  %1711 = phi i32 [ 12, %1665 ], [ %1709, %1708 ]
  br label %1712

1712:                                             ; preds = %1710, %1658
  %1713 = phi i32 [ 10, %1658 ], [ %1711, %1710 ]
  br label %1714

1714:                                             ; preds = %1712, %1651
  %1715 = phi i32 [ 8, %1651 ], [ %1713, %1712 ]
  br label %1716

1716:                                             ; preds = %1714, %1644
  %1717 = phi i32 [ 6, %1644 ], [ %1715, %1714 ]
  br label %1718

1718:                                             ; preds = %1716, %1637
  %1719 = phi i32 [ 4, %1637 ], [ %1717, %1716 ]
  br label %1720

1720:                                             ; preds = %1718, %1630
  %1721 = phi i32 [ 2, %1630 ], [ %1719, %1718 ]
  br label %1722

1722:                                             ; preds = %1720, %1623
  %1723 = phi i32 [ 1, %1623 ], [ %1721, %1720 ]
  %1724 = zext i32 %1723 to i64
  %1725 = udiv i64 64000000, %1724
  %1726 = mul i64 %1725, 256
  %1727 = load ptr, ptr %2, align 8, !tbaa !5
  %1728 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1727, i32 0, i32 1
  %1729 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1728, i32 0, i32 0
  %1730 = load i32, ptr %1729, align 8, !tbaa !36
  %1731 = udiv i32 %1730, 2
  %1732 = zext i32 %1731 to i64
  %1733 = add i64 %1726, %1732
  %1734 = load ptr, ptr %2, align 8, !tbaa !5
  %1735 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1734, i32 0, i32 1
  %1736 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1735, i32 0, i32 0
  %1737 = load i32, ptr %1736, align 8, !tbaa !36
  %1738 = zext i32 %1737 to i64
  %1739 = udiv i64 %1733, %1738
  %1740 = trunc i64 %1739 to i32
  store i32 %1740, ptr %6, align 4, !tbaa !9
  br label %1741

1741:                                             ; preds = %1722, %1598
  br label %1992

1742:                                             ; preds = %1096
  %1743 = load ptr, ptr %2, align 8, !tbaa !5
  %1744 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1743, i32 0, i32 1
  %1745 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1744, i32 0, i32 8
  %1746 = load i32, ptr %1745, align 8, !tbaa !29
  %1747 = icmp eq i32 %1746, 0
  br i1 %1747, label %1748, label %1749

1748:                                             ; preds = %1742
  br label %1847

1749:                                             ; preds = %1742
  %1750 = load ptr, ptr %2, align 8, !tbaa !5
  %1751 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1750, i32 0, i32 1
  %1752 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1751, i32 0, i32 8
  %1753 = load i32, ptr %1752, align 8, !tbaa !29
  %1754 = icmp eq i32 %1753, 1
  br i1 %1754, label %1755, label %1756

1755:                                             ; preds = %1749
  br label %1845

1756:                                             ; preds = %1749
  %1757 = load ptr, ptr %2, align 8, !tbaa !5
  %1758 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1757, i32 0, i32 1
  %1759 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1758, i32 0, i32 8
  %1760 = load i32, ptr %1759, align 8, !tbaa !29
  %1761 = icmp eq i32 %1760, 2
  br i1 %1761, label %1762, label %1763

1762:                                             ; preds = %1756
  br label %1843

1763:                                             ; preds = %1756
  %1764 = load ptr, ptr %2, align 8, !tbaa !5
  %1765 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1764, i32 0, i32 1
  %1766 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1765, i32 0, i32 8
  %1767 = load i32, ptr %1766, align 8, !tbaa !29
  %1768 = icmp eq i32 %1767, 3
  br i1 %1768, label %1769, label %1770

1769:                                             ; preds = %1763
  br label %1841

1770:                                             ; preds = %1763
  %1771 = load ptr, ptr %2, align 8, !tbaa !5
  %1772 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1771, i32 0, i32 1
  %1773 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1772, i32 0, i32 8
  %1774 = load i32, ptr %1773, align 8, !tbaa !29
  %1775 = icmp eq i32 %1774, 4
  br i1 %1775, label %1776, label %1777

1776:                                             ; preds = %1770
  br label %1839

1777:                                             ; preds = %1770
  %1778 = load ptr, ptr %2, align 8, !tbaa !5
  %1779 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1778, i32 0, i32 1
  %1780 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1779, i32 0, i32 8
  %1781 = load i32, ptr %1780, align 8, !tbaa !29
  %1782 = icmp eq i32 %1781, 5
  br i1 %1782, label %1783, label %1784

1783:                                             ; preds = %1777
  br label %1837

1784:                                             ; preds = %1777
  %1785 = load ptr, ptr %2, align 8, !tbaa !5
  %1786 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1785, i32 0, i32 1
  %1787 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1786, i32 0, i32 8
  %1788 = load i32, ptr %1787, align 8, !tbaa !29
  %1789 = icmp eq i32 %1788, 6
  br i1 %1789, label %1790, label %1791

1790:                                             ; preds = %1784
  br label %1835

1791:                                             ; preds = %1784
  %1792 = load ptr, ptr %2, align 8, !tbaa !5
  %1793 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1792, i32 0, i32 1
  %1794 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1793, i32 0, i32 8
  %1795 = load i32, ptr %1794, align 8, !tbaa !29
  %1796 = icmp eq i32 %1795, 7
  br i1 %1796, label %1797, label %1798

1797:                                             ; preds = %1791
  br label %1833

1798:                                             ; preds = %1791
  %1799 = load ptr, ptr %2, align 8, !tbaa !5
  %1800 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1799, i32 0, i32 1
  %1801 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1800, i32 0, i32 8
  %1802 = load i32, ptr %1801, align 8, !tbaa !29
  %1803 = icmp eq i32 %1802, 8
  br i1 %1803, label %1804, label %1805

1804:                                             ; preds = %1798
  br label %1831

1805:                                             ; preds = %1798
  %1806 = load ptr, ptr %2, align 8, !tbaa !5
  %1807 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1806, i32 0, i32 1
  %1808 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1807, i32 0, i32 8
  %1809 = load i32, ptr %1808, align 8, !tbaa !29
  %1810 = icmp eq i32 %1809, 9
  br i1 %1810, label %1811, label %1812

1811:                                             ; preds = %1805
  br label %1829

1812:                                             ; preds = %1805
  %1813 = load ptr, ptr %2, align 8, !tbaa !5
  %1814 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1813, i32 0, i32 1
  %1815 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1814, i32 0, i32 8
  %1816 = load i32, ptr %1815, align 8, !tbaa !29
  %1817 = icmp eq i32 %1816, 10
  br i1 %1817, label %1818, label %1819

1818:                                             ; preds = %1812
  br label %1827

1819:                                             ; preds = %1812
  %1820 = load ptr, ptr %2, align 8, !tbaa !5
  %1821 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1820, i32 0, i32 1
  %1822 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1821, i32 0, i32 8
  %1823 = load i32, ptr %1822, align 8, !tbaa !29
  %1824 = icmp eq i32 %1823, 11
  %1825 = zext i1 %1824 to i64
  %1826 = select i1 %1824, i32 256, i32 1
  br label %1827

1827:                                             ; preds = %1819, %1818
  %1828 = phi i32 [ 128, %1818 ], [ %1826, %1819 ]
  br label %1829

1829:                                             ; preds = %1827, %1811
  %1830 = phi i32 [ 64, %1811 ], [ %1828, %1827 ]
  br label %1831

1831:                                             ; preds = %1829, %1804
  %1832 = phi i32 [ 32, %1804 ], [ %1830, %1829 ]
  br label %1833

1833:                                             ; preds = %1831, %1797
  %1834 = phi i32 [ 16, %1797 ], [ %1832, %1831 ]
  br label %1835

1835:                                             ; preds = %1833, %1790
  %1836 = phi i32 [ 12, %1790 ], [ %1834, %1833 ]
  br label %1837

1837:                                             ; preds = %1835, %1783
  %1838 = phi i32 [ 10, %1783 ], [ %1836, %1835 ]
  br label %1839

1839:                                             ; preds = %1837, %1776
  %1840 = phi i32 [ 8, %1776 ], [ %1838, %1837 ]
  br label %1841

1841:                                             ; preds = %1839, %1769
  %1842 = phi i32 [ 6, %1769 ], [ %1840, %1839 ]
  br label %1843

1843:                                             ; preds = %1841, %1762
  %1844 = phi i32 [ 4, %1762 ], [ %1842, %1841 ]
  br label %1845

1845:                                             ; preds = %1843, %1755
  %1846 = phi i32 [ 2, %1755 ], [ %1844, %1843 ]
  br label %1847

1847:                                             ; preds = %1845, %1748
  %1848 = phi i32 [ 1, %1748 ], [ %1846, %1845 ]
  %1849 = zext i32 %1848 to i64
  %1850 = udiv i64 4000000, %1849
  %1851 = mul i64 %1850, 256
  %1852 = load ptr, ptr %2, align 8, !tbaa !5
  %1853 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1852, i32 0, i32 1
  %1854 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1853, i32 0, i32 0
  %1855 = load i32, ptr %1854, align 8, !tbaa !36
  %1856 = udiv i32 %1855, 2
  %1857 = zext i32 %1856 to i64
  %1858 = add i64 %1851, %1857
  %1859 = load ptr, ptr %2, align 8, !tbaa !5
  %1860 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1859, i32 0, i32 1
  %1861 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1860, i32 0, i32 0
  %1862 = load i32, ptr %1861, align 8, !tbaa !36
  %1863 = zext i32 %1862 to i64
  %1864 = udiv i64 %1858, %1863
  %1865 = trunc i64 %1864 to i32
  store i32 %1865, ptr %6, align 4, !tbaa !9
  br label %1992

1866:                                             ; preds = %1096
  %1867 = load ptr, ptr %2, align 8, !tbaa !5
  %1868 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1867, i32 0, i32 1
  %1869 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1868, i32 0, i32 8
  %1870 = load i32, ptr %1869, align 8, !tbaa !29
  %1871 = icmp eq i32 %1870, 0
  br i1 %1871, label %1872, label %1873

1872:                                             ; preds = %1866
  br label %1971

1873:                                             ; preds = %1866
  %1874 = load ptr, ptr %2, align 8, !tbaa !5
  %1875 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1874, i32 0, i32 1
  %1876 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1875, i32 0, i32 8
  %1877 = load i32, ptr %1876, align 8, !tbaa !29
  %1878 = icmp eq i32 %1877, 1
  br i1 %1878, label %1879, label %1880

1879:                                             ; preds = %1873
  br label %1969

1880:                                             ; preds = %1873
  %1881 = load ptr, ptr %2, align 8, !tbaa !5
  %1882 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1881, i32 0, i32 1
  %1883 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1882, i32 0, i32 8
  %1884 = load i32, ptr %1883, align 8, !tbaa !29
  %1885 = icmp eq i32 %1884, 2
  br i1 %1885, label %1886, label %1887

1886:                                             ; preds = %1880
  br label %1967

1887:                                             ; preds = %1880
  %1888 = load ptr, ptr %2, align 8, !tbaa !5
  %1889 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1888, i32 0, i32 1
  %1890 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1889, i32 0, i32 8
  %1891 = load i32, ptr %1890, align 8, !tbaa !29
  %1892 = icmp eq i32 %1891, 3
  br i1 %1892, label %1893, label %1894

1893:                                             ; preds = %1887
  br label %1965

1894:                                             ; preds = %1887
  %1895 = load ptr, ptr %2, align 8, !tbaa !5
  %1896 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1895, i32 0, i32 1
  %1897 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1896, i32 0, i32 8
  %1898 = load i32, ptr %1897, align 8, !tbaa !29
  %1899 = icmp eq i32 %1898, 4
  br i1 %1899, label %1900, label %1901

1900:                                             ; preds = %1894
  br label %1963

1901:                                             ; preds = %1894
  %1902 = load ptr, ptr %2, align 8, !tbaa !5
  %1903 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1902, i32 0, i32 1
  %1904 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1903, i32 0, i32 8
  %1905 = load i32, ptr %1904, align 8, !tbaa !29
  %1906 = icmp eq i32 %1905, 5
  br i1 %1906, label %1907, label %1908

1907:                                             ; preds = %1901
  br label %1961

1908:                                             ; preds = %1901
  %1909 = load ptr, ptr %2, align 8, !tbaa !5
  %1910 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1909, i32 0, i32 1
  %1911 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1910, i32 0, i32 8
  %1912 = load i32, ptr %1911, align 8, !tbaa !29
  %1913 = icmp eq i32 %1912, 6
  br i1 %1913, label %1914, label %1915

1914:                                             ; preds = %1908
  br label %1959

1915:                                             ; preds = %1908
  %1916 = load ptr, ptr %2, align 8, !tbaa !5
  %1917 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1916, i32 0, i32 1
  %1918 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1917, i32 0, i32 8
  %1919 = load i32, ptr %1918, align 8, !tbaa !29
  %1920 = icmp eq i32 %1919, 7
  br i1 %1920, label %1921, label %1922

1921:                                             ; preds = %1915
  br label %1957

1922:                                             ; preds = %1915
  %1923 = load ptr, ptr %2, align 8, !tbaa !5
  %1924 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1923, i32 0, i32 1
  %1925 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1924, i32 0, i32 8
  %1926 = load i32, ptr %1925, align 8, !tbaa !29
  %1927 = icmp eq i32 %1926, 8
  br i1 %1927, label %1928, label %1929

1928:                                             ; preds = %1922
  br label %1955

1929:                                             ; preds = %1922
  %1930 = load ptr, ptr %2, align 8, !tbaa !5
  %1931 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1930, i32 0, i32 1
  %1932 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1931, i32 0, i32 8
  %1933 = load i32, ptr %1932, align 8, !tbaa !29
  %1934 = icmp eq i32 %1933, 9
  br i1 %1934, label %1935, label %1936

1935:                                             ; preds = %1929
  br label %1953

1936:                                             ; preds = %1929
  %1937 = load ptr, ptr %2, align 8, !tbaa !5
  %1938 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1937, i32 0, i32 1
  %1939 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1938, i32 0, i32 8
  %1940 = load i32, ptr %1939, align 8, !tbaa !29
  %1941 = icmp eq i32 %1940, 10
  br i1 %1941, label %1942, label %1943

1942:                                             ; preds = %1936
  br label %1951

1943:                                             ; preds = %1936
  %1944 = load ptr, ptr %2, align 8, !tbaa !5
  %1945 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1944, i32 0, i32 1
  %1946 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1945, i32 0, i32 8
  %1947 = load i32, ptr %1946, align 8, !tbaa !29
  %1948 = icmp eq i32 %1947, 11
  %1949 = zext i1 %1948 to i64
  %1950 = select i1 %1948, i32 256, i32 1
  br label %1951

1951:                                             ; preds = %1943, %1942
  %1952 = phi i32 [ 128, %1942 ], [ %1950, %1943 ]
  br label %1953

1953:                                             ; preds = %1951, %1935
  %1954 = phi i32 [ 64, %1935 ], [ %1952, %1951 ]
  br label %1955

1955:                                             ; preds = %1953, %1928
  %1956 = phi i32 [ 32, %1928 ], [ %1954, %1953 ]
  br label %1957

1957:                                             ; preds = %1955, %1921
  %1958 = phi i32 [ 16, %1921 ], [ %1956, %1955 ]
  br label %1959

1959:                                             ; preds = %1957, %1914
  %1960 = phi i32 [ 12, %1914 ], [ %1958, %1957 ]
  br label %1961

1961:                                             ; preds = %1959, %1907
  %1962 = phi i32 [ 10, %1907 ], [ %1960, %1959 ]
  br label %1963

1963:                                             ; preds = %1961, %1900
  %1964 = phi i32 [ 8, %1900 ], [ %1962, %1961 ]
  br label %1965

1965:                                             ; preds = %1963, %1893
  %1966 = phi i32 [ 6, %1893 ], [ %1964, %1963 ]
  br label %1967

1967:                                             ; preds = %1965, %1886
  %1968 = phi i32 [ 4, %1886 ], [ %1966, %1965 ]
  br label %1969

1969:                                             ; preds = %1967, %1879
  %1970 = phi i32 [ 2, %1879 ], [ %1968, %1967 ]
  br label %1971

1971:                                             ; preds = %1969, %1872
  %1972 = phi i32 [ 1, %1872 ], [ %1970, %1969 ]
  %1973 = zext i32 %1972 to i64
  %1974 = udiv i64 32768, %1973
  %1975 = mul i64 %1974, 256
  %1976 = load ptr, ptr %2, align 8, !tbaa !5
  %1977 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1976, i32 0, i32 1
  %1978 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1977, i32 0, i32 0
  %1979 = load i32, ptr %1978, align 8, !tbaa !36
  %1980 = udiv i32 %1979, 2
  %1981 = zext i32 %1980 to i64
  %1982 = add i64 %1975, %1981
  %1983 = load ptr, ptr %2, align 8, !tbaa !5
  %1984 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %1983, i32 0, i32 1
  %1985 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %1984, i32 0, i32 0
  %1986 = load i32, ptr %1985, align 8, !tbaa !36
  %1987 = zext i32 %1986 to i64
  %1988 = udiv i64 %1982, %1987
  %1989 = trunc i64 %1988 to i32
  store i32 %1989, ptr %6, align 4, !tbaa !9
  br label %1992

1990:                                             ; preds = %1096
  br label %1991

1991:                                             ; preds = %1990, %1096
  store i32 1, ptr %7, align 4, !tbaa !9
  br label %1992

1992:                                             ; preds = %1991, %1971, %1847, %1741, %1459, %1332, %1205
  %1993 = load i32, ptr %6, align 4, !tbaa !9
  %1994 = icmp uge i32 %1993, 768
  br i1 %1994, label %1995, label %2004

1995:                                             ; preds = %1992
  %1996 = load i32, ptr %6, align 4, !tbaa !9
  %1997 = icmp ule i32 %1996, 1048575
  br i1 %1997, label %1998, label %2004

1998:                                             ; preds = %1995
  %1999 = load i32, ptr %6, align 4, !tbaa !9
  %2000 = load ptr, ptr %2, align 8, !tbaa !5
  %2001 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2000, i32 0, i32 0
  %2002 = load ptr, ptr %2001, align 8, !tbaa !11
  %2003 = getelementptr inbounds %struct.USART_TypeDef, ptr %2002, i32 0, i32 3
  store volatile i32 %1999, ptr %2003, align 4, !tbaa !37
  br label %2005

2004:                                             ; preds = %1995, %1992
  store i32 1, ptr %7, align 4, !tbaa !9
  br label %2005

2005:                                             ; preds = %2004, %1998
  br label %2006

2006:                                             ; preds = %2005, %1095
  br label %2007

2007:                                             ; preds = %2006, %1076
  br label %4051

2008:                                             ; preds = %291
  %2009 = load ptr, ptr %2, align 8, !tbaa !5
  %2010 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2009, i32 0, i32 1
  %2011 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2010, i32 0, i32 6
  %2012 = load i32, ptr %2011, align 8, !tbaa !19
  %2013 = zext i32 %2012 to i64
  %2014 = icmp eq i64 %2013, 32768
  br i1 %2014, label %2015, label %3043

2015:                                             ; preds = %2008
  %2016 = load i32, ptr %5, align 4, !tbaa !9
  switch i32 %2016, label %3015 [
    i32 0, label %2017
    i32 1, label %2140
    i32 4, label %2263
    i32 8, label %2387
    i32 16, label %2511
    i32 32, label %2770
    i32 64, label %2892
    i32 128, label %3014
  ]

2017:                                             ; preds = %2015
  %2018 = call i32 @HAL_RCC_GetPCLK1Freq()
  %2019 = load ptr, ptr %2, align 8, !tbaa !5
  %2020 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2019, i32 0, i32 1
  %2021 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2020, i32 0, i32 8
  %2022 = load i32, ptr %2021, align 8, !tbaa !29
  %2023 = icmp eq i32 %2022, 0
  br i1 %2023, label %2024, label %2025

2024:                                             ; preds = %2017
  br label %2123

2025:                                             ; preds = %2017
  %2026 = load ptr, ptr %2, align 8, !tbaa !5
  %2027 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2026, i32 0, i32 1
  %2028 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2027, i32 0, i32 8
  %2029 = load i32, ptr %2028, align 8, !tbaa !29
  %2030 = icmp eq i32 %2029, 1
  br i1 %2030, label %2031, label %2032

2031:                                             ; preds = %2025
  br label %2121

2032:                                             ; preds = %2025
  %2033 = load ptr, ptr %2, align 8, !tbaa !5
  %2034 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2033, i32 0, i32 1
  %2035 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2034, i32 0, i32 8
  %2036 = load i32, ptr %2035, align 8, !tbaa !29
  %2037 = icmp eq i32 %2036, 2
  br i1 %2037, label %2038, label %2039

2038:                                             ; preds = %2032
  br label %2119

2039:                                             ; preds = %2032
  %2040 = load ptr, ptr %2, align 8, !tbaa !5
  %2041 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2040, i32 0, i32 1
  %2042 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2041, i32 0, i32 8
  %2043 = load i32, ptr %2042, align 8, !tbaa !29
  %2044 = icmp eq i32 %2043, 3
  br i1 %2044, label %2045, label %2046

2045:                                             ; preds = %2039
  br label %2117

2046:                                             ; preds = %2039
  %2047 = load ptr, ptr %2, align 8, !tbaa !5
  %2048 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2047, i32 0, i32 1
  %2049 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2048, i32 0, i32 8
  %2050 = load i32, ptr %2049, align 8, !tbaa !29
  %2051 = icmp eq i32 %2050, 4
  br i1 %2051, label %2052, label %2053

2052:                                             ; preds = %2046
  br label %2115

2053:                                             ; preds = %2046
  %2054 = load ptr, ptr %2, align 8, !tbaa !5
  %2055 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2054, i32 0, i32 1
  %2056 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2055, i32 0, i32 8
  %2057 = load i32, ptr %2056, align 8, !tbaa !29
  %2058 = icmp eq i32 %2057, 5
  br i1 %2058, label %2059, label %2060

2059:                                             ; preds = %2053
  br label %2113

2060:                                             ; preds = %2053
  %2061 = load ptr, ptr %2, align 8, !tbaa !5
  %2062 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2061, i32 0, i32 1
  %2063 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2062, i32 0, i32 8
  %2064 = load i32, ptr %2063, align 8, !tbaa !29
  %2065 = icmp eq i32 %2064, 6
  br i1 %2065, label %2066, label %2067

2066:                                             ; preds = %2060
  br label %2111

2067:                                             ; preds = %2060
  %2068 = load ptr, ptr %2, align 8, !tbaa !5
  %2069 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2068, i32 0, i32 1
  %2070 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2069, i32 0, i32 8
  %2071 = load i32, ptr %2070, align 8, !tbaa !29
  %2072 = icmp eq i32 %2071, 7
  br i1 %2072, label %2073, label %2074

2073:                                             ; preds = %2067
  br label %2109

2074:                                             ; preds = %2067
  %2075 = load ptr, ptr %2, align 8, !tbaa !5
  %2076 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2075, i32 0, i32 1
  %2077 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2076, i32 0, i32 8
  %2078 = load i32, ptr %2077, align 8, !tbaa !29
  %2079 = icmp eq i32 %2078, 8
  br i1 %2079, label %2080, label %2081

2080:                                             ; preds = %2074
  br label %2107

2081:                                             ; preds = %2074
  %2082 = load ptr, ptr %2, align 8, !tbaa !5
  %2083 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2082, i32 0, i32 1
  %2084 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2083, i32 0, i32 8
  %2085 = load i32, ptr %2084, align 8, !tbaa !29
  %2086 = icmp eq i32 %2085, 9
  br i1 %2086, label %2087, label %2088

2087:                                             ; preds = %2081
  br label %2105

2088:                                             ; preds = %2081
  %2089 = load ptr, ptr %2, align 8, !tbaa !5
  %2090 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2089, i32 0, i32 1
  %2091 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2090, i32 0, i32 8
  %2092 = load i32, ptr %2091, align 8, !tbaa !29
  %2093 = icmp eq i32 %2092, 10
  br i1 %2093, label %2094, label %2095

2094:                                             ; preds = %2088
  br label %2103

2095:                                             ; preds = %2088
  %2096 = load ptr, ptr %2, align 8, !tbaa !5
  %2097 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2096, i32 0, i32 1
  %2098 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2097, i32 0, i32 8
  %2099 = load i32, ptr %2098, align 8, !tbaa !29
  %2100 = icmp eq i32 %2099, 11
  %2101 = zext i1 %2100 to i64
  %2102 = select i1 %2100, i32 256, i32 1
  br label %2103

2103:                                             ; preds = %2095, %2094
  %2104 = phi i32 [ 128, %2094 ], [ %2102, %2095 ]
  br label %2105

2105:                                             ; preds = %2103, %2087
  %2106 = phi i32 [ 64, %2087 ], [ %2104, %2103 ]
  br label %2107

2107:                                             ; preds = %2105, %2080
  %2108 = phi i32 [ 32, %2080 ], [ %2106, %2105 ]
  br label %2109

2109:                                             ; preds = %2107, %2073
  %2110 = phi i32 [ 16, %2073 ], [ %2108, %2107 ]
  br label %2111

2111:                                             ; preds = %2109, %2066
  %2112 = phi i32 [ 12, %2066 ], [ %2110, %2109 ]
  br label %2113

2113:                                             ; preds = %2111, %2059
  %2114 = phi i32 [ 10, %2059 ], [ %2112, %2111 ]
  br label %2115

2115:                                             ; preds = %2113, %2052
  %2116 = phi i32 [ 8, %2052 ], [ %2114, %2113 ]
  br label %2117

2117:                                             ; preds = %2115, %2045
  %2118 = phi i32 [ 6, %2045 ], [ %2116, %2115 ]
  br label %2119

2119:                                             ; preds = %2117, %2038
  %2120 = phi i32 [ 4, %2038 ], [ %2118, %2117 ]
  br label %2121

2121:                                             ; preds = %2119, %2031
  %2122 = phi i32 [ 2, %2031 ], [ %2120, %2119 ]
  br label %2123

2123:                                             ; preds = %2121, %2024
  %2124 = phi i32 [ 1, %2024 ], [ %2122, %2121 ]
  %2125 = udiv i32 %2018, %2124
  %2126 = mul i32 %2125, 2
  %2127 = load ptr, ptr %2, align 8, !tbaa !5
  %2128 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2127, i32 0, i32 1
  %2129 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2128, i32 0, i32 0
  %2130 = load i32, ptr %2129, align 8, !tbaa !36
  %2131 = udiv i32 %2130, 2
  %2132 = add i32 %2126, %2131
  %2133 = load ptr, ptr %2, align 8, !tbaa !5
  %2134 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2133, i32 0, i32 1
  %2135 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2134, i32 0, i32 0
  %2136 = load i32, ptr %2135, align 8, !tbaa !36
  %2137 = udiv i32 %2132, %2136
  %2138 = trunc i32 %2137 to i16
  %2139 = zext i16 %2138 to i32
  store i32 %2139, ptr %6, align 4, !tbaa !9
  br label %3016

2140:                                             ; preds = %2015
  %2141 = call i32 @HAL_RCC_GetPCLK2Freq()
  %2142 = load ptr, ptr %2, align 8, !tbaa !5
  %2143 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2142, i32 0, i32 1
  %2144 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2143, i32 0, i32 8
  %2145 = load i32, ptr %2144, align 8, !tbaa !29
  %2146 = icmp eq i32 %2145, 0
  br i1 %2146, label %2147, label %2148

2147:                                             ; preds = %2140
  br label %2246

2148:                                             ; preds = %2140
  %2149 = load ptr, ptr %2, align 8, !tbaa !5
  %2150 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2149, i32 0, i32 1
  %2151 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2150, i32 0, i32 8
  %2152 = load i32, ptr %2151, align 8, !tbaa !29
  %2153 = icmp eq i32 %2152, 1
  br i1 %2153, label %2154, label %2155

2154:                                             ; preds = %2148
  br label %2244

2155:                                             ; preds = %2148
  %2156 = load ptr, ptr %2, align 8, !tbaa !5
  %2157 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2156, i32 0, i32 1
  %2158 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2157, i32 0, i32 8
  %2159 = load i32, ptr %2158, align 8, !tbaa !29
  %2160 = icmp eq i32 %2159, 2
  br i1 %2160, label %2161, label %2162

2161:                                             ; preds = %2155
  br label %2242

2162:                                             ; preds = %2155
  %2163 = load ptr, ptr %2, align 8, !tbaa !5
  %2164 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2163, i32 0, i32 1
  %2165 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2164, i32 0, i32 8
  %2166 = load i32, ptr %2165, align 8, !tbaa !29
  %2167 = icmp eq i32 %2166, 3
  br i1 %2167, label %2168, label %2169

2168:                                             ; preds = %2162
  br label %2240

2169:                                             ; preds = %2162
  %2170 = load ptr, ptr %2, align 8, !tbaa !5
  %2171 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2170, i32 0, i32 1
  %2172 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2171, i32 0, i32 8
  %2173 = load i32, ptr %2172, align 8, !tbaa !29
  %2174 = icmp eq i32 %2173, 4
  br i1 %2174, label %2175, label %2176

2175:                                             ; preds = %2169
  br label %2238

2176:                                             ; preds = %2169
  %2177 = load ptr, ptr %2, align 8, !tbaa !5
  %2178 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2177, i32 0, i32 1
  %2179 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2178, i32 0, i32 8
  %2180 = load i32, ptr %2179, align 8, !tbaa !29
  %2181 = icmp eq i32 %2180, 5
  br i1 %2181, label %2182, label %2183

2182:                                             ; preds = %2176
  br label %2236

2183:                                             ; preds = %2176
  %2184 = load ptr, ptr %2, align 8, !tbaa !5
  %2185 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2184, i32 0, i32 1
  %2186 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2185, i32 0, i32 8
  %2187 = load i32, ptr %2186, align 8, !tbaa !29
  %2188 = icmp eq i32 %2187, 6
  br i1 %2188, label %2189, label %2190

2189:                                             ; preds = %2183
  br label %2234

2190:                                             ; preds = %2183
  %2191 = load ptr, ptr %2, align 8, !tbaa !5
  %2192 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2191, i32 0, i32 1
  %2193 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2192, i32 0, i32 8
  %2194 = load i32, ptr %2193, align 8, !tbaa !29
  %2195 = icmp eq i32 %2194, 7
  br i1 %2195, label %2196, label %2197

2196:                                             ; preds = %2190
  br label %2232

2197:                                             ; preds = %2190
  %2198 = load ptr, ptr %2, align 8, !tbaa !5
  %2199 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2198, i32 0, i32 1
  %2200 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2199, i32 0, i32 8
  %2201 = load i32, ptr %2200, align 8, !tbaa !29
  %2202 = icmp eq i32 %2201, 8
  br i1 %2202, label %2203, label %2204

2203:                                             ; preds = %2197
  br label %2230

2204:                                             ; preds = %2197
  %2205 = load ptr, ptr %2, align 8, !tbaa !5
  %2206 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2205, i32 0, i32 1
  %2207 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2206, i32 0, i32 8
  %2208 = load i32, ptr %2207, align 8, !tbaa !29
  %2209 = icmp eq i32 %2208, 9
  br i1 %2209, label %2210, label %2211

2210:                                             ; preds = %2204
  br label %2228

2211:                                             ; preds = %2204
  %2212 = load ptr, ptr %2, align 8, !tbaa !5
  %2213 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2212, i32 0, i32 1
  %2214 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2213, i32 0, i32 8
  %2215 = load i32, ptr %2214, align 8, !tbaa !29
  %2216 = icmp eq i32 %2215, 10
  br i1 %2216, label %2217, label %2218

2217:                                             ; preds = %2211
  br label %2226

2218:                                             ; preds = %2211
  %2219 = load ptr, ptr %2, align 8, !tbaa !5
  %2220 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2219, i32 0, i32 1
  %2221 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2220, i32 0, i32 8
  %2222 = load i32, ptr %2221, align 8, !tbaa !29
  %2223 = icmp eq i32 %2222, 11
  %2224 = zext i1 %2223 to i64
  %2225 = select i1 %2223, i32 256, i32 1
  br label %2226

2226:                                             ; preds = %2218, %2217
  %2227 = phi i32 [ 128, %2217 ], [ %2225, %2218 ]
  br label %2228

2228:                                             ; preds = %2226, %2210
  %2229 = phi i32 [ 64, %2210 ], [ %2227, %2226 ]
  br label %2230

2230:                                             ; preds = %2228, %2203
  %2231 = phi i32 [ 32, %2203 ], [ %2229, %2228 ]
  br label %2232

2232:                                             ; preds = %2230, %2196
  %2233 = phi i32 [ 16, %2196 ], [ %2231, %2230 ]
  br label %2234

2234:                                             ; preds = %2232, %2189
  %2235 = phi i32 [ 12, %2189 ], [ %2233, %2232 ]
  br label %2236

2236:                                             ; preds = %2234, %2182
  %2237 = phi i32 [ 10, %2182 ], [ %2235, %2234 ]
  br label %2238

2238:                                             ; preds = %2236, %2175
  %2239 = phi i32 [ 8, %2175 ], [ %2237, %2236 ]
  br label %2240

2240:                                             ; preds = %2238, %2168
  %2241 = phi i32 [ 6, %2168 ], [ %2239, %2238 ]
  br label %2242

2242:                                             ; preds = %2240, %2161
  %2243 = phi i32 [ 4, %2161 ], [ %2241, %2240 ]
  br label %2244

2244:                                             ; preds = %2242, %2154
  %2245 = phi i32 [ 2, %2154 ], [ %2243, %2242 ]
  br label %2246

2246:                                             ; preds = %2244, %2147
  %2247 = phi i32 [ 1, %2147 ], [ %2245, %2244 ]
  %2248 = udiv i32 %2141, %2247
  %2249 = mul i32 %2248, 2
  %2250 = load ptr, ptr %2, align 8, !tbaa !5
  %2251 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2250, i32 0, i32 1
  %2252 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2251, i32 0, i32 0
  %2253 = load i32, ptr %2252, align 8, !tbaa !36
  %2254 = udiv i32 %2253, 2
  %2255 = add i32 %2249, %2254
  %2256 = load ptr, ptr %2, align 8, !tbaa !5
  %2257 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2256, i32 0, i32 1
  %2258 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2257, i32 0, i32 0
  %2259 = load i32, ptr %2258, align 8, !tbaa !36
  %2260 = udiv i32 %2255, %2259
  %2261 = trunc i32 %2260 to i16
  %2262 = zext i16 %2261 to i32
  store i32 %2262, ptr %6, align 4, !tbaa !9
  br label %3016

2263:                                             ; preds = %2015
  call void @HAL_RCCEx_GetPLL2ClockFreq(ptr noundef %9)
  %2264 = getelementptr inbounds %struct.PLL2_ClocksTypeDef, ptr %9, i32 0, i32 1
  %2265 = load i32, ptr %2264, align 4, !tbaa !33
  %2266 = load ptr, ptr %2, align 8, !tbaa !5
  %2267 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2266, i32 0, i32 1
  %2268 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2267, i32 0, i32 8
  %2269 = load i32, ptr %2268, align 8, !tbaa !29
  %2270 = icmp eq i32 %2269, 0
  br i1 %2270, label %2271, label %2272

2271:                                             ; preds = %2263
  br label %2370

2272:                                             ; preds = %2263
  %2273 = load ptr, ptr %2, align 8, !tbaa !5
  %2274 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2273, i32 0, i32 1
  %2275 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2274, i32 0, i32 8
  %2276 = load i32, ptr %2275, align 8, !tbaa !29
  %2277 = icmp eq i32 %2276, 1
  br i1 %2277, label %2278, label %2279

2278:                                             ; preds = %2272
  br label %2368

2279:                                             ; preds = %2272
  %2280 = load ptr, ptr %2, align 8, !tbaa !5
  %2281 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2280, i32 0, i32 1
  %2282 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2281, i32 0, i32 8
  %2283 = load i32, ptr %2282, align 8, !tbaa !29
  %2284 = icmp eq i32 %2283, 2
  br i1 %2284, label %2285, label %2286

2285:                                             ; preds = %2279
  br label %2366

2286:                                             ; preds = %2279
  %2287 = load ptr, ptr %2, align 8, !tbaa !5
  %2288 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2287, i32 0, i32 1
  %2289 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2288, i32 0, i32 8
  %2290 = load i32, ptr %2289, align 8, !tbaa !29
  %2291 = icmp eq i32 %2290, 3
  br i1 %2291, label %2292, label %2293

2292:                                             ; preds = %2286
  br label %2364

2293:                                             ; preds = %2286
  %2294 = load ptr, ptr %2, align 8, !tbaa !5
  %2295 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2294, i32 0, i32 1
  %2296 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2295, i32 0, i32 8
  %2297 = load i32, ptr %2296, align 8, !tbaa !29
  %2298 = icmp eq i32 %2297, 4
  br i1 %2298, label %2299, label %2300

2299:                                             ; preds = %2293
  br label %2362

2300:                                             ; preds = %2293
  %2301 = load ptr, ptr %2, align 8, !tbaa !5
  %2302 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2301, i32 0, i32 1
  %2303 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2302, i32 0, i32 8
  %2304 = load i32, ptr %2303, align 8, !tbaa !29
  %2305 = icmp eq i32 %2304, 5
  br i1 %2305, label %2306, label %2307

2306:                                             ; preds = %2300
  br label %2360

2307:                                             ; preds = %2300
  %2308 = load ptr, ptr %2, align 8, !tbaa !5
  %2309 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2308, i32 0, i32 1
  %2310 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2309, i32 0, i32 8
  %2311 = load i32, ptr %2310, align 8, !tbaa !29
  %2312 = icmp eq i32 %2311, 6
  br i1 %2312, label %2313, label %2314

2313:                                             ; preds = %2307
  br label %2358

2314:                                             ; preds = %2307
  %2315 = load ptr, ptr %2, align 8, !tbaa !5
  %2316 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2315, i32 0, i32 1
  %2317 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2316, i32 0, i32 8
  %2318 = load i32, ptr %2317, align 8, !tbaa !29
  %2319 = icmp eq i32 %2318, 7
  br i1 %2319, label %2320, label %2321

2320:                                             ; preds = %2314
  br label %2356

2321:                                             ; preds = %2314
  %2322 = load ptr, ptr %2, align 8, !tbaa !5
  %2323 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2322, i32 0, i32 1
  %2324 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2323, i32 0, i32 8
  %2325 = load i32, ptr %2324, align 8, !tbaa !29
  %2326 = icmp eq i32 %2325, 8
  br i1 %2326, label %2327, label %2328

2327:                                             ; preds = %2321
  br label %2354

2328:                                             ; preds = %2321
  %2329 = load ptr, ptr %2, align 8, !tbaa !5
  %2330 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2329, i32 0, i32 1
  %2331 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2330, i32 0, i32 8
  %2332 = load i32, ptr %2331, align 8, !tbaa !29
  %2333 = icmp eq i32 %2332, 9
  br i1 %2333, label %2334, label %2335

2334:                                             ; preds = %2328
  br label %2352

2335:                                             ; preds = %2328
  %2336 = load ptr, ptr %2, align 8, !tbaa !5
  %2337 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2336, i32 0, i32 1
  %2338 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2337, i32 0, i32 8
  %2339 = load i32, ptr %2338, align 8, !tbaa !29
  %2340 = icmp eq i32 %2339, 10
  br i1 %2340, label %2341, label %2342

2341:                                             ; preds = %2335
  br label %2350

2342:                                             ; preds = %2335
  %2343 = load ptr, ptr %2, align 8, !tbaa !5
  %2344 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2343, i32 0, i32 1
  %2345 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2344, i32 0, i32 8
  %2346 = load i32, ptr %2345, align 8, !tbaa !29
  %2347 = icmp eq i32 %2346, 11
  %2348 = zext i1 %2347 to i64
  %2349 = select i1 %2347, i32 256, i32 1
  br label %2350

2350:                                             ; preds = %2342, %2341
  %2351 = phi i32 [ 128, %2341 ], [ %2349, %2342 ]
  br label %2352

2352:                                             ; preds = %2350, %2334
  %2353 = phi i32 [ 64, %2334 ], [ %2351, %2350 ]
  br label %2354

2354:                                             ; preds = %2352, %2327
  %2355 = phi i32 [ 32, %2327 ], [ %2353, %2352 ]
  br label %2356

2356:                                             ; preds = %2354, %2320
  %2357 = phi i32 [ 16, %2320 ], [ %2355, %2354 ]
  br label %2358

2358:                                             ; preds = %2356, %2313
  %2359 = phi i32 [ 12, %2313 ], [ %2357, %2356 ]
  br label %2360

2360:                                             ; preds = %2358, %2306
  %2361 = phi i32 [ 10, %2306 ], [ %2359, %2358 ]
  br label %2362

2362:                                             ; preds = %2360, %2299
  %2363 = phi i32 [ 8, %2299 ], [ %2361, %2360 ]
  br label %2364

2364:                                             ; preds = %2362, %2292
  %2365 = phi i32 [ 6, %2292 ], [ %2363, %2362 ]
  br label %2366

2366:                                             ; preds = %2364, %2285
  %2367 = phi i32 [ 4, %2285 ], [ %2365, %2364 ]
  br label %2368

2368:                                             ; preds = %2366, %2278
  %2369 = phi i32 [ 2, %2278 ], [ %2367, %2366 ]
  br label %2370

2370:                                             ; preds = %2368, %2271
  %2371 = phi i32 [ 1, %2271 ], [ %2369, %2368 ]
  %2372 = udiv i32 %2265, %2371
  %2373 = mul i32 %2372, 2
  %2374 = load ptr, ptr %2, align 8, !tbaa !5
  %2375 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2374, i32 0, i32 1
  %2376 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2375, i32 0, i32 0
  %2377 = load i32, ptr %2376, align 8, !tbaa !36
  %2378 = udiv i32 %2377, 2
  %2379 = add i32 %2373, %2378
  %2380 = load ptr, ptr %2, align 8, !tbaa !5
  %2381 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2380, i32 0, i32 1
  %2382 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2381, i32 0, i32 0
  %2383 = load i32, ptr %2382, align 8, !tbaa !36
  %2384 = udiv i32 %2379, %2383
  %2385 = trunc i32 %2384 to i16
  %2386 = zext i16 %2385 to i32
  store i32 %2386, ptr %6, align 4, !tbaa !9
  br label %3016

2387:                                             ; preds = %2015
  call void @HAL_RCCEx_GetPLL3ClockFreq(ptr noundef %10)
  %2388 = getelementptr inbounds %struct.PLL3_ClocksTypeDef, ptr %10, i32 0, i32 1
  %2389 = load i32, ptr %2388, align 4, !tbaa !33
  %2390 = load ptr, ptr %2, align 8, !tbaa !5
  %2391 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2390, i32 0, i32 1
  %2392 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2391, i32 0, i32 8
  %2393 = load i32, ptr %2392, align 8, !tbaa !29
  %2394 = icmp eq i32 %2393, 0
  br i1 %2394, label %2395, label %2396

2395:                                             ; preds = %2387
  br label %2494

2396:                                             ; preds = %2387
  %2397 = load ptr, ptr %2, align 8, !tbaa !5
  %2398 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2397, i32 0, i32 1
  %2399 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2398, i32 0, i32 8
  %2400 = load i32, ptr %2399, align 8, !tbaa !29
  %2401 = icmp eq i32 %2400, 1
  br i1 %2401, label %2402, label %2403

2402:                                             ; preds = %2396
  br label %2492

2403:                                             ; preds = %2396
  %2404 = load ptr, ptr %2, align 8, !tbaa !5
  %2405 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2404, i32 0, i32 1
  %2406 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2405, i32 0, i32 8
  %2407 = load i32, ptr %2406, align 8, !tbaa !29
  %2408 = icmp eq i32 %2407, 2
  br i1 %2408, label %2409, label %2410

2409:                                             ; preds = %2403
  br label %2490

2410:                                             ; preds = %2403
  %2411 = load ptr, ptr %2, align 8, !tbaa !5
  %2412 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2411, i32 0, i32 1
  %2413 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2412, i32 0, i32 8
  %2414 = load i32, ptr %2413, align 8, !tbaa !29
  %2415 = icmp eq i32 %2414, 3
  br i1 %2415, label %2416, label %2417

2416:                                             ; preds = %2410
  br label %2488

2417:                                             ; preds = %2410
  %2418 = load ptr, ptr %2, align 8, !tbaa !5
  %2419 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2418, i32 0, i32 1
  %2420 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2419, i32 0, i32 8
  %2421 = load i32, ptr %2420, align 8, !tbaa !29
  %2422 = icmp eq i32 %2421, 4
  br i1 %2422, label %2423, label %2424

2423:                                             ; preds = %2417
  br label %2486

2424:                                             ; preds = %2417
  %2425 = load ptr, ptr %2, align 8, !tbaa !5
  %2426 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2425, i32 0, i32 1
  %2427 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2426, i32 0, i32 8
  %2428 = load i32, ptr %2427, align 8, !tbaa !29
  %2429 = icmp eq i32 %2428, 5
  br i1 %2429, label %2430, label %2431

2430:                                             ; preds = %2424
  br label %2484

2431:                                             ; preds = %2424
  %2432 = load ptr, ptr %2, align 8, !tbaa !5
  %2433 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2432, i32 0, i32 1
  %2434 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2433, i32 0, i32 8
  %2435 = load i32, ptr %2434, align 8, !tbaa !29
  %2436 = icmp eq i32 %2435, 6
  br i1 %2436, label %2437, label %2438

2437:                                             ; preds = %2431
  br label %2482

2438:                                             ; preds = %2431
  %2439 = load ptr, ptr %2, align 8, !tbaa !5
  %2440 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2439, i32 0, i32 1
  %2441 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2440, i32 0, i32 8
  %2442 = load i32, ptr %2441, align 8, !tbaa !29
  %2443 = icmp eq i32 %2442, 7
  br i1 %2443, label %2444, label %2445

2444:                                             ; preds = %2438
  br label %2480

2445:                                             ; preds = %2438
  %2446 = load ptr, ptr %2, align 8, !tbaa !5
  %2447 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2446, i32 0, i32 1
  %2448 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2447, i32 0, i32 8
  %2449 = load i32, ptr %2448, align 8, !tbaa !29
  %2450 = icmp eq i32 %2449, 8
  br i1 %2450, label %2451, label %2452

2451:                                             ; preds = %2445
  br label %2478

2452:                                             ; preds = %2445
  %2453 = load ptr, ptr %2, align 8, !tbaa !5
  %2454 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2453, i32 0, i32 1
  %2455 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2454, i32 0, i32 8
  %2456 = load i32, ptr %2455, align 8, !tbaa !29
  %2457 = icmp eq i32 %2456, 9
  br i1 %2457, label %2458, label %2459

2458:                                             ; preds = %2452
  br label %2476

2459:                                             ; preds = %2452
  %2460 = load ptr, ptr %2, align 8, !tbaa !5
  %2461 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2460, i32 0, i32 1
  %2462 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2461, i32 0, i32 8
  %2463 = load i32, ptr %2462, align 8, !tbaa !29
  %2464 = icmp eq i32 %2463, 10
  br i1 %2464, label %2465, label %2466

2465:                                             ; preds = %2459
  br label %2474

2466:                                             ; preds = %2459
  %2467 = load ptr, ptr %2, align 8, !tbaa !5
  %2468 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2467, i32 0, i32 1
  %2469 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2468, i32 0, i32 8
  %2470 = load i32, ptr %2469, align 8, !tbaa !29
  %2471 = icmp eq i32 %2470, 11
  %2472 = zext i1 %2471 to i64
  %2473 = select i1 %2471, i32 256, i32 1
  br label %2474

2474:                                             ; preds = %2466, %2465
  %2475 = phi i32 [ 128, %2465 ], [ %2473, %2466 ]
  br label %2476

2476:                                             ; preds = %2474, %2458
  %2477 = phi i32 [ 64, %2458 ], [ %2475, %2474 ]
  br label %2478

2478:                                             ; preds = %2476, %2451
  %2479 = phi i32 [ 32, %2451 ], [ %2477, %2476 ]
  br label %2480

2480:                                             ; preds = %2478, %2444
  %2481 = phi i32 [ 16, %2444 ], [ %2479, %2478 ]
  br label %2482

2482:                                             ; preds = %2480, %2437
  %2483 = phi i32 [ 12, %2437 ], [ %2481, %2480 ]
  br label %2484

2484:                                             ; preds = %2482, %2430
  %2485 = phi i32 [ 10, %2430 ], [ %2483, %2482 ]
  br label %2486

2486:                                             ; preds = %2484, %2423
  %2487 = phi i32 [ 8, %2423 ], [ %2485, %2484 ]
  br label %2488

2488:                                             ; preds = %2486, %2416
  %2489 = phi i32 [ 6, %2416 ], [ %2487, %2486 ]
  br label %2490

2490:                                             ; preds = %2488, %2409
  %2491 = phi i32 [ 4, %2409 ], [ %2489, %2488 ]
  br label %2492

2492:                                             ; preds = %2490, %2402
  %2493 = phi i32 [ 2, %2402 ], [ %2491, %2490 ]
  br label %2494

2494:                                             ; preds = %2492, %2395
  %2495 = phi i32 [ 1, %2395 ], [ %2493, %2492 ]
  %2496 = udiv i32 %2389, %2495
  %2497 = mul i32 %2496, 2
  %2498 = load ptr, ptr %2, align 8, !tbaa !5
  %2499 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2498, i32 0, i32 1
  %2500 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2499, i32 0, i32 0
  %2501 = load i32, ptr %2500, align 8, !tbaa !36
  %2502 = udiv i32 %2501, 2
  %2503 = add i32 %2497, %2502
  %2504 = load ptr, ptr %2, align 8, !tbaa !5
  %2505 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2504, i32 0, i32 1
  %2506 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2505, i32 0, i32 0
  %2507 = load i32, ptr %2506, align 8, !tbaa !36
  %2508 = udiv i32 %2503, %2507
  %2509 = trunc i32 %2508 to i16
  %2510 = zext i16 %2509 to i32
  store i32 %2510, ptr %6, align 4, !tbaa !9
  br label %3016

2511:                                             ; preds = %2015
  %2512 = load volatile i32, ptr inttoptr (i64 1476543488 to ptr), align 4, !tbaa !35
  %2513 = zext i32 %2512 to i64
  %2514 = and i64 %2513, 32
  %2515 = icmp ne i64 %2514, 0
  %2516 = zext i1 %2515 to i64
  %2517 = select i1 %2515, i32 1, i32 0
  %2518 = icmp ne i32 %2517, 0
  br i1 %2518, label %2519, label %2647

2519:                                             ; preds = %2511
  %2520 = load volatile i32, ptr inttoptr (i64 1476543488 to ptr), align 4, !tbaa !35
  %2521 = zext i32 %2520 to i64
  %2522 = and i64 %2521, 24
  %2523 = trunc i64 %2522 to i32
  %2524 = lshr i32 %2523, 3
  %2525 = lshr i32 64000000, %2524
  %2526 = load ptr, ptr %2, align 8, !tbaa !5
  %2527 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2526, i32 0, i32 1
  %2528 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2527, i32 0, i32 8
  %2529 = load i32, ptr %2528, align 8, !tbaa !29
  %2530 = icmp eq i32 %2529, 0
  br i1 %2530, label %2531, label %2532

2531:                                             ; preds = %2519
  br label %2630

2532:                                             ; preds = %2519
  %2533 = load ptr, ptr %2, align 8, !tbaa !5
  %2534 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2533, i32 0, i32 1
  %2535 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2534, i32 0, i32 8
  %2536 = load i32, ptr %2535, align 8, !tbaa !29
  %2537 = icmp eq i32 %2536, 1
  br i1 %2537, label %2538, label %2539

2538:                                             ; preds = %2532
  br label %2628

2539:                                             ; preds = %2532
  %2540 = load ptr, ptr %2, align 8, !tbaa !5
  %2541 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2540, i32 0, i32 1
  %2542 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2541, i32 0, i32 8
  %2543 = load i32, ptr %2542, align 8, !tbaa !29
  %2544 = icmp eq i32 %2543, 2
  br i1 %2544, label %2545, label %2546

2545:                                             ; preds = %2539
  br label %2626

2546:                                             ; preds = %2539
  %2547 = load ptr, ptr %2, align 8, !tbaa !5
  %2548 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2547, i32 0, i32 1
  %2549 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2548, i32 0, i32 8
  %2550 = load i32, ptr %2549, align 8, !tbaa !29
  %2551 = icmp eq i32 %2550, 3
  br i1 %2551, label %2552, label %2553

2552:                                             ; preds = %2546
  br label %2624

2553:                                             ; preds = %2546
  %2554 = load ptr, ptr %2, align 8, !tbaa !5
  %2555 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2554, i32 0, i32 1
  %2556 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2555, i32 0, i32 8
  %2557 = load i32, ptr %2556, align 8, !tbaa !29
  %2558 = icmp eq i32 %2557, 4
  br i1 %2558, label %2559, label %2560

2559:                                             ; preds = %2553
  br label %2622

2560:                                             ; preds = %2553
  %2561 = load ptr, ptr %2, align 8, !tbaa !5
  %2562 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2561, i32 0, i32 1
  %2563 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2562, i32 0, i32 8
  %2564 = load i32, ptr %2563, align 8, !tbaa !29
  %2565 = icmp eq i32 %2564, 5
  br i1 %2565, label %2566, label %2567

2566:                                             ; preds = %2560
  br label %2620

2567:                                             ; preds = %2560
  %2568 = load ptr, ptr %2, align 8, !tbaa !5
  %2569 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2568, i32 0, i32 1
  %2570 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2569, i32 0, i32 8
  %2571 = load i32, ptr %2570, align 8, !tbaa !29
  %2572 = icmp eq i32 %2571, 6
  br i1 %2572, label %2573, label %2574

2573:                                             ; preds = %2567
  br label %2618

2574:                                             ; preds = %2567
  %2575 = load ptr, ptr %2, align 8, !tbaa !5
  %2576 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2575, i32 0, i32 1
  %2577 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2576, i32 0, i32 8
  %2578 = load i32, ptr %2577, align 8, !tbaa !29
  %2579 = icmp eq i32 %2578, 7
  br i1 %2579, label %2580, label %2581

2580:                                             ; preds = %2574
  br label %2616

2581:                                             ; preds = %2574
  %2582 = load ptr, ptr %2, align 8, !tbaa !5
  %2583 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2582, i32 0, i32 1
  %2584 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2583, i32 0, i32 8
  %2585 = load i32, ptr %2584, align 8, !tbaa !29
  %2586 = icmp eq i32 %2585, 8
  br i1 %2586, label %2587, label %2588

2587:                                             ; preds = %2581
  br label %2614

2588:                                             ; preds = %2581
  %2589 = load ptr, ptr %2, align 8, !tbaa !5
  %2590 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2589, i32 0, i32 1
  %2591 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2590, i32 0, i32 8
  %2592 = load i32, ptr %2591, align 8, !tbaa !29
  %2593 = icmp eq i32 %2592, 9
  br i1 %2593, label %2594, label %2595

2594:                                             ; preds = %2588
  br label %2612

2595:                                             ; preds = %2588
  %2596 = load ptr, ptr %2, align 8, !tbaa !5
  %2597 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2596, i32 0, i32 1
  %2598 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2597, i32 0, i32 8
  %2599 = load i32, ptr %2598, align 8, !tbaa !29
  %2600 = icmp eq i32 %2599, 10
  br i1 %2600, label %2601, label %2602

2601:                                             ; preds = %2595
  br label %2610

2602:                                             ; preds = %2595
  %2603 = load ptr, ptr %2, align 8, !tbaa !5
  %2604 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2603, i32 0, i32 1
  %2605 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2604, i32 0, i32 8
  %2606 = load i32, ptr %2605, align 8, !tbaa !29
  %2607 = icmp eq i32 %2606, 11
  %2608 = zext i1 %2607 to i64
  %2609 = select i1 %2607, i32 256, i32 1
  br label %2610

2610:                                             ; preds = %2602, %2601
  %2611 = phi i32 [ 128, %2601 ], [ %2609, %2602 ]
  br label %2612

2612:                                             ; preds = %2610, %2594
  %2613 = phi i32 [ 64, %2594 ], [ %2611, %2610 ]
  br label %2614

2614:                                             ; preds = %2612, %2587
  %2615 = phi i32 [ 32, %2587 ], [ %2613, %2612 ]
  br label %2616

2616:                                             ; preds = %2614, %2580
  %2617 = phi i32 [ 16, %2580 ], [ %2615, %2614 ]
  br label %2618

2618:                                             ; preds = %2616, %2573
  %2619 = phi i32 [ 12, %2573 ], [ %2617, %2616 ]
  br label %2620

2620:                                             ; preds = %2618, %2566
  %2621 = phi i32 [ 10, %2566 ], [ %2619, %2618 ]
  br label %2622

2622:                                             ; preds = %2620, %2559
  %2623 = phi i32 [ 8, %2559 ], [ %2621, %2620 ]
  br label %2624

2624:                                             ; preds = %2622, %2552
  %2625 = phi i32 [ 6, %2552 ], [ %2623, %2622 ]
  br label %2626

2626:                                             ; preds = %2624, %2545
  %2627 = phi i32 [ 4, %2545 ], [ %2625, %2624 ]
  br label %2628

2628:                                             ; preds = %2626, %2538
  %2629 = phi i32 [ 2, %2538 ], [ %2627, %2626 ]
  br label %2630

2630:                                             ; preds = %2628, %2531
  %2631 = phi i32 [ 1, %2531 ], [ %2629, %2628 ]
  %2632 = udiv i32 %2525, %2631
  %2633 = mul i32 %2632, 2
  %2634 = load ptr, ptr %2, align 8, !tbaa !5
  %2635 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2634, i32 0, i32 1
  %2636 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2635, i32 0, i32 0
  %2637 = load i32, ptr %2636, align 8, !tbaa !36
  %2638 = udiv i32 %2637, 2
  %2639 = add i32 %2633, %2638
  %2640 = load ptr, ptr %2, align 8, !tbaa !5
  %2641 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2640, i32 0, i32 1
  %2642 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2641, i32 0, i32 0
  %2643 = load i32, ptr %2642, align 8, !tbaa !36
  %2644 = udiv i32 %2639, %2643
  %2645 = trunc i32 %2644 to i16
  %2646 = zext i16 %2645 to i32
  store i32 %2646, ptr %6, align 4, !tbaa !9
  br label %2769

2647:                                             ; preds = %2511
  %2648 = load ptr, ptr %2, align 8, !tbaa !5
  %2649 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2648, i32 0, i32 1
  %2650 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2649, i32 0, i32 8
  %2651 = load i32, ptr %2650, align 8, !tbaa !29
  %2652 = icmp eq i32 %2651, 0
  br i1 %2652, label %2653, label %2654

2653:                                             ; preds = %2647
  br label %2752

2654:                                             ; preds = %2647
  %2655 = load ptr, ptr %2, align 8, !tbaa !5
  %2656 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2655, i32 0, i32 1
  %2657 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2656, i32 0, i32 8
  %2658 = load i32, ptr %2657, align 8, !tbaa !29
  %2659 = icmp eq i32 %2658, 1
  br i1 %2659, label %2660, label %2661

2660:                                             ; preds = %2654
  br label %2750

2661:                                             ; preds = %2654
  %2662 = load ptr, ptr %2, align 8, !tbaa !5
  %2663 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2662, i32 0, i32 1
  %2664 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2663, i32 0, i32 8
  %2665 = load i32, ptr %2664, align 8, !tbaa !29
  %2666 = icmp eq i32 %2665, 2
  br i1 %2666, label %2667, label %2668

2667:                                             ; preds = %2661
  br label %2748

2668:                                             ; preds = %2661
  %2669 = load ptr, ptr %2, align 8, !tbaa !5
  %2670 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2669, i32 0, i32 1
  %2671 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2670, i32 0, i32 8
  %2672 = load i32, ptr %2671, align 8, !tbaa !29
  %2673 = icmp eq i32 %2672, 3
  br i1 %2673, label %2674, label %2675

2674:                                             ; preds = %2668
  br label %2746

2675:                                             ; preds = %2668
  %2676 = load ptr, ptr %2, align 8, !tbaa !5
  %2677 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2676, i32 0, i32 1
  %2678 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2677, i32 0, i32 8
  %2679 = load i32, ptr %2678, align 8, !tbaa !29
  %2680 = icmp eq i32 %2679, 4
  br i1 %2680, label %2681, label %2682

2681:                                             ; preds = %2675
  br label %2744

2682:                                             ; preds = %2675
  %2683 = load ptr, ptr %2, align 8, !tbaa !5
  %2684 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2683, i32 0, i32 1
  %2685 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2684, i32 0, i32 8
  %2686 = load i32, ptr %2685, align 8, !tbaa !29
  %2687 = icmp eq i32 %2686, 5
  br i1 %2687, label %2688, label %2689

2688:                                             ; preds = %2682
  br label %2742

2689:                                             ; preds = %2682
  %2690 = load ptr, ptr %2, align 8, !tbaa !5
  %2691 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2690, i32 0, i32 1
  %2692 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2691, i32 0, i32 8
  %2693 = load i32, ptr %2692, align 8, !tbaa !29
  %2694 = icmp eq i32 %2693, 6
  br i1 %2694, label %2695, label %2696

2695:                                             ; preds = %2689
  br label %2740

2696:                                             ; preds = %2689
  %2697 = load ptr, ptr %2, align 8, !tbaa !5
  %2698 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2697, i32 0, i32 1
  %2699 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2698, i32 0, i32 8
  %2700 = load i32, ptr %2699, align 8, !tbaa !29
  %2701 = icmp eq i32 %2700, 7
  br i1 %2701, label %2702, label %2703

2702:                                             ; preds = %2696
  br label %2738

2703:                                             ; preds = %2696
  %2704 = load ptr, ptr %2, align 8, !tbaa !5
  %2705 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2704, i32 0, i32 1
  %2706 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2705, i32 0, i32 8
  %2707 = load i32, ptr %2706, align 8, !tbaa !29
  %2708 = icmp eq i32 %2707, 8
  br i1 %2708, label %2709, label %2710

2709:                                             ; preds = %2703
  br label %2736

2710:                                             ; preds = %2703
  %2711 = load ptr, ptr %2, align 8, !tbaa !5
  %2712 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2711, i32 0, i32 1
  %2713 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2712, i32 0, i32 8
  %2714 = load i32, ptr %2713, align 8, !tbaa !29
  %2715 = icmp eq i32 %2714, 9
  br i1 %2715, label %2716, label %2717

2716:                                             ; preds = %2710
  br label %2734

2717:                                             ; preds = %2710
  %2718 = load ptr, ptr %2, align 8, !tbaa !5
  %2719 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2718, i32 0, i32 1
  %2720 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2719, i32 0, i32 8
  %2721 = load i32, ptr %2720, align 8, !tbaa !29
  %2722 = icmp eq i32 %2721, 10
  br i1 %2722, label %2723, label %2724

2723:                                             ; preds = %2717
  br label %2732

2724:                                             ; preds = %2717
  %2725 = load ptr, ptr %2, align 8, !tbaa !5
  %2726 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2725, i32 0, i32 1
  %2727 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2726, i32 0, i32 8
  %2728 = load i32, ptr %2727, align 8, !tbaa !29
  %2729 = icmp eq i32 %2728, 11
  %2730 = zext i1 %2729 to i64
  %2731 = select i1 %2729, i32 256, i32 1
  br label %2732

2732:                                             ; preds = %2724, %2723
  %2733 = phi i32 [ 128, %2723 ], [ %2731, %2724 ]
  br label %2734

2734:                                             ; preds = %2732, %2716
  %2735 = phi i32 [ 64, %2716 ], [ %2733, %2732 ]
  br label %2736

2736:                                             ; preds = %2734, %2709
  %2737 = phi i32 [ 32, %2709 ], [ %2735, %2734 ]
  br label %2738

2738:                                             ; preds = %2736, %2702
  %2739 = phi i32 [ 16, %2702 ], [ %2737, %2736 ]
  br label %2740

2740:                                             ; preds = %2738, %2695
  %2741 = phi i32 [ 12, %2695 ], [ %2739, %2738 ]
  br label %2742

2742:                                             ; preds = %2740, %2688
  %2743 = phi i32 [ 10, %2688 ], [ %2741, %2740 ]
  br label %2744

2744:                                             ; preds = %2742, %2681
  %2745 = phi i32 [ 8, %2681 ], [ %2743, %2742 ]
  br label %2746

2746:                                             ; preds = %2744, %2674
  %2747 = phi i32 [ 6, %2674 ], [ %2745, %2744 ]
  br label %2748

2748:                                             ; preds = %2746, %2667
  %2749 = phi i32 [ 4, %2667 ], [ %2747, %2746 ]
  br label %2750

2750:                                             ; preds = %2748, %2660
  %2751 = phi i32 [ 2, %2660 ], [ %2749, %2748 ]
  br label %2752

2752:                                             ; preds = %2750, %2653
  %2753 = phi i32 [ 1, %2653 ], [ %2751, %2750 ]
  %2754 = udiv i32 64000000, %2753
  %2755 = mul i32 %2754, 2
  %2756 = load ptr, ptr %2, align 8, !tbaa !5
  %2757 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2756, i32 0, i32 1
  %2758 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2757, i32 0, i32 0
  %2759 = load i32, ptr %2758, align 8, !tbaa !36
  %2760 = udiv i32 %2759, 2
  %2761 = add i32 %2755, %2760
  %2762 = load ptr, ptr %2, align 8, !tbaa !5
  %2763 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2762, i32 0, i32 1
  %2764 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2763, i32 0, i32 0
  %2765 = load i32, ptr %2764, align 8, !tbaa !36
  %2766 = udiv i32 %2761, %2765
  %2767 = trunc i32 %2766 to i16
  %2768 = zext i16 %2767 to i32
  store i32 %2768, ptr %6, align 4, !tbaa !9
  br label %2769

2769:                                             ; preds = %2752, %2630
  br label %3016

2770:                                             ; preds = %2015
  %2771 = load ptr, ptr %2, align 8, !tbaa !5
  %2772 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2771, i32 0, i32 1
  %2773 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2772, i32 0, i32 8
  %2774 = load i32, ptr %2773, align 8, !tbaa !29
  %2775 = icmp eq i32 %2774, 0
  br i1 %2775, label %2776, label %2777

2776:                                             ; preds = %2770
  br label %2875

2777:                                             ; preds = %2770
  %2778 = load ptr, ptr %2, align 8, !tbaa !5
  %2779 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2778, i32 0, i32 1
  %2780 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2779, i32 0, i32 8
  %2781 = load i32, ptr %2780, align 8, !tbaa !29
  %2782 = icmp eq i32 %2781, 1
  br i1 %2782, label %2783, label %2784

2783:                                             ; preds = %2777
  br label %2873

2784:                                             ; preds = %2777
  %2785 = load ptr, ptr %2, align 8, !tbaa !5
  %2786 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2785, i32 0, i32 1
  %2787 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2786, i32 0, i32 8
  %2788 = load i32, ptr %2787, align 8, !tbaa !29
  %2789 = icmp eq i32 %2788, 2
  br i1 %2789, label %2790, label %2791

2790:                                             ; preds = %2784
  br label %2871

2791:                                             ; preds = %2784
  %2792 = load ptr, ptr %2, align 8, !tbaa !5
  %2793 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2792, i32 0, i32 1
  %2794 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2793, i32 0, i32 8
  %2795 = load i32, ptr %2794, align 8, !tbaa !29
  %2796 = icmp eq i32 %2795, 3
  br i1 %2796, label %2797, label %2798

2797:                                             ; preds = %2791
  br label %2869

2798:                                             ; preds = %2791
  %2799 = load ptr, ptr %2, align 8, !tbaa !5
  %2800 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2799, i32 0, i32 1
  %2801 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2800, i32 0, i32 8
  %2802 = load i32, ptr %2801, align 8, !tbaa !29
  %2803 = icmp eq i32 %2802, 4
  br i1 %2803, label %2804, label %2805

2804:                                             ; preds = %2798
  br label %2867

2805:                                             ; preds = %2798
  %2806 = load ptr, ptr %2, align 8, !tbaa !5
  %2807 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2806, i32 0, i32 1
  %2808 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2807, i32 0, i32 8
  %2809 = load i32, ptr %2808, align 8, !tbaa !29
  %2810 = icmp eq i32 %2809, 5
  br i1 %2810, label %2811, label %2812

2811:                                             ; preds = %2805
  br label %2865

2812:                                             ; preds = %2805
  %2813 = load ptr, ptr %2, align 8, !tbaa !5
  %2814 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2813, i32 0, i32 1
  %2815 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2814, i32 0, i32 8
  %2816 = load i32, ptr %2815, align 8, !tbaa !29
  %2817 = icmp eq i32 %2816, 6
  br i1 %2817, label %2818, label %2819

2818:                                             ; preds = %2812
  br label %2863

2819:                                             ; preds = %2812
  %2820 = load ptr, ptr %2, align 8, !tbaa !5
  %2821 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2820, i32 0, i32 1
  %2822 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2821, i32 0, i32 8
  %2823 = load i32, ptr %2822, align 8, !tbaa !29
  %2824 = icmp eq i32 %2823, 7
  br i1 %2824, label %2825, label %2826

2825:                                             ; preds = %2819
  br label %2861

2826:                                             ; preds = %2819
  %2827 = load ptr, ptr %2, align 8, !tbaa !5
  %2828 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2827, i32 0, i32 1
  %2829 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2828, i32 0, i32 8
  %2830 = load i32, ptr %2829, align 8, !tbaa !29
  %2831 = icmp eq i32 %2830, 8
  br i1 %2831, label %2832, label %2833

2832:                                             ; preds = %2826
  br label %2859

2833:                                             ; preds = %2826
  %2834 = load ptr, ptr %2, align 8, !tbaa !5
  %2835 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2834, i32 0, i32 1
  %2836 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2835, i32 0, i32 8
  %2837 = load i32, ptr %2836, align 8, !tbaa !29
  %2838 = icmp eq i32 %2837, 9
  br i1 %2838, label %2839, label %2840

2839:                                             ; preds = %2833
  br label %2857

2840:                                             ; preds = %2833
  %2841 = load ptr, ptr %2, align 8, !tbaa !5
  %2842 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2841, i32 0, i32 1
  %2843 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2842, i32 0, i32 8
  %2844 = load i32, ptr %2843, align 8, !tbaa !29
  %2845 = icmp eq i32 %2844, 10
  br i1 %2845, label %2846, label %2847

2846:                                             ; preds = %2840
  br label %2855

2847:                                             ; preds = %2840
  %2848 = load ptr, ptr %2, align 8, !tbaa !5
  %2849 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2848, i32 0, i32 1
  %2850 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2849, i32 0, i32 8
  %2851 = load i32, ptr %2850, align 8, !tbaa !29
  %2852 = icmp eq i32 %2851, 11
  %2853 = zext i1 %2852 to i64
  %2854 = select i1 %2852, i32 256, i32 1
  br label %2855

2855:                                             ; preds = %2847, %2846
  %2856 = phi i32 [ 128, %2846 ], [ %2854, %2847 ]
  br label %2857

2857:                                             ; preds = %2855, %2839
  %2858 = phi i32 [ 64, %2839 ], [ %2856, %2855 ]
  br label %2859

2859:                                             ; preds = %2857, %2832
  %2860 = phi i32 [ 32, %2832 ], [ %2858, %2857 ]
  br label %2861

2861:                                             ; preds = %2859, %2825
  %2862 = phi i32 [ 16, %2825 ], [ %2860, %2859 ]
  br label %2863

2863:                                             ; preds = %2861, %2818
  %2864 = phi i32 [ 12, %2818 ], [ %2862, %2861 ]
  br label %2865

2865:                                             ; preds = %2863, %2811
  %2866 = phi i32 [ 10, %2811 ], [ %2864, %2863 ]
  br label %2867

2867:                                             ; preds = %2865, %2804
  %2868 = phi i32 [ 8, %2804 ], [ %2866, %2865 ]
  br label %2869

2869:                                             ; preds = %2867, %2797
  %2870 = phi i32 [ 6, %2797 ], [ %2868, %2867 ]
  br label %2871

2871:                                             ; preds = %2869, %2790
  %2872 = phi i32 [ 4, %2790 ], [ %2870, %2869 ]
  br label %2873

2873:                                             ; preds = %2871, %2783
  %2874 = phi i32 [ 2, %2783 ], [ %2872, %2871 ]
  br label %2875

2875:                                             ; preds = %2873, %2776
  %2876 = phi i32 [ 1, %2776 ], [ %2874, %2873 ]
  %2877 = udiv i32 4000000, %2876
  %2878 = mul i32 %2877, 2
  %2879 = load ptr, ptr %2, align 8, !tbaa !5
  %2880 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2879, i32 0, i32 1
  %2881 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2880, i32 0, i32 0
  %2882 = load i32, ptr %2881, align 8, !tbaa !36
  %2883 = udiv i32 %2882, 2
  %2884 = add i32 %2878, %2883
  %2885 = load ptr, ptr %2, align 8, !tbaa !5
  %2886 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2885, i32 0, i32 1
  %2887 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2886, i32 0, i32 0
  %2888 = load i32, ptr %2887, align 8, !tbaa !36
  %2889 = udiv i32 %2884, %2888
  %2890 = trunc i32 %2889 to i16
  %2891 = zext i16 %2890 to i32
  store i32 %2891, ptr %6, align 4, !tbaa !9
  br label %3016

2892:                                             ; preds = %2015
  %2893 = load ptr, ptr %2, align 8, !tbaa !5
  %2894 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2893, i32 0, i32 1
  %2895 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2894, i32 0, i32 8
  %2896 = load i32, ptr %2895, align 8, !tbaa !29
  %2897 = icmp eq i32 %2896, 0
  br i1 %2897, label %2898, label %2899

2898:                                             ; preds = %2892
  br label %2997

2899:                                             ; preds = %2892
  %2900 = load ptr, ptr %2, align 8, !tbaa !5
  %2901 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2900, i32 0, i32 1
  %2902 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2901, i32 0, i32 8
  %2903 = load i32, ptr %2902, align 8, !tbaa !29
  %2904 = icmp eq i32 %2903, 1
  br i1 %2904, label %2905, label %2906

2905:                                             ; preds = %2899
  br label %2995

2906:                                             ; preds = %2899
  %2907 = load ptr, ptr %2, align 8, !tbaa !5
  %2908 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2907, i32 0, i32 1
  %2909 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2908, i32 0, i32 8
  %2910 = load i32, ptr %2909, align 8, !tbaa !29
  %2911 = icmp eq i32 %2910, 2
  br i1 %2911, label %2912, label %2913

2912:                                             ; preds = %2906
  br label %2993

2913:                                             ; preds = %2906
  %2914 = load ptr, ptr %2, align 8, !tbaa !5
  %2915 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2914, i32 0, i32 1
  %2916 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2915, i32 0, i32 8
  %2917 = load i32, ptr %2916, align 8, !tbaa !29
  %2918 = icmp eq i32 %2917, 3
  br i1 %2918, label %2919, label %2920

2919:                                             ; preds = %2913
  br label %2991

2920:                                             ; preds = %2913
  %2921 = load ptr, ptr %2, align 8, !tbaa !5
  %2922 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2921, i32 0, i32 1
  %2923 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2922, i32 0, i32 8
  %2924 = load i32, ptr %2923, align 8, !tbaa !29
  %2925 = icmp eq i32 %2924, 4
  br i1 %2925, label %2926, label %2927

2926:                                             ; preds = %2920
  br label %2989

2927:                                             ; preds = %2920
  %2928 = load ptr, ptr %2, align 8, !tbaa !5
  %2929 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2928, i32 0, i32 1
  %2930 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2929, i32 0, i32 8
  %2931 = load i32, ptr %2930, align 8, !tbaa !29
  %2932 = icmp eq i32 %2931, 5
  br i1 %2932, label %2933, label %2934

2933:                                             ; preds = %2927
  br label %2987

2934:                                             ; preds = %2927
  %2935 = load ptr, ptr %2, align 8, !tbaa !5
  %2936 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2935, i32 0, i32 1
  %2937 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2936, i32 0, i32 8
  %2938 = load i32, ptr %2937, align 8, !tbaa !29
  %2939 = icmp eq i32 %2938, 6
  br i1 %2939, label %2940, label %2941

2940:                                             ; preds = %2934
  br label %2985

2941:                                             ; preds = %2934
  %2942 = load ptr, ptr %2, align 8, !tbaa !5
  %2943 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2942, i32 0, i32 1
  %2944 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2943, i32 0, i32 8
  %2945 = load i32, ptr %2944, align 8, !tbaa !29
  %2946 = icmp eq i32 %2945, 7
  br i1 %2946, label %2947, label %2948

2947:                                             ; preds = %2941
  br label %2983

2948:                                             ; preds = %2941
  %2949 = load ptr, ptr %2, align 8, !tbaa !5
  %2950 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2949, i32 0, i32 1
  %2951 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2950, i32 0, i32 8
  %2952 = load i32, ptr %2951, align 8, !tbaa !29
  %2953 = icmp eq i32 %2952, 8
  br i1 %2953, label %2954, label %2955

2954:                                             ; preds = %2948
  br label %2981

2955:                                             ; preds = %2948
  %2956 = load ptr, ptr %2, align 8, !tbaa !5
  %2957 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2956, i32 0, i32 1
  %2958 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2957, i32 0, i32 8
  %2959 = load i32, ptr %2958, align 8, !tbaa !29
  %2960 = icmp eq i32 %2959, 9
  br i1 %2960, label %2961, label %2962

2961:                                             ; preds = %2955
  br label %2979

2962:                                             ; preds = %2955
  %2963 = load ptr, ptr %2, align 8, !tbaa !5
  %2964 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2963, i32 0, i32 1
  %2965 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2964, i32 0, i32 8
  %2966 = load i32, ptr %2965, align 8, !tbaa !29
  %2967 = icmp eq i32 %2966, 10
  br i1 %2967, label %2968, label %2969

2968:                                             ; preds = %2962
  br label %2977

2969:                                             ; preds = %2962
  %2970 = load ptr, ptr %2, align 8, !tbaa !5
  %2971 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %2970, i32 0, i32 1
  %2972 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %2971, i32 0, i32 8
  %2973 = load i32, ptr %2972, align 8, !tbaa !29
  %2974 = icmp eq i32 %2973, 11
  %2975 = zext i1 %2974 to i64
  %2976 = select i1 %2974, i32 256, i32 1
  br label %2977

2977:                                             ; preds = %2969, %2968
  %2978 = phi i32 [ 128, %2968 ], [ %2976, %2969 ]
  br label %2979

2979:                                             ; preds = %2977, %2961
  %2980 = phi i32 [ 64, %2961 ], [ %2978, %2977 ]
  br label %2981

2981:                                             ; preds = %2979, %2954
  %2982 = phi i32 [ 32, %2954 ], [ %2980, %2979 ]
  br label %2983

2983:                                             ; preds = %2981, %2947
  %2984 = phi i32 [ 16, %2947 ], [ %2982, %2981 ]
  br label %2985

2985:                                             ; preds = %2983, %2940
  %2986 = phi i32 [ 12, %2940 ], [ %2984, %2983 ]
  br label %2987

2987:                                             ; preds = %2985, %2933
  %2988 = phi i32 [ 10, %2933 ], [ %2986, %2985 ]
  br label %2989

2989:                                             ; preds = %2987, %2926
  %2990 = phi i32 [ 8, %2926 ], [ %2988, %2987 ]
  br label %2991

2991:                                             ; preds = %2989, %2919
  %2992 = phi i32 [ 6, %2919 ], [ %2990, %2989 ]
  br label %2993

2993:                                             ; preds = %2991, %2912
  %2994 = phi i32 [ 4, %2912 ], [ %2992, %2991 ]
  br label %2995

2995:                                             ; preds = %2993, %2905
  %2996 = phi i32 [ 2, %2905 ], [ %2994, %2993 ]
  br label %2997

2997:                                             ; preds = %2995, %2898
  %2998 = phi i32 [ 1, %2898 ], [ %2996, %2995 ]
  %2999 = udiv i32 32768, %2998
  %3000 = mul i32 %2999, 2
  %3001 = load ptr, ptr %2, align 8, !tbaa !5
  %3002 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3001, i32 0, i32 1
  %3003 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3002, i32 0, i32 0
  %3004 = load i32, ptr %3003, align 8, !tbaa !36
  %3005 = udiv i32 %3004, 2
  %3006 = add i32 %3000, %3005
  %3007 = load ptr, ptr %2, align 8, !tbaa !5
  %3008 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3007, i32 0, i32 1
  %3009 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3008, i32 0, i32 0
  %3010 = load i32, ptr %3009, align 8, !tbaa !36
  %3011 = udiv i32 %3006, %3010
  %3012 = trunc i32 %3011 to i16
  %3013 = zext i16 %3012 to i32
  store i32 %3013, ptr %6, align 4, !tbaa !9
  br label %3016

3014:                                             ; preds = %2015
  br label %3015

3015:                                             ; preds = %3014, %2015
  store i32 1, ptr %7, align 4, !tbaa !9
  br label %3016

3016:                                             ; preds = %3015, %2997, %2875, %2769, %2494, %2370, %2246, %2123
  %3017 = load i32, ptr %6, align 4, !tbaa !9
  %3018 = icmp uge i32 %3017, 16
  br i1 %3018, label %3019, label %3041

3019:                                             ; preds = %3016
  %3020 = load i32, ptr %6, align 4, !tbaa !9
  %3021 = icmp ule i32 %3020, 65535
  br i1 %3021, label %3022, label %3041

3022:                                             ; preds = %3019
  %3023 = load i32, ptr %6, align 4, !tbaa !9
  %3024 = and i32 %3023, 65520
  %3025 = trunc i32 %3024 to i16
  store i16 %3025, ptr %4, align 2, !tbaa !38
  %3026 = load i32, ptr %6, align 4, !tbaa !9
  %3027 = and i32 %3026, 15
  %3028 = lshr i32 %3027, 1
  %3029 = trunc i32 %3028 to i16
  %3030 = zext i16 %3029 to i32
  %3031 = load i16, ptr %4, align 2, !tbaa !38
  %3032 = zext i16 %3031 to i32
  %3033 = or i32 %3032, %3030
  %3034 = trunc i32 %3033 to i16
  store i16 %3034, ptr %4, align 2, !tbaa !38
  %3035 = load i16, ptr %4, align 2, !tbaa !38
  %3036 = zext i16 %3035 to i32
  %3037 = load ptr, ptr %2, align 8, !tbaa !5
  %3038 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3037, i32 0, i32 0
  %3039 = load ptr, ptr %3038, align 8, !tbaa !11
  %3040 = getelementptr inbounds %struct.USART_TypeDef, ptr %3039, i32 0, i32 3
  store volatile i32 %3036, ptr %3040, align 4, !tbaa !37
  br label %3042

3041:                                             ; preds = %3019, %3016
  store i32 1, ptr %7, align 4, !tbaa !9
  br label %3042

3042:                                             ; preds = %3041, %3022
  br label %4050

3043:                                             ; preds = %2008
  %3044 = load i32, ptr %5, align 4, !tbaa !9
  switch i32 %3044, label %4035 [
    i32 0, label %3045
    i32 1, label %3167
    i32 4, label %3289
    i32 8, label %3412
    i32 16, label %3535
    i32 32, label %3792
    i32 64, label %3913
    i32 128, label %4034
  ]

3045:                                             ; preds = %3043
  %3046 = call i32 @HAL_RCC_GetPCLK1Freq()
  %3047 = load ptr, ptr %2, align 8, !tbaa !5
  %3048 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3047, i32 0, i32 1
  %3049 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3048, i32 0, i32 8
  %3050 = load i32, ptr %3049, align 8, !tbaa !29
  %3051 = icmp eq i32 %3050, 0
  br i1 %3051, label %3052, label %3053

3052:                                             ; preds = %3045
  br label %3151

3053:                                             ; preds = %3045
  %3054 = load ptr, ptr %2, align 8, !tbaa !5
  %3055 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3054, i32 0, i32 1
  %3056 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3055, i32 0, i32 8
  %3057 = load i32, ptr %3056, align 8, !tbaa !29
  %3058 = icmp eq i32 %3057, 1
  br i1 %3058, label %3059, label %3060

3059:                                             ; preds = %3053
  br label %3149

3060:                                             ; preds = %3053
  %3061 = load ptr, ptr %2, align 8, !tbaa !5
  %3062 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3061, i32 0, i32 1
  %3063 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3062, i32 0, i32 8
  %3064 = load i32, ptr %3063, align 8, !tbaa !29
  %3065 = icmp eq i32 %3064, 2
  br i1 %3065, label %3066, label %3067

3066:                                             ; preds = %3060
  br label %3147

3067:                                             ; preds = %3060
  %3068 = load ptr, ptr %2, align 8, !tbaa !5
  %3069 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3068, i32 0, i32 1
  %3070 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3069, i32 0, i32 8
  %3071 = load i32, ptr %3070, align 8, !tbaa !29
  %3072 = icmp eq i32 %3071, 3
  br i1 %3072, label %3073, label %3074

3073:                                             ; preds = %3067
  br label %3145

3074:                                             ; preds = %3067
  %3075 = load ptr, ptr %2, align 8, !tbaa !5
  %3076 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3075, i32 0, i32 1
  %3077 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3076, i32 0, i32 8
  %3078 = load i32, ptr %3077, align 8, !tbaa !29
  %3079 = icmp eq i32 %3078, 4
  br i1 %3079, label %3080, label %3081

3080:                                             ; preds = %3074
  br label %3143

3081:                                             ; preds = %3074
  %3082 = load ptr, ptr %2, align 8, !tbaa !5
  %3083 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3082, i32 0, i32 1
  %3084 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3083, i32 0, i32 8
  %3085 = load i32, ptr %3084, align 8, !tbaa !29
  %3086 = icmp eq i32 %3085, 5
  br i1 %3086, label %3087, label %3088

3087:                                             ; preds = %3081
  br label %3141

3088:                                             ; preds = %3081
  %3089 = load ptr, ptr %2, align 8, !tbaa !5
  %3090 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3089, i32 0, i32 1
  %3091 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3090, i32 0, i32 8
  %3092 = load i32, ptr %3091, align 8, !tbaa !29
  %3093 = icmp eq i32 %3092, 6
  br i1 %3093, label %3094, label %3095

3094:                                             ; preds = %3088
  br label %3139

3095:                                             ; preds = %3088
  %3096 = load ptr, ptr %2, align 8, !tbaa !5
  %3097 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3096, i32 0, i32 1
  %3098 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3097, i32 0, i32 8
  %3099 = load i32, ptr %3098, align 8, !tbaa !29
  %3100 = icmp eq i32 %3099, 7
  br i1 %3100, label %3101, label %3102

3101:                                             ; preds = %3095
  br label %3137

3102:                                             ; preds = %3095
  %3103 = load ptr, ptr %2, align 8, !tbaa !5
  %3104 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3103, i32 0, i32 1
  %3105 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3104, i32 0, i32 8
  %3106 = load i32, ptr %3105, align 8, !tbaa !29
  %3107 = icmp eq i32 %3106, 8
  br i1 %3107, label %3108, label %3109

3108:                                             ; preds = %3102
  br label %3135

3109:                                             ; preds = %3102
  %3110 = load ptr, ptr %2, align 8, !tbaa !5
  %3111 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3110, i32 0, i32 1
  %3112 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3111, i32 0, i32 8
  %3113 = load i32, ptr %3112, align 8, !tbaa !29
  %3114 = icmp eq i32 %3113, 9
  br i1 %3114, label %3115, label %3116

3115:                                             ; preds = %3109
  br label %3133

3116:                                             ; preds = %3109
  %3117 = load ptr, ptr %2, align 8, !tbaa !5
  %3118 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3117, i32 0, i32 1
  %3119 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3118, i32 0, i32 8
  %3120 = load i32, ptr %3119, align 8, !tbaa !29
  %3121 = icmp eq i32 %3120, 10
  br i1 %3121, label %3122, label %3123

3122:                                             ; preds = %3116
  br label %3131

3123:                                             ; preds = %3116
  %3124 = load ptr, ptr %2, align 8, !tbaa !5
  %3125 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3124, i32 0, i32 1
  %3126 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3125, i32 0, i32 8
  %3127 = load i32, ptr %3126, align 8, !tbaa !29
  %3128 = icmp eq i32 %3127, 11
  %3129 = zext i1 %3128 to i64
  %3130 = select i1 %3128, i32 256, i32 1
  br label %3131

3131:                                             ; preds = %3123, %3122
  %3132 = phi i32 [ 128, %3122 ], [ %3130, %3123 ]
  br label %3133

3133:                                             ; preds = %3131, %3115
  %3134 = phi i32 [ 64, %3115 ], [ %3132, %3131 ]
  br label %3135

3135:                                             ; preds = %3133, %3108
  %3136 = phi i32 [ 32, %3108 ], [ %3134, %3133 ]
  br label %3137

3137:                                             ; preds = %3135, %3101
  %3138 = phi i32 [ 16, %3101 ], [ %3136, %3135 ]
  br label %3139

3139:                                             ; preds = %3137, %3094
  %3140 = phi i32 [ 12, %3094 ], [ %3138, %3137 ]
  br label %3141

3141:                                             ; preds = %3139, %3087
  %3142 = phi i32 [ 10, %3087 ], [ %3140, %3139 ]
  br label %3143

3143:                                             ; preds = %3141, %3080
  %3144 = phi i32 [ 8, %3080 ], [ %3142, %3141 ]
  br label %3145

3145:                                             ; preds = %3143, %3073
  %3146 = phi i32 [ 6, %3073 ], [ %3144, %3143 ]
  br label %3147

3147:                                             ; preds = %3145, %3066
  %3148 = phi i32 [ 4, %3066 ], [ %3146, %3145 ]
  br label %3149

3149:                                             ; preds = %3147, %3059
  %3150 = phi i32 [ 2, %3059 ], [ %3148, %3147 ]
  br label %3151

3151:                                             ; preds = %3149, %3052
  %3152 = phi i32 [ 1, %3052 ], [ %3150, %3149 ]
  %3153 = udiv i32 %3046, %3152
  %3154 = load ptr, ptr %2, align 8, !tbaa !5
  %3155 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3154, i32 0, i32 1
  %3156 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3155, i32 0, i32 0
  %3157 = load i32, ptr %3156, align 8, !tbaa !36
  %3158 = udiv i32 %3157, 2
  %3159 = add i32 %3153, %3158
  %3160 = load ptr, ptr %2, align 8, !tbaa !5
  %3161 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3160, i32 0, i32 1
  %3162 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3161, i32 0, i32 0
  %3163 = load i32, ptr %3162, align 8, !tbaa !36
  %3164 = udiv i32 %3159, %3163
  %3165 = trunc i32 %3164 to i16
  %3166 = zext i16 %3165 to i32
  store i32 %3166, ptr %6, align 4, !tbaa !9
  br label %4036

3167:                                             ; preds = %3043
  %3168 = call i32 @HAL_RCC_GetPCLK2Freq()
  %3169 = load ptr, ptr %2, align 8, !tbaa !5
  %3170 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3169, i32 0, i32 1
  %3171 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3170, i32 0, i32 8
  %3172 = load i32, ptr %3171, align 8, !tbaa !29
  %3173 = icmp eq i32 %3172, 0
  br i1 %3173, label %3174, label %3175

3174:                                             ; preds = %3167
  br label %3273

3175:                                             ; preds = %3167
  %3176 = load ptr, ptr %2, align 8, !tbaa !5
  %3177 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3176, i32 0, i32 1
  %3178 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3177, i32 0, i32 8
  %3179 = load i32, ptr %3178, align 8, !tbaa !29
  %3180 = icmp eq i32 %3179, 1
  br i1 %3180, label %3181, label %3182

3181:                                             ; preds = %3175
  br label %3271

3182:                                             ; preds = %3175
  %3183 = load ptr, ptr %2, align 8, !tbaa !5
  %3184 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3183, i32 0, i32 1
  %3185 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3184, i32 0, i32 8
  %3186 = load i32, ptr %3185, align 8, !tbaa !29
  %3187 = icmp eq i32 %3186, 2
  br i1 %3187, label %3188, label %3189

3188:                                             ; preds = %3182
  br label %3269

3189:                                             ; preds = %3182
  %3190 = load ptr, ptr %2, align 8, !tbaa !5
  %3191 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3190, i32 0, i32 1
  %3192 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3191, i32 0, i32 8
  %3193 = load i32, ptr %3192, align 8, !tbaa !29
  %3194 = icmp eq i32 %3193, 3
  br i1 %3194, label %3195, label %3196

3195:                                             ; preds = %3189
  br label %3267

3196:                                             ; preds = %3189
  %3197 = load ptr, ptr %2, align 8, !tbaa !5
  %3198 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3197, i32 0, i32 1
  %3199 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3198, i32 0, i32 8
  %3200 = load i32, ptr %3199, align 8, !tbaa !29
  %3201 = icmp eq i32 %3200, 4
  br i1 %3201, label %3202, label %3203

3202:                                             ; preds = %3196
  br label %3265

3203:                                             ; preds = %3196
  %3204 = load ptr, ptr %2, align 8, !tbaa !5
  %3205 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3204, i32 0, i32 1
  %3206 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3205, i32 0, i32 8
  %3207 = load i32, ptr %3206, align 8, !tbaa !29
  %3208 = icmp eq i32 %3207, 5
  br i1 %3208, label %3209, label %3210

3209:                                             ; preds = %3203
  br label %3263

3210:                                             ; preds = %3203
  %3211 = load ptr, ptr %2, align 8, !tbaa !5
  %3212 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3211, i32 0, i32 1
  %3213 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3212, i32 0, i32 8
  %3214 = load i32, ptr %3213, align 8, !tbaa !29
  %3215 = icmp eq i32 %3214, 6
  br i1 %3215, label %3216, label %3217

3216:                                             ; preds = %3210
  br label %3261

3217:                                             ; preds = %3210
  %3218 = load ptr, ptr %2, align 8, !tbaa !5
  %3219 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3218, i32 0, i32 1
  %3220 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3219, i32 0, i32 8
  %3221 = load i32, ptr %3220, align 8, !tbaa !29
  %3222 = icmp eq i32 %3221, 7
  br i1 %3222, label %3223, label %3224

3223:                                             ; preds = %3217
  br label %3259

3224:                                             ; preds = %3217
  %3225 = load ptr, ptr %2, align 8, !tbaa !5
  %3226 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3225, i32 0, i32 1
  %3227 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3226, i32 0, i32 8
  %3228 = load i32, ptr %3227, align 8, !tbaa !29
  %3229 = icmp eq i32 %3228, 8
  br i1 %3229, label %3230, label %3231

3230:                                             ; preds = %3224
  br label %3257

3231:                                             ; preds = %3224
  %3232 = load ptr, ptr %2, align 8, !tbaa !5
  %3233 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3232, i32 0, i32 1
  %3234 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3233, i32 0, i32 8
  %3235 = load i32, ptr %3234, align 8, !tbaa !29
  %3236 = icmp eq i32 %3235, 9
  br i1 %3236, label %3237, label %3238

3237:                                             ; preds = %3231
  br label %3255

3238:                                             ; preds = %3231
  %3239 = load ptr, ptr %2, align 8, !tbaa !5
  %3240 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3239, i32 0, i32 1
  %3241 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3240, i32 0, i32 8
  %3242 = load i32, ptr %3241, align 8, !tbaa !29
  %3243 = icmp eq i32 %3242, 10
  br i1 %3243, label %3244, label %3245

3244:                                             ; preds = %3238
  br label %3253

3245:                                             ; preds = %3238
  %3246 = load ptr, ptr %2, align 8, !tbaa !5
  %3247 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3246, i32 0, i32 1
  %3248 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3247, i32 0, i32 8
  %3249 = load i32, ptr %3248, align 8, !tbaa !29
  %3250 = icmp eq i32 %3249, 11
  %3251 = zext i1 %3250 to i64
  %3252 = select i1 %3250, i32 256, i32 1
  br label %3253

3253:                                             ; preds = %3245, %3244
  %3254 = phi i32 [ 128, %3244 ], [ %3252, %3245 ]
  br label %3255

3255:                                             ; preds = %3253, %3237
  %3256 = phi i32 [ 64, %3237 ], [ %3254, %3253 ]
  br label %3257

3257:                                             ; preds = %3255, %3230
  %3258 = phi i32 [ 32, %3230 ], [ %3256, %3255 ]
  br label %3259

3259:                                             ; preds = %3257, %3223
  %3260 = phi i32 [ 16, %3223 ], [ %3258, %3257 ]
  br label %3261

3261:                                             ; preds = %3259, %3216
  %3262 = phi i32 [ 12, %3216 ], [ %3260, %3259 ]
  br label %3263

3263:                                             ; preds = %3261, %3209
  %3264 = phi i32 [ 10, %3209 ], [ %3262, %3261 ]
  br label %3265

3265:                                             ; preds = %3263, %3202
  %3266 = phi i32 [ 8, %3202 ], [ %3264, %3263 ]
  br label %3267

3267:                                             ; preds = %3265, %3195
  %3268 = phi i32 [ 6, %3195 ], [ %3266, %3265 ]
  br label %3269

3269:                                             ; preds = %3267, %3188
  %3270 = phi i32 [ 4, %3188 ], [ %3268, %3267 ]
  br label %3271

3271:                                             ; preds = %3269, %3181
  %3272 = phi i32 [ 2, %3181 ], [ %3270, %3269 ]
  br label %3273

3273:                                             ; preds = %3271, %3174
  %3274 = phi i32 [ 1, %3174 ], [ %3272, %3271 ]
  %3275 = udiv i32 %3168, %3274
  %3276 = load ptr, ptr %2, align 8, !tbaa !5
  %3277 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3276, i32 0, i32 1
  %3278 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3277, i32 0, i32 0
  %3279 = load i32, ptr %3278, align 8, !tbaa !36
  %3280 = udiv i32 %3279, 2
  %3281 = add i32 %3275, %3280
  %3282 = load ptr, ptr %2, align 8, !tbaa !5
  %3283 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3282, i32 0, i32 1
  %3284 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3283, i32 0, i32 0
  %3285 = load i32, ptr %3284, align 8, !tbaa !36
  %3286 = udiv i32 %3281, %3285
  %3287 = trunc i32 %3286 to i16
  %3288 = zext i16 %3287 to i32
  store i32 %3288, ptr %6, align 4, !tbaa !9
  br label %4036

3289:                                             ; preds = %3043
  call void @HAL_RCCEx_GetPLL2ClockFreq(ptr noundef %9)
  %3290 = getelementptr inbounds %struct.PLL2_ClocksTypeDef, ptr %9, i32 0, i32 1
  %3291 = load i32, ptr %3290, align 4, !tbaa !33
  %3292 = load ptr, ptr %2, align 8, !tbaa !5
  %3293 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3292, i32 0, i32 1
  %3294 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3293, i32 0, i32 8
  %3295 = load i32, ptr %3294, align 8, !tbaa !29
  %3296 = icmp eq i32 %3295, 0
  br i1 %3296, label %3297, label %3298

3297:                                             ; preds = %3289
  br label %3396

3298:                                             ; preds = %3289
  %3299 = load ptr, ptr %2, align 8, !tbaa !5
  %3300 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3299, i32 0, i32 1
  %3301 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3300, i32 0, i32 8
  %3302 = load i32, ptr %3301, align 8, !tbaa !29
  %3303 = icmp eq i32 %3302, 1
  br i1 %3303, label %3304, label %3305

3304:                                             ; preds = %3298
  br label %3394

3305:                                             ; preds = %3298
  %3306 = load ptr, ptr %2, align 8, !tbaa !5
  %3307 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3306, i32 0, i32 1
  %3308 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3307, i32 0, i32 8
  %3309 = load i32, ptr %3308, align 8, !tbaa !29
  %3310 = icmp eq i32 %3309, 2
  br i1 %3310, label %3311, label %3312

3311:                                             ; preds = %3305
  br label %3392

3312:                                             ; preds = %3305
  %3313 = load ptr, ptr %2, align 8, !tbaa !5
  %3314 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3313, i32 0, i32 1
  %3315 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3314, i32 0, i32 8
  %3316 = load i32, ptr %3315, align 8, !tbaa !29
  %3317 = icmp eq i32 %3316, 3
  br i1 %3317, label %3318, label %3319

3318:                                             ; preds = %3312
  br label %3390

3319:                                             ; preds = %3312
  %3320 = load ptr, ptr %2, align 8, !tbaa !5
  %3321 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3320, i32 0, i32 1
  %3322 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3321, i32 0, i32 8
  %3323 = load i32, ptr %3322, align 8, !tbaa !29
  %3324 = icmp eq i32 %3323, 4
  br i1 %3324, label %3325, label %3326

3325:                                             ; preds = %3319
  br label %3388

3326:                                             ; preds = %3319
  %3327 = load ptr, ptr %2, align 8, !tbaa !5
  %3328 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3327, i32 0, i32 1
  %3329 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3328, i32 0, i32 8
  %3330 = load i32, ptr %3329, align 8, !tbaa !29
  %3331 = icmp eq i32 %3330, 5
  br i1 %3331, label %3332, label %3333

3332:                                             ; preds = %3326
  br label %3386

3333:                                             ; preds = %3326
  %3334 = load ptr, ptr %2, align 8, !tbaa !5
  %3335 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3334, i32 0, i32 1
  %3336 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3335, i32 0, i32 8
  %3337 = load i32, ptr %3336, align 8, !tbaa !29
  %3338 = icmp eq i32 %3337, 6
  br i1 %3338, label %3339, label %3340

3339:                                             ; preds = %3333
  br label %3384

3340:                                             ; preds = %3333
  %3341 = load ptr, ptr %2, align 8, !tbaa !5
  %3342 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3341, i32 0, i32 1
  %3343 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3342, i32 0, i32 8
  %3344 = load i32, ptr %3343, align 8, !tbaa !29
  %3345 = icmp eq i32 %3344, 7
  br i1 %3345, label %3346, label %3347

3346:                                             ; preds = %3340
  br label %3382

3347:                                             ; preds = %3340
  %3348 = load ptr, ptr %2, align 8, !tbaa !5
  %3349 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3348, i32 0, i32 1
  %3350 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3349, i32 0, i32 8
  %3351 = load i32, ptr %3350, align 8, !tbaa !29
  %3352 = icmp eq i32 %3351, 8
  br i1 %3352, label %3353, label %3354

3353:                                             ; preds = %3347
  br label %3380

3354:                                             ; preds = %3347
  %3355 = load ptr, ptr %2, align 8, !tbaa !5
  %3356 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3355, i32 0, i32 1
  %3357 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3356, i32 0, i32 8
  %3358 = load i32, ptr %3357, align 8, !tbaa !29
  %3359 = icmp eq i32 %3358, 9
  br i1 %3359, label %3360, label %3361

3360:                                             ; preds = %3354
  br label %3378

3361:                                             ; preds = %3354
  %3362 = load ptr, ptr %2, align 8, !tbaa !5
  %3363 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3362, i32 0, i32 1
  %3364 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3363, i32 0, i32 8
  %3365 = load i32, ptr %3364, align 8, !tbaa !29
  %3366 = icmp eq i32 %3365, 10
  br i1 %3366, label %3367, label %3368

3367:                                             ; preds = %3361
  br label %3376

3368:                                             ; preds = %3361
  %3369 = load ptr, ptr %2, align 8, !tbaa !5
  %3370 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3369, i32 0, i32 1
  %3371 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3370, i32 0, i32 8
  %3372 = load i32, ptr %3371, align 8, !tbaa !29
  %3373 = icmp eq i32 %3372, 11
  %3374 = zext i1 %3373 to i64
  %3375 = select i1 %3373, i32 256, i32 1
  br label %3376

3376:                                             ; preds = %3368, %3367
  %3377 = phi i32 [ 128, %3367 ], [ %3375, %3368 ]
  br label %3378

3378:                                             ; preds = %3376, %3360
  %3379 = phi i32 [ 64, %3360 ], [ %3377, %3376 ]
  br label %3380

3380:                                             ; preds = %3378, %3353
  %3381 = phi i32 [ 32, %3353 ], [ %3379, %3378 ]
  br label %3382

3382:                                             ; preds = %3380, %3346
  %3383 = phi i32 [ 16, %3346 ], [ %3381, %3380 ]
  br label %3384

3384:                                             ; preds = %3382, %3339
  %3385 = phi i32 [ 12, %3339 ], [ %3383, %3382 ]
  br label %3386

3386:                                             ; preds = %3384, %3332
  %3387 = phi i32 [ 10, %3332 ], [ %3385, %3384 ]
  br label %3388

3388:                                             ; preds = %3386, %3325
  %3389 = phi i32 [ 8, %3325 ], [ %3387, %3386 ]
  br label %3390

3390:                                             ; preds = %3388, %3318
  %3391 = phi i32 [ 6, %3318 ], [ %3389, %3388 ]
  br label %3392

3392:                                             ; preds = %3390, %3311
  %3393 = phi i32 [ 4, %3311 ], [ %3391, %3390 ]
  br label %3394

3394:                                             ; preds = %3392, %3304
  %3395 = phi i32 [ 2, %3304 ], [ %3393, %3392 ]
  br label %3396

3396:                                             ; preds = %3394, %3297
  %3397 = phi i32 [ 1, %3297 ], [ %3395, %3394 ]
  %3398 = udiv i32 %3291, %3397
  %3399 = load ptr, ptr %2, align 8, !tbaa !5
  %3400 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3399, i32 0, i32 1
  %3401 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3400, i32 0, i32 0
  %3402 = load i32, ptr %3401, align 8, !tbaa !36
  %3403 = udiv i32 %3402, 2
  %3404 = add i32 %3398, %3403
  %3405 = load ptr, ptr %2, align 8, !tbaa !5
  %3406 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3405, i32 0, i32 1
  %3407 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3406, i32 0, i32 0
  %3408 = load i32, ptr %3407, align 8, !tbaa !36
  %3409 = udiv i32 %3404, %3408
  %3410 = trunc i32 %3409 to i16
  %3411 = zext i16 %3410 to i32
  store i32 %3411, ptr %6, align 4, !tbaa !9
  br label %4036

3412:                                             ; preds = %3043
  call void @HAL_RCCEx_GetPLL3ClockFreq(ptr noundef %10)
  %3413 = getelementptr inbounds %struct.PLL3_ClocksTypeDef, ptr %10, i32 0, i32 1
  %3414 = load i32, ptr %3413, align 4, !tbaa !33
  %3415 = load ptr, ptr %2, align 8, !tbaa !5
  %3416 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3415, i32 0, i32 1
  %3417 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3416, i32 0, i32 8
  %3418 = load i32, ptr %3417, align 8, !tbaa !29
  %3419 = icmp eq i32 %3418, 0
  br i1 %3419, label %3420, label %3421

3420:                                             ; preds = %3412
  br label %3519

3421:                                             ; preds = %3412
  %3422 = load ptr, ptr %2, align 8, !tbaa !5
  %3423 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3422, i32 0, i32 1
  %3424 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3423, i32 0, i32 8
  %3425 = load i32, ptr %3424, align 8, !tbaa !29
  %3426 = icmp eq i32 %3425, 1
  br i1 %3426, label %3427, label %3428

3427:                                             ; preds = %3421
  br label %3517

3428:                                             ; preds = %3421
  %3429 = load ptr, ptr %2, align 8, !tbaa !5
  %3430 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3429, i32 0, i32 1
  %3431 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3430, i32 0, i32 8
  %3432 = load i32, ptr %3431, align 8, !tbaa !29
  %3433 = icmp eq i32 %3432, 2
  br i1 %3433, label %3434, label %3435

3434:                                             ; preds = %3428
  br label %3515

3435:                                             ; preds = %3428
  %3436 = load ptr, ptr %2, align 8, !tbaa !5
  %3437 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3436, i32 0, i32 1
  %3438 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3437, i32 0, i32 8
  %3439 = load i32, ptr %3438, align 8, !tbaa !29
  %3440 = icmp eq i32 %3439, 3
  br i1 %3440, label %3441, label %3442

3441:                                             ; preds = %3435
  br label %3513

3442:                                             ; preds = %3435
  %3443 = load ptr, ptr %2, align 8, !tbaa !5
  %3444 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3443, i32 0, i32 1
  %3445 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3444, i32 0, i32 8
  %3446 = load i32, ptr %3445, align 8, !tbaa !29
  %3447 = icmp eq i32 %3446, 4
  br i1 %3447, label %3448, label %3449

3448:                                             ; preds = %3442
  br label %3511

3449:                                             ; preds = %3442
  %3450 = load ptr, ptr %2, align 8, !tbaa !5
  %3451 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3450, i32 0, i32 1
  %3452 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3451, i32 0, i32 8
  %3453 = load i32, ptr %3452, align 8, !tbaa !29
  %3454 = icmp eq i32 %3453, 5
  br i1 %3454, label %3455, label %3456

3455:                                             ; preds = %3449
  br label %3509

3456:                                             ; preds = %3449
  %3457 = load ptr, ptr %2, align 8, !tbaa !5
  %3458 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3457, i32 0, i32 1
  %3459 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3458, i32 0, i32 8
  %3460 = load i32, ptr %3459, align 8, !tbaa !29
  %3461 = icmp eq i32 %3460, 6
  br i1 %3461, label %3462, label %3463

3462:                                             ; preds = %3456
  br label %3507

3463:                                             ; preds = %3456
  %3464 = load ptr, ptr %2, align 8, !tbaa !5
  %3465 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3464, i32 0, i32 1
  %3466 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3465, i32 0, i32 8
  %3467 = load i32, ptr %3466, align 8, !tbaa !29
  %3468 = icmp eq i32 %3467, 7
  br i1 %3468, label %3469, label %3470

3469:                                             ; preds = %3463
  br label %3505

3470:                                             ; preds = %3463
  %3471 = load ptr, ptr %2, align 8, !tbaa !5
  %3472 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3471, i32 0, i32 1
  %3473 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3472, i32 0, i32 8
  %3474 = load i32, ptr %3473, align 8, !tbaa !29
  %3475 = icmp eq i32 %3474, 8
  br i1 %3475, label %3476, label %3477

3476:                                             ; preds = %3470
  br label %3503

3477:                                             ; preds = %3470
  %3478 = load ptr, ptr %2, align 8, !tbaa !5
  %3479 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3478, i32 0, i32 1
  %3480 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3479, i32 0, i32 8
  %3481 = load i32, ptr %3480, align 8, !tbaa !29
  %3482 = icmp eq i32 %3481, 9
  br i1 %3482, label %3483, label %3484

3483:                                             ; preds = %3477
  br label %3501

3484:                                             ; preds = %3477
  %3485 = load ptr, ptr %2, align 8, !tbaa !5
  %3486 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3485, i32 0, i32 1
  %3487 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3486, i32 0, i32 8
  %3488 = load i32, ptr %3487, align 8, !tbaa !29
  %3489 = icmp eq i32 %3488, 10
  br i1 %3489, label %3490, label %3491

3490:                                             ; preds = %3484
  br label %3499

3491:                                             ; preds = %3484
  %3492 = load ptr, ptr %2, align 8, !tbaa !5
  %3493 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3492, i32 0, i32 1
  %3494 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3493, i32 0, i32 8
  %3495 = load i32, ptr %3494, align 8, !tbaa !29
  %3496 = icmp eq i32 %3495, 11
  %3497 = zext i1 %3496 to i64
  %3498 = select i1 %3496, i32 256, i32 1
  br label %3499

3499:                                             ; preds = %3491, %3490
  %3500 = phi i32 [ 128, %3490 ], [ %3498, %3491 ]
  br label %3501

3501:                                             ; preds = %3499, %3483
  %3502 = phi i32 [ 64, %3483 ], [ %3500, %3499 ]
  br label %3503

3503:                                             ; preds = %3501, %3476
  %3504 = phi i32 [ 32, %3476 ], [ %3502, %3501 ]
  br label %3505

3505:                                             ; preds = %3503, %3469
  %3506 = phi i32 [ 16, %3469 ], [ %3504, %3503 ]
  br label %3507

3507:                                             ; preds = %3505, %3462
  %3508 = phi i32 [ 12, %3462 ], [ %3506, %3505 ]
  br label %3509

3509:                                             ; preds = %3507, %3455
  %3510 = phi i32 [ 10, %3455 ], [ %3508, %3507 ]
  br label %3511

3511:                                             ; preds = %3509, %3448
  %3512 = phi i32 [ 8, %3448 ], [ %3510, %3509 ]
  br label %3513

3513:                                             ; preds = %3511, %3441
  %3514 = phi i32 [ 6, %3441 ], [ %3512, %3511 ]
  br label %3515

3515:                                             ; preds = %3513, %3434
  %3516 = phi i32 [ 4, %3434 ], [ %3514, %3513 ]
  br label %3517

3517:                                             ; preds = %3515, %3427
  %3518 = phi i32 [ 2, %3427 ], [ %3516, %3515 ]
  br label %3519

3519:                                             ; preds = %3517, %3420
  %3520 = phi i32 [ 1, %3420 ], [ %3518, %3517 ]
  %3521 = udiv i32 %3414, %3520
  %3522 = load ptr, ptr %2, align 8, !tbaa !5
  %3523 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3522, i32 0, i32 1
  %3524 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3523, i32 0, i32 0
  %3525 = load i32, ptr %3524, align 8, !tbaa !36
  %3526 = udiv i32 %3525, 2
  %3527 = add i32 %3521, %3526
  %3528 = load ptr, ptr %2, align 8, !tbaa !5
  %3529 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3528, i32 0, i32 1
  %3530 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3529, i32 0, i32 0
  %3531 = load i32, ptr %3530, align 8, !tbaa !36
  %3532 = udiv i32 %3527, %3531
  %3533 = trunc i32 %3532 to i16
  %3534 = zext i16 %3533 to i32
  store i32 %3534, ptr %6, align 4, !tbaa !9
  br label %4036

3535:                                             ; preds = %3043
  %3536 = load volatile i32, ptr inttoptr (i64 1476543488 to ptr), align 4, !tbaa !35
  %3537 = zext i32 %3536 to i64
  %3538 = and i64 %3537, 32
  %3539 = icmp ne i64 %3538, 0
  %3540 = zext i1 %3539 to i64
  %3541 = select i1 %3539, i32 1, i32 0
  %3542 = icmp ne i32 %3541, 0
  br i1 %3542, label %3543, label %3670

3543:                                             ; preds = %3535
  %3544 = load volatile i32, ptr inttoptr (i64 1476543488 to ptr), align 4, !tbaa !35
  %3545 = zext i32 %3544 to i64
  %3546 = and i64 %3545, 24
  %3547 = trunc i64 %3546 to i32
  %3548 = lshr i32 %3547, 3
  %3549 = lshr i32 64000000, %3548
  %3550 = load ptr, ptr %2, align 8, !tbaa !5
  %3551 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3550, i32 0, i32 1
  %3552 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3551, i32 0, i32 8
  %3553 = load i32, ptr %3552, align 8, !tbaa !29
  %3554 = icmp eq i32 %3553, 0
  br i1 %3554, label %3555, label %3556

3555:                                             ; preds = %3543
  br label %3654

3556:                                             ; preds = %3543
  %3557 = load ptr, ptr %2, align 8, !tbaa !5
  %3558 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3557, i32 0, i32 1
  %3559 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3558, i32 0, i32 8
  %3560 = load i32, ptr %3559, align 8, !tbaa !29
  %3561 = icmp eq i32 %3560, 1
  br i1 %3561, label %3562, label %3563

3562:                                             ; preds = %3556
  br label %3652

3563:                                             ; preds = %3556
  %3564 = load ptr, ptr %2, align 8, !tbaa !5
  %3565 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3564, i32 0, i32 1
  %3566 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3565, i32 0, i32 8
  %3567 = load i32, ptr %3566, align 8, !tbaa !29
  %3568 = icmp eq i32 %3567, 2
  br i1 %3568, label %3569, label %3570

3569:                                             ; preds = %3563
  br label %3650

3570:                                             ; preds = %3563
  %3571 = load ptr, ptr %2, align 8, !tbaa !5
  %3572 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3571, i32 0, i32 1
  %3573 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3572, i32 0, i32 8
  %3574 = load i32, ptr %3573, align 8, !tbaa !29
  %3575 = icmp eq i32 %3574, 3
  br i1 %3575, label %3576, label %3577

3576:                                             ; preds = %3570
  br label %3648

3577:                                             ; preds = %3570
  %3578 = load ptr, ptr %2, align 8, !tbaa !5
  %3579 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3578, i32 0, i32 1
  %3580 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3579, i32 0, i32 8
  %3581 = load i32, ptr %3580, align 8, !tbaa !29
  %3582 = icmp eq i32 %3581, 4
  br i1 %3582, label %3583, label %3584

3583:                                             ; preds = %3577
  br label %3646

3584:                                             ; preds = %3577
  %3585 = load ptr, ptr %2, align 8, !tbaa !5
  %3586 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3585, i32 0, i32 1
  %3587 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3586, i32 0, i32 8
  %3588 = load i32, ptr %3587, align 8, !tbaa !29
  %3589 = icmp eq i32 %3588, 5
  br i1 %3589, label %3590, label %3591

3590:                                             ; preds = %3584
  br label %3644

3591:                                             ; preds = %3584
  %3592 = load ptr, ptr %2, align 8, !tbaa !5
  %3593 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3592, i32 0, i32 1
  %3594 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3593, i32 0, i32 8
  %3595 = load i32, ptr %3594, align 8, !tbaa !29
  %3596 = icmp eq i32 %3595, 6
  br i1 %3596, label %3597, label %3598

3597:                                             ; preds = %3591
  br label %3642

3598:                                             ; preds = %3591
  %3599 = load ptr, ptr %2, align 8, !tbaa !5
  %3600 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3599, i32 0, i32 1
  %3601 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3600, i32 0, i32 8
  %3602 = load i32, ptr %3601, align 8, !tbaa !29
  %3603 = icmp eq i32 %3602, 7
  br i1 %3603, label %3604, label %3605

3604:                                             ; preds = %3598
  br label %3640

3605:                                             ; preds = %3598
  %3606 = load ptr, ptr %2, align 8, !tbaa !5
  %3607 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3606, i32 0, i32 1
  %3608 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3607, i32 0, i32 8
  %3609 = load i32, ptr %3608, align 8, !tbaa !29
  %3610 = icmp eq i32 %3609, 8
  br i1 %3610, label %3611, label %3612

3611:                                             ; preds = %3605
  br label %3638

3612:                                             ; preds = %3605
  %3613 = load ptr, ptr %2, align 8, !tbaa !5
  %3614 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3613, i32 0, i32 1
  %3615 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3614, i32 0, i32 8
  %3616 = load i32, ptr %3615, align 8, !tbaa !29
  %3617 = icmp eq i32 %3616, 9
  br i1 %3617, label %3618, label %3619

3618:                                             ; preds = %3612
  br label %3636

3619:                                             ; preds = %3612
  %3620 = load ptr, ptr %2, align 8, !tbaa !5
  %3621 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3620, i32 0, i32 1
  %3622 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3621, i32 0, i32 8
  %3623 = load i32, ptr %3622, align 8, !tbaa !29
  %3624 = icmp eq i32 %3623, 10
  br i1 %3624, label %3625, label %3626

3625:                                             ; preds = %3619
  br label %3634

3626:                                             ; preds = %3619
  %3627 = load ptr, ptr %2, align 8, !tbaa !5
  %3628 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3627, i32 0, i32 1
  %3629 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3628, i32 0, i32 8
  %3630 = load i32, ptr %3629, align 8, !tbaa !29
  %3631 = icmp eq i32 %3630, 11
  %3632 = zext i1 %3631 to i64
  %3633 = select i1 %3631, i32 256, i32 1
  br label %3634

3634:                                             ; preds = %3626, %3625
  %3635 = phi i32 [ 128, %3625 ], [ %3633, %3626 ]
  br label %3636

3636:                                             ; preds = %3634, %3618
  %3637 = phi i32 [ 64, %3618 ], [ %3635, %3634 ]
  br label %3638

3638:                                             ; preds = %3636, %3611
  %3639 = phi i32 [ 32, %3611 ], [ %3637, %3636 ]
  br label %3640

3640:                                             ; preds = %3638, %3604
  %3641 = phi i32 [ 16, %3604 ], [ %3639, %3638 ]
  br label %3642

3642:                                             ; preds = %3640, %3597
  %3643 = phi i32 [ 12, %3597 ], [ %3641, %3640 ]
  br label %3644

3644:                                             ; preds = %3642, %3590
  %3645 = phi i32 [ 10, %3590 ], [ %3643, %3642 ]
  br label %3646

3646:                                             ; preds = %3644, %3583
  %3647 = phi i32 [ 8, %3583 ], [ %3645, %3644 ]
  br label %3648

3648:                                             ; preds = %3646, %3576
  %3649 = phi i32 [ 6, %3576 ], [ %3647, %3646 ]
  br label %3650

3650:                                             ; preds = %3648, %3569
  %3651 = phi i32 [ 4, %3569 ], [ %3649, %3648 ]
  br label %3652

3652:                                             ; preds = %3650, %3562
  %3653 = phi i32 [ 2, %3562 ], [ %3651, %3650 ]
  br label %3654

3654:                                             ; preds = %3652, %3555
  %3655 = phi i32 [ 1, %3555 ], [ %3653, %3652 ]
  %3656 = udiv i32 %3549, %3655
  %3657 = load ptr, ptr %2, align 8, !tbaa !5
  %3658 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3657, i32 0, i32 1
  %3659 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3658, i32 0, i32 0
  %3660 = load i32, ptr %3659, align 8, !tbaa !36
  %3661 = udiv i32 %3660, 2
  %3662 = add i32 %3656, %3661
  %3663 = load ptr, ptr %2, align 8, !tbaa !5
  %3664 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3663, i32 0, i32 1
  %3665 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3664, i32 0, i32 0
  %3666 = load i32, ptr %3665, align 8, !tbaa !36
  %3667 = udiv i32 %3662, %3666
  %3668 = trunc i32 %3667 to i16
  %3669 = zext i16 %3668 to i32
  store i32 %3669, ptr %6, align 4, !tbaa !9
  br label %3791

3670:                                             ; preds = %3535
  %3671 = load ptr, ptr %2, align 8, !tbaa !5
  %3672 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3671, i32 0, i32 1
  %3673 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3672, i32 0, i32 8
  %3674 = load i32, ptr %3673, align 8, !tbaa !29
  %3675 = icmp eq i32 %3674, 0
  br i1 %3675, label %3676, label %3677

3676:                                             ; preds = %3670
  br label %3775

3677:                                             ; preds = %3670
  %3678 = load ptr, ptr %2, align 8, !tbaa !5
  %3679 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3678, i32 0, i32 1
  %3680 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3679, i32 0, i32 8
  %3681 = load i32, ptr %3680, align 8, !tbaa !29
  %3682 = icmp eq i32 %3681, 1
  br i1 %3682, label %3683, label %3684

3683:                                             ; preds = %3677
  br label %3773

3684:                                             ; preds = %3677
  %3685 = load ptr, ptr %2, align 8, !tbaa !5
  %3686 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3685, i32 0, i32 1
  %3687 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3686, i32 0, i32 8
  %3688 = load i32, ptr %3687, align 8, !tbaa !29
  %3689 = icmp eq i32 %3688, 2
  br i1 %3689, label %3690, label %3691

3690:                                             ; preds = %3684
  br label %3771

3691:                                             ; preds = %3684
  %3692 = load ptr, ptr %2, align 8, !tbaa !5
  %3693 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3692, i32 0, i32 1
  %3694 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3693, i32 0, i32 8
  %3695 = load i32, ptr %3694, align 8, !tbaa !29
  %3696 = icmp eq i32 %3695, 3
  br i1 %3696, label %3697, label %3698

3697:                                             ; preds = %3691
  br label %3769

3698:                                             ; preds = %3691
  %3699 = load ptr, ptr %2, align 8, !tbaa !5
  %3700 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3699, i32 0, i32 1
  %3701 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3700, i32 0, i32 8
  %3702 = load i32, ptr %3701, align 8, !tbaa !29
  %3703 = icmp eq i32 %3702, 4
  br i1 %3703, label %3704, label %3705

3704:                                             ; preds = %3698
  br label %3767

3705:                                             ; preds = %3698
  %3706 = load ptr, ptr %2, align 8, !tbaa !5
  %3707 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3706, i32 0, i32 1
  %3708 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3707, i32 0, i32 8
  %3709 = load i32, ptr %3708, align 8, !tbaa !29
  %3710 = icmp eq i32 %3709, 5
  br i1 %3710, label %3711, label %3712

3711:                                             ; preds = %3705
  br label %3765

3712:                                             ; preds = %3705
  %3713 = load ptr, ptr %2, align 8, !tbaa !5
  %3714 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3713, i32 0, i32 1
  %3715 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3714, i32 0, i32 8
  %3716 = load i32, ptr %3715, align 8, !tbaa !29
  %3717 = icmp eq i32 %3716, 6
  br i1 %3717, label %3718, label %3719

3718:                                             ; preds = %3712
  br label %3763

3719:                                             ; preds = %3712
  %3720 = load ptr, ptr %2, align 8, !tbaa !5
  %3721 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3720, i32 0, i32 1
  %3722 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3721, i32 0, i32 8
  %3723 = load i32, ptr %3722, align 8, !tbaa !29
  %3724 = icmp eq i32 %3723, 7
  br i1 %3724, label %3725, label %3726

3725:                                             ; preds = %3719
  br label %3761

3726:                                             ; preds = %3719
  %3727 = load ptr, ptr %2, align 8, !tbaa !5
  %3728 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3727, i32 0, i32 1
  %3729 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3728, i32 0, i32 8
  %3730 = load i32, ptr %3729, align 8, !tbaa !29
  %3731 = icmp eq i32 %3730, 8
  br i1 %3731, label %3732, label %3733

3732:                                             ; preds = %3726
  br label %3759

3733:                                             ; preds = %3726
  %3734 = load ptr, ptr %2, align 8, !tbaa !5
  %3735 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3734, i32 0, i32 1
  %3736 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3735, i32 0, i32 8
  %3737 = load i32, ptr %3736, align 8, !tbaa !29
  %3738 = icmp eq i32 %3737, 9
  br i1 %3738, label %3739, label %3740

3739:                                             ; preds = %3733
  br label %3757

3740:                                             ; preds = %3733
  %3741 = load ptr, ptr %2, align 8, !tbaa !5
  %3742 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3741, i32 0, i32 1
  %3743 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3742, i32 0, i32 8
  %3744 = load i32, ptr %3743, align 8, !tbaa !29
  %3745 = icmp eq i32 %3744, 10
  br i1 %3745, label %3746, label %3747

3746:                                             ; preds = %3740
  br label %3755

3747:                                             ; preds = %3740
  %3748 = load ptr, ptr %2, align 8, !tbaa !5
  %3749 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3748, i32 0, i32 1
  %3750 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3749, i32 0, i32 8
  %3751 = load i32, ptr %3750, align 8, !tbaa !29
  %3752 = icmp eq i32 %3751, 11
  %3753 = zext i1 %3752 to i64
  %3754 = select i1 %3752, i32 256, i32 1
  br label %3755

3755:                                             ; preds = %3747, %3746
  %3756 = phi i32 [ 128, %3746 ], [ %3754, %3747 ]
  br label %3757

3757:                                             ; preds = %3755, %3739
  %3758 = phi i32 [ 64, %3739 ], [ %3756, %3755 ]
  br label %3759

3759:                                             ; preds = %3757, %3732
  %3760 = phi i32 [ 32, %3732 ], [ %3758, %3757 ]
  br label %3761

3761:                                             ; preds = %3759, %3725
  %3762 = phi i32 [ 16, %3725 ], [ %3760, %3759 ]
  br label %3763

3763:                                             ; preds = %3761, %3718
  %3764 = phi i32 [ 12, %3718 ], [ %3762, %3761 ]
  br label %3765

3765:                                             ; preds = %3763, %3711
  %3766 = phi i32 [ 10, %3711 ], [ %3764, %3763 ]
  br label %3767

3767:                                             ; preds = %3765, %3704
  %3768 = phi i32 [ 8, %3704 ], [ %3766, %3765 ]
  br label %3769

3769:                                             ; preds = %3767, %3697
  %3770 = phi i32 [ 6, %3697 ], [ %3768, %3767 ]
  br label %3771

3771:                                             ; preds = %3769, %3690
  %3772 = phi i32 [ 4, %3690 ], [ %3770, %3769 ]
  br label %3773

3773:                                             ; preds = %3771, %3683
  %3774 = phi i32 [ 2, %3683 ], [ %3772, %3771 ]
  br label %3775

3775:                                             ; preds = %3773, %3676
  %3776 = phi i32 [ 1, %3676 ], [ %3774, %3773 ]
  %3777 = udiv i32 64000000, %3776
  %3778 = load ptr, ptr %2, align 8, !tbaa !5
  %3779 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3778, i32 0, i32 1
  %3780 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3779, i32 0, i32 0
  %3781 = load i32, ptr %3780, align 8, !tbaa !36
  %3782 = udiv i32 %3781, 2
  %3783 = add i32 %3777, %3782
  %3784 = load ptr, ptr %2, align 8, !tbaa !5
  %3785 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3784, i32 0, i32 1
  %3786 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3785, i32 0, i32 0
  %3787 = load i32, ptr %3786, align 8, !tbaa !36
  %3788 = udiv i32 %3783, %3787
  %3789 = trunc i32 %3788 to i16
  %3790 = zext i16 %3789 to i32
  store i32 %3790, ptr %6, align 4, !tbaa !9
  br label %3791

3791:                                             ; preds = %3775, %3654
  br label %4036

3792:                                             ; preds = %3043
  %3793 = load ptr, ptr %2, align 8, !tbaa !5
  %3794 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3793, i32 0, i32 1
  %3795 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3794, i32 0, i32 8
  %3796 = load i32, ptr %3795, align 8, !tbaa !29
  %3797 = icmp eq i32 %3796, 0
  br i1 %3797, label %3798, label %3799

3798:                                             ; preds = %3792
  br label %3897

3799:                                             ; preds = %3792
  %3800 = load ptr, ptr %2, align 8, !tbaa !5
  %3801 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3800, i32 0, i32 1
  %3802 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3801, i32 0, i32 8
  %3803 = load i32, ptr %3802, align 8, !tbaa !29
  %3804 = icmp eq i32 %3803, 1
  br i1 %3804, label %3805, label %3806

3805:                                             ; preds = %3799
  br label %3895

3806:                                             ; preds = %3799
  %3807 = load ptr, ptr %2, align 8, !tbaa !5
  %3808 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3807, i32 0, i32 1
  %3809 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3808, i32 0, i32 8
  %3810 = load i32, ptr %3809, align 8, !tbaa !29
  %3811 = icmp eq i32 %3810, 2
  br i1 %3811, label %3812, label %3813

3812:                                             ; preds = %3806
  br label %3893

3813:                                             ; preds = %3806
  %3814 = load ptr, ptr %2, align 8, !tbaa !5
  %3815 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3814, i32 0, i32 1
  %3816 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3815, i32 0, i32 8
  %3817 = load i32, ptr %3816, align 8, !tbaa !29
  %3818 = icmp eq i32 %3817, 3
  br i1 %3818, label %3819, label %3820

3819:                                             ; preds = %3813
  br label %3891

3820:                                             ; preds = %3813
  %3821 = load ptr, ptr %2, align 8, !tbaa !5
  %3822 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3821, i32 0, i32 1
  %3823 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3822, i32 0, i32 8
  %3824 = load i32, ptr %3823, align 8, !tbaa !29
  %3825 = icmp eq i32 %3824, 4
  br i1 %3825, label %3826, label %3827

3826:                                             ; preds = %3820
  br label %3889

3827:                                             ; preds = %3820
  %3828 = load ptr, ptr %2, align 8, !tbaa !5
  %3829 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3828, i32 0, i32 1
  %3830 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3829, i32 0, i32 8
  %3831 = load i32, ptr %3830, align 8, !tbaa !29
  %3832 = icmp eq i32 %3831, 5
  br i1 %3832, label %3833, label %3834

3833:                                             ; preds = %3827
  br label %3887

3834:                                             ; preds = %3827
  %3835 = load ptr, ptr %2, align 8, !tbaa !5
  %3836 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3835, i32 0, i32 1
  %3837 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3836, i32 0, i32 8
  %3838 = load i32, ptr %3837, align 8, !tbaa !29
  %3839 = icmp eq i32 %3838, 6
  br i1 %3839, label %3840, label %3841

3840:                                             ; preds = %3834
  br label %3885

3841:                                             ; preds = %3834
  %3842 = load ptr, ptr %2, align 8, !tbaa !5
  %3843 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3842, i32 0, i32 1
  %3844 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3843, i32 0, i32 8
  %3845 = load i32, ptr %3844, align 8, !tbaa !29
  %3846 = icmp eq i32 %3845, 7
  br i1 %3846, label %3847, label %3848

3847:                                             ; preds = %3841
  br label %3883

3848:                                             ; preds = %3841
  %3849 = load ptr, ptr %2, align 8, !tbaa !5
  %3850 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3849, i32 0, i32 1
  %3851 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3850, i32 0, i32 8
  %3852 = load i32, ptr %3851, align 8, !tbaa !29
  %3853 = icmp eq i32 %3852, 8
  br i1 %3853, label %3854, label %3855

3854:                                             ; preds = %3848
  br label %3881

3855:                                             ; preds = %3848
  %3856 = load ptr, ptr %2, align 8, !tbaa !5
  %3857 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3856, i32 0, i32 1
  %3858 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3857, i32 0, i32 8
  %3859 = load i32, ptr %3858, align 8, !tbaa !29
  %3860 = icmp eq i32 %3859, 9
  br i1 %3860, label %3861, label %3862

3861:                                             ; preds = %3855
  br label %3879

3862:                                             ; preds = %3855
  %3863 = load ptr, ptr %2, align 8, !tbaa !5
  %3864 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3863, i32 0, i32 1
  %3865 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3864, i32 0, i32 8
  %3866 = load i32, ptr %3865, align 8, !tbaa !29
  %3867 = icmp eq i32 %3866, 10
  br i1 %3867, label %3868, label %3869

3868:                                             ; preds = %3862
  br label %3877

3869:                                             ; preds = %3862
  %3870 = load ptr, ptr %2, align 8, !tbaa !5
  %3871 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3870, i32 0, i32 1
  %3872 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3871, i32 0, i32 8
  %3873 = load i32, ptr %3872, align 8, !tbaa !29
  %3874 = icmp eq i32 %3873, 11
  %3875 = zext i1 %3874 to i64
  %3876 = select i1 %3874, i32 256, i32 1
  br label %3877

3877:                                             ; preds = %3869, %3868
  %3878 = phi i32 [ 128, %3868 ], [ %3876, %3869 ]
  br label %3879

3879:                                             ; preds = %3877, %3861
  %3880 = phi i32 [ 64, %3861 ], [ %3878, %3877 ]
  br label %3881

3881:                                             ; preds = %3879, %3854
  %3882 = phi i32 [ 32, %3854 ], [ %3880, %3879 ]
  br label %3883

3883:                                             ; preds = %3881, %3847
  %3884 = phi i32 [ 16, %3847 ], [ %3882, %3881 ]
  br label %3885

3885:                                             ; preds = %3883, %3840
  %3886 = phi i32 [ 12, %3840 ], [ %3884, %3883 ]
  br label %3887

3887:                                             ; preds = %3885, %3833
  %3888 = phi i32 [ 10, %3833 ], [ %3886, %3885 ]
  br label %3889

3889:                                             ; preds = %3887, %3826
  %3890 = phi i32 [ 8, %3826 ], [ %3888, %3887 ]
  br label %3891

3891:                                             ; preds = %3889, %3819
  %3892 = phi i32 [ 6, %3819 ], [ %3890, %3889 ]
  br label %3893

3893:                                             ; preds = %3891, %3812
  %3894 = phi i32 [ 4, %3812 ], [ %3892, %3891 ]
  br label %3895

3895:                                             ; preds = %3893, %3805
  %3896 = phi i32 [ 2, %3805 ], [ %3894, %3893 ]
  br label %3897

3897:                                             ; preds = %3895, %3798
  %3898 = phi i32 [ 1, %3798 ], [ %3896, %3895 ]
  %3899 = udiv i32 4000000, %3898
  %3900 = load ptr, ptr %2, align 8, !tbaa !5
  %3901 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3900, i32 0, i32 1
  %3902 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3901, i32 0, i32 0
  %3903 = load i32, ptr %3902, align 8, !tbaa !36
  %3904 = udiv i32 %3903, 2
  %3905 = add i32 %3899, %3904
  %3906 = load ptr, ptr %2, align 8, !tbaa !5
  %3907 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3906, i32 0, i32 1
  %3908 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3907, i32 0, i32 0
  %3909 = load i32, ptr %3908, align 8, !tbaa !36
  %3910 = udiv i32 %3905, %3909
  %3911 = trunc i32 %3910 to i16
  %3912 = zext i16 %3911 to i32
  store i32 %3912, ptr %6, align 4, !tbaa !9
  br label %4036

3913:                                             ; preds = %3043
  %3914 = load ptr, ptr %2, align 8, !tbaa !5
  %3915 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3914, i32 0, i32 1
  %3916 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3915, i32 0, i32 8
  %3917 = load i32, ptr %3916, align 8, !tbaa !29
  %3918 = icmp eq i32 %3917, 0
  br i1 %3918, label %3919, label %3920

3919:                                             ; preds = %3913
  br label %4018

3920:                                             ; preds = %3913
  %3921 = load ptr, ptr %2, align 8, !tbaa !5
  %3922 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3921, i32 0, i32 1
  %3923 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3922, i32 0, i32 8
  %3924 = load i32, ptr %3923, align 8, !tbaa !29
  %3925 = icmp eq i32 %3924, 1
  br i1 %3925, label %3926, label %3927

3926:                                             ; preds = %3920
  br label %4016

3927:                                             ; preds = %3920
  %3928 = load ptr, ptr %2, align 8, !tbaa !5
  %3929 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3928, i32 0, i32 1
  %3930 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3929, i32 0, i32 8
  %3931 = load i32, ptr %3930, align 8, !tbaa !29
  %3932 = icmp eq i32 %3931, 2
  br i1 %3932, label %3933, label %3934

3933:                                             ; preds = %3927
  br label %4014

3934:                                             ; preds = %3927
  %3935 = load ptr, ptr %2, align 8, !tbaa !5
  %3936 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3935, i32 0, i32 1
  %3937 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3936, i32 0, i32 8
  %3938 = load i32, ptr %3937, align 8, !tbaa !29
  %3939 = icmp eq i32 %3938, 3
  br i1 %3939, label %3940, label %3941

3940:                                             ; preds = %3934
  br label %4012

3941:                                             ; preds = %3934
  %3942 = load ptr, ptr %2, align 8, !tbaa !5
  %3943 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3942, i32 0, i32 1
  %3944 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3943, i32 0, i32 8
  %3945 = load i32, ptr %3944, align 8, !tbaa !29
  %3946 = icmp eq i32 %3945, 4
  br i1 %3946, label %3947, label %3948

3947:                                             ; preds = %3941
  br label %4010

3948:                                             ; preds = %3941
  %3949 = load ptr, ptr %2, align 8, !tbaa !5
  %3950 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3949, i32 0, i32 1
  %3951 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3950, i32 0, i32 8
  %3952 = load i32, ptr %3951, align 8, !tbaa !29
  %3953 = icmp eq i32 %3952, 5
  br i1 %3953, label %3954, label %3955

3954:                                             ; preds = %3948
  br label %4008

3955:                                             ; preds = %3948
  %3956 = load ptr, ptr %2, align 8, !tbaa !5
  %3957 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3956, i32 0, i32 1
  %3958 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3957, i32 0, i32 8
  %3959 = load i32, ptr %3958, align 8, !tbaa !29
  %3960 = icmp eq i32 %3959, 6
  br i1 %3960, label %3961, label %3962

3961:                                             ; preds = %3955
  br label %4006

3962:                                             ; preds = %3955
  %3963 = load ptr, ptr %2, align 8, !tbaa !5
  %3964 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3963, i32 0, i32 1
  %3965 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3964, i32 0, i32 8
  %3966 = load i32, ptr %3965, align 8, !tbaa !29
  %3967 = icmp eq i32 %3966, 7
  br i1 %3967, label %3968, label %3969

3968:                                             ; preds = %3962
  br label %4004

3969:                                             ; preds = %3962
  %3970 = load ptr, ptr %2, align 8, !tbaa !5
  %3971 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3970, i32 0, i32 1
  %3972 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3971, i32 0, i32 8
  %3973 = load i32, ptr %3972, align 8, !tbaa !29
  %3974 = icmp eq i32 %3973, 8
  br i1 %3974, label %3975, label %3976

3975:                                             ; preds = %3969
  br label %4002

3976:                                             ; preds = %3969
  %3977 = load ptr, ptr %2, align 8, !tbaa !5
  %3978 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3977, i32 0, i32 1
  %3979 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3978, i32 0, i32 8
  %3980 = load i32, ptr %3979, align 8, !tbaa !29
  %3981 = icmp eq i32 %3980, 9
  br i1 %3981, label %3982, label %3983

3982:                                             ; preds = %3976
  br label %4000

3983:                                             ; preds = %3976
  %3984 = load ptr, ptr %2, align 8, !tbaa !5
  %3985 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3984, i32 0, i32 1
  %3986 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3985, i32 0, i32 8
  %3987 = load i32, ptr %3986, align 8, !tbaa !29
  %3988 = icmp eq i32 %3987, 10
  br i1 %3988, label %3989, label %3990

3989:                                             ; preds = %3983
  br label %3998

3990:                                             ; preds = %3983
  %3991 = load ptr, ptr %2, align 8, !tbaa !5
  %3992 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %3991, i32 0, i32 1
  %3993 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %3992, i32 0, i32 8
  %3994 = load i32, ptr %3993, align 8, !tbaa !29
  %3995 = icmp eq i32 %3994, 11
  %3996 = zext i1 %3995 to i64
  %3997 = select i1 %3995, i32 256, i32 1
  br label %3998

3998:                                             ; preds = %3990, %3989
  %3999 = phi i32 [ 128, %3989 ], [ %3997, %3990 ]
  br label %4000

4000:                                             ; preds = %3998, %3982
  %4001 = phi i32 [ 64, %3982 ], [ %3999, %3998 ]
  br label %4002

4002:                                             ; preds = %4000, %3975
  %4003 = phi i32 [ 32, %3975 ], [ %4001, %4000 ]
  br label %4004

4004:                                             ; preds = %4002, %3968
  %4005 = phi i32 [ 16, %3968 ], [ %4003, %4002 ]
  br label %4006

4006:                                             ; preds = %4004, %3961
  %4007 = phi i32 [ 12, %3961 ], [ %4005, %4004 ]
  br label %4008

4008:                                             ; preds = %4006, %3954
  %4009 = phi i32 [ 10, %3954 ], [ %4007, %4006 ]
  br label %4010

4010:                                             ; preds = %4008, %3947
  %4011 = phi i32 [ 8, %3947 ], [ %4009, %4008 ]
  br label %4012

4012:                                             ; preds = %4010, %3940
  %4013 = phi i32 [ 6, %3940 ], [ %4011, %4010 ]
  br label %4014

4014:                                             ; preds = %4012, %3933
  %4015 = phi i32 [ 4, %3933 ], [ %4013, %4012 ]
  br label %4016

4016:                                             ; preds = %4014, %3926
  %4017 = phi i32 [ 2, %3926 ], [ %4015, %4014 ]
  br label %4018

4018:                                             ; preds = %4016, %3919
  %4019 = phi i32 [ 1, %3919 ], [ %4017, %4016 ]
  %4020 = udiv i32 32768, %4019
  %4021 = load ptr, ptr %2, align 8, !tbaa !5
  %4022 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %4021, i32 0, i32 1
  %4023 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %4022, i32 0, i32 0
  %4024 = load i32, ptr %4023, align 8, !tbaa !36
  %4025 = udiv i32 %4024, 2
  %4026 = add i32 %4020, %4025
  %4027 = load ptr, ptr %2, align 8, !tbaa !5
  %4028 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %4027, i32 0, i32 1
  %4029 = getelementptr inbounds %struct.UART_InitTypeDef, ptr %4028, i32 0, i32 0
  %4030 = load i32, ptr %4029, align 8, !tbaa !36
  %4031 = udiv i32 %4026, %4030
  %4032 = trunc i32 %4031 to i16
  %4033 = zext i16 %4032 to i32
  store i32 %4033, ptr %6, align 4, !tbaa !9
  br label %4036

4034:                                             ; preds = %3043
  br label %4035

4035:                                             ; preds = %4034, %3043
  store i32 1, ptr %7, align 4, !tbaa !9
  br label %4036

4036:                                             ; preds = %4035, %4018, %3897, %3791, %3519, %3396, %3273, %3151
  %4037 = load i32, ptr %6, align 4, !tbaa !9
  %4038 = icmp uge i32 %4037, 16
  br i1 %4038, label %4039, label %4048

4039:                                             ; preds = %4036
  %4040 = load i32, ptr %6, align 4, !tbaa !9
  %4041 = icmp ule i32 %4040, 65535
  br i1 %4041, label %4042, label %4048

4042:                                             ; preds = %4039
  %4043 = load i32, ptr %6, align 4, !tbaa !9
  %4044 = load ptr, ptr %2, align 8, !tbaa !5
  %4045 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %4044, i32 0, i32 0
  %4046 = load ptr, ptr %4045, align 8, !tbaa !11
  %4047 = getelementptr inbounds %struct.USART_TypeDef, ptr %4046, i32 0, i32 3
  store volatile i32 %4043, ptr %4047, align 4, !tbaa !37
  br label %4049

4048:                                             ; preds = %4039, %4036
  store i32 1, ptr %7, align 4, !tbaa !9
  br label %4049

4049:                                             ; preds = %4048, %4042
  br label %4050

4050:                                             ; preds = %4049, %3042
  br label %4051

4051:                                             ; preds = %4050, %2007
  %4052 = load ptr, ptr %2, align 8, !tbaa !5
  %4053 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %4052, i32 0, i32 12
  store i16 1, ptr %4053, align 2, !tbaa !39
  %4054 = load ptr, ptr %2, align 8, !tbaa !5
  %4055 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %4054, i32 0, i32 11
  store i16 1, ptr %4055, align 4, !tbaa !40
  %4056 = load ptr, ptr %2, align 8, !tbaa !5
  %4057 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %4056, i32 0, i32 13
  store ptr null, ptr %4057, align 8, !tbaa !41
  %4058 = load ptr, ptr %2, align 8, !tbaa !5
  %4059 = getelementptr inbounds %struct.__UART_HandleTypeDef, ptr %4058, i32 0, i32 14
  store ptr null, ptr %4059, align 8, !tbaa !42
  %4060 = load i32, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 12, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 12, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #3
  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 2, ptr %4) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #3
  ret i32 %4060
}

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

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

declare i32 @HAL_RCCEx_GetD3PCLK1Freq() #2

declare void @HAL_RCCEx_GetPLL2ClockFreq(ptr noundef) #2

declare void @HAL_RCCEx_GetPLL3ClockFreq(ptr noundef) #2

declare i32 @HAL_RCC_GetPCLK1Freq() #2

declare i32 @HAL_RCC_GetPCLK2Freq() #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 = { 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, !6, i64 0}
!12 = !{!"__UART_HandleTypeDef", !6, i64 0, !13, i64 8, !14, i64 44, !6, i64 88, !15, i64 96, !15, i64 98, !6, i64 104, !15, i64 112, !15, i64 114, !15, i64 116, !10, i64 120, !15, i64 124, !15, i64 126, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172}
!13 = !{!"", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32}
!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, !10, i64 32, !10, i64 36}
!15 = !{!"short", !7, i64 0}
!16 = !{!12, !10, i64 12}
!17 = !{!12, !10, i64 20}
!18 = !{!12, !10, i64 24}
!19 = !{!12, !10, i64 32}
!20 = !{!12, !10, i64 120}
!21 = !{!22, !10, i64 0}
!22 = !{!"", !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}
!23 = !{!22, !10, i64 4}
!24 = !{!12, !10, i64 16}
!25 = !{!12, !10, i64 28}
!26 = !{!12, !10, i64 36}
!27 = !{!22, !10, i64 8}
!28 = !{!22, !10, i64 44}
!29 = !{!12, !10, i64 40}
!30 = !{!31, !10, i64 84}
!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, !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}
!32 = !{!31, !10, i64 88}
!33 = !{!34, !10, i64 4}
!34 = !{!"", !10, i64 0, !10, i64 4, !10, i64 8}
!35 = !{!31, !10, i64 0}
!36 = !{!12, !10, i64 8}
!37 = !{!22, !10, i64 12}
!38 = !{!15, !15, i64 0}
!39 = !{!12, !15, i64 126}
!40 = !{!12, !15, i64 124}
!41 = !{!12, !6, i64 128}
!42 = !{!12, !6, 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"

%struct.PLL2_ClocksTypeDef = type { i32, i32, i32 }
%struct.PLL3_ClocksTypeDef = type { i32, i32, i32 }

@switch.table.UART_SetConfig.28 = private unnamed_addr constant [11 x i32] [i32 1, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 16, i32 32, i32 64, i32 128], align 4
@switch.table.UART_SetConfig.29 = private unnamed_addr constant [11 x i16] [i16 1, i16 2, i16 4, i16 6, i16 8, i16 10, i16 12, i16 16, i16 32, i16 64, i16 128], align 2

; Function Attrs: nounwind uwtable
define dso_local range(i32 0, 2) i32 @UART_SetConfig(ptr nocapture noundef %0) local_unnamed_addr #0 {
  %2 = alloca %struct.PLL2_ClocksTypeDef, align 4
  %3 = alloca %struct.PLL3_ClocksTypeDef, align 4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %2) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %3) #4
  %4 = getelementptr inbounds i8, ptr %0, i64 8
  %5 = getelementptr inbounds i8, ptr %0, i64 12
  %6 = load i32, ptr %5, align 4, !tbaa !5
  %7 = getelementptr inbounds i8, ptr %0, i64 20
  %8 = load i32, ptr %7, align 4, !tbaa !14
  %9 = or i32 %8, %6
  %10 = getelementptr inbounds i8, ptr %0, i64 24
  %11 = load i32, ptr %10, align 8, !tbaa !15
  %12 = or i32 %9, %11
  %13 = getelementptr inbounds i8, ptr %0, i64 32
  %14 = load i32, ptr %13, align 8, !tbaa !16
  %15 = getelementptr inbounds i8, ptr %0, i64 120
  %16 = load i32, ptr %15, align 8, !tbaa !17
  %17 = or i32 %12, %16
  %18 = load ptr, ptr %0, align 8, !tbaa !18
  %19 = load volatile i32, ptr %18, align 4, !tbaa !19
  %20 = and i32 %19, -805344781
  %21 = or i32 %17, %20
  %22 = or i32 %21, %14
  store volatile i32 %22, ptr %18, align 4, !tbaa !19
  %23 = getelementptr inbounds i8, ptr %18, i64 4
  %24 = load volatile i32, ptr %23, align 4, !tbaa !21
  %25 = and i32 %24, -12289
  %26 = getelementptr inbounds i8, ptr %0, i64 16
  %27 = load i32, ptr %26, align 8, !tbaa !22
  %28 = or i32 %25, %27
  store volatile i32 %28, ptr %23, align 4, !tbaa !21
  %29 = getelementptr inbounds i8, ptr %0, i64 28
  %30 = load i32, ptr %29, align 4, !tbaa !23
  %31 = icmp eq ptr %18, inttoptr (i64 1476398080 to ptr)
  br i1 %31, label %36, label %32

32:                                               ; preds = %1
  %33 = getelementptr inbounds i8, ptr %0, i64 36
  %34 = load i32, ptr %33, align 4, !tbaa !24
  %35 = or i32 %34, %30
  br label %36

36:                                               ; preds = %32, %1
  %.0477 = phi i32 [ %30, %1 ], [ %35, %32 ]
  %37 = getelementptr inbounds i8, ptr %18, i64 8
  %38 = load volatile i32, ptr %37, align 4, !tbaa !25
  %39 = and i32 %38, 301987071
  %40 = or i32 %39, %.0477
  store volatile i32 %40, ptr %37, align 4, !tbaa !25
  %41 = getelementptr inbounds i8, ptr %18, i64 44
  %42 = load volatile i32, ptr %41, align 4, !tbaa !26
  %43 = and i32 %42, -16
  %44 = getelementptr inbounds i8, ptr %0, i64 40
  %45 = load i32, ptr %44, align 8, !tbaa !27
  %46 = or i32 %43, %45
  store volatile i32 %46, ptr %41, align 4, !tbaa !26
  %magicptr519 = ptrtoint ptr %18 to i64
  switch i64 %magicptr519, label %72 [
    i64 1073811456, label %switch.lookup
    i64 1073759232, label %switch.lookup865
    i64 1073760256, label %switch.lookup870
    i64 1073761280, label %switch.lookup875
    i64 1073762304, label %switch.lookup880
    i64 1073812480, label %switch.lookup885
    i64 1073772544, label %switch.lookup890
    i64 1073773568, label %switch.lookup895
    i64 1476398080, label %switch.lookup900
  ]

switch.lookup:                                    ; preds = %36
  %47 = load volatile i32, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !28
  %48 = and i32 %47, 56
  %switch.shiftamt = zext nneg i32 %48 to i64
  %switch.downshift = lshr i64 -9187272733383719935, %switch.shiftamt
  %switch.masked = trunc i64 %switch.downshift to i8
  br label %72

switch.lookup865:                                 ; preds = %36
  %49 = load volatile i32, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !28
  %50 = shl i32 %49, 3
  %51 = and i32 %50, 56
  %switch.shiftamt867 = zext nneg i32 %51 to i64
  %switch.downshift868 = lshr i64 -9187272733383719936, %switch.shiftamt867
  %switch.masked869 = trunc i64 %switch.downshift868 to i8
  br label %72

switch.lookup870:                                 ; preds = %36
  %52 = load volatile i32, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !28
  %53 = shl i32 %52, 3
  %54 = and i32 %53, 56
  %switch.shiftamt872 = zext nneg i32 %54 to i64
  %switch.downshift873 = lshr i64 -9187272733383719936, %switch.shiftamt872
  %switch.masked874 = trunc i64 %switch.downshift873 to i8
  br label %72

switch.lookup875:                                 ; preds = %36
  %55 = load volatile i32, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !28
  %56 = shl i32 %55, 3
  %57 = and i32 %56, 56
  %switch.shiftamt877 = zext nneg i32 %57 to i64
  %switch.downshift878 = lshr i64 -9187272733383719936, %switch.shiftamt877
  %switch.masked879 = trunc i64 %switch.downshift878 to i8
  br label %72

switch.lookup880:                                 ; preds = %36
  %58 = load volatile i32, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !28
  %59 = shl i32 %58, 3
  %60 = and i32 %59, 56
  %switch.shiftamt882 = zext nneg i32 %60 to i64
  %switch.downshift883 = lshr i64 -9187272733383719936, %switch.shiftamt882
  %switch.masked884 = trunc i64 %switch.downshift883 to i8
  br label %72

switch.lookup885:                                 ; preds = %36
  %61 = load volatile i32, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !28
  %62 = and i32 %61, 56
  %switch.shiftamt887 = zext nneg i32 %62 to i64
  %switch.downshift888 = lshr i64 -9187272733383719935, %switch.shiftamt887
  %switch.masked889 = trunc i64 %switch.downshift888 to i8
  br label %72

switch.lookup890:                                 ; preds = %36
  %63 = load volatile i32, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !28
  %64 = shl i32 %63, 3
  %65 = and i32 %64, 56
  %switch.shiftamt892 = zext nneg i32 %65 to i64
  %switch.downshift893 = lshr i64 -9187272733383719936, %switch.shiftamt892
  %switch.masked894 = trunc i64 %switch.downshift893 to i8
  br label %72

switch.lookup895:                                 ; preds = %36
  %66 = load volatile i32, ptr inttoptr (i64 1476543572 to ptr), align 4, !tbaa !28
  %67 = shl i32 %66, 3
  %68 = and i32 %67, 56
  %switch.shiftamt897 = zext nneg i32 %68 to i64
  %switch.downshift898 = lshr i64 -9187272733383719936, %switch.shiftamt897
  %switch.masked899 = trunc i64 %switch.downshift898 to i8
  br label %72

switch.lookup900:                                 ; preds = %36
  %69 = load volatile i32, ptr inttoptr (i64 1476543576 to ptr), align 8, !tbaa !30
  %70 = shl i32 %69, 3
  %71 = and i32 %70, 56
  %switch.shiftamt902 = zext nneg i32 %71 to i64
  %switch.downshift903 = lshr i64 -9187272733383719934, %switch.shiftamt902
  %switch.masked904 = trunc i64 %switch.downshift903 to i8
  br label %72

72:                                               ; preds = %switch.lookup900, %switch.lookup895, %switch.lookup890, %switch.lookup885, %switch.lookup880, %switch.lookup875, %switch.lookup870, %switch.lookup865, %switch.lookup, %36
  %.0476 = phi i8 [ -128, %36 ], [ %switch.masked, %switch.lookup ], [ %switch.masked869, %switch.lookup865 ], [ %switch.masked874, %switch.lookup870 ], [ %switch.masked879, %switch.lookup875 ], [ %switch.masked884, %switch.lookup880 ], [ %switch.masked889, %switch.lookup885 ], [ %switch.masked894, %switch.lookup890 ], [ %switch.masked899, %switch.lookup895 ], [ %switch.masked904, %switch.lookup900 ]
  br i1 %31, label %73, label %280

73:                                               ; preds = %72
  switch i8 %.0476, label %.thread826 [
    i8 2, label %74
    i8 4, label %85
    i8 8, label %97
    i8 16, label %109
    i8 32, label %134
    i8 64, label %143
  ]

74:                                               ; preds = %73
  %75 = tail call i32 @HAL_RCCEx_GetD3PCLK1Freq() #4
  %76 = load i32, ptr %44, align 8, !tbaa !27
  %77 = icmp ult i32 %76, 11
  br i1 %77, label %switch.lookup905, label %78

78:                                               ; preds = %74
  %79 = icmp eq i32 %76, 11
  %80 = select i1 %79, i32 256, i32 1
  br label %82

switch.lookup905:                                 ; preds = %74
  %81 = zext nneg i32 %76 to i64
  %switch.gep = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %81
  %switch.load = load i32, ptr %switch.gep, align 4
  br label %82

82:                                               ; preds = %switch.lookup905, %78
  %83 = phi i32 [ %80, %78 ], [ %switch.load, %switch.lookup905 ]
  %84 = udiv i32 %75, %83
  br label %151

85:                                               ; preds = %73
  call void @HAL_RCCEx_GetPLL2ClockFreq(ptr noundef nonnull %2) #4
  %86 = getelementptr inbounds i8, ptr %2, i64 4
  %87 = load i32, ptr %86, align 4, !tbaa !31
  %88 = load i32, ptr %44, align 8, !tbaa !27
  %89 = icmp ult i32 %88, 11
  br i1 %89, label %switch.lookup906, label %90

90:                                               ; preds = %85
  %91 = icmp eq i32 %88, 11
  %92 = select i1 %91, i32 256, i32 1
  br label %94

switch.lookup906:                                 ; preds = %85
  %93 = zext nneg i32 %88 to i64
  %switch.gep907 = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %93
  %switch.load908 = load i32, ptr %switch.gep907, align 4
  br label %94

94:                                               ; preds = %switch.lookup906, %90
  %95 = phi i32 [ %92, %90 ], [ %switch.load908, %switch.lookup906 ]
  %96 = udiv i32 %87, %95
  br label %151

97:                                               ; preds = %73
  call void @HAL_RCCEx_GetPLL3ClockFreq(ptr noundef nonnull %3) #4
  %98 = getelementptr inbounds i8, ptr %3, i64 4
  %99 = load i32, ptr %98, align 4, !tbaa !31
  %100 = load i32, ptr %44, align 8, !tbaa !27
  %101 = icmp ult i32 %100, 11
  br i1 %101, label %switch.lookup909, label %102

102:                                              ; preds = %97
  %103 = icmp eq i32 %100, 11
  %104 = select i1 %103, i32 256, i32 1
  br label %106

switch.lookup909:                                 ; preds = %97
  %105 = zext nneg i32 %100 to i64
  %switch.gep910 = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %105
  %switch.load911 = load i32, ptr %switch.gep910, align 4
  br label %106

106:                                              ; preds = %switch.lookup909, %102
  %107 = phi i32 [ %104, %102 ], [ %switch.load911, %switch.lookup909 ]
  %108 = udiv i32 %99, %107
  br label %151

109:                                              ; preds = %73
  %110 = load volatile i32, ptr inttoptr (i64 1476543488 to ptr), align 1024, !tbaa !33
  %111 = and i32 %110, 32
  %.not512 = icmp eq i32 %111, 0
  br i1 %.not512, label %125, label %112

112:                                              ; preds = %109
  %113 = load volatile i32, ptr inttoptr (i64 1476543488 to ptr), align 1024, !tbaa !33
  %114 = lshr i32 %113, 3
  %115 = and i32 %114, 3
  %116 = lshr exact i32 64000000, %115
  %117 = icmp ult i32 %45, 11
  br i1 %117, label %switch.lookup912, label %118

118:                                              ; preds = %112
  %119 = icmp eq i32 %45, 11
  %120 = select i1 %119, i32 256, i32 1
  br label %122

switch.lookup912:                                 ; preds = %112
  %121 = zext nneg i32 %45 to i64
  %switch.gep913 = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %121
  %switch.load914 = load i32, ptr %switch.gep913, align 4
  br label %122

122:                                              ; preds = %switch.lookup912, %118
  %123 = phi i32 [ %120, %118 ], [ %switch.load914, %switch.lookup912 ]
  %124 = udiv i32 %116, %123
  br label %.thread

125:                                              ; preds = %109
  %126 = icmp ult i32 %45, 11
  br i1 %126, label %switch.lookup915, label %127

127:                                              ; preds = %125
  %128 = icmp eq i32 %45, 11
  %129 = select i1 %128, i32 256, i32 1
  br label %131

switch.lookup915:                                 ; preds = %125
  %130 = zext nneg i32 %45 to i64
  %switch.gep916 = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %130
  %switch.load917 = load i32, ptr %switch.gep916, align 4
  br label %131

131:                                              ; preds = %switch.lookup915, %127
  %132 = phi i32 [ %129, %127 ], [ %switch.load917, %switch.lookup915 ]
  %133 = udiv i32 64000000, %132
  br label %.thread

134:                                              ; preds = %73
  %135 = icmp ult i32 %45, 11
  br i1 %135, label %switch.lookup918, label %136

136:                                              ; preds = %134
  %137 = icmp eq i32 %45, 11
  %138 = select i1 %137, i32 256, i32 1
  br label %140

switch.lookup918:                                 ; preds = %134
  %139 = zext nneg i32 %45 to i64
  %switch.gep919 = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %139
  %switch.load920 = load i32, ptr %switch.gep919, align 4
  br label %140

140:                                              ; preds = %switch.lookup918, %136
  %141 = phi i32 [ %138, %136 ], [ %switch.load920, %switch.lookup918 ]
  %142 = udiv i32 4000000, %141
  br label %.thread

143:                                              ; preds = %73
  %144 = icmp ult i32 %45, 11
  br i1 %144, label %switch.lookup921, label %145

145:                                              ; preds = %143
  %146 = icmp eq i32 %45, 11
  %147 = select i1 %146, i16 256, i16 1
  br label %149

switch.lookup921:                                 ; preds = %143
  %148 = zext nneg i32 %45 to i64
  %switch.gep922 = getelementptr inbounds [11 x i16], ptr @switch.table.UART_SetConfig.29, i64 0, i64 %148
  %switch.load923 = load i16, ptr %switch.gep922, align 2
  br label %149

149:                                              ; preds = %switch.lookup921, %145
  %.rhs.trunc853 = phi i16 [ %147, %145 ], [ %switch.load923, %switch.lookup921 ]
  %150 = udiv i16 -32768, %.rhs.trunc853
  %.zext854 = zext i16 %150 to i32
  br label %.thread

151:                                              ; preds = %106, %94, %82
  %152 = phi i32 [ %100, %106 ], [ %88, %94 ], [ %76, %82 ]
  %.0 = phi i32 [ %108, %106 ], [ %96, %94 ], [ %84, %82 ]
  %.not513 = icmp eq i32 %.0, 0
  br i1 %.not513, label %.thread826, label %.thread

.thread:                                          ; preds = %131, %122, %140, %149, %151
  %153 = phi i32 [ %152, %151 ], [ %45, %131 ], [ %45, %122 ], [ %45, %140 ], [ %45, %149 ]
  %.0825 = phi i32 [ %.0, %151 ], [ %133, %131 ], [ %124, %122 ], [ %142, %140 ], [ %.zext854, %149 ]
  %154 = load i32, ptr %4, align 8, !tbaa !34
  %155 = mul i32 %154, 3
  %156 = icmp ult i32 %.0825, %155
  %157 = shl i32 %154, 12
  %158 = icmp ugt i32 %.0825, %157
  %or.cond590 = or i1 %156, %158
  br i1 %or.cond590, label %.thread826, label %159

159:                                              ; preds = %.thread
  switch i8 %.0476, label %.thread826 [
    i8 2, label %160
    i8 4, label %178
    i8 8, label %197
    i8 16, label %216
    i8 32, label %253
    i8 64, label %266
  ]

160:                                              ; preds = %159
  %161 = call i32 @HAL_RCCEx_GetD3PCLK1Freq() #4
  %162 = load i32, ptr %44, align 8, !tbaa !27
  %163 = icmp ult i32 %162, 11
  br i1 %163, label %switch.lookup924, label %164

164:                                              ; preds = %160
  %165 = icmp eq i32 %162, 11
  %166 = select i1 %165, i32 256, i32 1
  br label %168

switch.lookup924:                                 ; preds = %160
  %167 = zext nneg i32 %162 to i64
  %switch.gep925 = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %167
  %switch.load926 = load i32, ptr %switch.gep925, align 4
  br label %168

168:                                              ; preds = %switch.lookup924, %164
  %.rhs.trunc = phi i32 [ %166, %164 ], [ %switch.load926, %switch.lookup924 ]
  %169 = udiv i32 %161, %.rhs.trunc
  %.zext = zext i32 %169 to i64
  %170 = shl nuw nsw i64 %.zext, 8
  %171 = load i32, ptr %4, align 8, !tbaa !34
  %172 = lshr i32 %171, 1
  %173 = zext nneg i32 %172 to i64
  %174 = add nuw nsw i64 %170, %173
  %175 = zext i32 %171 to i64
  %176 = udiv i64 %174, %175
  %177 = trunc i64 %176 to i32
  br label %278

178:                                              ; preds = %159
  call void @HAL_RCCEx_GetPLL2ClockFreq(ptr noundef nonnull %2) #4
  %179 = getelementptr inbounds i8, ptr %2, i64 4
  %180 = load i32, ptr %179, align 4, !tbaa !31
  %181 = load i32, ptr %44, align 8, !tbaa !27
  %182 = icmp ult i32 %181, 11
  br i1 %182, label %switch.lookup927, label %183

183:                                              ; preds = %178
  %184 = icmp eq i32 %181, 11
  %185 = select i1 %184, i32 256, i32 1
  br label %187

switch.lookup927:                                 ; preds = %178
  %186 = zext nneg i32 %181 to i64
  %switch.gep928 = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %186
  %switch.load929 = load i32, ptr %switch.gep928, align 4
  br label %187

187:                                              ; preds = %switch.lookup927, %183
  %.rhs.trunc841 = phi i32 [ %185, %183 ], [ %switch.load929, %switch.lookup927 ]
  %188 = udiv i32 %180, %.rhs.trunc841
  %.zext842 = zext i32 %188 to i64
  %189 = shl nuw nsw i64 %.zext842, 8
  %190 = load i32, ptr %4, align 8, !tbaa !34
  %191 = lshr i32 %190, 1
  %192 = zext nneg i32 %191 to i64
  %193 = add nuw nsw i64 %189, %192
  %194 = zext i32 %190 to i64
  %195 = udiv i64 %193, %194
  %196 = trunc i64 %195 to i32
  br label %278

197:                                              ; preds = %159
  call void @HAL_RCCEx_GetPLL3ClockFreq(ptr noundef nonnull %3) #4
  %198 = getelementptr inbounds i8, ptr %3, i64 4
  %199 = load i32, ptr %198, align 4, !tbaa !31
  %200 = load i32, ptr %44, align 8, !tbaa !27
  %201 = icmp ult i32 %200, 11
  br i1 %201, label %switch.lookup930, label %202

202:                                              ; preds = %197
  %203 = icmp eq i32 %200, 11
  %204 = select i1 %203, i32 256, i32 1
  br label %206

switch.lookup930:                                 ; preds = %197
  %205 = zext nneg i32 %200 to i64
  %switch.gep931 = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %205
  %switch.load932 = load i32, ptr %switch.gep931, align 4
  br label %206

206:                                              ; preds = %switch.lookup930, %202
  %.rhs.trunc844 = phi i32 [ %204, %202 ], [ %switch.load932, %switch.lookup930 ]
  %207 = udiv i32 %199, %.rhs.trunc844
  %.zext845 = zext i32 %207 to i64
  %208 = shl nuw nsw i64 %.zext845, 8
  %209 = load i32, ptr %4, align 8, !tbaa !34
  %210 = lshr i32 %209, 1
  %211 = zext nneg i32 %210 to i64
  %212 = add nuw nsw i64 %208, %211
  %213 = zext i32 %209 to i64
  %214 = udiv i64 %212, %213
  %215 = trunc i64 %214 to i32
  br label %278

216:                                              ; preds = %159
  %217 = load volatile i32, ptr inttoptr (i64 1476543488 to ptr), align 1024, !tbaa !33
  %218 = and i32 %217, 32
  %.not515 = icmp eq i32 %218, 0
  br i1 %.not515, label %238, label %219

219:                                              ; preds = %216
  %220 = load volatile i32, ptr inttoptr (i64 1476543488 to ptr), align 1024, !tbaa !33
  %221 = lshr i32 %220, 3
  %222 = and i32 %221, 3
  %223 = lshr exact i32 64000000, %222
  %224 = icmp ult i32 %153, 11
  br i1 %224, label %switch.lookup933, label %225

225:                                              ; preds = %219
  %226 = icmp eq i32 %153, 11
  %227 = select i1 %226, i32 256, i32 1
  br label %229

switch.lookup933:                                 ; preds = %219
  %228 = zext nneg i32 %153 to i64
  %switch.gep934 = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %228
  %switch.load935 = load i32, ptr %switch.gep934, align 4
  br label %229

229:                                              ; preds = %switch.lookup933, %225
  %.rhs.trunc849 = phi i32 [ %227, %225 ], [ %switch.load935, %switch.lookup933 ]
  %230 = udiv i32 %223, %.rhs.trunc849
  %.zext850 = zext nneg i32 %230 to i64
  %231 = shl nuw nsw i64 %.zext850, 8
  %232 = lshr i32 %154, 1
  %233 = zext nneg i32 %232 to i64
  %234 = add nuw nsw i64 %231, %233
  %235 = zext i32 %154 to i64
  %236 = udiv i64 %234, %235
  %237 = trunc i64 %236 to i32
  br label %278

238:                                              ; preds = %216
  %239 = icmp ult i32 %153, 11
  br i1 %239, label %switch.lookup936, label %240

240:                                              ; preds = %238
  %241 = icmp eq i32 %153, 11
  %242 = select i1 %241, i32 256, i32 1
  br label %244

switch.lookup936:                                 ; preds = %238
  %243 = zext nneg i32 %153 to i64
  %switch.gep937 = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %243
  %switch.load938 = load i32, ptr %switch.gep937, align 4
  br label %244

244:                                              ; preds = %switch.lookup936, %240
  %.rhs.trunc846 = phi i32 [ %242, %240 ], [ %switch.load938, %switch.lookup936 ]
  %245 = udiv i32 64000000, %.rhs.trunc846
  %.zext847 = zext nneg i32 %245 to i64
  %246 = shl nuw nsw i64 %.zext847, 8
  %247 = lshr i32 %154, 1
  %248 = zext nneg i32 %247 to i64
  %249 = add nuw nsw i64 %246, %248
  %250 = zext i32 %154 to i64
  %251 = udiv i64 %249, %250
  %252 = trunc i64 %251 to i32
  br label %278

253:                                              ; preds = %159
  %254 = icmp ult i32 %153, 11
  br i1 %254, label %switch.lookup939, label %255

255:                                              ; preds = %253
  %256 = icmp eq i32 %153, 11
  %257 = select i1 %256, i32 256, i32 1
  br label %259

switch.lookup939:                                 ; preds = %253
  %258 = zext nneg i32 %153 to i64
  %switch.gep940 = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %258
  %switch.load941 = load i32, ptr %switch.gep940, align 4
  br label %259

259:                                              ; preds = %switch.lookup939, %255
  %260 = phi i32 [ %257, %255 ], [ %switch.load941, %switch.lookup939 ]
  %261 = udiv i32 4000000, %260
  %262 = shl nuw nsw i32 %261, 8
  %263 = lshr i32 %154, 1
  %264 = add nuw i32 %262, %263
  %265 = udiv i32 %264, %154
  br label %278

266:                                              ; preds = %159
  %267 = icmp ult i32 %153, 11
  br i1 %267, label %switch.lookup942, label %268

268:                                              ; preds = %266
  %269 = icmp eq i32 %153, 11
  %270 = select i1 %269, i16 256, i16 1
  br label %272

switch.lookup942:                                 ; preds = %266
  %271 = zext nneg i32 %153 to i64
  %switch.gep943 = getelementptr inbounds [11 x i16], ptr @switch.table.UART_SetConfig.29, i64 0, i64 %271
  %switch.load944 = load i16, ptr %switch.gep943, align 2
  br label %272

272:                                              ; preds = %switch.lookup942, %268
  %.rhs.trunc851 = phi i16 [ %270, %268 ], [ %switch.load944, %switch.lookup942 ]
  %273 = udiv i16 -32768, %.rhs.trunc851
  %.zext852 = zext i16 %273 to i32
  %274 = shl nuw nsw i32 %.zext852, 8
  %275 = lshr i32 %154, 1
  %276 = add nuw i32 %274, %275
  %277 = udiv i32 %276, %154
  br label %278

278:                                              ; preds = %229, %244, %272, %259, %206, %187, %168
  %.0473 = phi i32 [ %277, %272 ], [ %265, %259 ], [ %237, %229 ], [ %252, %244 ], [ %215, %206 ], [ %196, %187 ], [ %177, %168 ]
  %279 = add i32 %.0473, -768
  %or.cond = icmp ult i32 %279, 1047808
  br i1 %or.cond, label %.thread826.sink.split, label %.thread826

280:                                              ; preds = %72
  %281 = icmp eq i32 %14, 32768
  br i1 %281, label %282, label %416

282:                                              ; preds = %280
  switch i8 %.0476, label %.thread826 [
    i8 0, label %283
    i8 1, label %299
    i8 4, label %315
    i8 8, label %332
    i8 16, label %349
    i8 32, label %384
    i8 64, label %398
  ]

283:                                              ; preds = %282
  %284 = tail call i32 @HAL_RCC_GetPCLK1Freq() #4
  %285 = load i32, ptr %44, align 8, !tbaa !27
  %286 = icmp ult i32 %285, 11
  br i1 %286, label %switch.lookup945, label %287

287:                                              ; preds = %283
  %288 = icmp eq i32 %285, 11
  %289 = select i1 %288, i32 256, i32 1
  br label %291

switch.lookup945:                                 ; preds = %283
  %290 = zext nneg i32 %285 to i64
  %switch.gep946 = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %290
  %switch.load947 = load i32, ptr %switch.gep946, align 4
  br label %291

291:                                              ; preds = %switch.lookup945, %287
  %292 = phi i32 [ %289, %287 ], [ %switch.load947, %switch.lookup945 ]
  %293 = udiv i32 %284, %292
  %294 = shl i32 %293, 1
  %295 = load i32, ptr %4, align 8, !tbaa !34
  %296 = lshr i32 %295, 1
  %297 = add i32 %296, %294
  %298 = udiv i32 %297, %295
  br label %411

299:                                              ; preds = %282
  %300 = tail call i32 @HAL_RCC_GetPCLK2Freq() #4
  %301 = load i32, ptr %44, align 8, !tbaa !27
  %302 = icmp ult i32 %301, 11
  br i1 %302, label %switch.lookup948, label %303

303:                                              ; preds = %299
  %304 = icmp eq i32 %301, 11
  %305 = select i1 %304, i32 256, i32 1
  br label %307

switch.lookup948:                                 ; preds = %299
  %306 = zext nneg i32 %301 to i64
  %switch.gep949 = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %306
  %switch.load950 = load i32, ptr %switch.gep949, align 4
  br label %307

307:                                              ; preds = %switch.lookup948, %303
  %308 = phi i32 [ %305, %303 ], [ %switch.load950, %switch.lookup948 ]
  %309 = udiv i32 %300, %308
  %310 = shl i32 %309, 1
  %311 = load i32, ptr %4, align 8, !tbaa !34
  %312 = lshr i32 %311, 1
  %313 = add i32 %312, %310
  %314 = udiv i32 %313, %311
  br label %411

315:                                              ; preds = %282
  call void @HAL_RCCEx_GetPLL2ClockFreq(ptr noundef nonnull %2) #4
  %316 = getelementptr inbounds i8, ptr %2, i64 4
  %317 = load i32, ptr %316, align 4, !tbaa !31
  %318 = load i32, ptr %44, align 8, !tbaa !27
  %319 = icmp ult i32 %318, 11
  br i1 %319, label %switch.lookup951, label %320

320:                                              ; preds = %315
  %321 = icmp eq i32 %318, 11
  %322 = select i1 %321, i32 256, i32 1
  br label %324

switch.lookup951:                                 ; preds = %315
  %323 = zext nneg i32 %318 to i64
  %switch.gep952 = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %323
  %switch.load953 = load i32, ptr %switch.gep952, align 4
  br label %324

324:                                              ; preds = %switch.lookup951, %320
  %325 = phi i32 [ %322, %320 ], [ %switch.load953, %switch.lookup951 ]
  %326 = udiv i32 %317, %325
  %327 = shl i32 %326, 1
  %328 = load i32, ptr %4, align 8, !tbaa !34
  %329 = lshr i32 %328, 1
  %330 = add i32 %329, %327
  %331 = udiv i32 %330, %328
  br label %411

332:                                              ; preds = %282
  call void @HAL_RCCEx_GetPLL3ClockFreq(ptr noundef nonnull %3) #4
  %333 = getelementptr inbounds i8, ptr %3, i64 4
  %334 = load i32, ptr %333, align 4, !tbaa !31
  %335 = load i32, ptr %44, align 8, !tbaa !27
  %336 = icmp ult i32 %335, 11
  br i1 %336, label %switch.lookup954, label %337

337:                                              ; preds = %332
  %338 = icmp eq i32 %335, 11
  %339 = select i1 %338, i32 256, i32 1
  br label %341

switch.lookup954:                                 ; preds = %332
  %340 = zext nneg i32 %335 to i64
  %switch.gep955 = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %340
  %switch.load956 = load i32, ptr %switch.gep955, align 4
  br label %341

341:                                              ; preds = %switch.lookup954, %337
  %342 = phi i32 [ %339, %337 ], [ %switch.load956, %switch.lookup954 ]
  %343 = udiv i32 %334, %342
  %344 = shl i32 %343, 1
  %345 = load i32, ptr %4, align 8, !tbaa !34
  %346 = lshr i32 %345, 1
  %347 = add i32 %346, %344
  %348 = udiv i32 %347, %345
  br label %411

349:                                              ; preds = %282
  %350 = load volatile i32, ptr inttoptr (i64 1476543488 to ptr), align 1024, !tbaa !33
  %351 = and i32 %350, 32
  %.not510 = icmp eq i32 %351, 0
  br i1 %.not510, label %370, label %352

352:                                              ; preds = %349
  %353 = load volatile i32, ptr inttoptr (i64 1476543488 to ptr), align 1024, !tbaa !33
  %354 = lshr i32 %353, 3
  %355 = and i32 %354, 3
  %356 = lshr exact i32 64000000, %355
  %357 = icmp ult i32 %45, 11
  br i1 %357, label %switch.lookup957, label %358

358:                                              ; preds = %352
  %359 = icmp eq i32 %45, 11
  %360 = select i1 %359, i32 256, i32 1
  br label %362

switch.lookup957:                                 ; preds = %352
  %361 = zext nneg i32 %45 to i64
  %switch.gep958 = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %361
  %switch.load959 = load i32, ptr %switch.gep958, align 4
  br label %362

362:                                              ; preds = %switch.lookup957, %358
  %363 = phi i32 [ %360, %358 ], [ %switch.load959, %switch.lookup957 ]
  %364 = udiv i32 %356, %363
  %365 = shl nuw nsw i32 %364, 1
  %366 = load i32, ptr %4, align 8, !tbaa !34
  %367 = lshr i32 %366, 1
  %368 = add nuw i32 %367, %365
  %369 = udiv i32 %368, %366
  br label %411

370:                                              ; preds = %349
  %371 = icmp ult i32 %45, 11
  br i1 %371, label %switch.lookup960, label %372

372:                                              ; preds = %370
  %373 = icmp eq i32 %45, 11
  %374 = select i1 %373, i32 256, i32 1
  br label %376

switch.lookup960:                                 ; preds = %370
  %375 = zext nneg i32 %45 to i64
  %switch.gep961 = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %375
  %switch.load962 = load i32, ptr %switch.gep961, align 4
  br label %376

376:                                              ; preds = %switch.lookup960, %372
  %377 = phi i32 [ %374, %372 ], [ %switch.load962, %switch.lookup960 ]
  %378 = udiv i32 64000000, %377
  %379 = shl nuw nsw i32 %378, 1
  %380 = load i32, ptr %4, align 8, !tbaa !34
  %381 = lshr i32 %380, 1
  %382 = add nuw i32 %381, %379
  %383 = udiv i32 %382, %380
  br label %411

384:                                              ; preds = %282
  %385 = icmp ult i32 %45, 11
  br i1 %385, label %switch.lookup963, label %386

386:                                              ; preds = %384
  %387 = icmp eq i32 %45, 11
  %388 = select i1 %387, i32 256, i32 1
  br label %390

switch.lookup963:                                 ; preds = %384
  %389 = zext nneg i32 %45 to i64
  %switch.gep964 = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %389
  %switch.load965 = load i32, ptr %switch.gep964, align 4
  br label %390

390:                                              ; preds = %switch.lookup963, %386
  %391 = phi i32 [ %388, %386 ], [ %switch.load965, %switch.lookup963 ]
  %392 = udiv i32 4000000, %391
  %393 = shl nuw nsw i32 %392, 1
  %394 = load i32, ptr %4, align 8, !tbaa !34
  %395 = lshr i32 %394, 1
  %396 = add nuw i32 %395, %393
  %397 = udiv i32 %396, %394
  br label %411

398:                                              ; preds = %282
  %399 = icmp ult i32 %45, 11
  br i1 %399, label %switch.lookup966, label %400

400:                                              ; preds = %398
  %401 = icmp eq i32 %45, 11
  %402 = select i1 %401, i16 256, i16 1
  br label %404

switch.lookup966:                                 ; preds = %398
  %403 = zext nneg i32 %45 to i64
  %switch.gep967 = getelementptr inbounds [11 x i16], ptr @switch.table.UART_SetConfig.29, i64 0, i64 %403
  %switch.load968 = load i16, ptr %switch.gep967, align 2
  br label %404

404:                                              ; preds = %switch.lookup966, %400
  %.rhs.trunc855 = phi i16 [ %402, %400 ], [ %switch.load968, %switch.lookup966 ]
  %405 = udiv i16 -32768, %.rhs.trunc855
  %.zext856 = zext i16 %405 to i32
  %406 = shl nuw nsw i32 %.zext856, 1
  %407 = load i32, ptr %4, align 8, !tbaa !34
  %408 = lshr i32 %407, 1
  %409 = add nuw i32 %406, %408
  %410 = udiv i32 %409, %407
  br label %411

411:                                              ; preds = %362, %376, %404, %390, %341, %324, %307, %291
  %.1474.in = phi i32 [ %410, %404 ], [ %397, %390 ], [ %369, %362 ], [ %383, %376 ], [ %348, %341 ], [ %331, %324 ], [ %314, %307 ], [ %298, %291 ]
  %.1474 = and i32 %.1474.in, 65520
  %.not859 = icmp eq i32 %.1474, 0
  br i1 %.not859, label %.thread826, label %412

412:                                              ; preds = %411
  %413 = lshr i32 %.1474.in, 1
  %414 = and i32 %413, 7
  %415 = or disjoint i32 %414, %.1474
  br label %.thread826.sink.split

416:                                              ; preds = %280
  switch i8 %.0476, label %.thread826 [
    i8 0, label %417
    i8 1, label %428
    i8 4, label %439
    i8 8, label %451
    i8 16, label %463
    i8 32, label %488
    i8 64, label %497
  ]

417:                                              ; preds = %416
  %418 = tail call i32 @HAL_RCC_GetPCLK1Freq() #4
  %419 = load i32, ptr %44, align 8, !tbaa !27
  %420 = icmp ult i32 %419, 11
  br i1 %420, label %switch.lookup969, label %421

421:                                              ; preds = %417
  %422 = icmp eq i32 %419, 11
  %423 = select i1 %422, i32 256, i32 1
  br label %425

switch.lookup969:                                 ; preds = %417
  %424 = zext nneg i32 %419 to i64
  %switch.gep970 = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %424
  %switch.load971 = load i32, ptr %switch.gep970, align 4
  br label %425

425:                                              ; preds = %switch.lookup969, %421
  %426 = phi i32 [ %423, %421 ], [ %switch.load971, %switch.lookup969 ]
  %427 = udiv i32 %418, %426
  br label %505

428:                                              ; preds = %416
  %429 = tail call i32 @HAL_RCC_GetPCLK2Freq() #4
  %430 = load i32, ptr %44, align 8, !tbaa !27
  %431 = icmp ult i32 %430, 11
  br i1 %431, label %switch.lookup972, label %432

432:                                              ; preds = %428
  %433 = icmp eq i32 %430, 11
  %434 = select i1 %433, i32 256, i32 1
  br label %436

switch.lookup972:                                 ; preds = %428
  %435 = zext nneg i32 %430 to i64
  %switch.gep973 = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %435
  %switch.load974 = load i32, ptr %switch.gep973, align 4
  br label %436

436:                                              ; preds = %switch.lookup972, %432
  %437 = phi i32 [ %434, %432 ], [ %switch.load974, %switch.lookup972 ]
  %438 = udiv i32 %429, %437
  br label %505

439:                                              ; preds = %416
  call void @HAL_RCCEx_GetPLL2ClockFreq(ptr noundef nonnull %2) #4
  %440 = getelementptr inbounds i8, ptr %2, i64 4
  %441 = load i32, ptr %440, align 4, !tbaa !31
  %442 = load i32, ptr %44, align 8, !tbaa !27
  %443 = icmp ult i32 %442, 11
  br i1 %443, label %switch.lookup975, label %444

444:                                              ; preds = %439
  %445 = icmp eq i32 %442, 11
  %446 = select i1 %445, i32 256, i32 1
  br label %448

switch.lookup975:                                 ; preds = %439
  %447 = zext nneg i32 %442 to i64
  %switch.gep976 = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %447
  %switch.load977 = load i32, ptr %switch.gep976, align 4
  br label %448

448:                                              ; preds = %switch.lookup975, %444
  %449 = phi i32 [ %446, %444 ], [ %switch.load977, %switch.lookup975 ]
  %450 = udiv i32 %441, %449
  br label %505

451:                                              ; preds = %416
  call void @HAL_RCCEx_GetPLL3ClockFreq(ptr noundef nonnull %3) #4
  %452 = getelementptr inbounds i8, ptr %3, i64 4
  %453 = load i32, ptr %452, align 4, !tbaa !31
  %454 = load i32, ptr %44, align 8, !tbaa !27
  %455 = icmp ult i32 %454, 11
  br i1 %455, label %switch.lookup978, label %456

456:                                              ; preds = %451
  %457 = icmp eq i32 %454, 11
  %458 = select i1 %457, i32 256, i32 1
  br label %460

switch.lookup978:                                 ; preds = %451
  %459 = zext nneg i32 %454 to i64
  %switch.gep979 = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %459
  %switch.load980 = load i32, ptr %switch.gep979, align 4
  br label %460

460:                                              ; preds = %switch.lookup978, %456
  %461 = phi i32 [ %458, %456 ], [ %switch.load980, %switch.lookup978 ]
  %462 = udiv i32 %453, %461
  br label %505

463:                                              ; preds = %416
  %464 = load volatile i32, ptr inttoptr (i64 1476543488 to ptr), align 1024, !tbaa !33
  %465 = and i32 %464, 32
  %.not = icmp eq i32 %465, 0
  br i1 %.not, label %479, label %466

466:                                              ; preds = %463
  %467 = load volatile i32, ptr inttoptr (i64 1476543488 to ptr), align 1024, !tbaa !33
  %468 = lshr i32 %467, 3
  %469 = and i32 %468, 3
  %470 = lshr exact i32 64000000, %469
  %471 = icmp ult i32 %45, 11
  br i1 %471, label %switch.lookup981, label %472

472:                                              ; preds = %466
  %473 = icmp eq i32 %45, 11
  %474 = select i1 %473, i32 256, i32 1
  br label %476

switch.lookup981:                                 ; preds = %466
  %475 = zext nneg i32 %45 to i64
  %switch.gep982 = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %475
  %switch.load983 = load i32, ptr %switch.gep982, align 4
  br label %476

476:                                              ; preds = %switch.lookup981, %472
  %477 = phi i32 [ %474, %472 ], [ %switch.load983, %switch.lookup981 ]
  %478 = udiv i32 %470, %477
  br label %505

479:                                              ; preds = %463
  %480 = icmp ult i32 %45, 11
  br i1 %480, label %switch.lookup984, label %481

481:                                              ; preds = %479
  %482 = icmp eq i32 %45, 11
  %483 = select i1 %482, i32 256, i32 1
  br label %485

switch.lookup984:                                 ; preds = %479
  %484 = zext nneg i32 %45 to i64
  %switch.gep985 = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %484
  %switch.load986 = load i32, ptr %switch.gep985, align 4
  br label %485

485:                                              ; preds = %switch.lookup984, %481
  %486 = phi i32 [ %483, %481 ], [ %switch.load986, %switch.lookup984 ]
  %487 = udiv i32 64000000, %486
  br label %505

488:                                              ; preds = %416
  %489 = icmp ult i32 %45, 11
  br i1 %489, label %switch.lookup987, label %490

490:                                              ; preds = %488
  %491 = icmp eq i32 %45, 11
  %492 = select i1 %491, i32 256, i32 1
  br label %494

switch.lookup987:                                 ; preds = %488
  %493 = zext nneg i32 %45 to i64
  %switch.gep988 = getelementptr inbounds [11 x i32], ptr @switch.table.UART_SetConfig.28, i64 0, i64 %493
  %switch.load989 = load i32, ptr %switch.gep988, align 4
  br label %494

494:                                              ; preds = %switch.lookup987, %490
  %495 = phi i32 [ %492, %490 ], [ %switch.load989, %switch.lookup987 ]
  %496 = udiv i32 4000000, %495
  br label %505

497:                                              ; preds = %416
  %498 = icmp ult i32 %45, 11
  br i1 %498, label %switch.lookup990, label %499

499:                                              ; preds = %497
  %500 = icmp eq i32 %45, 11
  %501 = select i1 %500, i16 256, i16 1
  br label %503

switch.lookup990:                                 ; preds = %497
  %502 = zext nneg i32 %45 to i64
  %switch.gep991 = getelementptr inbounds [11 x i16], ptr @switch.table.UART_SetConfig.29, i64 0, i64 %502
  %switch.load992 = load i16, ptr %switch.gep991, align 2
  br label %503

503:                                              ; preds = %switch.lookup990, %499
  %.rhs.trunc857 = phi i16 [ %501, %499 ], [ %switch.load992, %switch.lookup990 ]
  %504 = udiv i16 -32768, %.rhs.trunc857
  %.zext858 = zext i16 %504 to i32
  br label %505

505:                                              ; preds = %476, %485, %503, %494, %460, %448, %436, %425
  %.sink862 = phi i32 [ %478, %476 ], [ %487, %485 ], [ %.zext858, %503 ], [ %496, %494 ], [ %462, %460 ], [ %450, %448 ], [ %438, %436 ], [ %427, %425 ]
  %506 = load i32, ptr %4, align 8, !tbaa !34
  %507 = lshr i32 %506, 1
  %508 = add i32 %507, %.sink862
  %509 = udiv i32 %508, %506
  %.2475 = and i32 %509, 65535
  %510 = icmp ugt i32 %.2475, 15
  br i1 %510, label %.thread826.sink.split, label %.thread826

.thread826.sink.split:                            ; preds = %505, %278, %412
  %.sink = phi i32 [ %415, %412 ], [ %.0473, %278 ], [ %.2475, %505 ]
  %511 = load ptr, ptr %0, align 8, !tbaa !18
  %512 = getelementptr inbounds i8, ptr %511, i64 12
  store volatile i32 %.sink, ptr %512, align 4, !tbaa !35
  br label %.thread826

.thread826:                                       ; preds = %.thread826.sink.split, %416, %282, %159, %73, %505, %411, %278, %.thread, %151
  %.4 = phi i32 [ 0, %151 ], [ 1, %.thread ], [ 1, %278 ], [ 1, %411 ], [ 1, %505 ], [ 1, %73 ], [ 1, %159 ], [ 1, %282 ], [ 1, %416 ], [ 0, %.thread826.sink.split ]
  %513 = getelementptr inbounds i8, ptr %0, i64 126
  store i16 1, ptr %513, align 2, !tbaa !36
  %514 = getelementptr inbounds i8, ptr %0, i64 124
  store i16 1, ptr %514, align 4, !tbaa !37
  %515 = getelementptr inbounds i8, ptr %0, i64 128
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %515, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %3) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %2) #4
  ret i32 %.4
}

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

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

declare i32 @HAL_RCCEx_GetD3PCLK1Freq() local_unnamed_addr #2

declare void @HAL_RCCEx_GetPLL2ClockFreq(ptr noundef) local_unnamed_addr #2

declare void @HAL_RCCEx_GetPLL3ClockFreq(ptr noundef) local_unnamed_addr #2

declare i32 @HAL_RCC_GetPCLK1Freq() local_unnamed_addr #2

declare i32 @HAL_RCC_GetPCLK2Freq() local_unnamed_addr #2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3

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 = { mustprogress 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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { nounwind }

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

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


; Effective O3 passes: ConstantMergePass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass