; LLVM IR from paintdream/DontStarveLuaJIT :: src/lua51/src (lvm)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.lua_TValue = type { %union.Value, i32 }
%union.Value = type { ptr }
%struct.lua_State = type { ptr, i8, i8, i8, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i16, i16, i8, i8, i32, i32, ptr, %struct.lua_TValue, %struct.lua_TValue, ptr, ptr, ptr, i64, [8 x i8] }
%struct.CallInfo = type { ptr, ptr, ptr, ptr, i32, i32 }
%struct.LClosure = type { ptr, i8, i8, i8, i8, ptr, ptr, ptr, [1 x ptr] }
%struct.Proto = type { ptr, i8, i8, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, ptr, i8, i8, i8, i8 }
%struct.UpVal = type { ptr, i8, i8, ptr, %union.anon }
%union.anon = type { %struct.lua_TValue }
%struct.GCheader = type { ptr, i8, i8 }
%struct.anon = type { ptr, i8, i8, i8, i32, i64 }
%struct.Table = type { ptr, i8, i8, i8, i8, ptr, ptr, ptr, ptr, ptr, i32 }

@luaO_nilobject_ = external hidden constant %struct.lua_TValue, align 8
@.str.5 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [28 x i8], align 1

; Function Attrs: nounwind uwtable
declare hidden ptr @luaV_tonumber(ptr noundef, ptr noundef) #0

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

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

; Function Attrs: nounwind uwtable
declare hidden void @luaV_gettable(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

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

declare hidden void @luaG_typeerror(ptr noundef, ptr noundef, ptr noundef) #3

declare hidden void @luaG_runerror(ptr noundef, ptr noundef, ...) #3

; Function Attrs: nounwind uwtable
declare hidden void @luaV_settable(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

declare hidden void @luaC_barrierback(ptr noundef, ptr noundef) #3

; Function Attrs: nounwind uwtable
declare hidden i32 @luaV_lessthan(ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare hidden i32 @luaV_equalval(ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare hidden void @luaV_concat(ptr noundef, i32 noundef, i32 noundef) #0

; Function Attrs: nounwind uwtable
declare hidden i32 @call_binTM(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) #0

; Function Attrs: nounwind uwtable
define hidden void @luaV_execute(ptr noundef %0, i32 noundef %1) #0 {
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca %struct.lua_TValue, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca %struct.lua_TValue, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca double, align 8
  %53 = alloca double, align 8
  %54 = alloca ptr, align 8
  %55 = alloca ptr, align 8
  %56 = alloca ptr, align 8
  %57 = alloca double, align 8
  %58 = alloca double, align 8
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca double, align 8
  %63 = alloca double, align 8
  %64 = alloca ptr, align 8
  %65 = alloca ptr, align 8
  %66 = alloca double, align 8
  %67 = alloca ptr, align 8
  %68 = alloca i32, align 4
  %69 = alloca ptr, align 8
  %70 = alloca ptr, align 8
  %71 = alloca ptr, align 8
  %72 = alloca ptr, align 8
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca ptr, align 8
  %76 = alloca ptr, align 8
  %77 = alloca ptr, align 8
  %78 = alloca ptr, align 8
  %79 = alloca ptr, align 8
  %80 = alloca ptr, align 8
  %81 = alloca ptr, align 8
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca i32, align 4
  %85 = alloca ptr, align 8
  %86 = alloca i32, align 4
  %87 = alloca ptr, align 8
  %88 = alloca ptr, align 8
  %89 = alloca ptr, align 8
  %90 = alloca ptr, align 8
  %91 = alloca i32, align 4
  %92 = alloca double, align 8
  %93 = alloca double, align 8
  %94 = alloca double, align 8
  %95 = alloca ptr, align 8
  %96 = alloca ptr, align 8
  %97 = alloca ptr, align 8
  %98 = alloca ptr, align 8
  %99 = alloca ptr, align 8
  %100 = alloca ptr, align 8
  %101 = alloca ptr, align 8
  %102 = alloca ptr, align 8
  %103 = alloca ptr, align 8
  %104 = alloca ptr, align 8
  %105 = alloca ptr, align 8
  %106 = alloca ptr, align 8
  %107 = alloca ptr, align 8
  %108 = alloca ptr, align 8
  %109 = alloca ptr, align 8
  %110 = alloca i32, align 4
  %111 = alloca i32, align 4
  %112 = alloca i32, align 4
  %113 = alloca ptr, align 8
  %114 = alloca ptr, align 8
  %115 = alloca ptr, align 8
  %116 = alloca ptr, align 8
  %117 = alloca ptr, align 8
  %118 = alloca ptr, align 8
  %119 = alloca i32, align 4
  %120 = alloca i32, align 4
  %121 = alloca ptr, align 8
  %122 = alloca i32, align 4
  %123 = alloca i32, align 4
  %124 = alloca ptr, align 8
  %125 = alloca i32, align 4
  %126 = alloca ptr, align 8
  %127 = alloca ptr, align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store i32 %1, ptr %4, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #6
  br label %128

128:                                              ; preds = %2249, %2
  %129 = load ptr, ptr %3, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.lua_State, ptr %129, i32 0, i32 8
  %131 = load ptr, ptr %130, align 8, !tbaa !11
  store ptr %131, ptr %8, align 8, !tbaa !5
  %132 = load ptr, ptr %3, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.lua_State, ptr %132, i32 0, i32 7
  %134 = load ptr, ptr %133, align 8, !tbaa !16
  %135 = getelementptr inbounds %struct.CallInfo, ptr %134, i32 0, i32 1
  %136 = load ptr, ptr %135, align 8, !tbaa !17
  %137 = getelementptr inbounds %struct.lua_TValue, ptr %136, i32 0, i32 0
  %138 = load ptr, ptr %137, align 8, !tbaa !19
  store ptr %138, ptr %5, align 8, !tbaa !5
  %139 = load ptr, ptr %3, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.lua_State, ptr %139, i32 0, i32 5
  %141 = load ptr, ptr %140, align 8, !tbaa !20
  store ptr %141, ptr %6, align 8, !tbaa !5
  %142 = load ptr, ptr %5, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.LClosure, ptr %142, i32 0, i32 7
  %144 = load ptr, ptr %143, align 8, !tbaa !21
  %145 = getelementptr inbounds %struct.Proto, ptr %144, i32 0, i32 3
  %146 = load ptr, ptr %145, align 8, !tbaa !23
  store ptr %146, ptr %7, align 8, !tbaa !5
  br label %147

147:                                              ; preds = %2251, %2249, %128
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #6
  %148 = load ptr, ptr %8, align 8, !tbaa !5
  %149 = getelementptr inbounds i32, ptr %148, i32 1
  store ptr %149, ptr %8, align 8, !tbaa !5
  %150 = load i32, ptr %148, align 4, !tbaa !9
  store i32 %150, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #6
  %151 = load ptr, ptr %3, align 8, !tbaa !5
  %152 = getelementptr inbounds %struct.lua_State, ptr %151, i32 0, i32 17
  %153 = load i8, ptr %152, align 4, !tbaa !25
  %154 = zext i8 %153 to i32
  %155 = and i32 %154, 12
  %156 = icmp ne i32 %155, 0
  br i1 %156, label %157, label %187

157:                                              ; preds = %147
  %158 = load ptr, ptr %3, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.lua_State, ptr %158, i32 0, i32 20
  %160 = load i32, ptr %159, align 4, !tbaa !26
  %161 = add nsw i32 %160, -1
  store i32 %161, ptr %159, align 4, !tbaa !26
  %162 = icmp eq i32 %161, 0
  br i1 %162, label %170, label %163

163:                                              ; preds = %157
  %164 = load ptr, ptr %3, align 8, !tbaa !5
  %165 = getelementptr inbounds %struct.lua_State, ptr %164, i32 0, i32 17
  %166 = load i8, ptr %165, align 4, !tbaa !25
  %167 = zext i8 %166 to i32
  %168 = and i32 %167, 4
  %169 = icmp ne i32 %168, 0
  br i1 %169, label %170, label %187

170:                                              ; preds = %163, %157
  %171 = load ptr, ptr %3, align 8, !tbaa !5
  %172 = load ptr, ptr %8, align 8, !tbaa !5
  call void @traceexec(ptr noundef %171, ptr noundef %172)
  %173 = load ptr, ptr %3, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.lua_State, ptr %173, i32 0, i32 3
  %175 = load i8, ptr %174, align 2, !tbaa !27
  %176 = zext i8 %175 to i32
  %177 = icmp eq i32 %176, 1
  br i1 %177, label %178, label %183

178:                                              ; preds = %170
  %179 = load ptr, ptr %8, align 8, !tbaa !5
  %180 = getelementptr inbounds i32, ptr %179, i64 -1
  %181 = load ptr, ptr %3, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.lua_State, ptr %181, i32 0, i32 8
  store ptr %180, ptr %182, align 8, !tbaa !11
  store i32 1, ptr %11, align 4
  br label %2249

183:                                              ; preds = %170
  %184 = load ptr, ptr %3, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.lua_State, ptr %184, i32 0, i32 5
  %186 = load ptr, ptr %185, align 8, !tbaa !20
  store ptr %186, ptr %6, align 8, !tbaa !5
  br label %187

187:                                              ; preds = %183, %163, %147
  %188 = load ptr, ptr %6, align 8, !tbaa !5
  %189 = load i32, ptr %9, align 4, !tbaa !9
  %190 = lshr i32 %189, 6
  %191 = and i32 %190, 255
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds %struct.lua_TValue, ptr %188, i64 %192
  store ptr %193, ptr %10, align 8, !tbaa !5
  %194 = load i32, ptr %9, align 4, !tbaa !9
  %195 = lshr i32 %194, 0
  %196 = and i32 %195, 63
  switch i32 %196, label %2248 [
    i32 0, label %197
    i32 1, label %214
    i32 2, label %231
    i32 3, label %248
    i32 4, label %264
    i32 5, label %286
    i32 6, label %309
    i32 7, label %346
    i32 8, label %368
    i32 9, label %417
    i32 10, label %470
    i32 11, label %495
    i32 12, label %545
    i32 13, label %626
    i32 14, label %707
    i32 15, label %788
    i32 16, label %869
    i32 17, label %955
    i32 18, label %1036
    i32 19, label %1070
    i32 20, label %1111
    i32 21, label %1161
    i32 22, label %1200
    i32 23, label %1208
    i32 24, label %1291
    i32 25, label %1360
    i32 26, label %1429
    i32 27, label %1465
    i32 28, label %1518
    i32 29, label %1563
    i32 30, label %1680
    i32 31, label %1726
    i32 32, label %1772
    i32 33, label %1840
    i32 34, label %1937
    i32 35, label %2049
    i32 36, label %2052
    i32 37, label %2137
  ]

197:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #6
  %198 = load ptr, ptr %6, align 8, !tbaa !5
  %199 = load i32, ptr %9, align 4, !tbaa !9
  %200 = lshr i32 %199, 23
  %201 = and i32 %200, 511
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds %struct.lua_TValue, ptr %198, i64 %202
  store ptr %203, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #6
  %204 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %204, ptr %13, align 8, !tbaa !5
  %205 = load ptr, ptr %13, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.lua_TValue, ptr %205, i32 0, i32 0
  %207 = load ptr, ptr %12, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.lua_TValue, ptr %207, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %206, ptr align 8 %208, i64 8, i1 false), !tbaa.struct !28
  %209 = load ptr, ptr %12, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.lua_TValue, ptr %209, i32 0, i32 1
  %211 = load i32, ptr %210, align 8, !tbaa !29
  %212 = load ptr, ptr %13, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.lua_TValue, ptr %212, i32 0, i32 1
  store i32 %211, ptr %213, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #6
  store i32 4, ptr %11, align 4
  br label %2249

214:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #6
  %215 = load ptr, ptr %7, align 8, !tbaa !5
  %216 = load i32, ptr %9, align 4, !tbaa !9
  %217 = lshr i32 %216, 14
  %218 = and i32 %217, 262143
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds %struct.lua_TValue, ptr %215, i64 %219
  store ptr %220, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #6
  %221 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %221, ptr %15, align 8, !tbaa !5
  %222 = load ptr, ptr %15, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.lua_TValue, ptr %222, i32 0, i32 0
  %224 = load ptr, ptr %14, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.lua_TValue, ptr %224, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %223, ptr align 8 %225, i64 8, i1 false), !tbaa.struct !28
  %226 = load ptr, ptr %14, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.lua_TValue, ptr %226, i32 0, i32 1
  %228 = load i32, ptr %227, align 8, !tbaa !29
  %229 = load ptr, ptr %15, align 8, !tbaa !5
  %230 = getelementptr inbounds %struct.lua_TValue, ptr %229, i32 0, i32 1
  store i32 %228, ptr %230, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  store i32 4, ptr %11, align 4
  br label %2249

231:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #6
  %232 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %232, ptr %16, align 8, !tbaa !5
  %233 = load i32, ptr %9, align 4, !tbaa !9
  %234 = lshr i32 %233, 23
  %235 = and i32 %234, 511
  %236 = load ptr, ptr %16, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.lua_TValue, ptr %236, i32 0, i32 0
  store i32 %235, ptr %237, align 8, !tbaa !19
  %238 = load ptr, ptr %16, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.lua_TValue, ptr %238, i32 0, i32 1
  store i32 1, ptr %239, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #6
  %240 = load i32, ptr %9, align 4, !tbaa !9
  %241 = lshr i32 %240, 14
  %242 = and i32 %241, 511
  %243 = icmp ne i32 %242, 0
  br i1 %243, label %244, label %247

244:                                              ; preds = %231
  %245 = load ptr, ptr %8, align 8, !tbaa !5
  %246 = getelementptr inbounds i32, ptr %245, i32 1
  store ptr %246, ptr %8, align 8, !tbaa !5
  br label %247

247:                                              ; preds = %244, %231
  store i32 4, ptr %11, align 4
  br label %2249

248:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #6
  %249 = load ptr, ptr %6, align 8, !tbaa !5
  %250 = load i32, ptr %9, align 4, !tbaa !9
  %251 = lshr i32 %250, 23
  %252 = and i32 %251, 511
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds %struct.lua_TValue, ptr %249, i64 %253
  store ptr %254, ptr %17, align 8, !tbaa !5
  br label %255

255:                                              ; preds = %259, %248
  %256 = load ptr, ptr %17, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.lua_TValue, ptr %256, i32 -1
  store ptr %257, ptr %17, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.lua_TValue, ptr %256, i32 0, i32 1
  store i32 0, ptr %258, align 8, !tbaa !29
  br label %259

259:                                              ; preds = %255
  %260 = load ptr, ptr %17, align 8, !tbaa !5
  %261 = load ptr, ptr %10, align 8, !tbaa !5
  %262 = icmp uge ptr %260, %261
  br i1 %262, label %255, label %263, !llvm.loop !30

263:                                              ; preds = %259
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  br label %2249

264:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  %265 = load i32, ptr %9, align 4, !tbaa !9
  %266 = lshr i32 %265, 23
  %267 = and i32 %266, 511
  store i32 %267, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #6
  %268 = load ptr, ptr %5, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.LClosure, ptr %268, i32 0, i32 8
  %270 = load i32, ptr %18, align 4, !tbaa !9
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds [1 x ptr], ptr %269, i64 0, i64 %271
  %273 = load ptr, ptr %272, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct.UpVal, ptr %273, i32 0, i32 3
  %275 = load ptr, ptr %274, align 8, !tbaa !32
  store ptr %275, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #6
  %276 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %276, ptr %20, align 8, !tbaa !5
  %277 = load ptr, ptr %20, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.lua_TValue, ptr %277, i32 0, i32 0
  %279 = load ptr, ptr %19, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.lua_TValue, ptr %279, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %278, ptr align 8 %280, i64 8, i1 false), !tbaa.struct !28
  %281 = load ptr, ptr %19, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.lua_TValue, ptr %281, i32 0, i32 1
  %283 = load i32, ptr %282, align 8, !tbaa !29
  %284 = load ptr, ptr %20, align 8, !tbaa !5
  %285 = getelementptr inbounds %struct.lua_TValue, ptr %284, i32 0, i32 1
  store i32 %283, ptr %285, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  br label %2249

286:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #6
  %287 = load ptr, ptr %7, align 8, !tbaa !5
  %288 = load i32, ptr %9, align 4, !tbaa !9
  %289 = lshr i32 %288, 14
  %290 = and i32 %289, 262143
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds %struct.lua_TValue, ptr %287, i64 %291
  store ptr %292, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #6
  store ptr %21, ptr %23, align 8, !tbaa !5
  %293 = load ptr, ptr %5, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.LClosure, ptr %293, i32 0, i32 6
  %295 = load ptr, ptr %294, align 8, !tbaa !34
  %296 = load ptr, ptr %23, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.lua_TValue, ptr %296, i32 0, i32 0
  store ptr %295, ptr %297, align 8, !tbaa !19
  %298 = load ptr, ptr %23, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.lua_TValue, ptr %298, i32 0, i32 1
  store i32 5, ptr %299, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #6
  %300 = load ptr, ptr %8, align 8, !tbaa !5
  %301 = load ptr, ptr %3, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.lua_State, ptr %301, i32 0, i32 8
  store ptr %300, ptr %302, align 8, !tbaa !11
  %303 = load ptr, ptr %3, align 8, !tbaa !5
  %304 = load ptr, ptr %22, align 8, !tbaa !5
  %305 = load ptr, ptr %10, align 8, !tbaa !5
  call void @luaV_gettable(ptr noundef %303, ptr noundef %21, ptr noundef %304, ptr noundef %305)
  %306 = load ptr, ptr %3, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.lua_State, ptr %306, i32 0, i32 5
  %308 = load ptr, ptr %307, align 8, !tbaa !20
  store ptr %308, ptr %6, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #6
  br label %2249

309:                                              ; preds = %187
  %310 = load ptr, ptr %8, align 8, !tbaa !5
  %311 = load ptr, ptr %3, align 8, !tbaa !5
  %312 = getelementptr inbounds %struct.lua_State, ptr %311, i32 0, i32 8
  store ptr %310, ptr %312, align 8, !tbaa !11
  %313 = load ptr, ptr %3, align 8, !tbaa !5
  %314 = load ptr, ptr %6, align 8, !tbaa !5
  %315 = load i32, ptr %9, align 4, !tbaa !9
  %316 = lshr i32 %315, 23
  %317 = and i32 %316, 511
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds %struct.lua_TValue, ptr %314, i64 %318
  %320 = load i32, ptr %9, align 4, !tbaa !9
  %321 = lshr i32 %320, 14
  %322 = and i32 %321, 511
  %323 = and i32 %322, 256
  %324 = icmp ne i32 %323, 0
  br i1 %324, label %325, label %333

325:                                              ; preds = %309
  %326 = load ptr, ptr %7, align 8, !tbaa !5
  %327 = load i32, ptr %9, align 4, !tbaa !9
  %328 = lshr i32 %327, 14
  %329 = and i32 %328, 511
  %330 = and i32 %329, -257
  %331 = sext i32 %330 to i64
  %332 = getelementptr inbounds %struct.lua_TValue, ptr %326, i64 %331
  br label %340

333:                                              ; preds = %309
  %334 = load ptr, ptr %6, align 8, !tbaa !5
  %335 = load i32, ptr %9, align 4, !tbaa !9
  %336 = lshr i32 %335, 14
  %337 = and i32 %336, 511
  %338 = sext i32 %337 to i64
  %339 = getelementptr inbounds %struct.lua_TValue, ptr %334, i64 %338
  br label %340

340:                                              ; preds = %333, %325
  %341 = phi ptr [ %332, %325 ], [ %339, %333 ]
  %342 = load ptr, ptr %10, align 8, !tbaa !5
  call void @luaV_gettable(ptr noundef %313, ptr noundef %319, ptr noundef %341, ptr noundef %342)
  %343 = load ptr, ptr %3, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.lua_State, ptr %343, i32 0, i32 5
  %345 = load ptr, ptr %344, align 8, !tbaa !20
  store ptr %345, ptr %6, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  br label %2249

346:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #6
  store ptr %24, ptr %25, align 8, !tbaa !5
  %347 = load ptr, ptr %5, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.LClosure, ptr %347, i32 0, i32 6
  %349 = load ptr, ptr %348, align 8, !tbaa !34
  %350 = load ptr, ptr %25, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.lua_TValue, ptr %350, i32 0, i32 0
  store ptr %349, ptr %351, align 8, !tbaa !19
  %352 = load ptr, ptr %25, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.lua_TValue, ptr %352, i32 0, i32 1
  store i32 5, ptr %353, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #6
  %354 = load ptr, ptr %8, align 8, !tbaa !5
  %355 = load ptr, ptr %3, align 8, !tbaa !5
  %356 = getelementptr inbounds %struct.lua_State, ptr %355, i32 0, i32 8
  store ptr %354, ptr %356, align 8, !tbaa !11
  %357 = load ptr, ptr %3, align 8, !tbaa !5
  %358 = load ptr, ptr %7, align 8, !tbaa !5
  %359 = load i32, ptr %9, align 4, !tbaa !9
  %360 = lshr i32 %359, 14
  %361 = and i32 %360, 262143
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds %struct.lua_TValue, ptr %358, i64 %362
  %364 = load ptr, ptr %10, align 8, !tbaa !5
  call void @luaV_settable(ptr noundef %357, ptr noundef %24, ptr noundef %363, ptr noundef %364)
  %365 = load ptr, ptr %3, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.lua_State, ptr %365, i32 0, i32 5
  %367 = load ptr, ptr %366, align 8, !tbaa !20
  store ptr %367, ptr %6, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #6
  br label %2249

368:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #6
  %369 = load ptr, ptr %5, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.LClosure, ptr %369, i32 0, i32 8
  %371 = load i32, ptr %9, align 4, !tbaa !9
  %372 = lshr i32 %371, 23
  %373 = and i32 %372, 511
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds [1 x ptr], ptr %370, i64 0, i64 %374
  %376 = load ptr, ptr %375, align 8, !tbaa !5
  store ptr %376, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #6
  %377 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %377, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #6
  %378 = load ptr, ptr %26, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.UpVal, ptr %378, i32 0, i32 3
  %380 = load ptr, ptr %379, align 8, !tbaa !32
  store ptr %380, ptr %28, align 8, !tbaa !5
  %381 = load ptr, ptr %28, align 8, !tbaa !5
  %382 = getelementptr inbounds %struct.lua_TValue, ptr %381, i32 0, i32 0
  %383 = load ptr, ptr %27, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.lua_TValue, ptr %383, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %382, ptr align 8 %384, i64 8, i1 false), !tbaa.struct !28
  %385 = load ptr, ptr %27, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.lua_TValue, ptr %385, i32 0, i32 1
  %387 = load i32, ptr %386, align 8, !tbaa !29
  %388 = load ptr, ptr %28, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.lua_TValue, ptr %388, i32 0, i32 1
  store i32 %387, ptr %389, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #6
  %390 = load ptr, ptr %10, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.lua_TValue, ptr %390, i32 0, i32 1
  %392 = load i32, ptr %391, align 8, !tbaa !29
  %393 = icmp sge i32 %392, 4
  br i1 %393, label %394, label %416

394:                                              ; preds = %368
  %395 = load ptr, ptr %10, align 8, !tbaa !5
  %396 = getelementptr inbounds %struct.lua_TValue, ptr %395, i32 0, i32 0
  %397 = load ptr, ptr %396, align 8, !tbaa !19
  %398 = getelementptr inbounds %struct.GCheader, ptr %397, i32 0, i32 2
  %399 = load i8, ptr %398, align 1, !tbaa !19
  %400 = zext i8 %399 to i32
  %401 = and i32 %400, 3
  %402 = icmp ne i32 %401, 0
  br i1 %402, label %403, label %416

403:                                              ; preds = %394
  %404 = load ptr, ptr %26, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.GCheader, ptr %404, i32 0, i32 2
  %406 = load i8, ptr %405, align 1, !tbaa !19
  %407 = zext i8 %406 to i32
  %408 = and i32 %407, 4
  %409 = icmp ne i32 %408, 0
  br i1 %409, label %410, label %416

410:                                              ; preds = %403
  %411 = load ptr, ptr %3, align 8, !tbaa !5
  %412 = load ptr, ptr %26, align 8, !tbaa !5
  %413 = load ptr, ptr %10, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.lua_TValue, ptr %413, i32 0, i32 0
  %415 = load ptr, ptr %414, align 8, !tbaa !19
  call void @luaC_barrierf(ptr noundef %411, ptr noundef %412, ptr noundef %415)
  br label %416

416:                                              ; preds = %410, %403, %394, %368
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  br label %2249

417:                                              ; preds = %187
  %418 = load ptr, ptr %8, align 8, !tbaa !5
  %419 = load ptr, ptr %3, align 8, !tbaa !5
  %420 = getelementptr inbounds %struct.lua_State, ptr %419, i32 0, i32 8
  store ptr %418, ptr %420, align 8, !tbaa !11
  %421 = load ptr, ptr %3, align 8, !tbaa !5
  %422 = load ptr, ptr %10, align 8, !tbaa !5
  %423 = load i32, ptr %9, align 4, !tbaa !9
  %424 = lshr i32 %423, 23
  %425 = and i32 %424, 511
  %426 = and i32 %425, 256
  %427 = icmp ne i32 %426, 0
  br i1 %427, label %428, label %436

428:                                              ; preds = %417
  %429 = load ptr, ptr %7, align 8, !tbaa !5
  %430 = load i32, ptr %9, align 4, !tbaa !9
  %431 = lshr i32 %430, 23
  %432 = and i32 %431, 511
  %433 = and i32 %432, -257
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds %struct.lua_TValue, ptr %429, i64 %434
  br label %443

436:                                              ; preds = %417
  %437 = load ptr, ptr %6, align 8, !tbaa !5
  %438 = load i32, ptr %9, align 4, !tbaa !9
  %439 = lshr i32 %438, 23
  %440 = and i32 %439, 511
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds %struct.lua_TValue, ptr %437, i64 %441
  br label %443

443:                                              ; preds = %436, %428
  %444 = phi ptr [ %435, %428 ], [ %442, %436 ]
  %445 = load i32, ptr %9, align 4, !tbaa !9
  %446 = lshr i32 %445, 14
  %447 = and i32 %446, 511
  %448 = and i32 %447, 256
  %449 = icmp ne i32 %448, 0
  br i1 %449, label %450, label %458

450:                                              ; preds = %443
  %451 = load ptr, ptr %7, align 8, !tbaa !5
  %452 = load i32, ptr %9, align 4, !tbaa !9
  %453 = lshr i32 %452, 14
  %454 = and i32 %453, 511
  %455 = and i32 %454, -257
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds %struct.lua_TValue, ptr %451, i64 %456
  br label %465

458:                                              ; preds = %443
  %459 = load ptr, ptr %6, align 8, !tbaa !5
  %460 = load i32, ptr %9, align 4, !tbaa !9
  %461 = lshr i32 %460, 14
  %462 = and i32 %461, 511
  %463 = sext i32 %462 to i64
  %464 = getelementptr inbounds %struct.lua_TValue, ptr %459, i64 %463
  br label %465

465:                                              ; preds = %458, %450
  %466 = phi ptr [ %457, %450 ], [ %464, %458 ]
  call void @luaV_settable(ptr noundef %421, ptr noundef %422, ptr noundef %444, ptr noundef %466)
  %467 = load ptr, ptr %3, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.lua_State, ptr %467, i32 0, i32 5
  %469 = load ptr, ptr %468, align 8, !tbaa !20
  store ptr %469, ptr %6, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  br label %2249

470:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  %471 = load i32, ptr %9, align 4, !tbaa !9
  %472 = lshr i32 %471, 23
  %473 = and i32 %472, 511
  store i32 %473, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  %474 = load i32, ptr %9, align 4, !tbaa !9
  %475 = lshr i32 %474, 14
  %476 = and i32 %475, 511
  store i32 %476, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #6
  %477 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %477, ptr %31, align 8, !tbaa !5
  %478 = load ptr, ptr %3, align 8, !tbaa !5
  %479 = load i32, ptr %29, align 4, !tbaa !9
  %480 = call i32 @luaO_fb2int(i32 noundef %479)
  %481 = load i32, ptr %30, align 4, !tbaa !9
  %482 = call i32 @luaO_fb2int(i32 noundef %481)
  %483 = call ptr @luaH_new(ptr noundef %478, i32 noundef %480, i32 noundef %482)
  %484 = load ptr, ptr %31, align 8, !tbaa !5
  %485 = getelementptr inbounds %struct.lua_TValue, ptr %484, i32 0, i32 0
  store ptr %483, ptr %485, align 8, !tbaa !19
  %486 = load ptr, ptr %31, align 8, !tbaa !5
  %487 = getelementptr inbounds %struct.lua_TValue, ptr %486, i32 0, i32 1
  store i32 5, ptr %487, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  %488 = load ptr, ptr %8, align 8, !tbaa !5
  %489 = load ptr, ptr %3, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.lua_State, ptr %489, i32 0, i32 8
  store ptr %488, ptr %490, align 8, !tbaa !11
  %491 = load ptr, ptr %3, align 8, !tbaa !5
  %492 = load ptr, ptr %3, align 8, !tbaa !5
  %493 = getelementptr inbounds %struct.lua_State, ptr %492, i32 0, i32 5
  %494 = load ptr, ptr %493, align 8, !tbaa !20
  store ptr %494, ptr %6, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  br label %2249

495:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #6
  %496 = load ptr, ptr %6, align 8, !tbaa !5
  %497 = load i32, ptr %9, align 4, !tbaa !9
  %498 = lshr i32 %497, 23
  %499 = and i32 %498, 511
  %500 = sext i32 %499 to i64
  %501 = getelementptr inbounds %struct.lua_TValue, ptr %496, i64 %500
  store ptr %501, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #6
  %502 = load ptr, ptr %32, align 8, !tbaa !5
  store ptr %502, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #6
  %503 = load ptr, ptr %10, align 8, !tbaa !5
  %504 = getelementptr inbounds %struct.lua_TValue, ptr %503, i64 1
  store ptr %504, ptr %34, align 8, !tbaa !5
  %505 = load ptr, ptr %34, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.lua_TValue, ptr %505, i32 0, i32 0
  %507 = load ptr, ptr %33, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.lua_TValue, ptr %507, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %506, ptr align 8 %508, i64 8, i1 false), !tbaa.struct !28
  %509 = load ptr, ptr %33, align 8, !tbaa !5
  %510 = getelementptr inbounds %struct.lua_TValue, ptr %509, i32 0, i32 1
  %511 = load i32, ptr %510, align 8, !tbaa !29
  %512 = load ptr, ptr %34, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.lua_TValue, ptr %512, i32 0, i32 1
  store i32 %511, ptr %513, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #6
  %514 = load ptr, ptr %8, align 8, !tbaa !5
  %515 = load ptr, ptr %3, align 8, !tbaa !5
  %516 = getelementptr inbounds %struct.lua_State, ptr %515, i32 0, i32 8
  store ptr %514, ptr %516, align 8, !tbaa !11
  %517 = load ptr, ptr %3, align 8, !tbaa !5
  %518 = load ptr, ptr %32, align 8, !tbaa !5
  %519 = load i32, ptr %9, align 4, !tbaa !9
  %520 = lshr i32 %519, 14
  %521 = and i32 %520, 511
  %522 = and i32 %521, 256
  %523 = icmp ne i32 %522, 0
  br i1 %523, label %524, label %532

524:                                              ; preds = %495
  %525 = load ptr, ptr %7, align 8, !tbaa !5
  %526 = load i32, ptr %9, align 4, !tbaa !9
  %527 = lshr i32 %526, 14
  %528 = and i32 %527, 511
  %529 = and i32 %528, -257
  %530 = sext i32 %529 to i64
  %531 = getelementptr inbounds %struct.lua_TValue, ptr %525, i64 %530
  br label %539

532:                                              ; preds = %495
  %533 = load ptr, ptr %6, align 8, !tbaa !5
  %534 = load i32, ptr %9, align 4, !tbaa !9
  %535 = lshr i32 %534, 14
  %536 = and i32 %535, 511
  %537 = sext i32 %536 to i64
  %538 = getelementptr inbounds %struct.lua_TValue, ptr %533, i64 %537
  br label %539

539:                                              ; preds = %532, %524
  %540 = phi ptr [ %531, %524 ], [ %538, %532 ]
  %541 = load ptr, ptr %10, align 8, !tbaa !5
  call void @luaV_gettable(ptr noundef %517, ptr noundef %518, ptr noundef %540, ptr noundef %541)
  %542 = load ptr, ptr %3, align 8, !tbaa !5
  %543 = getelementptr inbounds %struct.lua_State, ptr %542, i32 0, i32 5
  %544 = load ptr, ptr %543, align 8, !tbaa !20
  store ptr %544, ptr %6, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  br label %2249

545:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #6
  %546 = load i32, ptr %9, align 4, !tbaa !9
  %547 = lshr i32 %546, 23
  %548 = and i32 %547, 511
  %549 = and i32 %548, 256
  %550 = icmp ne i32 %549, 0
  br i1 %550, label %551, label %559

551:                                              ; preds = %545
  %552 = load ptr, ptr %7, align 8, !tbaa !5
  %553 = load i32, ptr %9, align 4, !tbaa !9
  %554 = lshr i32 %553, 23
  %555 = and i32 %554, 511
  %556 = and i32 %555, -257
  %557 = sext i32 %556 to i64
  %558 = getelementptr inbounds %struct.lua_TValue, ptr %552, i64 %557
  br label %566

559:                                              ; preds = %545
  %560 = load ptr, ptr %6, align 8, !tbaa !5
  %561 = load i32, ptr %9, align 4, !tbaa !9
  %562 = lshr i32 %561, 23
  %563 = and i32 %562, 511
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds %struct.lua_TValue, ptr %560, i64 %564
  br label %566

566:                                              ; preds = %559, %551
  %567 = phi ptr [ %558, %551 ], [ %565, %559 ]
  store ptr %567, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #6
  %568 = load i32, ptr %9, align 4, !tbaa !9
  %569 = lshr i32 %568, 14
  %570 = and i32 %569, 511
  %571 = and i32 %570, 256
  %572 = icmp ne i32 %571, 0
  br i1 %572, label %573, label %581

573:                                              ; preds = %566
  %574 = load ptr, ptr %7, align 8, !tbaa !5
  %575 = load i32, ptr %9, align 4, !tbaa !9
  %576 = lshr i32 %575, 14
  %577 = and i32 %576, 511
  %578 = and i32 %577, -257
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds %struct.lua_TValue, ptr %574, i64 %579
  br label %588

581:                                              ; preds = %566
  %582 = load ptr, ptr %6, align 8, !tbaa !5
  %583 = load i32, ptr %9, align 4, !tbaa !9
  %584 = lshr i32 %583, 14
  %585 = and i32 %584, 511
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds %struct.lua_TValue, ptr %582, i64 %586
  br label %588

588:                                              ; preds = %581, %573
  %589 = phi ptr [ %580, %573 ], [ %587, %581 ]
  store ptr %589, ptr %36, align 8, !tbaa !5
  %590 = load ptr, ptr %35, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.lua_TValue, ptr %590, i32 0, i32 1
  %592 = load i32, ptr %591, align 8, !tbaa !29
  %593 = icmp eq i32 %592, 3
  br i1 %593, label %594, label %614

594:                                              ; preds = %588
  %595 = load ptr, ptr %36, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct.lua_TValue, ptr %595, i32 0, i32 1
  %597 = load i32, ptr %596, align 8, !tbaa !29
  %598 = icmp eq i32 %597, 3
  br i1 %598, label %599, label %614

599:                                              ; preds = %594
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #6
  %600 = load ptr, ptr %35, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.lua_TValue, ptr %600, i32 0, i32 0
  %602 = load double, ptr %601, align 8, !tbaa !19
  store double %602, ptr %37, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #6
  %603 = load ptr, ptr %36, align 8, !tbaa !5
  %604 = getelementptr inbounds %struct.lua_TValue, ptr %603, i32 0, i32 0
  %605 = load double, ptr %604, align 8, !tbaa !19
  store double %605, ptr %38, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #6
  %606 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %606, ptr %39, align 8, !tbaa !5
  %607 = load double, ptr %37, align 8, !tbaa !35
  %608 = load double, ptr %38, align 8, !tbaa !35
  %609 = fadd double %607, %608
  %610 = load ptr, ptr %39, align 8, !tbaa !5
  %611 = getelementptr inbounds %struct.lua_TValue, ptr %610, i32 0, i32 0
  store double %609, ptr %611, align 8, !tbaa !19
  %612 = load ptr, ptr %39, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.lua_TValue, ptr %612, i32 0, i32 1
  store i32 3, ptr %613, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #6
  br label %625

614:                                              ; preds = %594, %588
  %615 = load ptr, ptr %8, align 8, !tbaa !5
  %616 = load ptr, ptr %3, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.lua_State, ptr %616, i32 0, i32 8
  store ptr %615, ptr %617, align 8, !tbaa !11
  %618 = load ptr, ptr %3, align 8, !tbaa !5
  %619 = load ptr, ptr %10, align 8, !tbaa !5
  %620 = load ptr, ptr %35, align 8, !tbaa !5
  %621 = load ptr, ptr %36, align 8, !tbaa !5
  call void @Arith(ptr noundef %618, ptr noundef %619, ptr noundef %620, ptr noundef %621, i32 noundef 5)
  %622 = load ptr, ptr %3, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.lua_State, ptr %622, i32 0, i32 5
  %624 = load ptr, ptr %623, align 8, !tbaa !20
  store ptr %624, ptr %6, align 8, !tbaa !5
  br label %625

625:                                              ; preds = %614, %599
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #6
  store i32 4, ptr %11, align 4
  br label %2249

626:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #6
  %627 = load i32, ptr %9, align 4, !tbaa !9
  %628 = lshr i32 %627, 23
  %629 = and i32 %628, 511
  %630 = and i32 %629, 256
  %631 = icmp ne i32 %630, 0
  br i1 %631, label %632, label %640

632:                                              ; preds = %626
  %633 = load ptr, ptr %7, align 8, !tbaa !5
  %634 = load i32, ptr %9, align 4, !tbaa !9
  %635 = lshr i32 %634, 23
  %636 = and i32 %635, 511
  %637 = and i32 %636, -257
  %638 = sext i32 %637 to i64
  %639 = getelementptr inbounds %struct.lua_TValue, ptr %633, i64 %638
  br label %647

640:                                              ; preds = %626
  %641 = load ptr, ptr %6, align 8, !tbaa !5
  %642 = load i32, ptr %9, align 4, !tbaa !9
  %643 = lshr i32 %642, 23
  %644 = and i32 %643, 511
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds %struct.lua_TValue, ptr %641, i64 %645
  br label %647

647:                                              ; preds = %640, %632
  %648 = phi ptr [ %639, %632 ], [ %646, %640 ]
  store ptr %648, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #6
  %649 = load i32, ptr %9, align 4, !tbaa !9
  %650 = lshr i32 %649, 14
  %651 = and i32 %650, 511
  %652 = and i32 %651, 256
  %653 = icmp ne i32 %652, 0
  br i1 %653, label %654, label %662

654:                                              ; preds = %647
  %655 = load ptr, ptr %7, align 8, !tbaa !5
  %656 = load i32, ptr %9, align 4, !tbaa !9
  %657 = lshr i32 %656, 14
  %658 = and i32 %657, 511
  %659 = and i32 %658, -257
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds %struct.lua_TValue, ptr %655, i64 %660
  br label %669

662:                                              ; preds = %647
  %663 = load ptr, ptr %6, align 8, !tbaa !5
  %664 = load i32, ptr %9, align 4, !tbaa !9
  %665 = lshr i32 %664, 14
  %666 = and i32 %665, 511
  %667 = sext i32 %666 to i64
  %668 = getelementptr inbounds %struct.lua_TValue, ptr %663, i64 %667
  br label %669

669:                                              ; preds = %662, %654
  %670 = phi ptr [ %661, %654 ], [ %668, %662 ]
  store ptr %670, ptr %41, align 8, !tbaa !5
  %671 = load ptr, ptr %40, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.lua_TValue, ptr %671, i32 0, i32 1
  %673 = load i32, ptr %672, align 8, !tbaa !29
  %674 = icmp eq i32 %673, 3
  br i1 %674, label %675, label %695

675:                                              ; preds = %669
  %676 = load ptr, ptr %41, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.lua_TValue, ptr %676, i32 0, i32 1
  %678 = load i32, ptr %677, align 8, !tbaa !29
  %679 = icmp eq i32 %678, 3
  br i1 %679, label %680, label %695

680:                                              ; preds = %675
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #6
  %681 = load ptr, ptr %40, align 8, !tbaa !5
  %682 = getelementptr inbounds %struct.lua_TValue, ptr %681, i32 0, i32 0
  %683 = load double, ptr %682, align 8, !tbaa !19
  store double %683, ptr %42, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #6
  %684 = load ptr, ptr %41, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.lua_TValue, ptr %684, i32 0, i32 0
  %686 = load double, ptr %685, align 8, !tbaa !19
  store double %686, ptr %43, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #6
  %687 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %687, ptr %44, align 8, !tbaa !5
  %688 = load double, ptr %42, align 8, !tbaa !35
  %689 = load double, ptr %43, align 8, !tbaa !35
  %690 = fsub double %688, %689
  %691 = load ptr, ptr %44, align 8, !tbaa !5
  %692 = getelementptr inbounds %struct.lua_TValue, ptr %691, i32 0, i32 0
  store double %690, ptr %692, align 8, !tbaa !19
  %693 = load ptr, ptr %44, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.lua_TValue, ptr %693, i32 0, i32 1
  store i32 3, ptr %694, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #6
  br label %706

695:                                              ; preds = %675, %669
  %696 = load ptr, ptr %8, align 8, !tbaa !5
  %697 = load ptr, ptr %3, align 8, !tbaa !5
  %698 = getelementptr inbounds %struct.lua_State, ptr %697, i32 0, i32 8
  store ptr %696, ptr %698, align 8, !tbaa !11
  %699 = load ptr, ptr %3, align 8, !tbaa !5
  %700 = load ptr, ptr %10, align 8, !tbaa !5
  %701 = load ptr, ptr %40, align 8, !tbaa !5
  %702 = load ptr, ptr %41, align 8, !tbaa !5
  call void @Arith(ptr noundef %699, ptr noundef %700, ptr noundef %701, ptr noundef %702, i32 noundef 6)
  %703 = load ptr, ptr %3, align 8, !tbaa !5
  %704 = getelementptr inbounds %struct.lua_State, ptr %703, i32 0, i32 5
  %705 = load ptr, ptr %704, align 8, !tbaa !20
  store ptr %705, ptr %6, align 8, !tbaa !5
  br label %706

706:                                              ; preds = %695, %680
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #6
  store i32 4, ptr %11, align 4
  br label %2249

707:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #6
  %708 = load i32, ptr %9, align 4, !tbaa !9
  %709 = lshr i32 %708, 23
  %710 = and i32 %709, 511
  %711 = and i32 %710, 256
  %712 = icmp ne i32 %711, 0
  br i1 %712, label %713, label %721

713:                                              ; preds = %707
  %714 = load ptr, ptr %7, align 8, !tbaa !5
  %715 = load i32, ptr %9, align 4, !tbaa !9
  %716 = lshr i32 %715, 23
  %717 = and i32 %716, 511
  %718 = and i32 %717, -257
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds %struct.lua_TValue, ptr %714, i64 %719
  br label %728

721:                                              ; preds = %707
  %722 = load ptr, ptr %6, align 8, !tbaa !5
  %723 = load i32, ptr %9, align 4, !tbaa !9
  %724 = lshr i32 %723, 23
  %725 = and i32 %724, 511
  %726 = sext i32 %725 to i64
  %727 = getelementptr inbounds %struct.lua_TValue, ptr %722, i64 %726
  br label %728

728:                                              ; preds = %721, %713
  %729 = phi ptr [ %720, %713 ], [ %727, %721 ]
  store ptr %729, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #6
  %730 = load i32, ptr %9, align 4, !tbaa !9
  %731 = lshr i32 %730, 14
  %732 = and i32 %731, 511
  %733 = and i32 %732, 256
  %734 = icmp ne i32 %733, 0
  br i1 %734, label %735, label %743

735:                                              ; preds = %728
  %736 = load ptr, ptr %7, align 8, !tbaa !5
  %737 = load i32, ptr %9, align 4, !tbaa !9
  %738 = lshr i32 %737, 14
  %739 = and i32 %738, 511
  %740 = and i32 %739, -257
  %741 = sext i32 %740 to i64
  %742 = getelementptr inbounds %struct.lua_TValue, ptr %736, i64 %741
  br label %750

743:                                              ; preds = %728
  %744 = load ptr, ptr %6, align 8, !tbaa !5
  %745 = load i32, ptr %9, align 4, !tbaa !9
  %746 = lshr i32 %745, 14
  %747 = and i32 %746, 511
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds %struct.lua_TValue, ptr %744, i64 %748
  br label %750

750:                                              ; preds = %743, %735
  %751 = phi ptr [ %742, %735 ], [ %749, %743 ]
  store ptr %751, ptr %46, align 8, !tbaa !5
  %752 = load ptr, ptr %45, align 8, !tbaa !5
  %753 = getelementptr inbounds %struct.lua_TValue, ptr %752, i32 0, i32 1
  %754 = load i32, ptr %753, align 8, !tbaa !29
  %755 = icmp eq i32 %754, 3
  br i1 %755, label %756, label %776

756:                                              ; preds = %750
  %757 = load ptr, ptr %46, align 8, !tbaa !5
  %758 = getelementptr inbounds %struct.lua_TValue, ptr %757, i32 0, i32 1
  %759 = load i32, ptr %758, align 8, !tbaa !29
  %760 = icmp eq i32 %759, 3
  br i1 %760, label %761, label %776

761:                                              ; preds = %756
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #6
  %762 = load ptr, ptr %45, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct.lua_TValue, ptr %762, i32 0, i32 0
  %764 = load double, ptr %763, align 8, !tbaa !19
  store double %764, ptr %47, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #6
  %765 = load ptr, ptr %46, align 8, !tbaa !5
  %766 = getelementptr inbounds %struct.lua_TValue, ptr %765, i32 0, i32 0
  %767 = load double, ptr %766, align 8, !tbaa !19
  store double %767, ptr %48, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #6
  %768 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %768, ptr %49, align 8, !tbaa !5
  %769 = load double, ptr %47, align 8, !tbaa !35
  %770 = load double, ptr %48, align 8, !tbaa !35
  %771 = fmul double %769, %770
  %772 = load ptr, ptr %49, align 8, !tbaa !5
  %773 = getelementptr inbounds %struct.lua_TValue, ptr %772, i32 0, i32 0
  store double %771, ptr %773, align 8, !tbaa !19
  %774 = load ptr, ptr %49, align 8, !tbaa !5
  %775 = getelementptr inbounds %struct.lua_TValue, ptr %774, i32 0, i32 1
  store i32 3, ptr %775, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #6
  br label %787

776:                                              ; preds = %756, %750
  %777 = load ptr, ptr %8, align 8, !tbaa !5
  %778 = load ptr, ptr %3, align 8, !tbaa !5
  %779 = getelementptr inbounds %struct.lua_State, ptr %778, i32 0, i32 8
  store ptr %777, ptr %779, align 8, !tbaa !11
  %780 = load ptr, ptr %3, align 8, !tbaa !5
  %781 = load ptr, ptr %10, align 8, !tbaa !5
  %782 = load ptr, ptr %45, align 8, !tbaa !5
  %783 = load ptr, ptr %46, align 8, !tbaa !5
  call void @Arith(ptr noundef %780, ptr noundef %781, ptr noundef %782, ptr noundef %783, i32 noundef 7)
  %784 = load ptr, ptr %3, align 8, !tbaa !5
  %785 = getelementptr inbounds %struct.lua_State, ptr %784, i32 0, i32 5
  %786 = load ptr, ptr %785, align 8, !tbaa !20
  store ptr %786, ptr %6, align 8, !tbaa !5
  br label %787

787:                                              ; preds = %776, %761
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #6
  store i32 4, ptr %11, align 4
  br label %2249

788:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #6
  %789 = load i32, ptr %9, align 4, !tbaa !9
  %790 = lshr i32 %789, 23
  %791 = and i32 %790, 511
  %792 = and i32 %791, 256
  %793 = icmp ne i32 %792, 0
  br i1 %793, label %794, label %802

794:                                              ; preds = %788
  %795 = load ptr, ptr %7, align 8, !tbaa !5
  %796 = load i32, ptr %9, align 4, !tbaa !9
  %797 = lshr i32 %796, 23
  %798 = and i32 %797, 511
  %799 = and i32 %798, -257
  %800 = sext i32 %799 to i64
  %801 = getelementptr inbounds %struct.lua_TValue, ptr %795, i64 %800
  br label %809

802:                                              ; preds = %788
  %803 = load ptr, ptr %6, align 8, !tbaa !5
  %804 = load i32, ptr %9, align 4, !tbaa !9
  %805 = lshr i32 %804, 23
  %806 = and i32 %805, 511
  %807 = sext i32 %806 to i64
  %808 = getelementptr inbounds %struct.lua_TValue, ptr %803, i64 %807
  br label %809

809:                                              ; preds = %802, %794
  %810 = phi ptr [ %801, %794 ], [ %808, %802 ]
  store ptr %810, ptr %50, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #6
  %811 = load i32, ptr %9, align 4, !tbaa !9
  %812 = lshr i32 %811, 14
  %813 = and i32 %812, 511
  %814 = and i32 %813, 256
  %815 = icmp ne i32 %814, 0
  br i1 %815, label %816, label %824

816:                                              ; preds = %809
  %817 = load ptr, ptr %7, align 8, !tbaa !5
  %818 = load i32, ptr %9, align 4, !tbaa !9
  %819 = lshr i32 %818, 14
  %820 = and i32 %819, 511
  %821 = and i32 %820, -257
  %822 = sext i32 %821 to i64
  %823 = getelementptr inbounds %struct.lua_TValue, ptr %817, i64 %822
  br label %831

824:                                              ; preds = %809
  %825 = load ptr, ptr %6, align 8, !tbaa !5
  %826 = load i32, ptr %9, align 4, !tbaa !9
  %827 = lshr i32 %826, 14
  %828 = and i32 %827, 511
  %829 = sext i32 %828 to i64
  %830 = getelementptr inbounds %struct.lua_TValue, ptr %825, i64 %829
  br label %831

831:                                              ; preds = %824, %816
  %832 = phi ptr [ %823, %816 ], [ %830, %824 ]
  store ptr %832, ptr %51, align 8, !tbaa !5
  %833 = load ptr, ptr %50, align 8, !tbaa !5
  %834 = getelementptr inbounds %struct.lua_TValue, ptr %833, i32 0, i32 1
  %835 = load i32, ptr %834, align 8, !tbaa !29
  %836 = icmp eq i32 %835, 3
  br i1 %836, label %837, label %857

837:                                              ; preds = %831
  %838 = load ptr, ptr %51, align 8, !tbaa !5
  %839 = getelementptr inbounds %struct.lua_TValue, ptr %838, i32 0, i32 1
  %840 = load i32, ptr %839, align 8, !tbaa !29
  %841 = icmp eq i32 %840, 3
  br i1 %841, label %842, label %857

842:                                              ; preds = %837
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #6
  %843 = load ptr, ptr %50, align 8, !tbaa !5
  %844 = getelementptr inbounds %struct.lua_TValue, ptr %843, i32 0, i32 0
  %845 = load double, ptr %844, align 8, !tbaa !19
  store double %845, ptr %52, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #6
  %846 = load ptr, ptr %51, align 8, !tbaa !5
  %847 = getelementptr inbounds %struct.lua_TValue, ptr %846, i32 0, i32 0
  %848 = load double, ptr %847, align 8, !tbaa !19
  store double %848, ptr %53, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #6
  %849 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %849, ptr %54, align 8, !tbaa !5
  %850 = load double, ptr %52, align 8, !tbaa !35
  %851 = load double, ptr %53, align 8, !tbaa !35
  %852 = fdiv double %850, %851
  %853 = load ptr, ptr %54, align 8, !tbaa !5
  %854 = getelementptr inbounds %struct.lua_TValue, ptr %853, i32 0, i32 0
  store double %852, ptr %854, align 8, !tbaa !19
  %855 = load ptr, ptr %54, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.lua_TValue, ptr %855, i32 0, i32 1
  store i32 3, ptr %856, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #6
  br label %868

857:                                              ; preds = %837, %831
  %858 = load ptr, ptr %8, align 8, !tbaa !5
  %859 = load ptr, ptr %3, align 8, !tbaa !5
  %860 = getelementptr inbounds %struct.lua_State, ptr %859, i32 0, i32 8
  store ptr %858, ptr %860, align 8, !tbaa !11
  %861 = load ptr, ptr %3, align 8, !tbaa !5
  %862 = load ptr, ptr %10, align 8, !tbaa !5
  %863 = load ptr, ptr %50, align 8, !tbaa !5
  %864 = load ptr, ptr %51, align 8, !tbaa !5
  call void @Arith(ptr noundef %861, ptr noundef %862, ptr noundef %863, ptr noundef %864, i32 noundef 8)
  %865 = load ptr, ptr %3, align 8, !tbaa !5
  %866 = getelementptr inbounds %struct.lua_State, ptr %865, i32 0, i32 5
  %867 = load ptr, ptr %866, align 8, !tbaa !20
  store ptr %867, ptr %6, align 8, !tbaa !5
  br label %868

868:                                              ; preds = %857, %842
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #6
  store i32 4, ptr %11, align 4
  br label %2249

869:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #6
  %870 = load i32, ptr %9, align 4, !tbaa !9
  %871 = lshr i32 %870, 23
  %872 = and i32 %871, 511
  %873 = and i32 %872, 256
  %874 = icmp ne i32 %873, 0
  br i1 %874, label %875, label %883

875:                                              ; preds = %869
  %876 = load ptr, ptr %7, align 8, !tbaa !5
  %877 = load i32, ptr %9, align 4, !tbaa !9
  %878 = lshr i32 %877, 23
  %879 = and i32 %878, 511
  %880 = and i32 %879, -257
  %881 = sext i32 %880 to i64
  %882 = getelementptr inbounds %struct.lua_TValue, ptr %876, i64 %881
  br label %890

883:                                              ; preds = %869
  %884 = load ptr, ptr %6, align 8, !tbaa !5
  %885 = load i32, ptr %9, align 4, !tbaa !9
  %886 = lshr i32 %885, 23
  %887 = and i32 %886, 511
  %888 = sext i32 %887 to i64
  %889 = getelementptr inbounds %struct.lua_TValue, ptr %884, i64 %888
  br label %890

890:                                              ; preds = %883, %875
  %891 = phi ptr [ %882, %875 ], [ %889, %883 ]
  store ptr %891, ptr %55, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #6
  %892 = load i32, ptr %9, align 4, !tbaa !9
  %893 = lshr i32 %892, 14
  %894 = and i32 %893, 511
  %895 = and i32 %894, 256
  %896 = icmp ne i32 %895, 0
  br i1 %896, label %897, label %905

897:                                              ; preds = %890
  %898 = load ptr, ptr %7, align 8, !tbaa !5
  %899 = load i32, ptr %9, align 4, !tbaa !9
  %900 = lshr i32 %899, 14
  %901 = and i32 %900, 511
  %902 = and i32 %901, -257
  %903 = sext i32 %902 to i64
  %904 = getelementptr inbounds %struct.lua_TValue, ptr %898, i64 %903
  br label %912

905:                                              ; preds = %890
  %906 = load ptr, ptr %6, align 8, !tbaa !5
  %907 = load i32, ptr %9, align 4, !tbaa !9
  %908 = lshr i32 %907, 14
  %909 = and i32 %908, 511
  %910 = sext i32 %909 to i64
  %911 = getelementptr inbounds %struct.lua_TValue, ptr %906, i64 %910
  br label %912

912:                                              ; preds = %905, %897
  %913 = phi ptr [ %904, %897 ], [ %911, %905 ]
  store ptr %913, ptr %56, align 8, !tbaa !5
  %914 = load ptr, ptr %55, align 8, !tbaa !5
  %915 = getelementptr inbounds %struct.lua_TValue, ptr %914, i32 0, i32 1
  %916 = load i32, ptr %915, align 8, !tbaa !29
  %917 = icmp eq i32 %916, 3
  br i1 %917, label %918, label %943

918:                                              ; preds = %912
  %919 = load ptr, ptr %56, align 8, !tbaa !5
  %920 = getelementptr inbounds %struct.lua_TValue, ptr %919, i32 0, i32 1
  %921 = load i32, ptr %920, align 8, !tbaa !29
  %922 = icmp eq i32 %921, 3
  br i1 %922, label %923, label %943

923:                                              ; preds = %918
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #6
  %924 = load ptr, ptr %55, align 8, !tbaa !5
  %925 = getelementptr inbounds %struct.lua_TValue, ptr %924, i32 0, i32 0
  %926 = load double, ptr %925, align 8, !tbaa !19
  store double %926, ptr %57, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #6
  %927 = load ptr, ptr %56, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.lua_TValue, ptr %927, i32 0, i32 0
  %929 = load double, ptr %928, align 8, !tbaa !19
  store double %929, ptr %58, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #6
  %930 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %930, ptr %59, align 8, !tbaa !5
  %931 = load double, ptr %57, align 8, !tbaa !35
  %932 = load double, ptr %57, align 8, !tbaa !35
  %933 = load double, ptr %58, align 8, !tbaa !35
  %934 = fdiv double %932, %933
  %935 = call double @llvm.floor.f64(double %934)
  %936 = load double, ptr %58, align 8, !tbaa !35
  %937 = fneg double %935
  %938 = call double @llvm.fmuladd.f64(double %937, double %936, double %931)
  %939 = load ptr, ptr %59, align 8, !tbaa !5
  %940 = getelementptr inbounds %struct.lua_TValue, ptr %939, i32 0, i32 0
  store double %938, ptr %940, align 8, !tbaa !19
  %941 = load ptr, ptr %59, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.lua_TValue, ptr %941, i32 0, i32 1
  store i32 3, ptr %942, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #6
  br label %954

943:                                              ; preds = %918, %912
  %944 = load ptr, ptr %8, align 8, !tbaa !5
  %945 = load ptr, ptr %3, align 8, !tbaa !5
  %946 = getelementptr inbounds %struct.lua_State, ptr %945, i32 0, i32 8
  store ptr %944, ptr %946, align 8, !tbaa !11
  %947 = load ptr, ptr %3, align 8, !tbaa !5
  %948 = load ptr, ptr %10, align 8, !tbaa !5
  %949 = load ptr, ptr %55, align 8, !tbaa !5
  %950 = load ptr, ptr %56, align 8, !tbaa !5
  call void @Arith(ptr noundef %947, ptr noundef %948, ptr noundef %949, ptr noundef %950, i32 noundef 9)
  %951 = load ptr, ptr %3, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.lua_State, ptr %951, i32 0, i32 5
  %953 = load ptr, ptr %952, align 8, !tbaa !20
  store ptr %953, ptr %6, align 8, !tbaa !5
  br label %954

954:                                              ; preds = %943, %923
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #6
  store i32 4, ptr %11, align 4
  br label %2249

955:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #6
  %956 = load i32, ptr %9, align 4, !tbaa !9
  %957 = lshr i32 %956, 23
  %958 = and i32 %957, 511
  %959 = and i32 %958, 256
  %960 = icmp ne i32 %959, 0
  br i1 %960, label %961, label %969

961:                                              ; preds = %955
  %962 = load ptr, ptr %7, align 8, !tbaa !5
  %963 = load i32, ptr %9, align 4, !tbaa !9
  %964 = lshr i32 %963, 23
  %965 = and i32 %964, 511
  %966 = and i32 %965, -257
  %967 = sext i32 %966 to i64
  %968 = getelementptr inbounds %struct.lua_TValue, ptr %962, i64 %967
  br label %976

969:                                              ; preds = %955
  %970 = load ptr, ptr %6, align 8, !tbaa !5
  %971 = load i32, ptr %9, align 4, !tbaa !9
  %972 = lshr i32 %971, 23
  %973 = and i32 %972, 511
  %974 = sext i32 %973 to i64
  %975 = getelementptr inbounds %struct.lua_TValue, ptr %970, i64 %974
  br label %976

976:                                              ; preds = %969, %961
  %977 = phi ptr [ %968, %961 ], [ %975, %969 ]
  store ptr %977, ptr %60, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #6
  %978 = load i32, ptr %9, align 4, !tbaa !9
  %979 = lshr i32 %978, 14
  %980 = and i32 %979, 511
  %981 = and i32 %980, 256
  %982 = icmp ne i32 %981, 0
  br i1 %982, label %983, label %991

983:                                              ; preds = %976
  %984 = load ptr, ptr %7, align 8, !tbaa !5
  %985 = load i32, ptr %9, align 4, !tbaa !9
  %986 = lshr i32 %985, 14
  %987 = and i32 %986, 511
  %988 = and i32 %987, -257
  %989 = sext i32 %988 to i64
  %990 = getelementptr inbounds %struct.lua_TValue, ptr %984, i64 %989
  br label %998

991:                                              ; preds = %976
  %992 = load ptr, ptr %6, align 8, !tbaa !5
  %993 = load i32, ptr %9, align 4, !tbaa !9
  %994 = lshr i32 %993, 14
  %995 = and i32 %994, 511
  %996 = sext i32 %995 to i64
  %997 = getelementptr inbounds %struct.lua_TValue, ptr %992, i64 %996
  br label %998

998:                                              ; preds = %991, %983
  %999 = phi ptr [ %990, %983 ], [ %997, %991 ]
  store ptr %999, ptr %61, align 8, !tbaa !5
  %1000 = load ptr, ptr %60, align 8, !tbaa !5
  %1001 = getelementptr inbounds %struct.lua_TValue, ptr %1000, i32 0, i32 1
  %1002 = load i32, ptr %1001, align 8, !tbaa !29
  %1003 = icmp eq i32 %1002, 3
  br i1 %1003, label %1004, label %1024

1004:                                             ; preds = %998
  %1005 = load ptr, ptr %61, align 8, !tbaa !5
  %1006 = getelementptr inbounds %struct.lua_TValue, ptr %1005, i32 0, i32 1
  %1007 = load i32, ptr %1006, align 8, !tbaa !29
  %1008 = icmp eq i32 %1007, 3
  br i1 %1008, label %1009, label %1024

1009:                                             ; preds = %1004
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #6
  %1010 = load ptr, ptr %60, align 8, !tbaa !5
  %1011 = getelementptr inbounds %struct.lua_TValue, ptr %1010, i32 0, i32 0
  %1012 = load double, ptr %1011, align 8, !tbaa !19
  store double %1012, ptr %62, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #6
  %1013 = load ptr, ptr %61, align 8, !tbaa !5
  %1014 = getelementptr inbounds %struct.lua_TValue, ptr %1013, i32 0, i32 0
  %1015 = load double, ptr %1014, align 8, !tbaa !19
  store double %1015, ptr %63, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #6
  %1016 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1016, ptr %64, align 8, !tbaa !5
  %1017 = load double, ptr %62, align 8, !tbaa !35
  %1018 = load double, ptr %63, align 8, !tbaa !35
  %1019 = call double @pow(double noundef %1017, double noundef %1018) #6
  %1020 = load ptr, ptr %64, align 8, !tbaa !5
  %1021 = getelementptr inbounds %struct.lua_TValue, ptr %1020, i32 0, i32 0
  store double %1019, ptr %1021, align 8, !tbaa !19
  %1022 = load ptr, ptr %64, align 8, !tbaa !5
  %1023 = getelementptr inbounds %struct.lua_TValue, ptr %1022, i32 0, i32 1
  store i32 3, ptr %1023, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #6
  br label %1035

1024:                                             ; preds = %1004, %998
  %1025 = load ptr, ptr %8, align 8, !tbaa !5
  %1026 = load ptr, ptr %3, align 8, !tbaa !5
  %1027 = getelementptr inbounds %struct.lua_State, ptr %1026, i32 0, i32 8
  store ptr %1025, ptr %1027, align 8, !tbaa !11
  %1028 = load ptr, ptr %3, align 8, !tbaa !5
  %1029 = load ptr, ptr %10, align 8, !tbaa !5
  %1030 = load ptr, ptr %60, align 8, !tbaa !5
  %1031 = load ptr, ptr %61, align 8, !tbaa !5
  call void @Arith(ptr noundef %1028, ptr noundef %1029, ptr noundef %1030, ptr noundef %1031, i32 noundef 10)
  %1032 = load ptr, ptr %3, align 8, !tbaa !5
  %1033 = getelementptr inbounds %struct.lua_State, ptr %1032, i32 0, i32 5
  %1034 = load ptr, ptr %1033, align 8, !tbaa !20
  store ptr %1034, ptr %6, align 8, !tbaa !5
  br label %1035

1035:                                             ; preds = %1024, %1009
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #6
  store i32 4, ptr %11, align 4
  br label %2249

1036:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #6
  %1037 = load ptr, ptr %6, align 8, !tbaa !5
  %1038 = load i32, ptr %9, align 4, !tbaa !9
  %1039 = lshr i32 %1038, 23
  %1040 = and i32 %1039, 511
  %1041 = sext i32 %1040 to i64
  %1042 = getelementptr inbounds %struct.lua_TValue, ptr %1037, i64 %1041
  store ptr %1042, ptr %65, align 8, !tbaa !5
  %1043 = load ptr, ptr %65, align 8, !tbaa !5
  %1044 = getelementptr inbounds %struct.lua_TValue, ptr %1043, i32 0, i32 1
  %1045 = load i32, ptr %1044, align 8, !tbaa !29
  %1046 = icmp eq i32 %1045, 3
  br i1 %1046, label %1047, label %1058

1047:                                             ; preds = %1036
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #6
  %1048 = load ptr, ptr %65, align 8, !tbaa !5
  %1049 = getelementptr inbounds %struct.lua_TValue, ptr %1048, i32 0, i32 0
  %1050 = load double, ptr %1049, align 8, !tbaa !19
  store double %1050, ptr %66, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #6
  %1051 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1051, ptr %67, align 8, !tbaa !5
  %1052 = load double, ptr %66, align 8, !tbaa !35
  %1053 = fneg double %1052
  %1054 = load ptr, ptr %67, align 8, !tbaa !5
  %1055 = getelementptr inbounds %struct.lua_TValue, ptr %1054, i32 0, i32 0
  store double %1053, ptr %1055, align 8, !tbaa !19
  %1056 = load ptr, ptr %67, align 8, !tbaa !5
  %1057 = getelementptr inbounds %struct.lua_TValue, ptr %1056, i32 0, i32 1
  store i32 3, ptr %1057, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #6
  br label %1069

1058:                                             ; preds = %1036
  %1059 = load ptr, ptr %8, align 8, !tbaa !5
  %1060 = load ptr, ptr %3, align 8, !tbaa !5
  %1061 = getelementptr inbounds %struct.lua_State, ptr %1060, i32 0, i32 8
  store ptr %1059, ptr %1061, align 8, !tbaa !11
  %1062 = load ptr, ptr %3, align 8, !tbaa !5
  %1063 = load ptr, ptr %10, align 8, !tbaa !5
  %1064 = load ptr, ptr %65, align 8, !tbaa !5
  %1065 = load ptr, ptr %65, align 8, !tbaa !5
  call void @Arith(ptr noundef %1062, ptr noundef %1063, ptr noundef %1064, ptr noundef %1065, i32 noundef 11)
  %1066 = load ptr, ptr %3, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.lua_State, ptr %1066, i32 0, i32 5
  %1068 = load ptr, ptr %1067, align 8, !tbaa !20
  store ptr %1068, ptr %6, align 8, !tbaa !5
  br label %1069

1069:                                             ; preds = %1058, %1047
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #6
  br label %2249

1070:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #6
  %1071 = load ptr, ptr %6, align 8, !tbaa !5
  %1072 = load i32, ptr %9, align 4, !tbaa !9
  %1073 = lshr i32 %1072, 23
  %1074 = and i32 %1073, 511
  %1075 = sext i32 %1074 to i64
  %1076 = getelementptr inbounds %struct.lua_TValue, ptr %1071, i64 %1075
  %1077 = getelementptr inbounds %struct.lua_TValue, ptr %1076, i32 0, i32 1
  %1078 = load i32, ptr %1077, align 8, !tbaa !29
  %1079 = icmp eq i32 %1078, 0
  br i1 %1079, label %1102, label %1080

1080:                                             ; preds = %1070
  %1081 = load ptr, ptr %6, align 8, !tbaa !5
  %1082 = load i32, ptr %9, align 4, !tbaa !9
  %1083 = lshr i32 %1082, 23
  %1084 = and i32 %1083, 511
  %1085 = sext i32 %1084 to i64
  %1086 = getelementptr inbounds %struct.lua_TValue, ptr %1081, i64 %1085
  %1087 = getelementptr inbounds %struct.lua_TValue, ptr %1086, i32 0, i32 1
  %1088 = load i32, ptr %1087, align 8, !tbaa !29
  %1089 = icmp eq i32 %1088, 1
  br i1 %1089, label %1090, label %1100

1090:                                             ; preds = %1080
  %1091 = load ptr, ptr %6, align 8, !tbaa !5
  %1092 = load i32, ptr %9, align 4, !tbaa !9
  %1093 = lshr i32 %1092, 23
  %1094 = and i32 %1093, 511
  %1095 = sext i32 %1094 to i64
  %1096 = getelementptr inbounds %struct.lua_TValue, ptr %1091, i64 %1095
  %1097 = getelementptr inbounds %struct.lua_TValue, ptr %1096, i32 0, i32 0
  %1098 = load i32, ptr %1097, align 8, !tbaa !19
  %1099 = icmp eq i32 %1098, 0
  br label %1100

1100:                                             ; preds = %1090, %1080
  %1101 = phi i1 [ false, %1080 ], [ %1099, %1090 ]
  br label %1102

1102:                                             ; preds = %1100, %1070
  %1103 = phi i1 [ true, %1070 ], [ %1101, %1100 ]
  %1104 = zext i1 %1103 to i32
  store i32 %1104, ptr %68, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #6
  %1105 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1105, ptr %69, align 8, !tbaa !5
  %1106 = load i32, ptr %68, align 4, !tbaa !9
  %1107 = load ptr, ptr %69, align 8, !tbaa !5
  %1108 = getelementptr inbounds %struct.lua_TValue, ptr %1107, i32 0, i32 0
  store i32 %1106, ptr %1108, align 8, !tbaa !19
  %1109 = load ptr, ptr %69, align 8, !tbaa !5
  %1110 = getelementptr inbounds %struct.lua_TValue, ptr %1109, i32 0, i32 1
  store i32 1, ptr %1110, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #6
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #6
  br label %2249

1111:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #6
  %1112 = load ptr, ptr %6, align 8, !tbaa !5
  %1113 = load i32, ptr %9, align 4, !tbaa !9
  %1114 = lshr i32 %1113, 23
  %1115 = and i32 %1114, 511
  %1116 = sext i32 %1115 to i64
  %1117 = getelementptr inbounds %struct.lua_TValue, ptr %1112, i64 %1116
  store ptr %1117, ptr %70, align 8, !tbaa !5
  %1118 = load ptr, ptr %70, align 8, !tbaa !5
  %1119 = getelementptr inbounds %struct.lua_TValue, ptr %1118, i32 0, i32 1
  %1120 = load i32, ptr %1119, align 8, !tbaa !29
  switch i32 %1120, label %1144 [
    i32 5, label %1121
    i32 4, label %1132
  ]

1121:                                             ; preds = %1111
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #6
  %1122 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1122, ptr %71, align 8, !tbaa !5
  %1123 = load ptr, ptr %70, align 8, !tbaa !5
  %1124 = getelementptr inbounds %struct.lua_TValue, ptr %1123, i32 0, i32 0
  %1125 = load ptr, ptr %1124, align 8, !tbaa !19
  %1126 = call i32 @luaH_getn(ptr noundef %1125)
  %1127 = sitofp i32 %1126 to double
  %1128 = load ptr, ptr %71, align 8, !tbaa !5
  %1129 = getelementptr inbounds %struct.lua_TValue, ptr %1128, i32 0, i32 0
  store double %1127, ptr %1129, align 8, !tbaa !19
  %1130 = load ptr, ptr %71, align 8, !tbaa !5
  %1131 = getelementptr inbounds %struct.lua_TValue, ptr %1130, i32 0, i32 1
  store i32 3, ptr %1131, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #6
  br label %1160

1132:                                             ; preds = %1111
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #6
  %1133 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1133, ptr %72, align 8, !tbaa !5
  %1134 = load ptr, ptr %70, align 8, !tbaa !5
  %1135 = getelementptr inbounds %struct.lua_TValue, ptr %1134, i32 0, i32 0
  %1136 = load ptr, ptr %1135, align 8, !tbaa !19
  %1137 = getelementptr inbounds %struct.anon, ptr %1136, i32 0, i32 5
  %1138 = load i64, ptr %1137, align 8, !tbaa !19
  %1139 = uitofp i64 %1138 to double
  %1140 = load ptr, ptr %72, align 8, !tbaa !5
  %1141 = getelementptr inbounds %struct.lua_TValue, ptr %1140, i32 0, i32 0
  store double %1139, ptr %1141, align 8, !tbaa !19
  %1142 = load ptr, ptr %72, align 8, !tbaa !5
  %1143 = getelementptr inbounds %struct.lua_TValue, ptr %1142, i32 0, i32 1
  store i32 3, ptr %1143, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #6
  br label %1160

1144:                                             ; preds = %1111
  %1145 = load ptr, ptr %8, align 8, !tbaa !5
  %1146 = load ptr, ptr %3, align 8, !tbaa !5
  %1147 = getelementptr inbounds %struct.lua_State, ptr %1146, i32 0, i32 8
  store ptr %1145, ptr %1147, align 8, !tbaa !11
  %1148 = load ptr, ptr %3, align 8, !tbaa !5
  %1149 = load ptr, ptr %70, align 8, !tbaa !5
  %1150 = load ptr, ptr %10, align 8, !tbaa !5
  %1151 = call i32 @call_binTM(ptr noundef %1148, ptr noundef %1149, ptr noundef @luaO_nilobject_, ptr noundef %1150, i32 noundef 12)
  %1152 = icmp ne i32 %1151, 0
  br i1 %1152, label %1156, label %1153

1153:                                             ; preds = %1144
  %1154 = load ptr, ptr %3, align 8, !tbaa !5
  %1155 = load ptr, ptr %70, align 8, !tbaa !5
  call void @luaG_typeerror(ptr noundef %1154, ptr noundef %1155, ptr noundef @.str.5)
  br label %1156

1156:                                             ; preds = %1153, %1144
  %1157 = load ptr, ptr %3, align 8, !tbaa !5
  %1158 = getelementptr inbounds %struct.lua_State, ptr %1157, i32 0, i32 5
  %1159 = load ptr, ptr %1158, align 8, !tbaa !20
  store ptr %1159, ptr %6, align 8, !tbaa !5
  br label %1160

1160:                                             ; preds = %1156, %1132, %1121
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #6
  br label %2249

1161:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #6
  %1162 = load i32, ptr %9, align 4, !tbaa !9
  %1163 = lshr i32 %1162, 23
  %1164 = and i32 %1163, 511
  store i32 %1164, ptr %73, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #6
  %1165 = load i32, ptr %9, align 4, !tbaa !9
  %1166 = lshr i32 %1165, 14
  %1167 = and i32 %1166, 511
  store i32 %1167, ptr %74, align 4, !tbaa !9
  %1168 = load ptr, ptr %8, align 8, !tbaa !5
  %1169 = load ptr, ptr %3, align 8, !tbaa !5
  %1170 = getelementptr inbounds %struct.lua_State, ptr %1169, i32 0, i32 8
  store ptr %1168, ptr %1170, align 8, !tbaa !11
  %1171 = load ptr, ptr %3, align 8, !tbaa !5
  %1172 = load i32, ptr %74, align 4, !tbaa !9
  %1173 = load i32, ptr %73, align 4, !tbaa !9
  %1174 = sub nsw i32 %1172, %1173
  %1175 = add nsw i32 %1174, 1
  %1176 = load i32, ptr %74, align 4, !tbaa !9
  call void @luaV_concat(ptr noundef %1171, i32 noundef %1175, i32 noundef %1176)
  %1177 = load ptr, ptr %3, align 8, !tbaa !5
  %1178 = load ptr, ptr %3, align 8, !tbaa !5
  %1179 = getelementptr inbounds %struct.lua_State, ptr %1178, i32 0, i32 5
  %1180 = load ptr, ptr %1179, align 8, !tbaa !20
  store ptr %1180, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #6
  %1181 = load ptr, ptr %6, align 8, !tbaa !5
  %1182 = load i32, ptr %73, align 4, !tbaa !9
  %1183 = sext i32 %1182 to i64
  %1184 = getelementptr inbounds %struct.lua_TValue, ptr %1181, i64 %1183
  store ptr %1184, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #6
  %1185 = load ptr, ptr %6, align 8, !tbaa !5
  %1186 = load i32, ptr %9, align 4, !tbaa !9
  %1187 = lshr i32 %1186, 6
  %1188 = and i32 %1187, 255
  %1189 = sext i32 %1188 to i64
  %1190 = getelementptr inbounds %struct.lua_TValue, ptr %1185, i64 %1189
  store ptr %1190, ptr %76, align 8, !tbaa !5
  %1191 = load ptr, ptr %76, align 8, !tbaa !5
  %1192 = getelementptr inbounds %struct.lua_TValue, ptr %1191, i32 0, i32 0
  %1193 = load ptr, ptr %75, align 8, !tbaa !5
  %1194 = getelementptr inbounds %struct.lua_TValue, ptr %1193, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1192, ptr align 8 %1194, i64 8, i1 false), !tbaa.struct !28
  %1195 = load ptr, ptr %75, align 8, !tbaa !5
  %1196 = getelementptr inbounds %struct.lua_TValue, ptr %1195, i32 0, i32 1
  %1197 = load i32, ptr %1196, align 8, !tbaa !29
  %1198 = load ptr, ptr %76, align 8, !tbaa !5
  %1199 = getelementptr inbounds %struct.lua_TValue, ptr %1198, i32 0, i32 1
  store i32 %1197, ptr %1199, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #6
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #6
  br label %2249

1200:                                             ; preds = %187
  %1201 = load i32, ptr %9, align 4, !tbaa !9
  %1202 = lshr i32 %1201, 14
  %1203 = and i32 %1202, 262143
  %1204 = sub nsw i32 %1203, 131071
  %1205 = load ptr, ptr %8, align 8, !tbaa !5
  %1206 = sext i32 %1204 to i64
  %1207 = getelementptr inbounds i32, ptr %1205, i64 %1206
  store ptr %1207, ptr %8, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  br label %2249

1208:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #6
  %1209 = load i32, ptr %9, align 4, !tbaa !9
  %1210 = lshr i32 %1209, 23
  %1211 = and i32 %1210, 511
  %1212 = and i32 %1211, 256
  %1213 = icmp ne i32 %1212, 0
  br i1 %1213, label %1214, label %1222

1214:                                             ; preds = %1208
  %1215 = load ptr, ptr %7, align 8, !tbaa !5
  %1216 = load i32, ptr %9, align 4, !tbaa !9
  %1217 = lshr i32 %1216, 23
  %1218 = and i32 %1217, 511
  %1219 = and i32 %1218, -257
  %1220 = sext i32 %1219 to i64
  %1221 = getelementptr inbounds %struct.lua_TValue, ptr %1215, i64 %1220
  br label %1229

1222:                                             ; preds = %1208
  %1223 = load ptr, ptr %6, align 8, !tbaa !5
  %1224 = load i32, ptr %9, align 4, !tbaa !9
  %1225 = lshr i32 %1224, 23
  %1226 = and i32 %1225, 511
  %1227 = sext i32 %1226 to i64
  %1228 = getelementptr inbounds %struct.lua_TValue, ptr %1223, i64 %1227
  br label %1229

1229:                                             ; preds = %1222, %1214
  %1230 = phi ptr [ %1221, %1214 ], [ %1228, %1222 ]
  store ptr %1230, ptr %77, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #6
  %1231 = load i32, ptr %9, align 4, !tbaa !9
  %1232 = lshr i32 %1231, 14
  %1233 = and i32 %1232, 511
  %1234 = and i32 %1233, 256
  %1235 = icmp ne i32 %1234, 0
  br i1 %1235, label %1236, label %1244

1236:                                             ; preds = %1229
  %1237 = load ptr, ptr %7, align 8, !tbaa !5
  %1238 = load i32, ptr %9, align 4, !tbaa !9
  %1239 = lshr i32 %1238, 14
  %1240 = and i32 %1239, 511
  %1241 = and i32 %1240, -257
  %1242 = sext i32 %1241 to i64
  %1243 = getelementptr inbounds %struct.lua_TValue, ptr %1237, i64 %1242
  br label %1251

1244:                                             ; preds = %1229
  %1245 = load ptr, ptr %6, align 8, !tbaa !5
  %1246 = load i32, ptr %9, align 4, !tbaa !9
  %1247 = lshr i32 %1246, 14
  %1248 = and i32 %1247, 511
  %1249 = sext i32 %1248 to i64
  %1250 = getelementptr inbounds %struct.lua_TValue, ptr %1245, i64 %1249
  br label %1251

1251:                                             ; preds = %1244, %1236
  %1252 = phi ptr [ %1243, %1236 ], [ %1250, %1244 ]
  store ptr %1252, ptr %78, align 8, !tbaa !5
  %1253 = load ptr, ptr %8, align 8, !tbaa !5
  %1254 = load ptr, ptr %3, align 8, !tbaa !5
  %1255 = getelementptr inbounds %struct.lua_State, ptr %1254, i32 0, i32 8
  store ptr %1253, ptr %1255, align 8, !tbaa !11
  %1256 = load ptr, ptr %77, align 8, !tbaa !5
  %1257 = getelementptr inbounds %struct.lua_TValue, ptr %1256, i32 0, i32 1
  %1258 = load i32, ptr %1257, align 8, !tbaa !29
  %1259 = load ptr, ptr %78, align 8, !tbaa !5
  %1260 = getelementptr inbounds %struct.lua_TValue, ptr %1259, i32 0, i32 1
  %1261 = load i32, ptr %1260, align 8, !tbaa !29
  %1262 = icmp eq i32 %1258, %1261
  br i1 %1262, label %1263, label %1269

1263:                                             ; preds = %1251
  %1264 = load ptr, ptr %3, align 8, !tbaa !5
  %1265 = load ptr, ptr %77, align 8, !tbaa !5
  %1266 = load ptr, ptr %78, align 8, !tbaa !5
  %1267 = call i32 @luaV_equalval(ptr noundef %1264, ptr noundef %1265, ptr noundef %1266)
  %1268 = icmp ne i32 %1267, 0
  br label %1269

1269:                                             ; preds = %1263, %1251
  %1270 = phi i1 [ false, %1251 ], [ %1268, %1263 ]
  %1271 = zext i1 %1270 to i32
  %1272 = load i32, ptr %9, align 4, !tbaa !9
  %1273 = lshr i32 %1272, 6
  %1274 = and i32 %1273, 255
  %1275 = icmp eq i32 %1271, %1274
  br i1 %1275, label %1276, label %1285

1276:                                             ; preds = %1269
  %1277 = load ptr, ptr %8, align 8, !tbaa !5
  %1278 = load i32, ptr %1277, align 4, !tbaa !9
  %1279 = lshr i32 %1278, 14
  %1280 = and i32 %1279, 262143
  %1281 = sub nsw i32 %1280, 131071
  %1282 = load ptr, ptr %8, align 8, !tbaa !5
  %1283 = sext i32 %1281 to i64
  %1284 = getelementptr inbounds i32, ptr %1282, i64 %1283
  store ptr %1284, ptr %8, align 8, !tbaa !5
  br label %1285

1285:                                             ; preds = %1276, %1269
  %1286 = load ptr, ptr %3, align 8, !tbaa !5
  %1287 = getelementptr inbounds %struct.lua_State, ptr %1286, i32 0, i32 5
  %1288 = load ptr, ptr %1287, align 8, !tbaa !20
  store ptr %1288, ptr %6, align 8, !tbaa !5
  %1289 = load ptr, ptr %8, align 8, !tbaa !5
  %1290 = getelementptr inbounds i32, ptr %1289, i32 1
  store ptr %1290, ptr %8, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #6
  br label %2249

1291:                                             ; preds = %187
  %1292 = load ptr, ptr %8, align 8, !tbaa !5
  %1293 = load ptr, ptr %3, align 8, !tbaa !5
  %1294 = getelementptr inbounds %struct.lua_State, ptr %1293, i32 0, i32 8
  store ptr %1292, ptr %1294, align 8, !tbaa !11
  %1295 = load ptr, ptr %3, align 8, !tbaa !5
  %1296 = load i32, ptr %9, align 4, !tbaa !9
  %1297 = lshr i32 %1296, 23
  %1298 = and i32 %1297, 511
  %1299 = and i32 %1298, 256
  %1300 = icmp ne i32 %1299, 0
  br i1 %1300, label %1301, label %1309

1301:                                             ; preds = %1291
  %1302 = load ptr, ptr %7, align 8, !tbaa !5
  %1303 = load i32, ptr %9, align 4, !tbaa !9
  %1304 = lshr i32 %1303, 23
  %1305 = and i32 %1304, 511
  %1306 = and i32 %1305, -257
  %1307 = sext i32 %1306 to i64
  %1308 = getelementptr inbounds %struct.lua_TValue, ptr %1302, i64 %1307
  br label %1316

1309:                                             ; preds = %1291
  %1310 = load ptr, ptr %6, align 8, !tbaa !5
  %1311 = load i32, ptr %9, align 4, !tbaa !9
  %1312 = lshr i32 %1311, 23
  %1313 = and i32 %1312, 511
  %1314 = sext i32 %1313 to i64
  %1315 = getelementptr inbounds %struct.lua_TValue, ptr %1310, i64 %1314
  br label %1316

1316:                                             ; preds = %1309, %1301
  %1317 = phi ptr [ %1308, %1301 ], [ %1315, %1309 ]
  %1318 = load i32, ptr %9, align 4, !tbaa !9
  %1319 = lshr i32 %1318, 14
  %1320 = and i32 %1319, 511
  %1321 = and i32 %1320, 256
  %1322 = icmp ne i32 %1321, 0
  br i1 %1322, label %1323, label %1331

1323:                                             ; preds = %1316
  %1324 = load ptr, ptr %7, align 8, !tbaa !5
  %1325 = load i32, ptr %9, align 4, !tbaa !9
  %1326 = lshr i32 %1325, 14
  %1327 = and i32 %1326, 511
  %1328 = and i32 %1327, -257
  %1329 = sext i32 %1328 to i64
  %1330 = getelementptr inbounds %struct.lua_TValue, ptr %1324, i64 %1329
  br label %1338

1331:                                             ; preds = %1316
  %1332 = load ptr, ptr %6, align 8, !tbaa !5
  %1333 = load i32, ptr %9, align 4, !tbaa !9
  %1334 = lshr i32 %1333, 14
  %1335 = and i32 %1334, 511
  %1336 = sext i32 %1335 to i64
  %1337 = getelementptr inbounds %struct.lua_TValue, ptr %1332, i64 %1336
  br label %1338

1338:                                             ; preds = %1331, %1323
  %1339 = phi ptr [ %1330, %1323 ], [ %1337, %1331 ]
  %1340 = call i32 @luaV_lessthan(ptr noundef %1295, ptr noundef %1317, ptr noundef %1339)
  %1341 = load i32, ptr %9, align 4, !tbaa !9
  %1342 = lshr i32 %1341, 6
  %1343 = and i32 %1342, 255
  %1344 = icmp eq i32 %1340, %1343
  br i1 %1344, label %1345, label %1354

1345:                                             ; preds = %1338
  %1346 = load ptr, ptr %8, align 8, !tbaa !5
  %1347 = load i32, ptr %1346, align 4, !tbaa !9
  %1348 = lshr i32 %1347, 14
  %1349 = and i32 %1348, 262143
  %1350 = sub nsw i32 %1349, 131071
  %1351 = load ptr, ptr %8, align 8, !tbaa !5
  %1352 = sext i32 %1350 to i64
  %1353 = getelementptr inbounds i32, ptr %1351, i64 %1352
  store ptr %1353, ptr %8, align 8, !tbaa !5
  br label %1354

1354:                                             ; preds = %1345, %1338
  %1355 = load ptr, ptr %3, align 8, !tbaa !5
  %1356 = getelementptr inbounds %struct.lua_State, ptr %1355, i32 0, i32 5
  %1357 = load ptr, ptr %1356, align 8, !tbaa !20
  store ptr %1357, ptr %6, align 8, !tbaa !5
  %1358 = load ptr, ptr %8, align 8, !tbaa !5
  %1359 = getelementptr inbounds i32, ptr %1358, i32 1
  store ptr %1359, ptr %8, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  br label %2249

1360:                                             ; preds = %187
  %1361 = load ptr, ptr %8, align 8, !tbaa !5
  %1362 = load ptr, ptr %3, align 8, !tbaa !5
  %1363 = getelementptr inbounds %struct.lua_State, ptr %1362, i32 0, i32 8
  store ptr %1361, ptr %1363, align 8, !tbaa !11
  %1364 = load ptr, ptr %3, align 8, !tbaa !5
  %1365 = load i32, ptr %9, align 4, !tbaa !9
  %1366 = lshr i32 %1365, 23
  %1367 = and i32 %1366, 511
  %1368 = and i32 %1367, 256
  %1369 = icmp ne i32 %1368, 0
  br i1 %1369, label %1370, label %1378

1370:                                             ; preds = %1360
  %1371 = load ptr, ptr %7, align 8, !tbaa !5
  %1372 = load i32, ptr %9, align 4, !tbaa !9
  %1373 = lshr i32 %1372, 23
  %1374 = and i32 %1373, 511
  %1375 = and i32 %1374, -257
  %1376 = sext i32 %1375 to i64
  %1377 = getelementptr inbounds %struct.lua_TValue, ptr %1371, i64 %1376
  br label %1385

1378:                                             ; preds = %1360
  %1379 = load ptr, ptr %6, align 8, !tbaa !5
  %1380 = load i32, ptr %9, align 4, !tbaa !9
  %1381 = lshr i32 %1380, 23
  %1382 = and i32 %1381, 511
  %1383 = sext i32 %1382 to i64
  %1384 = getelementptr inbounds %struct.lua_TValue, ptr %1379, i64 %1383
  br label %1385

1385:                                             ; preds = %1378, %1370
  %1386 = phi ptr [ %1377, %1370 ], [ %1384, %1378 ]
  %1387 = load i32, ptr %9, align 4, !tbaa !9
  %1388 = lshr i32 %1387, 14
  %1389 = and i32 %1388, 511
  %1390 = and i32 %1389, 256
  %1391 = icmp ne i32 %1390, 0
  br i1 %1391, label %1392, label %1400

1392:                                             ; preds = %1385
  %1393 = load ptr, ptr %7, align 8, !tbaa !5
  %1394 = load i32, ptr %9, align 4, !tbaa !9
  %1395 = lshr i32 %1394, 14
  %1396 = and i32 %1395, 511
  %1397 = and i32 %1396, -257
  %1398 = sext i32 %1397 to i64
  %1399 = getelementptr inbounds %struct.lua_TValue, ptr %1393, i64 %1398
  br label %1407

1400:                                             ; preds = %1385
  %1401 = load ptr, ptr %6, align 8, !tbaa !5
  %1402 = load i32, ptr %9, align 4, !tbaa !9
  %1403 = lshr i32 %1402, 14
  %1404 = and i32 %1403, 511
  %1405 = sext i32 %1404 to i64
  %1406 = getelementptr inbounds %struct.lua_TValue, ptr %1401, i64 %1405
  br label %1407

1407:                                             ; preds = %1400, %1392
  %1408 = phi ptr [ %1399, %1392 ], [ %1406, %1400 ]
  %1409 = call i32 @lessequal(ptr noundef %1364, ptr noundef %1386, ptr noundef %1408)
  %1410 = load i32, ptr %9, align 4, !tbaa !9
  %1411 = lshr i32 %1410, 6
  %1412 = and i32 %1411, 255
  %1413 = icmp eq i32 %1409, %1412
  br i1 %1413, label %1414, label %1423

1414:                                             ; preds = %1407
  %1415 = load ptr, ptr %8, align 8, !tbaa !5
  %1416 = load i32, ptr %1415, align 4, !tbaa !9
  %1417 = lshr i32 %1416, 14
  %1418 = and i32 %1417, 262143
  %1419 = sub nsw i32 %1418, 131071
  %1420 = load ptr, ptr %8, align 8, !tbaa !5
  %1421 = sext i32 %1419 to i64
  %1422 = getelementptr inbounds i32, ptr %1420, i64 %1421
  store ptr %1422, ptr %8, align 8, !tbaa !5
  br label %1423

1423:                                             ; preds = %1414, %1407
  %1424 = load ptr, ptr %3, align 8, !tbaa !5
  %1425 = getelementptr inbounds %struct.lua_State, ptr %1424, i32 0, i32 5
  %1426 = load ptr, ptr %1425, align 8, !tbaa !20
  store ptr %1426, ptr %6, align 8, !tbaa !5
  %1427 = load ptr, ptr %8, align 8, !tbaa !5
  %1428 = getelementptr inbounds i32, ptr %1427, i32 1
  store ptr %1428, ptr %8, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  br label %2249

1429:                                             ; preds = %187
  %1430 = load ptr, ptr %10, align 8, !tbaa !5
  %1431 = getelementptr inbounds %struct.lua_TValue, ptr %1430, i32 0, i32 1
  %1432 = load i32, ptr %1431, align 8, !tbaa !29
  %1433 = icmp eq i32 %1432, 0
  br i1 %1433, label %1446, label %1434

1434:                                             ; preds = %1429
  %1435 = load ptr, ptr %10, align 8, !tbaa !5
  %1436 = getelementptr inbounds %struct.lua_TValue, ptr %1435, i32 0, i32 1
  %1437 = load i32, ptr %1436, align 8, !tbaa !29
  %1438 = icmp eq i32 %1437, 1
  br i1 %1438, label %1439, label %1444

1439:                                             ; preds = %1434
  %1440 = load ptr, ptr %10, align 8, !tbaa !5
  %1441 = getelementptr inbounds %struct.lua_TValue, ptr %1440, i32 0, i32 0
  %1442 = load i32, ptr %1441, align 8, !tbaa !19
  %1443 = icmp eq i32 %1442, 0
  br label %1444

1444:                                             ; preds = %1439, %1434
  %1445 = phi i1 [ false, %1434 ], [ %1443, %1439 ]
  br label %1446

1446:                                             ; preds = %1444, %1429
  %1447 = phi i1 [ true, %1429 ], [ %1445, %1444 ]
  %1448 = zext i1 %1447 to i32
  %1449 = load i32, ptr %9, align 4, !tbaa !9
  %1450 = lshr i32 %1449, 14
  %1451 = and i32 %1450, 511
  %1452 = icmp ne i32 %1448, %1451
  br i1 %1452, label %1453, label %1462

1453:                                             ; preds = %1446
  %1454 = load ptr, ptr %8, align 8, !tbaa !5
  %1455 = load i32, ptr %1454, align 4, !tbaa !9
  %1456 = lshr i32 %1455, 14
  %1457 = and i32 %1456, 262143
  %1458 = sub nsw i32 %1457, 131071
  %1459 = load ptr, ptr %8, align 8, !tbaa !5
  %1460 = sext i32 %1458 to i64
  %1461 = getelementptr inbounds i32, ptr %1459, i64 %1460
  store ptr %1461, ptr %8, align 8, !tbaa !5
  br label %1462

1462:                                             ; preds = %1453, %1446
  %1463 = load ptr, ptr %8, align 8, !tbaa !5
  %1464 = getelementptr inbounds i32, ptr %1463, i32 1
  store ptr %1464, ptr %8, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  br label %2249

1465:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #6
  %1466 = load ptr, ptr %6, align 8, !tbaa !5
  %1467 = load i32, ptr %9, align 4, !tbaa !9
  %1468 = lshr i32 %1467, 23
  %1469 = and i32 %1468, 511
  %1470 = sext i32 %1469 to i64
  %1471 = getelementptr inbounds %struct.lua_TValue, ptr %1466, i64 %1470
  store ptr %1471, ptr %79, align 8, !tbaa !5
  %1472 = load ptr, ptr %79, align 8, !tbaa !5
  %1473 = getelementptr inbounds %struct.lua_TValue, ptr %1472, i32 0, i32 1
  %1474 = load i32, ptr %1473, align 8, !tbaa !29
  %1475 = icmp eq i32 %1474, 0
  br i1 %1475, label %1488, label %1476

1476:                                             ; preds = %1465
  %1477 = load ptr, ptr %79, align 8, !tbaa !5
  %1478 = getelementptr inbounds %struct.lua_TValue, ptr %1477, i32 0, i32 1
  %1479 = load i32, ptr %1478, align 8, !tbaa !29
  %1480 = icmp eq i32 %1479, 1
  br i1 %1480, label %1481, label %1486

1481:                                             ; preds = %1476
  %1482 = load ptr, ptr %79, align 8, !tbaa !5
  %1483 = getelementptr inbounds %struct.lua_TValue, ptr %1482, i32 0, i32 0
  %1484 = load i32, ptr %1483, align 8, !tbaa !19
  %1485 = icmp eq i32 %1484, 0
  br label %1486

1486:                                             ; preds = %1481, %1476
  %1487 = phi i1 [ false, %1476 ], [ %1485, %1481 ]
  br label %1488

1488:                                             ; preds = %1486, %1465
  %1489 = phi i1 [ true, %1465 ], [ %1487, %1486 ]
  %1490 = zext i1 %1489 to i32
  %1491 = load i32, ptr %9, align 4, !tbaa !9
  %1492 = lshr i32 %1491, 14
  %1493 = and i32 %1492, 511
  %1494 = icmp ne i32 %1490, %1493
  br i1 %1494, label %1495, label %1515

1495:                                             ; preds = %1488
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #6
  %1496 = load ptr, ptr %79, align 8, !tbaa !5
  store ptr %1496, ptr %80, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #6
  %1497 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1497, ptr %81, align 8, !tbaa !5
  %1498 = load ptr, ptr %81, align 8, !tbaa !5
  %1499 = getelementptr inbounds %struct.lua_TValue, ptr %1498, i32 0, i32 0
  %1500 = load ptr, ptr %80, align 8, !tbaa !5
  %1501 = getelementptr inbounds %struct.lua_TValue, ptr %1500, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1499, ptr align 8 %1501, i64 8, i1 false), !tbaa.struct !28
  %1502 = load ptr, ptr %80, align 8, !tbaa !5
  %1503 = getelementptr inbounds %struct.lua_TValue, ptr %1502, i32 0, i32 1
  %1504 = load i32, ptr %1503, align 8, !tbaa !29
  %1505 = load ptr, ptr %81, align 8, !tbaa !5
  %1506 = getelementptr inbounds %struct.lua_TValue, ptr %1505, i32 0, i32 1
  store i32 %1504, ptr %1506, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #6
  %1507 = load ptr, ptr %8, align 8, !tbaa !5
  %1508 = load i32, ptr %1507, align 4, !tbaa !9
  %1509 = lshr i32 %1508, 14
  %1510 = and i32 %1509, 262143
  %1511 = sub nsw i32 %1510, 131071
  %1512 = load ptr, ptr %8, align 8, !tbaa !5
  %1513 = sext i32 %1511 to i64
  %1514 = getelementptr inbounds i32, ptr %1512, i64 %1513
  store ptr %1514, ptr %8, align 8, !tbaa !5
  br label %1515

1515:                                             ; preds = %1495, %1488
  %1516 = load ptr, ptr %8, align 8, !tbaa !5
  %1517 = getelementptr inbounds i32, ptr %1516, i32 1
  store ptr %1517, ptr %8, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #6
  br label %2249

1518:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #6
  %1519 = load i32, ptr %9, align 4, !tbaa !9
  %1520 = lshr i32 %1519, 23
  %1521 = and i32 %1520, 511
  store i32 %1521, ptr %82, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #6
  %1522 = load i32, ptr %9, align 4, !tbaa !9
  %1523 = lshr i32 %1522, 14
  %1524 = and i32 %1523, 511
  %1525 = sub nsw i32 %1524, 1
  store i32 %1525, ptr %83, align 4, !tbaa !9
  %1526 = load i32, ptr %82, align 4, !tbaa !9
  %1527 = icmp ne i32 %1526, 0
  br i1 %1527, label %1528, label %1535

1528:                                             ; preds = %1518
  %1529 = load ptr, ptr %10, align 8, !tbaa !5
  %1530 = load i32, ptr %82, align 4, !tbaa !9
  %1531 = sext i32 %1530 to i64
  %1532 = getelementptr inbounds %struct.lua_TValue, ptr %1529, i64 %1531
  %1533 = load ptr, ptr %3, align 8, !tbaa !5
  %1534 = getelementptr inbounds %struct.lua_State, ptr %1533, i32 0, i32 4
  store ptr %1532, ptr %1534, align 8, !tbaa !37
  br label %1535

1535:                                             ; preds = %1528, %1518
  %1536 = load ptr, ptr %8, align 8, !tbaa !5
  %1537 = load ptr, ptr %3, align 8, !tbaa !5
  %1538 = getelementptr inbounds %struct.lua_State, ptr %1537, i32 0, i32 8
  store ptr %1536, ptr %1538, align 8, !tbaa !11
  %1539 = load ptr, ptr %3, align 8, !tbaa !5
  %1540 = load ptr, ptr %10, align 8, !tbaa !5
  %1541 = load i32, ptr %83, align 4, !tbaa !9
  %1542 = call i32 @luaD_precall(ptr noundef %1539, ptr noundef %1540, i32 noundef %1541)
  switch i32 %1542, label %1561 [
    i32 0, label %1543
    i32 1, label %1546
  ]

1543:                                             ; preds = %1535
  %1544 = load i32, ptr %4, align 4, !tbaa !9
  %1545 = add nsw i32 %1544, 1
  store i32 %1545, ptr %4, align 4, !tbaa !9
  store i32 2, ptr %11, align 4
  br label %1562

1546:                                             ; preds = %1535
  %1547 = load i32, ptr %83, align 4, !tbaa !9
  %1548 = icmp sge i32 %1547, 0
  br i1 %1548, label %1549, label %1557

1549:                                             ; preds = %1546
  %1550 = load ptr, ptr %3, align 8, !tbaa !5
  %1551 = getelementptr inbounds %struct.lua_State, ptr %1550, i32 0, i32 7
  %1552 = load ptr, ptr %1551, align 8, !tbaa !16
  %1553 = getelementptr inbounds %struct.CallInfo, ptr %1552, i32 0, i32 2
  %1554 = load ptr, ptr %1553, align 8, !tbaa !38
  %1555 = load ptr, ptr %3, align 8, !tbaa !5
  %1556 = getelementptr inbounds %struct.lua_State, ptr %1555, i32 0, i32 4
  store ptr %1554, ptr %1556, align 8, !tbaa !37
  br label %1557

1557:                                             ; preds = %1549, %1546
  %1558 = load ptr, ptr %3, align 8, !tbaa !5
  %1559 = getelementptr inbounds %struct.lua_State, ptr %1558, i32 0, i32 5
  %1560 = load ptr, ptr %1559, align 8, !tbaa !20
  store ptr %1560, ptr %6, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  br label %1562

1561:                                             ; preds = %1535
  store i32 1, ptr %11, align 4
  br label %1562

1562:                                             ; preds = %1561, %1557, %1543
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #6
  br label %2249

1563:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #6
  %1564 = load i32, ptr %9, align 4, !tbaa !9
  %1565 = lshr i32 %1564, 23
  %1566 = and i32 %1565, 511
  store i32 %1566, ptr %84, align 4, !tbaa !9
  %1567 = load i32, ptr %84, align 4, !tbaa !9
  %1568 = icmp ne i32 %1567, 0
  br i1 %1568, label %1569, label %1576

1569:                                             ; preds = %1563
  %1570 = load ptr, ptr %10, align 8, !tbaa !5
  %1571 = load i32, ptr %84, align 4, !tbaa !9
  %1572 = sext i32 %1571 to i64
  %1573 = getelementptr inbounds %struct.lua_TValue, ptr %1570, i64 %1572
  %1574 = load ptr, ptr %3, align 8, !tbaa !5
  %1575 = getelementptr inbounds %struct.lua_State, ptr %1574, i32 0, i32 4
  store ptr %1573, ptr %1575, align 8, !tbaa !37
  br label %1576

1576:                                             ; preds = %1569, %1563
  %1577 = load ptr, ptr %8, align 8, !tbaa !5
  %1578 = load ptr, ptr %3, align 8, !tbaa !5
  %1579 = getelementptr inbounds %struct.lua_State, ptr %1578, i32 0, i32 8
  store ptr %1577, ptr %1579, align 8, !tbaa !11
  %1580 = load ptr, ptr %3, align 8, !tbaa !5
  %1581 = load ptr, ptr %10, align 8, !tbaa !5
  %1582 = call i32 @luaD_precall(ptr noundef %1580, ptr noundef %1581, i32 noundef -1)
  switch i32 %1582, label %1678 [
    i32 0, label %1583
    i32 1, label %1674
  ]

1583:                                             ; preds = %1576
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #6
  %1584 = load ptr, ptr %3, align 8, !tbaa !5
  %1585 = getelementptr inbounds %struct.lua_State, ptr %1584, i32 0, i32 7
  %1586 = load ptr, ptr %1585, align 8, !tbaa !16
  %1587 = getelementptr inbounds %struct.CallInfo, ptr %1586, i64 -1
  store ptr %1587, ptr %85, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #6
  %1588 = load ptr, ptr %85, align 8, !tbaa !5
  %1589 = getelementptr inbounds %struct.CallInfo, ptr %1588, i32 0, i32 1
  %1590 = load ptr, ptr %1589, align 8, !tbaa !17
  store ptr %1590, ptr %87, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #6
  %1591 = load ptr, ptr %85, align 8, !tbaa !5
  %1592 = getelementptr inbounds %struct.CallInfo, ptr %1591, i64 1
  %1593 = getelementptr inbounds %struct.CallInfo, ptr %1592, i32 0, i32 1
  %1594 = load ptr, ptr %1593, align 8, !tbaa !17
  store ptr %1594, ptr %88, align 8, !tbaa !5
  %1595 = load ptr, ptr %3, align 8, !tbaa !5
  %1596 = getelementptr inbounds %struct.lua_State, ptr %1595, i32 0, i32 24
  %1597 = load ptr, ptr %1596, align 8, !tbaa !39
  %1598 = icmp ne ptr %1597, null
  br i1 %1598, label %1599, label %1604

1599:                                             ; preds = %1583
  %1600 = load ptr, ptr %3, align 8, !tbaa !5
  %1601 = load ptr, ptr %85, align 8, !tbaa !5
  %1602 = getelementptr inbounds %struct.CallInfo, ptr %1601, i32 0, i32 0
  %1603 = load ptr, ptr %1602, align 8, !tbaa !40
  call void @luaF_close(ptr noundef %1600, ptr noundef %1603)
  br label %1604

1604:                                             ; preds = %1599, %1583
  %1605 = load ptr, ptr %85, align 8, !tbaa !5
  %1606 = getelementptr inbounds %struct.CallInfo, ptr %1605, i32 0, i32 1
  %1607 = load ptr, ptr %1606, align 8, !tbaa !17
  %1608 = load ptr, ptr %85, align 8, !tbaa !5
  %1609 = getelementptr inbounds %struct.CallInfo, ptr %1608, i64 1
  %1610 = getelementptr inbounds %struct.CallInfo, ptr %1609, i32 0, i32 0
  %1611 = load ptr, ptr %1610, align 8, !tbaa !40
  %1612 = load ptr, ptr %88, align 8, !tbaa !5
  %1613 = ptrtoint ptr %1611 to i64
  %1614 = ptrtoint ptr %1612 to i64
  %1615 = sub i64 %1613, %1614
  %1616 = sdiv exact i64 %1615, 16
  %1617 = getelementptr inbounds %struct.lua_TValue, ptr %1607, i64 %1616
  %1618 = load ptr, ptr %85, align 8, !tbaa !5
  %1619 = getelementptr inbounds %struct.CallInfo, ptr %1618, i32 0, i32 0
  store ptr %1617, ptr %1619, align 8, !tbaa !40
  %1620 = load ptr, ptr %3, align 8, !tbaa !5
  %1621 = getelementptr inbounds %struct.lua_State, ptr %1620, i32 0, i32 5
  store ptr %1617, ptr %1621, align 8, !tbaa !20
  store i32 0, ptr %86, align 4, !tbaa !9
  br label %1622

1622:                                             ; preds = %1649, %1604
  %1623 = load ptr, ptr %88, align 8, !tbaa !5
  %1624 = load i32, ptr %86, align 4, !tbaa !9
  %1625 = sext i32 %1624 to i64
  %1626 = getelementptr inbounds %struct.lua_TValue, ptr %1623, i64 %1625
  %1627 = load ptr, ptr %3, align 8, !tbaa !5
  %1628 = getelementptr inbounds %struct.lua_State, ptr %1627, i32 0, i32 4
  %1629 = load ptr, ptr %1628, align 8, !tbaa !37
  %1630 = icmp ult ptr %1626, %1629
  br i1 %1630, label %1631, label %1652

1631:                                             ; preds = %1622
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #6
  %1632 = load ptr, ptr %88, align 8, !tbaa !5
  %1633 = load i32, ptr %86, align 4, !tbaa !9
  %1634 = sext i32 %1633 to i64
  %1635 = getelementptr inbounds %struct.lua_TValue, ptr %1632, i64 %1634
  store ptr %1635, ptr %89, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #6
  %1636 = load ptr, ptr %87, align 8, !tbaa !5
  %1637 = load i32, ptr %86, align 4, !tbaa !9
  %1638 = sext i32 %1637 to i64
  %1639 = getelementptr inbounds %struct.lua_TValue, ptr %1636, i64 %1638
  store ptr %1639, ptr %90, align 8, !tbaa !5
  %1640 = load ptr, ptr %90, align 8, !tbaa !5
  %1641 = getelementptr inbounds %struct.lua_TValue, ptr %1640, i32 0, i32 0
  %1642 = load ptr, ptr %89, align 8, !tbaa !5
  %1643 = getelementptr inbounds %struct.lua_TValue, ptr %1642, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1641, ptr align 8 %1643, i64 8, i1 false), !tbaa.struct !28
  %1644 = load ptr, ptr %89, align 8, !tbaa !5
  %1645 = getelementptr inbounds %struct.lua_TValue, ptr %1644, i32 0, i32 1
  %1646 = load i32, ptr %1645, align 8, !tbaa !29
  %1647 = load ptr, ptr %90, align 8, !tbaa !5
  %1648 = getelementptr inbounds %struct.lua_TValue, ptr %1647, i32 0, i32 1
  store i32 %1646, ptr %1648, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #6
  br label %1649

1649:                                             ; preds = %1631
  %1650 = load i32, ptr %86, align 4, !tbaa !9
  %1651 = add nsw i32 %1650, 1
  store i32 %1651, ptr %86, align 4, !tbaa !9
  br label %1622, !llvm.loop !41

1652:                                             ; preds = %1622
  %1653 = load ptr, ptr %87, align 8, !tbaa !5
  %1654 = load i32, ptr %86, align 4, !tbaa !9
  %1655 = sext i32 %1654 to i64
  %1656 = getelementptr inbounds %struct.lua_TValue, ptr %1653, i64 %1655
  %1657 = load ptr, ptr %3, align 8, !tbaa !5
  %1658 = getelementptr inbounds %struct.lua_State, ptr %1657, i32 0, i32 4
  store ptr %1656, ptr %1658, align 8, !tbaa !37
  %1659 = load ptr, ptr %85, align 8, !tbaa !5
  %1660 = getelementptr inbounds %struct.CallInfo, ptr %1659, i32 0, i32 2
  store ptr %1656, ptr %1660, align 8, !tbaa !38
  %1661 = load ptr, ptr %3, align 8, !tbaa !5
  %1662 = getelementptr inbounds %struct.lua_State, ptr %1661, i32 0, i32 8
  %1663 = load ptr, ptr %1662, align 8, !tbaa !11
  %1664 = load ptr, ptr %85, align 8, !tbaa !5
  %1665 = getelementptr inbounds %struct.CallInfo, ptr %1664, i32 0, i32 3
  store ptr %1663, ptr %1665, align 8, !tbaa !42
  %1666 = load ptr, ptr %85, align 8, !tbaa !5
  %1667 = getelementptr inbounds %struct.CallInfo, ptr %1666, i32 0, i32 5
  %1668 = load i32, ptr %1667, align 4, !tbaa !43
  %1669 = add nsw i32 %1668, 1
  store i32 %1669, ptr %1667, align 4, !tbaa !43
  %1670 = load ptr, ptr %3, align 8, !tbaa !5
  %1671 = getelementptr inbounds %struct.lua_State, ptr %1670, i32 0, i32 7
  %1672 = load ptr, ptr %1671, align 8, !tbaa !16
  %1673 = getelementptr inbounds %struct.CallInfo, ptr %1672, i32 -1
  store ptr %1673, ptr %1671, align 8, !tbaa !16
  store i32 2, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #6
  br label %1679

1674:                                             ; preds = %1576
  %1675 = load ptr, ptr %3, align 8, !tbaa !5
  %1676 = getelementptr inbounds %struct.lua_State, ptr %1675, i32 0, i32 5
  %1677 = load ptr, ptr %1676, align 8, !tbaa !20
  store ptr %1677, ptr %6, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  br label %1679

1678:                                             ; preds = %1576
  store i32 1, ptr %11, align 4
  br label %1679

1679:                                             ; preds = %1678, %1674, %1652
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #6
  br label %2249

1680:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #6
  %1681 = load i32, ptr %9, align 4, !tbaa !9
  %1682 = lshr i32 %1681, 23
  %1683 = and i32 %1682, 511
  store i32 %1683, ptr %91, align 4, !tbaa !9
  %1684 = load i32, ptr %91, align 4, !tbaa !9
  %1685 = icmp ne i32 %1684, 0
  br i1 %1685, label %1686, label %1694

1686:                                             ; preds = %1680
  %1687 = load ptr, ptr %10, align 8, !tbaa !5
  %1688 = load i32, ptr %91, align 4, !tbaa !9
  %1689 = sext i32 %1688 to i64
  %1690 = getelementptr inbounds %struct.lua_TValue, ptr %1687, i64 %1689
  %1691 = getelementptr inbounds %struct.lua_TValue, ptr %1690, i64 -1
  %1692 = load ptr, ptr %3, align 8, !tbaa !5
  %1693 = getelementptr inbounds %struct.lua_State, ptr %1692, i32 0, i32 4
  store ptr %1691, ptr %1693, align 8, !tbaa !37
  br label %1694

1694:                                             ; preds = %1686, %1680
  %1695 = load ptr, ptr %3, align 8, !tbaa !5
  %1696 = getelementptr inbounds %struct.lua_State, ptr %1695, i32 0, i32 24
  %1697 = load ptr, ptr %1696, align 8, !tbaa !39
  %1698 = icmp ne ptr %1697, null
  br i1 %1698, label %1699, label %1702

1699:                                             ; preds = %1694
  %1700 = load ptr, ptr %3, align 8, !tbaa !5
  %1701 = load ptr, ptr %6, align 8, !tbaa !5
  call void @luaF_close(ptr noundef %1700, ptr noundef %1701)
  br label %1702

1702:                                             ; preds = %1699, %1694
  %1703 = load ptr, ptr %8, align 8, !tbaa !5
  %1704 = load ptr, ptr %3, align 8, !tbaa !5
  %1705 = getelementptr inbounds %struct.lua_State, ptr %1704, i32 0, i32 8
  store ptr %1703, ptr %1705, align 8, !tbaa !11
  %1706 = load ptr, ptr %3, align 8, !tbaa !5
  %1707 = load ptr, ptr %10, align 8, !tbaa !5
  %1708 = call i32 @luaD_poscall(ptr noundef %1706, ptr noundef %1707)
  store i32 %1708, ptr %91, align 4, !tbaa !9
  %1709 = load i32, ptr %4, align 4, !tbaa !9
  %1710 = add nsw i32 %1709, -1
  store i32 %1710, ptr %4, align 4, !tbaa !9
  %1711 = icmp eq i32 %1710, 0
  br i1 %1711, label %1712, label %1713

1712:                                             ; preds = %1702
  store i32 1, ptr %11, align 4
  br label %1725

1713:                                             ; preds = %1702
  %1714 = load i32, ptr %91, align 4, !tbaa !9
  %1715 = icmp ne i32 %1714, 0
  br i1 %1715, label %1716, label %1724

1716:                                             ; preds = %1713
  %1717 = load ptr, ptr %3, align 8, !tbaa !5
  %1718 = getelementptr inbounds %struct.lua_State, ptr %1717, i32 0, i32 7
  %1719 = load ptr, ptr %1718, align 8, !tbaa !16
  %1720 = getelementptr inbounds %struct.CallInfo, ptr %1719, i32 0, i32 2
  %1721 = load ptr, ptr %1720, align 8, !tbaa !38
  %1722 = load ptr, ptr %3, align 8, !tbaa !5
  %1723 = getelementptr inbounds %struct.lua_State, ptr %1722, i32 0, i32 4
  store ptr %1721, ptr %1723, align 8, !tbaa !37
  br label %1724

1724:                                             ; preds = %1716, %1713
  store i32 2, ptr %11, align 4
  br label %1725

1725:                                             ; preds = %1724, %1712
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #6
  br label %2249

1726:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #6
  %1727 = load ptr, ptr %10, align 8, !tbaa !5
  %1728 = getelementptr inbounds %struct.lua_TValue, ptr %1727, i64 2
  %1729 = getelementptr inbounds %struct.lua_TValue, ptr %1728, i32 0, i32 0
  %1730 = load double, ptr %1729, align 8, !tbaa !19
  store double %1730, ptr %92, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #6
  %1731 = load ptr, ptr %10, align 8, !tbaa !5
  %1732 = getelementptr inbounds %struct.lua_TValue, ptr %1731, i32 0, i32 0
  %1733 = load double, ptr %1732, align 8, !tbaa !19
  %1734 = load double, ptr %92, align 8, !tbaa !35
  %1735 = fadd double %1733, %1734
  store double %1735, ptr %93, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #6
  %1736 = load ptr, ptr %10, align 8, !tbaa !5
  %1737 = getelementptr inbounds %struct.lua_TValue, ptr %1736, i64 1
  %1738 = getelementptr inbounds %struct.lua_TValue, ptr %1737, i32 0, i32 0
  %1739 = load double, ptr %1738, align 8, !tbaa !19
  store double %1739, ptr %94, align 8, !tbaa !35
  %1740 = load double, ptr %92, align 8, !tbaa !35
  %1741 = fcmp olt double 0.000000e+00, %1740
  br i1 %1741, label %1742, label %1746

1742:                                             ; preds = %1726
  %1743 = load double, ptr %93, align 8, !tbaa !35
  %1744 = load double, ptr %94, align 8, !tbaa !35
  %1745 = fcmp ole double %1743, %1744
  br i1 %1745, label %1750, label %1771

1746:                                             ; preds = %1726
  %1747 = load double, ptr %94, align 8, !tbaa !35
  %1748 = load double, ptr %93, align 8, !tbaa !35
  %1749 = fcmp ole double %1747, %1748
  br i1 %1749, label %1750, label %1771

1750:                                             ; preds = %1746, %1742
  %1751 = load i32, ptr %9, align 4, !tbaa !9
  %1752 = lshr i32 %1751, 14
  %1753 = and i32 %1752, 262143
  %1754 = sub nsw i32 %1753, 131071
  %1755 = load ptr, ptr %8, align 8, !tbaa !5
  %1756 = sext i32 %1754 to i64
  %1757 = getelementptr inbounds i32, ptr %1755, i64 %1756
  store ptr %1757, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #6
  %1758 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1758, ptr %95, align 8, !tbaa !5
  %1759 = load double, ptr %93, align 8, !tbaa !35
  %1760 = load ptr, ptr %95, align 8, !tbaa !5
  %1761 = getelementptr inbounds %struct.lua_TValue, ptr %1760, i32 0, i32 0
  store double %1759, ptr %1761, align 8, !tbaa !19
  %1762 = load ptr, ptr %95, align 8, !tbaa !5
  %1763 = getelementptr inbounds %struct.lua_TValue, ptr %1762, i32 0, i32 1
  store i32 3, ptr %1763, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #6
  %1764 = load ptr, ptr %10, align 8, !tbaa !5
  %1765 = getelementptr inbounds %struct.lua_TValue, ptr %1764, i64 3
  store ptr %1765, ptr %96, align 8, !tbaa !5
  %1766 = load double, ptr %93, align 8, !tbaa !35
  %1767 = load ptr, ptr %96, align 8, !tbaa !5
  %1768 = getelementptr inbounds %struct.lua_TValue, ptr %1767, i32 0, i32 0
  store double %1766, ptr %1768, align 8, !tbaa !19
  %1769 = load ptr, ptr %96, align 8, !tbaa !5
  %1770 = getelementptr inbounds %struct.lua_TValue, ptr %1769, i32 0, i32 1
  store i32 3, ptr %1770, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #6
  br label %1771

1771:                                             ; preds = %1750, %1746, %1742
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #6
  br label %2249

1772:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #6
  %1773 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1773, ptr %97, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #6
  %1774 = load ptr, ptr %10, align 8, !tbaa !5
  %1775 = getelementptr inbounds %struct.lua_TValue, ptr %1774, i64 1
  store ptr %1775, ptr %98, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #6
  %1776 = load ptr, ptr %10, align 8, !tbaa !5
  %1777 = getelementptr inbounds %struct.lua_TValue, ptr %1776, i64 2
  store ptr %1777, ptr %99, align 8, !tbaa !5
  %1778 = load ptr, ptr %8, align 8, !tbaa !5
  %1779 = load ptr, ptr %3, align 8, !tbaa !5
  %1780 = getelementptr inbounds %struct.lua_State, ptr %1779, i32 0, i32 8
  store ptr %1778, ptr %1780, align 8, !tbaa !11
  %1781 = load ptr, ptr %97, align 8, !tbaa !5
  %1782 = getelementptr inbounds %struct.lua_TValue, ptr %1781, i32 0, i32 1
  %1783 = load i32, ptr %1782, align 8, !tbaa !29
  %1784 = icmp eq i32 %1783, 3
  br i1 %1784, label %1792, label %1785

1785:                                             ; preds = %1772
  %1786 = load ptr, ptr %97, align 8, !tbaa !5
  %1787 = load ptr, ptr %10, align 8, !tbaa !5
  %1788 = call ptr @luaV_tonumber(ptr noundef %1786, ptr noundef %1787)
  store ptr %1788, ptr %97, align 8, !tbaa !5
  %1789 = icmp ne ptr %1788, null
  br i1 %1789, label %1792, label %1790

1790:                                             ; preds = %1785
  %1791 = load ptr, ptr %3, align 8, !tbaa !5
  call void (ptr, ptr, ...) @luaG_runerror(ptr noundef %1791, ptr noundef @.str.6)
  br label %1820

1792:                                             ; preds = %1785, %1772
  %1793 = load ptr, ptr %98, align 8, !tbaa !5
  %1794 = getelementptr inbounds %struct.lua_TValue, ptr %1793, i32 0, i32 1
  %1795 = load i32, ptr %1794, align 8, !tbaa !29
  %1796 = icmp eq i32 %1795, 3
  br i1 %1796, label %1805, label %1797

1797:                                             ; preds = %1792
  %1798 = load ptr, ptr %98, align 8, !tbaa !5
  %1799 = load ptr, ptr %10, align 8, !tbaa !5
  %1800 = getelementptr inbounds %struct.lua_TValue, ptr %1799, i64 1
  %1801 = call ptr @luaV_tonumber(ptr noundef %1798, ptr noundef %1800)
  store ptr %1801, ptr %98, align 8, !tbaa !5
  %1802 = icmp ne ptr %1801, null
  br i1 %1802, label %1805, label %1803

1803:                                             ; preds = %1797
  %1804 = load ptr, ptr %3, align 8, !tbaa !5
  call void (ptr, ptr, ...) @luaG_runerror(ptr noundef %1804, ptr noundef @.str.7)
  br label %1819

1805:                                             ; preds = %1797, %1792
  %1806 = load ptr, ptr %99, align 8, !tbaa !5
  %1807 = getelementptr inbounds %struct.lua_TValue, ptr %1806, i32 0, i32 1
  %1808 = load i32, ptr %1807, align 8, !tbaa !29
  %1809 = icmp eq i32 %1808, 3
  br i1 %1809, label %1818, label %1810

1810:                                             ; preds = %1805
  %1811 = load ptr, ptr %99, align 8, !tbaa !5
  %1812 = load ptr, ptr %10, align 8, !tbaa !5
  %1813 = getelementptr inbounds %struct.lua_TValue, ptr %1812, i64 2
  %1814 = call ptr @luaV_tonumber(ptr noundef %1811, ptr noundef %1813)
  store ptr %1814, ptr %99, align 8, !tbaa !5
  %1815 = icmp ne ptr %1814, null
  br i1 %1815, label %1818, label %1816

1816:                                             ; preds = %1810
  %1817 = load ptr, ptr %3, align 8, !tbaa !5
  call void (ptr, ptr, ...) @luaG_runerror(ptr noundef %1817, ptr noundef @.str.8)
  br label %1818

1818:                                             ; preds = %1816, %1810, %1805
  br label %1819

1819:                                             ; preds = %1818, %1803
  br label %1820

1820:                                             ; preds = %1819, %1790
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #6
  %1821 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1821, ptr %100, align 8, !tbaa !5
  %1822 = load ptr, ptr %10, align 8, !tbaa !5
  %1823 = getelementptr inbounds %struct.lua_TValue, ptr %1822, i32 0, i32 0
  %1824 = load double, ptr %1823, align 8, !tbaa !19
  %1825 = load ptr, ptr %99, align 8, !tbaa !5
  %1826 = getelementptr inbounds %struct.lua_TValue, ptr %1825, i32 0, i32 0
  %1827 = load double, ptr %1826, align 8, !tbaa !19
  %1828 = fsub double %1824, %1827
  %1829 = load ptr, ptr %100, align 8, !tbaa !5
  %1830 = getelementptr inbounds %struct.lua_TValue, ptr %1829, i32 0, i32 0
  store double %1828, ptr %1830, align 8, !tbaa !19
  %1831 = load ptr, ptr %100, align 8, !tbaa !5
  %1832 = getelementptr inbounds %struct.lua_TValue, ptr %1831, i32 0, i32 1
  store i32 3, ptr %1832, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #6
  %1833 = load i32, ptr %9, align 4, !tbaa !9
  %1834 = lshr i32 %1833, 14
  %1835 = and i32 %1834, 262143
  %1836 = sub nsw i32 %1835, 131071
  %1837 = load ptr, ptr %8, align 8, !tbaa !5
  %1838 = sext i32 %1836 to i64
  %1839 = getelementptr inbounds i32, ptr %1837, i64 %1838
  store ptr %1839, ptr %8, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #6
  br label %2249

1840:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #6
  %1841 = load ptr, ptr %10, align 8, !tbaa !5
  %1842 = getelementptr inbounds %struct.lua_TValue, ptr %1841, i64 3
  store ptr %1842, ptr %101, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #6
  %1843 = load ptr, ptr %10, align 8, !tbaa !5
  %1844 = getelementptr inbounds %struct.lua_TValue, ptr %1843, i64 2
  store ptr %1844, ptr %102, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #6
  %1845 = load ptr, ptr %101, align 8, !tbaa !5
  %1846 = getelementptr inbounds %struct.lua_TValue, ptr %1845, i64 2
  store ptr %1846, ptr %103, align 8, !tbaa !5
  %1847 = load ptr, ptr %103, align 8, !tbaa !5
  %1848 = getelementptr inbounds %struct.lua_TValue, ptr %1847, i32 0, i32 0
  %1849 = load ptr, ptr %102, align 8, !tbaa !5
  %1850 = getelementptr inbounds %struct.lua_TValue, ptr %1849, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1848, ptr align 8 %1850, i64 8, i1 false), !tbaa.struct !28
  %1851 = load ptr, ptr %102, align 8, !tbaa !5
  %1852 = getelementptr inbounds %struct.lua_TValue, ptr %1851, i32 0, i32 1
  %1853 = load i32, ptr %1852, align 8, !tbaa !29
  %1854 = load ptr, ptr %103, align 8, !tbaa !5
  %1855 = getelementptr inbounds %struct.lua_TValue, ptr %1854, i32 0, i32 1
  store i32 %1853, ptr %1855, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #6
  %1856 = load ptr, ptr %10, align 8, !tbaa !5
  %1857 = getelementptr inbounds %struct.lua_TValue, ptr %1856, i64 1
  store ptr %1857, ptr %104, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #6
  %1858 = load ptr, ptr %101, align 8, !tbaa !5
  %1859 = getelementptr inbounds %struct.lua_TValue, ptr %1858, i64 1
  store ptr %1859, ptr %105, align 8, !tbaa !5
  %1860 = load ptr, ptr %105, align 8, !tbaa !5
  %1861 = getelementptr inbounds %struct.lua_TValue, ptr %1860, i32 0, i32 0
  %1862 = load ptr, ptr %104, align 8, !tbaa !5
  %1863 = getelementptr inbounds %struct.lua_TValue, ptr %1862, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1861, ptr align 8 %1863, i64 8, i1 false), !tbaa.struct !28
  %1864 = load ptr, ptr %104, align 8, !tbaa !5
  %1865 = getelementptr inbounds %struct.lua_TValue, ptr %1864, i32 0, i32 1
  %1866 = load i32, ptr %1865, align 8, !tbaa !29
  %1867 = load ptr, ptr %105, align 8, !tbaa !5
  %1868 = getelementptr inbounds %struct.lua_TValue, ptr %1867, i32 0, i32 1
  store i32 %1866, ptr %1868, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #6
  %1869 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1869, ptr %106, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #6
  %1870 = load ptr, ptr %101, align 8, !tbaa !5
  store ptr %1870, ptr %107, align 8, !tbaa !5
  %1871 = load ptr, ptr %107, align 8, !tbaa !5
  %1872 = getelementptr inbounds %struct.lua_TValue, ptr %1871, i32 0, i32 0
  %1873 = load ptr, ptr %106, align 8, !tbaa !5
  %1874 = getelementptr inbounds %struct.lua_TValue, ptr %1873, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1872, ptr align 8 %1874, i64 8, i1 false), !tbaa.struct !28
  %1875 = load ptr, ptr %106, align 8, !tbaa !5
  %1876 = getelementptr inbounds %struct.lua_TValue, ptr %1875, i32 0, i32 1
  %1877 = load i32, ptr %1876, align 8, !tbaa !29
  %1878 = load ptr, ptr %107, align 8, !tbaa !5
  %1879 = getelementptr inbounds %struct.lua_TValue, ptr %1878, i32 0, i32 1
  store i32 %1877, ptr %1879, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #6
  %1880 = load ptr, ptr %101, align 8, !tbaa !5
  %1881 = getelementptr inbounds %struct.lua_TValue, ptr %1880, i64 3
  %1882 = load ptr, ptr %3, align 8, !tbaa !5
  %1883 = getelementptr inbounds %struct.lua_State, ptr %1882, i32 0, i32 4
  store ptr %1881, ptr %1883, align 8, !tbaa !37
  %1884 = load ptr, ptr %8, align 8, !tbaa !5
  %1885 = load ptr, ptr %3, align 8, !tbaa !5
  %1886 = getelementptr inbounds %struct.lua_State, ptr %1885, i32 0, i32 8
  store ptr %1884, ptr %1886, align 8, !tbaa !11
  %1887 = load ptr, ptr %3, align 8, !tbaa !5
  %1888 = load ptr, ptr %101, align 8, !tbaa !5
  %1889 = load i32, ptr %9, align 4, !tbaa !9
  %1890 = lshr i32 %1889, 14
  %1891 = and i32 %1890, 511
  call void @luaD_call(ptr noundef %1887, ptr noundef %1888, i32 noundef %1891)
  %1892 = load ptr, ptr %3, align 8, !tbaa !5
  %1893 = getelementptr inbounds %struct.lua_State, ptr %1892, i32 0, i32 5
  %1894 = load ptr, ptr %1893, align 8, !tbaa !20
  store ptr %1894, ptr %6, align 8, !tbaa !5
  %1895 = load ptr, ptr %3, align 8, !tbaa !5
  %1896 = getelementptr inbounds %struct.lua_State, ptr %1895, i32 0, i32 7
  %1897 = load ptr, ptr %1896, align 8, !tbaa !16
  %1898 = getelementptr inbounds %struct.CallInfo, ptr %1897, i32 0, i32 2
  %1899 = load ptr, ptr %1898, align 8, !tbaa !38
  %1900 = load ptr, ptr %3, align 8, !tbaa !5
  %1901 = getelementptr inbounds %struct.lua_State, ptr %1900, i32 0, i32 4
  store ptr %1899, ptr %1901, align 8, !tbaa !37
  %1902 = load ptr, ptr %6, align 8, !tbaa !5
  %1903 = load i32, ptr %9, align 4, !tbaa !9
  %1904 = lshr i32 %1903, 6
  %1905 = and i32 %1904, 255
  %1906 = sext i32 %1905 to i64
  %1907 = getelementptr inbounds %struct.lua_TValue, ptr %1902, i64 %1906
  %1908 = getelementptr inbounds %struct.lua_TValue, ptr %1907, i64 3
  store ptr %1908, ptr %101, align 8, !tbaa !5
  %1909 = load ptr, ptr %101, align 8, !tbaa !5
  %1910 = getelementptr inbounds %struct.lua_TValue, ptr %1909, i32 0, i32 1
  %1911 = load i32, ptr %1910, align 8, !tbaa !29
  %1912 = icmp eq i32 %1911, 0
  br i1 %1912, label %1934, label %1913

1913:                                             ; preds = %1840
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #6
  %1914 = load ptr, ptr %101, align 8, !tbaa !5
  store ptr %1914, ptr %108, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #6
  %1915 = load ptr, ptr %101, align 8, !tbaa !5
  %1916 = getelementptr inbounds %struct.lua_TValue, ptr %1915, i64 -1
  store ptr %1916, ptr %109, align 8, !tbaa !5
  %1917 = load ptr, ptr %109, align 8, !tbaa !5
  %1918 = getelementptr inbounds %struct.lua_TValue, ptr %1917, i32 0, i32 0
  %1919 = load ptr, ptr %108, align 8, !tbaa !5
  %1920 = getelementptr inbounds %struct.lua_TValue, ptr %1919, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1918, ptr align 8 %1920, i64 8, i1 false), !tbaa.struct !28
  %1921 = load ptr, ptr %108, align 8, !tbaa !5
  %1922 = getelementptr inbounds %struct.lua_TValue, ptr %1921, i32 0, i32 1
  %1923 = load i32, ptr %1922, align 8, !tbaa !29
  %1924 = load ptr, ptr %109, align 8, !tbaa !5
  %1925 = getelementptr inbounds %struct.lua_TValue, ptr %1924, i32 0, i32 1
  store i32 %1923, ptr %1925, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #6
  %1926 = load ptr, ptr %8, align 8, !tbaa !5
  %1927 = load i32, ptr %1926, align 4, !tbaa !9
  %1928 = lshr i32 %1927, 14
  %1929 = and i32 %1928, 262143
  %1930 = sub nsw i32 %1929, 131071
  %1931 = load ptr, ptr %8, align 8, !tbaa !5
  %1932 = sext i32 %1930 to i64
  %1933 = getelementptr inbounds i32, ptr %1931, i64 %1932
  store ptr %1933, ptr %8, align 8, !tbaa !5
  br label %1934

1934:                                             ; preds = %1913, %1840
  %1935 = load ptr, ptr %8, align 8, !tbaa !5
  %1936 = getelementptr inbounds i32, ptr %1935, i32 1
  store ptr %1936, ptr %8, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #6
  br label %2249

1937:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #6
  %1938 = load i32, ptr %9, align 4, !tbaa !9
  %1939 = lshr i32 %1938, 23
  %1940 = and i32 %1939, 511
  store i32 %1940, ptr %110, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #6
  %1941 = load i32, ptr %9, align 4, !tbaa !9
  %1942 = lshr i32 %1941, 14
  %1943 = and i32 %1942, 511
  store i32 %1943, ptr %111, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #6
  %1944 = load i32, ptr %110, align 4, !tbaa !9
  %1945 = icmp eq i32 %1944, 0
  br i1 %1945, label %1946, label %1964

1946:                                             ; preds = %1937
  %1947 = load ptr, ptr %3, align 8, !tbaa !5
  %1948 = getelementptr inbounds %struct.lua_State, ptr %1947, i32 0, i32 4
  %1949 = load ptr, ptr %1948, align 8, !tbaa !37
  %1950 = load ptr, ptr %10, align 8, !tbaa !5
  %1951 = ptrtoint ptr %1949 to i64
  %1952 = ptrtoint ptr %1950 to i64
  %1953 = sub i64 %1951, %1952
  %1954 = sdiv exact i64 %1953, 16
  %1955 = trunc i64 %1954 to i32
  %1956 = sub nsw i32 %1955, 1
  store i32 %1956, ptr %110, align 4, !tbaa !9
  %1957 = load ptr, ptr %3, align 8, !tbaa !5
  %1958 = getelementptr inbounds %struct.lua_State, ptr %1957, i32 0, i32 7
  %1959 = load ptr, ptr %1958, align 8, !tbaa !16
  %1960 = getelementptr inbounds %struct.CallInfo, ptr %1959, i32 0, i32 2
  %1961 = load ptr, ptr %1960, align 8, !tbaa !38
  %1962 = load ptr, ptr %3, align 8, !tbaa !5
  %1963 = getelementptr inbounds %struct.lua_State, ptr %1962, i32 0, i32 4
  store ptr %1961, ptr %1963, align 8, !tbaa !37
  br label %1964

1964:                                             ; preds = %1946, %1937
  %1965 = load i32, ptr %111, align 4, !tbaa !9
  %1966 = icmp eq i32 %1965, 0
  br i1 %1966, label %1967, label %1971

1967:                                             ; preds = %1964
  %1968 = load ptr, ptr %8, align 8, !tbaa !5
  %1969 = getelementptr inbounds i32, ptr %1968, i32 1
  store ptr %1969, ptr %8, align 8, !tbaa !5
  %1970 = load i32, ptr %1968, align 4, !tbaa !9
  store i32 %1970, ptr %111, align 4, !tbaa !9
  br label %1971

1971:                                             ; preds = %1967, %1964
  %1972 = load ptr, ptr %10, align 8, !tbaa !5
  %1973 = getelementptr inbounds %struct.lua_TValue, ptr %1972, i32 0, i32 1
  %1974 = load i32, ptr %1973, align 8, !tbaa !29
  %1975 = icmp eq i32 %1974, 5
  br i1 %1975, label %1977, label %1976

1976:                                             ; preds = %1971
  store i32 5, ptr %11, align 4
  br label %2047

1977:                                             ; preds = %1971
  %1978 = load ptr, ptr %10, align 8, !tbaa !5
  %1979 = getelementptr inbounds %struct.lua_TValue, ptr %1978, i32 0, i32 0
  %1980 = load ptr, ptr %1979, align 8, !tbaa !19
  store ptr %1980, ptr %113, align 8, !tbaa !5
  %1981 = load i32, ptr %111, align 4, !tbaa !9
  %1982 = sub nsw i32 %1981, 1
  %1983 = mul nsw i32 %1982, 50
  %1984 = load i32, ptr %110, align 4, !tbaa !9
  %1985 = add nsw i32 %1983, %1984
  store i32 %1985, ptr %112, align 4, !tbaa !9
  %1986 = load i32, ptr %112, align 4, !tbaa !9
  %1987 = load ptr, ptr %113, align 8, !tbaa !5
  %1988 = getelementptr inbounds %struct.Table, ptr %1987, i32 0, i32 10
  %1989 = load i32, ptr %1988, align 8, !tbaa !44
  %1990 = icmp sgt i32 %1986, %1989
  br i1 %1990, label %1991, label %1995

1991:                                             ; preds = %1977
  %1992 = load ptr, ptr %3, align 8, !tbaa !5
  %1993 = load ptr, ptr %113, align 8, !tbaa !5
  %1994 = load i32, ptr %112, align 4, !tbaa !9
  call void @luaH_resizearray(ptr noundef %1992, ptr noundef %1993, i32 noundef %1994)
  br label %1995

1995:                                             ; preds = %1991, %1977
  br label %1996

1996:                                             ; preds = %2043, %1995
  %1997 = load i32, ptr %110, align 4, !tbaa !9
  %1998 = icmp sgt i32 %1997, 0
  br i1 %1998, label %1999, label %2046

1999:                                             ; preds = %1996
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #6
  %2000 = load ptr, ptr %10, align 8, !tbaa !5
  %2001 = load i32, ptr %110, align 4, !tbaa !9
  %2002 = sext i32 %2001 to i64
  %2003 = getelementptr inbounds %struct.lua_TValue, ptr %2000, i64 %2002
  store ptr %2003, ptr %114, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #6
  %2004 = load ptr, ptr %114, align 8, !tbaa !5
  store ptr %2004, ptr %115, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #6
  %2005 = load ptr, ptr %3, align 8, !tbaa !5
  %2006 = load ptr, ptr %113, align 8, !tbaa !5
  %2007 = load i32, ptr %112, align 4, !tbaa !9
  %2008 = add nsw i32 %2007, -1
  store i32 %2008, ptr %112, align 4, !tbaa !9
  %2009 = call ptr @luaH_setnum(ptr noundef %2005, ptr noundef %2006, i32 noundef %2007)
  store ptr %2009, ptr %116, align 8, !tbaa !5
  %2010 = load ptr, ptr %116, align 8, !tbaa !5
  %2011 = getelementptr inbounds %struct.lua_TValue, ptr %2010, i32 0, i32 0
  %2012 = load ptr, ptr %115, align 8, !tbaa !5
  %2013 = getelementptr inbounds %struct.lua_TValue, ptr %2012, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2011, ptr align 8 %2013, i64 8, i1 false), !tbaa.struct !28
  %2014 = load ptr, ptr %115, align 8, !tbaa !5
  %2015 = getelementptr inbounds %struct.lua_TValue, ptr %2014, i32 0, i32 1
  %2016 = load i32, ptr %2015, align 8, !tbaa !29
  %2017 = load ptr, ptr %116, align 8, !tbaa !5
  %2018 = getelementptr inbounds %struct.lua_TValue, ptr %2017, i32 0, i32 1
  store i32 %2016, ptr %2018, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #6
  %2019 = load ptr, ptr %114, align 8, !tbaa !5
  %2020 = getelementptr inbounds %struct.lua_TValue, ptr %2019, i32 0, i32 1
  %2021 = load i32, ptr %2020, align 8, !tbaa !29
  %2022 = icmp sge i32 %2021, 4
  br i1 %2022, label %2023, label %2042

2023:                                             ; preds = %1999
  %2024 = load ptr, ptr %114, align 8, !tbaa !5
  %2025 = getelementptr inbounds %struct.lua_TValue, ptr %2024, i32 0, i32 0
  %2026 = load ptr, ptr %2025, align 8, !tbaa !19
  %2027 = getelementptr inbounds %struct.GCheader, ptr %2026, i32 0, i32 2
  %2028 = load i8, ptr %2027, align 1, !tbaa !19
  %2029 = zext i8 %2028 to i32
  %2030 = and i32 %2029, 3
  %2031 = icmp ne i32 %2030, 0
  br i1 %2031, label %2032, label %2042

2032:                                             ; preds = %2023
  %2033 = load ptr, ptr %113, align 8, !tbaa !5
  %2034 = getelementptr inbounds %struct.GCheader, ptr %2033, i32 0, i32 2
  %2035 = load i8, ptr %2034, align 1, !tbaa !19
  %2036 = zext i8 %2035 to i32
  %2037 = and i32 %2036, 4
  %2038 = icmp ne i32 %2037, 0
  br i1 %2038, label %2039, label %2042

2039:                                             ; preds = %2032
  %2040 = load ptr, ptr %3, align 8, !tbaa !5
  %2041 = load ptr, ptr %113, align 8, !tbaa !5
  call void @luaC_barrierback(ptr noundef %2040, ptr noundef %2041)
  br label %2042

2042:                                             ; preds = %2039, %2032, %2023, %1999
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #6
  br label %2043

2043:                                             ; preds = %2042
  %2044 = load i32, ptr %110, align 4, !tbaa !9
  %2045 = add nsw i32 %2044, -1
  store i32 %2045, ptr %110, align 4, !tbaa !9
  br label %1996, !llvm.loop !46

2046:                                             ; preds = %1996
  store i32 4, ptr %11, align 4
  br label %2047

2047:                                             ; preds = %2046, %1976
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #6
  %2048 = load i32, ptr %11, align 4
  switch i32 %2048, label %2249 [
    i32 5, label %2248
  ]

2049:                                             ; preds = %187
  %2050 = load ptr, ptr %3, align 8, !tbaa !5
  %2051 = load ptr, ptr %10, align 8, !tbaa !5
  call void @luaF_close(ptr noundef %2050, ptr noundef %2051)
  store i32 4, ptr %11, align 4
  br label %2249

2052:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %119) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #6
  %2053 = load ptr, ptr %5, align 8, !tbaa !5
  %2054 = getelementptr inbounds %struct.LClosure, ptr %2053, i32 0, i32 7
  %2055 = load ptr, ptr %2054, align 8, !tbaa !21
  %2056 = getelementptr inbounds %struct.Proto, ptr %2055, i32 0, i32 5
  %2057 = load ptr, ptr %2056, align 8, !tbaa !47
  %2058 = load i32, ptr %9, align 4, !tbaa !9
  %2059 = lshr i32 %2058, 14
  %2060 = and i32 %2059, 262143
  %2061 = sext i32 %2060 to i64
  %2062 = getelementptr inbounds ptr, ptr %2057, i64 %2061
  %2063 = load ptr, ptr %2062, align 8, !tbaa !5
  store ptr %2063, ptr %117, align 8, !tbaa !5
  %2064 = load ptr, ptr %117, align 8, !tbaa !5
  %2065 = getelementptr inbounds %struct.Proto, ptr %2064, i32 0, i32 19
  %2066 = load i8, ptr %2065, align 8, !tbaa !48
  %2067 = zext i8 %2066 to i32
  store i32 %2067, ptr %119, align 4, !tbaa !9
  %2068 = load ptr, ptr %3, align 8, !tbaa !5
  %2069 = load i32, ptr %119, align 4, !tbaa !9
  %2070 = load ptr, ptr %5, align 8, !tbaa !5
  %2071 = getelementptr inbounds %struct.LClosure, ptr %2070, i32 0, i32 6
  %2072 = load ptr, ptr %2071, align 8, !tbaa !34
  %2073 = call ptr @luaF_newLclosure(ptr noundef %2068, i32 noundef %2069, ptr noundef %2072)
  store ptr %2073, ptr %118, align 8, !tbaa !5
  %2074 = load ptr, ptr %117, align 8, !tbaa !5
  %2075 = load ptr, ptr %118, align 8, !tbaa !5
  %2076 = getelementptr inbounds %struct.LClosure, ptr %2075, i32 0, i32 7
  store ptr %2074, ptr %2076, align 8, !tbaa !19
  store i32 0, ptr %120, align 4, !tbaa !9
  br label %2077

2077:                                             ; preds = %2118, %2052
  %2078 = load i32, ptr %120, align 4, !tbaa !9
  %2079 = load i32, ptr %119, align 4, !tbaa !9
  %2080 = icmp slt i32 %2078, %2079
  br i1 %2080, label %2081, label %2123

2081:                                             ; preds = %2077
  %2082 = load ptr, ptr %8, align 8, !tbaa !5
  %2083 = load i32, ptr %2082, align 4, !tbaa !9
  %2084 = lshr i32 %2083, 0
  %2085 = and i32 %2084, 63
  %2086 = icmp eq i32 %2085, 4
  br i1 %2086, label %2087, label %2102

2087:                                             ; preds = %2081
  %2088 = load ptr, ptr %5, align 8, !tbaa !5
  %2089 = getelementptr inbounds %struct.LClosure, ptr %2088, i32 0, i32 8
  %2090 = load ptr, ptr %8, align 8, !tbaa !5
  %2091 = load i32, ptr %2090, align 4, !tbaa !9
  %2092 = lshr i32 %2091, 23
  %2093 = and i32 %2092, 511
  %2094 = sext i32 %2093 to i64
  %2095 = getelementptr inbounds [1 x ptr], ptr %2089, i64 0, i64 %2094
  %2096 = load ptr, ptr %2095, align 8, !tbaa !5
  %2097 = load ptr, ptr %118, align 8, !tbaa !5
  %2098 = getelementptr inbounds %struct.LClosure, ptr %2097, i32 0, i32 8
  %2099 = load i32, ptr %120, align 4, !tbaa !9
  %2100 = sext i32 %2099 to i64
  %2101 = getelementptr inbounds [1 x ptr], ptr %2098, i64 0, i64 %2100
  store ptr %2096, ptr %2101, align 8, !tbaa !19
  br label %2117

2102:                                             ; preds = %2081
  %2103 = load ptr, ptr %3, align 8, !tbaa !5
  %2104 = load ptr, ptr %6, align 8, !tbaa !5
  %2105 = load ptr, ptr %8, align 8, !tbaa !5
  %2106 = load i32, ptr %2105, align 4, !tbaa !9
  %2107 = lshr i32 %2106, 23
  %2108 = and i32 %2107, 511
  %2109 = sext i32 %2108 to i64
  %2110 = getelementptr inbounds %struct.lua_TValue, ptr %2104, i64 %2109
  %2111 = call ptr @luaF_findupval(ptr noundef %2103, ptr noundef %2110)
  %2112 = load ptr, ptr %118, align 8, !tbaa !5
  %2113 = getelementptr inbounds %struct.LClosure, ptr %2112, i32 0, i32 8
  %2114 = load i32, ptr %120, align 4, !tbaa !9
  %2115 = sext i32 %2114 to i64
  %2116 = getelementptr inbounds [1 x ptr], ptr %2113, i64 0, i64 %2115
  store ptr %2111, ptr %2116, align 8, !tbaa !19
  br label %2117

2117:                                             ; preds = %2102, %2087
  br label %2118

2118:                                             ; preds = %2117
  %2119 = load i32, ptr %120, align 4, !tbaa !9
  %2120 = add nsw i32 %2119, 1
  store i32 %2120, ptr %120, align 4, !tbaa !9
  %2121 = load ptr, ptr %8, align 8, !tbaa !5
  %2122 = getelementptr inbounds i32, ptr %2121, i32 1
  store ptr %2122, ptr %8, align 8, !tbaa !5
  br label %2077, !llvm.loop !49

2123:                                             ; preds = %2077
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #6
  %2124 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %2124, ptr %121, align 8, !tbaa !5
  %2125 = load ptr, ptr %118, align 8, !tbaa !5
  %2126 = load ptr, ptr %121, align 8, !tbaa !5
  %2127 = getelementptr inbounds %struct.lua_TValue, ptr %2126, i32 0, i32 0
  store ptr %2125, ptr %2127, align 8, !tbaa !19
  %2128 = load ptr, ptr %121, align 8, !tbaa !5
  %2129 = getelementptr inbounds %struct.lua_TValue, ptr %2128, i32 0, i32 1
  store i32 6, ptr %2129, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #6
  %2130 = load ptr, ptr %8, align 8, !tbaa !5
  %2131 = load ptr, ptr %3, align 8, !tbaa !5
  %2132 = getelementptr inbounds %struct.lua_State, ptr %2131, i32 0, i32 8
  store ptr %2130, ptr %2132, align 8, !tbaa !11
  %2133 = load ptr, ptr %3, align 8, !tbaa !5
  %2134 = load ptr, ptr %3, align 8, !tbaa !5
  %2135 = getelementptr inbounds %struct.lua_State, ptr %2134, i32 0, i32 5
  %2136 = load ptr, ptr %2135, align 8, !tbaa !20
  store ptr %2136, ptr %6, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #6
  br label %2249

2137:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %122) #6
  %2138 = load i32, ptr %9, align 4, !tbaa !9
  %2139 = lshr i32 %2138, 23
  %2140 = and i32 %2139, 511
  %2141 = sub nsw i32 %2140, 1
  store i32 %2141, ptr %122, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %123) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #6
  %2142 = load ptr, ptr %3, align 8, !tbaa !5
  %2143 = getelementptr inbounds %struct.lua_State, ptr %2142, i32 0, i32 7
  %2144 = load ptr, ptr %2143, align 8, !tbaa !16
  store ptr %2144, ptr %124, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %125) #6
  %2145 = load ptr, ptr %124, align 8, !tbaa !5
  %2146 = getelementptr inbounds %struct.CallInfo, ptr %2145, i32 0, i32 0
  %2147 = load ptr, ptr %2146, align 8, !tbaa !40
  %2148 = load ptr, ptr %124, align 8, !tbaa !5
  %2149 = getelementptr inbounds %struct.CallInfo, ptr %2148, i32 0, i32 1
  %2150 = load ptr, ptr %2149, align 8, !tbaa !17
  %2151 = ptrtoint ptr %2147 to i64
  %2152 = ptrtoint ptr %2150 to i64
  %2153 = sub i64 %2151, %2152
  %2154 = sdiv exact i64 %2153, 16
  %2155 = trunc i64 %2154 to i32
  %2156 = load ptr, ptr %5, align 8, !tbaa !5
  %2157 = getelementptr inbounds %struct.LClosure, ptr %2156, i32 0, i32 7
  %2158 = load ptr, ptr %2157, align 8, !tbaa !21
  %2159 = getelementptr inbounds %struct.Proto, ptr %2158, i32 0, i32 20
  %2160 = load i8, ptr %2159, align 1, !tbaa !50
  %2161 = zext i8 %2160 to i32
  %2162 = sub nsw i32 %2155, %2161
  %2163 = sub nsw i32 %2162, 1
  store i32 %2163, ptr %125, align 4, !tbaa !9
  %2164 = load i32, ptr %122, align 4, !tbaa !9
  %2165 = icmp eq i32 %2164, -1
  br i1 %2165, label %2166, label %2204

2166:                                             ; preds = %2137
  %2167 = load ptr, ptr %8, align 8, !tbaa !5
  %2168 = load ptr, ptr %3, align 8, !tbaa !5
  %2169 = getelementptr inbounds %struct.lua_State, ptr %2168, i32 0, i32 8
  store ptr %2167, ptr %2169, align 8, !tbaa !11
  %2170 = load ptr, ptr %3, align 8, !tbaa !5
  %2171 = getelementptr inbounds %struct.lua_State, ptr %2170, i32 0, i32 9
  %2172 = load ptr, ptr %2171, align 8, !tbaa !51
  %2173 = load ptr, ptr %3, align 8, !tbaa !5
  %2174 = getelementptr inbounds %struct.lua_State, ptr %2173, i32 0, i32 4
  %2175 = load ptr, ptr %2174, align 8, !tbaa !37
  %2176 = ptrtoint ptr %2172 to i64
  %2177 = ptrtoint ptr %2175 to i64
  %2178 = sub i64 %2176, %2177
  %2179 = load i32, ptr %125, align 4, !tbaa !9
  %2180 = mul nsw i32 %2179, 16
  %2181 = sext i32 %2180 to i64
  %2182 = icmp sle i64 %2178, %2181
  br i1 %2182, label %2183, label %2186

2183:                                             ; preds = %2166
  %2184 = load ptr, ptr %3, align 8, !tbaa !5
  %2185 = load i32, ptr %125, align 4, !tbaa !9
  call void @luaD_growstack(ptr noundef %2184, i32 noundef %2185)
  br label %2187

2186:                                             ; preds = %2166
  br label %2187

2187:                                             ; preds = %2186, %2183
  %2188 = load ptr, ptr %3, align 8, !tbaa !5
  %2189 = getelementptr inbounds %struct.lua_State, ptr %2188, i32 0, i32 5
  %2190 = load ptr, ptr %2189, align 8, !tbaa !20
  store ptr %2190, ptr %6, align 8, !tbaa !5
  %2191 = load ptr, ptr %6, align 8, !tbaa !5
  %2192 = load i32, ptr %9, align 4, !tbaa !9
  %2193 = lshr i32 %2192, 6
  %2194 = and i32 %2193, 255
  %2195 = sext i32 %2194 to i64
  %2196 = getelementptr inbounds %struct.lua_TValue, ptr %2191, i64 %2195
  store ptr %2196, ptr %10, align 8, !tbaa !5
  %2197 = load i32, ptr %125, align 4, !tbaa !9
  store i32 %2197, ptr %122, align 4, !tbaa !9
  %2198 = load ptr, ptr %10, align 8, !tbaa !5
  %2199 = load i32, ptr %125, align 4, !tbaa !9
  %2200 = sext i32 %2199 to i64
  %2201 = getelementptr inbounds %struct.lua_TValue, ptr %2198, i64 %2200
  %2202 = load ptr, ptr %3, align 8, !tbaa !5
  %2203 = getelementptr inbounds %struct.lua_State, ptr %2202, i32 0, i32 4
  store ptr %2201, ptr %2203, align 8, !tbaa !37
  br label %2204

2204:                                             ; preds = %2187, %2137
  store i32 0, ptr %123, align 4, !tbaa !9
  br label %2205

2205:                                             ; preds = %2244, %2204
  %2206 = load i32, ptr %123, align 4, !tbaa !9
  %2207 = load i32, ptr %122, align 4, !tbaa !9
  %2208 = icmp slt i32 %2206, %2207
  br i1 %2208, label %2209, label %2247

2209:                                             ; preds = %2205
  %2210 = load i32, ptr %123, align 4, !tbaa !9
  %2211 = load i32, ptr %125, align 4, !tbaa !9
  %2212 = icmp slt i32 %2210, %2211
  br i1 %2212, label %2213, label %2237

2213:                                             ; preds = %2209
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #6
  %2214 = load ptr, ptr %124, align 8, !tbaa !5
  %2215 = getelementptr inbounds %struct.CallInfo, ptr %2214, i32 0, i32 0
  %2216 = load ptr, ptr %2215, align 8, !tbaa !40
  %2217 = load i32, ptr %125, align 4, !tbaa !9
  %2218 = sext i32 %2217 to i64
  %2219 = sub i64 0, %2218
  %2220 = getelementptr inbounds %struct.lua_TValue, ptr %2216, i64 %2219
  %2221 = load i32, ptr %123, align 4, !tbaa !9
  %2222 = sext i32 %2221 to i64
  %2223 = getelementptr inbounds %struct.lua_TValue, ptr %2220, i64 %2222
  store ptr %2223, ptr %126, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #6
  %2224 = load ptr, ptr %10, align 8, !tbaa !5
  %2225 = load i32, ptr %123, align 4, !tbaa !9
  %2226 = sext i32 %2225 to i64
  %2227 = getelementptr inbounds %struct.lua_TValue, ptr %2224, i64 %2226
  store ptr %2227, ptr %127, align 8, !tbaa !5
  %2228 = load ptr, ptr %127, align 8, !tbaa !5
  %2229 = getelementptr inbounds %struct.lua_TValue, ptr %2228, i32 0, i32 0
  %2230 = load ptr, ptr %126, align 8, !tbaa !5
  %2231 = getelementptr inbounds %struct.lua_TValue, ptr %2230, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2229, ptr align 8 %2231, i64 8, i1 false), !tbaa.struct !28
  %2232 = load ptr, ptr %126, align 8, !tbaa !5
  %2233 = getelementptr inbounds %struct.lua_TValue, ptr %2232, i32 0, i32 1
  %2234 = load i32, ptr %2233, align 8, !tbaa !29
  %2235 = load ptr, ptr %127, align 8, !tbaa !5
  %2236 = getelementptr inbounds %struct.lua_TValue, ptr %2235, i32 0, i32 1
  store i32 %2234, ptr %2236, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #6
  br label %2243

2237:                                             ; preds = %2209
  %2238 = load ptr, ptr %10, align 8, !tbaa !5
  %2239 = load i32, ptr %123, align 4, !tbaa !9
  %2240 = sext i32 %2239 to i64
  %2241 = getelementptr inbounds %struct.lua_TValue, ptr %2238, i64 %2240
  %2242 = getelementptr inbounds %struct.lua_TValue, ptr %2241, i32 0, i32 1
  store i32 0, ptr %2242, align 8, !tbaa !29
  br label %2243

2243:                                             ; preds = %2237, %2213
  br label %2244

2244:                                             ; preds = %2243
  %2245 = load i32, ptr %123, align 4, !tbaa !9
  %2246 = add nsw i32 %2245, 1
  store i32 %2246, ptr %123, align 4, !tbaa !9
  br label %2205, !llvm.loop !52

2247:                                             ; preds = %2205
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %123) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %122) #6
  br label %2249

2248:                                             ; preds = %2047, %187
  store i32 0, ptr %11, align 4
  br label %2249

2249:                                             ; preds = %2248, %2247, %2123, %2049, %2047, %1934, %1820, %1771, %1725, %1679, %1562, %1515, %1462, %1423, %1354, %1285, %1200, %1161, %1160, %1102, %1069, %1035, %954, %868, %787, %706, %625, %539, %470, %465, %416, %346, %340, %286, %264, %263, %247, %214, %197, %178
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  %2250 = load i32, ptr %11, align 4
  switch i32 %2250, label %2252 [
    i32 0, label %2251
    i32 4, label %147
    i32 2, label %128
  ]

2251:                                             ; preds = %2249
  br label %147

2252:                                             ; preds = %2249
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #6
  ret void
}

; Function Attrs: nounwind uwtable
declare hidden void @traceexec(ptr noundef, ptr noundef) #0

declare hidden void @luaC_barrierf(ptr noundef, ptr noundef, ptr noundef) #3

declare hidden ptr @luaH_new(ptr noundef, i32 noundef, i32 noundef) #3

declare hidden i32 @luaO_fb2int(i32 noundef) #3

; Function Attrs: nounwind uwtable
declare hidden void @Arith(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) #0

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.floor.f64(double) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #4

; Function Attrs: nounwind
declare double @pow(double noundef, double noundef) #5

declare hidden i32 @luaH_getn(ptr noundef) #3

; Function Attrs: nounwind uwtable
declare hidden i32 @lessequal(ptr noundef, ptr noundef, ptr noundef) #0

declare hidden i32 @luaD_precall(ptr noundef, ptr noundef, i32 noundef) #3

declare hidden void @luaF_close(ptr noundef, ptr noundef) #3

declare hidden i32 @luaD_poscall(ptr noundef, ptr noundef) #3

declare hidden void @luaD_call(ptr noundef, ptr noundef, i32 noundef) #3

declare hidden void @luaH_resizearray(ptr noundef, ptr noundef, i32 noundef) #3

declare hidden ptr @luaH_setnum(ptr noundef, ptr noundef, i32 noundef) #3

declare hidden ptr @luaF_newLclosure(ptr noundef, i32 noundef, ptr noundef) #3

declare hidden ptr @luaF_findupval(ptr noundef, ptr noundef) #3

declare hidden void @luaD_growstack(ptr noundef, i32 noundef) #3

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !6, i64 48}
!12 = !{!"lua_State", !6, i64 0, !7, i64 8, !7, i64 9, !7, i64 10, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !10, i64 88, !10, i64 92, !13, i64 96, !13, i64 98, !7, i64 100, !7, i64 101, !10, i64 104, !10, i64 108, !6, i64 112, !14, i64 120, !14, i64 136, !6, i64 152, !6, i64 160, !6, i64 168, !15, i64 176, !7, i64 184}
!13 = !{!"short", !7, i64 0}
!14 = !{!"lua_TValue", !7, i64 0, !10, i64 8}
!15 = !{!"long", !7, i64 0}
!16 = !{!12, !6, i64 40}
!17 = !{!18, !6, i64 8}
!18 = !{!"CallInfo", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !10, i64 32, !10, i64 36}
!19 = !{!7, !7, i64 0}
!20 = !{!12, !6, i64 24}
!21 = !{!22, !6, i64 32}
!22 = !{!"LClosure", !6, i64 0, !7, i64 8, !7, i64 9, !7, i64 10, !7, i64 11, !6, i64 16, !6, i64 24, !6, i64 32, !7, i64 40}
!23 = !{!24, !6, i64 16}
!24 = !{!"Proto", !6, i64 0, !7, i64 8, !7, i64 9, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !6, i64 104, !7, i64 112, !7, i64 113, !7, i64 114, !7, i64 115}
!25 = !{!12, !7, i64 100}
!26 = !{!12, !10, i64 108}
!27 = !{!12, !7, i64 10}
!28 = !{i64 0, i64 8, !19}
!29 = !{!14, !10, i64 8}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = !{!33, !6, i64 16}
!33 = !{!"UpVal", !6, i64 0, !7, i64 8, !7, i64 9, !6, i64 16, !7, i64 24}
!34 = !{!22, !6, i64 24}
!35 = !{!36, !36, i64 0}
!36 = !{!"double", !7, i64 0}
!37 = !{!12, !6, i64 16}
!38 = !{!18, !6, i64 16}
!39 = !{!12, !6, i64 152}
!40 = !{!18, !6, i64 0}
!41 = distinct !{!41, !31}
!42 = !{!18, !6, i64 24}
!43 = !{!18, !10, i64 36}
!44 = !{!45, !10, i64 56}
!45 = !{!"Table", !6, i64 0, !7, i64 8, !7, i64 9, !7, i64 10, !7, i64 11, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !10, i64 56}
!46 = distinct !{!46, !31}
!47 = !{!24, !6, i64 32}
!48 = !{!24, !7, i64 112}
!49 = distinct !{!49, !31}
!50 = !{!24, !7, i64 113}
!51 = !{!12, !6, i64 56}
!52 = distinct !{!52, !31}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.lua_TValue = type { %union.Value, i32 }
%union.Value = type { ptr }

@luaO_nilobject_ = external hidden constant %struct.lua_TValue, align 8
@.str.5 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [28 x i8], align 1

; Function Attrs: nounwind uwtable
declare hidden ptr @luaV_tonumber(ptr noundef, ptr noundef) local_unnamed_addr #0

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

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

; Function Attrs: nounwind uwtable
declare hidden void @luaV_gettable(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare hidden void @luaG_typeerror(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare hidden void @luaG_runerror(ptr noundef, ptr noundef, ...) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden void @luaV_settable(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare hidden void @luaC_barrierback(ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden i32 @luaV_lessthan(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare hidden i32 @luaV_equalval(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare hidden void @luaV_concat(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare hidden i32 @call_binTM(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define hidden void @luaV_execute(ptr noundef %0, i32 noundef %1) local_unnamed_addr #0 {
  %3 = alloca %struct.lua_TValue, align 8
  %4 = alloca %struct.lua_TValue, align 8
  %5 = getelementptr inbounds i8, ptr %0, i64 48
  %6 = getelementptr inbounds i8, ptr %0, i64 40
  %7 = getelementptr inbounds i8, ptr %0, i64 24
  %8 = getelementptr inbounds i8, ptr %0, i64 100
  %9 = getelementptr inbounds i8, ptr %0, i64 108
  %10 = getelementptr inbounds i8, ptr %0, i64 10
  %11 = getelementptr inbounds i8, ptr %0, i64 56
  %12 = getelementptr inbounds i8, ptr %0, i64 16
  %13 = getelementptr inbounds i8, ptr %0, i64 152
  %14 = getelementptr inbounds i8, ptr %4, i64 8
  %15 = getelementptr inbounds i8, ptr %3, i64 8
  br label %.loopexit.outer

.loopexit.outer:                                  ; preds = %.loopexit.outer.backedge, %2
  %.0.ph = phi i32 [ %1, %2 ], [ %.0.ph.be, %.loopexit.outer.backedge ]
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.outer, %._crit_edge848
  %16 = load ptr, ptr %5, align 8, !tbaa !5
  %17 = load ptr, ptr %6, align 8, !tbaa !14
  %18 = getelementptr inbounds i8, ptr %17, i64 8
  %19 = load ptr, ptr %18, align 8, !tbaa !15
  %20 = load ptr, ptr %19, align 8, !tbaa !17
  %21 = load ptr, ptr %7, align 8, !tbaa !18
  %22 = getelementptr inbounds i8, ptr %20, i64 32
  %23 = load ptr, ptr %22, align 8, !tbaa !19
  %24 = getelementptr inbounds i8, ptr %23, i64 16
  %25 = load ptr, ptr %24, align 8, !tbaa !21
  %26 = getelementptr inbounds i8, ptr %20, i64 24
  %27 = getelementptr inbounds i8, ptr %20, i64 40
  br label %.backedge

.backedge:                                        ; preds = %.backedge.backedge, %.loopexit
  %.0710 = phi ptr [ %16, %.loopexit ], [ %.0710.be, %.backedge.backedge ]
  %.0706 = phi ptr [ %21, %.loopexit ], [ %.0706.be, %.backedge.backedge ]
  %28 = getelementptr inbounds i8, ptr %.0710, i64 4
  %29 = load i32, ptr %.0710, align 4, !tbaa !23
  %30 = load i8, ptr %8, align 4, !tbaa !24
  %31 = and i8 %30, 12
  %.not = icmp eq i8 %31, 0
  br i1 %.not, label %43, label %32

32:                                               ; preds = %.backedge
  %33 = load i32, ptr %9, align 4, !tbaa !25
  %34 = add nsw i32 %33, -1
  store i32 %34, ptr %9, align 4, !tbaa !25
  %35 = icmp ne i32 %34, 0
  %36 = and i8 %30, 4
  %.not753 = icmp eq i8 %36, 0
  %or.cond = and i1 %.not753, %35
  br i1 %or.cond, label %43, label %37

37:                                               ; preds = %32
  call void @traceexec(ptr noundef nonnull %0, ptr noundef nonnull %28)
  %38 = load i8, ptr %10, align 2, !tbaa !26
  %39 = icmp eq i8 %38, 1
  br i1 %39, label %40, label %41

40:                                               ; preds = %37
  store ptr %.0710, ptr %5, align 8, !tbaa !5
  br label %.critedge.thread

41:                                               ; preds = %37
  %42 = load ptr, ptr %7, align 8, !tbaa !18
  br label %43

43:                                               ; preds = %32, %41, %.backedge
  %.1707 = phi ptr [ %42, %41 ], [ %.0706, %.backedge ], [ %.0706, %32 ]
  %44 = lshr i32 %29, 6
  %45 = and i32 %44, 255
  %46 = zext nneg i32 %45 to i64
  %47 = getelementptr inbounds %struct.lua_TValue, ptr %.1707, i64 %46
  %48 = and i32 %29, 63
  switch i32 %48, label %.backedge.backedge [
    i32 0, label %49
    i32 1, label %57
    i32 2, label %65
    i32 3, label %70
    i32 4, label %77
    i32 5, label %88
    i32 6, label %94
    i32 7, label %104
    i32 8, label %110
    i32 9, label %132
    i32 10, label %146
    i32 11, label %155
    i32 12, label %170
    i32 13, label %197
    i32 14, label %224
    i32 15, label %251
    i32 16, label %278
    i32 17, label %308
    i32 18, label %335
    i32 19, label %348
    i32 20, label %361
    i32 21, label %383
    i32 22, label %396
    i32 23, label %401
    i32 24, label %435
    i32 25, label %459
    i32 26, label %483
    i32 27, label %502
    i32 28, label %526
    i32 29, label %545
    i32 30, label %591
    i32 31, label %609
    i32 32, label %629
    i32 33, label %658
    i32 34, label %699
    i32 35, label %756
    i32 36, label %757
    i32 37, label %789
  ]

49:                                               ; preds = %43
  %50 = lshr i32 %29, 23
  %51 = zext nneg i32 %50 to i64
  %52 = getelementptr inbounds %struct.lua_TValue, ptr %.1707, i64 %51
  %53 = load i64, ptr %52, align 8, !tbaa !17
  store i64 %53, ptr %47, align 8, !tbaa !17
  %54 = getelementptr inbounds i8, ptr %52, i64 8
  %55 = load i32, ptr %54, align 8, !tbaa !27
  %56 = getelementptr inbounds i8, ptr %47, i64 8
  store i32 %55, ptr %56, align 8, !tbaa !27
  br label %.backedge.backedge

57:                                               ; preds = %43
  %58 = lshr i32 %29, 14
  %59 = zext nneg i32 %58 to i64
  %60 = getelementptr inbounds %struct.lua_TValue, ptr %25, i64 %59
  %61 = load i64, ptr %60, align 8, !tbaa !17
  store i64 %61, ptr %47, align 8, !tbaa !17
  %62 = getelementptr inbounds i8, ptr %60, i64 8
  %63 = load i32, ptr %62, align 8, !tbaa !27
  %64 = getelementptr inbounds i8, ptr %47, i64 8
  store i32 %63, ptr %64, align 8, !tbaa !27
  br label %.backedge.backedge

65:                                               ; preds = %43
  %66 = lshr i32 %29, 23
  store i32 %66, ptr %47, align 8, !tbaa !17
  %67 = getelementptr inbounds i8, ptr %47, i64 8
  store i32 1, ptr %67, align 8, !tbaa !27
  %68 = and i32 %29, 8372224
  %.not796 = icmp eq i32 %68, 0
  %69 = getelementptr inbounds i8, ptr %.0710, i64 8
  %spec.select = select i1 %.not796, ptr %28, ptr %69
  br label %.backedge.backedge

70:                                               ; preds = %43
  %71 = lshr i32 %29, 23
  %72 = zext nneg i32 %71 to i64
  %73 = getelementptr inbounds %struct.lua_TValue, ptr %.1707, i64 %72
  br label %74

74:                                               ; preds = %74, %70
  %.0732 = phi ptr [ %73, %70 ], [ %75, %74 ]
  %75 = getelementptr inbounds i8, ptr %.0732, i64 -16
  %76 = getelementptr inbounds i8, ptr %.0732, i64 8
  store i32 0, ptr %76, align 8, !tbaa !27
  %.not795 = icmp ult ptr %75, %47
  br i1 %.not795, label %.backedge.backedge, label %74, !llvm.loop !28

77:                                               ; preds = %43
  %78 = lshr i32 %29, 23
  %79 = zext nneg i32 %78 to i64
  %80 = getelementptr inbounds [1 x ptr], ptr %27, i64 0, i64 %79
  %81 = load ptr, ptr %80, align 8, !tbaa !30
  %82 = getelementptr inbounds i8, ptr %81, i64 16
  %83 = load ptr, ptr %82, align 8, !tbaa !31
  %84 = load i64, ptr %83, align 8, !tbaa !17
  store i64 %84, ptr %47, align 8, !tbaa !17
  %85 = getelementptr inbounds i8, ptr %83, i64 8
  %86 = load i32, ptr %85, align 8, !tbaa !27
  %87 = getelementptr inbounds i8, ptr %47, i64 8
  store i32 %86, ptr %87, align 8, !tbaa !27
  br label %.backedge.backedge

88:                                               ; preds = %43
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #5
  %89 = lshr i32 %29, 14
  %90 = zext nneg i32 %89 to i64
  %91 = getelementptr inbounds %struct.lua_TValue, ptr %25, i64 %90
  %92 = load ptr, ptr %26, align 8, !tbaa !33
  store ptr %92, ptr %3, align 8, !tbaa !17
  store i32 5, ptr %15, align 8, !tbaa !27
  store ptr %28, ptr %5, align 8, !tbaa !5
  call void @luaV_gettable(ptr noundef nonnull %0, ptr noundef nonnull %3, ptr noundef %91, ptr noundef %47)
  %93 = load ptr, ptr %7, align 8, !tbaa !18
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #5
  br label %.backedge.backedge

94:                                               ; preds = %43
  store ptr %28, ptr %5, align 8, !tbaa !5
  %95 = lshr i32 %29, 23
  %96 = zext nneg i32 %95 to i64
  %97 = getelementptr inbounds %struct.lua_TValue, ptr %.1707, i64 %96
  %98 = lshr i32 %29, 14
  %99 = and i32 %29, 4194304
  %.not794 = icmp eq i32 %99, 0
  %100 = and i32 %98, 255
  %101 = zext nneg i32 %100 to i64
  %.v824 = select i1 %.not794, ptr %.1707, ptr %25
  %102 = getelementptr inbounds %struct.lua_TValue, ptr %.v824, i64 %101
  call void @luaV_gettable(ptr noundef nonnull %0, ptr noundef %97, ptr noundef %102, ptr noundef %47)
  %103 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

104:                                              ; preds = %43
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #5
  %105 = load ptr, ptr %26, align 8, !tbaa !33
  store ptr %105, ptr %4, align 8, !tbaa !17
  store i32 5, ptr %14, align 8, !tbaa !27
  store ptr %28, ptr %5, align 8, !tbaa !5
  %106 = lshr i32 %29, 14
  %107 = zext nneg i32 %106 to i64
  %108 = getelementptr inbounds %struct.lua_TValue, ptr %25, i64 %107
  call void @luaV_settable(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef %108, ptr noundef %47)
  %109 = load ptr, ptr %7, align 8, !tbaa !18
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #5
  br label %.backedge.backedge

110:                                              ; preds = %43
  %111 = lshr i32 %29, 23
  %112 = zext nneg i32 %111 to i64
  %113 = getelementptr inbounds [1 x ptr], ptr %27, i64 0, i64 %112
  %114 = load ptr, ptr %113, align 8, !tbaa !30
  %115 = getelementptr inbounds i8, ptr %114, i64 16
  %116 = load ptr, ptr %115, align 8, !tbaa !31
  %117 = load i64, ptr %47, align 8, !tbaa !17
  store i64 %117, ptr %116, align 8, !tbaa !17
  %118 = getelementptr inbounds i8, ptr %47, i64 8
  %119 = load i32, ptr %118, align 8, !tbaa !27
  %120 = getelementptr inbounds i8, ptr %116, i64 8
  store i32 %119, ptr %120, align 8, !tbaa !27
  %121 = icmp sgt i32 %119, 3
  br i1 %121, label %122, label %.backedge.backedge

122:                                              ; preds = %110
  %123 = load ptr, ptr %47, align 8, !tbaa !17
  %124 = getelementptr inbounds i8, ptr %123, i64 9
  %125 = load i8, ptr %124, align 1, !tbaa !17
  %126 = and i8 %125, 3
  %.not792 = icmp eq i8 %126, 0
  br i1 %.not792, label %.backedge.backedge, label %127

127:                                              ; preds = %122
  %128 = getelementptr inbounds i8, ptr %114, i64 9
  %129 = load i8, ptr %128, align 1, !tbaa !17
  %130 = and i8 %129, 4
  %.not793 = icmp eq i8 %130, 0
  br i1 %.not793, label %.backedge.backedge, label %131

131:                                              ; preds = %127
  call void @luaC_barrierf(ptr noundef nonnull %0, ptr noundef nonnull %114, ptr noundef nonnull %123) #5
  br label %.backedge.backedge

132:                                              ; preds = %43
  store ptr %28, ptr %5, align 8, !tbaa !5
  %133 = lshr i32 %29, 23
  %134 = and i32 %133, 255
  %135 = zext nneg i32 %134 to i64
  %136 = getelementptr inbounds %struct.lua_TValue, ptr %25, i64 %135
  %137 = zext nneg i32 %133 to i64
  %138 = getelementptr inbounds %struct.lua_TValue, ptr %.1707, i64 %137
  %.not790822 = icmp slt i32 %29, 0
  %139 = select i1 %.not790822, ptr %136, ptr %138
  %140 = lshr i32 %29, 14
  %141 = and i32 %29, 4194304
  %.not791 = icmp eq i32 %141, 0
  %142 = and i32 %140, 255
  %143 = zext nneg i32 %142 to i64
  %.v823 = select i1 %.not791, ptr %.1707, ptr %25
  %144 = getelementptr inbounds %struct.lua_TValue, ptr %.v823, i64 %143
  call void @luaV_settable(ptr noundef nonnull %0, ptr noundef %47, ptr noundef %139, ptr noundef %144)
  %145 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

146:                                              ; preds = %43
  %147 = lshr i32 %29, 23
  %148 = lshr i32 %29, 14
  %149 = and i32 %148, 511
  %150 = call i32 @luaO_fb2int(i32 noundef %147) #5
  %151 = call i32 @luaO_fb2int(i32 noundef %149) #5
  %152 = call ptr @luaH_new(ptr noundef nonnull %0, i32 noundef %150, i32 noundef %151) #5
  store ptr %152, ptr %47, align 8, !tbaa !17
  %153 = getelementptr inbounds i8, ptr %47, i64 8
  store i32 5, ptr %153, align 8, !tbaa !27
  store ptr %28, ptr %5, align 8, !tbaa !5
  %154 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

155:                                              ; preds = %43
  %156 = lshr i32 %29, 23
  %157 = zext nneg i32 %156 to i64
  %158 = getelementptr inbounds %struct.lua_TValue, ptr %.1707, i64 %157
  %159 = getelementptr inbounds i8, ptr %47, i64 16
  %160 = load i64, ptr %158, align 8, !tbaa !17
  store i64 %160, ptr %159, align 8, !tbaa !17
  %161 = getelementptr inbounds i8, ptr %158, i64 8
  %162 = load i32, ptr %161, align 8, !tbaa !27
  %163 = getelementptr inbounds i8, ptr %47, i64 24
  store i32 %162, ptr %163, align 8, !tbaa !27
  store ptr %28, ptr %5, align 8, !tbaa !5
  %164 = lshr i32 %29, 14
  %165 = and i32 %29, 4194304
  %.not789 = icmp eq i32 %165, 0
  %166 = and i32 %164, 255
  %167 = zext nneg i32 %166 to i64
  %.v821 = select i1 %.not789, ptr %.1707, ptr %25
  %168 = getelementptr inbounds %struct.lua_TValue, ptr %.v821, i64 %167
  call void @luaV_gettable(ptr noundef nonnull %0, ptr noundef nonnull %158, ptr noundef %168, ptr noundef %47)
  %169 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

170:                                              ; preds = %43
  %171 = lshr i32 %29, 23
  %172 = and i32 %171, 255
  %173 = zext nneg i32 %172 to i64
  %174 = getelementptr inbounds %struct.lua_TValue, ptr %25, i64 %173
  %175 = zext nneg i32 %171 to i64
  %176 = getelementptr inbounds %struct.lua_TValue, ptr %.1707, i64 %175
  %.not787819 = icmp slt i32 %29, 0
  %177 = select i1 %.not787819, ptr %174, ptr %176
  %178 = lshr i32 %29, 14
  %179 = and i32 %29, 4194304
  %.not788 = icmp eq i32 %179, 0
  %180 = and i32 %178, 255
  %181 = zext nneg i32 %180 to i64
  %.v820 = select i1 %.not788, ptr %.1707, ptr %25
  %182 = getelementptr inbounds %struct.lua_TValue, ptr %.v820, i64 %181
  %183 = getelementptr inbounds i8, ptr %177, i64 8
  %184 = load i32, ptr %183, align 8, !tbaa !27
  %185 = icmp eq i32 %184, 3
  br i1 %185, label %186, label %195

186:                                              ; preds = %170
  %187 = getelementptr inbounds i8, ptr %182, i64 8
  %188 = load i32, ptr %187, align 8, !tbaa !27
  %189 = icmp eq i32 %188, 3
  br i1 %189, label %190, label %195

190:                                              ; preds = %186
  %191 = load double, ptr %177, align 8, !tbaa !17
  %192 = load double, ptr %182, align 8, !tbaa !17
  %193 = fadd double %191, %192
  store double %193, ptr %47, align 8, !tbaa !17
  %194 = getelementptr inbounds i8, ptr %47, i64 8
  store i32 3, ptr %194, align 8, !tbaa !27
  br label %.backedge.backedge

195:                                              ; preds = %186, %170
  store ptr %28, ptr %5, align 8, !tbaa !5
  call void @Arith(ptr noundef nonnull %0, ptr noundef %47, ptr noundef nonnull %177, ptr noundef %182, i32 noundef 5)
  %196 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

197:                                              ; preds = %43
  %198 = lshr i32 %29, 23
  %199 = and i32 %198, 255
  %200 = zext nneg i32 %199 to i64
  %201 = getelementptr inbounds %struct.lua_TValue, ptr %25, i64 %200
  %202 = zext nneg i32 %198 to i64
  %203 = getelementptr inbounds %struct.lua_TValue, ptr %.1707, i64 %202
  %.not785817 = icmp slt i32 %29, 0
  %204 = select i1 %.not785817, ptr %201, ptr %203
  %205 = lshr i32 %29, 14
  %206 = and i32 %29, 4194304
  %.not786 = icmp eq i32 %206, 0
  %207 = and i32 %205, 255
  %208 = zext nneg i32 %207 to i64
  %.v818 = select i1 %.not786, ptr %.1707, ptr %25
  %209 = getelementptr inbounds %struct.lua_TValue, ptr %.v818, i64 %208
  %210 = getelementptr inbounds i8, ptr %204, i64 8
  %211 = load i32, ptr %210, align 8, !tbaa !27
  %212 = icmp eq i32 %211, 3
  br i1 %212, label %213, label %222

213:                                              ; preds = %197
  %214 = getelementptr inbounds i8, ptr %209, i64 8
  %215 = load i32, ptr %214, align 8, !tbaa !27
  %216 = icmp eq i32 %215, 3
  br i1 %216, label %217, label %222

217:                                              ; preds = %213
  %218 = load double, ptr %204, align 8, !tbaa !17
  %219 = load double, ptr %209, align 8, !tbaa !17
  %220 = fsub double %218, %219
  store double %220, ptr %47, align 8, !tbaa !17
  %221 = getelementptr inbounds i8, ptr %47, i64 8
  store i32 3, ptr %221, align 8, !tbaa !27
  br label %.backedge.backedge

222:                                              ; preds = %213, %197
  store ptr %28, ptr %5, align 8, !tbaa !5
  call void @Arith(ptr noundef nonnull %0, ptr noundef %47, ptr noundef nonnull %204, ptr noundef %209, i32 noundef 6)
  %223 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

224:                                              ; preds = %43
  %225 = lshr i32 %29, 23
  %226 = and i32 %225, 255
  %227 = zext nneg i32 %226 to i64
  %228 = getelementptr inbounds %struct.lua_TValue, ptr %25, i64 %227
  %229 = zext nneg i32 %225 to i64
  %230 = getelementptr inbounds %struct.lua_TValue, ptr %.1707, i64 %229
  %.not783815 = icmp slt i32 %29, 0
  %231 = select i1 %.not783815, ptr %228, ptr %230
  %232 = lshr i32 %29, 14
  %233 = and i32 %29, 4194304
  %.not784 = icmp eq i32 %233, 0
  %234 = and i32 %232, 255
  %235 = zext nneg i32 %234 to i64
  %.v816 = select i1 %.not784, ptr %.1707, ptr %25
  %236 = getelementptr inbounds %struct.lua_TValue, ptr %.v816, i64 %235
  %237 = getelementptr inbounds i8, ptr %231, i64 8
  %238 = load i32, ptr %237, align 8, !tbaa !27
  %239 = icmp eq i32 %238, 3
  br i1 %239, label %240, label %249

240:                                              ; preds = %224
  %241 = getelementptr inbounds i8, ptr %236, i64 8
  %242 = load i32, ptr %241, align 8, !tbaa !27
  %243 = icmp eq i32 %242, 3
  br i1 %243, label %244, label %249

244:                                              ; preds = %240
  %245 = load double, ptr %231, align 8, !tbaa !17
  %246 = load double, ptr %236, align 8, !tbaa !17
  %247 = fmul double %245, %246
  store double %247, ptr %47, align 8, !tbaa !17
  %248 = getelementptr inbounds i8, ptr %47, i64 8
  store i32 3, ptr %248, align 8, !tbaa !27
  br label %.backedge.backedge

249:                                              ; preds = %240, %224
  store ptr %28, ptr %5, align 8, !tbaa !5
  call void @Arith(ptr noundef nonnull %0, ptr noundef %47, ptr noundef nonnull %231, ptr noundef %236, i32 noundef 7)
  %250 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

251:                                              ; preds = %43
  %252 = lshr i32 %29, 23
  %253 = and i32 %252, 255
  %254 = zext nneg i32 %253 to i64
  %255 = getelementptr inbounds %struct.lua_TValue, ptr %25, i64 %254
  %256 = zext nneg i32 %252 to i64
  %257 = getelementptr inbounds %struct.lua_TValue, ptr %.1707, i64 %256
  %.not781813 = icmp slt i32 %29, 0
  %258 = select i1 %.not781813, ptr %255, ptr %257
  %259 = lshr i32 %29, 14
  %260 = and i32 %29, 4194304
  %.not782 = icmp eq i32 %260, 0
  %261 = and i32 %259, 255
  %262 = zext nneg i32 %261 to i64
  %.v814 = select i1 %.not782, ptr %.1707, ptr %25
  %263 = getelementptr inbounds %struct.lua_TValue, ptr %.v814, i64 %262
  %264 = getelementptr inbounds i8, ptr %258, i64 8
  %265 = load i32, ptr %264, align 8, !tbaa !27
  %266 = icmp eq i32 %265, 3
  br i1 %266, label %267, label %276

267:                                              ; preds = %251
  %268 = getelementptr inbounds i8, ptr %263, i64 8
  %269 = load i32, ptr %268, align 8, !tbaa !27
  %270 = icmp eq i32 %269, 3
  br i1 %270, label %271, label %276

271:                                              ; preds = %267
  %272 = load double, ptr %258, align 8, !tbaa !17
  %273 = load double, ptr %263, align 8, !tbaa !17
  %274 = fdiv double %272, %273
  store double %274, ptr %47, align 8, !tbaa !17
  %275 = getelementptr inbounds i8, ptr %47, i64 8
  store i32 3, ptr %275, align 8, !tbaa !27
  br label %.backedge.backedge

276:                                              ; preds = %267, %251
  store ptr %28, ptr %5, align 8, !tbaa !5
  call void @Arith(ptr noundef nonnull %0, ptr noundef %47, ptr noundef nonnull %258, ptr noundef %263, i32 noundef 8)
  %277 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

278:                                              ; preds = %43
  %279 = lshr i32 %29, 23
  %280 = and i32 %279, 255
  %281 = zext nneg i32 %280 to i64
  %282 = getelementptr inbounds %struct.lua_TValue, ptr %25, i64 %281
  %283 = zext nneg i32 %279 to i64
  %284 = getelementptr inbounds %struct.lua_TValue, ptr %.1707, i64 %283
  %.not779811 = icmp slt i32 %29, 0
  %285 = select i1 %.not779811, ptr %282, ptr %284
  %286 = lshr i32 %29, 14
  %287 = and i32 %29, 4194304
  %.not780 = icmp eq i32 %287, 0
  %288 = and i32 %286, 255
  %289 = zext nneg i32 %288 to i64
  %.v812 = select i1 %.not780, ptr %.1707, ptr %25
  %290 = getelementptr inbounds %struct.lua_TValue, ptr %.v812, i64 %289
  %291 = getelementptr inbounds i8, ptr %285, i64 8
  %292 = load i32, ptr %291, align 8, !tbaa !27
  %293 = icmp eq i32 %292, 3
  br i1 %293, label %294, label %306

294:                                              ; preds = %278
  %295 = getelementptr inbounds i8, ptr %290, i64 8
  %296 = load i32, ptr %295, align 8, !tbaa !27
  %297 = icmp eq i32 %296, 3
  br i1 %297, label %298, label %306

298:                                              ; preds = %294
  %299 = load double, ptr %285, align 8, !tbaa !17
  %300 = load double, ptr %290, align 8, !tbaa !17
  %301 = fdiv double %299, %300
  %302 = call double @llvm.floor.f64(double %301)
  %303 = fneg double %302
  %304 = call double @llvm.fmuladd.f64(double %303, double %300, double %299)
  store double %304, ptr %47, align 8, !tbaa !17
  %305 = getelementptr inbounds i8, ptr %47, i64 8
  store i32 3, ptr %305, align 8, !tbaa !27
  br label %.backedge.backedge

306:                                              ; preds = %294, %278
  store ptr %28, ptr %5, align 8, !tbaa !5
  call void @Arith(ptr noundef nonnull %0, ptr noundef %47, ptr noundef nonnull %285, ptr noundef %290, i32 noundef 9)
  %307 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

308:                                              ; preds = %43
  %309 = lshr i32 %29, 23
  %310 = and i32 %309, 255
  %311 = zext nneg i32 %310 to i64
  %312 = getelementptr inbounds %struct.lua_TValue, ptr %25, i64 %311
  %313 = zext nneg i32 %309 to i64
  %314 = getelementptr inbounds %struct.lua_TValue, ptr %.1707, i64 %313
  %.not777809 = icmp slt i32 %29, 0
  %315 = select i1 %.not777809, ptr %312, ptr %314
  %316 = lshr i32 %29, 14
  %317 = and i32 %29, 4194304
  %.not778 = icmp eq i32 %317, 0
  %318 = and i32 %316, 255
  %319 = zext nneg i32 %318 to i64
  %.v810 = select i1 %.not778, ptr %.1707, ptr %25
  %320 = getelementptr inbounds %struct.lua_TValue, ptr %.v810, i64 %319
  %321 = getelementptr inbounds i8, ptr %315, i64 8
  %322 = load i32, ptr %321, align 8, !tbaa !27
  %323 = icmp eq i32 %322, 3
  br i1 %323, label %324, label %333

324:                                              ; preds = %308
  %325 = getelementptr inbounds i8, ptr %320, i64 8
  %326 = load i32, ptr %325, align 8, !tbaa !27
  %327 = icmp eq i32 %326, 3
  br i1 %327, label %328, label %333

328:                                              ; preds = %324
  %329 = load double, ptr %315, align 8, !tbaa !17
  %330 = load double, ptr %320, align 8, !tbaa !17
  %331 = call double @pow(double noundef %329, double noundef %330) #5
  store double %331, ptr %47, align 8, !tbaa !17
  %332 = getelementptr inbounds i8, ptr %47, i64 8
  store i32 3, ptr %332, align 8, !tbaa !27
  br label %.backedge.backedge

333:                                              ; preds = %324, %308
  store ptr %28, ptr %5, align 8, !tbaa !5
  call void @Arith(ptr noundef nonnull %0, ptr noundef %47, ptr noundef nonnull %315, ptr noundef %320, i32 noundef 10)
  %334 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

335:                                              ; preds = %43
  %336 = lshr i32 %29, 23
  %337 = zext nneg i32 %336 to i64
  %338 = getelementptr inbounds %struct.lua_TValue, ptr %.1707, i64 %337
  %339 = getelementptr inbounds i8, ptr %338, i64 8
  %340 = load i32, ptr %339, align 8, !tbaa !27
  %341 = icmp eq i32 %340, 3
  br i1 %341, label %342, label %346

342:                                              ; preds = %335
  %343 = load double, ptr %338, align 8, !tbaa !17
  %344 = fneg double %343
  store double %344, ptr %47, align 8, !tbaa !17
  %345 = getelementptr inbounds i8, ptr %47, i64 8
  store i32 3, ptr %345, align 8, !tbaa !27
  br label %.backedge.backedge

346:                                              ; preds = %335
  store ptr %28, ptr %5, align 8, !tbaa !5
  call void @Arith(ptr noundef nonnull %0, ptr noundef nonnull %47, ptr noundef nonnull %338, ptr noundef nonnull %338, i32 noundef 11)
  %347 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

348:                                              ; preds = %43
  %349 = lshr i32 %29, 23
  %350 = zext nneg i32 %349 to i64
  %351 = getelementptr inbounds %struct.lua_TValue, ptr %.1707, i64 %350
  %352 = getelementptr inbounds i8, ptr %351, i64 8
  %353 = load i32, ptr %352, align 8, !tbaa !27
  switch i32 %353, label %.fold.split [
    i32 0, label %357
    i32 1, label %354
  ]

354:                                              ; preds = %348
  %355 = load i32, ptr %351, align 8, !tbaa !17
  %356 = icmp eq i32 %355, 0
  br label %357

.fold.split:                                      ; preds = %348
  br label %357

357:                                              ; preds = %348, %.fold.split, %354
  %358 = phi i1 [ true, %348 ], [ %356, %354 ], [ false, %.fold.split ]
  %359 = zext i1 %358 to i32
  store i32 %359, ptr %47, align 8, !tbaa !17
  %360 = getelementptr inbounds i8, ptr %47, i64 8
  store i32 1, ptr %360, align 8, !tbaa !27
  br label %.backedge.backedge

361:                                              ; preds = %43
  %362 = lshr i32 %29, 23
  %363 = zext nneg i32 %362 to i64
  %364 = getelementptr inbounds %struct.lua_TValue, ptr %.1707, i64 %363
  %365 = getelementptr inbounds i8, ptr %364, i64 8
  %366 = load i32, ptr %365, align 8, !tbaa !27
  switch i32 %366, label %378 [
    i32 5, label %367
    i32 4, label %372
  ]

367:                                              ; preds = %361
  %368 = load ptr, ptr %364, align 8, !tbaa !17
  %369 = call i32 @luaH_getn(ptr noundef %368) #5
  %370 = sitofp i32 %369 to double
  store double %370, ptr %47, align 8, !tbaa !17
  %371 = getelementptr inbounds i8, ptr %47, i64 8
  store i32 3, ptr %371, align 8, !tbaa !27
  br label %.backedge.backedge

372:                                              ; preds = %361
  %373 = load ptr, ptr %364, align 8, !tbaa !17
  %374 = getelementptr inbounds i8, ptr %373, i64 16
  %375 = load i64, ptr %374, align 8, !tbaa !17
  %376 = uitofp i64 %375 to double
  store double %376, ptr %47, align 8, !tbaa !17
  %377 = getelementptr inbounds i8, ptr %47, i64 8
  store i32 3, ptr %377, align 8, !tbaa !27
  br label %.backedge.backedge

378:                                              ; preds = %361
  store ptr %28, ptr %5, align 8, !tbaa !5
  %379 = call i32 @call_binTM(ptr noundef nonnull %0, ptr noundef nonnull %364, ptr noundef nonnull @luaO_nilobject_, ptr noundef nonnull %47, i32 noundef 12)
  %.not776 = icmp eq i32 %379, 0
  br i1 %.not776, label %380, label %381

380:                                              ; preds = %378
  call void @luaG_typeerror(ptr noundef nonnull %0, ptr noundef nonnull %364, ptr noundef nonnull @.str.5) #5
  br label %381

381:                                              ; preds = %380, %378
  %382 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

383:                                              ; preds = %43
  %384 = lshr i32 %29, 23
  %385 = lshr i32 %29, 14
  %386 = and i32 %385, 511
  store ptr %28, ptr %5, align 8, !tbaa !5
  %reass.sub = sub nsw i32 %386, %384
  %387 = add nsw i32 %reass.sub, 1
  call void @luaV_concat(ptr noundef nonnull %0, i32 noundef %387, i32 noundef %386)
  %388 = load ptr, ptr %7, align 8, !tbaa !18
  %389 = zext nneg i32 %384 to i64
  %390 = getelementptr inbounds %struct.lua_TValue, ptr %388, i64 %389
  %391 = getelementptr inbounds %struct.lua_TValue, ptr %388, i64 %46
  %392 = load i64, ptr %390, align 8, !tbaa !17
  store i64 %392, ptr %391, align 8, !tbaa !17
  %393 = getelementptr inbounds i8, ptr %390, i64 8
  %394 = load i32, ptr %393, align 8, !tbaa !27
  %395 = getelementptr inbounds i8, ptr %391, i64 8
  store i32 %394, ptr %395, align 8, !tbaa !27
  br label %.backedge.backedge

396:                                              ; preds = %43
  %397 = lshr i32 %29, 14
  %398 = zext nneg i32 %397 to i64
  %399 = getelementptr i32, ptr %28, i64 %398
  %400 = getelementptr i8, ptr %399, i64 -524284
  br label %.backedge.backedge

401:                                              ; preds = %43
  %402 = lshr i32 %29, 23
  %403 = and i32 %402, 255
  %404 = zext nneg i32 %403 to i64
  %405 = getelementptr inbounds %struct.lua_TValue, ptr %25, i64 %404
  %406 = zext nneg i32 %402 to i64
  %407 = getelementptr inbounds %struct.lua_TValue, ptr %.1707, i64 %406
  %.not774807 = icmp slt i32 %29, 0
  %408 = select i1 %.not774807, ptr %405, ptr %407
  %409 = lshr i32 %29, 14
  %410 = and i32 %29, 4194304
  %.not775 = icmp eq i32 %410, 0
  %411 = and i32 %409, 255
  %412 = zext nneg i32 %411 to i64
  %.v808 = select i1 %.not775, ptr %.1707, ptr %25
  %413 = getelementptr inbounds %struct.lua_TValue, ptr %.v808, i64 %412
  store ptr %28, ptr %5, align 8, !tbaa !5
  %414 = getelementptr inbounds i8, ptr %408, i64 8
  %415 = load i32, ptr %414, align 8, !tbaa !27
  %416 = getelementptr inbounds i8, ptr %413, i64 8
  %417 = load i32, ptr %416, align 8, !tbaa !27
  %418 = icmp eq i32 %415, %417
  br i1 %418, label %419, label %422

419:                                              ; preds = %401
  %420 = call i32 @luaV_equalval(ptr noundef nonnull %0, ptr noundef nonnull %408, ptr noundef nonnull %413)
  %421 = icmp ne i32 %420, 0
  br label %422

422:                                              ; preds = %419, %401
  %423 = phi i1 [ false, %401 ], [ %421, %419 ]
  %424 = zext i1 %423 to i32
  %425 = icmp eq i32 %45, %424
  br i1 %425, label %426, label %432

426:                                              ; preds = %422
  %427 = load i32, ptr %28, align 4, !tbaa !23
  %428 = lshr i32 %427, 14
  %429 = zext nneg i32 %428 to i64
  %430 = getelementptr i32, ptr %28, i64 %429
  %431 = getelementptr i8, ptr %430, i64 -524284
  br label %432

432:                                              ; preds = %426, %422
  %.2712 = phi ptr [ %431, %426 ], [ %28, %422 ]
  %433 = load ptr, ptr %7, align 8, !tbaa !18
  %434 = getelementptr inbounds i8, ptr %.2712, i64 4
  br label %.backedge.backedge

435:                                              ; preds = %43
  store ptr %28, ptr %5, align 8, !tbaa !5
  %436 = lshr i32 %29, 23
  %437 = and i32 %436, 255
  %438 = zext nneg i32 %437 to i64
  %439 = getelementptr inbounds %struct.lua_TValue, ptr %25, i64 %438
  %440 = zext nneg i32 %436 to i64
  %441 = getelementptr inbounds %struct.lua_TValue, ptr %.1707, i64 %440
  %.not772805 = icmp slt i32 %29, 0
  %442 = select i1 %.not772805, ptr %439, ptr %441
  %443 = lshr i32 %29, 14
  %444 = and i32 %29, 4194304
  %.not773 = icmp eq i32 %444, 0
  %445 = and i32 %443, 255
  %446 = zext nneg i32 %445 to i64
  %.v806 = select i1 %.not773, ptr %.1707, ptr %25
  %447 = getelementptr inbounds %struct.lua_TValue, ptr %.v806, i64 %446
  %448 = call i32 @luaV_lessthan(ptr noundef nonnull %0, ptr noundef %442, ptr noundef %447)
  %449 = icmp eq i32 %448, %45
  br i1 %449, label %450, label %456

450:                                              ; preds = %435
  %451 = load i32, ptr %28, align 4, !tbaa !23
  %452 = lshr i32 %451, 14
  %453 = zext nneg i32 %452 to i64
  %454 = getelementptr i32, ptr %28, i64 %453
  %455 = getelementptr i8, ptr %454, i64 -524284
  br label %456

456:                                              ; preds = %450, %435
  %.3713 = phi ptr [ %455, %450 ], [ %28, %435 ]
  %457 = load ptr, ptr %7, align 8, !tbaa !18
  %458 = getelementptr inbounds i8, ptr %.3713, i64 4
  br label %.backedge.backedge

459:                                              ; preds = %43
  store ptr %28, ptr %5, align 8, !tbaa !5
  %460 = lshr i32 %29, 23
  %461 = and i32 %460, 255
  %462 = zext nneg i32 %461 to i64
  %463 = getelementptr inbounds %struct.lua_TValue, ptr %25, i64 %462
  %464 = zext nneg i32 %460 to i64
  %465 = getelementptr inbounds %struct.lua_TValue, ptr %.1707, i64 %464
  %.not770804 = icmp slt i32 %29, 0
  %466 = select i1 %.not770804, ptr %463, ptr %465
  %467 = lshr i32 %29, 14
  %468 = and i32 %29, 4194304
  %.not771 = icmp eq i32 %468, 0
  %469 = and i32 %467, 255
  %470 = zext nneg i32 %469 to i64
  %.v = select i1 %.not771, ptr %.1707, ptr %25
  %471 = getelementptr inbounds %struct.lua_TValue, ptr %.v, i64 %470
  %472 = call i32 @lessequal(ptr noundef nonnull %0, ptr noundef %466, ptr noundef %471)
  %473 = icmp eq i32 %472, %45
  br i1 %473, label %474, label %480

474:                                              ; preds = %459
  %475 = load i32, ptr %28, align 4, !tbaa !23
  %476 = lshr i32 %475, 14
  %477 = zext nneg i32 %476 to i64
  %478 = getelementptr i32, ptr %28, i64 %477
  %479 = getelementptr i8, ptr %478, i64 -524284
  br label %480

480:                                              ; preds = %474, %459
  %.4714 = phi ptr [ %479, %474 ], [ %28, %459 ]
  %481 = load ptr, ptr %7, align 8, !tbaa !18
  %482 = getelementptr inbounds i8, ptr %.4714, i64 4
  br label %.backedge.backedge

483:                                              ; preds = %43
  %484 = getelementptr inbounds i8, ptr %47, i64 8
  %485 = load i32, ptr %484, align 8, !tbaa !27
  switch i32 %485, label %.fold.split797 [
    i32 0, label %489
    i32 1, label %486
  ]

486:                                              ; preds = %483
  %487 = load i32, ptr %47, align 8, !tbaa !17
  %488 = icmp eq i32 %487, 0
  br label %489

.fold.split797:                                   ; preds = %483
  br label %489

489:                                              ; preds = %483, %.fold.split797, %486
  %490 = phi i1 [ true, %483 ], [ %488, %486 ], [ false, %.fold.split797 ]
  %491 = zext i1 %490 to i32
  %492 = lshr i32 %29, 14
  %493 = and i32 %492, 511
  %.not769 = icmp eq i32 %493, %491
  br i1 %.not769, label %500, label %494

494:                                              ; preds = %489
  %495 = load i32, ptr %28, align 4, !tbaa !23
  %496 = lshr i32 %495, 14
  %497 = zext nneg i32 %496 to i64
  %498 = getelementptr i32, ptr %28, i64 %497
  %499 = getelementptr i8, ptr %498, i64 -524284
  br label %500

500:                                              ; preds = %494, %489
  %.5715 = phi ptr [ %499, %494 ], [ %28, %489 ]
  %501 = getelementptr inbounds i8, ptr %.5715, i64 4
  br label %.backedge.backedge

502:                                              ; preds = %43
  %503 = lshr i32 %29, 23
  %504 = zext nneg i32 %503 to i64
  %505 = getelementptr inbounds %struct.lua_TValue, ptr %.1707, i64 %504
  %506 = getelementptr inbounds i8, ptr %505, i64 8
  %507 = load i32, ptr %506, align 8, !tbaa !27
  switch i32 %507, label %.fold.split798 [
    i32 0, label %511
    i32 1, label %508
  ]

508:                                              ; preds = %502
  %509 = load i32, ptr %505, align 8, !tbaa !17
  %510 = icmp eq i32 %509, 0
  br label %511

.fold.split798:                                   ; preds = %502
  br label %511

511:                                              ; preds = %502, %.fold.split798, %508
  %512 = phi i1 [ true, %502 ], [ %510, %508 ], [ false, %.fold.split798 ]
  %513 = zext i1 %512 to i32
  %514 = lshr i32 %29, 14
  %515 = and i32 %514, 511
  %.not768 = icmp eq i32 %515, %513
  br i1 %.not768, label %524, label %516

516:                                              ; preds = %511
  %517 = load i64, ptr %505, align 8, !tbaa !17
  store i64 %517, ptr %47, align 8, !tbaa !17
  %518 = getelementptr inbounds i8, ptr %47, i64 8
  store i32 %507, ptr %518, align 8, !tbaa !27
  %519 = load i32, ptr %28, align 4, !tbaa !23
  %520 = lshr i32 %519, 14
  %521 = zext nneg i32 %520 to i64
  %522 = getelementptr i32, ptr %28, i64 %521
  %523 = getelementptr i8, ptr %522, i64 -524284
  br label %524

524:                                              ; preds = %516, %511
  %.6716 = phi ptr [ %523, %516 ], [ %28, %511 ]
  %525 = getelementptr inbounds i8, ptr %.6716, i64 4
  br label %.backedge.backedge

526:                                              ; preds = %43
  %527 = lshr i32 %29, 14
  %528 = and i32 %527, 511
  %529 = add nsw i32 %528, -1
  %.not766 = icmp ult i32 %29, 8388608
  br i1 %.not766, label %534, label %530

530:                                              ; preds = %526
  %531 = lshr i32 %29, 23
  %532 = zext nneg i32 %531 to i64
  %533 = getelementptr inbounds %struct.lua_TValue, ptr %47, i64 %532
  store ptr %533, ptr %12, align 8, !tbaa !34
  br label %534

534:                                              ; preds = %530, %526
  store ptr %28, ptr %5, align 8, !tbaa !5
  %535 = call i32 @luaD_precall(ptr noundef nonnull %0, ptr noundef %47, i32 noundef %529) #5
  switch i32 %535, label %.critedge.thread [
    i32 0, label %536
    i32 1, label %538
  ]

536:                                              ; preds = %534
  %537 = add nsw i32 %.0.ph, 1
  br label %.loopexit.outer.backedge

.loopexit.outer.backedge:                         ; preds = %536, %605, %604
  %.0.ph.be = phi i32 [ %602, %604 ], [ %602, %605 ], [ %537, %536 ]
  br label %.loopexit.outer

538:                                              ; preds = %534
  %.not767 = icmp eq i32 %528, 0
  br i1 %.not767, label %543, label %539

539:                                              ; preds = %538
  %540 = load ptr, ptr %6, align 8, !tbaa !14
  %541 = getelementptr inbounds i8, ptr %540, i64 16
  %542 = load ptr, ptr %541, align 8, !tbaa !35
  store ptr %542, ptr %12, align 8, !tbaa !34
  br label %543

543:                                              ; preds = %539, %538
  %544 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

545:                                              ; preds = %43
  %.not764 = icmp ult i32 %29, 8388608
  br i1 %.not764, label %550, label %546

546:                                              ; preds = %545
  %547 = lshr i32 %29, 23
  %548 = zext nneg i32 %547 to i64
  %549 = getelementptr inbounds %struct.lua_TValue, ptr %47, i64 %548
  store ptr %549, ptr %12, align 8, !tbaa !34
  br label %550

550:                                              ; preds = %546, %545
  store ptr %28, ptr %5, align 8, !tbaa !5
  %551 = call i32 @luaD_precall(ptr noundef nonnull %0, ptr noundef %47, i32 noundef -1) #5
  switch i32 %551, label %.critedge.thread [
    i32 0, label %552
    i32 1, label %589
  ]

552:                                              ; preds = %550
  %553 = load ptr, ptr %6, align 8, !tbaa !14
  %554 = getelementptr inbounds i8, ptr %553, i64 -40
  %555 = getelementptr inbounds i8, ptr %553, i64 -32
  %556 = load ptr, ptr %555, align 8, !tbaa !15
  %557 = getelementptr inbounds i8, ptr %553, i64 8
  %558 = load ptr, ptr %557, align 8, !tbaa !15
  %559 = load ptr, ptr %13, align 8, !tbaa !36
  %.not765 = icmp eq ptr %559, null
  br i1 %.not765, label %562, label %560

560:                                              ; preds = %552
  %561 = load ptr, ptr %554, align 8, !tbaa !37
  call void @luaF_close(ptr noundef nonnull %0, ptr noundef %561) #5
  %.pre = load ptr, ptr %555, align 8, !tbaa !15
  br label %562

562:                                              ; preds = %560, %552
  %563 = phi ptr [ %.pre, %560 ], [ %556, %552 ]
  %564 = load ptr, ptr %553, align 8, !tbaa !37
  %565 = ptrtoint ptr %564 to i64
  %566 = ptrtoint ptr %558 to i64
  %567 = sub i64 %565, %566
  %568 = getelementptr inbounds i8, ptr %563, i64 %567
  store ptr %568, ptr %554, align 8, !tbaa !37
  store ptr %568, ptr %7, align 8, !tbaa !18
  %569 = load ptr, ptr %12, align 8, !tbaa !34
  %570 = icmp ult ptr %558, %569
  br i1 %570, label %.lr.ph847, label %._crit_edge848

.lr.ph847:                                        ; preds = %562, %.lr.ph847
  %indvars.iv868 = phi i64 [ %indvars.iv.next869, %.lr.ph847 ], [ 0, %562 ]
  %571 = getelementptr inbounds %struct.lua_TValue, ptr %558, i64 %indvars.iv868
  %572 = getelementptr inbounds %struct.lua_TValue, ptr %556, i64 %indvars.iv868
  %573 = load i64, ptr %571, align 8, !tbaa !17
  store i64 %573, ptr %572, align 8, !tbaa !17
  %574 = getelementptr inbounds i8, ptr %571, i64 8
  %575 = load i32, ptr %574, align 8, !tbaa !27
  %576 = getelementptr inbounds i8, ptr %572, i64 8
  store i32 %575, ptr %576, align 8, !tbaa !27
  %indvars.iv.next869 = add nuw nsw i64 %indvars.iv868, 1
  %577 = getelementptr inbounds %struct.lua_TValue, ptr %558, i64 %indvars.iv.next869
  %578 = load ptr, ptr %12, align 8, !tbaa !34
  %579 = icmp ult ptr %577, %578
  br i1 %579, label %.lr.ph847, label %._crit_edge848, !llvm.loop !38

._crit_edge848:                                   ; preds = %.lr.ph847, %562
  %.lcssa827 = phi i64 [ 0, %562 ], [ %indvars.iv.next869, %.lr.ph847 ]
  %580 = getelementptr inbounds %struct.lua_TValue, ptr %556, i64 %.lcssa827
  store ptr %580, ptr %12, align 8, !tbaa !34
  %581 = getelementptr inbounds i8, ptr %553, i64 -24
  store ptr %580, ptr %581, align 8, !tbaa !35
  %582 = load ptr, ptr %5, align 8, !tbaa !5
  %583 = getelementptr inbounds i8, ptr %553, i64 -16
  store ptr %582, ptr %583, align 8, !tbaa !39
  %584 = getelementptr inbounds i8, ptr %553, i64 -4
  %585 = load i32, ptr %584, align 4, !tbaa !40
  %586 = add nsw i32 %585, 1
  store i32 %586, ptr %584, align 4, !tbaa !40
  %587 = load ptr, ptr %6, align 8, !tbaa !14
  %588 = getelementptr inbounds i8, ptr %587, i64 -40
  store ptr %588, ptr %6, align 8, !tbaa !14
  br label %.loopexit

589:                                              ; preds = %550
  %590 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

591:                                              ; preds = %43
  %.not761 = icmp ult i32 %29, 8388608
  br i1 %.not761, label %597, label %592

592:                                              ; preds = %591
  %593 = lshr i32 %29, 23
  %594 = zext nneg i32 %593 to i64
  %595 = getelementptr inbounds %struct.lua_TValue, ptr %47, i64 %594
  %596 = getelementptr inbounds i8, ptr %595, i64 -16
  store ptr %596, ptr %12, align 8, !tbaa !34
  br label %597

597:                                              ; preds = %592, %591
  %598 = load ptr, ptr %13, align 8, !tbaa !36
  %.not762 = icmp eq ptr %598, null
  br i1 %.not762, label %600, label %599

599:                                              ; preds = %597
  call void @luaF_close(ptr noundef nonnull %0, ptr noundef %.1707) #5
  br label %600

600:                                              ; preds = %599, %597
  store ptr %28, ptr %5, align 8, !tbaa !5
  %601 = call i32 @luaD_poscall(ptr noundef nonnull %0, ptr noundef %47) #5
  %602 = add nsw i32 %.0.ph, -1
  %603 = icmp eq i32 %602, 0
  br i1 %603, label %.critedge.thread, label %604

604:                                              ; preds = %600
  %.not763 = icmp eq i32 %601, 0
  br i1 %.not763, label %.loopexit.outer.backedge, label %605

605:                                              ; preds = %604
  %606 = load ptr, ptr %6, align 8, !tbaa !14
  %607 = getelementptr inbounds i8, ptr %606, i64 16
  %608 = load ptr, ptr %607, align 8, !tbaa !35
  store ptr %608, ptr %12, align 8, !tbaa !34
  br label %.loopexit.outer.backedge

609:                                              ; preds = %43
  %610 = getelementptr inbounds i8, ptr %47, i64 32
  %611 = load double, ptr %610, align 8, !tbaa !17
  %612 = load double, ptr %47, align 8, !tbaa !17
  %613 = fadd double %611, %612
  %614 = getelementptr inbounds i8, ptr %47, i64 16
  %615 = load double, ptr %614, align 8, !tbaa !17
  %616 = fcmp ogt double %611, 0.000000e+00
  br i1 %616, label %617, label %619

617:                                              ; preds = %609
  %618 = fcmp ugt double %613, %615
  br i1 %618, label %.backedge.backedge, label %621

619:                                              ; preds = %609
  %620 = fcmp ugt double %615, %613
  br i1 %620, label %.backedge.backedge, label %621

621:                                              ; preds = %619, %617
  %622 = lshr i32 %29, 14
  %623 = zext nneg i32 %622 to i64
  %624 = getelementptr i32, ptr %28, i64 %623
  %625 = getelementptr i8, ptr %624, i64 -524284
  store double %613, ptr %47, align 8, !tbaa !17
  %626 = getelementptr inbounds i8, ptr %47, i64 8
  store i32 3, ptr %626, align 8, !tbaa !27
  %627 = getelementptr inbounds i8, ptr %47, i64 48
  store double %613, ptr %627, align 8, !tbaa !17
  %628 = getelementptr inbounds i8, ptr %47, i64 56
  store i32 3, ptr %628, align 8, !tbaa !27
  br label %.backedge.backedge

629:                                              ; preds = %43
  %630 = getelementptr inbounds i8, ptr %47, i64 16
  %631 = getelementptr inbounds i8, ptr %47, i64 32
  store ptr %28, ptr %5, align 8, !tbaa !5
  %632 = getelementptr inbounds i8, ptr %47, i64 8
  %633 = load i32, ptr %632, align 8, !tbaa !27
  %634 = icmp eq i32 %633, 3
  br i1 %634, label %637, label %635

635:                                              ; preds = %629
  %636 = call ptr @luaV_tonumber(ptr noundef nonnull %47, ptr noundef nonnull %47)
  %.not758 = icmp eq ptr %636, null
  br i1 %.not758, label %.sink.split, label %637

637:                                              ; preds = %635, %629
  %638 = getelementptr inbounds i8, ptr %47, i64 24
  %639 = load i32, ptr %638, align 8, !tbaa !27
  %640 = icmp eq i32 %639, 3
  br i1 %640, label %643, label %641

641:                                              ; preds = %637
  %642 = call ptr @luaV_tonumber(ptr noundef nonnull %630, ptr noundef nonnull %630)
  %.not759 = icmp eq ptr %642, null
  br i1 %.not759, label %.sink.split, label %643

643:                                              ; preds = %641, %637
  %644 = getelementptr inbounds i8, ptr %47, i64 40
  %645 = load i32, ptr %644, align 8, !tbaa !27
  %646 = icmp eq i32 %645, 3
  br i1 %646, label %650, label %647

647:                                              ; preds = %643
  %648 = call ptr @luaV_tonumber(ptr noundef nonnull %631, ptr noundef nonnull %631)
  %.not760 = icmp eq ptr %648, null
  br i1 %.not760, label %649, label %650

649:                                              ; preds = %647
  call void (ptr, ptr, ...) @luaG_runerror(ptr noundef nonnull %0, ptr noundef nonnull @.str.8) #5
  unreachable

.sink.split:                                      ; preds = %641, %635
  %.str.7.sink = phi ptr [ @.str.6, %635 ], [ @.str.7, %641 ]
  call void (ptr, ptr, ...) @luaG_runerror(ptr noundef nonnull %0, ptr noundef nonnull %.str.7.sink) #5
  br label %650

650:                                              ; preds = %.sink.split, %647, %643
  %.0734 = phi ptr [ %631, %643 ], [ %648, %647 ], [ %631, %.sink.split ]
  %651 = load double, ptr %47, align 8, !tbaa !17
  %652 = load double, ptr %.0734, align 8, !tbaa !17
  %653 = fsub double %651, %652
  store double %653, ptr %47, align 8, !tbaa !17
  store i32 3, ptr %632, align 8, !tbaa !27
  %654 = lshr i32 %29, 14
  %655 = zext nneg i32 %654 to i64
  %656 = getelementptr i32, ptr %28, i64 %655
  %657 = getelementptr i8, ptr %656, i64 -524284
  br label %.backedge.backedge

658:                                              ; preds = %43
  %659 = getelementptr inbounds i8, ptr %47, i64 48
  %660 = getelementptr inbounds i8, ptr %47, i64 32
  %661 = getelementptr inbounds i8, ptr %47, i64 80
  %662 = load i64, ptr %660, align 8, !tbaa !17
  store i64 %662, ptr %661, align 8, !tbaa !17
  %663 = getelementptr inbounds i8, ptr %47, i64 40
  %664 = load i32, ptr %663, align 8, !tbaa !27
  %665 = getelementptr inbounds i8, ptr %47, i64 88
  store i32 %664, ptr %665, align 8, !tbaa !27
  %666 = getelementptr inbounds i8, ptr %47, i64 16
  %667 = getelementptr inbounds i8, ptr %47, i64 64
  %668 = load i64, ptr %666, align 8, !tbaa !17
  store i64 %668, ptr %667, align 8, !tbaa !17
  %669 = getelementptr inbounds i8, ptr %47, i64 24
  %670 = load i32, ptr %669, align 8, !tbaa !27
  %671 = getelementptr inbounds i8, ptr %47, i64 72
  store i32 %670, ptr %671, align 8, !tbaa !27
  %672 = load i64, ptr %47, align 8, !tbaa !17
  store i64 %672, ptr %659, align 8, !tbaa !17
  %673 = getelementptr inbounds i8, ptr %47, i64 8
  %674 = load i32, ptr %673, align 8, !tbaa !27
  %675 = getelementptr inbounds i8, ptr %47, i64 56
  store i32 %674, ptr %675, align 8, !tbaa !27
  %676 = getelementptr inbounds i8, ptr %47, i64 96
  store ptr %676, ptr %12, align 8, !tbaa !34
  store ptr %28, ptr %5, align 8, !tbaa !5
  %677 = lshr i32 %29, 14
  %678 = and i32 %677, 511
  call void @luaD_call(ptr noundef nonnull %0, ptr noundef nonnull %659, i32 noundef %678) #5
  %679 = load ptr, ptr %7, align 8, !tbaa !18
  %680 = load ptr, ptr %6, align 8, !tbaa !14
  %681 = getelementptr inbounds i8, ptr %680, i64 16
  %682 = load ptr, ptr %681, align 8, !tbaa !35
  store ptr %682, ptr %12, align 8, !tbaa !34
  %683 = getelementptr inbounds %struct.lua_TValue, ptr %679, i64 %46
  %684 = getelementptr inbounds i8, ptr %683, i64 56
  %685 = load i32, ptr %684, align 8, !tbaa !27
  %686 = icmp eq i32 %685, 0
  br i1 %686, label %697, label %687

687:                                              ; preds = %658
  %688 = getelementptr inbounds i8, ptr %683, i64 48
  %689 = getelementptr inbounds i8, ptr %683, i64 32
  %690 = load i64, ptr %688, align 8, !tbaa !17
  store i64 %690, ptr %689, align 8, !tbaa !17
  %691 = getelementptr inbounds i8, ptr %683, i64 40
  store i32 %685, ptr %691, align 8, !tbaa !27
  %692 = load i32, ptr %28, align 4, !tbaa !23
  %693 = lshr i32 %692, 14
  %694 = zext nneg i32 %693 to i64
  %695 = getelementptr i32, ptr %28, i64 %694
  %696 = getelementptr i8, ptr %695, i64 -524284
  br label %697

697:                                              ; preds = %687, %658
  %.8718 = phi ptr [ %28, %658 ], [ %696, %687 ]
  %698 = getelementptr inbounds i8, ptr %.8718, i64 4
  br label %.backedge.backedge

699:                                              ; preds = %43
  %700 = lshr i32 %29, 23
  %701 = lshr i32 %29, 14
  %702 = and i32 %701, 511
  %703 = icmp ult i32 %29, 8388608
  br i1 %703, label %704, label %715

704:                                              ; preds = %699
  %705 = load ptr, ptr %12, align 8, !tbaa !34
  %706 = ptrtoint ptr %705 to i64
  %707 = ptrtoint ptr %47 to i64
  %708 = sub i64 %706, %707
  %709 = lshr exact i64 %708, 4
  %710 = trunc i64 %709 to i32
  %711 = add nsw i32 %710, -1
  %712 = load ptr, ptr %6, align 8, !tbaa !14
  %713 = getelementptr inbounds i8, ptr %712, i64 16
  %714 = load ptr, ptr %713, align 8, !tbaa !35
  store ptr %714, ptr %12, align 8, !tbaa !34
  br label %715

715:                                              ; preds = %704, %699
  %.0737 = phi i32 [ %711, %704 ], [ %700, %699 ]
  %716 = icmp eq i32 %702, 0
  br i1 %716, label %717, label %720

717:                                              ; preds = %715
  %718 = getelementptr inbounds i8, ptr %.0710, i64 8
  %719 = load i32, ptr %28, align 4, !tbaa !23
  br label %720

720:                                              ; preds = %717, %715
  %.0736 = phi i32 [ %719, %717 ], [ %702, %715 ]
  %.9719 = phi ptr [ %718, %717 ], [ %28, %715 ]
  %721 = getelementptr inbounds i8, ptr %47, i64 8
  %722 = load i32, ptr %721, align 8, !tbaa !27
  %.not755 = icmp eq i32 %722, 5
  br i1 %.not755, label %723, label %.backedge.backedge

723:                                              ; preds = %720
  %724 = load ptr, ptr %47, align 8, !tbaa !17
  %725 = mul i32 %.0736, 50
  %726 = add i32 %.0737, -50
  %727 = add i32 %726, %725
  %728 = getelementptr inbounds i8, ptr %724, i64 56
  %729 = load i32, ptr %728, align 8, !tbaa !41
  %730 = icmp sgt i32 %727, %729
  br i1 %730, label %731, label %732

731:                                              ; preds = %723
  call void @luaH_resizearray(ptr noundef nonnull %0, ptr noundef nonnull %724, i32 noundef %727) #5
  br label %732

732:                                              ; preds = %731, %723
  %733 = icmp sgt i32 %.0737, 0
  br i1 %733, label %.lr.ph844, label %.backedge.backedge

.lr.ph844:                                        ; preds = %732
  %734 = getelementptr inbounds i8, ptr %724, i64 9
  %735 = zext nneg i32 %.0737 to i64
  br label %736

736:                                              ; preds = %.lr.ph844, %754
  %indvars.iv865 = phi i64 [ %735, %.lr.ph844 ], [ %indvars.iv.next866, %754 ]
  %.0735842 = phi i32 [ %727, %.lr.ph844 ], [ %738, %754 ]
  %737 = getelementptr inbounds %struct.lua_TValue, ptr %47, i64 %indvars.iv865
  %738 = add nsw i32 %.0735842, -1
  %739 = call ptr @luaH_setnum(ptr noundef %0, ptr noundef %724, i32 noundef %.0735842) #5
  %740 = load i64, ptr %737, align 8, !tbaa !17
  store i64 %740, ptr %739, align 8, !tbaa !17
  %741 = getelementptr inbounds i8, ptr %737, i64 8
  %742 = load i32, ptr %741, align 8, !tbaa !27
  %743 = getelementptr inbounds i8, ptr %739, i64 8
  store i32 %742, ptr %743, align 8, !tbaa !27
  %744 = icmp sgt i32 %742, 3
  br i1 %744, label %745, label %754

745:                                              ; preds = %736
  %746 = load ptr, ptr %737, align 8, !tbaa !17
  %747 = getelementptr inbounds i8, ptr %746, i64 9
  %748 = load i8, ptr %747, align 1, !tbaa !17
  %749 = and i8 %748, 3
  %.not756 = icmp eq i8 %749, 0
  br i1 %.not756, label %754, label %750

750:                                              ; preds = %745
  %751 = load i8, ptr %734, align 1, !tbaa !17
  %752 = and i8 %751, 4
  %.not757 = icmp eq i8 %752, 0
  br i1 %.not757, label %754, label %753

753:                                              ; preds = %750
  call void @luaC_barrierback(ptr noundef %0, ptr noundef nonnull %724) #5
  br label %754

754:                                              ; preds = %753, %750, %745, %736
  %indvars.iv.next866 = add nsw i64 %indvars.iv865, -1
  %755 = icmp sgt i64 %indvars.iv865, 1
  br i1 %755, label %736, label %.backedge.backedge, !llvm.loop !43

756:                                              ; preds = %43
  call void @luaF_close(ptr noundef nonnull %0, ptr noundef %47) #5
  br label %.backedge.backedge

757:                                              ; preds = %43
  %758 = load ptr, ptr %22, align 8, !tbaa !19
  %759 = getelementptr inbounds i8, ptr %758, i64 32
  %760 = load ptr, ptr %759, align 8, !tbaa !44
  %761 = lshr i32 %29, 14
  %762 = zext nneg i32 %761 to i64
  %763 = getelementptr inbounds ptr, ptr %760, i64 %762
  %764 = load ptr, ptr %763, align 8, !tbaa !30
  %765 = getelementptr inbounds i8, ptr %764, i64 112
  %766 = load i8, ptr %765, align 8, !tbaa !45
  %767 = zext i8 %766 to i32
  %768 = load ptr, ptr %26, align 8, !tbaa !33
  %769 = call ptr @luaF_newLclosure(ptr noundef nonnull %0, i32 noundef %767, ptr noundef %768) #5
  %770 = getelementptr inbounds i8, ptr %769, i64 32
  store ptr %764, ptr %770, align 8, !tbaa !17
  %.not850 = icmp eq i8 %766, 0
  br i1 %.not850, label %._crit_edge, label %.lr.ph840

.lr.ph840:                                        ; preds = %757
  %771 = getelementptr inbounds i8, ptr %769, i64 40
  %wide.trip.count863 = zext i8 %766 to i64
  br label %772

772:                                              ; preds = %.lr.ph840, %785
  %indvars.iv860 = phi i64 [ 0, %.lr.ph840 ], [ %indvars.iv.next861, %785 ]
  %.10720839 = phi ptr [ %28, %.lr.ph840 ], [ %786, %785 ]
  %773 = load i32, ptr %.10720839, align 4, !tbaa !23
  %774 = and i32 %773, 63
  %775 = icmp eq i32 %774, 4
  %776 = lshr i32 %773, 23
  %777 = zext nneg i32 %776 to i64
  %778 = getelementptr inbounds [1 x ptr], ptr %771, i64 0, i64 %indvars.iv860
  br i1 %775, label %779, label %782

779:                                              ; preds = %772
  %780 = getelementptr inbounds [1 x ptr], ptr %27, i64 0, i64 %777
  %781 = load ptr, ptr %780, align 8, !tbaa !30
  br label %785

782:                                              ; preds = %772
  %783 = getelementptr inbounds %struct.lua_TValue, ptr %.1707, i64 %777
  %784 = call ptr @luaF_findupval(ptr noundef %0, ptr noundef %783) #5
  br label %785

785:                                              ; preds = %779, %782
  %.sink = phi ptr [ %781, %779 ], [ %784, %782 ]
  store ptr %.sink, ptr %778, align 8, !tbaa !17
  %indvars.iv.next861 = add nuw nsw i64 %indvars.iv860, 1
  %786 = getelementptr inbounds i8, ptr %.10720839, i64 4
  %exitcond864.not = icmp eq i64 %indvars.iv.next861, %wide.trip.count863
  br i1 %exitcond864.not, label %._crit_edge, label %772, !llvm.loop !46

._crit_edge:                                      ; preds = %785, %757
  %.10720.lcssa = phi ptr [ %28, %757 ], [ %786, %785 ]
  store ptr %769, ptr %47, align 8, !tbaa !17
  %787 = getelementptr inbounds i8, ptr %47, i64 8
  store i32 6, ptr %787, align 8, !tbaa !27
  store ptr %.10720.lcssa, ptr %5, align 8, !tbaa !5
  %788 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

.backedge.backedge:                               ; preds = %839, %754, %74, %._crit_edge, %756, %697, %650, %524, %500, %480, %456, %432, %396, %383, %357, %155, %146, %132, %104, %94, %88, %77, %65, %57, %49, %131, %127, %122, %110, %195, %190, %222, %217, %249, %244, %276, %271, %306, %298, %333, %328, %346, %342, %381, %372, %367, %543, %589, %621, %619, %617, %720, %43, %732, %822
  %.0710.be = phi ptr [ %28, %822 ], [ %.9719, %732 ], [ %28, %43 ], [ %.9719, %720 ], [ %28, %617 ], [ %28, %619 ], [ %625, %621 ], [ %28, %589 ], [ %28, %543 ], [ %28, %367 ], [ %28, %372 ], [ %28, %381 ], [ %28, %342 ], [ %28, %346 ], [ %28, %328 ], [ %28, %333 ], [ %28, %298 ], [ %28, %306 ], [ %28, %271 ], [ %28, %276 ], [ %28, %244 ], [ %28, %249 ], [ %28, %217 ], [ %28, %222 ], [ %28, %190 ], [ %28, %195 ], [ %28, %110 ], [ %28, %122 ], [ %28, %127 ], [ %28, %131 ], [ %28, %49 ], [ %28, %57 ], [ %spec.select, %65 ], [ %28, %77 ], [ %28, %88 ], [ %28, %94 ], [ %28, %104 ], [ %28, %132 ], [ %28, %146 ], [ %28, %155 ], [ %28, %357 ], [ %28, %383 ], [ %400, %396 ], [ %434, %432 ], [ %458, %456 ], [ %482, %480 ], [ %501, %500 ], [ %525, %524 ], [ %657, %650 ], [ %698, %697 ], [ %28, %756 ], [ %.10720.lcssa, %._crit_edge ], [ %28, %74 ], [ %.9719, %754 ], [ %28, %839 ]
  %.0706.be = phi ptr [ %.12, %822 ], [ %.1707, %732 ], [ %.1707, %43 ], [ %.1707, %720 ], [ %.1707, %617 ], [ %.1707, %619 ], [ %.1707, %621 ], [ %590, %589 ], [ %544, %543 ], [ %.1707, %367 ], [ %.1707, %372 ], [ %382, %381 ], [ %.1707, %342 ], [ %347, %346 ], [ %.1707, %328 ], [ %334, %333 ], [ %.1707, %298 ], [ %307, %306 ], [ %.1707, %271 ], [ %277, %276 ], [ %.1707, %244 ], [ %250, %249 ], [ %.1707, %217 ], [ %223, %222 ], [ %.1707, %190 ], [ %196, %195 ], [ %.1707, %110 ], [ %.1707, %122 ], [ %.1707, %127 ], [ %.1707, %131 ], [ %.1707, %49 ], [ %.1707, %57 ], [ %.1707, %65 ], [ %.1707, %77 ], [ %93, %88 ], [ %103, %94 ], [ %109, %104 ], [ %145, %132 ], [ %154, %146 ], [ %169, %155 ], [ %.1707, %357 ], [ %388, %383 ], [ %.1707, %396 ], [ %433, %432 ], [ %457, %456 ], [ %481, %480 ], [ %.1707, %500 ], [ %.1707, %524 ], [ %.1707, %650 ], [ %679, %697 ], [ %.1707, %756 ], [ %788, %._crit_edge ], [ %.1707, %74 ], [ %.1707, %754 ], [ %.12, %839 ]
  br label %.backedge

789:                                              ; preds = %43
  %790 = lshr i32 %29, 23
  %791 = add nsw i32 %790, -1
  %792 = load ptr, ptr %6, align 8, !tbaa !14
  %793 = load ptr, ptr %792, align 8, !tbaa !37
  %794 = getelementptr inbounds i8, ptr %792, i64 8
  %795 = load ptr, ptr %794, align 8, !tbaa !15
  %796 = ptrtoint ptr %793 to i64
  %797 = ptrtoint ptr %795 to i64
  %798 = sub i64 %796, %797
  %799 = lshr exact i64 %798, 4
  %800 = trunc i64 %799 to i32
  %801 = load ptr, ptr %22, align 8, !tbaa !19
  %802 = getelementptr inbounds i8, ptr %801, i64 113
  %803 = load i8, ptr %802, align 1, !tbaa !47
  %804 = zext i8 %803 to i32
  %805 = xor i32 %804, -1
  %806 = add i32 %800, %805
  %807 = icmp ult i32 %29, 8388608
  br i1 %807, label %808, label %822

808:                                              ; preds = %789
  store ptr %28, ptr %5, align 8, !tbaa !5
  %809 = load ptr, ptr %11, align 8, !tbaa !48
  %810 = load ptr, ptr %12, align 8, !tbaa !34
  %811 = ptrtoint ptr %809 to i64
  %812 = ptrtoint ptr %810 to i64
  %813 = sub i64 %811, %812
  %814 = shl nsw i32 %806, 4
  %815 = sext i32 %814 to i64
  %.not754 = icmp sgt i64 %813, %815
  br i1 %.not754, label %817, label %816

816:                                              ; preds = %808
  call void @luaD_growstack(ptr noundef nonnull %0, i32 noundef %806) #5
  br label %817

817:                                              ; preds = %808, %816
  %818 = load ptr, ptr %7, align 8, !tbaa !18
  %819 = getelementptr inbounds %struct.lua_TValue, ptr %818, i64 %46
  %820 = sext i32 %806 to i64
  %821 = getelementptr inbounds %struct.lua_TValue, ptr %819, i64 %820
  store ptr %821, ptr %12, align 8, !tbaa !34
  br label %822

822:                                              ; preds = %817, %789
  %.0725 = phi i32 [ %806, %817 ], [ %791, %789 ]
  %.0723 = phi ptr [ %819, %817 ], [ %47, %789 ]
  %.12 = phi ptr [ %818, %817 ], [ %.1707, %789 ]
  %823 = icmp sgt i32 %.0725, 0
  br i1 %823, label %.lr.ph, label %.backedge.backedge

.lr.ph:                                           ; preds = %822
  %824 = sext i32 %806 to i64
  %825 = sub nsw i64 0, %824
  %wide.trip.count = zext nneg i32 %.0725 to i64
  br label %826

826:                                              ; preds = %.lr.ph, %839
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %839 ]
  %827 = icmp slt i64 %indvars.iv, %824
  br i1 %827, label %828, label %837

828:                                              ; preds = %826
  %829 = load ptr, ptr %792, align 8, !tbaa !37
  %830 = getelementptr inbounds %struct.lua_TValue, ptr %829, i64 %825
  %831 = getelementptr inbounds %struct.lua_TValue, ptr %830, i64 %indvars.iv
  %832 = getelementptr inbounds %struct.lua_TValue, ptr %.0723, i64 %indvars.iv
  %833 = load i64, ptr %831, align 8, !tbaa !17
  store i64 %833, ptr %832, align 8, !tbaa !17
  %834 = getelementptr inbounds i8, ptr %831, i64 8
  %835 = load i32, ptr %834, align 8, !tbaa !27
  %836 = getelementptr inbounds i8, ptr %832, i64 8
  store i32 %835, ptr %836, align 8, !tbaa !27
  br label %839

837:                                              ; preds = %826
  %838 = getelementptr inbounds %struct.lua_TValue, ptr %.0723, i64 %indvars.iv, i32 1
  store i32 0, ptr %838, align 8, !tbaa !27
  br label %839

839:                                              ; preds = %828, %837
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.backedge.backedge, label %826, !llvm.loop !49

.critedge.thread:                                 ; preds = %600, %550, %534, %40
  ret void
}

; Function Attrs: nounwind uwtable
declare hidden void @traceexec(ptr noundef, ptr noundef) local_unnamed_addr #0

declare hidden void @luaC_barrierf(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare hidden ptr @luaH_new(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare hidden i32 @luaO_fb2int(i32 noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden void @Arith(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.floor.f64(double) #3

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #3

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @pow(double noundef, double noundef) local_unnamed_addr #4

declare hidden i32 @luaH_getn(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden i32 @lessequal(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare hidden i32 @luaD_precall(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare hidden void @luaF_close(ptr noundef, ptr noundef) local_unnamed_addr #2

declare hidden i32 @luaD_poscall(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

declare hidden ptr @luaH_setnum(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare hidden ptr @luaF_newLclosure(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

declare hidden ptr @luaF_findupval(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

!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 48}
!6 = !{!"lua_State", !7, i64 0, !8, i64 8, !8, i64 9, !8, i64 10, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !10, i64 88, !10, i64 92, !11, i64 96, !11, i64 98, !8, i64 100, !8, i64 101, !10, i64 104, !10, i64 108, !7, i64 112, !12, i64 120, !12, i64 136, !7, i64 152, !7, i64 160, !7, i64 168, !13, i64 176, !8, i64 184}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"short", !8, i64 0}
!12 = !{!"lua_TValue", !8, i64 0, !10, i64 8}
!13 = !{!"long", !8, i64 0}
!14 = !{!6, !7, i64 40}
!15 = !{!16, !7, i64 8}
!16 = !{!"CallInfo", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !10, i64 32, !10, i64 36}
!17 = !{!8, !8, i64 0}
!18 = !{!6, !7, i64 24}
!19 = !{!20, !7, i64 32}
!20 = !{!"LClosure", !7, i64 0, !8, i64 8, !8, i64 9, !8, i64 10, !8, i64 11, !7, i64 16, !7, i64 24, !7, i64 32, !8, i64 40}
!21 = !{!22, !7, i64 16}
!22 = !{!"Proto", !7, i64 0, !8, i64 8, !8, i64 9, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !7, i64 104, !8, i64 112, !8, i64 113, !8, i64 114, !8, i64 115}
!23 = !{!10, !10, i64 0}
!24 = !{!6, !8, i64 100}
!25 = !{!6, !10, i64 108}
!26 = !{!6, !8, i64 10}
!27 = !{!12, !10, i64 8}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = !{!7, !7, i64 0}
!31 = !{!32, !7, i64 16}
!32 = !{!"UpVal", !7, i64 0, !8, i64 8, !8, i64 9, !7, i64 16, !8, i64 24}
!33 = !{!20, !7, i64 24}
!34 = !{!6, !7, i64 16}
!35 = !{!16, !7, i64 16}
!36 = !{!6, !7, i64 152}
!37 = !{!16, !7, i64 0}
!38 = distinct !{!38, !29}
!39 = !{!16, !7, i64 24}
!40 = !{!16, !10, i64 36}
!41 = !{!42, !10, i64 56}
!42 = !{!"Table", !7, i64 0, !8, i64 8, !8, i64 9, !8, i64 10, !8, i64 11, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !10, i64 56}
!43 = distinct !{!43, !29}
!44 = !{!22, !7, i64 32}
!45 = !{!22, !8, i64 112}
!46 = distinct !{!46, !29}
!47 = !{!22, !8, i64 113}
!48 = !{!6, !7, i64 56}
!49 = distinct !{!49, !29}


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