; LLVM IR from mhsitu/welding_robot :: coppeliaSim-client/common (luaFunctionData)

; 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.CLuaFunctionDataItem = type <{ ptr, %"class.std::vector.5", %"class.std::vector.0", %"class.std::vector.9", %"class.std::vector.14", %"class.std::vector.19", i32, i8, [3 x i8], i32, [4 x i8] }>
%"class.std::vector.5" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.9" = type { %"struct.std::_Vector_base.10" }
%"struct.std::_Vector_base.10" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.14" = type { %"struct.std::_Vector_base.15" }
%"struct.std::_Vector_base.15" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.19" = type { %"struct.std::_Vector_base.20" }
%"struct.std::_Vector_base.20" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"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::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::allocator.24" = type { i8 }
%class.CLuaFunctionData = type { ptr, %"class.std::vector", %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<CLuaFunctionDataItem, std::allocator<CLuaFunctionDataItem>>::_Vector_impl" }
%"struct.std::_Vector_base<CLuaFunctionDataItem, std::allocator<CLuaFunctionDataItem>>::_Vector_impl" = type { %"struct.std::_Vector_base<CLuaFunctionDataItem, std::allocator<CLuaFunctionDataItem>>::_Vector_impl_data" }
%"struct.std::_Vector_base<CLuaFunctionDataItem, std::allocator<CLuaFunctionDataItem>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.SLuaCallBack = type { i32, ptr, ptr, ptr, ptr, i32, ptr, ptr, ptr, ptr, ptr, i32, ptr, i8, ptr, ptr, i32, ptr, ptr }

@simSetLastError = external global ptr, align 8
@.str = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [37 x i8], align 1

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) #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: 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 noundef zeroext i1 @_ZN16CLuaFunctionData15readDataFromLuaEPK12SLuaCallBackPKiiPKc(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %1, ptr noundef %2, i32 noundef %3, ptr noundef %4) #1 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca i1, align 1
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i8, align 1
  %22 = alloca %class.CLuaFunctionDataItem, align 8
  %23 = alloca ptr, align 8
  %24 = alloca i32, align 4
  %25 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca ptr, align 8
  %34 = alloca %class.CLuaFunctionDataItem, align 8
  %35 = alloca %"class.std::vector.5", align 8
  %36 = alloca i32, align 4
  %37 = alloca %class.CLuaFunctionDataItem, align 8
  %38 = alloca %"class.std::vector.0", align 8
  %39 = alloca i32, align 4
  %40 = alloca %class.CLuaFunctionDataItem, align 8
  %41 = alloca %"class.std::vector.9", align 8
  %42 = alloca i32, align 4
  %43 = alloca %class.CLuaFunctionDataItem, align 8
  %44 = alloca %"class.std::vector.14", align 8
  %45 = alloca i32, align 4
  %46 = alloca %class.CLuaFunctionDataItem, align 8
  %47 = alloca %"class.std::vector.19", align 8
  %48 = alloca i32, align 4
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.std::allocator.24", align 1
  %51 = alloca %class.CLuaFunctionDataItem, align 8
  %52 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca i32, align 4
  %55 = alloca %class.CLuaFunctionDataItem, align 8
  %56 = alloca %class.CLuaFunctionDataItem, align 8
  %57 = alloca %class.CLuaFunctionDataItem, align 8
  %58 = alloca %class.CLuaFunctionDataItem, align 8
  %59 = alloca %class.CLuaFunctionDataItem, align 8
  %60 = alloca %class.CLuaFunctionDataItem, align 8
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.std::allocator.24", align 1
  %63 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca %class.CLuaFunctionDataItem, align 8
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store i32 %3, ptr %10, align 4, !tbaa !9
  store ptr %4, ptr %11, align 8, !tbaa !5
  %66 = load ptr, ptr %7, align 8
  %67 = getelementptr inbounds %class.CLuaFunctionData, ptr %66, i32 0, i32 1
  call void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %67) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #9
  %68 = load ptr, ptr %8, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.SLuaCallBack, ptr %68, i32 0, i32 5
  %70 = load i32, ptr %69, align 8, !tbaa !11
  store i32 %70, ptr %12, align 4, !tbaa !9
  %71 = load i32, ptr %12, align 4, !tbaa !9
  %72 = load i32, ptr %10, align 4, !tbaa !9
  %73 = icmp slt i32 %71, %72
  br i1 %73, label %74, label %78

74:                                               ; preds = %5
  %75 = load ptr, ptr @simSetLastError, align 8, !tbaa !5
  %76 = load ptr, ptr %11, align 8, !tbaa !5
  %77 = call noundef i32 %75(ptr noundef %76, ptr noundef @.str)
  store i1 false, ptr %6, align 1
  store i32 1, ptr %13, align 4
  br label %817

78:                                               ; preds = %5
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  store i32 0, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #9
  store i32 0, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #9
  store i32 0, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #9
  store i32 0, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #9
  store i32 0, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #9
  store i32 0, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %79

79:                                               ; preds = %809, %78
  %80 = load i32, ptr %20, align 4, !tbaa !9
  %81 = load i32, ptr %12, align 4, !tbaa !9
  %82 = icmp slt i32 %80, %81
  br i1 %82, label %84, label %83

83:                                               ; preds = %79
  store i32 2, ptr %13, align 4
  br label %813

84:                                               ; preds = %79
  %85 = load i32, ptr %20, align 4, !tbaa !9
  %86 = load ptr, ptr %9, align 8, !tbaa !5
  %87 = getelementptr inbounds i32, ptr %86, i64 0
  %88 = load i32, ptr %87, align 4, !tbaa !9
  %89 = icmp sge i32 %85, %88
  br i1 %89, label %90, label %91

90:                                               ; preds = %84
  store i32 2, ptr %13, align 4
  br label %813

91:                                               ; preds = %84
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #9
  store i8 0, ptr %21, align 1, !tbaa !13
  %92 = load ptr, ptr %8, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.SLuaCallBack, ptr %92, i32 0, i32 6
  %94 = load ptr, ptr %93, align 8, !tbaa !15
  %95 = load i32, ptr %20, align 4, !tbaa !9
  %96 = mul nsw i32 %95, 2
  %97 = add nsw i32 %96, 0
  %98 = sext i32 %97 to i64
  %99 = getelementptr inbounds i32, ptr %94, i64 %98
  %100 = load i32, ptr %99, align 4, !tbaa !9
  %101 = icmp eq i32 %100, 0
  br i1 %101, label %102, label %157

102:                                              ; preds = %91
  %103 = load ptr, ptr %9, align 8, !tbaa !5
  %104 = load i32, ptr %20, align 4, !tbaa !9
  %105 = mul nsw i32 %104, 2
  %106 = add nsw i32 1, %105
  %107 = add nsw i32 %106, 0
  %108 = sext i32 %107 to i64
  %109 = getelementptr inbounds i32, ptr %103, i64 %108
  %110 = load i32, ptr %109, align 4, !tbaa !9
  %111 = and i32 %110, 65536
  %112 = icmp ne i32 %111, 0
  br i1 %112, label %113, label %120

113:                                              ; preds = %102
  call void @llvm.lifetime.start.p0(i64 160, ptr %22) #9
  call void @_ZN20CLuaFunctionDataItemC1Ev(ptr noundef nonnull align 8 dereferenceable(156) %22)
  %114 = getelementptr inbounds %class.CLuaFunctionData, ptr %66, i32 0, i32 1
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %114, ptr noundef nonnull align 8 dereferenceable(156) %22)
          to label %115 unwind label %116

115:                                              ; preds = %113
  store i8 1, ptr %21, align 1, !tbaa !13
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %22) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr %22) #9
  br label %156

116:                                              ; preds = %113
  %117 = landingpad { ptr, i32 }
          cleanup
  %118 = extractvalue { ptr, i32 } %117, 0
  store ptr %118, ptr %23, align 8
  %119 = extractvalue { ptr, i32 } %117, 1
  store i32 %119, ptr %24, align 4
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %22) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr %22) #9
  br label %812

120:                                              ; preds = %102
  %121 = getelementptr inbounds %class.CLuaFunctionData, ptr %66, i32 0, i32 1
  %122 = call noundef i64 @_ZNKSt6vectorI20CLuaFunctionDataItemSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %121) #9
  %123 = trunc i64 %122 to i32
  %124 = load i32, ptr %10, align 4, !tbaa !9
  %125 = icmp slt i32 %123, %124
  br i1 %125, label %126, label %155

126:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 376, ptr %25) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %25)
  %127 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef @.str.1)
          to label %128 unwind label %141

128:                                              ; preds = %126
  %129 = load i32, ptr %20, align 4, !tbaa !9
  %130 = add nsw i32 %129, 1
  %131 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %127, i32 noundef %130)
          to label %132 unwind label %141

132:                                              ; preds = %128
  %133 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %131, ptr noundef @.str.2)
          to label %134 unwind label %141

134:                                              ; preds = %132
  %135 = load ptr, ptr @simSetLastError, align 8, !tbaa !5
  %136 = load ptr, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #9
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %26, ptr noundef nonnull align 8 dereferenceable(112) %25)
          to label %137 unwind label %145

137:                                              ; preds = %134
  %138 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %26) #9
  %139 = invoke noundef i32 %135(ptr noundef %136, ptr noundef %138)
          to label %140 unwind label %149

140:                                              ; preds = %137
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #9
  store i1 false, ptr %6, align 1
  store i32 1, ptr %13, align 4
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %25) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr %25) #9
  br label %806

141:                                              ; preds = %132, %128, %126
  %142 = landingpad { ptr, i32 }
          cleanup
  %143 = extractvalue { ptr, i32 } %142, 0
  store ptr %143, ptr %23, align 8
  %144 = extractvalue { ptr, i32 } %142, 1
  store i32 %144, ptr %24, align 4
  br label %154

145:                                              ; preds = %134
  %146 = landingpad { ptr, i32 }
          cleanup
  %147 = extractvalue { ptr, i32 } %146, 0
  store ptr %147, ptr %23, align 8
  %148 = extractvalue { ptr, i32 } %146, 1
  store i32 %148, ptr %24, align 4
  br label %153

149:                                              ; preds = %137
  %150 = landingpad { ptr, i32 }
          cleanup
  %151 = extractvalue { ptr, i32 } %150, 0
  store ptr %151, ptr %23, align 8
  %152 = extractvalue { ptr, i32 } %150, 1
  store i32 %152, ptr %24, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #9
  br label %153

153:                                              ; preds = %149, %145
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #9
  br label %154

154:                                              ; preds = %153, %141
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %25) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr %25) #9
  br label %812

155:                                              ; preds = %120
  store i32 2, ptr %13, align 4
  br label %806

156:                                              ; preds = %115
  br label %157

157:                                              ; preds = %156, %91
  %158 = load i8, ptr %21, align 1, !tbaa !13, !range !16, !noundef !17
  %159 = trunc i8 %158 to i1
  br i1 %159, label %805, label %160

160:                                              ; preds = %157
  %161 = load ptr, ptr %8, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.SLuaCallBack, ptr %161, i32 0, i32 6
  %163 = load ptr, ptr %162, align 8, !tbaa !15
  %164 = load i32, ptr %20, align 4, !tbaa !9
  %165 = mul nsw i32 %164, 2
  %166 = add nsw i32 %165, 0
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds i32, ptr %163, i64 %167
  %169 = load i32, ptr %168, align 4, !tbaa !9
  %170 = load ptr, ptr %9, align 8, !tbaa !5
  %171 = load i32, ptr %20, align 4, !tbaa !9
  %172 = mul nsw i32 %171, 2
  %173 = add nsw i32 1, %172
  %174 = add nsw i32 %173, 0
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds i32, ptr %170, i64 %175
  %177 = load i32, ptr %176, align 4, !tbaa !9
  %178 = or i32 %177, 65536
  %179 = sub nsw i32 %178, 65536
  %180 = icmp ne i32 %169, %179
  br i1 %180, label %181, label %210

181:                                              ; preds = %160
  call void @llvm.lifetime.start.p0(i64 376, ptr %27) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %27)
  %182 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef @.str.1)
          to label %183 unwind label %196

183:                                              ; preds = %181
  %184 = load i32, ptr %20, align 4, !tbaa !9
  %185 = add nsw i32 %184, 1
  %186 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %182, i32 noundef %185)
          to label %187 unwind label %196

187:                                              ; preds = %183
  %188 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %186, ptr noundef @.str.2)
          to label %189 unwind label %196

189:                                              ; preds = %187
  %190 = load ptr, ptr @simSetLastError, align 8, !tbaa !5
  %191 = load ptr, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #9
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %28, ptr noundef nonnull align 8 dereferenceable(112) %27)
          to label %192 unwind label %200

192:                                              ; preds = %189
  %193 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %28) #9
  %194 = invoke noundef i32 %190(ptr noundef %191, ptr noundef %193)
          to label %195 unwind label %204

195:                                              ; preds = %192
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #9
  store i1 false, ptr %6, align 1
  store i32 1, ptr %13, align 4
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %27) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr %27) #9
  br label %806

196:                                              ; preds = %187, %183, %181
  %197 = landingpad { ptr, i32 }
          cleanup
  %198 = extractvalue { ptr, i32 } %197, 0
  store ptr %198, ptr %23, align 8
  %199 = extractvalue { ptr, i32 } %197, 1
  store i32 %199, ptr %24, align 4
  br label %209

200:                                              ; preds = %189
  %201 = landingpad { ptr, i32 }
          cleanup
  %202 = extractvalue { ptr, i32 } %201, 0
  store ptr %202, ptr %23, align 8
  %203 = extractvalue { ptr, i32 } %201, 1
  store i32 %203, ptr %24, align 4
  br label %208

204:                                              ; preds = %192
  %205 = landingpad { ptr, i32 }
          cleanup
  %206 = extractvalue { ptr, i32 } %205, 0
  store ptr %206, ptr %23, align 8
  %207 = extractvalue { ptr, i32 } %205, 1
  store i32 %207, ptr %24, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #9
  br label %208

208:                                              ; preds = %204, %200
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #9
  br label %209

209:                                              ; preds = %208, %196
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %27) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr %27) #9
  br label %812

210:                                              ; preds = %160
  %211 = load ptr, ptr %8, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.SLuaCallBack, ptr %211, i32 0, i32 6
  %213 = load ptr, ptr %212, align 8, !tbaa !15
  %214 = load i32, ptr %20, align 4, !tbaa !9
  %215 = mul nsw i32 %214, 2
  %216 = add nsw i32 %215, 0
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds i32, ptr %213, i64 %217
  %219 = load i32, ptr %218, align 4, !tbaa !9
  %220 = and i32 %219, 8
  %221 = icmp ne i32 %220, 0
  br i1 %221, label %222, label %572

222:                                              ; preds = %210
  %223 = load ptr, ptr %8, align 8, !tbaa !5
  %224 = getelementptr inbounds %struct.SLuaCallBack, ptr %223, i32 0, i32 6
  %225 = load ptr, ptr %224, align 8, !tbaa !15
  %226 = load i32, ptr %20, align 4, !tbaa !9
  %227 = mul nsw i32 %226, 2
  %228 = add nsw i32 %227, 1
  %229 = sext i32 %228 to i64
  %230 = getelementptr inbounds i32, ptr %225, i64 %229
  %231 = load i32, ptr %230, align 4, !tbaa !9
  %232 = load ptr, ptr %9, align 8, !tbaa !5
  %233 = load i32, ptr %20, align 4, !tbaa !9
  %234 = mul nsw i32 %233, 2
  %235 = add nsw i32 1, %234
  %236 = add nsw i32 %235, 1
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds i32, ptr %232, i64 %237
  %239 = load i32, ptr %238, align 4, !tbaa !9
  %240 = icmp slt i32 %231, %239
  br i1 %240, label %241, label %280

241:                                              ; preds = %222
  %242 = load ptr, ptr %9, align 8, !tbaa !5
  %243 = load i32, ptr %20, align 4, !tbaa !9
  %244 = mul nsw i32 %243, 2
  %245 = add nsw i32 1, %244
  %246 = add nsw i32 %245, 1
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds i32, ptr %242, i64 %247
  %249 = load i32, ptr %248, align 4, !tbaa !9
  %250 = icmp ne i32 %249, 0
  br i1 %250, label %251, label %280

251:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 376, ptr %29) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %29)
  %252 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef @.str.1)
          to label %253 unwind label %266

253:                                              ; preds = %251
  %254 = load i32, ptr %20, align 4, !tbaa !9
  %255 = add nsw i32 %254, 1
  %256 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %252, i32 noundef %255)
          to label %257 unwind label %266

257:                                              ; preds = %253
  %258 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %256, ptr noundef @.str.3)
          to label %259 unwind label %266

259:                                              ; preds = %257
  %260 = load ptr, ptr @simSetLastError, align 8, !tbaa !5
  %261 = load ptr, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #9
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %30, ptr noundef nonnull align 8 dereferenceable(112) %29)
          to label %262 unwind label %270

262:                                              ; preds = %259
  %263 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  %264 = invoke noundef i32 %260(ptr noundef %261, ptr noundef %263)
          to label %265 unwind label %274

265:                                              ; preds = %262
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #9
  store i1 false, ptr %6, align 1
  store i32 1, ptr %13, align 4
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %29) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr %29) #9
  br label %806

266:                                              ; preds = %257, %253, %251
  %267 = landingpad { ptr, i32 }
          cleanup
  %268 = extractvalue { ptr, i32 } %267, 0
  store ptr %268, ptr %23, align 8
  %269 = extractvalue { ptr, i32 } %267, 1
  store i32 %269, ptr %24, align 4
  br label %279

270:                                              ; preds = %259
  %271 = landingpad { ptr, i32 }
          cleanup
  %272 = extractvalue { ptr, i32 } %271, 0
  store ptr %272, ptr %23, align 8
  %273 = extractvalue { ptr, i32 } %271, 1
  store i32 %273, ptr %24, align 4
  br label %278

274:                                              ; preds = %262
  %275 = landingpad { ptr, i32 }
          cleanup
  %276 = extractvalue { ptr, i32 } %275, 0
  store ptr %276, ptr %23, align 8
  %277 = extractvalue { ptr, i32 } %275, 1
  store i32 %277, ptr %24, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  br label %278

278:                                              ; preds = %274, %270
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #9
  br label %279

279:                                              ; preds = %278, %266
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %29) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr %29) #9
  br label %812

280:                                              ; preds = %241, %222
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #9
  %281 = load ptr, ptr %8, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.SLuaCallBack, ptr %281, i32 0, i32 6
  %283 = load ptr, ptr %282, align 8, !tbaa !15
  %284 = load i32, ptr %20, align 4, !tbaa !9
  %285 = mul nsw i32 %284, 2
  %286 = add nsw i32 %285, 0
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds i32, ptr %283, i64 %287
  %289 = load i32, ptr %288, align 4, !tbaa !9
  %290 = sub nsw i32 %289, 8
  store i32 %290, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #9
  %291 = load ptr, ptr %8, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.SLuaCallBack, ptr %291, i32 0, i32 6
  %293 = load ptr, ptr %292, align 8, !tbaa !15
  %294 = load i32, ptr %20, align 4, !tbaa !9
  %295 = mul nsw i32 %294, 2
  %296 = add nsw i32 %295, 1
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds i32, ptr %293, i64 %297
  %299 = load i32, ptr %298, align 4, !tbaa !9
  store i32 %299, ptr %32, align 4, !tbaa !9
  %300 = load i32, ptr %31, align 4, !tbaa !9
  %301 = icmp eq i32 %300, 0
  br i1 %301, label %302, label %320

302:                                              ; preds = %280
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #9
  %303 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 160) #10
  invoke void @_ZN20CLuaFunctionDataItemC1Ev(ptr noundef nonnull align 8 dereferenceable(156) %303)
          to label %304 unwind label %311

304:                                              ; preds = %302
  store ptr %303, ptr %33, align 8, !tbaa !5
  %305 = load ptr, ptr %33, align 8, !tbaa !5
  %306 = load i32, ptr %32, align 4, !tbaa !9
  call void @_ZN20CLuaFunctionDataItem11setNilTableEi(ptr noundef nonnull align 8 dereferenceable(156) %305, i32 noundef %306)
  call void @llvm.lifetime.start.p0(i64 160, ptr %34) #9
  call void @_ZN20CLuaFunctionDataItemC1Ev(ptr noundef nonnull align 8 dereferenceable(156) %34)
  %307 = load i32, ptr %32, align 4, !tbaa !9
  invoke void @_ZN20CLuaFunctionDataItem11setNilTableEi(ptr noundef nonnull align 8 dereferenceable(156) %34, i32 noundef %307)
          to label %308 unwind label %315

308:                                              ; preds = %304
  %309 = getelementptr inbounds %class.CLuaFunctionData, ptr %66, i32 0, i32 1
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %309, ptr noundef nonnull align 8 dereferenceable(156) %34)
          to label %310 unwind label %315

310:                                              ; preds = %308
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %34) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  br label %320

311:                                              ; preds = %302
  %312 = landingpad { ptr, i32 }
          cleanup
  %313 = extractvalue { ptr, i32 } %312, 0
  store ptr %313, ptr %23, align 8
  %314 = extractvalue { ptr, i32 } %312, 1
  store i32 %314, ptr %24, align 4
  call void @_ZdlPvm(ptr noundef %303, i64 noundef 160) #11
  br label %319

315:                                              ; preds = %308, %304
  %316 = landingpad { ptr, i32 }
          cleanup
  %317 = extractvalue { ptr, i32 } %316, 0
  store ptr %317, ptr %23, align 8
  %318 = extractvalue { ptr, i32 } %316, 1
  store i32 %318, ptr %24, align 4
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %34) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr %34) #9
  br label %319

319:                                              ; preds = %315, %311
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  br label %570

320:                                              ; preds = %310, %280
  %321 = load i32, ptr %31, align 4, !tbaa !9
  %322 = icmp eq i32 %321, 1
  br i1 %322, label %323, label %362

323:                                              ; preds = %320
  call void @llvm.lifetime.start.p0(i64 40, ptr %35) #9
  call void @_ZNSt6vectorIbSaIbEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %35) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #9
  store i32 0, ptr %36, align 4, !tbaa !9
  br label %324

324:                                              ; preds = %341, %323
  %325 = load i32, ptr %36, align 4, !tbaa !9
  %326 = load i32, ptr %32, align 4, !tbaa !9
  %327 = icmp slt i32 %325, %326
  br i1 %327, label %329, label %328

328:                                              ; preds = %324
  store i32 5, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #9
  br label %348

329:                                              ; preds = %324
  %330 = load ptr, ptr %8, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.SLuaCallBack, ptr %330, i32 0, i32 1
  %332 = load ptr, ptr %331, align 8, !tbaa !18
  %333 = load i32, ptr %14, align 4, !tbaa !9
  %334 = add nsw i32 %333, 1
  store i32 %334, ptr %14, align 4, !tbaa !9
  %335 = sext i32 %333 to i64
  %336 = getelementptr inbounds i8, ptr %332, i64 %335
  %337 = load i8, ptr %336, align 1, !tbaa !19
  %338 = zext i8 %337 to i32
  %339 = icmp ne i32 %338, 0
  invoke void @_ZNSt6vectorIbSaIbEE9push_backEb(ptr noundef nonnull align 8 dereferenceable(40) %35, i1 noundef zeroext %339)
          to label %340 unwind label %344

340:                                              ; preds = %329
  br label %341

341:                                              ; preds = %340
  %342 = load i32, ptr %36, align 4, !tbaa !9
  %343 = add nsw i32 %342, 1
  store i32 %343, ptr %36, align 4, !tbaa !9
  br label %324, !llvm.loop !20

344:                                              ; preds = %329
  %345 = landingpad { ptr, i32 }
          cleanup
  %346 = extractvalue { ptr, i32 } %345, 0
  store ptr %346, ptr %23, align 8
  %347 = extractvalue { ptr, i32 } %345, 1
  store i32 %347, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #9
  br label %361

348:                                              ; preds = %328
  call void @llvm.lifetime.start.p0(i64 160, ptr %37) #9
  invoke void @_ZN20CLuaFunctionDataItemC1ERKSt6vectorIbSaIbEE(ptr noundef nonnull align 8 dereferenceable(156) %37, ptr noundef nonnull align 8 dereferenceable(40) %35)
          to label %349 unwind label %352

349:                                              ; preds = %348
  %350 = getelementptr inbounds %class.CLuaFunctionData, ptr %66, i32 0, i32 1
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %350, ptr noundef nonnull align 8 dereferenceable(156) %37)
          to label %351 unwind label %356

351:                                              ; preds = %349
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %37) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr %37) #9
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %35) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %35) #9
  br label %362

352:                                              ; preds = %348
  %353 = landingpad { ptr, i32 }
          cleanup
  %354 = extractvalue { ptr, i32 } %353, 0
  store ptr %354, ptr %23, align 8
  %355 = extractvalue { ptr, i32 } %353, 1
  store i32 %355, ptr %24, align 4
  br label %360

356:                                              ; preds = %349
  %357 = landingpad { ptr, i32 }
          cleanup
  %358 = extractvalue { ptr, i32 } %357, 0
  store ptr %358, ptr %23, align 8
  %359 = extractvalue { ptr, i32 } %357, 1
  store i32 %359, ptr %24, align 4
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %37) #9
  br label %360

360:                                              ; preds = %356, %352
  call void @llvm.lifetime.end.p0(i64 160, ptr %37) #9
  br label %361

361:                                              ; preds = %360, %344
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %35) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %35) #9
  br label %570

362:                                              ; preds = %351, %320
  %363 = load i32, ptr %31, align 4, !tbaa !9
  %364 = icmp eq i32 %363, 2
  br i1 %364, label %365, label %401

365:                                              ; preds = %362
  call void @llvm.lifetime.start.p0(i64 24, ptr %38) #9
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #9
  store i32 0, ptr %39, align 4, !tbaa !9
  br label %366

366:                                              ; preds = %380, %365
  %367 = load i32, ptr %39, align 4, !tbaa !9
  %368 = load i32, ptr %32, align 4, !tbaa !9
  %369 = icmp slt i32 %367, %368
  br i1 %369, label %371, label %370

370:                                              ; preds = %366
  store i32 8, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #9
  br label %387

371:                                              ; preds = %366
  %372 = load ptr, ptr %8, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.SLuaCallBack, ptr %372, i32 0, i32 2
  %374 = load ptr, ptr %373, align 8, !tbaa !22
  %375 = load i32, ptr %15, align 4, !tbaa !9
  %376 = add nsw i32 %375, 1
  store i32 %376, ptr %15, align 4, !tbaa !9
  %377 = sext i32 %375 to i64
  %378 = getelementptr inbounds i32, ptr %374, i64 %377
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 4 dereferenceable(4) %378)
          to label %379 unwind label %383

379:                                              ; preds = %371
  br label %380

380:                                              ; preds = %379
  %381 = load i32, ptr %39, align 4, !tbaa !9
  %382 = add nsw i32 %381, 1
  store i32 %382, ptr %39, align 4, !tbaa !9
  br label %366, !llvm.loop !23

383:                                              ; preds = %371
  %384 = landingpad { ptr, i32 }
          cleanup
  %385 = extractvalue { ptr, i32 } %384, 0
  store ptr %385, ptr %23, align 8
  %386 = extractvalue { ptr, i32 } %384, 1
  store i32 %386, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #9
  br label %400

387:                                              ; preds = %370
  call void @llvm.lifetime.start.p0(i64 160, ptr %40) #9
  invoke void @_ZN20CLuaFunctionDataItemC1ERKSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(156) %40, ptr noundef nonnull align 8 dereferenceable(24) %38)
          to label %388 unwind label %391

388:                                              ; preds = %387
  %389 = getelementptr inbounds %class.CLuaFunctionData, ptr %66, i32 0, i32 1
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %389, ptr noundef nonnull align 8 dereferenceable(156) %40)
          to label %390 unwind label %395

390:                                              ; preds = %388
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %40) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr %40) #9
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #9
  br label %401

391:                                              ; preds = %387
  %392 = landingpad { ptr, i32 }
          cleanup
  %393 = extractvalue { ptr, i32 } %392, 0
  store ptr %393, ptr %23, align 8
  %394 = extractvalue { ptr, i32 } %392, 1
  store i32 %394, ptr %24, align 4
  br label %399

395:                                              ; preds = %388
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %23, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %24, align 4
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %40) #9
  br label %399

399:                                              ; preds = %395, %391
  call void @llvm.lifetime.end.p0(i64 160, ptr %40) #9
  br label %400

400:                                              ; preds = %399, %383
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #9
  br label %570

401:                                              ; preds = %390, %362
  %402 = load i32, ptr %31, align 4, !tbaa !9
  %403 = icmp eq i32 %402, 3
  br i1 %403, label %404, label %440

404:                                              ; preds = %401
  call void @llvm.lifetime.start.p0(i64 24, ptr %41) #9
  call void @_ZNSt6vectorIfSaIfEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #9
  store i32 0, ptr %42, align 4, !tbaa !9
  br label %405

405:                                              ; preds = %419, %404
  %406 = load i32, ptr %42, align 4, !tbaa !9
  %407 = load i32, ptr %32, align 4, !tbaa !9
  %408 = icmp slt i32 %406, %407
  br i1 %408, label %410, label %409

409:                                              ; preds = %405
  store i32 11, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #9
  br label %426

410:                                              ; preds = %405
  %411 = load ptr, ptr %8, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.SLuaCallBack, ptr %411, i32 0, i32 3
  %413 = load ptr, ptr %412, align 8, !tbaa !24
  %414 = load i32, ptr %16, align 4, !tbaa !9
  %415 = add nsw i32 %414, 1
  store i32 %415, ptr %16, align 4, !tbaa !9
  %416 = sext i32 %414 to i64
  %417 = getelementptr inbounds float, ptr %413, i64 %416
  invoke void @_ZNSt6vectorIfSaIfEE9push_backERKf(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 4 dereferenceable(4) %417)
          to label %418 unwind label %422

418:                                              ; preds = %410
  br label %419

419:                                              ; preds = %418
  %420 = load i32, ptr %42, align 4, !tbaa !9
  %421 = add nsw i32 %420, 1
  store i32 %421, ptr %42, align 4, !tbaa !9
  br label %405, !llvm.loop !25

422:                                              ; preds = %410
  %423 = landingpad { ptr, i32 }
          cleanup
  %424 = extractvalue { ptr, i32 } %423, 0
  store ptr %424, ptr %23, align 8
  %425 = extractvalue { ptr, i32 } %423, 1
  store i32 %425, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #9
  br label %439

426:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 160, ptr %43) #9
  invoke void @_ZN20CLuaFunctionDataItemC1ERKSt6vectorIfSaIfEE(ptr noundef nonnull align 8 dereferenceable(156) %43, ptr noundef nonnull align 8 dereferenceable(24) %41)
          to label %427 unwind label %430

427:                                              ; preds = %426
  %428 = getelementptr inbounds %class.CLuaFunctionData, ptr %66, i32 0, i32 1
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %428, ptr noundef nonnull align 8 dereferenceable(156) %43)
          to label %429 unwind label %434

429:                                              ; preds = %427
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %43) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr %43) #9
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #9
  br label %440

430:                                              ; preds = %426
  %431 = landingpad { ptr, i32 }
          cleanup
  %432 = extractvalue { ptr, i32 } %431, 0
  store ptr %432, ptr %23, align 8
  %433 = extractvalue { ptr, i32 } %431, 1
  store i32 %433, ptr %24, align 4
  br label %438

434:                                              ; preds = %427
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %23, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %24, align 4
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %43) #9
  br label %438

438:                                              ; preds = %434, %430
  call void @llvm.lifetime.end.p0(i64 160, ptr %43) #9
  br label %439

439:                                              ; preds = %438, %422
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #9
  br label %570

440:                                              ; preds = %429, %401
  %441 = load i32, ptr %31, align 4, !tbaa !9
  %442 = icmp eq i32 %441, 7
  br i1 %442, label %443, label %479

443:                                              ; preds = %440
  call void @llvm.lifetime.start.p0(i64 24, ptr %44) #9
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #9
  store i32 0, ptr %45, align 4, !tbaa !9
  br label %444

444:                                              ; preds = %458, %443
  %445 = load i32, ptr %45, align 4, !tbaa !9
  %446 = load i32, ptr %32, align 4, !tbaa !9
  %447 = icmp slt i32 %445, %446
  br i1 %447, label %449, label %448

448:                                              ; preds = %444
  store i32 14, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #9
  br label %465

449:                                              ; preds = %444
  %450 = load ptr, ptr %8, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.SLuaCallBack, ptr %450, i32 0, i32 17
  %452 = load ptr, ptr %451, align 8, !tbaa !26
  %453 = load i32, ptr %17, align 4, !tbaa !9
  %454 = add nsw i32 %453, 1
  store i32 %454, ptr %17, align 4, !tbaa !9
  %455 = sext i32 %453 to i64
  %456 = getelementptr inbounds double, ptr %452, i64 %455
  invoke void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %44, ptr noundef nonnull align 8 dereferenceable(8) %456)
          to label %457 unwind label %461

457:                                              ; preds = %449
  br label %458

458:                                              ; preds = %457
  %459 = load i32, ptr %45, align 4, !tbaa !9
  %460 = add nsw i32 %459, 1
  store i32 %460, ptr %45, align 4, !tbaa !9
  br label %444, !llvm.loop !27

461:                                              ; preds = %449
  %462 = landingpad { ptr, i32 }
          cleanup
  %463 = extractvalue { ptr, i32 } %462, 0
  store ptr %463, ptr %23, align 8
  %464 = extractvalue { ptr, i32 } %462, 1
  store i32 %464, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #9
  br label %478

465:                                              ; preds = %448
  call void @llvm.lifetime.start.p0(i64 160, ptr %46) #9
  invoke void @_ZN20CLuaFunctionDataItemC1ERKSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(156) %46, ptr noundef nonnull align 8 dereferenceable(24) %44)
          to label %466 unwind label %469

466:                                              ; preds = %465
  %467 = getelementptr inbounds %class.CLuaFunctionData, ptr %66, i32 0, i32 1
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %467, ptr noundef nonnull align 8 dereferenceable(156) %46)
          to label %468 unwind label %473

468:                                              ; preds = %466
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %46) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr %46) #9
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #9
  br label %479

469:                                              ; preds = %465
  %470 = landingpad { ptr, i32 }
          cleanup
  %471 = extractvalue { ptr, i32 } %470, 0
  store ptr %471, ptr %23, align 8
  %472 = extractvalue { ptr, i32 } %470, 1
  store i32 %472, ptr %24, align 4
  br label %477

473:                                              ; preds = %466
  %474 = landingpad { ptr, i32 }
          cleanup
  %475 = extractvalue { ptr, i32 } %474, 0
  store ptr %475, ptr %23, align 8
  %476 = extractvalue { ptr, i32 } %474, 1
  store i32 %476, ptr %24, align 4
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %46) #9
  br label %477

477:                                              ; preds = %473, %469
  call void @llvm.lifetime.end.p0(i64 160, ptr %46) #9
  br label %478

478:                                              ; preds = %477, %461
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #9
  br label %570

479:                                              ; preds = %468, %440
  %480 = load i32, ptr %31, align 4, !tbaa !9
  %481 = icmp eq i32 %480, 4
  br i1 %481, label %482, label %534

482:                                              ; preds = %479
  call void @llvm.lifetime.start.p0(i64 24, ptr %47) #9
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #9
  store i32 0, ptr %48, align 4, !tbaa !9
  br label %483

483:                                              ; preds = %508, %482
  %484 = load i32, ptr %48, align 4, !tbaa !9
  %485 = load i32, ptr %32, align 4, !tbaa !9
  %486 = icmp slt i32 %484, %485
  br i1 %486, label %488, label %487

487:                                              ; preds = %483
  store i32 17, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #9
  br label %520

488:                                              ; preds = %483
  call void @llvm.lifetime.start.p0(i64 32, ptr %49) #9
  %489 = load ptr, ptr %8, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.SLuaCallBack, ptr %489, i32 0, i32 4
  %491 = load ptr, ptr %490, align 8, !tbaa !28
  %492 = load i32, ptr %18, align 4, !tbaa !9
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds i8, ptr %491, i64 %493
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef %494, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %495 unwind label %511

495:                                              ; preds = %488
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #9
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %496 unwind label %515

496:                                              ; preds = %495
  %497 = load ptr, ptr %8, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct.SLuaCallBack, ptr %497, i32 0, i32 4
  %499 = load ptr, ptr %498, align 8, !tbaa !28
  %500 = load i32, ptr %18, align 4, !tbaa !9
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds i8, ptr %499, i64 %501
  %503 = call i64 @strlen(ptr noundef %502) #12
  %504 = trunc i64 %503 to i32
  %505 = add nsw i32 %504, 1
  %506 = load i32, ptr %18, align 4, !tbaa !9
  %507 = add nsw i32 %506, %505
  store i32 %507, ptr %18, align 4, !tbaa !9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #9
  br label %508

508:                                              ; preds = %496
  %509 = load i32, ptr %48, align 4, !tbaa !9
  %510 = add nsw i32 %509, 1
  store i32 %510, ptr %48, align 4, !tbaa !9
  br label %483, !llvm.loop !29

511:                                              ; preds = %488
  %512 = landingpad { ptr, i32 }
          cleanup
  %513 = extractvalue { ptr, i32 } %512, 0
  store ptr %513, ptr %23, align 8
  %514 = extractvalue { ptr, i32 } %512, 1
  store i32 %514, ptr %24, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #9
  br label %519

515:                                              ; preds = %495
  %516 = landingpad { ptr, i32 }
          cleanup
  %517 = extractvalue { ptr, i32 } %516, 0
  store ptr %517, ptr %23, align 8
  %518 = extractvalue { ptr, i32 } %516, 1
  store i32 %518, ptr %24, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  br label %519

519:                                              ; preds = %515, %511
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #9
  br label %533

520:                                              ; preds = %487
  call void @llvm.lifetime.start.p0(i64 160, ptr %51) #9
  invoke void @_ZN20CLuaFunctionDataItemC1ERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EE(ptr noundef nonnull align 8 dereferenceable(156) %51, ptr noundef nonnull align 8 dereferenceable(24) %47)
          to label %521 unwind label %524

521:                                              ; preds = %520
  %522 = getelementptr inbounds %class.CLuaFunctionData, ptr %66, i32 0, i32 1
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %522, ptr noundef nonnull align 8 dereferenceable(156) %51)
          to label %523 unwind label %528

523:                                              ; preds = %521
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %51) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr %51) #9
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %47) #9
  br label %534

524:                                              ; preds = %520
  %525 = landingpad { ptr, i32 }
          cleanup
  %526 = extractvalue { ptr, i32 } %525, 0
  store ptr %526, ptr %23, align 8
  %527 = extractvalue { ptr, i32 } %525, 1
  store i32 %527, ptr %24, align 4
  br label %532

528:                                              ; preds = %521
  %529 = landingpad { ptr, i32 }
          cleanup
  %530 = extractvalue { ptr, i32 } %529, 0
  store ptr %530, ptr %23, align 8
  %531 = extractvalue { ptr, i32 } %529, 1
  store i32 %531, ptr %24, align 4
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %51) #9
  br label %532

532:                                              ; preds = %528, %524
  call void @llvm.lifetime.end.p0(i64 160, ptr %51) #9
  br label %533

533:                                              ; preds = %532, %519
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %47) #9
  br label %570

534:                                              ; preds = %523, %479
  %535 = load i32, ptr %31, align 4, !tbaa !9
  %536 = icmp eq i32 %535, 6
  br i1 %536, label %537, label %566

537:                                              ; preds = %534
  call void @llvm.lifetime.start.p0(i64 376, ptr %52) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %52)
  %538 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef @.str.1)
          to label %539 unwind label %552

539:                                              ; preds = %537
  %540 = load i32, ptr %20, align 4, !tbaa !9
  %541 = add nsw i32 %540, 1
  %542 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %538, i32 noundef %541)
          to label %543 unwind label %552

543:                                              ; preds = %539
  %544 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %542, ptr noundef @.str.4)
          to label %545 unwind label %552

545:                                              ; preds = %543
  %546 = load ptr, ptr @simSetLastError, align 8, !tbaa !5
  %547 = load ptr, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %53) #9
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %53, ptr noundef nonnull align 8 dereferenceable(112) %52)
          to label %548 unwind label %556

548:                                              ; preds = %545
  %549 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %53) #9
  %550 = invoke noundef i32 %546(ptr noundef %547, ptr noundef %549)
          to label %551 unwind label %560

551:                                              ; preds = %548
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #9
  store i1 false, ptr %6, align 1
  store i32 1, ptr %13, align 4
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %52) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr %52) #9
  br label %567

552:                                              ; preds = %543, %539, %537
  %553 = landingpad { ptr, i32 }
          cleanup
  %554 = extractvalue { ptr, i32 } %553, 0
  store ptr %554, ptr %23, align 8
  %555 = extractvalue { ptr, i32 } %553, 1
  store i32 %555, ptr %24, align 4
  br label %565

556:                                              ; preds = %545
  %557 = landingpad { ptr, i32 }
          cleanup
  %558 = extractvalue { ptr, i32 } %557, 0
  store ptr %558, ptr %23, align 8
  %559 = extractvalue { ptr, i32 } %557, 1
  store i32 %559, ptr %24, align 4
  br label %564

560:                                              ; preds = %548
  %561 = landingpad { ptr, i32 }
          cleanup
  %562 = extractvalue { ptr, i32 } %561, 0
  store ptr %562, ptr %23, align 8
  %563 = extractvalue { ptr, i32 } %561, 1
  store i32 %563, ptr %24, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #9
  br label %564

564:                                              ; preds = %560, %556
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #9
  br label %565

565:                                              ; preds = %564, %552
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %52) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr %52) #9
  br label %570

566:                                              ; preds = %534
  store i32 0, ptr %13, align 4
  br label %567

567:                                              ; preds = %566, %551
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  %568 = load i32, ptr %13, align 4
  switch i32 %568, label %806 [
    i32 0, label %569
  ]

569:                                              ; preds = %567
  br label %571

570:                                              ; preds = %565, %533, %478, %439, %400, %361, %319
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  br label %812

571:                                              ; preds = %569
  br label %804

572:                                              ; preds = %210
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #9
  %573 = load ptr, ptr %8, align 8, !tbaa !5
  %574 = getelementptr inbounds %struct.SLuaCallBack, ptr %573, i32 0, i32 6
  %575 = load ptr, ptr %574, align 8, !tbaa !15
  %576 = load i32, ptr %20, align 4, !tbaa !9
  %577 = mul nsw i32 %576, 2
  %578 = add nsw i32 %577, 0
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds i32, ptr %575, i64 %579
  %581 = load i32, ptr %580, align 4, !tbaa !9
  store i32 %581, ptr %54, align 4, !tbaa !9
  %582 = load i32, ptr %54, align 4, !tbaa !9
  %583 = icmp eq i32 %582, 0
  br i1 %583, label %584, label %591

584:                                              ; preds = %572
  call void @llvm.lifetime.start.p0(i64 160, ptr %55) #9
  call void @_ZN20CLuaFunctionDataItemC1Ev(ptr noundef nonnull align 8 dereferenceable(156) %55)
  %585 = getelementptr inbounds %class.CLuaFunctionData, ptr %66, i32 0, i32 1
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %585, ptr noundef nonnull align 8 dereferenceable(156) %55)
          to label %586 unwind label %587

586:                                              ; preds = %584
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %55) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr %55) #9
  br label %591

587:                                              ; preds = %584
  %588 = landingpad { ptr, i32 }
          cleanup
  %589 = extractvalue { ptr, i32 } %588, 0
  store ptr %589, ptr %23, align 8
  %590 = extractvalue { ptr, i32 } %588, 1
  store i32 %590, ptr %24, align 4
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %55) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr %55) #9
  br label %803

591:                                              ; preds = %586, %572
  %592 = load i32, ptr %54, align 4, !tbaa !9
  %593 = icmp eq i32 %592, 1
  br i1 %593, label %594, label %611

594:                                              ; preds = %591
  call void @llvm.lifetime.start.p0(i64 160, ptr %56) #9
  %595 = load ptr, ptr %8, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct.SLuaCallBack, ptr %595, i32 0, i32 1
  %597 = load ptr, ptr %596, align 8, !tbaa !18
  %598 = load i32, ptr %14, align 4, !tbaa !9
  %599 = add nsw i32 %598, 1
  store i32 %599, ptr %14, align 4, !tbaa !9
  %600 = sext i32 %598 to i64
  %601 = getelementptr inbounds i8, ptr %597, i64 %600
  %602 = load i8, ptr %601, align 1, !tbaa !19
  %603 = zext i8 %602 to i32
  %604 = icmp ne i32 %603, 0
  call void @_ZN20CLuaFunctionDataItemC1Eb(ptr noundef nonnull align 8 dereferenceable(156) %56, i1 noundef zeroext %604)
  %605 = getelementptr inbounds %class.CLuaFunctionData, ptr %66, i32 0, i32 1
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %605, ptr noundef nonnull align 8 dereferenceable(156) %56)
          to label %606 unwind label %607

606:                                              ; preds = %594
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %56) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr %56) #9
  br label %611

607:                                              ; preds = %594
  %608 = landingpad { ptr, i32 }
          cleanup
  %609 = extractvalue { ptr, i32 } %608, 0
  store ptr %609, ptr %23, align 8
  %610 = extractvalue { ptr, i32 } %608, 1
  store i32 %610, ptr %24, align 4
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %56) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr %56) #9
  br label %803

611:                                              ; preds = %606, %591
  %612 = load i32, ptr %54, align 4, !tbaa !9
  %613 = icmp eq i32 %612, 2
  br i1 %613, label %614, label %629

614:                                              ; preds = %611
  call void @llvm.lifetime.start.p0(i64 160, ptr %57) #9
  %615 = load ptr, ptr %8, align 8, !tbaa !5
  %616 = getelementptr inbounds %struct.SLuaCallBack, ptr %615, i32 0, i32 2
  %617 = load ptr, ptr %616, align 8, !tbaa !22
  %618 = load i32, ptr %15, align 4, !tbaa !9
  %619 = add nsw i32 %618, 1
  store i32 %619, ptr %15, align 4, !tbaa !9
  %620 = sext i32 %618 to i64
  %621 = getelementptr inbounds i32, ptr %617, i64 %620
  %622 = load i32, ptr %621, align 4, !tbaa !9
  call void @_ZN20CLuaFunctionDataItemC1Ei(ptr noundef nonnull align 8 dereferenceable(156) %57, i32 noundef %622)
  %623 = getelementptr inbounds %class.CLuaFunctionData, ptr %66, i32 0, i32 1
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %623, ptr noundef nonnull align 8 dereferenceable(156) %57)
          to label %624 unwind label %625

624:                                              ; preds = %614
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %57) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr %57) #9
  br label %629

625:                                              ; preds = %614
  %626 = landingpad { ptr, i32 }
          cleanup
  %627 = extractvalue { ptr, i32 } %626, 0
  store ptr %627, ptr %23, align 8
  %628 = extractvalue { ptr, i32 } %626, 1
  store i32 %628, ptr %24, align 4
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %57) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr %57) #9
  br label %803

629:                                              ; preds = %624, %611
  %630 = load i32, ptr %54, align 4, !tbaa !9
  %631 = icmp eq i32 %630, 3
  br i1 %631, label %632, label %647

632:                                              ; preds = %629
  call void @llvm.lifetime.start.p0(i64 160, ptr %58) #9
  %633 = load ptr, ptr %8, align 8, !tbaa !5
  %634 = getelementptr inbounds %struct.SLuaCallBack, ptr %633, i32 0, i32 3
  %635 = load ptr, ptr %634, align 8, !tbaa !24
  %636 = load i32, ptr %16, align 4, !tbaa !9
  %637 = add nsw i32 %636, 1
  store i32 %637, ptr %16, align 4, !tbaa !9
  %638 = sext i32 %636 to i64
  %639 = getelementptr inbounds float, ptr %635, i64 %638
  %640 = load float, ptr %639, align 4, !tbaa !30
  call void @_ZN20CLuaFunctionDataItemC1Ef(ptr noundef nonnull align 8 dereferenceable(156) %58, float noundef %640)
  %641 = getelementptr inbounds %class.CLuaFunctionData, ptr %66, i32 0, i32 1
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %641, ptr noundef nonnull align 8 dereferenceable(156) %58)
          to label %642 unwind label %643

642:                                              ; preds = %632
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %58) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr %58) #9
  br label %647

643:                                              ; preds = %632
  %644 = landingpad { ptr, i32 }
          cleanup
  %645 = extractvalue { ptr, i32 } %644, 0
  store ptr %645, ptr %23, align 8
  %646 = extractvalue { ptr, i32 } %644, 1
  store i32 %646, ptr %24, align 4
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %58) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr %58) #9
  br label %803

647:                                              ; preds = %642, %629
  %648 = load i32, ptr %54, align 4, !tbaa !9
  %649 = icmp eq i32 %648, 7
  br i1 %649, label %650, label %665

650:                                              ; preds = %647
  call void @llvm.lifetime.start.p0(i64 160, ptr %59) #9
  %651 = load ptr, ptr %8, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.SLuaCallBack, ptr %651, i32 0, i32 17
  %653 = load ptr, ptr %652, align 8, !tbaa !26
  %654 = load i32, ptr %17, align 4, !tbaa !9
  %655 = add nsw i32 %654, 1
  store i32 %655, ptr %17, align 4, !tbaa !9
  %656 = sext i32 %654 to i64
  %657 = getelementptr inbounds double, ptr %653, i64 %656
  %658 = load double, ptr %657, align 8, !tbaa !32
  call void @_ZN20CLuaFunctionDataItemC1Ed(ptr noundef nonnull align 8 dereferenceable(156) %59, double noundef %658)
  %659 = getelementptr inbounds %class.CLuaFunctionData, ptr %66, i32 0, i32 1
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %659, ptr noundef nonnull align 8 dereferenceable(156) %59)
          to label %660 unwind label %661

660:                                              ; preds = %650
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %59) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr %59) #9
  br label %665

661:                                              ; preds = %650
  %662 = landingpad { ptr, i32 }
          cleanup
  %663 = extractvalue { ptr, i32 } %662, 0
  store ptr %663, ptr %23, align 8
  %664 = extractvalue { ptr, i32 } %662, 1
  store i32 %664, ptr %24, align 4
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %59) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr %59) #9
  br label %803

665:                                              ; preds = %660, %647
  %666 = load i32, ptr %54, align 4, !tbaa !9
  %667 = icmp eq i32 %666, 4
  br i1 %667, label %668, label %704

668:                                              ; preds = %665
  call void @llvm.lifetime.start.p0(i64 160, ptr %60) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %61) #9
  %669 = load ptr, ptr %8, align 8, !tbaa !5
  %670 = getelementptr inbounds %struct.SLuaCallBack, ptr %669, i32 0, i32 4
  %671 = load ptr, ptr %670, align 8, !tbaa !28
  %672 = load i32, ptr %18, align 4, !tbaa !9
  %673 = sext i32 %672 to i64
  %674 = getelementptr inbounds i8, ptr %671, i64 %673
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef %674, ptr noundef nonnull align 1 dereferenceable(1) %62)
          to label %675 unwind label %690

675:                                              ; preds = %668
  invoke void @_ZN20CLuaFunctionDataItemC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(156) %60, ptr noundef nonnull align 8 dereferenceable(32) %61)
          to label %676 unwind label %694

676:                                              ; preds = %675
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #9
  %677 = load ptr, ptr %8, align 8, !tbaa !5
  %678 = getelementptr inbounds %struct.SLuaCallBack, ptr %677, i32 0, i32 4
  %679 = load ptr, ptr %678, align 8, !tbaa !28
  %680 = load i32, ptr %18, align 4, !tbaa !9
  %681 = sext i32 %680 to i64
  %682 = getelementptr inbounds i8, ptr %679, i64 %681
  %683 = call i64 @strlen(ptr noundef %682) #12
  %684 = trunc i64 %683 to i32
  %685 = add nsw i32 %684, 1
  %686 = load i32, ptr %18, align 4, !tbaa !9
  %687 = add nsw i32 %686, %685
  store i32 %687, ptr %18, align 4, !tbaa !9
  %688 = getelementptr inbounds %class.CLuaFunctionData, ptr %66, i32 0, i32 1
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %688, ptr noundef nonnull align 8 dereferenceable(156) %60)
          to label %689 unwind label %699

689:                                              ; preds = %676
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %60) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr %60) #9
  br label %704

690:                                              ; preds = %668
  %691 = landingpad { ptr, i32 }
          cleanup
  %692 = extractvalue { ptr, i32 } %691, 0
  store ptr %692, ptr %23, align 8
  %693 = extractvalue { ptr, i32 } %691, 1
  store i32 %693, ptr %24, align 4
  br label %698

694:                                              ; preds = %675
  %695 = landingpad { ptr, i32 }
          cleanup
  %696 = extractvalue { ptr, i32 } %695, 0
  store ptr %696, ptr %23, align 8
  %697 = extractvalue { ptr, i32 } %695, 1
  store i32 %697, ptr %24, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #9
  br label %698

698:                                              ; preds = %694, %690
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #9
  br label %703

699:                                              ; preds = %676
  %700 = landingpad { ptr, i32 }
          cleanup
  %701 = extractvalue { ptr, i32 } %700, 0
  store ptr %701, ptr %23, align 8
  %702 = extractvalue { ptr, i32 } %700, 1
  store i32 %702, ptr %24, align 4
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %60) #9
  br label %703

703:                                              ; preds = %699, %698
  call void @llvm.lifetime.end.p0(i64 160, ptr %60) #9
  br label %803

704:                                              ; preds = %689, %665
  %705 = load i32, ptr %54, align 4, !tbaa !9
  %706 = icmp eq i32 %705, 6
  br i1 %706, label %707, label %799

707:                                              ; preds = %704
  %708 = load ptr, ptr %8, align 8, !tbaa !5
  %709 = getelementptr inbounds %struct.SLuaCallBack, ptr %708, i32 0, i32 6
  %710 = load ptr, ptr %709, align 8, !tbaa !15
  %711 = load i32, ptr %20, align 4, !tbaa !9
  %712 = mul nsw i32 %711, 2
  %713 = add nsw i32 %712, 1
  %714 = sext i32 %713 to i64
  %715 = getelementptr inbounds i32, ptr %710, i64 %714
  %716 = load i32, ptr %715, align 4, !tbaa !9
  %717 = load ptr, ptr %9, align 8, !tbaa !5
  %718 = load i32, ptr %20, align 4, !tbaa !9
  %719 = mul nsw i32 %718, 2
  %720 = add nsw i32 1, %719
  %721 = add nsw i32 %720, 1
  %722 = sext i32 %721 to i64
  %723 = getelementptr inbounds i32, ptr %717, i64 %722
  %724 = load i32, ptr %723, align 4, !tbaa !9
  %725 = icmp slt i32 %716, %724
  br i1 %725, label %726, label %765

726:                                              ; preds = %707
  %727 = load ptr, ptr %9, align 8, !tbaa !5
  %728 = load i32, ptr %20, align 4, !tbaa !9
  %729 = mul nsw i32 %728, 2
  %730 = add nsw i32 1, %729
  %731 = add nsw i32 %730, 1
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds i32, ptr %727, i64 %732
  %734 = load i32, ptr %733, align 4, !tbaa !9
  %735 = icmp ne i32 %734, 0
  br i1 %735, label %736, label %765

736:                                              ; preds = %726
  call void @llvm.lifetime.start.p0(i64 376, ptr %63) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %63)
  %737 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef @.str.1)
          to label %738 unwind label %751

738:                                              ; preds = %736
  %739 = load i32, ptr %20, align 4, !tbaa !9
  %740 = add nsw i32 %739, 1
  %741 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %737, i32 noundef %740)
          to label %742 unwind label %751

742:                                              ; preds = %738
  %743 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %741, ptr noundef @.str.5)
          to label %744 unwind label %751

744:                                              ; preds = %742
  %745 = load ptr, ptr @simSetLastError, align 8, !tbaa !5
  %746 = load ptr, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %64) #9
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %64, ptr noundef nonnull align 8 dereferenceable(112) %63)
          to label %747 unwind label %755

747:                                              ; preds = %744
  %748 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %64) #9
  %749 = invoke noundef i32 %745(ptr noundef %746, ptr noundef %748)
          to label %750 unwind label %759

750:                                              ; preds = %747
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #9
  store i1 false, ptr %6, align 1
  store i32 1, ptr %13, align 4
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %63) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr %63) #9
  br label %800

751:                                              ; preds = %742, %738, %736
  %752 = landingpad { ptr, i32 }
          cleanup
  %753 = extractvalue { ptr, i32 } %752, 0
  store ptr %753, ptr %23, align 8
  %754 = extractvalue { ptr, i32 } %752, 1
  store i32 %754, ptr %24, align 4
  br label %764

755:                                              ; preds = %744
  %756 = landingpad { ptr, i32 }
          cleanup
  %757 = extractvalue { ptr, i32 } %756, 0
  store ptr %757, ptr %23, align 8
  %758 = extractvalue { ptr, i32 } %756, 1
  store i32 %758, ptr %24, align 4
  br label %763

759:                                              ; preds = %747
  %760 = landingpad { ptr, i32 }
          cleanup
  %761 = extractvalue { ptr, i32 } %760, 0
  store ptr %761, ptr %23, align 8
  %762 = extractvalue { ptr, i32 } %760, 1
  store i32 %762, ptr %24, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #9
  br label %763

763:                                              ; preds = %759, %755
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #9
  br label %764

764:                                              ; preds = %763, %751
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %63) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr %63) #9
  br label %803

765:                                              ; preds = %726, %707
  call void @llvm.lifetime.start.p0(i64 160, ptr %65) #9
  %766 = load ptr, ptr %8, align 8, !tbaa !5
  %767 = getelementptr inbounds %struct.SLuaCallBack, ptr %766, i32 0, i32 14
  %768 = load ptr, ptr %767, align 8, !tbaa !34
  %769 = load i32, ptr %19, align 4, !tbaa !9
  %770 = sext i32 %769 to i64
  %771 = getelementptr inbounds i8, ptr %768, i64 %770
  %772 = load ptr, ptr %8, align 8, !tbaa !5
  %773 = getelementptr inbounds %struct.SLuaCallBack, ptr %772, i32 0, i32 6
  %774 = load ptr, ptr %773, align 8, !tbaa !15
  %775 = load i32, ptr %20, align 4, !tbaa !9
  %776 = mul nsw i32 %775, 2
  %777 = add nsw i32 %776, 1
  %778 = sext i32 %777 to i64
  %779 = getelementptr inbounds i32, ptr %774, i64 %778
  %780 = load i32, ptr %779, align 4, !tbaa !9
  call void @_ZN20CLuaFunctionDataItemC1EPKcj(ptr noundef nonnull align 8 dereferenceable(156) %65, ptr noundef %771, i32 noundef %780)
  %781 = load ptr, ptr %8, align 8, !tbaa !5
  %782 = getelementptr inbounds %struct.SLuaCallBack, ptr %781, i32 0, i32 6
  %783 = load ptr, ptr %782, align 8, !tbaa !15
  %784 = load i32, ptr %20, align 4, !tbaa !9
  %785 = mul nsw i32 %784, 2
  %786 = add nsw i32 %785, 1
  %787 = sext i32 %786 to i64
  %788 = getelementptr inbounds i32, ptr %783, i64 %787
  %789 = load i32, ptr %788, align 4, !tbaa !9
  %790 = load i32, ptr %19, align 4, !tbaa !9
  %791 = add nsw i32 %790, %789
  store i32 %791, ptr %19, align 4, !tbaa !9
  %792 = getelementptr inbounds %class.CLuaFunctionData, ptr %66, i32 0, i32 1
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %792, ptr noundef nonnull align 8 dereferenceable(156) %65)
          to label %793 unwind label %794

793:                                              ; preds = %765
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %65) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr %65) #9
  br label %798

794:                                              ; preds = %765
  %795 = landingpad { ptr, i32 }
          cleanup
  %796 = extractvalue { ptr, i32 } %795, 0
  store ptr %796, ptr %23, align 8
  %797 = extractvalue { ptr, i32 } %795, 1
  store i32 %797, ptr %24, align 4
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %65) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr %65) #9
  br label %803

798:                                              ; preds = %793
  br label %799

799:                                              ; preds = %798, %704
  store i32 0, ptr %13, align 4
  br label %800

800:                                              ; preds = %799, %750
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #9
  %801 = load i32, ptr %13, align 4
  switch i32 %801, label %806 [
    i32 0, label %802
  ]

802:                                              ; preds = %800
  br label %804

803:                                              ; preds = %794, %764, %703, %661, %643, %625, %607, %587
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #9
  br label %812

804:                                              ; preds = %802, %571
  br label %805

805:                                              ; preds = %804, %157
  store i32 0, ptr %13, align 4
  br label %806

806:                                              ; preds = %805, %800, %567, %265, %195, %155, %140
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #9
  %807 = load i32, ptr %13, align 4
  switch i32 %807, label %813 [
    i32 0, label %808
  ]

808:                                              ; preds = %806
  br label %809

809:                                              ; preds = %808
  %810 = load i32, ptr %20, align 4, !tbaa !9
  %811 = add nsw i32 %810, 1
  store i32 %811, ptr %20, align 4, !tbaa !9
  br label %79, !llvm.loop !35

812:                                              ; preds = %803, %570, %279, %209, %154, %116
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #9
  br label %819

813:                                              ; preds = %806, %90, %83
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #9
  %814 = load i32, ptr %13, align 4
  switch i32 %814, label %816 [
    i32 2, label %815
  ]

815:                                              ; preds = %813
  store i1 true, ptr %6, align 1
  store i32 1, ptr %13, align 4
  br label %816

816:                                              ; preds = %815, %813
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  br label %817

817:                                              ; preds = %816, %74
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #9
  %818 = load i1, ptr %6, align 1
  ret i1 %818

819:                                              ; preds = %812
  %820 = load ptr, ptr %23, align 8
  %821 = load i32, ptr %24, align 4
  %822 = insertvalue { ptr, i32 } poison, ptr %820, 0
  %823 = insertvalue { ptr, i32 } %822, i32 %821, 1
  resume { ptr, i32 } %823
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

declare void @_ZN20CLuaFunctionDataItemC1Ev(ptr noundef nonnull align 8 dereferenceable(156)) unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(156)) #1 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nounwind
declare void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156)) unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorI20CLuaFunctionDataItemSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #6

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #4

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(112)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #3 align 2

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

declare void @_ZN20CLuaFunctionDataItem11setNilTableEi(ptr noundef nonnull align 8 dereferenceable(156), i32 noundef) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIbSaIbEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIbSaIbEE9push_backEb(ptr noundef nonnull align 8 dereferenceable(40), i1 noundef zeroext) #1 align 2

declare void @_ZN20CLuaFunctionDataItemC1ERKSt6vectorIbSaIbEE(ptr noundef nonnull align 8 dereferenceable(156), ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

declare void @_ZN20CLuaFunctionDataItemC1ERKSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(156), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIfSaIfEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIfSaIfEE9push_backERKf(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) #1 align 2

declare void @_ZN20CLuaFunctionDataItemC1ERKSt6vectorIfSaIfEE(ptr noundef nonnull align 8 dereferenceable(156), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

declare void @_ZN20CLuaFunctionDataItemC1ERKSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(156), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 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 #1 align 2

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

; Function Attrs: nounwind willreturn memory(read)
declare i64 @strlen(ptr noundef) #8

declare void @_ZN20CLuaFunctionDataItemC1ERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EE(ptr noundef nonnull align 8 dereferenceable(156), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

declare void @_ZN20CLuaFunctionDataItemC1Eb(ptr noundef nonnull align 8 dereferenceable(156), i1 noundef zeroext) unnamed_addr #4

declare void @_ZN20CLuaFunctionDataItemC1Ei(ptr noundef nonnull align 8 dereferenceable(156), i32 noundef) unnamed_addr #4

declare void @_ZN20CLuaFunctionDataItemC1Ef(ptr noundef nonnull align 8 dereferenceable(156), float noundef) unnamed_addr #4

declare void @_ZN20CLuaFunctionDataItemC1Ed(ptr noundef nonnull align 8 dereferenceable(156), double noundef) unnamed_addr #4

declare void @_ZN20CLuaFunctionDataItemC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(156), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN20CLuaFunctionDataItemC1EPKcj(ptr noundef nonnull align 8 dereferenceable(156), ptr noundef, i32 noundef) unnamed_addr #4

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

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

!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, !10, i64 40}
!12 = !{!"_ZTS12SLuaCallBack", !10, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !10, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !10, i64 88, !6, i64 96, !7, i64 104, !6, i64 112, !6, i64 120, !10, i64 128, !6, i64 136, !6, i64 144}
!13 = !{!14, !14, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{!12, !6, i64 48}
!16 = !{i8 0, i8 2}
!17 = !{}
!18 = !{!12, !6, i64 8}
!19 = !{!7, !7, i64 0}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.mustprogress"}
!22 = !{!12, !6, i64 16}
!23 = distinct !{!23, !21}
!24 = !{!12, !6, i64 24}
!25 = distinct !{!25, !21}
!26 = !{!12, !6, i64 136}
!27 = distinct !{!27, !21}
!28 = !{!12, !6, i64 32}
!29 = distinct !{!29, !21}
!30 = !{!31, !31, i64 0}
!31 = !{!"float", !7, i64 0}
!32 = !{!33, !33, i64 0}
!33 = !{!"double", !7, i64 0}
!34 = !{!12, !6, i64 112}
!35 = distinct !{!35, !21}


; 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.CLuaFunctionDataItem = type <{ ptr, %"class.std::vector.5", %"class.std::vector.0", %"class.std::vector.9", %"class.std::vector.14", %"class.std::vector.19", i32, i8, [3 x i8], i32, [4 x i8] }>
%"class.std::vector.5" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.9" = type { %"struct.std::_Vector_base.10" }
%"struct.std::_Vector_base.10" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.14" = type { %"struct.std::_Vector_base.15" }
%"struct.std::_Vector_base.15" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.19" = type { %"struct.std::_Vector_base.20" }
%"struct.std::_Vector_base.20" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"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::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::allocator.24" = type { i8 }

@simSetLastError = external local_unnamed_addr global ptr, align 8
@.str = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [37 x i8], align 1

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) local_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 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 noundef zeroext i1 @_ZN16CLuaFunctionData15readDataFromLuaEPK12SLuaCallBackPKiiPKc(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3, ptr noundef %4) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca %class.CLuaFunctionDataItem, align 8
  %7 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %class.CLuaFunctionDataItem, align 8
  %14 = alloca %"class.std::vector.5", align 8
  %15 = alloca %class.CLuaFunctionDataItem, align 8
  %16 = alloca %"class.std::vector.0", align 8
  %17 = alloca %class.CLuaFunctionDataItem, align 8
  %18 = alloca %"class.std::vector.9", align 8
  %19 = alloca %class.CLuaFunctionDataItem, align 8
  %20 = alloca %"class.std::vector.14", align 8
  %21 = alloca %class.CLuaFunctionDataItem, align 8
  %22 = alloca %"class.std::vector.19", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator.24", align 1
  %25 = alloca %class.CLuaFunctionDataItem, align 8
  %26 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %class.CLuaFunctionDataItem, align 8
  %29 = alloca %class.CLuaFunctionDataItem, align 8
  %30 = alloca %class.CLuaFunctionDataItem, align 8
  %31 = alloca %class.CLuaFunctionDataItem, align 8
  %32 = alloca %class.CLuaFunctionDataItem, align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::allocator.24", align 1
  %35 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %class.CLuaFunctionDataItem, align 8
  %38 = getelementptr inbounds i8, ptr %0, i64 8
  tail call void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %38) #9
  %39 = getelementptr inbounds i8, ptr %1, i64 40
  %40 = load i32, ptr %39, align 8, !tbaa !5
  %41 = icmp slt i32 %40, %3
  br i1 %41, label %50, label %.preheader

.preheader:                                       ; preds = %5
  %invariant.gep = getelementptr inbounds i8, ptr %2, i64 8
  %42 = icmp sgt i32 %40, 0
  br i1 %42, label %.lr.ph428, label %.critedge261.thread

.lr.ph428:                                        ; preds = %.preheader
  %43 = getelementptr inbounds i8, ptr %1, i64 48
  %44 = getelementptr inbounds i8, ptr %1, i64 8
  %45 = getelementptr inbounds i8, ptr %1, i64 16
  %46 = getelementptr inbounds i8, ptr %1, i64 24
  %47 = getelementptr inbounds i8, ptr %1, i64 136
  %48 = getelementptr inbounds i8, ptr %1, i64 32
  %49 = getelementptr inbounds i8, ptr %1, i64 112
  %wide.trip.count = zext nneg i32 %40 to i64
  br label %53

50:                                               ; preds = %5
  %51 = load ptr, ptr @simSetLastError, align 8, !tbaa !11
  %52 = tail call noundef i32 %51(ptr noundef %4, ptr noundef nonnull @.str)
  br label %.critedge261.thread

53:                                               ; preds = %.lr.ph428, %.critedge261
  %indvars.iv483 = phi i64 [ 0, %.lr.ph428 ], [ %indvars.iv.next484, %.critedge261 ]
  %.0133427 = phi i32 [ 0, %.lr.ph428 ], [ %.5138, %.critedge261 ]
  %.0139426 = phi i32 [ 0, %.lr.ph428 ], [ %.5144, %.critedge261 ]
  %.0182424 = phi i32 [ 0, %.lr.ph428 ], [ %.4186, %.critedge261 ]
  %.0187423 = phi i32 [ 0, %.lr.ph428 ], [ %.5192, %.critedge261 ]
  %.0193422 = phi i32 [ 0, %.lr.ph428 ], [ %.5198, %.critedge261 ]
  %.0199421 = phi i32 [ 0, %.lr.ph428 ], [ %.5204, %.critedge261 ]
  %54 = load i32, ptr %2, align 4, !tbaa !12
  %55 = sext i32 %54 to i64
  %.not = icmp slt i64 %indvars.iv483, %55
  br i1 %.not, label %56, label %.critedge261.thread

56:                                               ; preds = %53
  %57 = load ptr, ptr %43, align 8, !tbaa !13
  %58 = shl nuw nsw i64 %indvars.iv483, 1
  %59 = getelementptr inbounds i32, ptr %57, i64 %58
  %60 = load i32, ptr %59, align 4, !tbaa !12
  %61 = icmp eq i32 %60, 0
  %62 = or disjoint i64 %58, 1
  %63 = getelementptr inbounds i32, ptr %2, i64 %62
  %64 = load i32, ptr %63, align 4, !tbaa !12
  br i1 %61, label %65, label %.critedge

65:                                               ; preds = %56
  %66 = and i32 %64, 65536
  %.not210 = icmp eq i32 %66, 0
  br i1 %.not210, label %71, label %67

67:                                               ; preds = %65
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %6) #9
  call void @_ZN20CLuaFunctionDataItemC1Ev(ptr noundef nonnull align 8 dereferenceable(156) %6)
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(156) %6)
          to label %68 unwind label %69

68:                                               ; preds = %67
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %6) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %6) #9
  br label %.critedge261

69:                                               ; preds = %67
  %70 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %6) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %6) #9
  br label %387

71:                                               ; preds = %65
  %72 = trunc nuw nsw i64 %indvars.iv483 to i32
  %73 = call noundef i64 @_ZNKSt6vectorI20CLuaFunctionDataItemSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %38) #9
  %74 = trunc i64 %73 to i32
  %75 = icmp slt i32 %74, %3
  br i1 %75, label %76, label %.critedge261.thread

76:                                               ; preds = %71
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %7) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %7)
  %77 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull @.str.1)
          to label %78 unwind label %89

78:                                               ; preds = %76
  %79 = add nuw nsw i32 %72, 1
  %80 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %77, i32 noundef %79)
          to label %81 unwind label %89

81:                                               ; preds = %78
  %82 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %80, ptr noundef nonnull @.str.2)
          to label %83 unwind label %89

83:                                               ; preds = %81
  %84 = load ptr, ptr @simSetLastError, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #9
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull align 8 dereferenceable(112) %7)
          to label %85 unwind label %91

85:                                               ; preds = %83
  %86 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  %87 = invoke noundef i32 %84(ptr noundef %4, ptr noundef %86)
          to label %88 unwind label %93

88:                                               ; preds = %85
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %7) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %7) #9
  br label %.critedge261.thread

89:                                               ; preds = %81, %78, %76
  %90 = landingpad { ptr, i32 }
          cleanup
  br label %96

91:                                               ; preds = %83
  %92 = landingpad { ptr, i32 }
          cleanup
  br label %95

93:                                               ; preds = %85
  %94 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  br label %95

95:                                               ; preds = %93, %91
  %.pn = phi { ptr, i32 } [ %94, %93 ], [ %92, %91 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #9
  br label %96

96:                                               ; preds = %95, %89
  %.pn.pn = phi { ptr, i32 } [ %.pn, %95 ], [ %90, %89 ]
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %7) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %7) #9
  br label %387

.critedge:                                        ; preds = %56
  %97 = and i32 %64, -65537
  %.not213 = icmp eq i32 %60, %97
  br i1 %.not213, label %120, label %98

98:                                               ; preds = %.critedge
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %9) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %9)
  %99 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull @.str.1)
          to label %100 unwind label %112

100:                                              ; preds = %98
  %101 = trunc nuw nsw i64 %indvars.iv483 to i32
  %102 = add nuw nsw i32 %101, 1
  %103 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %99, i32 noundef %102)
          to label %104 unwind label %112

104:                                              ; preds = %100
  %105 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %103, ptr noundef nonnull @.str.2)
          to label %106 unwind label %112

106:                                              ; preds = %104
  %107 = load ptr, ptr @simSetLastError, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #9
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(112) %9)
          to label %108 unwind label %114

108:                                              ; preds = %106
  %109 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  %110 = invoke noundef i32 %107(ptr noundef %4, ptr noundef %109)
          to label %111 unwind label %116

111:                                              ; preds = %108
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %9) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %9) #9
  br label %.critedge261.thread

112:                                              ; preds = %104, %100, %98
  %113 = landingpad { ptr, i32 }
          cleanup
  br label %119

114:                                              ; preds = %106
  %115 = landingpad { ptr, i32 }
          cleanup
  br label %118

116:                                              ; preds = %108
  %117 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  br label %118

118:                                              ; preds = %116, %114
  %.pn256 = phi { ptr, i32 } [ %117, %116 ], [ %115, %114 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  br label %119

119:                                              ; preds = %118, %112
  %.pn256.pn = phi { ptr, i32 } [ %.pn256, %118 ], [ %113, %112 ]
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %9) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %9) #9
  br label %387

120:                                              ; preds = %.critedge
  %121 = and i32 %60, 8
  %.not214 = icmp eq i32 %121, 0
  br i1 %.not214, label %291, label %122

122:                                              ; preds = %120
  %123 = getelementptr inbounds i32, ptr %57, i64 %62
  %124 = load i32, ptr %123, align 4, !tbaa !12
  %gep = getelementptr inbounds i32, ptr %invariant.gep, i64 %58
  %125 = load i32, ptr %gep, align 4, !tbaa !12
  %126 = icmp sge i32 %124, %125
  %.not224 = icmp eq i32 %125, 0
  %or.cond = or i1 %126, %.not224
  br i1 %or.cond, label %149, label %127

127:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %11) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %11)
  %128 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull @.str.1)
          to label %129 unwind label %141

129:                                              ; preds = %127
  %130 = trunc nuw nsw i64 %indvars.iv483 to i32
  %131 = add nuw nsw i32 %130, 1
  %132 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %128, i32 noundef %131)
          to label %133 unwind label %141

133:                                              ; preds = %129
  %134 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %132, ptr noundef nonnull @.str.3)
          to label %135 unwind label %141

135:                                              ; preds = %133
  %136 = load ptr, ptr @simSetLastError, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #9
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(112) %11)
          to label %137 unwind label %143

137:                                              ; preds = %135
  %138 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  %139 = invoke noundef i32 %136(ptr noundef %4, ptr noundef %138)
          to label %140 unwind label %145

140:                                              ; preds = %137
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %11) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %11) #9
  br label %.critedge261.thread

141:                                              ; preds = %133, %129, %127
  %142 = landingpad { ptr, i32 }
          cleanup
  br label %148

143:                                              ; preds = %135
  %144 = landingpad { ptr, i32 }
          cleanup
  br label %147

145:                                              ; preds = %137
  %146 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  br label %147

147:                                              ; preds = %145, %143
  %.pn253 = phi { ptr, i32 } [ %146, %145 ], [ %144, %143 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #9
  br label %148

148:                                              ; preds = %147, %141
  %.pn253.pn = phi { ptr, i32 } [ %.pn253, %147 ], [ %142, %141 ]
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %11) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %11) #9
  br label %387

149:                                              ; preds = %122
  %150 = add nsw i32 %60, -8
  switch i32 %60, label %179 [
    i32 8, label %151
    i32 9, label %159
  ]

151:                                              ; preds = %149
  %152 = call noalias noundef nonnull dereferenceable(160) ptr @_Znwm(i64 noundef 160) #10
  invoke void @_ZN20CLuaFunctionDataItemC1Ev(ptr noundef nonnull align 8 dereferenceable(156) %152)
          to label %153 unwind label %155

153:                                              ; preds = %151
  call void @_ZN20CLuaFunctionDataItem11setNilTableEi(ptr noundef nonnull align 8 dereferenceable(156) %152, i32 noundef %124)
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %13) #9
  call void @_ZN20CLuaFunctionDataItemC1Ev(ptr noundef nonnull align 8 dereferenceable(156) %13)
  invoke void @_ZN20CLuaFunctionDataItem11setNilTableEi(ptr noundef nonnull align 8 dereferenceable(156) %13, i32 noundef %124)
          to label %154 unwind label %157

154:                                              ; preds = %153
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(156) %13)
          to label %.thread286 unwind label %157

.thread286:                                       ; preds = %154
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %13) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %13) #9
  br label %.critedge261

155:                                              ; preds = %151
  %156 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %152, i64 noundef 160) #11
  br label %387

157:                                              ; preds = %154, %153
  %158 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %13) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %13) #9
  br label %387

159:                                              ; preds = %149
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %14) #9
  call void @_ZNSt6vectorIbSaIbEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #9
  %160 = icmp sgt i32 %124, 0
  br i1 %160, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %159
  %161 = sext i32 %.0133427 to i64
  br label %.lr.ph

._crit_edge.loopexit:                             ; preds = %167
  %162 = trunc nsw i64 %indvars.iv.next to i32
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %159
  %.1134.lcssa = phi i32 [ %.0133427, %159 ], [ %162, %._crit_edge.loopexit ]
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %15) #9
  invoke void @_ZN20CLuaFunctionDataItemC1ERKSt6vectorIbSaIbEE(ptr noundef nonnull align 8 dereferenceable(156) %15, ptr noundef nonnull align 8 dereferenceable(40) %14)
          to label %171 unwind label %173

.lr.ph:                                           ; preds = %.lr.ph.preheader, %167
  %indvars.iv = phi i64 [ %161, %.lr.ph.preheader ], [ %indvars.iv.next, %167 ]
  %.0128394 = phi i32 [ 0, %.lr.ph.preheader ], [ %168, %167 ]
  %163 = load ptr, ptr %44, align 8, !tbaa !14
  %164 = getelementptr inbounds i8, ptr %163, i64 %indvars.iv
  %165 = load i8, ptr %164, align 1, !tbaa !15
  %166 = icmp ne i8 %165, 0
  invoke void @_ZNSt6vectorIbSaIbEE9push_backEb(ptr noundef nonnull align 8 dereferenceable(40) %14, i1 noundef zeroext %166)
          to label %167 unwind label %169

167:                                              ; preds = %.lr.ph
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %168 = add nuw nsw i32 %.0128394, 1
  %exitcond.not = icmp eq i32 %168, %124
  br i1 %exitcond.not, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !16

169:                                              ; preds = %.lr.ph
  %170 = landingpad { ptr, i32 }
          cleanup
  br label %178

171:                                              ; preds = %._crit_edge
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(156) %15)
          to label %172 unwind label %175

172:                                              ; preds = %171
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %15) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %15) #9
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %14) #9
  br label %179

173:                                              ; preds = %._crit_edge
  %174 = landingpad { ptr, i32 }
          cleanup
  br label %177

175:                                              ; preds = %171
  %176 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %15) #9
  br label %177

177:                                              ; preds = %175, %173
  %.pn227 = phi { ptr, i32 } [ %176, %175 ], [ %174, %173 ]
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %15) #9
  br label %178

178:                                              ; preds = %177, %169
  %.pn250 = phi { ptr, i32 } [ %170, %169 ], [ %.pn227, %177 ]
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %14) #9
  br label %387

179:                                              ; preds = %149, %172
  %.2135 = phi i32 [ %.1134.lcssa, %172 ], [ %.0133427, %149 ]
  %180 = icmp eq i32 %150, 2
  br i1 %180, label %181, label %199

181:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #9
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #9
  %182 = icmp sgt i32 %124, 0
  br i1 %182, label %.lr.ph398.preheader, label %._crit_edge399

.lr.ph398.preheader:                              ; preds = %181
  %183 = sext i32 %.0139426 to i64
  br label %.lr.ph398

._crit_edge399.loopexit:                          ; preds = %187
  %184 = trunc nsw i64 %indvars.iv.next471 to i32
  br label %._crit_edge399

._crit_edge399:                                   ; preds = %._crit_edge399.loopexit, %181
  %.1140.lcssa = phi i32 [ %.0139426, %181 ], [ %184, %._crit_edge399.loopexit ]
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %17) #9
  invoke void @_ZN20CLuaFunctionDataItemC1ERKSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(156) %17, ptr noundef nonnull align 8 dereferenceable(24) %16)
          to label %191 unwind label %193

.lr.ph398:                                        ; preds = %.lr.ph398.preheader, %187
  %indvars.iv470 = phi i64 [ %183, %.lr.ph398.preheader ], [ %indvars.iv.next471, %187 ]
  %.0127396 = phi i32 [ 0, %.lr.ph398.preheader ], [ %188, %187 ]
  %185 = load ptr, ptr %45, align 8, !tbaa !18
  %186 = getelementptr inbounds i32, ptr %185, i64 %indvars.iv470
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 4 dereferenceable(4) %186)
          to label %187 unwind label %189

187:                                              ; preds = %.lr.ph398
  %indvars.iv.next471 = add nsw i64 %indvars.iv470, 1
  %188 = add nuw nsw i32 %.0127396, 1
  %exitcond473.not = icmp eq i32 %188, %124
  br i1 %exitcond473.not, label %._crit_edge399.loopexit, label %.lr.ph398, !llvm.loop !19

189:                                              ; preds = %.lr.ph398
  %190 = landingpad { ptr, i32 }
          cleanup
  br label %198

191:                                              ; preds = %._crit_edge399
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(156) %17)
          to label %192 unwind label %195

192:                                              ; preds = %191
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %17) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %17) #9
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #9
  br label %199

193:                                              ; preds = %._crit_edge399
  %194 = landingpad { ptr, i32 }
          cleanup
  br label %197

195:                                              ; preds = %191
  %196 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %17) #9
  br label %197

197:                                              ; preds = %195, %193
  %.pn229 = phi { ptr, i32 } [ %196, %195 ], [ %194, %193 ]
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %17) #9
  br label %198

198:                                              ; preds = %197, %189
  %.pn248 = phi { ptr, i32 } [ %190, %189 ], [ %.pn229, %197 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #9
  br label %387

199:                                              ; preds = %192, %179
  %.2141 = phi i32 [ %.1140.lcssa, %192 ], [ %.0139426, %179 ]
  %200 = icmp eq i32 %150, 3
  br i1 %200, label %201, label %219

201:                                              ; preds = %199
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #9
  call void @_ZNSt6vectorIfSaIfEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #9
  %202 = icmp sgt i32 %124, 0
  br i1 %202, label %.lr.ph404.preheader, label %._crit_edge405

.lr.ph404.preheader:                              ; preds = %201
  %203 = sext i32 %.0199421 to i64
  br label %.lr.ph404

._crit_edge405.loopexit:                          ; preds = %207
  %204 = trunc nsw i64 %indvars.iv.next475 to i32
  br label %._crit_edge405

._crit_edge405:                                   ; preds = %._crit_edge405.loopexit, %201
  %.1200.lcssa = phi i32 [ %.0199421, %201 ], [ %204, %._crit_edge405.loopexit ]
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %19) #9
  invoke void @_ZN20CLuaFunctionDataItemC1ERKSt6vectorIfSaIfEE(ptr noundef nonnull align 8 dereferenceable(156) %19, ptr noundef nonnull align 8 dereferenceable(24) %18)
          to label %211 unwind label %213

.lr.ph404:                                        ; preds = %.lr.ph404.preheader, %207
  %indvars.iv474 = phi i64 [ %203, %.lr.ph404.preheader ], [ %indvars.iv.next475, %207 ]
  %.0126402 = phi i32 [ 0, %.lr.ph404.preheader ], [ %208, %207 ]
  %205 = load ptr, ptr %46, align 8, !tbaa !20
  %206 = getelementptr inbounds float, ptr %205, i64 %indvars.iv474
  invoke void @_ZNSt6vectorIfSaIfEE9push_backERKf(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 4 dereferenceable(4) %206)
          to label %207 unwind label %209

207:                                              ; preds = %.lr.ph404
  %indvars.iv.next475 = add nsw i64 %indvars.iv474, 1
  %208 = add nuw nsw i32 %.0126402, 1
  %exitcond477.not = icmp eq i32 %208, %124
  br i1 %exitcond477.not, label %._crit_edge405.loopexit, label %.lr.ph404, !llvm.loop !21

209:                                              ; preds = %.lr.ph404
  %210 = landingpad { ptr, i32 }
          cleanup
  br label %218

211:                                              ; preds = %._crit_edge405
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(156) %19)
          to label %212 unwind label %215

212:                                              ; preds = %211
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %19) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %19) #9
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #9
  br label %219

213:                                              ; preds = %._crit_edge405
  %214 = landingpad { ptr, i32 }
          cleanup
  br label %217

215:                                              ; preds = %211
  %216 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %19) #9
  br label %217

217:                                              ; preds = %215, %213
  %.pn231 = phi { ptr, i32 } [ %216, %215 ], [ %214, %213 ]
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %19) #9
  br label %218

218:                                              ; preds = %217, %209
  %.pn246 = phi { ptr, i32 } [ %210, %209 ], [ %.pn231, %217 ]
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #9
  br label %387

219:                                              ; preds = %212, %199
  %.2201 = phi i32 [ %.1200.lcssa, %212 ], [ %.0199421, %199 ]
  %220 = icmp eq i32 %150, 7
  br i1 %220, label %221, label %239

221:                                              ; preds = %219
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #9
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #9
  %222 = icmp sgt i32 %124, 0
  br i1 %222, label %.lr.ph410.preheader, label %._crit_edge411

.lr.ph410.preheader:                              ; preds = %221
  %223 = sext i32 %.0193422 to i64
  br label %.lr.ph410

._crit_edge411.loopexit:                          ; preds = %227
  %224 = trunc nsw i64 %indvars.iv.next479 to i32
  br label %._crit_edge411

._crit_edge411:                                   ; preds = %._crit_edge411.loopexit, %221
  %.1194.lcssa = phi i32 [ %.0193422, %221 ], [ %224, %._crit_edge411.loopexit ]
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %21) #9
  invoke void @_ZN20CLuaFunctionDataItemC1ERKSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(156) %21, ptr noundef nonnull align 8 dereferenceable(24) %20)
          to label %231 unwind label %233

.lr.ph410:                                        ; preds = %.lr.ph410.preheader, %227
  %indvars.iv478 = phi i64 [ %223, %.lr.ph410.preheader ], [ %indvars.iv.next479, %227 ]
  %.0125408 = phi i32 [ 0, %.lr.ph410.preheader ], [ %228, %227 ]
  %225 = load ptr, ptr %47, align 8, !tbaa !22
  %226 = getelementptr inbounds double, ptr %225, i64 %indvars.iv478
  invoke void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(8) %226)
          to label %227 unwind label %229

227:                                              ; preds = %.lr.ph410
  %indvars.iv.next479 = add nsw i64 %indvars.iv478, 1
  %228 = add nuw nsw i32 %.0125408, 1
  %exitcond481.not = icmp eq i32 %228, %124
  br i1 %exitcond481.not, label %._crit_edge411.loopexit, label %.lr.ph410, !llvm.loop !23

229:                                              ; preds = %.lr.ph410
  %230 = landingpad { ptr, i32 }
          cleanup
  br label %238

231:                                              ; preds = %._crit_edge411
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(156) %21)
          to label %232 unwind label %235

232:                                              ; preds = %231
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %21) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %21) #9
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #9
  br label %239

233:                                              ; preds = %._crit_edge411
  %234 = landingpad { ptr, i32 }
          cleanup
  br label %237

235:                                              ; preds = %231
  %236 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %21) #9
  br label %237

237:                                              ; preds = %235, %233
  %.pn233 = phi { ptr, i32 } [ %236, %235 ], [ %234, %233 ]
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %21) #9
  br label %238

238:                                              ; preds = %237, %229
  %.pn244 = phi { ptr, i32 } [ %230, %229 ], [ %.pn233, %237 ]
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #9
  br label %387

239:                                              ; preds = %232, %219
  %.2195 = phi i32 [ %.1194.lcssa, %232 ], [ %.0193422, %219 ]
  %240 = icmp eq i32 %150, 4
  br i1 %240, label %241, label %268

241:                                              ; preds = %239
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #9
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #9
  %242 = icmp sgt i32 %124, 0
  br i1 %242, label %.lr.ph416, label %._crit_edge417

._crit_edge417:                                   ; preds = %247, %241
  %.1188.lcssa = phi i32 [ %.0187423, %241 ], [ %253, %247 ]
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %25) #9
  invoke void @_ZN20CLuaFunctionDataItemC1ERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EE(ptr noundef nonnull align 8 dereferenceable(156) %25, ptr noundef nonnull align 8 dereferenceable(24) %22)
          to label %260 unwind label %262

.lr.ph416:                                        ; preds = %241, %247
  %.0124414 = phi i32 [ %254, %247 ], [ 0, %241 ]
  %.1188413 = phi i32 [ %253, %247 ], [ %.0187423, %241 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #9
  %243 = load ptr, ptr %48, align 8, !tbaa !24
  %244 = sext i32 %.1188413 to i64
  %245 = getelementptr inbounds i8, ptr %243, i64 %244
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef %245, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %246 unwind label %255

246:                                              ; preds = %.lr.ph416
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #9
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %247 unwind label %257

247:                                              ; preds = %246
  %248 = load ptr, ptr %48, align 8, !tbaa !24
  %249 = getelementptr inbounds i8, ptr %248, i64 %244
  %250 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %249) #12
  %251 = trunc i64 %250 to i32
  %252 = add i32 %.1188413, 1
  %253 = add i32 %252, %251
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #9
  %254 = add nuw nsw i32 %.0124414, 1
  %exitcond482.not = icmp eq i32 %254, %124
  br i1 %exitcond482.not, label %._crit_edge417, label %.lr.ph416, !llvm.loop !25

255:                                              ; preds = %.lr.ph416
  %256 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #9
  br label %259

257:                                              ; preds = %246
  %258 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  br label %259

259:                                              ; preds = %257, %255
  %.pn241 = phi { ptr, i32 } [ %258, %257 ], [ %256, %255 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #9
  br label %267

260:                                              ; preds = %._crit_edge417
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(156) %25)
          to label %261 unwind label %264

261:                                              ; preds = %260
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %25) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %25) #9
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #9
  br label %268

262:                                              ; preds = %._crit_edge417
  %263 = landingpad { ptr, i32 }
          cleanup
  br label %266

264:                                              ; preds = %260
  %265 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %25) #9
  br label %266

266:                                              ; preds = %264, %262
  %.pn235 = phi { ptr, i32 } [ %265, %264 ], [ %263, %262 ]
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %25) #9
  br label %267

267:                                              ; preds = %266, %259
  %.pn241.pn = phi { ptr, i32 } [ %.pn241, %259 ], [ %.pn235, %266 ]
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #9
  br label %387

268:                                              ; preds = %261, %239
  %.2189 = phi i32 [ %.1188.lcssa, %261 ], [ %.0187423, %239 ]
  %.not240 = icmp eq i32 %150, 6
  br i1 %.not240, label %269, label %.critedge261

269:                                              ; preds = %268
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %26) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %26)
  %270 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull @.str.1)
          to label %271 unwind label %283

271:                                              ; preds = %269
  %272 = trunc nuw nsw i64 %indvars.iv483 to i32
  %273 = add nuw nsw i32 %272, 1
  %274 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %270, i32 noundef %273)
          to label %275 unwind label %283

275:                                              ; preds = %271
  %276 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %274, ptr noundef nonnull @.str.4)
          to label %277 unwind label %283

277:                                              ; preds = %275
  %278 = load ptr, ptr @simSetLastError, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #9
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %27, ptr noundef nonnull align 8 dereferenceable(112) %26)
          to label %279 unwind label %285

279:                                              ; preds = %277
  %280 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  %281 = invoke noundef i32 %278(ptr noundef %4, ptr noundef %280)
          to label %282 unwind label %287

282:                                              ; preds = %279
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %26) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %26) #9
  br label %.critedge261.thread

283:                                              ; preds = %275, %271, %269
  %284 = landingpad { ptr, i32 }
          cleanup
  br label %290

285:                                              ; preds = %277
  %286 = landingpad { ptr, i32 }
          cleanup
  br label %289

287:                                              ; preds = %279
  %288 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  br label %289

289:                                              ; preds = %287, %285
  %.pn237 = phi { ptr, i32 } [ %288, %287 ], [ %286, %285 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #9
  br label %290

290:                                              ; preds = %289, %283
  %.pn237.pn = phi { ptr, i32 } [ %.pn237, %289 ], [ %284, %283 ]
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %26) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %26) #9
  br label %387

291:                                              ; preds = %120
  switch i32 %60, label %.critedge261 [
    i32 6, label %349
    i32 1, label %292
    i32 2, label %302
    i32 3, label %311
    i32 7, label %320
    i32 4, label %329
  ]

292:                                              ; preds = %291
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %28) #9
  %293 = load ptr, ptr %44, align 8, !tbaa !14
  %294 = sext i32 %.0133427 to i64
  %295 = getelementptr inbounds i8, ptr %293, i64 %294
  %296 = load i8, ptr %295, align 1, !tbaa !15
  %297 = icmp ne i8 %296, 0
  call void @_ZN20CLuaFunctionDataItemC1Eb(ptr noundef nonnull align 8 dereferenceable(156) %28, i1 noundef zeroext %297)
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(156) %28)
          to label %298 unwind label %300

298:                                              ; preds = %292
  %299 = add nsw i32 %.0133427, 1
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %28) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %28) #9
  br label %.critedge261

300:                                              ; preds = %292
  %301 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %28) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %28) #9
  br label %387

302:                                              ; preds = %291
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %29) #9
  %303 = load ptr, ptr %45, align 8, !tbaa !18
  %304 = sext i32 %.0139426 to i64
  %305 = getelementptr inbounds i32, ptr %303, i64 %304
  %306 = load i32, ptr %305, align 4, !tbaa !12
  call void @_ZN20CLuaFunctionDataItemC1Ei(ptr noundef nonnull align 8 dereferenceable(156) %29, i32 noundef %306)
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(156) %29)
          to label %307 unwind label %309

307:                                              ; preds = %302
  %308 = add nsw i32 %.0139426, 1
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %29) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %29) #9
  br label %.critedge261

309:                                              ; preds = %302
  %310 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %29) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %29) #9
  br label %387

311:                                              ; preds = %291
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %30) #9
  %312 = load ptr, ptr %46, align 8, !tbaa !20
  %313 = sext i32 %.0199421 to i64
  %314 = getelementptr inbounds float, ptr %312, i64 %313
  %315 = load float, ptr %314, align 4, !tbaa !26
  call void @_ZN20CLuaFunctionDataItemC1Ef(ptr noundef nonnull align 8 dereferenceable(156) %30, float noundef %315)
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(156) %30)
          to label %316 unwind label %318

316:                                              ; preds = %311
  %317 = add nsw i32 %.0199421, 1
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %30) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %30) #9
  br label %.critedge261

318:                                              ; preds = %311
  %319 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %30) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %30) #9
  br label %387

320:                                              ; preds = %291
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %31) #9
  %321 = load ptr, ptr %47, align 8, !tbaa !22
  %322 = sext i32 %.0193422 to i64
  %323 = getelementptr inbounds double, ptr %321, i64 %322
  %324 = load double, ptr %323, align 8, !tbaa !28
  call void @_ZN20CLuaFunctionDataItemC1Ed(ptr noundef nonnull align 8 dereferenceable(156) %31, double noundef %324)
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(156) %31)
          to label %325 unwind label %327

325:                                              ; preds = %320
  %326 = add nsw i32 %.0193422, 1
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %31) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %31) #9
  br label %.critedge261

327:                                              ; preds = %320
  %328 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %31) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %31) #9
  br label %387

329:                                              ; preds = %291
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %32) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #9
  %330 = load ptr, ptr %48, align 8, !tbaa !24
  %331 = sext i32 %.0187423 to i64
  %332 = getelementptr inbounds i8, ptr %330, i64 %331
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %34) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef %332, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %333 unwind label %341

333:                                              ; preds = %329
  invoke void @_ZN20CLuaFunctionDataItemC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(156) %32, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %334 unwind label %343

334:                                              ; preds = %333
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #9
  %335 = load ptr, ptr %48, align 8, !tbaa !24
  %336 = getelementptr inbounds i8, ptr %335, i64 %331
  %337 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %336) #12
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(156) %32)
          to label %.thread320 unwind label %346

.thread320:                                       ; preds = %334
  %338 = trunc i64 %337 to i32
  %339 = add i32 %.0187423, 1
  %340 = add i32 %339, %338
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %32) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %32) #9
  br label %.critedge261

341:                                              ; preds = %329
  %342 = landingpad { ptr, i32 }
          cleanup
  br label %345

343:                                              ; preds = %333
  %344 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #9
  br label %345

345:                                              ; preds = %343, %341
  %.pn215 = phi { ptr, i32 } [ %344, %343 ], [ %342, %341 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #9
  br label %348

346:                                              ; preds = %334
  %347 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %32) #9
  br label %348

348:                                              ; preds = %346, %345
  %.pn217 = phi { ptr, i32 } [ %347, %346 ], [ %.pn215, %345 ]
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %32) #9
  br label %387

349:                                              ; preds = %291
  %350 = getelementptr inbounds i32, ptr %57, i64 %62
  %351 = load i32, ptr %350, align 4, !tbaa !12
  %gep420 = getelementptr inbounds i32, ptr %invariant.gep, i64 %58
  %352 = load i32, ptr %gep420, align 4, !tbaa !12
  %353 = icmp sge i32 %351, %352
  %.not219 = icmp eq i32 %352, 0
  %or.cond262 = or i1 %353, %.not219
  br i1 %or.cond262, label %375, label %354

354:                                              ; preds = %349
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %35) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %35)
  %355 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull @.str.1)
          to label %356 unwind label %367

356:                                              ; preds = %354
  %357 = trunc nuw nsw i64 %indvars.iv483 to i32
  %358 = add nuw nsw i32 %357, 1
  %359 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %355, i32 noundef %358)
          to label %360 unwind label %367

360:                                              ; preds = %356
  %361 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %359, ptr noundef nonnull @.str.5)
          to label %362 unwind label %367

362:                                              ; preds = %360
  %363 = load ptr, ptr @simSetLastError, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) #9
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %36, ptr noundef nonnull align 8 dereferenceable(112) %35)
          to label %364 unwind label %369

364:                                              ; preds = %362
  %365 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  %366 = invoke noundef i32 %363(ptr noundef %4, ptr noundef %365)
          to label %386 unwind label %371

367:                                              ; preds = %360, %356, %354
  %368 = landingpad { ptr, i32 }
          cleanup
  br label %374

369:                                              ; preds = %362
  %370 = landingpad { ptr, i32 }
          cleanup
  br label %373

371:                                              ; preds = %364
  %372 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  br label %373

373:                                              ; preds = %371, %369
  %.pn220 = phi { ptr, i32 } [ %372, %371 ], [ %370, %369 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #9
  br label %374

374:                                              ; preds = %373, %367
  %.pn220.pn = phi { ptr, i32 } [ %.pn220, %373 ], [ %368, %367 ]
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %35) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %35) #9
  br label %387

375:                                              ; preds = %349
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %37) #9
  %376 = load ptr, ptr %49, align 8, !tbaa !30
  %377 = sext i32 %.0182424 to i64
  %378 = getelementptr inbounds i8, ptr %376, i64 %377
  call void @_ZN20CLuaFunctionDataItemC1EPKcj(ptr noundef nonnull align 8 dereferenceable(156) %37, ptr noundef %378, i32 noundef %351)
  %379 = load ptr, ptr %43, align 8, !tbaa !13
  %380 = getelementptr inbounds i32, ptr %379, i64 %62
  %381 = load i32, ptr %380, align 4, !tbaa !12
  invoke void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(156) %37)
          to label %382 unwind label %384

382:                                              ; preds = %375
  %383 = add nsw i32 %381, %.0182424
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %37) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %37) #9
  br label %.critedge261

384:                                              ; preds = %375
  %385 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156) %37) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %37) #9
  br label %387

386:                                              ; preds = %364
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %35) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %35) #9
  br label %.critedge261.thread

.critedge261:                                     ; preds = %291, %325, %316, %307, %298, %.thread320, %382, %.thread286, %68, %268
  %.5204 = phi i32 [ %.0199421, %68 ], [ %.2201, %268 ], [ %.0199421, %.thread286 ], [ %.0199421, %.thread320 ], [ %.0199421, %382 ], [ %.0199421, %298 ], [ %.0199421, %307 ], [ %317, %316 ], [ %.0199421, %325 ], [ %.0199421, %291 ]
  %.5198 = phi i32 [ %.0193422, %68 ], [ %.2195, %268 ], [ %.0193422, %.thread286 ], [ %.0193422, %.thread320 ], [ %.0193422, %382 ], [ %.0193422, %298 ], [ %.0193422, %307 ], [ %.0193422, %316 ], [ %326, %325 ], [ %.0193422, %291 ]
  %.5192 = phi i32 [ %.0187423, %68 ], [ %.2189, %268 ], [ %.0187423, %.thread286 ], [ %340, %.thread320 ], [ %.0187423, %382 ], [ %.0187423, %298 ], [ %.0187423, %307 ], [ %.0187423, %316 ], [ %.0187423, %325 ], [ %.0187423, %291 ]
  %.4186 = phi i32 [ %.0182424, %68 ], [ %.0182424, %268 ], [ %.0182424, %.thread286 ], [ %.0182424, %.thread320 ], [ %383, %382 ], [ %.0182424, %298 ], [ %.0182424, %307 ], [ %.0182424, %316 ], [ %.0182424, %325 ], [ %.0182424, %291 ]
  %.5144 = phi i32 [ %.0139426, %68 ], [ %.2141, %268 ], [ %.0139426, %.thread286 ], [ %.0139426, %.thread320 ], [ %.0139426, %382 ], [ %.0139426, %298 ], [ %308, %307 ], [ %.0139426, %316 ], [ %.0139426, %325 ], [ %.0139426, %291 ]
  %.5138 = phi i32 [ %.0133427, %68 ], [ %.2135, %268 ], [ %.0133427, %.thread286 ], [ %.0133427, %.thread320 ], [ %.0133427, %382 ], [ %299, %298 ], [ %.0133427, %307 ], [ %.0133427, %316 ], [ %.0133427, %325 ], [ %.0133427, %291 ]
  %indvars.iv.next484 = add nuw nsw i64 %indvars.iv483, 1
  %exitcond486.not = icmp eq i64 %indvars.iv.next484, %wide.trip.count
  br i1 %exitcond486.not, label %.critedge261.thread, label %53, !llvm.loop !31

387:                                              ; preds = %300, %309, %318, %327, %348, %374, %384, %178, %198, %218, %238, %267, %290, %157, %155, %148, %119, %96, %69
  %.pn256.pn.pn = phi { ptr, i32 } [ %.pn256.pn, %119 ], [ %.pn253.pn, %148 ], [ %70, %69 ], [ %.pn.pn, %96 ], [ %.pn250, %178 ], [ %.pn248, %198 ], [ %.pn246, %218 ], [ %.pn244, %238 ], [ %.pn241.pn, %267 ], [ %.pn237.pn, %290 ], [ %158, %157 ], [ %156, %155 ], [ %.pn220.pn, %374 ], [ %385, %384 ], [ %.pn217, %348 ], [ %328, %327 ], [ %319, %318 ], [ %310, %309 ], [ %301, %300 ]
  resume { ptr, i32 } %.pn256.pn.pn

.critedge261.thread:                              ; preds = %53, %.critedge261, %.preheader, %111, %140, %282, %386, %88, %71, %50
  %.7 = phi i1 [ false, %50 ], [ true, %71 ], [ false, %88 ], [ false, %386 ], [ false, %282 ], [ false, %140 ], [ false, %111 ], [ true, %.preheader ], [ true, %.critedge261 ], [ true, %53 ]
  ret i1 %.7
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

declare void @_ZN20CLuaFunctionDataItemC1Ev(ptr noundef nonnull align 8 dereferenceable(156)) unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorI20CLuaFunctionDataItemSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(156)) local_unnamed_addr #1 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nounwind
declare void @_ZN20CLuaFunctionDataItemD1Ev(ptr noundef nonnull align 8 dereferenceable(156)) unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorI20CLuaFunctionDataItemSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #6

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) local_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 #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #3 align 2

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

declare void @_ZN20CLuaFunctionDataItem11setNilTableEi(ptr noundef nonnull align 8 dereferenceable(156), i32 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIbSaIbEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIbSaIbEE9push_backEb(ptr noundef nonnull align 8 dereferenceable(40), i1 noundef zeroext) local_unnamed_addr #1 align 2

declare void @_ZN20CLuaFunctionDataItemC1ERKSt6vectorIbSaIbEE(ptr noundef nonnull align 8 dereferenceable(156), ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

declare void @_ZN20CLuaFunctionDataItemC1ERKSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(156), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIfSaIfEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIfSaIfEE9push_backERKf(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1 align 2

declare void @_ZN20CLuaFunctionDataItemC1ERKSt6vectorIfSaIfEE(ptr noundef nonnull align 8 dereferenceable(156), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

declare void @_ZN20CLuaFunctionDataItemC1ERKSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(156), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 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 #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backERKS5_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #8

declare void @_ZN20CLuaFunctionDataItemC1ERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EE(ptr noundef nonnull align 8 dereferenceable(156), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

declare void @_ZN20CLuaFunctionDataItemC1Eb(ptr noundef nonnull align 8 dereferenceable(156), i1 noundef zeroext) unnamed_addr #4

declare void @_ZN20CLuaFunctionDataItemC1Ei(ptr noundef nonnull align 8 dereferenceable(156), i32 noundef) unnamed_addr #4

declare void @_ZN20CLuaFunctionDataItemC1Ef(ptr noundef nonnull align 8 dereferenceable(156), float noundef) unnamed_addr #4

declare void @_ZN20CLuaFunctionDataItemC1Ed(ptr noundef nonnull align 8 dereferenceable(156), double noundef) unnamed_addr #4

declare void @_ZN20CLuaFunctionDataItemC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(156), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN20CLuaFunctionDataItemC1EPKcj(ptr noundef nonnull align 8 dereferenceable(156), ptr noundef, i32 noundef) unnamed_addr #4

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 40}
!6 = !{!"_ZTS12SLuaCallBack", !7, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !7, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !7, i64 88, !10, i64 96, !8, i64 104, !10, i64 112, !10, i64 120, !7, i64 128, !10, i64 136, !10, i64 144}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!10, !10, i64 0}
!12 = !{!7, !7, i64 0}
!13 = !{!6, !10, i64 48}
!14 = !{!6, !10, i64 8}
!15 = !{!8, !8, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = !{!6, !10, i64 16}
!19 = distinct !{!19, !17}
!20 = !{!6, !10, i64 24}
!21 = distinct !{!21, !17}
!22 = !{!6, !10, i64 136}
!23 = distinct !{!23, !17}
!24 = !{!6, !10, i64 32}
!25 = distinct !{!25, !17}
!26 = !{!27, !27, i64 0}
!27 = !{!"float", !8, i64 0}
!28 = !{!29, !29, i64 0}
!29 = !{!"double", !8, i64 0}
!30 = !{!6, !10, i64 112}
!31 = distinct !{!31, !17}


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