; LLVM IR from sfu-dis/mosaicdb :: benchmarks/egen (EGenGenerateAndLoad)

; 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.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%"class.TPCE::CInputFiles" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.TPCE::CGenerateAndLoad" = type { %"class.TPCE::CInputFiles", i64, i64, i64, i32, i32, i32, ptr, ptr, [512 x i8], ptr, %"class.TPCE::CLoaderSettings", i8, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.TPCE::CLoaderSettings" = type { %"class.TPCE::CParametersWithDefaults" }
%"class.TPCE::CParametersWithDefaults" = type { ptr, %"struct.TPCE::TLoaderSettings", %"struct.TPCE::TLoaderSettingsState", %"struct.TPCE::TLoaderSettings" }
%"struct.TPCE::TLoaderSettingsState" = type { i8, i8, i8, i8, i8, i8 }
%"struct.TPCE::TLoaderSettings" = type { i64, i64, i32, i32, i64, i64 }

@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [9 x i8], align 1

; 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) #0

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4TPCE11CInputFilesD2Ev(ptr noundef nonnull align 8 dereferenceable(184)) unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4TPCE16CGenerateAndLoad30GenerateAndLoadHoldingAndTradeEv(ptr noundef nonnull align 8 dereferenceable(1040) %0) #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca i8, align 1
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca [11 x i8], align 1
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::allocator", align 1
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca %"class.TPCE::CInputFiles", align 8
  %22 = alloca i1, align 1
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator", align 1
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator", align 1
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::allocator", align 1
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::allocator", align 1
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::allocator", align 1
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::allocator", align 1
  store ptr %0, ptr %2, align 8, !tbaa !5
  %35 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %3) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #8
  store i32 0, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #8
  store i32 1, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 11, ptr %16) #8
  %36 = getelementptr inbounds %"class.TPCE::CGenerateAndLoad", ptr %35, i32 0, i32 7
  %37 = load ptr, ptr %36, align 8, !tbaa !11
  %38 = load ptr, ptr %37, align 8, !tbaa !20
  %39 = getelementptr inbounds ptr, ptr %38, i64 16
  %40 = load ptr, ptr %39, align 8
  %41 = call noundef ptr %40(ptr noundef nonnull align 8 dereferenceable(8) %37)
  store ptr %41, ptr %5, align 8, !tbaa !5
  %42 = getelementptr inbounds %"class.TPCE::CGenerateAndLoad", ptr %35, i32 0, i32 7
  %43 = load ptr, ptr %42, align 8, !tbaa !11
  %44 = load ptr, ptr %43, align 8, !tbaa !20
  %45 = getelementptr inbounds ptr, ptr %44, i64 17
  %46 = load ptr, ptr %45, align 8
  %47 = call noundef ptr %46(ptr noundef nonnull align 8 dereferenceable(8) %43)
  store ptr %47, ptr %6, align 8, !tbaa !5
  %48 = getelementptr inbounds %"class.TPCE::CGenerateAndLoad", ptr %35, i32 0, i32 7
  %49 = load ptr, ptr %48, align 8, !tbaa !11
  %50 = load ptr, ptr %49, align 8, !tbaa !20
  %51 = getelementptr inbounds ptr, ptr %50, i64 18
  %52 = load ptr, ptr %51, align 8
  %53 = call noundef ptr %52(ptr noundef nonnull align 8 dereferenceable(8) %49)
  store ptr %53, ptr %7, align 8, !tbaa !5
  %54 = getelementptr inbounds %"class.TPCE::CGenerateAndLoad", ptr %35, i32 0, i32 7
  %55 = load ptr, ptr %54, align 8, !tbaa !11
  %56 = load ptr, ptr %55, align 8, !tbaa !20
  %57 = getelementptr inbounds ptr, ptr %56, i64 29
  %58 = load ptr, ptr %57, align 8
  %59 = call noundef ptr %58(ptr noundef nonnull align 8 dereferenceable(8) %55)
  store ptr %59, ptr %8, align 8, !tbaa !5
  %60 = getelementptr inbounds %"class.TPCE::CGenerateAndLoad", ptr %35, i32 0, i32 7
  %61 = load ptr, ptr %60, align 8, !tbaa !11
  %62 = load ptr, ptr %61, align 8, !tbaa !20
  %63 = getelementptr inbounds ptr, ptr %62, i64 25
  %64 = load ptr, ptr %63, align 8
  %65 = call noundef ptr %64(ptr noundef nonnull align 8 dereferenceable(8) %61)
  store ptr %65, ptr %9, align 8, !tbaa !5
  %66 = getelementptr inbounds %"class.TPCE::CGenerateAndLoad", ptr %35, i32 0, i32 7
  %67 = load ptr, ptr %66, align 8, !tbaa !11
  %68 = load ptr, ptr %67, align 8, !tbaa !20
  %69 = getelementptr inbounds ptr, ptr %68, i64 28
  %70 = load ptr, ptr %69, align 8
  %71 = call noundef ptr %70(ptr noundef nonnull align 8 dereferenceable(8) %67)
  store ptr %71, ptr %10, align 8, !tbaa !5
  %72 = getelementptr inbounds %"class.TPCE::CGenerateAndLoad", ptr %35, i32 0, i32 7
  %73 = load ptr, ptr %72, align 8, !tbaa !11
  %74 = load ptr, ptr %73, align 8, !tbaa !20
  %75 = getelementptr inbounds ptr, ptr %74, i64 5
  %76 = load ptr, ptr %75, align 8
  %77 = call noundef ptr %76(ptr noundef nonnull align 8 dereferenceable(8) %73)
  store ptr %77, ptr %11, align 8, !tbaa !5
  %78 = getelementptr inbounds %"class.TPCE::CGenerateAndLoad", ptr %35, i32 0, i32 7
  %79 = load ptr, ptr %78, align 8, !tbaa !11
  %80 = load ptr, ptr %79, align 8, !tbaa !20
  %81 = getelementptr inbounds ptr, ptr %80, i64 4
  %82 = load ptr, ptr %81, align 8
  %83 = call noundef ptr %82(ptr noundef nonnull align 8 dereferenceable(8) %79)
  store ptr %83, ptr %12, align 8, !tbaa !5
  %84 = getelementptr inbounds %"class.TPCE::CGenerateAndLoad", ptr %35, i32 0, i32 8
  %85 = load ptr, ptr %84, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef @.str.13, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %86 unwind label %168

86:                                               ; preds = %1
  %87 = load ptr, ptr %85, align 8, !tbaa !20
  %88 = getelementptr inbounds ptr, ptr %87, i64 2
  %89 = load ptr, ptr %88, align 8
  invoke void %89(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef %17)
          to label %90 unwind label %172

90:                                               ; preds = %86
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #8
  %91 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 7360) #9
  store i1 true, ptr %22, align 1
  %92 = getelementptr inbounds %"class.TPCE::CGenerateAndLoad", ptr %35, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %21, ptr align 8 %92, i64 184, i1 false), !tbaa.struct !23
  %93 = getelementptr inbounds %"class.TPCE::CGenerateAndLoad", ptr %35, i32 0, i32 2
  %94 = load i64, ptr %93, align 8, !tbaa !24
  %95 = getelementptr inbounds %"class.TPCE::CGenerateAndLoad", ptr %35, i32 0, i32 1
  %96 = load i64, ptr %95, align 8, !tbaa !25
  %97 = getelementptr inbounds %"class.TPCE::CGenerateAndLoad", ptr %35, i32 0, i32 3
  %98 = load i64, ptr %97, align 8, !tbaa !26
  %99 = getelementptr inbounds %"class.TPCE::CGenerateAndLoad", ptr %35, i32 0, i32 4
  %100 = load i32, ptr %99, align 8, !tbaa !27
  %101 = getelementptr inbounds %"class.TPCE::CGenerateAndLoad", ptr %35, i32 0, i32 5
  %102 = load i32, ptr %101, align 4, !tbaa !28
  %103 = getelementptr inbounds %"class.TPCE::CGenerateAndLoad", ptr %35, i32 0, i32 6
  %104 = load i32, ptr %103, align 8, !tbaa !29
  %105 = getelementptr inbounds %"class.TPCE::CGenerateAndLoad", ptr %35, i32 0, i32 12
  %106 = load i8, ptr %105, align 8, !tbaa !30, !range !31, !noundef !32
  %107 = trunc i8 %106 to i1
  invoke void @_ZN4TPCE9CTradeGenC1ENS_11CInputFilesExxxjjjb(ptr noundef nonnull align 8 dereferenceable(7356) %91, ptr noundef %21, i64 noundef %94, i64 noundef %96, i64 noundef %98, i32 noundef %100, i32 noundef %102, i32 noundef %104, i1 noundef zeroext %107)
          to label %108 unwind label %177

108:                                              ; preds = %90
  store i1 false, ptr %22, align 1
  store ptr %91, ptr %4, align 8, !tbaa !5
  call void @_ZN4TPCE11CInputFilesD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %21) #8
  br label %109

109:                                              ; preds = %449, %108
  %110 = load ptr, ptr %8, align 8, !tbaa !5
  %111 = load ptr, ptr %110, align 8, !tbaa !20
  %112 = getelementptr inbounds ptr, ptr %111, i64 2
  %113 = load ptr, ptr %112, align 8
  call void %113(ptr noundef nonnull align 8 dereferenceable(8) %110)
  %114 = load ptr, ptr %9, align 8, !tbaa !5
  %115 = load ptr, ptr %114, align 8, !tbaa !20
  %116 = getelementptr inbounds ptr, ptr %115, i64 2
  %117 = load ptr, ptr %116, align 8
  call void %117(ptr noundef nonnull align 8 dereferenceable(8) %114)
  %118 = load ptr, ptr %10, align 8, !tbaa !5
  %119 = load ptr, ptr %118, align 8, !tbaa !20
  %120 = getelementptr inbounds ptr, ptr %119, i64 2
  %121 = load ptr, ptr %120, align 8
  call void %121(ptr noundef nonnull align 8 dereferenceable(8) %118)
  %122 = load ptr, ptr %11, align 8, !tbaa !5
  %123 = load ptr, ptr %122, align 8, !tbaa !20
  %124 = getelementptr inbounds ptr, ptr %123, i64 2
  %125 = load ptr, ptr %124, align 8
  call void %125(ptr noundef nonnull align 8 dereferenceable(8) %122)
  %126 = load ptr, ptr %12, align 8, !tbaa !5
  %127 = load ptr, ptr %126, align 8, !tbaa !20
  %128 = getelementptr inbounds ptr, ptr %127, i64 2
  %129 = load ptr, ptr %128, align 8
  call void %129(ptr noundef nonnull align 8 dereferenceable(8) %126)
  %130 = load ptr, ptr %6, align 8, !tbaa !5
  %131 = load ptr, ptr %130, align 8, !tbaa !20
  %132 = getelementptr inbounds ptr, ptr %131, i64 2
  %133 = load ptr, ptr %132, align 8
  call void %133(ptr noundef nonnull align 8 dereferenceable(8) %130)
  %134 = load ptr, ptr %5, align 8, !tbaa !5
  %135 = load ptr, ptr %134, align 8, !tbaa !20
  %136 = getelementptr inbounds ptr, ptr %135, i64 2
  %137 = load ptr, ptr %136, align 8
  call void %137(ptr noundef nonnull align 8 dereferenceable(8) %134)
  %138 = load ptr, ptr %7, align 8, !tbaa !5
  %139 = load ptr, ptr %138, align 8, !tbaa !20
  %140 = getelementptr inbounds ptr, ptr %139, i64 2
  %141 = load ptr, ptr %140, align 8
  call void %141(ptr noundef nonnull align 8 dereferenceable(8) %138)
  br label %142

142:                                              ; preds = %271, %109
  %143 = load ptr, ptr %4, align 8, !tbaa !5
  %144 = call noundef zeroext i1 @_ZN4TPCE9CTradeGen17GenerateNextTradeEv(ptr noundef nonnull align 8 dereferenceable(7356) %143)
  %145 = zext i1 %144 to i8
  store i8 %145, ptr %3, align 1, !tbaa !33
  %146 = load ptr, ptr %8, align 8, !tbaa !5
  %147 = load ptr, ptr %4, align 8, !tbaa !5
  %148 = call noundef ptr @_ZN4TPCE9CTradeGen11GetTradeRowEv(ptr noundef nonnull align 8 dereferenceable(7356) %147)
  %149 = load ptr, ptr %146, align 8, !tbaa !20
  %150 = getelementptr inbounds ptr, ptr %149, i64 3
  %151 = load ptr, ptr %150, align 8
  call void %151(ptr noundef nonnull align 8 dereferenceable(8) %146, ptr noundef %148)
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %152

152:                                              ; preds = %165, %142
  %153 = load i32, ptr %14, align 4, !tbaa !9
  %154 = load ptr, ptr %4, align 8, !tbaa !5
  %155 = call noundef i32 @_ZN4TPCE9CTradeGen23GetTradeHistoryRowCountEv(ptr noundef nonnull align 8 dereferenceable(7356) %154)
  %156 = icmp slt i32 %153, %155
  br i1 %156, label %157, label %184

157:                                              ; preds = %152
  %158 = load ptr, ptr %10, align 8, !tbaa !5
  %159 = load ptr, ptr %4, align 8, !tbaa !5
  %160 = load i32, ptr %14, align 4, !tbaa !9
  %161 = call noundef ptr @_ZN4TPCE9CTradeGen18GetTradeHistoryRowEi(ptr noundef nonnull align 8 dereferenceable(7356) %159, i32 noundef %160)
  %162 = load ptr, ptr %158, align 8, !tbaa !20
  %163 = getelementptr inbounds ptr, ptr %162, i64 3
  %164 = load ptr, ptr %163, align 8
  call void %164(ptr noundef nonnull align 8 dereferenceable(8) %158, ptr noundef %161)
  br label %165

165:                                              ; preds = %157
  %166 = load i32, ptr %14, align 4, !tbaa !9
  %167 = add nsw i32 %166, 1
  store i32 %167, ptr %14, align 4, !tbaa !9
  br label %152, !llvm.loop !34

168:                                              ; preds = %1
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %19, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %20, align 4
  br label %176

172:                                              ; preds = %86
  %173 = landingpad { ptr, i32 }
          cleanup
  %174 = extractvalue { ptr, i32 } %173, 0
  store ptr %174, ptr %19, align 8
  %175 = extractvalue { ptr, i32 } %173, 1
  store i32 %175, ptr %20, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  br label %176

176:                                              ; preds = %172, %168
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #8
  br label %548

177:                                              ; preds = %90
  %178 = landingpad { ptr, i32 }
          cleanup
  %179 = extractvalue { ptr, i32 } %178, 0
  store ptr %179, ptr %19, align 8
  %180 = extractvalue { ptr, i32 } %178, 1
  store i32 %180, ptr %20, align 4
  call void @_ZN4TPCE11CInputFilesD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %21) #8
  %181 = load i1, ptr %22, align 1
  br i1 %181, label %182, label %183

182:                                              ; preds = %177
  call void @_ZdlPvm(ptr noundef %91, i64 noundef 7360) #10
  br label %183

183:                                              ; preds = %182, %177
  br label %548

184:                                              ; preds = %152
  %185 = load ptr, ptr %4, align 8, !tbaa !5
  %186 = call noundef i32 @_ZN4TPCE9CTradeGen21GetSettlementRowCountEv(ptr noundef nonnull align 8 dereferenceable(7356) %185)
  %187 = icmp ne i32 %186, 0
  br i1 %187, label %188, label %195

188:                                              ; preds = %184
  %189 = load ptr, ptr %9, align 8, !tbaa !5
  %190 = load ptr, ptr %4, align 8, !tbaa !5
  %191 = call noundef ptr @_ZN4TPCE9CTradeGen16GetSettlementRowEv(ptr noundef nonnull align 8 dereferenceable(7356) %190)
  %192 = load ptr, ptr %189, align 8, !tbaa !20
  %193 = getelementptr inbounds ptr, ptr %192, i64 3
  %194 = load ptr, ptr %193, align 8
  call void %194(ptr noundef nonnull align 8 dereferenceable(8) %189, ptr noundef %191)
  br label %195

195:                                              ; preds = %188, %184
  %196 = load ptr, ptr %4, align 8, !tbaa !5
  %197 = call noundef i32 @_ZN4TPCE9CTradeGen26GetCashTransactionRowCountEv(ptr noundef nonnull align 8 dereferenceable(7356) %196)
  %198 = icmp ne i32 %197, 0
  br i1 %198, label %199, label %206

199:                                              ; preds = %195
  %200 = load ptr, ptr %11, align 8, !tbaa !5
  %201 = load ptr, ptr %4, align 8, !tbaa !5
  %202 = call noundef ptr @_ZN4TPCE9CTradeGen21GetCashTransactionRowEv(ptr noundef nonnull align 8 dereferenceable(7356) %201)
  %203 = load ptr, ptr %200, align 8, !tbaa !20
  %204 = getelementptr inbounds ptr, ptr %203, i64 3
  %205 = load ptr, ptr %204, align 8
  call void %205(ptr noundef nonnull align 8 dereferenceable(8) %200, ptr noundef %202)
  br label %206

206:                                              ; preds = %199, %195
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %207

207:                                              ; preds = %220, %206
  %208 = load i32, ptr %14, align 4, !tbaa !9
  %209 = load ptr, ptr %4, align 8, !tbaa !5
  %210 = call noundef i32 @_ZN4TPCE9CTradeGen25GetHoldingHistoryRowCountEv(ptr noundef nonnull align 8 dereferenceable(7356) %209)
  %211 = icmp slt i32 %208, %210
  br i1 %211, label %212, label %223

212:                                              ; preds = %207
  %213 = load ptr, ptr %6, align 8, !tbaa !5
  %214 = load ptr, ptr %4, align 8, !tbaa !5
  %215 = load i32, ptr %14, align 4, !tbaa !9
  %216 = call noundef ptr @_ZN4TPCE9CTradeGen20GetHoldingHistoryRowEi(ptr noundef nonnull align 8 dereferenceable(7356) %214, i32 noundef %215)
  %217 = load ptr, ptr %213, align 8, !tbaa !20
  %218 = getelementptr inbounds ptr, ptr %217, i64 3
  %219 = load ptr, ptr %218, align 8
  call void %219(ptr noundef nonnull align 8 dereferenceable(8) %213, ptr noundef %216)
  br label %220

220:                                              ; preds = %212
  %221 = load i32, ptr %14, align 4, !tbaa !9
  %222 = add nsw i32 %221, 1
  store i32 %222, ptr %14, align 4, !tbaa !9
  br label %207, !llvm.loop !36

223:                                              ; preds = %207
  %224 = load i32, ptr %13, align 4, !tbaa !9
  %225 = add nsw i32 %224, 1
  store i32 %225, ptr %13, align 4, !tbaa !9
  %226 = srem i32 %225, 10000
  %227 = icmp eq i32 %226, 0
  br i1 %227, label %228, label %245

228:                                              ; preds = %223
  %229 = getelementptr inbounds %"class.TPCE::CGenerateAndLoad", ptr %35, i32 0, i32 8
  %230 = load ptr, ptr %229, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %231 unwind label %236

231:                                              ; preds = %228
  %232 = load ptr, ptr %230, align 8, !tbaa !20
  %233 = getelementptr inbounds ptr, ptr %232, i64 3
  %234 = load ptr, ptr %233, align 8
  invoke void %234(ptr noundef nonnull align 8 dereferenceable(8) %230, ptr noundef %23)
          to label %235 unwind label %240

235:                                              ; preds = %231
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #8
  br label %245

236:                                              ; preds = %228
  %237 = landingpad { ptr, i32 }
          cleanup
  %238 = extractvalue { ptr, i32 } %237, 0
  store ptr %238, ptr %19, align 8
  %239 = extractvalue { ptr, i32 } %237, 1
  store i32 %239, ptr %20, align 4
  br label %244

240:                                              ; preds = %231
  %241 = landingpad { ptr, i32 }
          cleanup
  %242 = extractvalue { ptr, i32 } %241, 0
  store ptr %242, ptr %19, align 8
  %243 = extractvalue { ptr, i32 } %241, 1
  store i32 %243, ptr %20, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  br label %244

244:                                              ; preds = %240, %236
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #8
  br label %548

245:                                              ; preds = %235, %223
  %246 = load i32, ptr %13, align 4, !tbaa !9
  %247 = srem i32 %246, 10000
  %248 = icmp eq i32 %247, 0
  br i1 %248, label %249, label %270

249:                                              ; preds = %245
  %250 = load ptr, ptr %8, align 8, !tbaa !5
  %251 = load ptr, ptr %250, align 8, !tbaa !20
  %252 = getelementptr inbounds ptr, ptr %251, i64 4
  %253 = load ptr, ptr %252, align 8
  call void %253(ptr noundef nonnull align 8 dereferenceable(8) %250)
  %254 = load ptr, ptr %9, align 8, !tbaa !5
  %255 = load ptr, ptr %254, align 8, !tbaa !20
  %256 = getelementptr inbounds ptr, ptr %255, i64 4
  %257 = load ptr, ptr %256, align 8
  call void %257(ptr noundef nonnull align 8 dereferenceable(8) %254)
  %258 = load ptr, ptr %10, align 8, !tbaa !5
  %259 = load ptr, ptr %258, align 8, !tbaa !20
  %260 = getelementptr inbounds ptr, ptr %259, i64 4
  %261 = load ptr, ptr %260, align 8
  call void %261(ptr noundef nonnull align 8 dereferenceable(8) %258)
  %262 = load ptr, ptr %11, align 8, !tbaa !5
  %263 = load ptr, ptr %262, align 8, !tbaa !20
  %264 = getelementptr inbounds ptr, ptr %263, i64 4
  %265 = load ptr, ptr %264, align 8
  call void %265(ptr noundef nonnull align 8 dereferenceable(8) %262)
  %266 = load ptr, ptr %6, align 8, !tbaa !5
  %267 = load ptr, ptr %266, align 8, !tbaa !20
  %268 = getelementptr inbounds ptr, ptr %267, i64 4
  %269 = load ptr, ptr %268, align 8
  call void %269(ptr noundef nonnull align 8 dereferenceable(8) %266)
  br label %270

270:                                              ; preds = %249, %245
  br label %271

271:                                              ; preds = %270
  %272 = load i8, ptr %3, align 1, !tbaa !33, !range !31, !noundef !32
  %273 = trunc i8 %272 to i1
  br i1 %273, label %142, label %274, !llvm.loop !37

274:                                              ; preds = %271
  br label %275

275:                                              ; preds = %295, %274
  %276 = load ptr, ptr %4, align 8, !tbaa !5
  %277 = call noundef zeroext i1 @_ZN4TPCE9CTradeGen24GenerateNextBrokerRecordEv(ptr noundef nonnull align 8 dereferenceable(7356) %276)
  %278 = zext i1 %277 to i8
  store i8 %278, ptr %3, align 1, !tbaa !33
  %279 = load ptr, ptr %12, align 8, !tbaa !5
  %280 = load ptr, ptr %4, align 8, !tbaa !5
  %281 = call noundef ptr @_ZN4TPCE9CTradeGen12GetBrokerRowEv(ptr noundef nonnull align 8 dereferenceable(7356) %280)
  %282 = load ptr, ptr %279, align 8, !tbaa !20
  %283 = getelementptr inbounds ptr, ptr %282, i64 3
  %284 = load ptr, ptr %283, align 8
  call void %284(ptr noundef nonnull align 8 dereferenceable(8) %279, ptr noundef %281)
  %285 = load i32, ptr %13, align 4, !tbaa !9
  %286 = add nsw i32 %285, 1
  store i32 %286, ptr %13, align 4, !tbaa !9
  %287 = srem i32 %286, 10000
  %288 = icmp eq i32 %287, 0
  br i1 %288, label %289, label %294

289:                                              ; preds = %275
  %290 = load ptr, ptr %12, align 8, !tbaa !5
  %291 = load ptr, ptr %290, align 8, !tbaa !20
  %292 = getelementptr inbounds ptr, ptr %291, i64 4
  %293 = load ptr, ptr %292, align 8
  call void %293(ptr noundef nonnull align 8 dereferenceable(8) %290)
  br label %294

294:                                              ; preds = %289, %275
  br label %295

295:                                              ; preds = %294
  %296 = load i8, ptr %3, align 1, !tbaa !33, !range !31, !noundef !32
  %297 = trunc i8 %296 to i1
  br i1 %297, label %275, label %298, !llvm.loop !38

298:                                              ; preds = %295
  %299 = getelementptr inbounds %"class.TPCE::CGenerateAndLoad", ptr %35, i32 0, i32 8
  %300 = load ptr, ptr %299, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.14, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %301 unwind label %328

301:                                              ; preds = %298
  %302 = load ptr, ptr %300, align 8, !tbaa !20
  %303 = getelementptr inbounds ptr, ptr %302, i64 3
  %304 = load ptr, ptr %303, align 8
  invoke void %304(ptr noundef nonnull align 8 dereferenceable(8) %300, ptr noundef %25)
          to label %305 unwind label %332

305:                                              ; preds = %301
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #8
  br label %306

306:                                              ; preds = %356, %305
  %307 = load ptr, ptr %4, align 8, !tbaa !5
  %308 = call noundef zeroext i1 @_ZN4TPCE9CTradeGen29GenerateNextHoldingSummaryRowEv(ptr noundef nonnull align 8 dereferenceable(7356) %307)
  %309 = zext i1 %308 to i8
  store i8 %309, ptr %3, align 1, !tbaa !33
  %310 = load ptr, ptr %7, align 8, !tbaa !5
  %311 = load ptr, ptr %4, align 8, !tbaa !5
  %312 = call noundef ptr @_ZN4TPCE9CTradeGen20GetHoldingSummaryRowEv(ptr noundef nonnull align 8 dereferenceable(7356) %311)
  %313 = load ptr, ptr %310, align 8, !tbaa !20
  %314 = getelementptr inbounds ptr, ptr %313, i64 3
  %315 = load ptr, ptr %314, align 8
  call void %315(ptr noundef nonnull align 8 dereferenceable(8) %310, ptr noundef %312)
  %316 = load i32, ptr %13, align 4, !tbaa !9
  %317 = add nsw i32 %316, 1
  store i32 %317, ptr %13, align 4, !tbaa !9
  %318 = srem i32 %317, 10000
  %319 = icmp eq i32 %318, 0
  br i1 %319, label %320, label %346

320:                                              ; preds = %306
  %321 = getelementptr inbounds %"class.TPCE::CGenerateAndLoad", ptr %35, i32 0, i32 8
  %322 = load ptr, ptr %321, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %323 unwind label %337

323:                                              ; preds = %320
  %324 = load ptr, ptr %322, align 8, !tbaa !20
  %325 = getelementptr inbounds ptr, ptr %324, i64 3
  %326 = load ptr, ptr %325, align 8
  invoke void %326(ptr noundef nonnull align 8 dereferenceable(8) %322, ptr noundef %27)
          to label %327 unwind label %341

327:                                              ; preds = %323
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #8
  br label %346

328:                                              ; preds = %298
  %329 = landingpad { ptr, i32 }
          cleanup
  %330 = extractvalue { ptr, i32 } %329, 0
  store ptr %330, ptr %19, align 8
  %331 = extractvalue { ptr, i32 } %329, 1
  store i32 %331, ptr %20, align 4
  br label %336

332:                                              ; preds = %301
  %333 = landingpad { ptr, i32 }
          cleanup
  %334 = extractvalue { ptr, i32 } %333, 0
  store ptr %334, ptr %19, align 8
  %335 = extractvalue { ptr, i32 } %333, 1
  store i32 %335, ptr %20, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  br label %336

336:                                              ; preds = %332, %328
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #8
  br label %548

337:                                              ; preds = %320
  %338 = landingpad { ptr, i32 }
          cleanup
  %339 = extractvalue { ptr, i32 } %338, 0
  store ptr %339, ptr %19, align 8
  %340 = extractvalue { ptr, i32 } %338, 1
  store i32 %340, ptr %20, align 4
  br label %345

341:                                              ; preds = %323
  %342 = landingpad { ptr, i32 }
          cleanup
  %343 = extractvalue { ptr, i32 } %342, 0
  store ptr %343, ptr %19, align 8
  %344 = extractvalue { ptr, i32 } %342, 1
  store i32 %344, ptr %20, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  br label %345

345:                                              ; preds = %341, %337
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #8
  br label %548

346:                                              ; preds = %327, %306
  %347 = load i32, ptr %13, align 4, !tbaa !9
  %348 = srem i32 %347, 10000
  %349 = icmp eq i32 %348, 0
  br i1 %349, label %350, label %355

350:                                              ; preds = %346
  %351 = load ptr, ptr %7, align 8, !tbaa !5
  %352 = load ptr, ptr %351, align 8, !tbaa !20
  %353 = getelementptr inbounds ptr, ptr %352, i64 4
  %354 = load ptr, ptr %353, align 8
  call void %354(ptr noundef nonnull align 8 dereferenceable(8) %351)
  br label %355

355:                                              ; preds = %350, %346
  br label %356

356:                                              ; preds = %355
  %357 = load i8, ptr %3, align 1, !tbaa !33, !range !31, !noundef !32
  %358 = trunc i8 %357 to i1
  br i1 %358, label %306, label %359, !llvm.loop !39

359:                                              ; preds = %356
  br label %360

360:                                              ; preds = %401, %359
  %361 = load ptr, ptr %4, align 8, !tbaa !5
  %362 = call noundef zeroext i1 @_ZN4TPCE9CTradeGen19GenerateNextHoldingEv(ptr noundef nonnull align 8 dereferenceable(7356) %361)
  %363 = zext i1 %362 to i8
  store i8 %363, ptr %3, align 1, !tbaa !33
  %364 = load ptr, ptr %5, align 8, !tbaa !5
  %365 = load ptr, ptr %4, align 8, !tbaa !5
  %366 = call noundef ptr @_ZN4TPCE9CTradeGen13GetHoldingRowEv(ptr noundef nonnull align 8 dereferenceable(7356) %365)
  %367 = load ptr, ptr %364, align 8, !tbaa !20
  %368 = getelementptr inbounds ptr, ptr %367, i64 3
  %369 = load ptr, ptr %368, align 8
  call void %369(ptr noundef nonnull align 8 dereferenceable(8) %364, ptr noundef %366)
  %370 = load i32, ptr %13, align 4, !tbaa !9
  %371 = add nsw i32 %370, 1
  store i32 %371, ptr %13, align 4, !tbaa !9
  %372 = srem i32 %371, 10000
  %373 = icmp eq i32 %372, 0
  br i1 %373, label %374, label %391

374:                                              ; preds = %360
  %375 = getelementptr inbounds %"class.TPCE::CGenerateAndLoad", ptr %35, i32 0, i32 8
  %376 = load ptr, ptr %375, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %377 unwind label %382

377:                                              ; preds = %374
  %378 = load ptr, ptr %376, align 8, !tbaa !20
  %379 = getelementptr inbounds ptr, ptr %378, i64 3
  %380 = load ptr, ptr %379, align 8
  invoke void %380(ptr noundef nonnull align 8 dereferenceable(8) %376, ptr noundef %29)
          to label %381 unwind label %386

381:                                              ; preds = %377
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #8
  br label %391

382:                                              ; preds = %374
  %383 = landingpad { ptr, i32 }
          cleanup
  %384 = extractvalue { ptr, i32 } %383, 0
  store ptr %384, ptr %19, align 8
  %385 = extractvalue { ptr, i32 } %383, 1
  store i32 %385, ptr %20, align 4
  br label %390

386:                                              ; preds = %377
  %387 = landingpad { ptr, i32 }
          cleanup
  %388 = extractvalue { ptr, i32 } %387, 0
  store ptr %388, ptr %19, align 8
  %389 = extractvalue { ptr, i32 } %387, 1
  store i32 %389, ptr %20, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  br label %390

390:                                              ; preds = %386, %382
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #8
  br label %548

391:                                              ; preds = %381, %360
  %392 = load i32, ptr %13, align 4, !tbaa !9
  %393 = srem i32 %392, 10000
  %394 = icmp eq i32 %393, 0
  br i1 %394, label %395, label %400

395:                                              ; preds = %391
  %396 = load ptr, ptr %5, align 8, !tbaa !5
  %397 = load ptr, ptr %396, align 8, !tbaa !20
  %398 = getelementptr inbounds ptr, ptr %397, i64 4
  %399 = load ptr, ptr %398, align 8
  call void %399(ptr noundef nonnull align 8 dereferenceable(8) %396)
  br label %400

400:                                              ; preds = %395, %391
  br label %401

401:                                              ; preds = %400
  %402 = load i8, ptr %3, align 1, !tbaa !33, !range !31, !noundef !32
  %403 = trunc i8 %402 to i1
  br i1 %403, label %360, label %404, !llvm.loop !40

404:                                              ; preds = %401
  %405 = load ptr, ptr %8, align 8, !tbaa !5
  %406 = load ptr, ptr %405, align 8, !tbaa !20
  %407 = getelementptr inbounds ptr, ptr %406, i64 5
  %408 = load ptr, ptr %407, align 8
  call void %408(ptr noundef nonnull align 8 dereferenceable(8) %405)
  %409 = load ptr, ptr %9, align 8, !tbaa !5
  %410 = load ptr, ptr %409, align 8, !tbaa !20
  %411 = getelementptr inbounds ptr, ptr %410, i64 5
  %412 = load ptr, ptr %411, align 8
  call void %412(ptr noundef nonnull align 8 dereferenceable(8) %409)
  %413 = load ptr, ptr %10, align 8, !tbaa !5
  %414 = load ptr, ptr %413, align 8, !tbaa !20
  %415 = getelementptr inbounds ptr, ptr %414, i64 5
  %416 = load ptr, ptr %415, align 8
  call void %416(ptr noundef nonnull align 8 dereferenceable(8) %413)
  %417 = load ptr, ptr %11, align 8, !tbaa !5
  %418 = load ptr, ptr %417, align 8, !tbaa !20
  %419 = getelementptr inbounds ptr, ptr %418, i64 5
  %420 = load ptr, ptr %419, align 8
  call void %420(ptr noundef nonnull align 8 dereferenceable(8) %417)
  %421 = load ptr, ptr %12, align 8, !tbaa !5
  %422 = load ptr, ptr %421, align 8, !tbaa !20
  %423 = getelementptr inbounds ptr, ptr %422, i64 5
  %424 = load ptr, ptr %423, align 8
  call void %424(ptr noundef nonnull align 8 dereferenceable(8) %421)
  %425 = load ptr, ptr %6, align 8, !tbaa !5
  %426 = load ptr, ptr %425, align 8, !tbaa !20
  %427 = getelementptr inbounds ptr, ptr %426, i64 5
  %428 = load ptr, ptr %427, align 8
  call void %428(ptr noundef nonnull align 8 dereferenceable(8) %425)
  %429 = load ptr, ptr %5, align 8, !tbaa !5
  %430 = load ptr, ptr %429, align 8, !tbaa !20
  %431 = getelementptr inbounds ptr, ptr %430, i64 5
  %432 = load ptr, ptr %431, align 8
  call void %432(ptr noundef nonnull align 8 dereferenceable(8) %429)
  %433 = load ptr, ptr %7, align 8, !tbaa !5
  %434 = load ptr, ptr %433, align 8, !tbaa !20
  %435 = getelementptr inbounds ptr, ptr %434, i64 5
  %436 = load ptr, ptr %435, align 8
  call void %436(ptr noundef nonnull align 8 dereferenceable(8) %433)
  %437 = getelementptr inbounds [11 x i8], ptr %16, i64 0, i64 0
  %438 = load i32, ptr %15, align 4, !tbaa !9
  %439 = add nsw i32 %438, 1
  store i32 %439, ptr %15, align 4, !tbaa !9
  %440 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %437, i64 noundef 11, ptr noundef @.str.15, i32 noundef %438) #8
  %441 = getelementptr inbounds %"class.TPCE::CGenerateAndLoad", ptr %35, i32 0, i32 8
  %442 = load ptr, ptr %441, align 8, !tbaa !22
  %443 = getelementptr inbounds [11 x i8], ptr %16, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef %443, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %444 unwind label %530

444:                                              ; preds = %404
  %445 = load ptr, ptr %442, align 8, !tbaa !20
  %446 = getelementptr inbounds ptr, ptr %445, i64 3
  %447 = load ptr, ptr %446, align 8
  invoke void %447(ptr noundef nonnull align 8 dereferenceable(8) %442, ptr noundef %31)
          to label %448 unwind label %534

448:                                              ; preds = %444
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #8
  br label %449

449:                                              ; preds = %448
  %450 = load ptr, ptr %4, align 8, !tbaa !5
  %451 = call noundef zeroext i1 @_ZN4TPCE9CTradeGen16InitNextLoadUnitEv(ptr noundef nonnull align 8 dereferenceable(7356) %450)
  br i1 %451, label %109, label %452, !llvm.loop !41

452:                                              ; preds = %449
  %453 = load ptr, ptr %5, align 8, !tbaa !5
  %454 = icmp eq ptr %453, null
  br i1 %454, label %459, label %455

455:                                              ; preds = %452
  %456 = load ptr, ptr %453, align 8, !tbaa !20
  %457 = getelementptr inbounds ptr, ptr %456, i64 1
  %458 = load ptr, ptr %457, align 8
  call void %458(ptr noundef nonnull align 8 dereferenceable(8) %453) #8
  br label %459

459:                                              ; preds = %455, %452
  %460 = load ptr, ptr %6, align 8, !tbaa !5
  %461 = icmp eq ptr %460, null
  br i1 %461, label %466, label %462

462:                                              ; preds = %459
  %463 = load ptr, ptr %460, align 8, !tbaa !20
  %464 = getelementptr inbounds ptr, ptr %463, i64 1
  %465 = load ptr, ptr %464, align 8
  call void %465(ptr noundef nonnull align 8 dereferenceable(8) %460) #8
  br label %466

466:                                              ; preds = %462, %459
  %467 = load ptr, ptr %7, align 8, !tbaa !5
  %468 = icmp eq ptr %467, null
  br i1 %468, label %473, label %469

469:                                              ; preds = %466
  %470 = load ptr, ptr %467, align 8, !tbaa !20
  %471 = getelementptr inbounds ptr, ptr %470, i64 1
  %472 = load ptr, ptr %471, align 8
  call void %472(ptr noundef nonnull align 8 dereferenceable(8) %467) #8
  br label %473

473:                                              ; preds = %469, %466
  %474 = load ptr, ptr %8, align 8, !tbaa !5
  %475 = icmp eq ptr %474, null
  br i1 %475, label %480, label %476

476:                                              ; preds = %473
  %477 = load ptr, ptr %474, align 8, !tbaa !20
  %478 = getelementptr inbounds ptr, ptr %477, i64 1
  %479 = load ptr, ptr %478, align 8
  call void %479(ptr noundef nonnull align 8 dereferenceable(8) %474) #8
  br label %480

480:                                              ; preds = %476, %473
  %481 = load ptr, ptr %9, align 8, !tbaa !5
  %482 = icmp eq ptr %481, null
  br i1 %482, label %487, label %483

483:                                              ; preds = %480
  %484 = load ptr, ptr %481, align 8, !tbaa !20
  %485 = getelementptr inbounds ptr, ptr %484, i64 1
  %486 = load ptr, ptr %485, align 8
  call void %486(ptr noundef nonnull align 8 dereferenceable(8) %481) #8
  br label %487

487:                                              ; preds = %483, %480
  %488 = load ptr, ptr %10, align 8, !tbaa !5
  %489 = icmp eq ptr %488, null
  br i1 %489, label %494, label %490

490:                                              ; preds = %487
  %491 = load ptr, ptr %488, align 8, !tbaa !20
  %492 = getelementptr inbounds ptr, ptr %491, i64 1
  %493 = load ptr, ptr %492, align 8
  call void %493(ptr noundef nonnull align 8 dereferenceable(8) %488) #8
  br label %494

494:                                              ; preds = %490, %487
  %495 = load ptr, ptr %11, align 8, !tbaa !5
  %496 = icmp eq ptr %495, null
  br i1 %496, label %501, label %497

497:                                              ; preds = %494
  %498 = load ptr, ptr %495, align 8, !tbaa !20
  %499 = getelementptr inbounds ptr, ptr %498, i64 1
  %500 = load ptr, ptr %499, align 8
  call void %500(ptr noundef nonnull align 8 dereferenceable(8) %495) #8
  br label %501

501:                                              ; preds = %497, %494
  %502 = load ptr, ptr %12, align 8, !tbaa !5
  %503 = icmp eq ptr %502, null
  br i1 %503, label %508, label %504

504:                                              ; preds = %501
  %505 = load ptr, ptr %502, align 8, !tbaa !20
  %506 = getelementptr inbounds ptr, ptr %505, i64 1
  %507 = load ptr, ptr %506, align 8
  call void %507(ptr noundef nonnull align 8 dereferenceable(8) %502) #8
  br label %508

508:                                              ; preds = %504, %501
  %509 = load ptr, ptr %4, align 8, !tbaa !5
  %510 = icmp eq ptr %509, null
  br i1 %510, label %512, label %511

511:                                              ; preds = %508
  call void @_ZN4TPCE9CTradeGenD1Ev(ptr noundef nonnull align 8 dereferenceable(7356) %509) #8
  call void @_ZdlPvm(ptr noundef %509, i64 noundef 7360) #10
  br label %512

512:                                              ; preds = %511, %508
  %513 = getelementptr inbounds %"class.TPCE::CGenerateAndLoad", ptr %35, i32 0, i32 8
  %514 = load ptr, ptr %513, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef @.str.16, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %515 unwind label %539

515:                                              ; preds = %512
  %516 = load ptr, ptr %514, align 8, !tbaa !20
  %517 = getelementptr inbounds ptr, ptr %516, i64 4
  %518 = load ptr, ptr %517, align 8
  invoke void %518(ptr noundef nonnull align 8 dereferenceable(8) %514, ptr noundef %33)
          to label %519 unwind label %543

519:                                              ; preds = %515
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #8
  %520 = getelementptr inbounds %"class.TPCE::CGenerateAndLoad", ptr %35, i32 0, i32 8
  %521 = load ptr, ptr %520, align 8, !tbaa !22
  %522 = load ptr, ptr %521, align 8, !tbaa !20
  %523 = getelementptr inbounds ptr, ptr %522, i64 5
  %524 = load ptr, ptr %523, align 8
  call void %524(ptr noundef nonnull align 8 dereferenceable(8) %521)
  %525 = getelementptr inbounds %"class.TPCE::CGenerateAndLoad", ptr %35, i32 0, i32 8
  %526 = load ptr, ptr %525, align 8, !tbaa !22
  %527 = load ptr, ptr %526, align 8, !tbaa !20
  %528 = getelementptr inbounds ptr, ptr %527, i64 5
  %529 = load ptr, ptr %528, align 8
  call void %529(ptr noundef nonnull align 8 dereferenceable(8) %526)
  call void @llvm.lifetime.end.p0(i64 11, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %3) #8
  ret void

530:                                              ; preds = %404
  %531 = landingpad { ptr, i32 }
          cleanup
  %532 = extractvalue { ptr, i32 } %531, 0
  store ptr %532, ptr %19, align 8
  %533 = extractvalue { ptr, i32 } %531, 1
  store i32 %533, ptr %20, align 4
  br label %538

534:                                              ; preds = %444
  %535 = landingpad { ptr, i32 }
          cleanup
  %536 = extractvalue { ptr, i32 } %535, 0
  store ptr %536, ptr %19, align 8
  %537 = extractvalue { ptr, i32 } %535, 1
  store i32 %537, ptr %20, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  br label %538

538:                                              ; preds = %534, %530
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #8
  br label %548

539:                                              ; preds = %512
  %540 = landingpad { ptr, i32 }
          cleanup
  %541 = extractvalue { ptr, i32 } %540, 0
  store ptr %541, ptr %19, align 8
  %542 = extractvalue { ptr, i32 } %540, 1
  store i32 %542, ptr %20, align 4
  br label %547

543:                                              ; preds = %515
  %544 = landingpad { ptr, i32 }
          cleanup
  %545 = extractvalue { ptr, i32 } %544, 0
  store ptr %545, ptr %19, align 8
  %546 = extractvalue { ptr, i32 } %544, 1
  store i32 %546, ptr %20, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  br label %547

547:                                              ; preds = %543, %539
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #8
  br label %548

548:                                              ; preds = %547, %538, %390, %345, %336, %244, %183, %176
  call void @llvm.lifetime.end.p0(i64 11, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %3) #8
  br label %549

549:                                              ; preds = %548
  %550 = load ptr, ptr %19, align 8
  %551 = load i32, ptr %20, align 4
  %552 = insertvalue { ptr, i32 } poison, ptr %550, 0
  %553 = insertvalue { ptr, i32 } %552, i32 %551, 1
  resume { ptr, i32 } %553
}

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

declare void @_ZN4TPCE9CTradeGenC1ENS_11CInputFilesExxxjjjb(ptr noundef nonnull align 8 dereferenceable(7356), ptr noundef, i64 noundef, i64 noundef, i64 noundef, i32 noundef, i32 noundef, i32 noundef, i1 noundef zeroext) unnamed_addr #5

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

declare noundef zeroext i1 @_ZN4TPCE9CTradeGen17GenerateNextTradeEv(ptr noundef nonnull align 8 dereferenceable(7356)) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN4TPCE9CTradeGen11GetTradeRowEv(ptr noundef nonnull align 8 dereferenceable(7356)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN4TPCE9CTradeGen23GetTradeHistoryRowCountEv(ptr noundef nonnull align 8 dereferenceable(7356)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN4TPCE9CTradeGen18GetTradeHistoryRowEi(ptr noundef nonnull align 8 dereferenceable(7356), i32 noundef) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN4TPCE9CTradeGen21GetSettlementRowCountEv(ptr noundef nonnull align 8 dereferenceable(7356)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN4TPCE9CTradeGen16GetSettlementRowEv(ptr noundef nonnull align 8 dereferenceable(7356)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN4TPCE9CTradeGen26GetCashTransactionRowCountEv(ptr noundef nonnull align 8 dereferenceable(7356)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN4TPCE9CTradeGen21GetCashTransactionRowEv(ptr noundef nonnull align 8 dereferenceable(7356)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN4TPCE9CTradeGen25GetHoldingHistoryRowCountEv(ptr noundef nonnull align 8 dereferenceable(7356)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN4TPCE9CTradeGen20GetHoldingHistoryRowEi(ptr noundef nonnull align 8 dereferenceable(7356), i32 noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN4TPCE9CTradeGen24GenerateNextBrokerRecordEv(ptr noundef nonnull align 8 dereferenceable(7356)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN4TPCE9CTradeGen12GetBrokerRowEv(ptr noundef nonnull align 8 dereferenceable(7356)) #3 align 2

declare noundef zeroext i1 @_ZN4TPCE9CTradeGen29GenerateNextHoldingSummaryRowEv(ptr noundef nonnull align 8 dereferenceable(7356)) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN4TPCE9CTradeGen20GetHoldingSummaryRowEv(ptr noundef nonnull align 8 dereferenceable(7356)) #1 align 2

declare noundef zeroext i1 @_ZN4TPCE9CTradeGen19GenerateNextHoldingEv(ptr noundef nonnull align 8 dereferenceable(7356)) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN4TPCE9CTradeGen13GetHoldingRowEv(ptr noundef nonnull align 8 dereferenceable(7356)) #1 align 2

; Function Attrs: nounwind
declare i32 @snprintf(ptr noundef, i64 noundef, ptr noundef, ...) #7

declare noundef zeroext i1 @_ZN4TPCE9CTradeGen16InitNextLoadUnitEv(ptr noundef nonnull align 8 dereferenceable(7356)) #5

; Function Attrs: nounwind
declare void @_ZN4TPCE9CTradeGenD1Ev(ptr noundef nonnull align 8 dereferenceable(7356)) unnamed_addr #7

attributes #0 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { 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 #5 = { "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 = { 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 #7 = { 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 #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 = !{!"int", !7, i64 0}
!11 = !{!12, !6, i64 224}
!12 = !{!"_ZTSN4TPCE16CGenerateAndLoadE", !13, i64 0, !14, i64 184, !14, i64 192, !14, i64 200, !10, i64 208, !10, i64 212, !10, i64 216, !6, i64 224, !6, i64 232, !7, i64 240, !6, i64 752, !15, i64 760, !19, i64 856, !6, i64 864, !6, i64 872, !6, i64 880, !6, i64 888, !6, i64 896, !6, i64 904, !6, i64 912, !6, i64 920, !6, i64 928, !6, i64 936, !6, i64 944, !6, i64 952, !6, i64 960, !6, i64 968, !6, i64 976, !6, i64 984, !6, i64 992, !6, i64 1000, !6, i64 1008, !6, i64 1016, !6, i64 1024, !6, i64 1032}
!13 = !{!"_ZTSN4TPCE11CInputFilesE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176}
!14 = !{!"long long", !7, i64 0}
!15 = !{!"_ZTSN4TPCE15CLoaderSettingsE", !16, i64 0}
!16 = !{!"_ZTSN4TPCE23CParametersWithDefaultsINS_15TLoaderSettingsENS_20TLoaderSettingsStateEEE", !17, i64 8, !18, i64 48, !17, i64 56}
!17 = !{!"_ZTSN4TPCE15TLoaderSettingsE", !14, i64 0, !14, i64 8, !10, i64 16, !10, i64 20, !14, i64 24, !14, i64 32}
!18 = !{!"_ZTSN4TPCE20TLoaderSettingsStateE", !19, i64 0, !19, i64 1, !19, i64 2, !19, i64 3, !19, i64 4, !19, i64 5}
!19 = !{!"bool", !7, i64 0}
!20 = !{!21, !21, i64 0}
!21 = !{!"vtable pointer", !8, i64 0}
!22 = !{!12, !6, i64 232}
!23 = !{i64 0, i64 8, !5, i64 8, i64 8, !5, i64 16, i64 8, !5, i64 24, i64 8, !5, i64 32, i64 8, !5, i64 40, i64 8, !5, i64 48, i64 8, !5, i64 56, i64 8, !5, i64 64, i64 8, !5, i64 72, i64 8, !5, i64 80, i64 8, !5, i64 88, i64 8, !5, i64 96, i64 8, !5, i64 104, i64 8, !5, i64 112, i64 8, !5, i64 120, i64 8, !5, i64 128, i64 8, !5, i64 136, i64 8, !5, i64 144, i64 8, !5, i64 152, i64 8, !5, i64 160, i64 8, !5, i64 168, i64 8, !5, i64 176, i64 8, !5}
!24 = !{!12, !14, i64 192}
!25 = !{!12, !14, i64 184}
!26 = !{!12, !14, i64 200}
!27 = !{!12, !10, i64 208}
!28 = !{!12, !10, i64 212}
!29 = !{!12, !10, i64 216}
!30 = !{!12, !19, i64 856}
!31 = !{i8 0, i8 2}
!32 = !{}
!33 = !{!19, !19, i64 0}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = distinct !{!36, !35}
!37 = distinct !{!37, !35}
!38 = distinct !{!38, !35}
!39 = distinct !{!39, !35}
!40 = distinct !{!40, !35}
!41 = distinct !{!41, !35}


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%"class.TPCE::CInputFiles" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }

@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [9 x i8], align 1

; 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) #0

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4TPCE11CInputFilesD2Ev(ptr noundef nonnull align 8 dereferenceable(184)) unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4TPCE16CGenerateAndLoad30GenerateAndLoadHoldingAndTradeEv(ptr nocapture noundef nonnull readonly align 8 dereferenceable(1040) %0) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca [11 x i8], align 1
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.std::allocator", align 1
  %5 = alloca %"class.TPCE::CInputFiles", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::allocator", align 1
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::allocator", align 1
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::allocator", align 1
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::allocator", align 1
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator", align 1
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator", align 1
  call void @llvm.lifetime.start.p0(i64 11, ptr nonnull %2) #9
  %18 = getelementptr inbounds i8, ptr %0, i64 224
  %19 = load ptr, ptr %18, align 8, !tbaa !5
  %20 = load ptr, ptr %19, align 8, !tbaa !18
  %21 = getelementptr inbounds i8, ptr %20, i64 128
  %22 = load ptr, ptr %21, align 8
  %23 = tail call noundef ptr %22(ptr noundef nonnull align 8 dereferenceable(8) %19)
  %24 = load ptr, ptr %18, align 8, !tbaa !5
  %25 = load ptr, ptr %24, align 8, !tbaa !18
  %26 = getelementptr inbounds i8, ptr %25, i64 136
  %27 = load ptr, ptr %26, align 8
  %28 = tail call noundef ptr %27(ptr noundef nonnull align 8 dereferenceable(8) %24)
  %29 = load ptr, ptr %18, align 8, !tbaa !5
  %30 = load ptr, ptr %29, align 8, !tbaa !18
  %31 = getelementptr inbounds i8, ptr %30, i64 144
  %32 = load ptr, ptr %31, align 8
  %33 = tail call noundef ptr %32(ptr noundef nonnull align 8 dereferenceable(8) %29)
  %34 = load ptr, ptr %18, align 8, !tbaa !5
  %35 = load ptr, ptr %34, align 8, !tbaa !18
  %36 = getelementptr inbounds i8, ptr %35, i64 232
  %37 = load ptr, ptr %36, align 8
  %38 = tail call noundef ptr %37(ptr noundef nonnull align 8 dereferenceable(8) %34)
  %39 = load ptr, ptr %18, align 8, !tbaa !5
  %40 = load ptr, ptr %39, align 8, !tbaa !18
  %41 = getelementptr inbounds i8, ptr %40, i64 200
  %42 = load ptr, ptr %41, align 8
  %43 = tail call noundef ptr %42(ptr noundef nonnull align 8 dereferenceable(8) %39)
  %44 = load ptr, ptr %18, align 8, !tbaa !5
  %45 = load ptr, ptr %44, align 8, !tbaa !18
  %46 = getelementptr inbounds i8, ptr %45, i64 224
  %47 = load ptr, ptr %46, align 8
  %48 = tail call noundef ptr %47(ptr noundef nonnull align 8 dereferenceable(8) %44)
  %49 = load ptr, ptr %18, align 8, !tbaa !5
  %50 = load ptr, ptr %49, align 8, !tbaa !18
  %51 = getelementptr inbounds i8, ptr %50, i64 40
  %52 = load ptr, ptr %51, align 8
  %53 = tail call noundef ptr %52(ptr noundef nonnull align 8 dereferenceable(8) %49)
  %54 = load ptr, ptr %18, align 8, !tbaa !5
  %55 = load ptr, ptr %54, align 8, !tbaa !18
  %56 = getelementptr inbounds i8, ptr %55, i64 32
  %57 = load ptr, ptr %56, align 8
  %58 = tail call noundef ptr %57(ptr noundef nonnull align 8 dereferenceable(8) %54)
  %59 = getelementptr inbounds i8, ptr %0, i64 232
  %60 = load ptr, ptr %59, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str.13, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %61 unwind label %123

61:                                               ; preds = %1
  %62 = load ptr, ptr %60, align 8, !tbaa !18
  %63 = getelementptr inbounds i8, ptr %62, i64 16
  %64 = load ptr, ptr %63, align 8
  invoke void %64(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull %3)
          to label %65 unwind label %125

65:                                               ; preds = %61
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #9
  %66 = call noalias noundef nonnull dereferenceable(7360) ptr @_Znwm(i64 noundef 7360) #10
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(184) %5, ptr noundef nonnull align 8 dereferenceable(184) %0, i64 184, i1 false), !tbaa.struct !21
  %67 = getelementptr inbounds i8, ptr %0, i64 192
  %68 = load i64, ptr %67, align 8, !tbaa !23
  %69 = getelementptr inbounds i8, ptr %0, i64 184
  %70 = load i64, ptr %69, align 8, !tbaa !24
  %71 = getelementptr inbounds i8, ptr %0, i64 200
  %72 = load i64, ptr %71, align 8, !tbaa !25
  %73 = getelementptr inbounds i8, ptr %0, i64 208
  %74 = load i32, ptr %73, align 8, !tbaa !26
  %75 = getelementptr inbounds i8, ptr %0, i64 212
  %76 = load i32, ptr %75, align 4, !tbaa !27
  %77 = getelementptr inbounds i8, ptr %0, i64 216
  %78 = load i32, ptr %77, align 8, !tbaa !28
  %79 = getelementptr inbounds i8, ptr %0, i64 856
  %80 = load i8, ptr %79, align 8, !tbaa !29, !range !30, !noundef !31
  %81 = trunc nuw i8 %80 to i1
  invoke void @_ZN4TPCE9CTradeGenC1ENS_11CInputFilesExxxjjjb(ptr noundef nonnull align 8 dereferenceable(7356) %66, ptr noundef nonnull %5, i64 noundef %68, i64 noundef %70, i64 noundef %72, i32 noundef %74, i32 noundef %76, i32 noundef %78, i1 noundef zeroext %81)
          to label %82 unwind label %128

82:                                               ; preds = %65
  call void @_ZN4TPCE11CInputFilesD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %5) #9
  br label %83

83:                                               ; preds = %287, %82
  %.090 = phi i32 [ 0, %82 ], [ %237, %287 ]
  %.087 = phi i32 [ 1, %82 ], [ %280, %287 ]
  %84 = load ptr, ptr %38, align 8, !tbaa !18
  %85 = getelementptr inbounds i8, ptr %84, i64 16
  %86 = load ptr, ptr %85, align 8
  call void %86(ptr noundef nonnull align 8 dereferenceable(8) %38)
  %87 = load ptr, ptr %43, align 8, !tbaa !18
  %88 = getelementptr inbounds i8, ptr %87, i64 16
  %89 = load ptr, ptr %88, align 8
  call void %89(ptr noundef nonnull align 8 dereferenceable(8) %43)
  %90 = load ptr, ptr %48, align 8, !tbaa !18
  %91 = getelementptr inbounds i8, ptr %90, i64 16
  %92 = load ptr, ptr %91, align 8
  call void %92(ptr noundef nonnull align 8 dereferenceable(8) %48)
  %93 = load ptr, ptr %53, align 8, !tbaa !18
  %94 = getelementptr inbounds i8, ptr %93, i64 16
  %95 = load ptr, ptr %94, align 8
  call void %95(ptr noundef nonnull align 8 dereferenceable(8) %53)
  %96 = load ptr, ptr %58, align 8, !tbaa !18
  %97 = getelementptr inbounds i8, ptr %96, i64 16
  %98 = load ptr, ptr %97, align 8
  call void %98(ptr noundef nonnull align 8 dereferenceable(8) %58)
  %99 = load ptr, ptr %28, align 8, !tbaa !18
  %100 = getelementptr inbounds i8, ptr %99, i64 16
  %101 = load ptr, ptr %100, align 8
  call void %101(ptr noundef nonnull align 8 dereferenceable(8) %28)
  %102 = load ptr, ptr %23, align 8, !tbaa !18
  %103 = getelementptr inbounds i8, ptr %102, i64 16
  %104 = load ptr, ptr %103, align 8
  call void %104(ptr noundef nonnull align 8 dereferenceable(8) %23)
  %105 = load ptr, ptr %33, align 8, !tbaa !18
  %106 = getelementptr inbounds i8, ptr %105, i64 16
  %107 = load ptr, ptr %106, align 8
  call void %107(ptr noundef nonnull align 8 dereferenceable(8) %33)
  br label %108

108:                                              ; preds = %.critedge, %83
  %.191 = phi i32 [ %.090, %83 ], [ %153, %.critedge ]
  %109 = call noundef zeroext i1 @_ZN4TPCE9CTradeGen17GenerateNextTradeEv(ptr noundef nonnull align 8 dereferenceable(7356) %66)
  %110 = call noundef ptr @_ZN4TPCE9CTradeGen11GetTradeRowEv(ptr noundef nonnull align 8 dereferenceable(7356) %66)
  %111 = load ptr, ptr %38, align 8, !tbaa !18
  %112 = getelementptr inbounds i8, ptr %111, i64 24
  %113 = load ptr, ptr %112, align 8
  call void %113(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef %110)
  %114 = call noundef i32 @_ZN4TPCE9CTradeGen23GetTradeHistoryRowCountEv(ptr noundef nonnull align 8 dereferenceable(7356) %66)
  %115 = icmp sgt i32 %114, 0
  br i1 %115, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %108, %.lr.ph
  %.088123 = phi i32 [ %120, %.lr.ph ], [ 0, %108 ]
  %116 = call noundef ptr @_ZN4TPCE9CTradeGen18GetTradeHistoryRowEi(ptr noundef nonnull align 8 dereferenceable(7356) %66, i32 noundef %.088123)
  %117 = load ptr, ptr %48, align 8, !tbaa !18
  %118 = getelementptr inbounds i8, ptr %117, i64 24
  %119 = load ptr, ptr %118, align 8
  call void %119(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef %116)
  %120 = add nuw nsw i32 %.088123, 1
  %121 = call noundef i32 @_ZN4TPCE9CTradeGen23GetTradeHistoryRowCountEv(ptr noundef nonnull align 8 dereferenceable(7356) %66)
  %122 = icmp slt i32 %120, %121
  br i1 %122, label %.lr.ph, label %._crit_edge, !llvm.loop !32

123:                                              ; preds = %1
  %124 = landingpad { ptr, i32 }
          cleanup
  br label %127

125:                                              ; preds = %61
  %126 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #9
  br label %127

127:                                              ; preds = %125, %123
  %.pn = phi { ptr, i32 } [ %126, %125 ], [ %124, %123 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #9
  br label %338

128:                                              ; preds = %65
  %129 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4TPCE11CInputFilesD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %5) #9
  call void @_ZdlPvm(ptr noundef nonnull %66, i64 noundef 7360) #11
  br label %338

._crit_edge:                                      ; preds = %.lr.ph, %108
  %130 = call noundef i32 @_ZN4TPCE9CTradeGen21GetSettlementRowCountEv(ptr noundef nonnull align 8 dereferenceable(7356) %66)
  %.not = icmp eq i32 %130, 0
  br i1 %.not, label %136, label %131

131:                                              ; preds = %._crit_edge
  %132 = call noundef ptr @_ZN4TPCE9CTradeGen16GetSettlementRowEv(ptr noundef nonnull align 8 dereferenceable(7356) %66)
  %133 = load ptr, ptr %43, align 8, !tbaa !18
  %134 = getelementptr inbounds i8, ptr %133, i64 24
  %135 = load ptr, ptr %134, align 8
  call void %135(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef %132)
  br label %136

136:                                              ; preds = %131, %._crit_edge
  %137 = call noundef i32 @_ZN4TPCE9CTradeGen26GetCashTransactionRowCountEv(ptr noundef nonnull align 8 dereferenceable(7356) %66)
  %.not96 = icmp eq i32 %137, 0
  br i1 %.not96, label %143, label %138

138:                                              ; preds = %136
  %139 = call noundef ptr @_ZN4TPCE9CTradeGen21GetCashTransactionRowEv(ptr noundef nonnull align 8 dereferenceable(7356) %66)
  %140 = load ptr, ptr %53, align 8, !tbaa !18
  %141 = getelementptr inbounds i8, ptr %140, i64 24
  %142 = load ptr, ptr %141, align 8
  call void %142(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef %139)
  br label %143

143:                                              ; preds = %138, %136
  %144 = call noundef i32 @_ZN4TPCE9CTradeGen25GetHoldingHistoryRowCountEv(ptr noundef nonnull align 8 dereferenceable(7356) %66)
  %145 = icmp sgt i32 %144, 0
  br i1 %145, label %.lr.ph126, label %._crit_edge127

.lr.ph126:                                        ; preds = %143, %.lr.ph126
  %.189124 = phi i32 [ %150, %.lr.ph126 ], [ 0, %143 ]
  %146 = call noundef ptr @_ZN4TPCE9CTradeGen20GetHoldingHistoryRowEi(ptr noundef nonnull align 8 dereferenceable(7356) %66, i32 noundef %.189124)
  %147 = load ptr, ptr %28, align 8, !tbaa !18
  %148 = getelementptr inbounds i8, ptr %147, i64 24
  %149 = load ptr, ptr %148, align 8
  call void %149(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef %146)
  %150 = add nuw nsw i32 %.189124, 1
  %151 = call noundef i32 @_ZN4TPCE9CTradeGen25GetHoldingHistoryRowCountEv(ptr noundef nonnull align 8 dereferenceable(7356) %66)
  %152 = icmp slt i32 %150, %151
  br i1 %152, label %.lr.ph126, label %._crit_edge127, !llvm.loop !34

._crit_edge127:                                   ; preds = %.lr.ph126, %143
  %153 = add nsw i32 %.191, 1
  %154 = srem i32 %153, 10000
  %155 = icmp eq i32 %154, 0
  br i1 %155, label %156, label %.critedge

156:                                              ; preds = %._crit_edge127
  %157 = load ptr, ptr %59, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %158 unwind label %162

158:                                              ; preds = %156
  %159 = load ptr, ptr %157, align 8, !tbaa !18
  %160 = getelementptr inbounds i8, ptr %159, i64 24
  %161 = load ptr, ptr %160, align 8
  invoke void %161(ptr noundef nonnull align 8 dereferenceable(8) %157, ptr noundef nonnull %6)
          to label %167 unwind label %164

162:                                              ; preds = %156
  %163 = landingpad { ptr, i32 }
          cleanup
  br label %166

164:                                              ; preds = %158
  %165 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #9
  br label %166

166:                                              ; preds = %164, %162
  %.pn97 = phi { ptr, i32 } [ %165, %164 ], [ %163, %162 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #9
  br label %338

167:                                              ; preds = %158
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #9
  %168 = load ptr, ptr %38, align 8, !tbaa !18
  %169 = getelementptr inbounds i8, ptr %168, i64 32
  %170 = load ptr, ptr %169, align 8
  call void %170(ptr noundef nonnull align 8 dereferenceable(8) %38)
  %171 = load ptr, ptr %43, align 8, !tbaa !18
  %172 = getelementptr inbounds i8, ptr %171, i64 32
  %173 = load ptr, ptr %172, align 8
  call void %173(ptr noundef nonnull align 8 dereferenceable(8) %43)
  %174 = load ptr, ptr %48, align 8, !tbaa !18
  %175 = getelementptr inbounds i8, ptr %174, i64 32
  %176 = load ptr, ptr %175, align 8
  call void %176(ptr noundef nonnull align 8 dereferenceable(8) %48)
  %177 = load ptr, ptr %53, align 8, !tbaa !18
  %178 = getelementptr inbounds i8, ptr %177, i64 32
  %179 = load ptr, ptr %178, align 8
  call void %179(ptr noundef nonnull align 8 dereferenceable(8) %53)
  %180 = load ptr, ptr %28, align 8, !tbaa !18
  %181 = getelementptr inbounds i8, ptr %180, i64 32
  %182 = load ptr, ptr %181, align 8
  call void %182(ptr noundef nonnull align 8 dereferenceable(8) %28)
  br label %.critedge

.critedge:                                        ; preds = %._crit_edge127, %167
  br i1 %109, label %108, label %.preheader114, !llvm.loop !35

.preheader114:                                    ; preds = %.critedge, %195
  %.292 = phi i32 [ %188, %195 ], [ %153, %.critedge ]
  %183 = call noundef zeroext i1 @_ZN4TPCE9CTradeGen24GenerateNextBrokerRecordEv(ptr noundef nonnull align 8 dereferenceable(7356) %66)
  %184 = call noundef ptr @_ZN4TPCE9CTradeGen12GetBrokerRowEv(ptr noundef nonnull align 8 dereferenceable(7356) %66)
  %185 = load ptr, ptr %58, align 8, !tbaa !18
  %186 = getelementptr inbounds i8, ptr %185, i64 24
  %187 = load ptr, ptr %186, align 8
  call void %187(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef %184)
  %188 = add nsw i32 %.292, 1
  %189 = srem i32 %188, 10000
  %190 = icmp eq i32 %189, 0
  br i1 %190, label %191, label %195

191:                                              ; preds = %.preheader114
  %192 = load ptr, ptr %58, align 8, !tbaa !18
  %193 = getelementptr inbounds i8, ptr %192, i64 32
  %194 = load ptr, ptr %193, align 8
  call void %194(ptr noundef nonnull align 8 dereferenceable(8) %58)
  br label %195

195:                                              ; preds = %.preheader114, %191
  br i1 %183, label %.preheader114, label %196, !llvm.loop !36

196:                                              ; preds = %195
  %197 = load ptr, ptr %59, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.14, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %198 unwind label %218

198:                                              ; preds = %196
  %199 = load ptr, ptr %197, align 8, !tbaa !18
  %200 = getelementptr inbounds i8, ptr %199, i64 24
  %201 = load ptr, ptr %200, align 8
  invoke void %201(ptr noundef nonnull align 8 dereferenceable(8) %197, ptr noundef nonnull %8)
          to label %202 unwind label %220

202:                                              ; preds = %198
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #9
  br label %203

203:                                              ; preds = %.critedge111, %202
  %.393 = phi i32 [ %188, %202 ], [ %209, %.critedge111 ]
  %204 = call noundef zeroext i1 @_ZN4TPCE9CTradeGen29GenerateNextHoldingSummaryRowEv(ptr noundef nonnull align 8 dereferenceable(7356) %66)
  %205 = call noundef ptr @_ZN4TPCE9CTradeGen20GetHoldingSummaryRowEv(ptr noundef nonnull align 8 dereferenceable(7356) %66)
  %206 = load ptr, ptr %33, align 8, !tbaa !18
  %207 = getelementptr inbounds i8, ptr %206, i64 24
  %208 = load ptr, ptr %207, align 8
  call void %208(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef %205)
  %209 = add nsw i32 %.393, 1
  %210 = srem i32 %209, 10000
  %211 = icmp eq i32 %210, 0
  br i1 %211, label %212, label %.critedge111

212:                                              ; preds = %203
  %213 = load ptr, ptr %59, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %214 unwind label %223

214:                                              ; preds = %212
  %215 = load ptr, ptr %213, align 8, !tbaa !18
  %216 = getelementptr inbounds i8, ptr %215, i64 24
  %217 = load ptr, ptr %216, align 8
  invoke void %217(ptr noundef nonnull align 8 dereferenceable(8) %213, ptr noundef nonnull %10)
          to label %228 unwind label %225

218:                                              ; preds = %196
  %219 = landingpad { ptr, i32 }
          cleanup
  br label %222

220:                                              ; preds = %198
  %221 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  br label %222

222:                                              ; preds = %220, %218
  %.pn99 = phi { ptr, i32 } [ %221, %220 ], [ %219, %218 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #9
  br label %338

223:                                              ; preds = %212
  %224 = landingpad { ptr, i32 }
          cleanup
  br label %227

225:                                              ; preds = %214
  %226 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  br label %227

227:                                              ; preds = %225, %223
  %.pn101 = phi { ptr, i32 } [ %226, %225 ], [ %224, %223 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #9
  br label %338

228:                                              ; preds = %214
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #9
  %229 = load ptr, ptr %33, align 8, !tbaa !18
  %230 = getelementptr inbounds i8, ptr %229, i64 32
  %231 = load ptr, ptr %230, align 8
  call void %231(ptr noundef nonnull align 8 dereferenceable(8) %33)
  br label %.critedge111

.critedge111:                                     ; preds = %203, %228
  br i1 %204, label %203, label %.preheader, !llvm.loop !37

.preheader:                                       ; preds = %.critedge111, %.critedge113
  %.494 = phi i32 [ %237, %.critedge113 ], [ %209, %.critedge111 ]
  %232 = call noundef zeroext i1 @_ZN4TPCE9CTradeGen19GenerateNextHoldingEv(ptr noundef nonnull align 8 dereferenceable(7356) %66)
  %233 = call noundef ptr @_ZN4TPCE9CTradeGen13GetHoldingRowEv(ptr noundef nonnull align 8 dereferenceable(7356) %66)
  %234 = load ptr, ptr %23, align 8, !tbaa !18
  %235 = getelementptr inbounds i8, ptr %234, i64 24
  %236 = load ptr, ptr %235, align 8
  call void %236(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef %233)
  %237 = add nsw i32 %.494, 1
  %238 = srem i32 %237, 10000
  %239 = icmp eq i32 %238, 0
  br i1 %239, label %240, label %.critedge113

240:                                              ; preds = %.preheader
  %241 = load ptr, ptr %59, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %242 unwind label %246

242:                                              ; preds = %240
  %243 = load ptr, ptr %241, align 8, !tbaa !18
  %244 = getelementptr inbounds i8, ptr %243, i64 24
  %245 = load ptr, ptr %244, align 8
  invoke void %245(ptr noundef nonnull align 8 dereferenceable(8) %241, ptr noundef nonnull %12)
          to label %251 unwind label %248

246:                                              ; preds = %240
  %247 = landingpad { ptr, i32 }
          cleanup
  br label %250

248:                                              ; preds = %242
  %249 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  br label %250

250:                                              ; preds = %248, %246
  %.pn103 = phi { ptr, i32 } [ %249, %248 ], [ %247, %246 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #9
  br label %338

251:                                              ; preds = %242
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #9
  %252 = load ptr, ptr %23, align 8, !tbaa !18
  %253 = getelementptr inbounds i8, ptr %252, i64 32
  %254 = load ptr, ptr %253, align 8
  call void %254(ptr noundef nonnull align 8 dereferenceable(8) %23)
  br label %.critedge113

.critedge113:                                     ; preds = %.preheader, %251
  br i1 %232, label %.preheader, label %255, !llvm.loop !38

255:                                              ; preds = %.critedge113
  %256 = load ptr, ptr %38, align 8, !tbaa !18
  %257 = getelementptr inbounds i8, ptr %256, i64 40
  %258 = load ptr, ptr %257, align 8
  call void %258(ptr noundef nonnull align 8 dereferenceable(8) %38)
  %259 = load ptr, ptr %43, align 8, !tbaa !18
  %260 = getelementptr inbounds i8, ptr %259, i64 40
  %261 = load ptr, ptr %260, align 8
  call void %261(ptr noundef nonnull align 8 dereferenceable(8) %43)
  %262 = load ptr, ptr %48, align 8, !tbaa !18
  %263 = getelementptr inbounds i8, ptr %262, i64 40
  %264 = load ptr, ptr %263, align 8
  call void %264(ptr noundef nonnull align 8 dereferenceable(8) %48)
  %265 = load ptr, ptr %53, align 8, !tbaa !18
  %266 = getelementptr inbounds i8, ptr %265, i64 40
  %267 = load ptr, ptr %266, align 8
  call void %267(ptr noundef nonnull align 8 dereferenceable(8) %53)
  %268 = load ptr, ptr %58, align 8, !tbaa !18
  %269 = getelementptr inbounds i8, ptr %268, i64 40
  %270 = load ptr, ptr %269, align 8
  call void %270(ptr noundef nonnull align 8 dereferenceable(8) %58)
  %271 = load ptr, ptr %28, align 8, !tbaa !18
  %272 = getelementptr inbounds i8, ptr %271, i64 40
  %273 = load ptr, ptr %272, align 8
  call void %273(ptr noundef nonnull align 8 dereferenceable(8) %28)
  %274 = load ptr, ptr %23, align 8, !tbaa !18
  %275 = getelementptr inbounds i8, ptr %274, i64 40
  %276 = load ptr, ptr %275, align 8
  call void %276(ptr noundef nonnull align 8 dereferenceable(8) %23)
  %277 = load ptr, ptr %33, align 8, !tbaa !18
  %278 = getelementptr inbounds i8, ptr %277, i64 40
  %279 = load ptr, ptr %278, align 8
  call void %279(ptr noundef nonnull align 8 dereferenceable(8) %33)
  %280 = add nuw nsw i32 %.087, 1
  %281 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %2, i64 noundef 11, ptr noundef nonnull @.str.15, i32 noundef %.087) #9
  %282 = load ptr, ptr %59, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull %2, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %283 unwind label %328

283:                                              ; preds = %255
  %284 = load ptr, ptr %282, align 8, !tbaa !18
  %285 = getelementptr inbounds i8, ptr %284, i64 24
  %286 = load ptr, ptr %285, align 8
  invoke void %286(ptr noundef nonnull align 8 dereferenceable(8) %282, ptr noundef nonnull %14)
          to label %287 unwind label %330

287:                                              ; preds = %283
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #9
  %288 = call noundef zeroext i1 @_ZN4TPCE9CTradeGen16InitNextLoadUnitEv(ptr noundef nonnull align 8 dereferenceable(7356) %66)
  br i1 %288, label %83, label %289, !llvm.loop !39

289:                                              ; preds = %287
  %290 = load ptr, ptr %23, align 8, !tbaa !18
  %291 = getelementptr inbounds i8, ptr %290, i64 8
  %292 = load ptr, ptr %291, align 8
  call void %292(ptr noundef nonnull align 8 dereferenceable(8) %23) #9
  %293 = load ptr, ptr %28, align 8, !tbaa !18
  %294 = getelementptr inbounds i8, ptr %293, i64 8
  %295 = load ptr, ptr %294, align 8
  call void %295(ptr noundef nonnull align 8 dereferenceable(8) %28) #9
  %296 = load ptr, ptr %33, align 8, !tbaa !18
  %297 = getelementptr inbounds i8, ptr %296, i64 8
  %298 = load ptr, ptr %297, align 8
  call void %298(ptr noundef nonnull align 8 dereferenceable(8) %33) #9
  %299 = load ptr, ptr %38, align 8, !tbaa !18
  %300 = getelementptr inbounds i8, ptr %299, i64 8
  %301 = load ptr, ptr %300, align 8
  call void %301(ptr noundef nonnull align 8 dereferenceable(8) %38) #9
  %302 = load ptr, ptr %43, align 8, !tbaa !18
  %303 = getelementptr inbounds i8, ptr %302, i64 8
  %304 = load ptr, ptr %303, align 8
  call void %304(ptr noundef nonnull align 8 dereferenceable(8) %43) #9
  %305 = load ptr, ptr %48, align 8, !tbaa !18
  %306 = getelementptr inbounds i8, ptr %305, i64 8
  %307 = load ptr, ptr %306, align 8
  call void %307(ptr noundef nonnull align 8 dereferenceable(8) %48) #9
  %308 = load ptr, ptr %53, align 8, !tbaa !18
  %309 = getelementptr inbounds i8, ptr %308, i64 8
  %310 = load ptr, ptr %309, align 8
  call void %310(ptr noundef nonnull align 8 dereferenceable(8) %53) #9
  %311 = load ptr, ptr %58, align 8, !tbaa !18
  %312 = getelementptr inbounds i8, ptr %311, i64 8
  %313 = load ptr, ptr %312, align 8
  call void %313(ptr noundef nonnull align 8 dereferenceable(8) %58) #9
  call void @_ZN4TPCE9CTradeGenD1Ev(ptr noundef nonnull align 8 dereferenceable(7356) %66) #9
  call void @_ZdlPvm(ptr noundef nonnull %66, i64 noundef 7360) #11
  %314 = load ptr, ptr %59, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull @.str.16, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %315 unwind label %333

315:                                              ; preds = %289
  %316 = load ptr, ptr %314, align 8, !tbaa !18
  %317 = getelementptr inbounds i8, ptr %316, i64 32
  %318 = load ptr, ptr %317, align 8
  invoke void %318(ptr noundef nonnull align 8 dereferenceable(8) %314, ptr noundef nonnull %16)
          to label %319 unwind label %335

319:                                              ; preds = %315
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #9
  %320 = load ptr, ptr %59, align 8, !tbaa !20
  %321 = load ptr, ptr %320, align 8, !tbaa !18
  %322 = getelementptr inbounds i8, ptr %321, i64 40
  %323 = load ptr, ptr %322, align 8
  call void %323(ptr noundef nonnull align 8 dereferenceable(8) %320)
  %324 = load ptr, ptr %59, align 8, !tbaa !20
  %325 = load ptr, ptr %324, align 8, !tbaa !18
  %326 = getelementptr inbounds i8, ptr %325, i64 40
  %327 = load ptr, ptr %326, align 8
  call void %327(ptr noundef nonnull align 8 dereferenceable(8) %324)
  call void @llvm.lifetime.end.p0(i64 11, ptr nonnull %2) #9
  ret void

328:                                              ; preds = %255
  %329 = landingpad { ptr, i32 }
          cleanup
  br label %332

330:                                              ; preds = %283
  %331 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  br label %332

332:                                              ; preds = %330, %328
  %.pn105 = phi { ptr, i32 } [ %331, %330 ], [ %329, %328 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #9
  br label %338

333:                                              ; preds = %289
  %334 = landingpad { ptr, i32 }
          cleanup
  br label %337

335:                                              ; preds = %315
  %336 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  br label %337

337:                                              ; preds = %335, %333
  %.pn107 = phi { ptr, i32 } [ %336, %335 ], [ %334, %333 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #9
  br label %338

338:                                              ; preds = %128, %337, %332, %250, %227, %222, %166, %127
  %.pn107.pn = phi { ptr, i32 } [ %.pn107, %337 ], [ %.pn105, %332 ], [ %.pn103, %250 ], [ %.pn101, %227 ], [ %.pn99, %222 ], [ %.pn97, %166 ], [ %129, %128 ], [ %.pn, %127 ]
  call void @llvm.lifetime.end.p0(i64 11, ptr nonnull %2) #9
  resume { ptr, i32 } %.pn107.pn
}

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

declare void @_ZN4TPCE9CTradeGenC1ENS_11CInputFilesExxxjjjb(ptr noundef nonnull align 8 dereferenceable(7356), ptr noundef, i64 noundef, i64 noundef, i64 noundef, i32 noundef, i32 noundef, i32 noundef, i1 noundef zeroext) unnamed_addr #5

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

declare noundef zeroext i1 @_ZN4TPCE9CTradeGen17GenerateNextTradeEv(ptr noundef nonnull align 8 dereferenceable(7356)) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN4TPCE9CTradeGen11GetTradeRowEv(ptr noundef nonnull align 8 dereferenceable(7356)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN4TPCE9CTradeGen23GetTradeHistoryRowCountEv(ptr noundef nonnull align 8 dereferenceable(7356)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN4TPCE9CTradeGen18GetTradeHistoryRowEi(ptr noundef nonnull align 8 dereferenceable(7356), i32 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN4TPCE9CTradeGen21GetSettlementRowCountEv(ptr noundef nonnull align 8 dereferenceable(7356)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN4TPCE9CTradeGen16GetSettlementRowEv(ptr noundef nonnull align 8 dereferenceable(7356)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN4TPCE9CTradeGen26GetCashTransactionRowCountEv(ptr noundef nonnull align 8 dereferenceable(7356)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN4TPCE9CTradeGen21GetCashTransactionRowEv(ptr noundef nonnull align 8 dereferenceable(7356)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN4TPCE9CTradeGen25GetHoldingHistoryRowCountEv(ptr noundef nonnull align 8 dereferenceable(7356)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN4TPCE9CTradeGen20GetHoldingHistoryRowEi(ptr noundef nonnull align 8 dereferenceable(7356), i32 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN4TPCE9CTradeGen24GenerateNextBrokerRecordEv(ptr noundef nonnull align 8 dereferenceable(7356)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN4TPCE9CTradeGen12GetBrokerRowEv(ptr noundef nonnull align 8 dereferenceable(7356)) local_unnamed_addr #3 align 2

declare noundef zeroext i1 @_ZN4TPCE9CTradeGen29GenerateNextHoldingSummaryRowEv(ptr noundef nonnull align 8 dereferenceable(7356)) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN4TPCE9CTradeGen20GetHoldingSummaryRowEv(ptr noundef nonnull align 8 dereferenceable(7356)) local_unnamed_addr #1 align 2

declare noundef zeroext i1 @_ZN4TPCE9CTradeGen19GenerateNextHoldingEv(ptr noundef nonnull align 8 dereferenceable(7356)) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN4TPCE9CTradeGen13GetHoldingRowEv(ptr noundef nonnull align 8 dereferenceable(7356)) local_unnamed_addr #1 align 2

; Function Attrs: nofree nounwind
declare noundef i32 @snprintf(ptr noalias nocapture noundef writeonly, i64 noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #7

declare noundef zeroext i1 @_ZN4TPCE9CTradeGen16InitNextLoadUnitEv(ptr noundef nonnull align 8 dereferenceable(7356)) local_unnamed_addr #5

; Function Attrs: nounwind
declare void @_ZN4TPCE9CTradeGenD1Ev(ptr noundef nonnull align 8 dereferenceable(7356)) unnamed_addr #8

attributes #0 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { 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 #5 = { "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 = { 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 #7 = { nofree 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 #8 = { 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 #9 = { nounwind }
attributes #10 = { builtin allocsize(0) }
attributes #11 = { 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, !8, i64 224}
!6 = !{!"_ZTSN4TPCE16CGenerateAndLoadE", !7, i64 0, !11, i64 184, !11, i64 192, !11, i64 200, !12, i64 208, !12, i64 212, !12, i64 216, !8, i64 224, !8, i64 232, !9, i64 240, !8, i64 752, !13, i64 760, !17, i64 856, !8, i64 864, !8, i64 872, !8, i64 880, !8, i64 888, !8, i64 896, !8, i64 904, !8, i64 912, !8, i64 920, !8, i64 928, !8, i64 936, !8, i64 944, !8, i64 952, !8, i64 960, !8, i64 968, !8, i64 976, !8, i64 984, !8, i64 992, !8, i64 1000, !8, i64 1008, !8, i64 1016, !8, i64 1024, !8, i64 1032}
!7 = !{!"_ZTSN4TPCE11CInputFilesE", !8, i64 0, !8, i64 8, !8, i64 16, !8, i64 24, !8, i64 32, !8, i64 40, !8, i64 48, !8, i64 56, !8, i64 64, !8, i64 72, !8, i64 80, !8, i64 88, !8, i64 96, !8, i64 104, !8, i64 112, !8, i64 120, !8, i64 128, !8, i64 136, !8, i64 144, !8, i64 152, !8, i64 160, !8, i64 168, !8, i64 176}
!8 = !{!"any pointer", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = !{!"long long", !9, i64 0}
!12 = !{!"int", !9, i64 0}
!13 = !{!"_ZTSN4TPCE15CLoaderSettingsE", !14, i64 0}
!14 = !{!"_ZTSN4TPCE23CParametersWithDefaultsINS_15TLoaderSettingsENS_20TLoaderSettingsStateEEE", !15, i64 8, !16, i64 48, !15, i64 56}
!15 = !{!"_ZTSN4TPCE15TLoaderSettingsE", !11, i64 0, !11, i64 8, !12, i64 16, !12, i64 20, !11, i64 24, !11, i64 32}
!16 = !{!"_ZTSN4TPCE20TLoaderSettingsStateE", !17, i64 0, !17, i64 1, !17, i64 2, !17, i64 3, !17, i64 4, !17, i64 5}
!17 = !{!"bool", !9, i64 0}
!18 = !{!19, !19, i64 0}
!19 = !{!"vtable pointer", !10, i64 0}
!20 = !{!6, !8, i64 232}
!21 = !{i64 0, i64 8, !22, i64 8, i64 8, !22, i64 16, i64 8, !22, i64 24, i64 8, !22, i64 32, i64 8, !22, i64 40, i64 8, !22, i64 48, i64 8, !22, i64 56, i64 8, !22, i64 64, i64 8, !22, i64 72, i64 8, !22, i64 80, i64 8, !22, i64 88, i64 8, !22, i64 96, i64 8, !22, i64 104, i64 8, !22, i64 112, i64 8, !22, i64 120, i64 8, !22, i64 128, i64 8, !22, i64 136, i64 8, !22, i64 144, i64 8, !22, i64 152, i64 8, !22, i64 160, i64 8, !22, i64 168, i64 8, !22, i64 176, i64 8, !22}
!22 = !{!8, !8, i64 0}
!23 = !{!6, !11, i64 192}
!24 = !{!6, !11, i64 184}
!25 = !{!6, !11, i64 200}
!26 = !{!6, !12, i64 208}
!27 = !{!6, !12, i64 212}
!28 = !{!6, !12, i64 216}
!29 = !{!6, !17, i64 856}
!30 = !{i8 0, i8 2}
!31 = !{}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}
!34 = distinct !{!34, !33}
!35 = distinct !{!35, !33}
!36 = distinct !{!36, !33}
!37 = distinct !{!37, !33}
!38 = distinct !{!38, !33}
!39 = distinct !{!39, !33}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass