; LLVM IR from CerebusOSS/CereLink :: cbhwlib/CCFUtils.ll (ZN8CCFUtils7ReadCCFEPKcb)

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

%class.CCFUtils = type <{ ptr, ptr, i8, [7 x i8], ptr, i8, [7 x i8], ptr, i32, i32, i32, [4 x i8], ptr, i8, i8, [6 x i8] }>
%struct.cbCFGBUFF = type <{ i32, i32, %struct.cbOPTIONTABLE, %struct.cbCOLORTABLE, %struct.cbPKT_SYSINFO, [3 x %struct.cbPKT_PROCINFO], [3 x [22 x %struct.cbPKT_BANKINFO]], [3 x [8 x %struct.cbPKT_GROUPINFO]], [3 x [32 x %struct.cbPKT_FILTINFO]], [3 x %struct.cbPKT_ADAPTFILTINFO], [3 x %struct.cbPKT_REFELECFILTINFO], [596 x %struct.cbPKT_CHANINFO], %struct.cbSPIKE_SORTING, [280 x %struct.cbPKT_NTRODEINFO], [18 x [5 x %struct.cbPKT_AOUT_WAVEFORM]], [3 x %struct.cbPKT_LNC], %struct.cbPKT_NPLAY, [1 x %struct.cbVIDEOSOURCE], [20 x %struct.cbTRACKOBJ], %struct.cbPKT_FILECFG, ptr }>
%struct.cbOPTIONTABLE = type { float, [31 x i32] }
%struct.cbCOLORTABLE = type { [48 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, [16 x i32], i32, [3 x i32], [5 x i32], [14 x i32] }
%struct.cbPKT_SYSINFO = type { %struct.cbPKT_HEADER, i32, i32, i32, i32, i32, i32 }
%struct.cbPKT_HEADER = type { i64, i16, i16, i16, i8, i8 }
%struct.cbPKT_PROCINFO = type { %struct.cbPKT_HEADER, i32, i32, [64 x i8], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.cbPKT_BANKINFO = type <{ %struct.cbPKT_HEADER, i32, i32, i32, [64 x i8], [16 x i8], i32, i32 }>
%struct.cbPKT_GROUPINFO = type { %struct.cbPKT_HEADER, i32, i32, [16 x i8], i32, i32, [560 x i16] }
%struct.cbPKT_FILTINFO = type { %struct.cbPKT_HEADER, i32, i32, [16 x i8], i32, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, double, double }
%struct.cbPKT_ADAPTFILTINFO = type <{ %struct.cbPKT_HEADER, i32, i32, float, i32, i32 }>
%struct.cbPKT_REFELECFILTINFO = type <{ %struct.cbPKT_HEADER, i32, i32, i32 }>
%struct.cbPKT_CHANINFO = type { %struct.cbPKT_HEADER, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.cbSCALING, %struct.cbFILTDESC, %struct.cbSCALING, %struct.cbFILTDESC, [16 x i8], i32, [4 x i32], %struct.cbSCALING, %struct.cbSCALING, i32, i32, i32, i32, %union.anon, i8, [2 x i8], i8, i16, i16, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i16, i16, i32, [5 x %struct.cbMANUALUNITMAPPING], [5 x [4 x %struct.cbHOOP]] }
%struct.cbFILTDESC = type { [16 x i8], i32, i32, i32, i32, i32, i32 }
%struct.cbSCALING = type { i16, i16, i32, i32, i32, [8 x i8] }
%union.anon = type { %struct.anon }
%struct.anon = type { i16, i16, i32 }
%struct.cbMANUALUNITMAPPING = type { i16, [3 x i16], [3 x [3 x i16]], i16, i32 }
%struct.cbHOOP = type { i16, i16, i16, i16 }
%struct.cbSPIKE_SORTING = type { [596 x %struct.cbPKT_FS_BASIS], [596 x [7 x %struct.cbPKT_SS_MODELSET]], %struct.cbPKT_SS_DETECT, %struct.cbPKT_SS_ARTIF_REJECT, [596 x %struct.cbPKT_SS_NOISE_BOUNDARY], %struct.cbPKT_SS_STATISTICS, %struct.cbPKT_SS_STATUS }
%struct.cbPKT_FS_BASIS = type <{ %struct.cbPKT_HEADER, i32, i32, i32, [128 x [3 x float]] }>
%struct.cbPKT_SS_MODELSET = type <{ %struct.cbPKT_HEADER, i32, i32, i32, i32, i32, [2 x float], [2 x [2 x float]], float, [2 x [2 x float]], float, float, float, float, float }>
%struct.cbPKT_SS_DETECT = type { %struct.cbPKT_HEADER, float, float }
%struct.cbPKT_SS_ARTIF_REJECT = type { %struct.cbPKT_HEADER, i32, i32 }
%struct.cbPKT_SS_NOISE_BOUNDARY = type <{ %struct.cbPKT_HEADER, i32, [3 x float], [3 x [3 x float]] }>
%struct.cbPKT_SS_STATISTICS = type { %struct.cbPKT_HEADER, i32, i32, i32, float, float, float, float, float, float, float, i32, i32 }
%struct.cbPKT_SS_STATUS = type { %struct.cbPKT_HEADER, %struct.cbAdaptControl, %struct.cbAdaptControl }
%struct.cbAdaptControl = type { i32, float, float }
%struct.cbPKT_NTRODEINFO = type { %struct.cbPKT_HEADER, i32, [16 x i8], [6 x [5 x %struct.cbMANUALUNITMAPPING]], i16, i16, [4 x i16] }
%struct.cbPKT_AOUT_WAVEFORM = type { %struct.cbPKT_HEADER, i16, i16, i32, i8, i8, i16, i16, i8, i8, %struct.cbWaveformData }
%struct.cbWaveformData = type { i16, %union.anon.1 }
%union.anon.1 = type { %struct.anon.3 }
%struct.anon.3 = type { i16, i16, i16, [246 x i16], [246 x i16] }
%struct.cbPKT_LNC = type <{ %struct.cbPKT_HEADER, i32, i32, i32 }>
%struct.cbPKT_NPLAY = type { %struct.cbPKT_HEADER, %union.anon.4, i64, i64, i64, i16, i16, float, [968 x i8] }
%union.anon.4 = type { i64 }
%struct.cbVIDEOSOURCE = type { [16 x i8], float }
%struct.cbTRACKOBJ = type { [16 x i8], i16, i16 }
%struct.cbPKT_FILECFG = type { %struct.cbPKT_HEADER, i32, i32, i32, i32, [256 x i8], %union.anon.5, [256 x i8] }
%union.anon.5 = type { [256 x i8] }
%class.CCFUtilsXml_v1 = type { %class.CCFUtilsBinary, %struct.cbCCF }
%class.CCFUtilsBinary = type { %class.CCFUtils.base, [2 x i8], %"struct.ccf::ccfBinaryData" }
%class.CCFUtils.base = type <{ ptr, ptr, i8, [7 x i8], ptr, i8, [7 x i8], ptr, i32, i32, i32, [4 x i8], ptr, i8, i8 }>
%"struct.ccf::ccfBinaryData" = type <{ [160 x %struct.cbPKT_CHANINFO], %"struct.ccf::cbPKT_ADAPTFILTINFO_CB2005_37", %"struct.ccf::cbPKT_SS_DETECT_CB2005_37", %"struct.ccf::cbPKT_SS_ARTIF_REJECT_CB2005_37", [144 x %"struct.ccf::cbPKT_SS_NOISE_BOUNDARY_CB2005_37_type"], %"struct.ccf::cbPKT_SS_STATISTICS_CB2005_37_type", %"struct.ccf::cbPKT_SS_STATUS_CB2005_37", %"struct.ccf::cbPKT_SYSINFO_CB2005_37", [72 x %"struct.ccf::cbPKT_NTRODEINFO_CB2005_37"] }>
%"struct.ccf::cbPKT_ADAPTFILTINFO_CB2005_37" = type { i32, i16, i8, i8, i32, i32, float, i32, i32 }
%"struct.ccf::cbPKT_SS_DETECT_CB2005_37" = type { i32, i16, i8, i8, float, float }
%"struct.ccf::cbPKT_SS_ARTIF_REJECT_CB2005_37" = type { i32, i16, i8, i8, i32, i32 }
%"struct.ccf::cbPKT_SS_NOISE_BOUNDARY_CB2005_37_type" = type { i32, i16, i8, i8, i32, [3 x float], [3 x [3 x float]] }
%"struct.ccf::cbPKT_SS_STATISTICS_CB2005_37_type" = type { i32, i16, i8, i8, i32, i32, i32, float, float, float, float, float, float, float, i32, i32 }
%"struct.ccf::cbPKT_SS_STATUS_CB2005_37" = type { i32, i16, i8, i8, %"struct.ccf::cbAdaptControl_37", %"struct.ccf::cbAdaptControl_37" }
%"struct.ccf::cbAdaptControl_37" = type { i32, float, float }
%"struct.ccf::cbPKT_SYSINFO_CB2005_37" = type { i32, i16, i8, i8, i32, i32, i32, i32, i32, i32 }
%"struct.ccf::cbPKT_NTRODEINFO_CB2005_37" = type { i32, i16, i8, i8, i32, [16 x i8], [6 x [5 x %"struct.ccf::cbMANUALUNITMAPPING_37"]], i16, i16, [4 x i16] }
%"struct.ccf::cbMANUALUNITMAPPING_37" = type { i16, [3 x i16], [3 x [3 x i16]], i16, i32 }
%struct.cbCCF = type <{ [596 x %struct.cbPKT_CHANINFO], %struct.cbPKT_ADAPTFILTINFO, %struct.cbPKT_SS_DETECT, %struct.cbPKT_SS_ARTIF_REJECT, [560 x %struct.cbPKT_SS_NOISE_BOUNDARY], %struct.cbPKT_SS_STATISTICS, %struct.cbPKT_SS_STATUS, %struct.cbPKT_SYSINFO, [280 x %struct.cbPKT_NTRODEINFO], [18 x [5 x %struct.cbPKT_AOUT_WAVEFORM]], [4 x %struct.cbPKT_FILTINFO], %struct.cbPKT_LNC }>

@_ZTI14CCFUtilsXml_v1 = external constant ptr
@_ZTI8CCFUtils = external dso_local constant { ptr, ptr }, align 8
@cb_library_index = external global [4 x i32], align 16
@cb_library_initialized = external global [4 x i32], align 16
@cb_cfg_buffer_ptr = external global [4 x ptr], align 16

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #0

declare void @_ZN14CCFUtilsXml_v1C1Ev(ptr noundef nonnull align 8 dereferenceable(1008256)) unnamed_addr #1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #2

; Function Attrs: nounwind willreturn memory(read)
declare ptr @__dynamic_cast(ptr, ptr, ptr, i64) #3

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN8CCFUtils7SendCCFEv(ptr noundef nonnull align 8 dereferenceable(74)) #5 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN8CCFUtils26GetInternalOriginalVersionEv(ptr noundef nonnull align 8 dereferenceable(74)) #7 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN8CCFUtils7ReadCCFEPKcb(ptr noundef nonnull align 8 dereferenceable(74) %0, ptr noundef %1, i1 noundef zeroext %2) unnamed_addr #5 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i8, align 1
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  %14 = zext i1 %2 to i8
  store i8 %14, ptr %7, align 1, !tbaa !9
  %15 = load ptr, ptr %5, align 8
  %16 = load ptr, ptr %6, align 8, !tbaa !5
  %17 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 12
  store ptr %16, ptr %17, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #8
  store i32 0, ptr %8, align 4, !tbaa !14
  %18 = load ptr, ptr %6, align 8, !tbaa !5
  %19 = load ptr, ptr %15, align 8, !tbaa !16
  %20 = getelementptr inbounds ptr, ptr %19, i64 4
  %21 = load ptr, ptr %20, align 8
  %22 = call noundef i32 %21(ptr noundef nonnull align 8 dereferenceable(74) %15, ptr noundef %18)
  store i32 %22, ptr %8, align 4, !tbaa !14
  %23 = load i32, ptr %8, align 4, !tbaa !14
  %24 = icmp ne i32 %23, 0
  br i1 %24, label %25, label %27

25:                                               ; preds = %3
  %26 = load i32, ptr %8, align 4, !tbaa !14
  store i32 %26, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %227

27:                                               ; preds = %3
  %28 = load ptr, ptr %6, align 8, !tbaa !5
  %29 = icmp eq ptr %28, null
  br i1 %29, label %30, label %62

30:                                               ; preds = %27
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #8
  %31 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 10
  %32 = load i32, ptr %31, align 8, !tbaa !18
  %33 = sext i32 %32 to i64
  %34 = getelementptr inbounds [4 x i32], ptr @cb_library_index, i64 0, i64 %33
  %35 = load i32, ptr %34, align 4, !tbaa !19
  store i32 %35, ptr %10, align 4, !tbaa !19
  %36 = load i32, ptr %10, align 4, !tbaa !19
  %37 = zext i32 %36 to i64
  %38 = getelementptr inbounds [4 x i32], ptr @cb_library_initialized, i64 0, i64 %37
  %39 = load i32, ptr %38, align 4, !tbaa !19
  %40 = icmp ne i32 %39, 0
  br i1 %40, label %41, label %58

41:                                               ; preds = %30
  %42 = load i32, ptr %10, align 4, !tbaa !19
  %43 = zext i32 %42 to i64
  %44 = getelementptr inbounds [4 x ptr], ptr @cb_cfg_buffer_ptr, i64 0, i64 %43
  %45 = load ptr, ptr %44, align 8, !tbaa !5
  %46 = icmp eq ptr %45, null
  br i1 %46, label %58, label %47

47:                                               ; preds = %41
  %48 = load i32, ptr %10, align 4, !tbaa !19
  %49 = zext i32 %48 to i64
  %50 = getelementptr inbounds [4 x ptr], ptr @cb_cfg_buffer_ptr, i64 0, i64 %49
  %51 = load ptr, ptr %50, align 8, !tbaa !5
  %52 = getelementptr inbounds %struct.cbCFGBUFF, ptr %51, i32 0, i32 4
  %53 = getelementptr inbounds %struct.cbPKT_SYSINFO, ptr %52, i32 0, i32 0
  %54 = getelementptr inbounds %struct.cbPKT_HEADER, ptr %53, i32 0, i32 1
  %55 = load i16, ptr %54, align 1, !tbaa !20
  %56 = zext i16 %55 to i32
  %57 = icmp eq i32 %56, 0
  br i1 %57, label %58, label %59

58:                                               ; preds = %47, %41, %30
  store i32 -2, ptr %8, align 4, !tbaa !14
  br label %60

59:                                               ; preds = %47
  call void @_ZN8CCFUtils12ReadCCFOfNSPEv(ptr noundef nonnull align 8 dereferenceable(74) %15)
  br label %60

60:                                               ; preds = %59, %58
  %61 = load i32, ptr %8, align 4, !tbaa !14
  store i32 %61, ptr %4, align 4
  store i32 1, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #8
  br label %227

62:                                               ; preds = %27
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  store ptr null, ptr %11, align 8, !tbaa !5
  %63 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 14
  %64 = load i8, ptr %63, align 1, !tbaa !37, !range !38, !noundef !39
  %65 = trunc i8 %64 to i1
  br i1 %65, label %66, label %73

66:                                               ; preds = %62
  %67 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 189696) #9
  invoke void @_ZN14CCFUtilsBinaryC1Ev(ptr noundef nonnull align 8 dereferenceable(189696) %67)
          to label %68 unwind label %69

68:                                               ; preds = %66
  store ptr %67, ptr %11, align 8, !tbaa !5
  br label %86

69:                                               ; preds = %66
  %70 = landingpad { ptr, i32 }
          cleanup
  %71 = extractvalue { ptr, i32 } %70, 0
  store ptr %71, ptr %12, align 8
  %72 = extractvalue { ptr, i32 } %70, 1
  store i32 %72, ptr %13, align 4
  call void @_ZdlPvm(ptr noundef %67, i64 noundef 189696) #10
  br label %226

73:                                               ; preds = %62
  %74 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 1
  %75 = load ptr, ptr %74, align 8, !tbaa !40
  %76 = call noundef i32 @_ZN8CCFUtils26GetInternalOriginalVersionEv(ptr noundef nonnull align 8 dereferenceable(74) %75)
  switch i32 %76, label %84 [
    i32 12, label %77
  ]

77:                                               ; preds = %73
  %78 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 1008256) #9
  invoke void @_ZN14CCFUtilsXml_v1C1Ev(ptr noundef nonnull align 8 dereferenceable(1008256) %78)
          to label %79 unwind label %80

79:                                               ; preds = %77
  store ptr %78, ptr %11, align 8, !tbaa !5
  br label %85

80:                                               ; preds = %77
  %81 = landingpad { ptr, i32 }
          cleanup
  %82 = extractvalue { ptr, i32 } %81, 0
  store ptr %82, ptr %12, align 8
  %83 = extractvalue { ptr, i32 } %81, 1
  store i32 %83, ptr %13, align 4
  call void @_ZdlPvm(ptr noundef %78, i64 noundef 1008256) #10
  br label %226

84:                                               ; preds = %73
  br label %85

85:                                               ; preds = %84, %79
  br label %86

86:                                               ; preds = %85, %68
  %87 = load ptr, ptr %11, align 8, !tbaa !5
  %88 = icmp eq ptr %87, null
  br i1 %88, label %89, label %90

89:                                               ; preds = %86
  store i32 -3, ptr %8, align 4, !tbaa !14
  br label %90

90:                                               ; preds = %89, %86
  %91 = load i32, ptr %8, align 4, !tbaa !14
  %92 = icmp eq i32 %91, 0
  br i1 %92, label %93, label %108

93:                                               ; preds = %90
  %94 = load i8, ptr %7, align 1, !tbaa !9, !range !38, !noundef !39
  %95 = trunc i8 %94 to i1
  br i1 %95, label %108, label %96

96:                                               ; preds = %93
  %97 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 8
  %98 = load i32, ptr %97, align 8, !tbaa !41
  %99 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 9
  %100 = load i32, ptr %99, align 4, !tbaa !42
  %101 = icmp ne i32 %98, %100
  br i1 %101, label %106, label %102

102:                                              ; preds = %96
  %103 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 14
  %104 = load i8, ptr %103, align 1, !tbaa !37, !range !38, !noundef !39
  %105 = trunc i8 %104 to i1
  br i1 %105, label %106, label %107

106:                                              ; preds = %102, %96
  store i32 1, ptr %8, align 4, !tbaa !14
  br label %107

107:                                              ; preds = %106, %102
  br label %108

108:                                              ; preds = %107, %93, %90
  %109 = load i32, ptr %8, align 4, !tbaa !14
  %110 = icmp eq i32 %109, 0
  br i1 %110, label %111, label %213

111:                                              ; preds = %108
  %112 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 5
  %113 = load i8, ptr %112, align 8, !tbaa !43, !range !38, !noundef !39
  %114 = trunc i8 %113 to i1
  br i1 %114, label %115, label %126

115:                                              ; preds = %111
  %116 = load ptr, ptr %6, align 8, !tbaa !5
  %117 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 2
  %118 = load i8, ptr %117, align 8, !tbaa !44, !range !38, !noundef !39
  %119 = trunc i8 %118 to i1
  %120 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 7
  %121 = load ptr, ptr %120, align 8, !tbaa !45
  %122 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 4
  %123 = load ptr, ptr %122, align 8, !tbaa !46
  %124 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 10
  %125 = load i32, ptr %124, align 8, !tbaa !18
  call void @_ZN3ccf10ConReadCCFEPKcbP5cbCCFPFvjNS_10_ccfResultES1_11_cbStateCCFjEj(ptr noundef %116, i1 noundef zeroext %119, ptr noundef %121, ptr noundef %123, i32 noundef %125)
  br label %212

126:                                              ; preds = %111
  %127 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 4
  %128 = load ptr, ptr %127, align 8, !tbaa !46
  %129 = icmp ne ptr %128, null
  br i1 %129, label %130, label %137

130:                                              ; preds = %126
  %131 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 4
  %132 = load ptr, ptr %131, align 8, !tbaa !46
  %133 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 10
  %134 = load i32, ptr %133, align 8, !tbaa !18
  %135 = load i32, ptr %8, align 4, !tbaa !14
  %136 = load ptr, ptr %6, align 8, !tbaa !5
  call void %132(i32 noundef %134, i32 noundef %135, ptr noundef %136, i32 noundef 0, i32 noundef 0)
  br label %137

137:                                              ; preds = %130, %126
  %138 = load ptr, ptr %11, align 8, !tbaa !5
  %139 = load ptr, ptr %6, align 8, !tbaa !5
  %140 = load i8, ptr %7, align 1, !tbaa !9, !range !38, !noundef !39
  %141 = trunc i8 %140 to i1
  %142 = load ptr, ptr %138, align 8, !tbaa !16
  %143 = getelementptr inbounds ptr, ptr %142, i64 2
  %144 = load ptr, ptr %143, align 8
  %145 = call noundef i32 %144(ptr noundef nonnull align 8 dereferenceable(74) %138, ptr noundef %139, i1 noundef zeroext %141)
  store i32 %145, ptr %8, align 4, !tbaa !14
  %146 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 4
  %147 = load ptr, ptr %146, align 8, !tbaa !46
  %148 = icmp ne ptr %147, null
  br i1 %148, label %149, label %156

149:                                              ; preds = %137
  %150 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 4
  %151 = load ptr, ptr %150, align 8, !tbaa !46
  %152 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 10
  %153 = load i32, ptr %152, align 8, !tbaa !18
  %154 = load i32, ptr %8, align 4, !tbaa !14
  %155 = load ptr, ptr %6, align 8, !tbaa !5
  call void %151(i32 noundef %153, i32 noundef %154, ptr noundef %155, i32 noundef 0, i32 noundef 100)
  br label %156

156:                                              ; preds = %149, %137
  %157 = load i32, ptr %8, align 4, !tbaa !14
  %158 = icmp eq i32 %157, 0
  br i1 %158, label %159, label %211

159:                                              ; preds = %156
  %160 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 4
  %161 = load ptr, ptr %160, align 8, !tbaa !46
  %162 = icmp ne ptr %161, null
  br i1 %162, label %163, label %170

163:                                              ; preds = %159
  %164 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 4
  %165 = load ptr, ptr %164, align 8, !tbaa !46
  %166 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 10
  %167 = load i32, ptr %166, align 8, !tbaa !18
  %168 = load i32, ptr %8, align 4, !tbaa !14
  %169 = load ptr, ptr %6, align 8, !tbaa !5
  call void %165(i32 noundef %167, i32 noundef %168, ptr noundef %169, i32 noundef 3, i32 noundef 0)
  br label %170

170:                                              ; preds = %163, %159
  %171 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 1
  %172 = load ptr, ptr %171, align 8, !tbaa !40
  %173 = load ptr, ptr %11, align 8, !tbaa !5
  %174 = load ptr, ptr %172, align 8, !tbaa !16
  %175 = getelementptr inbounds ptr, ptr %174, i64 5
  %176 = load ptr, ptr %175, align 8
  %177 = call noundef ptr %176(ptr noundef nonnull align 8 dereferenceable(74) %172, ptr noundef %173)
  %178 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 4
  %179 = load ptr, ptr %178, align 8, !tbaa !46
  %180 = icmp ne ptr %179, null
  br i1 %180, label %181, label %188

181:                                              ; preds = %170
  %182 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 4
  %183 = load ptr, ptr %182, align 8, !tbaa !46
  %184 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 10
  %185 = load i32, ptr %184, align 8, !tbaa !18
  %186 = load i32, ptr %8, align 4, !tbaa !14
  %187 = load ptr, ptr %6, align 8, !tbaa !5
  call void %183(i32 noundef %185, i32 noundef %186, ptr noundef %187, i32 noundef 3, i32 noundef 100)
  br label %188

188:                                              ; preds = %181, %170
  %189 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 7
  %190 = load ptr, ptr %189, align 8, !tbaa !45
  %191 = icmp ne ptr %190, null
  br i1 %191, label %192, label %204

192:                                              ; preds = %188
  %193 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 1
  %194 = load ptr, ptr %193, align 8, !tbaa !40
  %195 = icmp eq ptr %194, null
  br i1 %195, label %198, label %196

196:                                              ; preds = %192
  %197 = call ptr @__dynamic_cast(ptr %194, ptr @_ZTI8CCFUtils, ptr @_ZTI14CCFUtilsXml_v1, i64 0) #8
  br label %199

198:                                              ; preds = %192
  br label %199

199:                                              ; preds = %198, %196
  %200 = phi ptr [ %197, %196 ], [ null, %198 ]
  %201 = getelementptr inbounds %class.CCFUtilsXml_v1, ptr %200, i32 0, i32 1
  %202 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 7
  %203 = load ptr, ptr %202, align 8, !tbaa !45
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %203, ptr align 8 %201, i64 818560, i1 false), !tbaa.struct !47
  br label %204

204:                                              ; preds = %199, %188
  %205 = getelementptr inbounds %class.CCFUtils, ptr %15, i32 0, i32 2
  %206 = load i8, ptr %205, align 8, !tbaa !44, !range !38, !noundef !39
  %207 = trunc i8 %206 to i1
  br i1 %207, label %208, label %210

208:                                              ; preds = %204
  %209 = call noundef i32 @_ZN8CCFUtils7SendCCFEv(ptr noundef nonnull align 8 dereferenceable(74) %15)
  store i32 %209, ptr %8, align 4, !tbaa !14
  br label %210

210:                                              ; preds = %208, %204
  br label %211

211:                                              ; preds = %210, %156
  br label %212

212:                                              ; preds = %211, %115
  br label %213

213:                                              ; preds = %212, %108
  %214 = load ptr, ptr %11, align 8, !tbaa !5
  %215 = icmp ne ptr %214, null
  br i1 %215, label %216, label %224

216:                                              ; preds = %213
  %217 = load ptr, ptr %11, align 8, !tbaa !5
  %218 = icmp eq ptr %217, null
  br i1 %218, label %223, label %219

219:                                              ; preds = %216
  %220 = load ptr, ptr %217, align 8, !tbaa !16
  %221 = getelementptr inbounds ptr, ptr %220, i64 1
  %222 = load ptr, ptr %221, align 8
  call void %222(ptr noundef nonnull align 8 dereferenceable(74) %217) #8
  br label %223

223:                                              ; preds = %219, %216
  br label %224

224:                                              ; preds = %223, %213
  %225 = load i32, ptr %8, align 4, !tbaa !14
  store i32 %225, ptr %4, align 4
  store i32 1, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  br label %227

226:                                              ; preds = %80, %69
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #8
  br label %229

227:                                              ; preds = %224, %60, %25
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #8
  %228 = load i32, ptr %4, align 4
  ret i32 %228

229:                                              ; preds = %226
  %230 = load ptr, ptr %12, align 8
  %231 = load i32, ptr %13, align 4
  %232 = insertvalue { ptr, i32 } poison, ptr %230, 0
  %233 = insertvalue { ptr, i32 } %232, i32 %231, 1
  resume { ptr, i32 } %233
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8CCFUtils12ReadCCFOfNSPEv(ptr noundef nonnull align 8 dereferenceable(74)) #5 align 2

declare void @_ZN14CCFUtilsBinaryC1Ev(ptr noundef nonnull align 8 dereferenceable(189696)) unnamed_addr #1

declare void @_ZN3ccf10ConReadCCFEPKcbP5cbCCFPFvjNS_10_ccfResultES1_11_cbStateCCFjEj(ptr noundef, i1 noundef zeroext, ptr noundef, ptr noundef, i32 noundef) #1

attributes #0 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nobuiltin 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 #3 = { nounwind willreturn memory(read) }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { mustprogress 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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { mustprogress 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 #8 = { nounwind }
attributes #9 = { builtin allocsize(0) }
attributes #10 = { builtin 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++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !6, i64 64}
!12 = !{!"_ZTS8CCFUtils", !6, i64 8, !10, i64 16, !6, i64 24, !10, i64 32, !6, i64 40, !13, i64 48, !13, i64 52, !13, i64 56, !6, i64 64, !10, i64 72, !10, i64 73}
!13 = !{!"int", !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"_ZTSN3ccf10_ccfResultE", !7, i64 0}
!16 = !{!17, !17, i64 0}
!17 = !{!"vtable pointer", !8, i64 0}
!18 = !{!12, !13, i64 56}
!19 = !{!13, !13, i64 0}
!20 = !{!21, !28, i64 528}
!21 = !{!"_ZTS9cbCFGBUFF", !13, i64 0, !13, i64 4, !22, i64 8, !24, i64 136, !25, i64 520, !7, i64 560, !7, i64 944, !7, i64 8600, !7, i64 36632, !7, i64 49688, !7, i64 49796, !7, i64 49880, !29, i64 455160, !7, i64 1845184, !7, i64 2127424, !7, i64 2219584, !35, i64 2219668, !7, i64 2220692, !7, i64 2220712, !36, i64 2221112, !6, i64 2221912}
!22 = !{!"_ZTS13cbOPTIONTABLE", !23, i64 0, !7, i64 4}
!23 = !{!"float", !7, i64 0}
!24 = !{!"_ZTS12cbCOLORTABLE", !7, i64 0, !13, i64 192, !13, i64 196, !13, i64 200, !13, i64 204, !13, i64 208, !13, i64 212, !13, i64 216, !13, i64 220, !13, i64 224, !7, i64 228, !13, i64 292, !7, i64 296, !7, i64 308, !7, i64 328}
!25 = !{!"_ZTS13cbPKT_SYSINFO", !26, i64 0, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32, !13, i64 36}
!26 = !{!"_ZTS12cbPKT_HEADER", !27, i64 0, !28, i64 8, !28, i64 10, !28, i64 12, !7, i64 14, !7, i64 15}
!27 = !{!"long", !7, i64 0}
!28 = !{!"short", !7, i64 0}
!29 = !{!"_ZTS15cbSPIKE_SORTING", !7, i64 0, !7, i64 932144, !30, i64 1349344, !31, i64 1349368, !7, i64 1349392, !32, i64 1389920, !33, i64 1389984}
!30 = !{!"_ZTS15cbPKT_SS_DETECT", !26, i64 0, !23, i64 16, !23, i64 20}
!31 = !{!"_ZTS21cbPKT_SS_ARTIF_REJECT", !26, i64 0, !13, i64 16, !13, i64 20}
!32 = !{!"_ZTS19cbPKT_SS_STATISTICS", !26, i64 0, !13, i64 16, !13, i64 20, !13, i64 24, !23, i64 28, !23, i64 32, !23, i64 36, !23, i64 40, !23, i64 44, !23, i64 48, !23, i64 52, !13, i64 56, !13, i64 60}
!33 = !{!"_ZTS15cbPKT_SS_STATUS", !26, i64 0, !34, i64 16, !34, i64 28}
!34 = !{!"_ZTS14cbAdaptControl", !13, i64 0, !23, i64 4, !23, i64 8}
!35 = !{!"_ZTS11cbPKT_NPLAY", !26, i64 0, !7, i64 16, !27, i64 24, !27, i64 32, !27, i64 40, !28, i64 48, !28, i64 50, !23, i64 52, !7, i64 56}
!36 = !{!"_ZTS13cbPKT_FILECFG", !26, i64 0, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !7, i64 32, !7, i64 288, !7, i64 544}
!37 = !{!12, !10, i64 73}
!38 = !{i8 0, i8 2}
!39 = !{}
!40 = !{!12, !6, i64 8}
!41 = !{!12, !13, i64 48}
!42 = !{!12, !13, i64 52}
!43 = !{!12, !10, i64 32}
!44 = !{!12, !10, i64 16}
!45 = !{!12, !6, i64 40}
!46 = !{!12, !6, i64 24}
!47 = !{i64 0, i64 405280, !48, i64 405280, i64 8, !49, i64 405288, i64 2, !50, i64 405290, i64 2, !50, i64 405292, i64 2, !50, i64 405294, i64 1, !48, i64 405295, i64 1, !48, i64 405296, i64 4, !19, i64 405300, i64 4, !19, i64 405304, i64 4, !51, i64 405308, i64 4, !19, i64 405312, i64 4, !19, i64 405316, i64 8, !49, i64 405324, i64 2, !50, i64 405326, i64 2, !50, i64 405328, i64 2, !50, i64 405330, i64 1, !48, i64 405331, i64 1, !48, i64 405332, i64 4, !51, i64 405336, i64 4, !51, i64 405340, i64 8, !49, i64 405348, i64 2, !50, i64 405350, i64 2, !50, i64 405352, i64 2, !50, i64 405354, i64 1, !48, i64 405355, i64 1, !48, i64 405356, i64 4, !19, i64 405360, i64 4, !19, i64 405364, i64 38080, !48, i64 443444, i64 8, !49, i64 443452, i64 2, !50, i64 443454, i64 2, !50, i64 443456, i64 2, !50, i64 443458, i64 1, !48, i64 443459, i64 1, !48, i64 443460, i64 4, !19, i64 443464, i64 4, !19, i64 443468, i64 4, !19, i64 443472, i64 4, !51, i64 443476, i64 4, !51, i64 443480, i64 4, !51, i64 443484, i64 4, !51, i64 443488, i64 4, !51, i64 443492, i64 4, !51, i64 443496, i64 4, !51, i64 443500, i64 4, !19, i64 443504, i64 4, !19, i64 443508, i64 8, !49, i64 443516, i64 2, !50, i64 443518, i64 2, !50, i64 443520, i64 2, !50, i64 443522, i64 1, !48, i64 443523, i64 1, !48, i64 443524, i64 4, !19, i64 443528, i64 4, !51, i64 443532, i64 4, !51, i64 443536, i64 4, !19, i64 443540, i64 4, !51, i64 443544, i64 4, !51, i64 443548, i64 8, !49, i64 443556, i64 2, !50, i64 443558, i64 2, !50, i64 443560, i64 2, !50, i64 443562, i64 1, !48, i64 443563, i64 1, !48, i64 443564, i64 4, !19, i64 443568, i64 4, !19, i64 443572, i64 4, !19, i64 443576, i64 4, !19, i64 443580, i64 4, !19, i64 443584, i64 4, !19, i64 443588, i64 282240, !48, i64 725828, i64 92160, !48, i64 817988, i64 544, !48, i64 818532, i64 8, !49, i64 818540, i64 2, !50, i64 818542, i64 2, !50, i64 818544, i64 2, !50, i64 818546, i64 1, !48, i64 818547, i64 1, !48, i64 818548, i64 4, !19, i64 818552, i64 4, !19, i64 818556, i64 4, !19}
!48 = !{!7, !7, i64 0}
!49 = !{!27, !27, i64 0}
!50 = !{!28, !28, i64 0}
!51 = !{!23, !23, i64 0}


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

@_ZTI14CCFUtilsXml_v1 = external constant ptr
@_ZTI8CCFUtils = external dso_local constant { ptr, ptr }, align 8
@cb_library_index = external local_unnamed_addr global [4 x i32], align 16
@cb_library_initialized = external local_unnamed_addr global [4 x i32], align 16
@cb_cfg_buffer_ptr = external local_unnamed_addr global [4 x ptr], align 16

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #0

declare void @_ZN14CCFUtilsXml_v1C1Ev(ptr noundef nonnull align 8 dereferenceable(1008256)) unnamed_addr #1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nofree nounwind willreturn memory(read)
declare ptr @__dynamic_cast(ptr, ptr, ptr, i64) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN8CCFUtils7SendCCFEv(ptr noundef nonnull align 8 dereferenceable(74)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN8CCFUtils26GetInternalOriginalVersionEv(ptr noundef nonnull align 8 dereferenceable(74)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN8CCFUtils7ReadCCFEPKcb(ptr noundef nonnull align 8 dereferenceable(74) %0, ptr noundef %1, i1 noundef zeroext %2) unnamed_addr #5 align 2 personality ptr @__gxx_personality_v0 {
  %4 = getelementptr inbounds i8, ptr %0, i64 64
  store ptr %1, ptr %4, align 8, !tbaa !5
  %5 = load ptr, ptr %0, align 8, !tbaa !12
  %6 = getelementptr inbounds i8, ptr %5, i64 32
  %7 = load ptr, ptr %6, align 8
  %8 = tail call noundef i32 %7(ptr noundef nonnull align 8 dereferenceable(74) %0, ptr noundef %1)
  %.not = icmp eq i32 %8, 0
  br i1 %.not, label %9, label %.thread65.thread

9:                                                ; preds = %3
  %10 = icmp eq ptr %1, null
  br i1 %10, label %11, label %29

11:                                               ; preds = %9
  %12 = getelementptr inbounds i8, ptr %0, i64 56
  %13 = load i32, ptr %12, align 8, !tbaa !14
  %14 = sext i32 %13 to i64
  %15 = getelementptr inbounds [4 x i32], ptr @cb_library_index, i64 0, i64 %14
  %16 = load i32, ptr %15, align 4, !tbaa !15
  %17 = zext i32 %16 to i64
  %18 = getelementptr inbounds [4 x i32], ptr @cb_library_initialized, i64 0, i64 %17
  %19 = load i32, ptr %18, align 4, !tbaa !15
  %.not57 = icmp eq i32 %19, 0
  br i1 %.not57, label %.thread65.thread, label %20

20:                                               ; preds = %11
  %21 = getelementptr inbounds [4 x ptr], ptr @cb_cfg_buffer_ptr, i64 0, i64 %17
  %22 = load ptr, ptr %21, align 8, !tbaa !16
  %23 = icmp eq ptr %22, null
  br i1 %23, label %.thread65.thread, label %24

24:                                               ; preds = %20
  %25 = getelementptr inbounds i8, ptr %22, i64 528
  %26 = load i16, ptr %25, align 1, !tbaa !17
  %27 = icmp eq i16 %26, 0
  br i1 %27, label %.thread65.thread, label %28

28:                                               ; preds = %24
  tail call void @_ZN8CCFUtils12ReadCCFOfNSPEv(ptr noundef nonnull align 8 dereferenceable(74) %0)
  br label %.thread65.thread

29:                                               ; preds = %9
  %30 = getelementptr inbounds i8, ptr %0, i64 73
  %31 = load i8, ptr %30, align 1, !tbaa !34, !range !35, !noundef !36
  %32 = trunc nuw i8 %31 to i1
  br i1 %32, label %33, label %37

33:                                               ; preds = %29
  %34 = tail call noalias noundef nonnull dereferenceable(189696) ptr @_Znwm(i64 noundef 189696) #7
  invoke void @_ZN14CCFUtilsBinaryC1Ev(ptr noundef nonnull align 8 dereferenceable(189696) %34)
          to label %45 unwind label %35

35:                                               ; preds = %33
  %36 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZdlPvm(ptr noundef nonnull %34, i64 noundef 189696) #8
  br label %116

37:                                               ; preds = %29
  %38 = getelementptr inbounds i8, ptr %0, i64 8
  %39 = load ptr, ptr %38, align 8, !tbaa !37
  %40 = tail call noundef i32 @_ZN8CCFUtils26GetInternalOriginalVersionEv(ptr noundef nonnull align 8 dereferenceable(74) %39)
  %cond = icmp eq i32 %40, 12
  br i1 %cond, label %41, label %.thread65.thread

41:                                               ; preds = %37
  %42 = tail call noalias noundef nonnull dereferenceable(1008256) ptr @_Znwm(i64 noundef 1008256) #7
  invoke void @_ZN14CCFUtilsXml_v1C1Ev(ptr noundef nonnull align 8 dereferenceable(1008256) %42)
          to label %45 unwind label %43

43:                                               ; preds = %41
  %44 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZdlPvm(ptr noundef nonnull %42, i64 noundef 1008256) #8
  br label %116

45:                                               ; preds = %41, %33
  %.034 = phi ptr [ %34, %33 ], [ %42, %41 ]
  br i1 %2, label %.thread71, label %46

46:                                               ; preds = %45
  %47 = getelementptr inbounds i8, ptr %0, i64 48
  %48 = load i32, ptr %47, align 8, !tbaa !38
  %49 = getelementptr inbounds i8, ptr %0, i64 52
  %50 = load i32, ptr %49, align 4, !tbaa !39
  %.not50 = icmp eq i32 %48, %50
  br i1 %.not50, label %51, label %.thread65

51:                                               ; preds = %46
  %52 = load i8, ptr %30, align 1, !tbaa !34, !range !35, !noundef !36
  %53 = trunc nuw i8 %52 to i1
  br i1 %53, label %.thread65, label %.thread71

.thread71:                                        ; preds = %45, %51
  %54 = getelementptr inbounds i8, ptr %0, i64 32
  %55 = load i8, ptr %54, align 8, !tbaa !40, !range !35, !noundef !36
  %56 = trunc nuw i8 %55 to i1
  br i1 %56, label %57, label %67

57:                                               ; preds = %.thread71
  %58 = getelementptr inbounds i8, ptr %0, i64 16
  %59 = load i8, ptr %58, align 8, !tbaa !41, !range !35, !noundef !36
  %60 = trunc nuw i8 %59 to i1
  %61 = getelementptr inbounds i8, ptr %0, i64 40
  %62 = load ptr, ptr %61, align 8, !tbaa !42
  %63 = getelementptr inbounds i8, ptr %0, i64 24
  %64 = load ptr, ptr %63, align 8, !tbaa !43
  %65 = getelementptr inbounds i8, ptr %0, i64 56
  %66 = load i32, ptr %65, align 8, !tbaa !14
  tail call void @_ZN3ccf10ConReadCCFEPKcbP5cbCCFPFvjNS_10_ccfResultES1_11_cbStateCCFjEj(ptr noundef nonnull %1, i1 noundef zeroext %60, ptr noundef %62, ptr noundef %64, i32 noundef %66)
  br label %.thread65

67:                                               ; preds = %.thread71
  %68 = getelementptr inbounds i8, ptr %0, i64 24
  %69 = load ptr, ptr %68, align 8, !tbaa !43
  %.not51 = icmp eq ptr %69, null
  br i1 %.not51, label %73, label %70

70:                                               ; preds = %67
  %71 = getelementptr inbounds i8, ptr %0, i64 56
  %72 = load i32, ptr %71, align 8, !tbaa !14
  tail call void %69(i32 noundef %72, i32 noundef 0, ptr noundef nonnull %1, i32 noundef 0, i32 noundef 0)
  br label %73

73:                                               ; preds = %70, %67
  %74 = load ptr, ptr %.034, align 8, !tbaa !12
  %75 = getelementptr inbounds i8, ptr %74, i64 16
  %76 = load ptr, ptr %75, align 8
  %77 = tail call noundef i32 %76(ptr noundef nonnull align 8 dereferenceable(74) %.034, ptr noundef nonnull %1, i1 noundef zeroext %2)
  %78 = load ptr, ptr %68, align 8, !tbaa !43
  %.not52 = icmp eq ptr %78, null
  br i1 %.not52, label %82, label %79

79:                                               ; preds = %73
  %80 = getelementptr inbounds i8, ptr %0, i64 56
  %81 = load i32, ptr %80, align 8, !tbaa !14
  tail call void %78(i32 noundef %81, i32 noundef %77, ptr noundef nonnull %1, i32 noundef 0, i32 noundef 100)
  br label %82

82:                                               ; preds = %79, %73
  %83 = icmp eq i32 %77, 0
  br i1 %83, label %84, label %.thread65

84:                                               ; preds = %82
  %85 = load ptr, ptr %68, align 8, !tbaa !43
  %.not53 = icmp eq ptr %85, null
  br i1 %.not53, label %89, label %86

86:                                               ; preds = %84
  %87 = getelementptr inbounds i8, ptr %0, i64 56
  %88 = load i32, ptr %87, align 8, !tbaa !14
  tail call void %85(i32 noundef %88, i32 noundef 0, ptr noundef nonnull %1, i32 noundef 3, i32 noundef 0)
  br label %89

89:                                               ; preds = %86, %84
  %90 = getelementptr inbounds i8, ptr %0, i64 8
  %91 = load ptr, ptr %90, align 8, !tbaa !37
  %92 = load ptr, ptr %91, align 8, !tbaa !12
  %93 = getelementptr inbounds i8, ptr %92, i64 40
  %94 = load ptr, ptr %93, align 8
  %95 = tail call noundef ptr %94(ptr noundef nonnull align 8 dereferenceable(74) %91, ptr noundef nonnull %.034)
  %96 = load ptr, ptr %68, align 8, !tbaa !43
  %.not54 = icmp eq ptr %96, null
  br i1 %.not54, label %100, label %97

97:                                               ; preds = %89
  %98 = getelementptr inbounds i8, ptr %0, i64 56
  %99 = load i32, ptr %98, align 8, !tbaa !14
  tail call void %96(i32 noundef %99, i32 noundef 0, ptr noundef nonnull %1, i32 noundef 3, i32 noundef 100)
  br label %100

100:                                              ; preds = %97, %89
  %101 = getelementptr inbounds i8, ptr %0, i64 40
  %102 = load ptr, ptr %101, align 8, !tbaa !42
  %.not55 = icmp eq ptr %102, null
  br i1 %.not55, label %107, label %103

103:                                              ; preds = %100
  %104 = load ptr, ptr %90, align 8, !tbaa !37, !nonnull !36, !noundef !36
  %105 = tail call ptr @__dynamic_cast(ptr nonnull %104, ptr nonnull @_ZTI8CCFUtils, ptr nonnull @_ZTI14CCFUtilsXml_v1, i64 0) #9
  %106 = getelementptr inbounds i8, ptr %105, i64 189696
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(818560) %102, ptr noundef nonnull align 8 dereferenceable(818560) %106, i64 818560, i1 false), !tbaa.struct !44
  br label %107

107:                                              ; preds = %103, %100
  %108 = getelementptr inbounds i8, ptr %0, i64 16
  %109 = load i8, ptr %108, align 8, !tbaa !41, !range !35, !noundef !36
  %110 = trunc nuw i8 %109 to i1
  br i1 %110, label %111, label %.thread65

111:                                              ; preds = %107
  %112 = tail call noundef i32 @_ZN8CCFUtils7SendCCFEv(ptr noundef nonnull align 8 dereferenceable(74) %0)
  br label %.thread65

.thread65:                                        ; preds = %82, %107, %46, %51, %57, %111
  %.378 = phi i32 [ 0, %57 ], [ %112, %111 ], [ 1, %51 ], [ 1, %46 ], [ 0, %107 ], [ %77, %82 ]
  %113 = load ptr, ptr %.034, align 8, !tbaa !12
  %114 = getelementptr inbounds i8, ptr %113, i64 8
  %115 = load ptr, ptr %114, align 8
  tail call void %115(ptr noundef nonnull align 8 dereferenceable(74) %.034) #9
  br label %.thread65.thread

116:                                              ; preds = %43, %35
  %.pn = phi { ptr, i32 } [ %36, %35 ], [ %44, %43 ]
  resume { ptr, i32 } %.pn

.thread65.thread:                                 ; preds = %37, %.thread65, %28, %24, %20, %11, %3
  %.035 = phi i32 [ %8, %3 ], [ 0, %28 ], [ -2, %24 ], [ -2, %20 ], [ -2, %11 ], [ %.378, %.thread65 ], [ -3, %37 ]
  ret i32 %.035
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8CCFUtils12ReadCCFOfNSPEv(ptr noundef nonnull align 8 dereferenceable(74)) local_unnamed_addr #5 align 2

declare void @_ZN14CCFUtilsBinaryC1Ev(ptr noundef nonnull align 8 dereferenceable(189696)) unnamed_addr #1

declare void @_ZN3ccf10ConReadCCFEPKcbP5cbCCFPFvjNS_10_ccfResultES1_11_cbStateCCFjEj(ptr noundef, i1 noundef zeroext, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 64}
!6 = !{!"_ZTS8CCFUtils", !7, i64 8, !10, i64 16, !7, i64 24, !10, i64 32, !7, i64 40, !11, i64 48, !11, i64 52, !11, i64 56, !7, i64 64, !10, i64 72, !10, i64 73}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"bool", !8, i64 0}
!11 = !{!"int", !8, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"vtable pointer", !9, i64 0}
!14 = !{!6, !11, i64 56}
!15 = !{!11, !11, i64 0}
!16 = !{!7, !7, i64 0}
!17 = !{!18, !25, i64 528}
!18 = !{!"_ZTS9cbCFGBUFF", !11, i64 0, !11, i64 4, !19, i64 8, !21, i64 136, !22, i64 520, !8, i64 560, !8, i64 944, !8, i64 8600, !8, i64 36632, !8, i64 49688, !8, i64 49796, !8, i64 49880, !26, i64 455160, !8, i64 1845184, !8, i64 2127424, !8, i64 2219584, !32, i64 2219668, !8, i64 2220692, !8, i64 2220712, !33, i64 2221112, !7, i64 2221912}
!19 = !{!"_ZTS13cbOPTIONTABLE", !20, i64 0, !8, i64 4}
!20 = !{!"float", !8, i64 0}
!21 = !{!"_ZTS12cbCOLORTABLE", !8, i64 0, !11, i64 192, !11, i64 196, !11, i64 200, !11, i64 204, !11, i64 208, !11, i64 212, !11, i64 216, !11, i64 220, !11, i64 224, !8, i64 228, !11, i64 292, !8, i64 296, !8, i64 308, !8, i64 328}
!22 = !{!"_ZTS13cbPKT_SYSINFO", !23, i64 0, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36}
!23 = !{!"_ZTS12cbPKT_HEADER", !24, i64 0, !25, i64 8, !25, i64 10, !25, i64 12, !8, i64 14, !8, i64 15}
!24 = !{!"long", !8, i64 0}
!25 = !{!"short", !8, i64 0}
!26 = !{!"_ZTS15cbSPIKE_SORTING", !8, i64 0, !8, i64 932144, !27, i64 1349344, !28, i64 1349368, !8, i64 1349392, !29, i64 1389920, !30, i64 1389984}
!27 = !{!"_ZTS15cbPKT_SS_DETECT", !23, i64 0, !20, i64 16, !20, i64 20}
!28 = !{!"_ZTS21cbPKT_SS_ARTIF_REJECT", !23, i64 0, !11, i64 16, !11, i64 20}
!29 = !{!"_ZTS19cbPKT_SS_STATISTICS", !23, i64 0, !11, i64 16, !11, i64 20, !11, i64 24, !20, i64 28, !20, i64 32, !20, i64 36, !20, i64 40, !20, i64 44, !20, i64 48, !20, i64 52, !11, i64 56, !11, i64 60}
!30 = !{!"_ZTS15cbPKT_SS_STATUS", !23, i64 0, !31, i64 16, !31, i64 28}
!31 = !{!"_ZTS14cbAdaptControl", !11, i64 0, !20, i64 4, !20, i64 8}
!32 = !{!"_ZTS11cbPKT_NPLAY", !23, i64 0, !8, i64 16, !24, i64 24, !24, i64 32, !24, i64 40, !25, i64 48, !25, i64 50, !20, i64 52, !8, i64 56}
!33 = !{!"_ZTS13cbPKT_FILECFG", !23, i64 0, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !8, i64 32, !8, i64 288, !8, i64 544}
!34 = !{!6, !10, i64 73}
!35 = !{i8 0, i8 2}
!36 = !{}
!37 = !{!6, !7, i64 8}
!38 = !{!6, !11, i64 48}
!39 = !{!6, !11, i64 52}
!40 = !{!6, !10, i64 32}
!41 = !{!6, !10, i64 16}
!42 = !{!6, !7, i64 40}
!43 = !{!6, !7, i64 24}
!44 = !{i64 0, i64 405280, !45, i64 405280, i64 8, !46, i64 405288, i64 2, !47, i64 405290, i64 2, !47, i64 405292, i64 2, !47, i64 405294, i64 1, !45, i64 405295, i64 1, !45, i64 405296, i64 4, !15, i64 405300, i64 4, !15, i64 405304, i64 4, !48, i64 405308, i64 4, !15, i64 405312, i64 4, !15, i64 405316, i64 8, !46, i64 405324, i64 2, !47, i64 405326, i64 2, !47, i64 405328, i64 2, !47, i64 405330, i64 1, !45, i64 405331, i64 1, !45, i64 405332, i64 4, !48, i64 405336, i64 4, !48, i64 405340, i64 8, !46, i64 405348, i64 2, !47, i64 405350, i64 2, !47, i64 405352, i64 2, !47, i64 405354, i64 1, !45, i64 405355, i64 1, !45, i64 405356, i64 4, !15, i64 405360, i64 4, !15, i64 405364, i64 38080, !45, i64 443444, i64 8, !46, i64 443452, i64 2, !47, i64 443454, i64 2, !47, i64 443456, i64 2, !47, i64 443458, i64 1, !45, i64 443459, i64 1, !45, i64 443460, i64 4, !15, i64 443464, i64 4, !15, i64 443468, i64 4, !15, i64 443472, i64 4, !48, i64 443476, i64 4, !48, i64 443480, i64 4, !48, i64 443484, i64 4, !48, i64 443488, i64 4, !48, i64 443492, i64 4, !48, i64 443496, i64 4, !48, i64 443500, i64 4, !15, i64 443504, i64 4, !15, i64 443508, i64 8, !46, i64 443516, i64 2, !47, i64 443518, i64 2, !47, i64 443520, i64 2, !47, i64 443522, i64 1, !45, i64 443523, i64 1, !45, i64 443524, i64 4, !15, i64 443528, i64 4, !48, i64 443532, i64 4, !48, i64 443536, i64 4, !15, i64 443540, i64 4, !48, i64 443544, i64 4, !48, i64 443548, i64 8, !46, i64 443556, i64 2, !47, i64 443558, i64 2, !47, i64 443560, i64 2, !47, i64 443562, i64 1, !45, i64 443563, i64 1, !45, i64 443564, i64 4, !15, i64 443568, i64 4, !15, i64 443572, i64 4, !15, i64 443576, i64 4, !15, i64 443580, i64 4, !15, i64 443584, i64 4, !15, i64 443588, i64 282240, !45, i64 725828, i64 92160, !45, i64 817988, i64 544, !45, i64 818532, i64 8, !46, i64 818540, i64 2, !47, i64 818542, i64 2, !47, i64 818544, i64 2, !47, i64 818546, i64 1, !45, i64 818547, i64 1, !45, i64 818548, i64 4, !15, i64 818552, i64 4, !15, i64 818556, i64 4, !15}
!45 = !{!8, !8, i64 0}
!46 = !{!24, !24, i64 0}
!47 = !{!25, !25, i64 0}
!48 = !{!20, !20, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,SROAPass,SimplifyCFGPass,TailCallElimPass