; LLVM IR from jgaeddert/liquid-dsp :: src/framing/src (ofdmflexframesync)

; 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.modulation_type_s = type { ptr, ptr, i32, i32 }
%struct.div_t = type { i32, i32 }
%struct.ofdmflexframesync_s = type { i32, i32, i32, ptr, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, %struct.ofdmflexframegenprops_s, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, i32, i32, i32, ptr, ptr, ptr, %struct.framesyncstats_s, %struct.framedatastats_s, float, ptr, i32, i32, i32, i32, i32 }
%struct.ofdmflexframegenprops_s = type { i32, i32, i32, i32 }
%struct.framesyncstats_s = type { float, float, float, ptr, i32, i32, i32, i32, i32, i32 }
%struct.framedatastats_s = type { i32, i32, i32, i64 }

@.str = external hidden unnamed_addr constant [90 x i8], align 1
@modulation_types = external constant [53 x %struct.modulation_type_s], align 16
@.str.16 = external hidden unnamed_addr constant [32 x i8], align 1
@__PRETTY_FUNCTION__.ofdmflexframesync_decode_header = external hidden unnamed_addr constant [55 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [73 x i8], align 1

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #1

declare i32 @packetizer_get_enc_msg_len(ptr noundef) #2

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

; Function Attrs: nounwind allocsize(1)
declare ptr @realloc(ptr noundef, i64 noundef) #3

; Function Attrs: nounwind willreturn memory(none)
declare i64 @div(i32 noundef, i32 noundef) #4

declare i32 @liquid_error_fl(i32 noundef, ptr noundef, i32 noundef, ptr noundef, ...) #2

; Function Attrs: nounwind uwtable
define dso_local i32 @ofdmflexframesync_decode_header(ptr noundef %0) #5 {
  %2 = alloca i32, align 4
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca %struct.div_t, align 4
  %16 = alloca %struct.div_t, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  %17 = load ptr, ptr %3, align 8, !tbaa !5
  %18 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %17, i32 0, i32 19
  store i32 0, ptr %18, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #7
  store i32 0, ptr %4, align 4, !tbaa !17
  %19 = load ptr, ptr %3, align 8, !tbaa !5
  %20 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %19, i32 0, i32 9
  %21 = load i32, ptr %20, align 4, !tbaa !18
  %22 = icmp ne i32 %21, 0
  br i1 %22, label %23, label %51

23:                                               ; preds = %1
  %24 = load ptr, ptr %3, align 8, !tbaa !5
  %25 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %24, i32 0, i32 13
  %26 = load ptr, ptr %25, align 8, !tbaa !19
  %27 = load ptr, ptr %3, align 8, !tbaa !5
  %28 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %27, i32 0, i32 14
  %29 = load ptr, ptr %28, align 8, !tbaa !20
  %30 = load ptr, ptr %3, align 8, !tbaa !5
  %31 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %30, i32 0, i32 17
  %32 = load i32, ptr %31, align 8, !tbaa !21
  %33 = zext i32 %32 to i64
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %26, ptr align 1 %29, i64 %33, i1 false)
  %34 = load ptr, ptr %3, align 8, !tbaa !5
  %35 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %34, i32 0, i32 13
  %36 = load ptr, ptr %35, align 8, !tbaa !19
  %37 = load ptr, ptr %3, align 8, !tbaa !5
  %38 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %37, i32 0, i32 17
  %39 = load i32, ptr %38, align 8, !tbaa !21
  %40 = udiv i32 %39, 8
  call void @unscramble_data_soft(ptr noundef %36, i32 noundef %40)
  %41 = load ptr, ptr %3, align 8, !tbaa !5
  %42 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %41, i32 0, i32 11
  %43 = load ptr, ptr %42, align 8, !tbaa !22
  %44 = load ptr, ptr %3, align 8, !tbaa !5
  %45 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %44, i32 0, i32 13
  %46 = load ptr, ptr %45, align 8, !tbaa !19
  %47 = load ptr, ptr %3, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %47, i32 0, i32 12
  %49 = load ptr, ptr %48, align 8, !tbaa !23
  %50 = call i32 @packetizer_decode_soft(ptr noundef %43, ptr noundef %46, ptr noundef %49)
  store i32 %50, ptr %4, align 4, !tbaa !17
  br label %98

51:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #7
  %52 = load ptr, ptr %3, align 8, !tbaa !5
  %53 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %52, i32 0, i32 20
  %54 = getelementptr inbounds %struct.ofdmflexframegenprops_s, ptr %53, i32 0, i32 3
  %55 = load i32, ptr %54, align 4, !tbaa !24
  %56 = zext i32 %55 to i64
  %57 = getelementptr inbounds [53 x %struct.modulation_type_s], ptr @modulation_types, i64 0, i64 %56
  %58 = getelementptr inbounds %struct.modulation_type_s, ptr %57, i32 0, i32 3
  %59 = load i32, ptr %58, align 4, !tbaa !25
  store i32 %59, ptr %6, align 4, !tbaa !17
  %60 = load ptr, ptr %3, align 8, !tbaa !5
  %61 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %60, i32 0, i32 14
  %62 = load ptr, ptr %61, align 8, !tbaa !20
  %63 = load i32, ptr %6, align 4, !tbaa !17
  %64 = load ptr, ptr %3, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %64, i32 0, i32 18
  %66 = load i32, ptr %65, align 4, !tbaa !27
  %67 = load ptr, ptr %3, align 8, !tbaa !5
  %68 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %67, i32 0, i32 13
  %69 = load ptr, ptr %68, align 8, !tbaa !19
  %70 = load ptr, ptr %3, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %70, i32 0, i32 17
  %72 = load i32, ptr %71, align 8, !tbaa !21
  %73 = call i32 @liquid_repack_bytes(ptr noundef %62, i32 noundef %63, i32 noundef %66, ptr noundef %69, i32 noundef 8, i32 noundef %72, ptr noundef %5)
  %74 = load i32, ptr %5, align 4, !tbaa !17
  %75 = load ptr, ptr %3, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %75, i32 0, i32 17
  %77 = load i32, ptr %76, align 8, !tbaa !21
  %78 = icmp eq i32 %74, %77
  br i1 %78, label %79, label %80

79:                                               ; preds = %51
  br label %81

80:                                               ; preds = %51
  call void @__assert_fail(ptr noundef @.str.16, ptr noundef @.str, i32 noundef 577, ptr noundef @__PRETTY_FUNCTION__.ofdmflexframesync_decode_header) #8
  unreachable

81:                                               ; preds = %79
  %82 = load ptr, ptr %3, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %82, i32 0, i32 13
  %84 = load ptr, ptr %83, align 8, !tbaa !19
  %85 = load ptr, ptr %3, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %85, i32 0, i32 17
  %87 = load i32, ptr %86, align 8, !tbaa !21
  call void @unscramble_data(ptr noundef %84, i32 noundef %87)
  %88 = load ptr, ptr %3, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %88, i32 0, i32 11
  %90 = load ptr, ptr %89, align 8, !tbaa !22
  %91 = load ptr, ptr %3, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %91, i32 0, i32 13
  %93 = load ptr, ptr %92, align 8, !tbaa !19
  %94 = load ptr, ptr %3, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %94, i32 0, i32 12
  %96 = load ptr, ptr %95, align 8, !tbaa !23
  %97 = call i32 @packetizer_decode(ptr noundef %90, ptr noundef %93, ptr noundef %96)
  store i32 %97, ptr %4, align 4, !tbaa !17
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #7
  br label %98

98:                                               ; preds = %81, %23
  %99 = load i32, ptr %4, align 4, !tbaa !17
  %100 = icmp ne i32 %99, 0
  br i1 %100, label %102, label %101

101:                                              ; preds = %98
  store i32 0, ptr %2, align 4
  store i32 1, ptr %7, align 4
  br label %356

102:                                              ; preds = %98
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #7
  %103 = load ptr, ptr %3, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %103, i32 0, i32 15
  %105 = load i32, ptr %104, align 8, !tbaa !28
  store i32 %105, ptr %8, align 4, !tbaa !17
  %106 = load ptr, ptr %3, align 8, !tbaa !5
  %107 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %106, i32 0, i32 12
  %108 = load ptr, ptr %107, align 8, !tbaa !23
  %109 = load i32, ptr %8, align 4, !tbaa !17
  %110 = add i32 %109, 0
  %111 = zext i32 %110 to i64
  %112 = getelementptr inbounds i8, ptr %108, i64 %111
  %113 = load i8, ptr %112, align 1, !tbaa !29
  %114 = zext i8 %113 to i32
  %115 = icmp ne i32 %114, 105
  br i1 %115, label %116, label %118

116:                                              ; preds = %102
  %117 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 3, ptr noundef @.str, i32 noundef 610, ptr noundef @.str.17)
  store i32 %117, ptr %2, align 4
  store i32 1, ptr %7, align 4
  br label %355

118:                                              ; preds = %102
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #7
  %119 = load ptr, ptr %3, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %119, i32 0, i32 12
  %121 = load ptr, ptr %120, align 8, !tbaa !23
  %122 = load i32, ptr %8, align 4, !tbaa !17
  %123 = add i32 %122, 1
  %124 = zext i32 %123 to i64
  %125 = getelementptr inbounds i8, ptr %121, i64 %124
  %126 = load i8, ptr %125, align 1, !tbaa !29
  %127 = zext i8 %126 to i32
  %128 = shl i32 %127, 8
  %129 = load ptr, ptr %3, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %129, i32 0, i32 12
  %131 = load ptr, ptr %130, align 8, !tbaa !23
  %132 = load i32, ptr %8, align 4, !tbaa !17
  %133 = add i32 %132, 2
  %134 = zext i32 %133 to i64
  %135 = getelementptr inbounds i8, ptr %131, i64 %134
  %136 = load i8, ptr %135, align 1, !tbaa !29
  %137 = zext i8 %136 to i32
  %138 = or i32 %128, %137
  store i32 %138, ptr %9, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #7
  %139 = load ptr, ptr %3, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %139, i32 0, i32 12
  %141 = load ptr, ptr %140, align 8, !tbaa !23
  %142 = load i32, ptr %8, align 4, !tbaa !17
  %143 = add i32 %142, 3
  %144 = zext i32 %143 to i64
  %145 = getelementptr inbounds i8, ptr %141, i64 %144
  %146 = load i8, ptr %145, align 1, !tbaa !29
  %147 = zext i8 %146 to i32
  store i32 %147, ptr %10, align 4, !tbaa !17
  %148 = load i32, ptr %10, align 4, !tbaa !17
  %149 = icmp eq i32 %148, 0
  br i1 %149, label %153, label %150

150:                                              ; preds = %118
  %151 = load i32, ptr %10, align 4, !tbaa !17
  %152 = icmp uge i32 %151, 53
  br i1 %152, label %153, label %155

153:                                              ; preds = %150, %118
  %154 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 3, ptr noundef @.str, i32 noundef 618, ptr noundef @.str.18)
  store i32 %154, ptr %2, align 4
  store i32 1, ptr %7, align 4
  br label %354

155:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #7
  %156 = load ptr, ptr %3, align 8, !tbaa !5
  %157 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %156, i32 0, i32 12
  %158 = load ptr, ptr %157, align 8, !tbaa !23
  %159 = load i32, ptr %8, align 4, !tbaa !17
  %160 = add i32 %159, 4
  %161 = zext i32 %160 to i64
  %162 = getelementptr inbounds i8, ptr %158, i64 %161
  %163 = load i8, ptr %162, align 1, !tbaa !29
  %164 = zext i8 %163 to i32
  %165 = ashr i32 %164, 5
  %166 = and i32 %165, 7
  store i32 %166, ptr %11, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  %167 = load ptr, ptr %3, align 8, !tbaa !5
  %168 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %167, i32 0, i32 12
  %169 = load ptr, ptr %168, align 8, !tbaa !23
  %170 = load i32, ptr %8, align 4, !tbaa !17
  %171 = add i32 %170, 4
  %172 = zext i32 %171 to i64
  %173 = getelementptr inbounds i8, ptr %169, i64 %172
  %174 = load i8, ptr %173, align 1, !tbaa !29
  %175 = zext i8 %174 to i32
  %176 = and i32 %175, 31
  store i32 %176, ptr %12, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #7
  %177 = load ptr, ptr %3, align 8, !tbaa !5
  %178 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %177, i32 0, i32 12
  %179 = load ptr, ptr %178, align 8, !tbaa !23
  %180 = load i32, ptr %8, align 4, !tbaa !17
  %181 = add i32 %180, 5
  %182 = zext i32 %181 to i64
  %183 = getelementptr inbounds i8, ptr %179, i64 %182
  %184 = load i8, ptr %183, align 1, !tbaa !29
  %185 = zext i8 %184 to i32
  %186 = and i32 %185, 31
  store i32 %186, ptr %13, align 4, !tbaa !17
  %187 = load i32, ptr %11, align 4, !tbaa !17
  %188 = icmp uge i32 %187, 7
  br i1 %188, label %189, label %191

189:                                              ; preds = %155
  %190 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 3, ptr noundef @.str, i32 noundef 630, ptr noundef @.str.19)
  store i32 %190, ptr %2, align 4
  store i32 1, ptr %7, align 4
  br label %353

191:                                              ; preds = %155
  %192 = load i32, ptr %12, align 4, !tbaa !17
  %193 = icmp uge i32 %192, 28
  br i1 %193, label %194, label %196

194:                                              ; preds = %191
  %195 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 3, ptr noundef @.str, i32 noundef 632, ptr noundef @.str.20)
  store i32 %195, ptr %2, align 4
  store i32 1, ptr %7, align 4
  br label %353

196:                                              ; preds = %191
  %197 = load i32, ptr %13, align 4, !tbaa !17
  %198 = icmp uge i32 %197, 28
  br i1 %198, label %199, label %201

199:                                              ; preds = %196
  %200 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 3, ptr noundef @.str, i32 noundef 634, ptr noundef @.str.21)
  store i32 %200, ptr %2, align 4
  store i32 1, ptr %7, align 4
  br label %353

201:                                              ; preds = %196
  %202 = load ptr, ptr %3, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %202, i32 0, i32 19
  store i32 1, ptr %203, align 8, !tbaa !9
  %204 = load i32, ptr %10, align 4, !tbaa !17
  %205 = load ptr, ptr %3, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %205, i32 0, i32 21
  %207 = load i32, ptr %206, align 4, !tbaa !30
  %208 = icmp ne i32 %204, %207
  br i1 %208, label %209, label %229

209:                                              ; preds = %201
  %210 = load i32, ptr %10, align 4, !tbaa !17
  %211 = load ptr, ptr %3, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %211, i32 0, i32 21
  store i32 %210, ptr %212, align 4, !tbaa !30
  %213 = load i32, ptr %10, align 4, !tbaa !17
  %214 = zext i32 %213 to i64
  %215 = getelementptr inbounds [53 x %struct.modulation_type_s], ptr @modulation_types, i64 0, i64 %214
  %216 = getelementptr inbounds %struct.modulation_type_s, ptr %215, i32 0, i32 3
  %217 = load i32, ptr %216, align 4, !tbaa !25
  %218 = load ptr, ptr %3, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %218, i32 0, i32 22
  store i32 %217, ptr %219, align 8, !tbaa !31
  %220 = load ptr, ptr %3, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %220, i32 0, i32 29
  %222 = load ptr, ptr %221, align 8, !tbaa !32
  %223 = load ptr, ptr %3, align 8, !tbaa !5
  %224 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %223, i32 0, i32 21
  %225 = load i32, ptr %224, align 4, !tbaa !30
  %226 = call ptr @modemcf_recreate(ptr noundef %222, i32 noundef %225)
  %227 = load ptr, ptr %3, align 8, !tbaa !5
  %228 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %227, i32 0, i32 29
  store ptr %226, ptr %228, align 8, !tbaa !32
  br label %229

229:                                              ; preds = %209, %201
  %230 = load i32, ptr %9, align 4, !tbaa !17
  %231 = load ptr, ptr %3, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %231, i32 0, i32 23
  store i32 %230, ptr %232, align 4, !tbaa !33
  %233 = load i32, ptr %11, align 4, !tbaa !17
  %234 = load ptr, ptr %3, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %234, i32 0, i32 24
  store i32 %233, ptr %235, align 8, !tbaa !34
  %236 = load i32, ptr %12, align 4, !tbaa !17
  %237 = load ptr, ptr %3, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %237, i32 0, i32 25
  store i32 %236, ptr %238, align 4, !tbaa !35
  %239 = load i32, ptr %13, align 4, !tbaa !17
  %240 = load ptr, ptr %3, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %240, i32 0, i32 26
  store i32 %239, ptr %241, align 8, !tbaa !36
  %242 = load ptr, ptr %3, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %242, i32 0, i32 28
  %244 = load ptr, ptr %243, align 8, !tbaa !37
  %245 = load ptr, ptr %3, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %245, i32 0, i32 23
  %247 = load i32, ptr %246, align 4, !tbaa !33
  %248 = load ptr, ptr %3, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %248, i32 0, i32 24
  %250 = load i32, ptr %249, align 8, !tbaa !34
  %251 = load ptr, ptr %3, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %251, i32 0, i32 25
  %253 = load i32, ptr %252, align 4, !tbaa !35
  %254 = load ptr, ptr %3, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %254, i32 0, i32 26
  %256 = load i32, ptr %255, align 8, !tbaa !36
  %257 = call ptr @packetizer_recreate(ptr noundef %244, i32 noundef %247, i32 noundef %250, i32 noundef %253, i32 noundef %256)
  %258 = load ptr, ptr %3, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %258, i32 0, i32 28
  store ptr %257, ptr %259, align 8, !tbaa !37
  %260 = load ptr, ptr %3, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %260, i32 0, i32 27
  %262 = load i32, ptr %261, align 4, !tbaa !38
  %263 = icmp ne i32 %262, 0
  br i1 %263, label %264, label %294

264:                                              ; preds = %229
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #7
  %265 = load ptr, ptr %3, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %265, i32 0, i32 28
  %267 = load ptr, ptr %266, align 8, !tbaa !37
  %268 = call i32 @packetizer_get_enc_msg_len(ptr noundef %267)
  store i32 %268, ptr %14, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  %269 = load i32, ptr %14, align 4, !tbaa !17
  %270 = mul nsw i32 8, %269
  %271 = load ptr, ptr %3, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %271, i32 0, i32 22
  %273 = load i32, ptr %272, align 8, !tbaa !31
  %274 = call i64 @div(i32 noundef %270, i32 noundef %273) #9
  store i64 %274, ptr %15, align 4
  %275 = getelementptr inbounds %struct.div_t, ptr %15, i32 0, i32 0
  %276 = load i32, ptr %275, align 4, !tbaa !39
  %277 = getelementptr inbounds %struct.div_t, ptr %15, i32 0, i32 1
  %278 = load i32, ptr %277, align 4, !tbaa !41
  %279 = icmp ne i32 %278, 0
  %280 = zext i1 %279 to i64
  %281 = select i1 %279, i32 1, i32 0
  %282 = add nsw i32 %276, %281
  %283 = load ptr, ptr %3, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %283, i32 0, i32 33
  store i32 %282, ptr %284, align 4, !tbaa !42
  %285 = load ptr, ptr %3, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %285, i32 0, i32 22
  %287 = load i32, ptr %286, align 8, !tbaa !31
  %288 = load ptr, ptr %3, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %288, i32 0, i32 33
  %290 = load i32, ptr %289, align 4, !tbaa !42
  %291 = mul i32 %287, %290
  %292 = load ptr, ptr %3, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %292, i32 0, i32 32
  store i32 %291, ptr %293, align 8, !tbaa !43
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  br label %319

294:                                              ; preds = %229
  %295 = load ptr, ptr %3, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %295, i32 0, i32 28
  %297 = load ptr, ptr %296, align 8, !tbaa !37
  %298 = call i32 @packetizer_get_enc_msg_len(ptr noundef %297)
  %299 = load ptr, ptr %3, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %299, i32 0, i32 32
  store i32 %298, ptr %300, align 8, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  %301 = load ptr, ptr %3, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %301, i32 0, i32 32
  %303 = load i32, ptr %302, align 8, !tbaa !43
  %304 = mul i32 8, %303
  %305 = load ptr, ptr %3, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %305, i32 0, i32 22
  %307 = load i32, ptr %306, align 8, !tbaa !31
  %308 = call i64 @div(i32 noundef %304, i32 noundef %307) #9
  store i64 %308, ptr %16, align 4
  %309 = getelementptr inbounds %struct.div_t, ptr %16, i32 0, i32 0
  %310 = load i32, ptr %309, align 4, !tbaa !39
  %311 = getelementptr inbounds %struct.div_t, ptr %16, i32 0, i32 1
  %312 = load i32, ptr %311, align 4, !tbaa !41
  %313 = icmp ne i32 %312, 0
  %314 = zext i1 %313 to i64
  %315 = select i1 %313, i32 1, i32 0
  %316 = add nsw i32 %310, %315
  %317 = load ptr, ptr %3, align 8, !tbaa !5
  %318 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %317, i32 0, i32 33
  store i32 %316, ptr %318, align 4, !tbaa !42
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  br label %319

319:                                              ; preds = %294, %264
  %320 = load ptr, ptr %3, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %320, i32 0, i32 30
  %322 = load ptr, ptr %321, align 8, !tbaa !44
  %323 = load ptr, ptr %3, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %323, i32 0, i32 32
  %325 = load i32, ptr %324, align 8, !tbaa !43
  %326 = zext i32 %325 to i64
  %327 = mul i64 %326, 1
  %328 = call ptr @realloc(ptr noundef %322, i64 noundef %327) #10
  %329 = load ptr, ptr %3, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %329, i32 0, i32 30
  store ptr %328, ptr %330, align 8, !tbaa !44
  %331 = load ptr, ptr %3, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %331, i32 0, i32 31
  %333 = load ptr, ptr %332, align 8, !tbaa !45
  %334 = load ptr, ptr %3, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %334, i32 0, i32 23
  %336 = load i32, ptr %335, align 4, !tbaa !33
  %337 = zext i32 %336 to i64
  %338 = mul i64 %337, 1
  %339 = call ptr @realloc(ptr noundef %333, i64 noundef %338) #10
  %340 = load ptr, ptr %3, align 8, !tbaa !5
  %341 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %340, i32 0, i32 31
  store ptr %339, ptr %341, align 8, !tbaa !45
  %342 = load ptr, ptr %3, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %342, i32 0, i32 35
  %344 = load ptr, ptr %343, align 8, !tbaa !46
  %345 = load ptr, ptr %3, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %345, i32 0, i32 33
  %347 = load i32, ptr %346, align 4, !tbaa !42
  %348 = zext i32 %347 to i64
  %349 = mul i64 %348, 8
  %350 = call ptr @realloc(ptr noundef %344, i64 noundef %349) #10
  %351 = load ptr, ptr %3, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.ofdmflexframesync_s, ptr %351, i32 0, i32 35
  store ptr %350, ptr %352, align 8, !tbaa !46
  store i32 0, ptr %2, align 4
  store i32 1, ptr %7, align 4
  br label %353

353:                                              ; preds = %319, %199, %194, %189
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  br label %354

354:                                              ; preds = %353, %153
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  br label %355

355:                                              ; preds = %354, %116
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #7
  br label %356

356:                                              ; preds = %355, %101
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #7
  %357 = load i32, ptr %2, align 4
  ret i32 %357
}

declare void @unscramble_data_soft(ptr noundef, i32 noundef) #2

declare i32 @packetizer_decode_soft(ptr noundef, ptr noundef, ptr noundef) #2

declare i32 @liquid_repack_bytes(ptr noundef, i32 noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef) #2

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #6

declare void @unscramble_data(ptr noundef, i32 noundef) #2

declare i32 @packetizer_decode(ptr noundef, ptr noundef, ptr noundef) #2

declare ptr @modemcf_recreate(ptr noundef, i32 noundef) #2

declare ptr @packetizer_recreate(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree 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 allocsize(1) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind willreturn memory(none) "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 #5 = { 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 #6 = { noreturn nounwind "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 #7 = { nounwind }
attributes #8 = { noreturn nounwind }
attributes #9 = { nounwind willreturn memory(none) }
attributes #10 = { nounwind allocsize(1) }

!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, !11, i64 104}
!10 = !{!"ofdmflexframesync_s", !11, i64 0, !11, i64 4, !11, i64 8, !6, i64 16, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !11, i64 88, !11, i64 92, !11, i64 96, !11, i64 100, !11, i64 104, !12, i64 108, !11, i64 124, !11, i64 128, !11, i64 132, !11, i64 136, !11, i64 140, !11, i64 144, !11, i64 148, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !11, i64 184, !11, i64 188, !11, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !13, i64 224, !15, i64 272, !14, i64 296, !6, i64 304, !11, i64 312, !11, i64 316, !11, i64 320, !11, i64 324, !11, i64 328}
!11 = !{!"int", !7, i64 0}
!12 = !{!"", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12}
!13 = !{!"", !14, i64 0, !14, i64 4, !14, i64 8, !6, i64 16, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44}
!14 = !{!"float", !7, i64 0}
!15 = !{!"", !11, i64 0, !11, i64 4, !11, i64 8, !16, i64 16}
!16 = !{!"long", !7, i64 0}
!17 = !{!11, !11, i64 0}
!18 = !{!10, !11, i64 44}
!19 = !{!10, !6, i64 72}
!20 = !{!10, !6, i64 80}
!21 = !{!10, !11, i64 96}
!22 = !{!10, !6, i64 56}
!23 = !{!10, !6, i64 64}
!24 = !{!10, !11, i64 120}
!25 = !{!26, !11, i64 20}
!26 = !{!"modulation_type_s", !6, i64 0, !6, i64 8, !11, i64 16, !11, i64 20}
!27 = !{!10, !11, i64 100}
!28 = !{!10, !11, i64 88}
!29 = !{!7, !7, i64 0}
!30 = !{!10, !11, i64 124}
!31 = !{!10, !11, i64 128}
!32 = !{!10, !6, i64 160}
!33 = !{!10, !11, i64 132}
!34 = !{!10, !11, i64 136}
!35 = !{!10, !11, i64 140}
!36 = !{!10, !11, i64 144}
!37 = !{!10, !6, i64 152}
!38 = !{!10, !11, i64 148}
!39 = !{!40, !11, i64 0}
!40 = !{!"", !11, i64 0, !11, i64 4}
!41 = !{!40, !11, i64 4}
!42 = !{!10, !11, i64 188}
!43 = !{!10, !11, i64 184}
!44 = !{!10, !6, i64 168}
!45 = !{!10, !6, i64 176}
!46 = !{!10, !6, i64 200}


; 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.modulation_type_s = type { ptr, ptr, i32, i32 }

@.str = external hidden unnamed_addr constant [90 x i8], align 1
@modulation_types = external local_unnamed_addr constant [53 x %struct.modulation_type_s], align 16
@.str.16 = external hidden unnamed_addr constant [32 x i8], align 1
@__PRETTY_FUNCTION__.ofdmflexframesync_decode_header = external hidden unnamed_addr constant [55 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [73 x i8], align 1

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #1

declare i32 @packetizer_get_enc_msg_len(ptr noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite)
declare noalias noundef ptr @realloc(ptr allocptr nocapture noundef, i64 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(none)
declare i64 @div(i32 noundef, i32 noundef) local_unnamed_addr #4

declare i32 @liquid_error_fl(i32 noundef, ptr noundef, i32 noundef, ptr noundef, ...) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
define dso_local i32 @ofdmflexframesync_decode_header(ptr nocapture noundef %0) local_unnamed_addr #5 {
  %2 = alloca i32, align 4
  %3 = getelementptr inbounds i8, ptr %0, i64 104
  store i32 0, ptr %3, align 8, !tbaa !5
  %4 = getelementptr inbounds i8, ptr %0, i64 44
  %5 = load i32, ptr %4, align 4, !tbaa !16
  %.not = icmp eq i32 %5, 0
  br i1 %.not, label %23, label %6

6:                                                ; preds = %1
  %7 = getelementptr inbounds i8, ptr %0, i64 72
  %8 = load ptr, ptr %7, align 8, !tbaa !17
  %9 = getelementptr inbounds i8, ptr %0, i64 80
  %10 = load ptr, ptr %9, align 8, !tbaa !18
  %11 = getelementptr inbounds i8, ptr %0, i64 96
  %12 = load i32, ptr %11, align 8, !tbaa !19
  %13 = zext i32 %12 to i64
  tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %8, ptr align 1 %10, i64 %13, i1 false)
  %14 = load ptr, ptr %7, align 8, !tbaa !17
  %15 = load i32, ptr %11, align 8, !tbaa !19
  %16 = lshr i32 %15, 3
  tail call void @unscramble_data_soft(ptr noundef %14, i32 noundef %16) #7
  %17 = getelementptr inbounds i8, ptr %0, i64 56
  %18 = load ptr, ptr %17, align 8, !tbaa !20
  %19 = load ptr, ptr %7, align 8, !tbaa !17
  %20 = getelementptr inbounds i8, ptr %0, i64 64
  %21 = load ptr, ptr %20, align 8, !tbaa !21
  %22 = tail call i32 @packetizer_decode_soft(ptr noundef %18, ptr noundef %19, ptr noundef %21) #7
  br label %50

23:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #7
  %24 = getelementptr inbounds i8, ptr %0, i64 120
  %25 = load i32, ptr %24, align 4, !tbaa !22
  %26 = zext i32 %25 to i64
  %27 = getelementptr inbounds [53 x %struct.modulation_type_s], ptr @modulation_types, i64 0, i64 %26, i32 3
  %28 = load i32, ptr %27, align 4, !tbaa !23
  %29 = getelementptr inbounds i8, ptr %0, i64 80
  %30 = load ptr, ptr %29, align 8, !tbaa !18
  %31 = getelementptr inbounds i8, ptr %0, i64 100
  %32 = load i32, ptr %31, align 4, !tbaa !25
  %33 = getelementptr inbounds i8, ptr %0, i64 72
  %34 = load ptr, ptr %33, align 8, !tbaa !17
  %35 = getelementptr inbounds i8, ptr %0, i64 96
  %36 = load i32, ptr %35, align 8, !tbaa !19
  %37 = call i32 @liquid_repack_bytes(ptr noundef %30, i32 noundef %28, i32 noundef %32, ptr noundef %34, i32 noundef 8, i32 noundef %36, ptr noundef nonnull %2) #7
  %38 = load i32, ptr %2, align 4, !tbaa !26
  %39 = load i32, ptr %35, align 8, !tbaa !19
  %40 = icmp eq i32 %38, %39
  br i1 %40, label %42, label %41

41:                                               ; preds = %23
  call void @__assert_fail(ptr noundef nonnull @.str.16, ptr noundef nonnull @.str, i32 noundef 577, ptr noundef nonnull @__PRETTY_FUNCTION__.ofdmflexframesync_decode_header) #8
  unreachable

42:                                               ; preds = %23
  %43 = load ptr, ptr %33, align 8, !tbaa !17
  call void @unscramble_data(ptr noundef %43, i32 noundef %38) #7
  %44 = getelementptr inbounds i8, ptr %0, i64 56
  %45 = load ptr, ptr %44, align 8, !tbaa !20
  %46 = load ptr, ptr %33, align 8, !tbaa !17
  %47 = getelementptr inbounds i8, ptr %0, i64 64
  %48 = load ptr, ptr %47, align 8, !tbaa !21
  %49 = call i32 @packetizer_decode(ptr noundef %45, ptr noundef %46, ptr noundef %48) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #7
  br label %50

50:                                               ; preds = %42, %6
  %.092 = phi i32 [ %22, %6 ], [ %49, %42 ]
  %.not98 = icmp eq i32 %.092, 0
  br i1 %.not98, label %153, label %51

51:                                               ; preds = %50
  %52 = getelementptr inbounds i8, ptr %0, i64 88
  %53 = load i32, ptr %52, align 8, !tbaa !27
  %54 = getelementptr inbounds i8, ptr %0, i64 64
  %55 = load ptr, ptr %54, align 8, !tbaa !21
  %56 = zext i32 %53 to i64
  %57 = getelementptr inbounds i8, ptr %55, i64 %56
  %58 = load i8, ptr %57, align 1, !tbaa !28
  %.not99 = icmp eq i8 %58, 105
  br i1 %.not99, label %61, label %59

59:                                               ; preds = %51
  %60 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 610, ptr noundef nonnull @.str.17) #7
  br label %153

61:                                               ; preds = %51
  %62 = add i32 %53, 1
  %63 = zext i32 %62 to i64
  %64 = getelementptr inbounds i8, ptr %55, i64 %63
  %65 = load i8, ptr %64, align 1, !tbaa !28
  %66 = zext i8 %65 to i32
  %67 = shl nuw nsw i32 %66, 8
  %68 = add i32 %53, 2
  %69 = zext i32 %68 to i64
  %70 = getelementptr inbounds i8, ptr %55, i64 %69
  %71 = load i8, ptr %70, align 1, !tbaa !28
  %72 = zext i8 %71 to i32
  %73 = or disjoint i32 %67, %72
  %74 = add i32 %53, 3
  %75 = zext i32 %74 to i64
  %76 = getelementptr inbounds i8, ptr %55, i64 %75
  %77 = load i8, ptr %76, align 1, !tbaa !28
  %78 = zext i8 %77 to i32
  %79 = add i8 %77, -53
  %or.cond = icmp ult i8 %79, -52
  br i1 %or.cond, label %80, label %82

80:                                               ; preds = %61
  %81 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 618, ptr noundef nonnull @.str.18) #7
  br label %153

82:                                               ; preds = %61
  %83 = add i32 %53, 4
  %84 = zext i32 %83 to i64
  %85 = getelementptr inbounds i8, ptr %55, i64 %84
  %86 = load i8, ptr %85, align 1, !tbaa !28
  %87 = zext i8 %86 to i32
  %88 = lshr i32 %87, 5
  %89 = and i32 %87, 31
  %90 = add i32 %53, 5
  %91 = zext i32 %90 to i64
  %92 = getelementptr inbounds i8, ptr %55, i64 %91
  %93 = load i8, ptr %92, align 1, !tbaa !28
  %94 = and i8 %93, 31
  %95 = zext nneg i8 %94 to i32
  %96 = icmp eq i32 %88, 7
  br i1 %96, label %97, label %99

97:                                               ; preds = %82
  %98 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 630, ptr noundef nonnull @.str.19) #7
  br label %153

99:                                               ; preds = %82
  %100 = icmp ugt i32 %89, 27
  br i1 %100, label %101, label %103

101:                                              ; preds = %99
  %102 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 632, ptr noundef nonnull @.str.20) #7
  br label %153

103:                                              ; preds = %99
  %104 = icmp ugt i8 %94, 27
  br i1 %104, label %105, label %107

105:                                              ; preds = %103
  %106 = call i32 (i32, ptr, i32, ptr, ...) @liquid_error_fl(i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 634, ptr noundef nonnull @.str.21) #7
  br label %153

107:                                              ; preds = %103
  store i32 1, ptr %3, align 8, !tbaa !5
  %108 = getelementptr inbounds i8, ptr %0, i64 124
  %109 = load i32, ptr %108, align 4, !tbaa !29
  %.not100 = icmp eq i32 %109, %78
  br i1 %.not100, label %118, label %110

110:                                              ; preds = %107
  store i32 %78, ptr %108, align 4, !tbaa !29
  %111 = zext nneg i8 %77 to i64
  %112 = getelementptr inbounds [53 x %struct.modulation_type_s], ptr @modulation_types, i64 0, i64 %111, i32 3
  %113 = load i32, ptr %112, align 4, !tbaa !23
  %114 = getelementptr inbounds i8, ptr %0, i64 128
  store i32 %113, ptr %114, align 8, !tbaa !30
  %115 = getelementptr inbounds i8, ptr %0, i64 160
  %116 = load ptr, ptr %115, align 8, !tbaa !31
  %117 = call ptr @modemcf_recreate(ptr noundef %116, i32 noundef %78) #7
  store ptr %117, ptr %115, align 8, !tbaa !31
  br label %118

118:                                              ; preds = %110, %107
  %119 = getelementptr inbounds i8, ptr %0, i64 132
  store i32 %73, ptr %119, align 4, !tbaa !32
  %120 = getelementptr inbounds i8, ptr %0, i64 136
  store i32 %88, ptr %120, align 8, !tbaa !33
  %121 = getelementptr inbounds i8, ptr %0, i64 140
  store i32 %89, ptr %121, align 4, !tbaa !34
  %122 = getelementptr inbounds i8, ptr %0, i64 144
  store i32 %95, ptr %122, align 8, !tbaa !35
  %123 = getelementptr inbounds i8, ptr %0, i64 152
  %124 = load ptr, ptr %123, align 8, !tbaa !36
  %125 = call ptr @packetizer_recreate(ptr noundef %124, i32 noundef %73, i32 noundef %88, i32 noundef %89, i32 noundef %95) #7
  store ptr %125, ptr %123, align 8, !tbaa !36
  %126 = getelementptr inbounds i8, ptr %0, i64 148
  %127 = load i32, ptr %126, align 4, !tbaa !37
  %.not101 = icmp eq i32 %127, 0
  %128 = call i32 @packetizer_get_enc_msg_len(ptr noundef %125) #7
  %129 = shl i32 %128, 3
  %130 = getelementptr inbounds i8, ptr %0, i64 128
  %131 = load i32, ptr %130, align 8, !tbaa !30
  %132 = call i64 @div(i32 noundef %129, i32 noundef %131) #9
  %.sroa.0.0.extract.trunc = trunc i64 %132 to i32
  %.not102 = icmp ugt i64 %132, 4294967295
  %133 = zext i1 %.not102 to i32
  %134 = add nsw i32 %133, %.sroa.0.0.extract.trunc
  %135 = mul i32 %134, %131
  %.sink104 = select i1 %.not101, i32 %128, i32 %135
  %136 = getelementptr inbounds i8, ptr %0, i64 184
  store i32 %.sink104, ptr %136, align 8
  %137 = getelementptr inbounds i8, ptr %0, i64 188
  store i32 %134, ptr %137, align 4
  %138 = getelementptr inbounds i8, ptr %0, i64 168
  %139 = load ptr, ptr %138, align 8, !tbaa !38
  %140 = zext i32 %.sink104 to i64
  %141 = call ptr @realloc(ptr noundef %139, i64 noundef %140) #10
  store ptr %141, ptr %138, align 8, !tbaa !38
  %142 = getelementptr inbounds i8, ptr %0, i64 176
  %143 = load ptr, ptr %142, align 8, !tbaa !39
  %144 = load i32, ptr %119, align 4, !tbaa !32
  %145 = zext i32 %144 to i64
  %146 = call ptr @realloc(ptr noundef %143, i64 noundef %145) #10
  store ptr %146, ptr %142, align 8, !tbaa !39
  %147 = getelementptr inbounds i8, ptr %0, i64 200
  %148 = load ptr, ptr %147, align 8, !tbaa !40
  %149 = load i32, ptr %137, align 4, !tbaa !41
  %150 = zext i32 %149 to i64
  %151 = shl nuw nsw i64 %150, 3
  %152 = call ptr @realloc(ptr noundef %148, i64 noundef %151) #10
  store ptr %152, ptr %147, align 8, !tbaa !40
  br label %153

153:                                              ; preds = %59, %97, %101, %105, %118, %80, %50
  %.3 = phi i32 [ 0, %50 ], [ %60, %59 ], [ %81, %80 ], [ %98, %97 ], [ %102, %101 ], [ %106, %105 ], [ 0, %118 ]
  ret i32 %.3
}

declare void @unscramble_data_soft(ptr noundef, i32 noundef) local_unnamed_addr #2

declare i32 @packetizer_decode_soft(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @liquid_repack_bytes(ptr noundef, i32 noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #6

declare void @unscramble_data(ptr noundef, i32 noundef) local_unnamed_addr #2

declare i32 @packetizer_decode(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare ptr @modemcf_recreate(ptr noundef, i32 noundef) local_unnamed_addr #2

declare ptr @packetizer_recreate(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nocallback nofree 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 = { mustprogress nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "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 #4 = { mustprogress nofree nosync nounwind willreturn memory(none) "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 #5 = { 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 #6 = { noreturn nounwind "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 #7 = { nounwind }
attributes #8 = { noreturn nounwind }
attributes #9 = { nounwind willreturn memory(none) }
attributes #10 = { nounwind allocsize(1) }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 104}
!6 = !{!"ofdmflexframesync_s", !7, i64 0, !7, i64 4, !7, i64 8, !10, i64 16, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !11, i64 108, !7, i64 124, !7, i64 128, !7, i64 132, !7, i64 136, !7, i64 140, !7, i64 144, !7, i64 148, !10, i64 152, !10, i64 160, !10, i64 168, !10, i64 176, !7, i64 184, !7, i64 188, !7, i64 192, !10, i64 200, !10, i64 208, !10, i64 216, !12, i64 224, !14, i64 272, !13, i64 296, !10, i64 304, !7, i64 312, !7, i64 316, !7, i64 320, !7, i64 324, !7, i64 328}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!"", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12}
!12 = !{!"", !13, i64 0, !13, i64 4, !13, i64 8, !10, i64 16, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44}
!13 = !{!"float", !8, i64 0}
!14 = !{!"", !7, i64 0, !7, i64 4, !7, i64 8, !15, i64 16}
!15 = !{!"long", !8, i64 0}
!16 = !{!6, !7, i64 44}
!17 = !{!6, !10, i64 72}
!18 = !{!6, !10, i64 80}
!19 = !{!6, !7, i64 96}
!20 = !{!6, !10, i64 56}
!21 = !{!6, !10, i64 64}
!22 = !{!6, !7, i64 120}
!23 = !{!24, !7, i64 20}
!24 = !{!"modulation_type_s", !10, i64 0, !10, i64 8, !7, i64 16, !7, i64 20}
!25 = !{!6, !7, i64 100}
!26 = !{!7, !7, i64 0}
!27 = !{!6, !7, i64 88}
!28 = !{!8, !8, i64 0}
!29 = !{!6, !7, i64 124}
!30 = !{!6, !7, i64 128}
!31 = !{!6, !10, i64 160}
!32 = !{!6, !7, i64 132}
!33 = !{!6, !7, i64 136}
!34 = !{!6, !7, i64 140}
!35 = !{!6, !7, i64 144}
!36 = !{!6, !10, i64 152}
!37 = !{!6, !7, i64 148}
!38 = !{!6, !10, i64 168}
!39 = !{!6, !10, i64 176}
!40 = !{!6, !10, i64 200}
!41 = !{!6, !7, i64 188}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,MergedLoadStoreMotionPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass