; LLVM IR from ejoy/ejoy2d :: lua (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_State = type { ptr, i8, i8, i8, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.CallInfo, ptr, i64, i32, i32, i32, i16, i16, i8, i8 }
%struct.CallInfo = type { ptr, ptr, ptr, ptr, %union.anon, i64, i16, i8 }
%union.anon = type { %struct.anon.0 }
%struct.anon.0 = type { ptr, i64, i64 }
%struct.lua_TValue = type { %union.Value, i32 }
%union.Value = type { ptr }
%struct.LClosure = type { ptr, i8, i8, i8, ptr, ptr, [1 x ptr] }
%struct.Proto = type { ptr, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.anon = type { ptr, ptr }
%struct.UpVal = type { ptr, i64, %union.anon.1 }
%union.anon.1 = type { %struct.anon.2 }
%struct.anon.2 = type { ptr, i32 }
%struct.global_State = type { ptr, ptr, i64, i64, i64, i64, %struct.stringtable, %struct.lua_TValue, i32, i8, i8, i8, i8, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.Mbuffer, i32, i32, i32, ptr, ptr, ptr, ptr, [24 x ptr], [9 x ptr] }
%struct.stringtable = type { ptr, i32, i32 }
%struct.Mbuffer = type { ptr, i64, i64 }
%struct.Table = type { ptr, i8, i8, i8, i8, i32, ptr, ptr, ptr, ptr, ptr }
%struct.GCObject = type { ptr, i8, i8 }

@.str.7 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [37 x i8], align 1

; Function Attrs: nounwind uwtable
declare hidden i32 @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 i32 @luaV_tointeger_(ptr noundef, ptr noundef) #0

; 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

; Function Attrs: noreturn
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) #4

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

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

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

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

declare hidden void @luaT_trybinTM(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) #4

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

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

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

; Function Attrs: nounwind uwtable
declare hidden i64 @luaV_shiftl(i64 noundef, i64 noundef) #0

; Function Attrs: nounwind uwtable
define hidden void @luaV_execute(ptr noundef %0) #0 {
  %2 = alloca ptr, align 8
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca ptr, 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 i64, align 8
  %50 = alloca i64, align 8
  %51 = alloca ptr, align 8
  %52 = alloca ptr, align 8
  %53 = alloca ptr, align 8
  %54 = alloca ptr, align 8
  %55 = alloca double, align 8
  %56 = alloca double, align 8
  %57 = alloca ptr, align 8
  %58 = alloca ptr, align 8
  %59 = alloca ptr, align 8
  %60 = alloca i64, align 8
  %61 = alloca i64, align 8
  %62 = alloca ptr, align 8
  %63 = alloca ptr, align 8
  %64 = alloca ptr, align 8
  %65 = alloca i64, align 8
  %66 = alloca i64, align 8
  %67 = alloca ptr, align 8
  %68 = alloca ptr, align 8
  %69 = alloca ptr, align 8
  %70 = alloca i64, align 8
  %71 = alloca i64, align 8
  %72 = alloca ptr, align 8
  %73 = alloca ptr, align 8
  %74 = alloca ptr, align 8
  %75 = alloca i64, align 8
  %76 = alloca i64, align 8
  %77 = alloca ptr, align 8
  %78 = alloca ptr, align 8
  %79 = alloca ptr, align 8
  %80 = alloca i64, align 8
  %81 = alloca i64, align 8
  %82 = alloca ptr, align 8
  %83 = alloca ptr, align 8
  %84 = alloca ptr, align 8
  %85 = alloca double, align 8
  %86 = alloca double, align 8
  %87 = alloca i64, align 8
  %88 = alloca i64, align 8
  %89 = alloca ptr, align 8
  %90 = alloca double, align 8
  %91 = alloca ptr, align 8
  %92 = alloca ptr, align 8
  %93 = alloca ptr, align 8
  %94 = alloca double, align 8
  %95 = alloca double, align 8
  %96 = alloca i64, align 8
  %97 = alloca i64, align 8
  %98 = alloca ptr, align 8
  %99 = alloca ptr, align 8
  %100 = alloca ptr, align 8
  %101 = alloca ptr, align 8
  %102 = alloca double, align 8
  %103 = alloca double, align 8
  %104 = alloca ptr, align 8
  %105 = alloca ptr, align 8
  %106 = alloca double, align 8
  %107 = alloca i64, align 8
  %108 = alloca ptr, align 8
  %109 = alloca ptr, align 8
  %110 = alloca ptr, align 8
  %111 = alloca i64, align 8
  %112 = alloca ptr, align 8
  %113 = alloca ptr, align 8
  %114 = alloca i32, align 4
  %115 = alloca ptr, align 8
  %116 = alloca i32, align 4
  %117 = alloca i32, align 4
  %118 = alloca ptr, align 8
  %119 = alloca ptr, align 8
  %120 = alloca i32, align 4
  %121 = alloca ptr, align 8
  %122 = alloca ptr, align 8
  %123 = alloca i32, align 4
  %124 = alloca i32, align 4
  %125 = alloca i32, align 4
  %126 = alloca i32, align 4
  %127 = alloca ptr, align 8
  %128 = alloca ptr, align 8
  %129 = alloca i32, align 4
  %130 = alloca i32, align 4
  %131 = alloca i32, align 4
  %132 = alloca i32, align 4
  %133 = alloca i32, align 4
  %134 = alloca ptr, align 8
  %135 = alloca ptr, align 8
  %136 = alloca ptr, align 8
  %137 = alloca ptr, align 8
  %138 = alloca ptr, align 8
  %139 = alloca i32, align 4
  %140 = alloca ptr, align 8
  %141 = alloca i32, align 4
  %142 = alloca i64, align 8
  %143 = alloca i64, align 8
  %144 = alloca i64, align 8
  %145 = alloca ptr, align 8
  %146 = alloca ptr, align 8
  %147 = alloca double, align 8
  %148 = alloca double, align 8
  %149 = alloca double, align 8
  %150 = alloca ptr, align 8
  %151 = alloca ptr, align 8
  %152 = alloca ptr, align 8
  %153 = alloca ptr, align 8
  %154 = alloca ptr, align 8
  %155 = alloca i64, align 8
  %156 = alloca i32, align 4
  %157 = alloca i64, align 8
  %158 = alloca ptr, align 8
  %159 = alloca ptr, align 8
  %160 = alloca double, align 8
  %161 = alloca double, align 8
  %162 = alloca double, align 8
  %163 = alloca ptr, align 8
  %164 = alloca ptr, align 8
  %165 = alloca ptr, align 8
  %166 = alloca ptr, align 8
  %167 = alloca ptr, align 8
  %168 = alloca ptr, align 8
  %169 = alloca ptr, align 8
  %170 = alloca ptr, align 8
  %171 = alloca i32, align 4
  %172 = alloca i32, align 4
  %173 = alloca i32, align 4
  %174 = alloca ptr, align 8
  %175 = alloca ptr, align 8
  %176 = alloca ptr, align 8
  %177 = alloca ptr, align 8
  %178 = alloca ptr, align 8
  %179 = alloca ptr, align 8
  %180 = alloca i32, align 4
  %181 = alloca i32, align 4
  %182 = alloca i32, align 4
  %183 = alloca ptr, align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #7
  %184 = load ptr, ptr %2, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.lua_State, ptr %184, i32 0, i32 6
  %186 = load ptr, ptr %185, align 8, !tbaa !9
  store ptr %186, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #7
  br label %187

187:                                              ; preds = %3327, %1
  %188 = load ptr, ptr %3, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.CallInfo, ptr %188, i32 0, i32 0
  %190 = load ptr, ptr %189, align 8, !tbaa !15
  %191 = getelementptr inbounds %struct.lua_TValue, ptr %190, i32 0, i32 0
  %192 = load ptr, ptr %191, align 8, !tbaa !16
  store ptr %192, ptr %4, align 8, !tbaa !5
  %193 = load ptr, ptr %4, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.LClosure, ptr %193, i32 0, i32 5
  %195 = load ptr, ptr %194, align 8, !tbaa !17
  %196 = getelementptr inbounds %struct.Proto, ptr %195, i32 0, i32 14
  %197 = load ptr, ptr %196, align 8, !tbaa !19
  store ptr %197, ptr %5, align 8, !tbaa !5
  %198 = load ptr, ptr %3, align 8, !tbaa !5
  %199 = getelementptr inbounds %struct.CallInfo, ptr %198, i32 0, i32 4
  %200 = getelementptr inbounds %struct.anon, ptr %199, i32 0, i32 0
  %201 = load ptr, ptr %200, align 8, !tbaa !16
  store ptr %201, ptr %6, align 8, !tbaa !5
  br label %202

202:                                              ; preds = %3329, %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #7
  %203 = load ptr, ptr %3, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.CallInfo, ptr %203, i32 0, i32 4
  %205 = getelementptr inbounds %struct.anon, ptr %204, i32 0, i32 1
  %206 = load ptr, ptr %205, align 8, !tbaa !16
  %207 = getelementptr inbounds i32, ptr %206, i32 1
  store ptr %207, ptr %205, align 8, !tbaa !16
  %208 = load i32, ptr %206, align 4, !tbaa !21
  store i32 %208, ptr %7, align 4, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  %209 = load ptr, ptr %2, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.lua_State, ptr %209, i32 0, i32 22
  %211 = load i8, ptr %210, align 8, !tbaa !22
  %212 = zext i8 %211 to i32
  %213 = and i32 %212, 12
  %214 = icmp ne i32 %213, 0
  br i1 %214, label %215, label %234

215:                                              ; preds = %202
  %216 = load ptr, ptr %2, align 8, !tbaa !5
  %217 = getelementptr inbounds %struct.lua_State, ptr %216, i32 0, i32 19
  %218 = load i32, ptr %217, align 8, !tbaa !23
  %219 = add nsw i32 %218, -1
  store i32 %219, ptr %217, align 8, !tbaa !23
  %220 = icmp eq i32 %219, 0
  br i1 %220, label %228, label %221

221:                                              ; preds = %215
  %222 = load ptr, ptr %2, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.lua_State, ptr %222, i32 0, i32 22
  %224 = load i8, ptr %223, align 8, !tbaa !22
  %225 = zext i8 %224 to i32
  %226 = and i32 %225, 4
  %227 = icmp ne i32 %226, 0
  br i1 %227, label %228, label %234

228:                                              ; preds = %221, %215
  %229 = load ptr, ptr %2, align 8, !tbaa !5
  call void @luaG_traceexec(ptr noundef %229)
  %230 = load ptr, ptr %3, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.CallInfo, ptr %230, i32 0, i32 4
  %232 = getelementptr inbounds %struct.anon, ptr %231, i32 0, i32 0
  %233 = load ptr, ptr %232, align 8, !tbaa !16
  store ptr %233, ptr %6, align 8, !tbaa !5
  br label %234

234:                                              ; preds = %228, %221, %202
  %235 = load ptr, ptr %6, align 8, !tbaa !5
  %236 = load i32, ptr %7, align 4, !tbaa !21
  %237 = lshr i32 %236, 6
  %238 = and i32 %237, 255
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds %struct.lua_TValue, ptr %235, i64 %239
  store ptr %240, ptr %8, align 8, !tbaa !5
  %241 = load i32, ptr %7, align 4, !tbaa !21
  %242 = lshr i32 %241, 0
  %243 = and i32 %242, 63
  switch i32 %243, label %3326 [
    i32 0, label %244
    i32 1, label %254
    i32 2, label %265
    i32 3, label %281
    i32 4, label %301
    i32 5, label %314
    i32 6, label %329
    i32 7, label %369
    i32 8, label %404
    i32 9, label %465
    i32 10, label %498
    i32 11, label %549
    i32 12, label %600
    i32 13, label %641
    i32 14, label %756
    i32 15, label %871
    i32 18, label %986
    i32 20, label %1075
    i32 21, label %1164
    i32 22, label %1253
    i32 23, label %1342
    i32 24, label %1431
    i32 16, label %1521
    i32 19, label %1647
    i32 17, label %1765
    i32 25, label %1855
    i32 26, label %1909
    i32 27, label %1946
    i32 28, label %1978
    i32 29, label %1991
    i32 30, label %2063
    i32 31, label %2091
    i32 32, label %2188
    i32 33, label %2283
    i32 34, label %2378
    i32 35, label %2453
    i32 36, label %2538
    i32 37, label %2588
    i32 38, label %2720
    i32 39, label %2769
    i32 40, label %2873
    i32 41, label %2998
    i32 42, label %3048
    i32 43, label %3072
    i32 44, label %3171
    i32 45, label %3230
    i32 46, label %3325
  ]

244:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #7
  %245 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %245, ptr %9, align 8, !tbaa !5
  %246 = load ptr, ptr %9, align 8, !tbaa !5
  %247 = load ptr, ptr %6, align 8, !tbaa !5
  %248 = load i32, ptr %7, align 4, !tbaa !21
  %249 = lshr i32 %248, 23
  %250 = and i32 %249, 511
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds %struct.lua_TValue, ptr %247, i64 %251
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %246, ptr align 8 %252, i64 16, i1 false), !tbaa.struct !24
  %253 = load ptr, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  br label %3326

254:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  %255 = load ptr, ptr %5, align 8, !tbaa !5
  %256 = load i32, ptr %7, align 4, !tbaa !21
  %257 = lshr i32 %256, 14
  %258 = and i32 %257, 262143
  %259 = sext i32 %258 to i64
  %260 = getelementptr inbounds %struct.lua_TValue, ptr %255, i64 %259
  store ptr %260, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  %261 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %261, ptr %11, align 8, !tbaa !5
  %262 = load ptr, ptr %11, align 8, !tbaa !5
  %263 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %262, ptr align 8 %263, i64 16, i1 false), !tbaa.struct !24
  %264 = load ptr, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  br label %3326

265:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  %266 = load ptr, ptr %5, align 8, !tbaa !5
  %267 = load ptr, ptr %3, align 8, !tbaa !5
  %268 = getelementptr inbounds %struct.CallInfo, ptr %267, i32 0, i32 4
  %269 = getelementptr inbounds %struct.anon, ptr %268, i32 0, i32 1
  %270 = load ptr, ptr %269, align 8, !tbaa !16
  %271 = getelementptr inbounds i32, ptr %270, i32 1
  store ptr %271, ptr %269, align 8, !tbaa !16
  %272 = load i32, ptr %270, align 4, !tbaa !21
  %273 = lshr i32 %272, 6
  %274 = and i32 %273, 67108863
  %275 = sext i32 %274 to i64
  %276 = getelementptr inbounds %struct.lua_TValue, ptr %266, i64 %275
  store ptr %276, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  %277 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %277, ptr %13, align 8, !tbaa !5
  %278 = load ptr, ptr %13, align 8, !tbaa !5
  %279 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %278, ptr align 8 %279, i64 16, i1 false), !tbaa.struct !24
  %280 = load ptr, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  br label %3326

281:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  %282 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %282, ptr %14, align 8, !tbaa !5
  %283 = load i32, ptr %7, align 4, !tbaa !21
  %284 = lshr i32 %283, 23
  %285 = and i32 %284, 511
  %286 = load ptr, ptr %14, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.lua_TValue, ptr %286, i32 0, i32 0
  store i32 %285, ptr %287, align 8, !tbaa !16
  %288 = load ptr, ptr %14, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.lua_TValue, ptr %288, i32 0, i32 1
  store i32 1, ptr %289, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  %290 = load i32, ptr %7, align 4, !tbaa !21
  %291 = lshr i32 %290, 14
  %292 = and i32 %291, 511
  %293 = icmp ne i32 %292, 0
  br i1 %293, label %294, label %300

294:                                              ; preds = %281
  %295 = load ptr, ptr %3, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.CallInfo, ptr %295, i32 0, i32 4
  %297 = getelementptr inbounds %struct.anon, ptr %296, i32 0, i32 1
  %298 = load ptr, ptr %297, align 8, !tbaa !16
  %299 = getelementptr inbounds i32, ptr %298, i32 1
  store ptr %299, ptr %297, align 8, !tbaa !16
  br label %300

300:                                              ; preds = %294, %281
  br label %3326

301:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #7
  %302 = load i32, ptr %7, align 4, !tbaa !21
  %303 = lshr i32 %302, 23
  %304 = and i32 %303, 511
  store i32 %304, ptr %15, align 4, !tbaa !21
  br label %305

305:                                              ; preds = %309, %301
  %306 = load ptr, ptr %8, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.lua_TValue, ptr %306, i32 1
  store ptr %307, ptr %8, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.lua_TValue, ptr %306, i32 0, i32 1
  store i32 0, ptr %308, align 8, !tbaa !25
  br label %309

309:                                              ; preds = %305
  %310 = load i32, ptr %15, align 4, !tbaa !21
  %311 = add nsw i32 %310, -1
  store i32 %311, ptr %15, align 4, !tbaa !21
  %312 = icmp ne i32 %310, 0
  br i1 %312, label %305, label %313, !llvm.loop !27

313:                                              ; preds = %309
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  br label %3326

314:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  %315 = load i32, ptr %7, align 4, !tbaa !21
  %316 = lshr i32 %315, 23
  %317 = and i32 %316, 511
  store i32 %317, ptr %16, align 4, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  %318 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %318, ptr %17, align 8, !tbaa !5
  %319 = load ptr, ptr %17, align 8, !tbaa !5
  %320 = load ptr, ptr %4, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct.LClosure, ptr %320, i32 0, i32 6
  %322 = load i32, ptr %16, align 4, !tbaa !21
  %323 = sext i32 %322 to i64
  %324 = getelementptr inbounds [1 x ptr], ptr %321, i64 0, i64 %323
  %325 = load ptr, ptr %324, align 8, !tbaa !5
  %326 = getelementptr inbounds %struct.UpVal, ptr %325, i32 0, i32 0
  %327 = load ptr, ptr %326, align 8, !tbaa !29
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %319, ptr align 8 %327, i64 16, i1 false), !tbaa.struct !24
  %328 = load ptr, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  br label %3326

329:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  %330 = load i32, ptr %7, align 4, !tbaa !21
  %331 = lshr i32 %330, 23
  %332 = and i32 %331, 511
  store i32 %332, ptr %18, align 4, !tbaa !21
  %333 = load ptr, ptr %2, align 8, !tbaa !5
  %334 = load ptr, ptr %4, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.LClosure, ptr %334, i32 0, i32 6
  %336 = load i32, ptr %18, align 4, !tbaa !21
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds [1 x ptr], ptr %335, i64 0, i64 %337
  %339 = load ptr, ptr %338, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.UpVal, ptr %339, i32 0, i32 0
  %341 = load ptr, ptr %340, align 8, !tbaa !29
  %342 = load i32, ptr %7, align 4, !tbaa !21
  %343 = lshr i32 %342, 14
  %344 = and i32 %343, 511
  %345 = and i32 %344, 256
  %346 = icmp ne i32 %345, 0
  br i1 %346, label %347, label %355

347:                                              ; preds = %329
  %348 = load ptr, ptr %5, align 8, !tbaa !5
  %349 = load i32, ptr %7, align 4, !tbaa !21
  %350 = lshr i32 %349, 14
  %351 = and i32 %350, 511
  %352 = and i32 %351, -257
  %353 = sext i32 %352 to i64
  %354 = getelementptr inbounds %struct.lua_TValue, ptr %348, i64 %353
  br label %362

355:                                              ; preds = %329
  %356 = load ptr, ptr %6, align 8, !tbaa !5
  %357 = load i32, ptr %7, align 4, !tbaa !21
  %358 = lshr i32 %357, 14
  %359 = and i32 %358, 511
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds %struct.lua_TValue, ptr %356, i64 %360
  br label %362

362:                                              ; preds = %355, %347
  %363 = phi ptr [ %354, %347 ], [ %361, %355 ]
  %364 = load ptr, ptr %8, align 8, !tbaa !5
  call void @luaV_gettable(ptr noundef %333, ptr noundef %341, ptr noundef %363, ptr noundef %364)
  %365 = load ptr, ptr %3, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.CallInfo, ptr %365, i32 0, i32 4
  %367 = getelementptr inbounds %struct.anon, ptr %366, i32 0, i32 0
  %368 = load ptr, ptr %367, align 8, !tbaa !16
  store ptr %368, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  br label %3326

369:                                              ; preds = %234
  %370 = load ptr, ptr %2, align 8, !tbaa !5
  %371 = load ptr, ptr %6, align 8, !tbaa !5
  %372 = load i32, ptr %7, align 4, !tbaa !21
  %373 = lshr i32 %372, 23
  %374 = and i32 %373, 511
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds %struct.lua_TValue, ptr %371, i64 %375
  %377 = load i32, ptr %7, align 4, !tbaa !21
  %378 = lshr i32 %377, 14
  %379 = and i32 %378, 511
  %380 = and i32 %379, 256
  %381 = icmp ne i32 %380, 0
  br i1 %381, label %382, label %390

382:                                              ; preds = %369
  %383 = load ptr, ptr %5, align 8, !tbaa !5
  %384 = load i32, ptr %7, align 4, !tbaa !21
  %385 = lshr i32 %384, 14
  %386 = and i32 %385, 511
  %387 = and i32 %386, -257
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds %struct.lua_TValue, ptr %383, i64 %388
  br label %397

390:                                              ; preds = %369
  %391 = load ptr, ptr %6, align 8, !tbaa !5
  %392 = load i32, ptr %7, align 4, !tbaa !21
  %393 = lshr i32 %392, 14
  %394 = and i32 %393, 511
  %395 = sext i32 %394 to i64
  %396 = getelementptr inbounds %struct.lua_TValue, ptr %391, i64 %395
  br label %397

397:                                              ; preds = %390, %382
  %398 = phi ptr [ %389, %382 ], [ %396, %390 ]
  %399 = load ptr, ptr %8, align 8, !tbaa !5
  call void @luaV_gettable(ptr noundef %370, ptr noundef %376, ptr noundef %398, ptr noundef %399)
  %400 = load ptr, ptr %3, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.CallInfo, ptr %400, i32 0, i32 4
  %402 = getelementptr inbounds %struct.anon, ptr %401, i32 0, i32 0
  %403 = load ptr, ptr %402, align 8, !tbaa !16
  store ptr %403, ptr %6, align 8, !tbaa !5
  br label %3326

404:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  %405 = load i32, ptr %7, align 4, !tbaa !21
  %406 = lshr i32 %405, 6
  %407 = and i32 %406, 255
  store i32 %407, ptr %19, align 4, !tbaa !21
  %408 = load ptr, ptr %2, align 8, !tbaa !5
  %409 = load ptr, ptr %4, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.LClosure, ptr %409, i32 0, i32 6
  %411 = load i32, ptr %19, align 4, !tbaa !21
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds [1 x ptr], ptr %410, i64 0, i64 %412
  %414 = load ptr, ptr %413, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.UpVal, ptr %414, i32 0, i32 0
  %416 = load ptr, ptr %415, align 8, !tbaa !29
  %417 = load i32, ptr %7, align 4, !tbaa !21
  %418 = lshr i32 %417, 23
  %419 = and i32 %418, 511
  %420 = and i32 %419, 256
  %421 = icmp ne i32 %420, 0
  br i1 %421, label %422, label %430

422:                                              ; preds = %404
  %423 = load ptr, ptr %5, align 8, !tbaa !5
  %424 = load i32, ptr %7, align 4, !tbaa !21
  %425 = lshr i32 %424, 23
  %426 = and i32 %425, 511
  %427 = and i32 %426, -257
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds %struct.lua_TValue, ptr %423, i64 %428
  br label %437

430:                                              ; preds = %404
  %431 = load ptr, ptr %6, align 8, !tbaa !5
  %432 = load i32, ptr %7, align 4, !tbaa !21
  %433 = lshr i32 %432, 23
  %434 = and i32 %433, 511
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds %struct.lua_TValue, ptr %431, i64 %435
  br label %437

437:                                              ; preds = %430, %422
  %438 = phi ptr [ %429, %422 ], [ %436, %430 ]
  %439 = load i32, ptr %7, align 4, !tbaa !21
  %440 = lshr i32 %439, 14
  %441 = and i32 %440, 511
  %442 = and i32 %441, 256
  %443 = icmp ne i32 %442, 0
  br i1 %443, label %444, label %452

444:                                              ; preds = %437
  %445 = load ptr, ptr %5, align 8, !tbaa !5
  %446 = load i32, ptr %7, align 4, !tbaa !21
  %447 = lshr i32 %446, 14
  %448 = and i32 %447, 511
  %449 = and i32 %448, -257
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds %struct.lua_TValue, ptr %445, i64 %450
  br label %459

452:                                              ; preds = %437
  %453 = load ptr, ptr %6, align 8, !tbaa !5
  %454 = load i32, ptr %7, align 4, !tbaa !21
  %455 = lshr i32 %454, 14
  %456 = and i32 %455, 511
  %457 = sext i32 %456 to i64
  %458 = getelementptr inbounds %struct.lua_TValue, ptr %453, i64 %457
  br label %459

459:                                              ; preds = %452, %444
  %460 = phi ptr [ %451, %444 ], [ %458, %452 ]
  call void @luaV_settable(ptr noundef %408, ptr noundef %416, ptr noundef %438, ptr noundef %460)
  %461 = load ptr, ptr %3, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.CallInfo, ptr %461, i32 0, i32 4
  %463 = getelementptr inbounds %struct.anon, ptr %462, i32 0, i32 0
  %464 = load ptr, ptr %463, align 8, !tbaa !16
  store ptr %464, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  br label %3326

465:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  %466 = load ptr, ptr %4, align 8, !tbaa !5
  %467 = getelementptr inbounds %struct.LClosure, ptr %466, i32 0, i32 6
  %468 = load i32, ptr %7, align 4, !tbaa !21
  %469 = lshr i32 %468, 23
  %470 = and i32 %469, 511
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds [1 x ptr], ptr %467, i64 0, i64 %471
  %473 = load ptr, ptr %472, align 8, !tbaa !5
  store ptr %473, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  %474 = load ptr, ptr %20, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct.UpVal, ptr %474, i32 0, i32 0
  %476 = load ptr, ptr %475, align 8, !tbaa !29
  store ptr %476, ptr %21, align 8, !tbaa !5
  %477 = load ptr, ptr %21, align 8, !tbaa !5
  %478 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %477, ptr align 8 %478, i64 16, i1 false), !tbaa.struct !24
  %479 = load ptr, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  %480 = load ptr, ptr %20, align 8, !tbaa !5
  %481 = getelementptr inbounds %struct.UpVal, ptr %480, i32 0, i32 0
  %482 = load ptr, ptr %481, align 8, !tbaa !29
  %483 = getelementptr inbounds %struct.lua_TValue, ptr %482, i32 0, i32 1
  %484 = load i32, ptr %483, align 8, !tbaa !25
  %485 = and i32 %484, 64
  %486 = icmp ne i32 %485, 0
  br i1 %486, label %487, label %497

487:                                              ; preds = %465
  %488 = load ptr, ptr %20, align 8, !tbaa !5
  %489 = getelementptr inbounds %struct.UpVal, ptr %488, i32 0, i32 0
  %490 = load ptr, ptr %489, align 8, !tbaa !29
  %491 = load ptr, ptr %20, align 8, !tbaa !5
  %492 = getelementptr inbounds %struct.UpVal, ptr %491, i32 0, i32 2
  %493 = icmp ne ptr %490, %492
  br i1 %493, label %497, label %494

494:                                              ; preds = %487
  %495 = load ptr, ptr %2, align 8, !tbaa !5
  %496 = load ptr, ptr %20, align 8, !tbaa !5
  call void @luaC_upvalbarrier_(ptr noundef %495, ptr noundef %496)
  br label %497

497:                                              ; preds = %494, %487, %465
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  br label %3326

498:                                              ; preds = %234
  %499 = load ptr, ptr %2, align 8, !tbaa !5
  %500 = load ptr, ptr %8, align 8, !tbaa !5
  %501 = load i32, ptr %7, align 4, !tbaa !21
  %502 = lshr i32 %501, 23
  %503 = and i32 %502, 511
  %504 = and i32 %503, 256
  %505 = icmp ne i32 %504, 0
  br i1 %505, label %506, label %514

506:                                              ; preds = %498
  %507 = load ptr, ptr %5, align 8, !tbaa !5
  %508 = load i32, ptr %7, align 4, !tbaa !21
  %509 = lshr i32 %508, 23
  %510 = and i32 %509, 511
  %511 = and i32 %510, -257
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds %struct.lua_TValue, ptr %507, i64 %512
  br label %521

514:                                              ; preds = %498
  %515 = load ptr, ptr %6, align 8, !tbaa !5
  %516 = load i32, ptr %7, align 4, !tbaa !21
  %517 = lshr i32 %516, 23
  %518 = and i32 %517, 511
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds %struct.lua_TValue, ptr %515, i64 %519
  br label %521

521:                                              ; preds = %514, %506
  %522 = phi ptr [ %513, %506 ], [ %520, %514 ]
  %523 = load i32, ptr %7, align 4, !tbaa !21
  %524 = lshr i32 %523, 14
  %525 = and i32 %524, 511
  %526 = and i32 %525, 256
  %527 = icmp ne i32 %526, 0
  br i1 %527, label %528, label %536

528:                                              ; preds = %521
  %529 = load ptr, ptr %5, align 8, !tbaa !5
  %530 = load i32, ptr %7, align 4, !tbaa !21
  %531 = lshr i32 %530, 14
  %532 = and i32 %531, 511
  %533 = and i32 %532, -257
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds %struct.lua_TValue, ptr %529, i64 %534
  br label %543

536:                                              ; preds = %521
  %537 = load ptr, ptr %6, align 8, !tbaa !5
  %538 = load i32, ptr %7, align 4, !tbaa !21
  %539 = lshr i32 %538, 14
  %540 = and i32 %539, 511
  %541 = sext i32 %540 to i64
  %542 = getelementptr inbounds %struct.lua_TValue, ptr %537, i64 %541
  br label %543

543:                                              ; preds = %536, %528
  %544 = phi ptr [ %535, %528 ], [ %542, %536 ]
  call void @luaV_settable(ptr noundef %499, ptr noundef %500, ptr noundef %522, ptr noundef %544)
  %545 = load ptr, ptr %3, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.CallInfo, ptr %545, i32 0, i32 4
  %547 = getelementptr inbounds %struct.anon, ptr %546, i32 0, i32 0
  %548 = load ptr, ptr %547, align 8, !tbaa !16
  store ptr %548, ptr %6, align 8, !tbaa !5
  br label %3326

549:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #7
  %550 = load i32, ptr %7, align 4, !tbaa !21
  %551 = lshr i32 %550, 23
  %552 = and i32 %551, 511
  store i32 %552, ptr %22, align 4, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  %553 = load i32, ptr %7, align 4, !tbaa !21
  %554 = lshr i32 %553, 14
  %555 = and i32 %554, 511
  store i32 %555, ptr %23, align 4, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  %556 = load ptr, ptr %2, align 8, !tbaa !5
  %557 = call ptr @luaH_new(ptr noundef %556)
  store ptr %557, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %558 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %558, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %559 = load ptr, ptr %24, align 8, !tbaa !5
  store ptr %559, ptr %26, align 8, !tbaa !5
  %560 = load ptr, ptr %26, align 8, !tbaa !5
  %561 = load ptr, ptr %25, align 8, !tbaa !5
  %562 = getelementptr inbounds %struct.lua_TValue, ptr %561, i32 0, i32 0
  store ptr %560, ptr %562, align 8, !tbaa !16
  %563 = load ptr, ptr %25, align 8, !tbaa !5
  %564 = getelementptr inbounds %struct.lua_TValue, ptr %563, i32 0, i32 1
  store i32 69, ptr %564, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  %565 = load i32, ptr %22, align 4, !tbaa !21
  %566 = icmp ne i32 %565, 0
  br i1 %566, label %570, label %567

567:                                              ; preds = %549
  %568 = load i32, ptr %23, align 4, !tbaa !21
  %569 = icmp ne i32 %568, 0
  br i1 %569, label %570, label %577

570:                                              ; preds = %567, %549
  %571 = load ptr, ptr %2, align 8, !tbaa !5
  %572 = load ptr, ptr %24, align 8, !tbaa !5
  %573 = load i32, ptr %22, align 4, !tbaa !21
  %574 = call i32 @luaO_fb2int(i32 noundef %573)
  %575 = load i32, ptr %23, align 4, !tbaa !21
  %576 = call i32 @luaO_fb2int(i32 noundef %575)
  call void @luaH_resize(ptr noundef %571, ptr noundef %572, i32 noundef %574, i32 noundef %576)
  br label %577

577:                                              ; preds = %570, %567
  %578 = load ptr, ptr %2, align 8, !tbaa !5
  %579 = getelementptr inbounds %struct.lua_State, ptr %578, i32 0, i32 5
  %580 = load ptr, ptr %579, align 8, !tbaa !31
  %581 = getelementptr inbounds %struct.global_State, ptr %580, i32 0, i32 3
  %582 = load i64, ptr %581, align 8, !tbaa !32
  %583 = icmp sgt i64 %582, 0
  br i1 %583, label %584, label %595

584:                                              ; preds = %577
  %585 = load ptr, ptr %8, align 8, !tbaa !5
  %586 = getelementptr inbounds %struct.lua_TValue, ptr %585, i64 1
  %587 = load ptr, ptr %2, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.lua_State, ptr %587, i32 0, i32 4
  store ptr %586, ptr %588, align 8, !tbaa !36
  %589 = load ptr, ptr %2, align 8, !tbaa !5
  call void @luaC_step(ptr noundef %589)
  %590 = load ptr, ptr %3, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.CallInfo, ptr %590, i32 0, i32 1
  %592 = load ptr, ptr %591, align 8, !tbaa !37
  %593 = load ptr, ptr %2, align 8, !tbaa !5
  %594 = getelementptr inbounds %struct.lua_State, ptr %593, i32 0, i32 4
  store ptr %592, ptr %594, align 8, !tbaa !36
  br label %595

595:                                              ; preds = %584, %577
  %596 = load ptr, ptr %3, align 8, !tbaa !5
  %597 = getelementptr inbounds %struct.CallInfo, ptr %596, i32 0, i32 4
  %598 = getelementptr inbounds %struct.anon, ptr %597, i32 0, i32 0
  %599 = load ptr, ptr %598, align 8, !tbaa !16
  store ptr %599, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  br label %3326

600:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  %601 = load ptr, ptr %6, align 8, !tbaa !5
  %602 = load i32, ptr %7, align 4, !tbaa !21
  %603 = lshr i32 %602, 23
  %604 = and i32 %603, 511
  %605 = sext i32 %604 to i64
  %606 = getelementptr inbounds %struct.lua_TValue, ptr %601, i64 %605
  store ptr %606, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  %607 = load ptr, ptr %8, align 8, !tbaa !5
  %608 = getelementptr inbounds %struct.lua_TValue, ptr %607, i64 1
  store ptr %608, ptr %28, align 8, !tbaa !5
  %609 = load ptr, ptr %28, align 8, !tbaa !5
  %610 = load ptr, ptr %27, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %609, ptr align 8 %610, i64 16, i1 false), !tbaa.struct !24
  %611 = load ptr, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  %612 = load ptr, ptr %2, align 8, !tbaa !5
  %613 = load ptr, ptr %27, align 8, !tbaa !5
  %614 = load i32, ptr %7, align 4, !tbaa !21
  %615 = lshr i32 %614, 14
  %616 = and i32 %615, 511
  %617 = and i32 %616, 256
  %618 = icmp ne i32 %617, 0
  br i1 %618, label %619, label %627

619:                                              ; preds = %600
  %620 = load ptr, ptr %5, align 8, !tbaa !5
  %621 = load i32, ptr %7, align 4, !tbaa !21
  %622 = lshr i32 %621, 14
  %623 = and i32 %622, 511
  %624 = and i32 %623, -257
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds %struct.lua_TValue, ptr %620, i64 %625
  br label %634

627:                                              ; preds = %600
  %628 = load ptr, ptr %6, align 8, !tbaa !5
  %629 = load i32, ptr %7, align 4, !tbaa !21
  %630 = lshr i32 %629, 14
  %631 = and i32 %630, 511
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds %struct.lua_TValue, ptr %628, i64 %632
  br label %634

634:                                              ; preds = %627, %619
  %635 = phi ptr [ %626, %619 ], [ %633, %627 ]
  %636 = load ptr, ptr %8, align 8, !tbaa !5
  call void @luaV_gettable(ptr noundef %612, ptr noundef %613, ptr noundef %635, ptr noundef %636)
  %637 = load ptr, ptr %3, align 8, !tbaa !5
  %638 = getelementptr inbounds %struct.CallInfo, ptr %637, i32 0, i32 4
  %639 = getelementptr inbounds %struct.anon, ptr %638, i32 0, i32 0
  %640 = load ptr, ptr %639, align 8, !tbaa !16
  store ptr %640, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  br label %3326

641:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  %642 = load i32, ptr %7, align 4, !tbaa !21
  %643 = lshr i32 %642, 23
  %644 = and i32 %643, 511
  %645 = and i32 %644, 256
  %646 = icmp ne i32 %645, 0
  br i1 %646, label %647, label %655

647:                                              ; preds = %641
  %648 = load ptr, ptr %5, align 8, !tbaa !5
  %649 = load i32, ptr %7, align 4, !tbaa !21
  %650 = lshr i32 %649, 23
  %651 = and i32 %650, 511
  %652 = and i32 %651, -257
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds %struct.lua_TValue, ptr %648, i64 %653
  br label %662

655:                                              ; preds = %641
  %656 = load ptr, ptr %6, align 8, !tbaa !5
  %657 = load i32, ptr %7, align 4, !tbaa !21
  %658 = lshr i32 %657, 23
  %659 = and i32 %658, 511
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds %struct.lua_TValue, ptr %656, i64 %660
  br label %662

662:                                              ; preds = %655, %647
  %663 = phi ptr [ %654, %647 ], [ %661, %655 ]
  store ptr %663, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  %664 = load i32, ptr %7, align 4, !tbaa !21
  %665 = lshr i32 %664, 14
  %666 = and i32 %665, 511
  %667 = and i32 %666, 256
  %668 = icmp ne i32 %667, 0
  br i1 %668, label %669, label %677

669:                                              ; preds = %662
  %670 = load ptr, ptr %5, align 8, !tbaa !5
  %671 = load i32, ptr %7, align 4, !tbaa !21
  %672 = lshr i32 %671, 14
  %673 = and i32 %672, 511
  %674 = and i32 %673, -257
  %675 = sext i32 %674 to i64
  %676 = getelementptr inbounds %struct.lua_TValue, ptr %670, i64 %675
  br label %684

677:                                              ; preds = %662
  %678 = load ptr, ptr %6, align 8, !tbaa !5
  %679 = load i32, ptr %7, align 4, !tbaa !21
  %680 = lshr i32 %679, 14
  %681 = and i32 %680, 511
  %682 = sext i32 %681 to i64
  %683 = getelementptr inbounds %struct.lua_TValue, ptr %678, i64 %682
  br label %684

684:                                              ; preds = %677, %669
  %685 = phi ptr [ %676, %669 ], [ %683, %677 ]
  store ptr %685, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  %686 = load ptr, ptr %29, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.lua_TValue, ptr %686, i32 0, i32 1
  %688 = load i32, ptr %687, align 8, !tbaa !25
  %689 = icmp eq i32 %688, 19
  br i1 %689, label %690, label %710

690:                                              ; preds = %684
  %691 = load ptr, ptr %30, align 8, !tbaa !5
  %692 = getelementptr inbounds %struct.lua_TValue, ptr %691, i32 0, i32 1
  %693 = load i32, ptr %692, align 8, !tbaa !25
  %694 = icmp eq i32 %693, 19
  br i1 %694, label %695, label %710

695:                                              ; preds = %690
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  %696 = load ptr, ptr %29, align 8, !tbaa !5
  %697 = getelementptr inbounds %struct.lua_TValue, ptr %696, i32 0, i32 0
  %698 = load i64, ptr %697, align 8, !tbaa !16
  store i64 %698, ptr %33, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %699 = load ptr, ptr %30, align 8, !tbaa !5
  %700 = getelementptr inbounds %struct.lua_TValue, ptr %699, i32 0, i32 0
  %701 = load i64, ptr %700, align 8, !tbaa !16
  store i64 %701, ptr %34, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  %702 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %702, ptr %35, align 8, !tbaa !5
  %703 = load i64, ptr %33, align 8, !tbaa !38
  %704 = load i64, ptr %34, align 8, !tbaa !38
  %705 = add i64 %703, %704
  %706 = load ptr, ptr %35, align 8, !tbaa !5
  %707 = getelementptr inbounds %struct.lua_TValue, ptr %706, i32 0, i32 0
  store i64 %705, ptr %707, align 8, !tbaa !16
  %708 = load ptr, ptr %35, align 8, !tbaa !5
  %709 = getelementptr inbounds %struct.lua_TValue, ptr %708, i32 0, i32 1
  store i32 19, ptr %709, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  br label %755

710:                                              ; preds = %690, %684
  %711 = load ptr, ptr %29, align 8, !tbaa !5
  %712 = getelementptr inbounds %struct.lua_TValue, ptr %711, i32 0, i32 1
  %713 = load i32, ptr %712, align 8, !tbaa !25
  %714 = icmp eq i32 %713, 3
  br i1 %714, label %715, label %719

715:                                              ; preds = %710
  %716 = load ptr, ptr %29, align 8, !tbaa !5
  %717 = getelementptr inbounds %struct.lua_TValue, ptr %716, i32 0, i32 0
  %718 = load double, ptr %717, align 8, !tbaa !16
  store double %718, ptr %31, align 8, !tbaa !40
  br i1 true, label %723, label %745

719:                                              ; preds = %710
  %720 = load ptr, ptr %29, align 8, !tbaa !5
  %721 = call i32 @luaV_tonumber_(ptr noundef %720, ptr noundef %31)
  %722 = icmp ne i32 %721, 0
  br i1 %722, label %723, label %745

723:                                              ; preds = %719, %715
  %724 = load ptr, ptr %30, align 8, !tbaa !5
  %725 = getelementptr inbounds %struct.lua_TValue, ptr %724, i32 0, i32 1
  %726 = load i32, ptr %725, align 8, !tbaa !25
  %727 = icmp eq i32 %726, 3
  br i1 %727, label %728, label %732

728:                                              ; preds = %723
  %729 = load ptr, ptr %30, align 8, !tbaa !5
  %730 = getelementptr inbounds %struct.lua_TValue, ptr %729, i32 0, i32 0
  %731 = load double, ptr %730, align 8, !tbaa !16
  store double %731, ptr %32, align 8, !tbaa !40
  br i1 true, label %736, label %745

732:                                              ; preds = %723
  %733 = load ptr, ptr %30, align 8, !tbaa !5
  %734 = call i32 @luaV_tonumber_(ptr noundef %733, ptr noundef %32)
  %735 = icmp ne i32 %734, 0
  br i1 %735, label %736, label %745

736:                                              ; preds = %732, %728
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #7
  %737 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %737, ptr %36, align 8, !tbaa !5
  %738 = load double, ptr %31, align 8, !tbaa !40
  %739 = load double, ptr %32, align 8, !tbaa !40
  %740 = fadd double %738, %739
  %741 = load ptr, ptr %36, align 8, !tbaa !5
  %742 = getelementptr inbounds %struct.lua_TValue, ptr %741, i32 0, i32 0
  store double %740, ptr %742, align 8, !tbaa !16
  %743 = load ptr, ptr %36, align 8, !tbaa !5
  %744 = getelementptr inbounds %struct.lua_TValue, ptr %743, i32 0, i32 1
  store i32 3, ptr %744, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  br label %754

745:                                              ; preds = %732, %728, %719, %715
  %746 = load ptr, ptr %2, align 8, !tbaa !5
  %747 = load ptr, ptr %29, align 8, !tbaa !5
  %748 = load ptr, ptr %30, align 8, !tbaa !5
  %749 = load ptr, ptr %8, align 8, !tbaa !5
  call void @luaT_trybinTM(ptr noundef %746, ptr noundef %747, ptr noundef %748, ptr noundef %749, i32 noundef 6)
  %750 = load ptr, ptr %3, align 8, !tbaa !5
  %751 = getelementptr inbounds %struct.CallInfo, ptr %750, i32 0, i32 4
  %752 = getelementptr inbounds %struct.anon, ptr %751, i32 0, i32 0
  %753 = load ptr, ptr %752, align 8, !tbaa !16
  store ptr %753, ptr %6, align 8, !tbaa !5
  br label %754

754:                                              ; preds = %745, %736
  br label %755

755:                                              ; preds = %754, %695
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  br label %3326

756:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  %757 = load i32, ptr %7, align 4, !tbaa !21
  %758 = lshr i32 %757, 23
  %759 = and i32 %758, 511
  %760 = and i32 %759, 256
  %761 = icmp ne i32 %760, 0
  br i1 %761, label %762, label %770

762:                                              ; preds = %756
  %763 = load ptr, ptr %5, align 8, !tbaa !5
  %764 = load i32, ptr %7, align 4, !tbaa !21
  %765 = lshr i32 %764, 23
  %766 = and i32 %765, 511
  %767 = and i32 %766, -257
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds %struct.lua_TValue, ptr %763, i64 %768
  br label %777

770:                                              ; preds = %756
  %771 = load ptr, ptr %6, align 8, !tbaa !5
  %772 = load i32, ptr %7, align 4, !tbaa !21
  %773 = lshr i32 %772, 23
  %774 = and i32 %773, 511
  %775 = sext i32 %774 to i64
  %776 = getelementptr inbounds %struct.lua_TValue, ptr %771, i64 %775
  br label %777

777:                                              ; preds = %770, %762
  %778 = phi ptr [ %769, %762 ], [ %776, %770 ]
  store ptr %778, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  %779 = load i32, ptr %7, align 4, !tbaa !21
  %780 = lshr i32 %779, 14
  %781 = and i32 %780, 511
  %782 = and i32 %781, 256
  %783 = icmp ne i32 %782, 0
  br i1 %783, label %784, label %792

784:                                              ; preds = %777
  %785 = load ptr, ptr %5, align 8, !tbaa !5
  %786 = load i32, ptr %7, align 4, !tbaa !21
  %787 = lshr i32 %786, 14
  %788 = and i32 %787, 511
  %789 = and i32 %788, -257
  %790 = sext i32 %789 to i64
  %791 = getelementptr inbounds %struct.lua_TValue, ptr %785, i64 %790
  br label %799

792:                                              ; preds = %777
  %793 = load ptr, ptr %6, align 8, !tbaa !5
  %794 = load i32, ptr %7, align 4, !tbaa !21
  %795 = lshr i32 %794, 14
  %796 = and i32 %795, 511
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds %struct.lua_TValue, ptr %793, i64 %797
  br label %799

799:                                              ; preds = %792, %784
  %800 = phi ptr [ %791, %784 ], [ %798, %792 ]
  store ptr %800, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  %801 = load ptr, ptr %37, align 8, !tbaa !5
  %802 = getelementptr inbounds %struct.lua_TValue, ptr %801, i32 0, i32 1
  %803 = load i32, ptr %802, align 8, !tbaa !25
  %804 = icmp eq i32 %803, 19
  br i1 %804, label %805, label %825

805:                                              ; preds = %799
  %806 = load ptr, ptr %38, align 8, !tbaa !5
  %807 = getelementptr inbounds %struct.lua_TValue, ptr %806, i32 0, i32 1
  %808 = load i32, ptr %807, align 8, !tbaa !25
  %809 = icmp eq i32 %808, 19
  br i1 %809, label %810, label %825

810:                                              ; preds = %805
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  %811 = load ptr, ptr %37, align 8, !tbaa !5
  %812 = getelementptr inbounds %struct.lua_TValue, ptr %811, i32 0, i32 0
  %813 = load i64, ptr %812, align 8, !tbaa !16
  store i64 %813, ptr %41, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  %814 = load ptr, ptr %38, align 8, !tbaa !5
  %815 = getelementptr inbounds %struct.lua_TValue, ptr %814, i32 0, i32 0
  %816 = load i64, ptr %815, align 8, !tbaa !16
  store i64 %816, ptr %42, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  %817 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %817, ptr %43, align 8, !tbaa !5
  %818 = load i64, ptr %41, align 8, !tbaa !38
  %819 = load i64, ptr %42, align 8, !tbaa !38
  %820 = sub i64 %818, %819
  %821 = load ptr, ptr %43, align 8, !tbaa !5
  %822 = getelementptr inbounds %struct.lua_TValue, ptr %821, i32 0, i32 0
  store i64 %820, ptr %822, align 8, !tbaa !16
  %823 = load ptr, ptr %43, align 8, !tbaa !5
  %824 = getelementptr inbounds %struct.lua_TValue, ptr %823, i32 0, i32 1
  store i32 19, ptr %824, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  br label %870

825:                                              ; preds = %805, %799
  %826 = load ptr, ptr %37, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.lua_TValue, ptr %826, i32 0, i32 1
  %828 = load i32, ptr %827, align 8, !tbaa !25
  %829 = icmp eq i32 %828, 3
  br i1 %829, label %830, label %834

830:                                              ; preds = %825
  %831 = load ptr, ptr %37, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.lua_TValue, ptr %831, i32 0, i32 0
  %833 = load double, ptr %832, align 8, !tbaa !16
  store double %833, ptr %39, align 8, !tbaa !40
  br i1 true, label %838, label %860

834:                                              ; preds = %825
  %835 = load ptr, ptr %37, align 8, !tbaa !5
  %836 = call i32 @luaV_tonumber_(ptr noundef %835, ptr noundef %39)
  %837 = icmp ne i32 %836, 0
  br i1 %837, label %838, label %860

838:                                              ; preds = %834, %830
  %839 = load ptr, ptr %38, align 8, !tbaa !5
  %840 = getelementptr inbounds %struct.lua_TValue, ptr %839, i32 0, i32 1
  %841 = load i32, ptr %840, align 8, !tbaa !25
  %842 = icmp eq i32 %841, 3
  br i1 %842, label %843, label %847

843:                                              ; preds = %838
  %844 = load ptr, ptr %38, align 8, !tbaa !5
  %845 = getelementptr inbounds %struct.lua_TValue, ptr %844, i32 0, i32 0
  %846 = load double, ptr %845, align 8, !tbaa !16
  store double %846, ptr %40, align 8, !tbaa !40
  br i1 true, label %851, label %860

847:                                              ; preds = %838
  %848 = load ptr, ptr %38, align 8, !tbaa !5
  %849 = call i32 @luaV_tonumber_(ptr noundef %848, ptr noundef %40)
  %850 = icmp ne i32 %849, 0
  br i1 %850, label %851, label %860

851:                                              ; preds = %847, %843
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  %852 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %852, ptr %44, align 8, !tbaa !5
  %853 = load double, ptr %39, align 8, !tbaa !40
  %854 = load double, ptr %40, align 8, !tbaa !40
  %855 = fsub double %853, %854
  %856 = load ptr, ptr %44, align 8, !tbaa !5
  %857 = getelementptr inbounds %struct.lua_TValue, ptr %856, i32 0, i32 0
  store double %855, ptr %857, align 8, !tbaa !16
  %858 = load ptr, ptr %44, align 8, !tbaa !5
  %859 = getelementptr inbounds %struct.lua_TValue, ptr %858, i32 0, i32 1
  store i32 3, ptr %859, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  br label %869

860:                                              ; preds = %847, %843, %834, %830
  %861 = load ptr, ptr %2, align 8, !tbaa !5
  %862 = load ptr, ptr %37, align 8, !tbaa !5
  %863 = load ptr, ptr %38, align 8, !tbaa !5
  %864 = load ptr, ptr %8, align 8, !tbaa !5
  call void @luaT_trybinTM(ptr noundef %861, ptr noundef %862, ptr noundef %863, ptr noundef %864, i32 noundef 7)
  %865 = load ptr, ptr %3, align 8, !tbaa !5
  %866 = getelementptr inbounds %struct.CallInfo, ptr %865, i32 0, i32 4
  %867 = getelementptr inbounds %struct.anon, ptr %866, i32 0, i32 0
  %868 = load ptr, ptr %867, align 8, !tbaa !16
  store ptr %868, ptr %6, align 8, !tbaa !5
  br label %869

869:                                              ; preds = %860, %851
  br label %870

870:                                              ; preds = %869, %810
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  br label %3326

871:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #7
  %872 = load i32, ptr %7, align 4, !tbaa !21
  %873 = lshr i32 %872, 23
  %874 = and i32 %873, 511
  %875 = and i32 %874, 256
  %876 = icmp ne i32 %875, 0
  br i1 %876, label %877, label %885

877:                                              ; preds = %871
  %878 = load ptr, ptr %5, align 8, !tbaa !5
  %879 = load i32, ptr %7, align 4, !tbaa !21
  %880 = lshr i32 %879, 23
  %881 = and i32 %880, 511
  %882 = and i32 %881, -257
  %883 = sext i32 %882 to i64
  %884 = getelementptr inbounds %struct.lua_TValue, ptr %878, i64 %883
  br label %892

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

892:                                              ; preds = %885, %877
  %893 = phi ptr [ %884, %877 ], [ %891, %885 ]
  store ptr %893, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  %894 = load i32, ptr %7, align 4, !tbaa !21
  %895 = lshr i32 %894, 14
  %896 = and i32 %895, 511
  %897 = and i32 %896, 256
  %898 = icmp ne i32 %897, 0
  br i1 %898, label %899, label %907

899:                                              ; preds = %892
  %900 = load ptr, ptr %5, align 8, !tbaa !5
  %901 = load i32, ptr %7, align 4, !tbaa !21
  %902 = lshr i32 %901, 14
  %903 = and i32 %902, 511
  %904 = and i32 %903, -257
  %905 = sext i32 %904 to i64
  %906 = getelementptr inbounds %struct.lua_TValue, ptr %900, i64 %905
  br label %914

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

914:                                              ; preds = %907, %899
  %915 = phi ptr [ %906, %899 ], [ %913, %907 ]
  store ptr %915, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  %916 = load ptr, ptr %45, align 8, !tbaa !5
  %917 = getelementptr inbounds %struct.lua_TValue, ptr %916, i32 0, i32 1
  %918 = load i32, ptr %917, align 8, !tbaa !25
  %919 = icmp eq i32 %918, 19
  br i1 %919, label %920, label %940

920:                                              ; preds = %914
  %921 = load ptr, ptr %46, align 8, !tbaa !5
  %922 = getelementptr inbounds %struct.lua_TValue, ptr %921, i32 0, i32 1
  %923 = load i32, ptr %922, align 8, !tbaa !25
  %924 = icmp eq i32 %923, 19
  br i1 %924, label %925, label %940

925:                                              ; preds = %920
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #7
  %926 = load ptr, ptr %45, align 8, !tbaa !5
  %927 = getelementptr inbounds %struct.lua_TValue, ptr %926, i32 0, i32 0
  %928 = load i64, ptr %927, align 8, !tbaa !16
  store i64 %928, ptr %49, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #7
  %929 = load ptr, ptr %46, align 8, !tbaa !5
  %930 = getelementptr inbounds %struct.lua_TValue, ptr %929, i32 0, i32 0
  %931 = load i64, ptr %930, align 8, !tbaa !16
  store i64 %931, ptr %50, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #7
  %932 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %932, ptr %51, align 8, !tbaa !5
  %933 = load i64, ptr %49, align 8, !tbaa !38
  %934 = load i64, ptr %50, align 8, !tbaa !38
  %935 = mul i64 %933, %934
  %936 = load ptr, ptr %51, align 8, !tbaa !5
  %937 = getelementptr inbounds %struct.lua_TValue, ptr %936, i32 0, i32 0
  store i64 %935, ptr %937, align 8, !tbaa !16
  %938 = load ptr, ptr %51, align 8, !tbaa !5
  %939 = getelementptr inbounds %struct.lua_TValue, ptr %938, i32 0, i32 1
  store i32 19, ptr %939, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  br label %985

940:                                              ; preds = %920, %914
  %941 = load ptr, ptr %45, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.lua_TValue, ptr %941, i32 0, i32 1
  %943 = load i32, ptr %942, align 8, !tbaa !25
  %944 = icmp eq i32 %943, 3
  br i1 %944, label %945, label %949

945:                                              ; preds = %940
  %946 = load ptr, ptr %45, align 8, !tbaa !5
  %947 = getelementptr inbounds %struct.lua_TValue, ptr %946, i32 0, i32 0
  %948 = load double, ptr %947, align 8, !tbaa !16
  store double %948, ptr %47, align 8, !tbaa !40
  br i1 true, label %953, label %975

949:                                              ; preds = %940
  %950 = load ptr, ptr %45, align 8, !tbaa !5
  %951 = call i32 @luaV_tonumber_(ptr noundef %950, ptr noundef %47)
  %952 = icmp ne i32 %951, 0
  br i1 %952, label %953, label %975

953:                                              ; preds = %949, %945
  %954 = load ptr, ptr %46, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.lua_TValue, ptr %954, i32 0, i32 1
  %956 = load i32, ptr %955, align 8, !tbaa !25
  %957 = icmp eq i32 %956, 3
  br i1 %957, label %958, label %962

958:                                              ; preds = %953
  %959 = load ptr, ptr %46, align 8, !tbaa !5
  %960 = getelementptr inbounds %struct.lua_TValue, ptr %959, i32 0, i32 0
  %961 = load double, ptr %960, align 8, !tbaa !16
  store double %961, ptr %48, align 8, !tbaa !40
  br i1 true, label %966, label %975

962:                                              ; preds = %953
  %963 = load ptr, ptr %46, align 8, !tbaa !5
  %964 = call i32 @luaV_tonumber_(ptr noundef %963, ptr noundef %48)
  %965 = icmp ne i32 %964, 0
  br i1 %965, label %966, label %975

966:                                              ; preds = %962, %958
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #7
  %967 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %967, ptr %52, align 8, !tbaa !5
  %968 = load double, ptr %47, align 8, !tbaa !40
  %969 = load double, ptr %48, align 8, !tbaa !40
  %970 = fmul double %968, %969
  %971 = load ptr, ptr %52, align 8, !tbaa !5
  %972 = getelementptr inbounds %struct.lua_TValue, ptr %971, i32 0, i32 0
  store double %970, ptr %972, align 8, !tbaa !16
  %973 = load ptr, ptr %52, align 8, !tbaa !5
  %974 = getelementptr inbounds %struct.lua_TValue, ptr %973, i32 0, i32 1
  store i32 3, ptr %974, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  br label %984

975:                                              ; preds = %962, %958, %949, %945
  %976 = load ptr, ptr %2, align 8, !tbaa !5
  %977 = load ptr, ptr %45, align 8, !tbaa !5
  %978 = load ptr, ptr %46, align 8, !tbaa !5
  %979 = load ptr, ptr %8, align 8, !tbaa !5
  call void @luaT_trybinTM(ptr noundef %976, ptr noundef %977, ptr noundef %978, ptr noundef %979, i32 noundef 8)
  %980 = load ptr, ptr %3, align 8, !tbaa !5
  %981 = getelementptr inbounds %struct.CallInfo, ptr %980, i32 0, i32 4
  %982 = getelementptr inbounds %struct.anon, ptr %981, i32 0, i32 0
  %983 = load ptr, ptr %982, align 8, !tbaa !16
  store ptr %983, ptr %6, align 8, !tbaa !5
  br label %984

984:                                              ; preds = %975, %966
  br label %985

985:                                              ; preds = %984, %925
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  br label %3326

986:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #7
  %987 = load i32, ptr %7, align 4, !tbaa !21
  %988 = lshr i32 %987, 23
  %989 = and i32 %988, 511
  %990 = and i32 %989, 256
  %991 = icmp ne i32 %990, 0
  br i1 %991, label %992, label %1000

992:                                              ; preds = %986
  %993 = load ptr, ptr %5, align 8, !tbaa !5
  %994 = load i32, ptr %7, align 4, !tbaa !21
  %995 = lshr i32 %994, 23
  %996 = and i32 %995, 511
  %997 = and i32 %996, -257
  %998 = sext i32 %997 to i64
  %999 = getelementptr inbounds %struct.lua_TValue, ptr %993, i64 %998
  br label %1007

1000:                                             ; preds = %986
  %1001 = load ptr, ptr %6, align 8, !tbaa !5
  %1002 = load i32, ptr %7, align 4, !tbaa !21
  %1003 = lshr i32 %1002, 23
  %1004 = and i32 %1003, 511
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds %struct.lua_TValue, ptr %1001, i64 %1005
  br label %1007

1007:                                             ; preds = %1000, %992
  %1008 = phi ptr [ %999, %992 ], [ %1006, %1000 ]
  store ptr %1008, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #7
  %1009 = load i32, ptr %7, align 4, !tbaa !21
  %1010 = lshr i32 %1009, 14
  %1011 = and i32 %1010, 511
  %1012 = and i32 %1011, 256
  %1013 = icmp ne i32 %1012, 0
  br i1 %1013, label %1014, label %1022

1014:                                             ; preds = %1007
  %1015 = load ptr, ptr %5, align 8, !tbaa !5
  %1016 = load i32, ptr %7, align 4, !tbaa !21
  %1017 = lshr i32 %1016, 14
  %1018 = and i32 %1017, 511
  %1019 = and i32 %1018, -257
  %1020 = sext i32 %1019 to i64
  %1021 = getelementptr inbounds %struct.lua_TValue, ptr %1015, i64 %1020
  br label %1029

1022:                                             ; preds = %1007
  %1023 = load ptr, ptr %6, align 8, !tbaa !5
  %1024 = load i32, ptr %7, align 4, !tbaa !21
  %1025 = lshr i32 %1024, 14
  %1026 = and i32 %1025, 511
  %1027 = sext i32 %1026 to i64
  %1028 = getelementptr inbounds %struct.lua_TValue, ptr %1023, i64 %1027
  br label %1029

1029:                                             ; preds = %1022, %1014
  %1030 = phi ptr [ %1021, %1014 ], [ %1028, %1022 ]
  store ptr %1030, ptr %54, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #7
  %1031 = load ptr, ptr %53, align 8, !tbaa !5
  %1032 = getelementptr inbounds %struct.lua_TValue, ptr %1031, i32 0, i32 1
  %1033 = load i32, ptr %1032, align 8, !tbaa !25
  %1034 = icmp eq i32 %1033, 3
  br i1 %1034, label %1035, label %1039

1035:                                             ; preds = %1029
  %1036 = load ptr, ptr %53, align 8, !tbaa !5
  %1037 = getelementptr inbounds %struct.lua_TValue, ptr %1036, i32 0, i32 0
  %1038 = load double, ptr %1037, align 8, !tbaa !16
  store double %1038, ptr %55, align 8, !tbaa !40
  br i1 true, label %1043, label %1065

1039:                                             ; preds = %1029
  %1040 = load ptr, ptr %53, align 8, !tbaa !5
  %1041 = call i32 @luaV_tonumber_(ptr noundef %1040, ptr noundef %55)
  %1042 = icmp ne i32 %1041, 0
  br i1 %1042, label %1043, label %1065

1043:                                             ; preds = %1039, %1035
  %1044 = load ptr, ptr %54, align 8, !tbaa !5
  %1045 = getelementptr inbounds %struct.lua_TValue, ptr %1044, i32 0, i32 1
  %1046 = load i32, ptr %1045, align 8, !tbaa !25
  %1047 = icmp eq i32 %1046, 3
  br i1 %1047, label %1048, label %1052

1048:                                             ; preds = %1043
  %1049 = load ptr, ptr %54, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.lua_TValue, ptr %1049, i32 0, i32 0
  %1051 = load double, ptr %1050, align 8, !tbaa !16
  store double %1051, ptr %56, align 8, !tbaa !40
  br i1 true, label %1056, label %1065

1052:                                             ; preds = %1043
  %1053 = load ptr, ptr %54, align 8, !tbaa !5
  %1054 = call i32 @luaV_tonumber_(ptr noundef %1053, ptr noundef %56)
  %1055 = icmp ne i32 %1054, 0
  br i1 %1055, label %1056, label %1065

1056:                                             ; preds = %1052, %1048
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #7
  %1057 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1057, ptr %57, align 8, !tbaa !5
  %1058 = load double, ptr %55, align 8, !tbaa !40
  %1059 = load double, ptr %56, align 8, !tbaa !40
  %1060 = fdiv double %1058, %1059
  %1061 = load ptr, ptr %57, align 8, !tbaa !5
  %1062 = getelementptr inbounds %struct.lua_TValue, ptr %1061, i32 0, i32 0
  store double %1060, ptr %1062, align 8, !tbaa !16
  %1063 = load ptr, ptr %57, align 8, !tbaa !5
  %1064 = getelementptr inbounds %struct.lua_TValue, ptr %1063, i32 0, i32 1
  store i32 3, ptr %1064, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #7
  br label %1074

1065:                                             ; preds = %1052, %1048, %1039, %1035
  %1066 = load ptr, ptr %2, align 8, !tbaa !5
  %1067 = load ptr, ptr %53, align 8, !tbaa !5
  %1068 = load ptr, ptr %54, align 8, !tbaa !5
  %1069 = load ptr, ptr %8, align 8, !tbaa !5
  call void @luaT_trybinTM(ptr noundef %1066, ptr noundef %1067, ptr noundef %1068, ptr noundef %1069, i32 noundef 11)
  %1070 = load ptr, ptr %3, align 8, !tbaa !5
  %1071 = getelementptr inbounds %struct.CallInfo, ptr %1070, i32 0, i32 4
  %1072 = getelementptr inbounds %struct.anon, ptr %1071, i32 0, i32 0
  %1073 = load ptr, ptr %1072, align 8, !tbaa !16
  store ptr %1073, ptr %6, align 8, !tbaa !5
  br label %1074

1074:                                             ; preds = %1065, %1056
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  br label %3326

1075:                                             ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #7
  %1076 = load i32, ptr %7, align 4, !tbaa !21
  %1077 = lshr i32 %1076, 23
  %1078 = and i32 %1077, 511
  %1079 = and i32 %1078, 256
  %1080 = icmp ne i32 %1079, 0
  br i1 %1080, label %1081, label %1089

1081:                                             ; preds = %1075
  %1082 = load ptr, ptr %5, align 8, !tbaa !5
  %1083 = load i32, ptr %7, align 4, !tbaa !21
  %1084 = lshr i32 %1083, 23
  %1085 = and i32 %1084, 511
  %1086 = and i32 %1085, -257
  %1087 = sext i32 %1086 to i64
  %1088 = getelementptr inbounds %struct.lua_TValue, ptr %1082, i64 %1087
  br label %1096

1089:                                             ; preds = %1075
  %1090 = load ptr, ptr %6, align 8, !tbaa !5
  %1091 = load i32, ptr %7, align 4, !tbaa !21
  %1092 = lshr i32 %1091, 23
  %1093 = and i32 %1092, 511
  %1094 = sext i32 %1093 to i64
  %1095 = getelementptr inbounds %struct.lua_TValue, ptr %1090, i64 %1094
  br label %1096

1096:                                             ; preds = %1089, %1081
  %1097 = phi ptr [ %1088, %1081 ], [ %1095, %1089 ]
  store ptr %1097, ptr %58, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #7
  %1098 = load i32, ptr %7, align 4, !tbaa !21
  %1099 = lshr i32 %1098, 14
  %1100 = and i32 %1099, 511
  %1101 = and i32 %1100, 256
  %1102 = icmp ne i32 %1101, 0
  br i1 %1102, label %1103, label %1111

1103:                                             ; preds = %1096
  %1104 = load ptr, ptr %5, align 8, !tbaa !5
  %1105 = load i32, ptr %7, align 4, !tbaa !21
  %1106 = lshr i32 %1105, 14
  %1107 = and i32 %1106, 511
  %1108 = and i32 %1107, -257
  %1109 = sext i32 %1108 to i64
  %1110 = getelementptr inbounds %struct.lua_TValue, ptr %1104, i64 %1109
  br label %1118

1111:                                             ; preds = %1096
  %1112 = load ptr, ptr %6, align 8, !tbaa !5
  %1113 = load i32, ptr %7, align 4, !tbaa !21
  %1114 = lshr i32 %1113, 14
  %1115 = and i32 %1114, 511
  %1116 = sext i32 %1115 to i64
  %1117 = getelementptr inbounds %struct.lua_TValue, ptr %1112, i64 %1116
  br label %1118

1118:                                             ; preds = %1111, %1103
  %1119 = phi ptr [ %1110, %1103 ], [ %1117, %1111 ]
  store ptr %1119, ptr %59, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #7
  %1120 = load ptr, ptr %58, align 8, !tbaa !5
  %1121 = getelementptr inbounds %struct.lua_TValue, ptr %1120, i32 0, i32 1
  %1122 = load i32, ptr %1121, align 8, !tbaa !25
  %1123 = icmp eq i32 %1122, 19
  br i1 %1123, label %1124, label %1128

1124:                                             ; preds = %1118
  %1125 = load ptr, ptr %58, align 8, !tbaa !5
  %1126 = getelementptr inbounds %struct.lua_TValue, ptr %1125, i32 0, i32 0
  %1127 = load i64, ptr %1126, align 8, !tbaa !16
  store i64 %1127, ptr %60, align 8, !tbaa !38
  br i1 true, label %1132, label %1154

1128:                                             ; preds = %1118
  %1129 = load ptr, ptr %58, align 8, !tbaa !5
  %1130 = call i32 @luaV_tointeger_(ptr noundef %1129, ptr noundef %60)
  %1131 = icmp ne i32 %1130, 0
  br i1 %1131, label %1132, label %1154

1132:                                             ; preds = %1128, %1124
  %1133 = load ptr, ptr %59, align 8, !tbaa !5
  %1134 = getelementptr inbounds %struct.lua_TValue, ptr %1133, i32 0, i32 1
  %1135 = load i32, ptr %1134, align 8, !tbaa !25
  %1136 = icmp eq i32 %1135, 19
  br i1 %1136, label %1137, label %1141

1137:                                             ; preds = %1132
  %1138 = load ptr, ptr %59, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.lua_TValue, ptr %1138, i32 0, i32 0
  %1140 = load i64, ptr %1139, align 8, !tbaa !16
  store i64 %1140, ptr %61, align 8, !tbaa !38
  br i1 true, label %1145, label %1154

1141:                                             ; preds = %1132
  %1142 = load ptr, ptr %59, align 8, !tbaa !5
  %1143 = call i32 @luaV_tointeger_(ptr noundef %1142, ptr noundef %61)
  %1144 = icmp ne i32 %1143, 0
  br i1 %1144, label %1145, label %1154

1145:                                             ; preds = %1141, %1137
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #7
  %1146 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1146, ptr %62, align 8, !tbaa !5
  %1147 = load i64, ptr %60, align 8, !tbaa !38
  %1148 = load i64, ptr %61, align 8, !tbaa !38
  %1149 = and i64 %1147, %1148
  %1150 = load ptr, ptr %62, align 8, !tbaa !5
  %1151 = getelementptr inbounds %struct.lua_TValue, ptr %1150, i32 0, i32 0
  store i64 %1149, ptr %1151, align 8, !tbaa !16
  %1152 = load ptr, ptr %62, align 8, !tbaa !5
  %1153 = getelementptr inbounds %struct.lua_TValue, ptr %1152, i32 0, i32 1
  store i32 19, ptr %1153, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #7
  br label %1163

1154:                                             ; preds = %1141, %1137, %1128, %1124
  %1155 = load ptr, ptr %2, align 8, !tbaa !5
  %1156 = load ptr, ptr %58, align 8, !tbaa !5
  %1157 = load ptr, ptr %59, align 8, !tbaa !5
  %1158 = load ptr, ptr %8, align 8, !tbaa !5
  call void @luaT_trybinTM(ptr noundef %1155, ptr noundef %1156, ptr noundef %1157, ptr noundef %1158, i32 noundef 13)
  %1159 = load ptr, ptr %3, align 8, !tbaa !5
  %1160 = getelementptr inbounds %struct.CallInfo, ptr %1159, i32 0, i32 4
  %1161 = getelementptr inbounds %struct.anon, ptr %1160, i32 0, i32 0
  %1162 = load ptr, ptr %1161, align 8, !tbaa !16
  store ptr %1162, ptr %6, align 8, !tbaa !5
  br label %1163

1163:                                             ; preds = %1154, %1145
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  br label %3326

1164:                                             ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #7
  %1165 = load i32, ptr %7, align 4, !tbaa !21
  %1166 = lshr i32 %1165, 23
  %1167 = and i32 %1166, 511
  %1168 = and i32 %1167, 256
  %1169 = icmp ne i32 %1168, 0
  br i1 %1169, label %1170, label %1178

1170:                                             ; preds = %1164
  %1171 = load ptr, ptr %5, align 8, !tbaa !5
  %1172 = load i32, ptr %7, align 4, !tbaa !21
  %1173 = lshr i32 %1172, 23
  %1174 = and i32 %1173, 511
  %1175 = and i32 %1174, -257
  %1176 = sext i32 %1175 to i64
  %1177 = getelementptr inbounds %struct.lua_TValue, ptr %1171, i64 %1176
  br label %1185

1178:                                             ; preds = %1164
  %1179 = load ptr, ptr %6, align 8, !tbaa !5
  %1180 = load i32, ptr %7, align 4, !tbaa !21
  %1181 = lshr i32 %1180, 23
  %1182 = and i32 %1181, 511
  %1183 = sext i32 %1182 to i64
  %1184 = getelementptr inbounds %struct.lua_TValue, ptr %1179, i64 %1183
  br label %1185

1185:                                             ; preds = %1178, %1170
  %1186 = phi ptr [ %1177, %1170 ], [ %1184, %1178 ]
  store ptr %1186, ptr %63, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #7
  %1187 = load i32, ptr %7, align 4, !tbaa !21
  %1188 = lshr i32 %1187, 14
  %1189 = and i32 %1188, 511
  %1190 = and i32 %1189, 256
  %1191 = icmp ne i32 %1190, 0
  br i1 %1191, label %1192, label %1200

1192:                                             ; preds = %1185
  %1193 = load ptr, ptr %5, align 8, !tbaa !5
  %1194 = load i32, ptr %7, align 4, !tbaa !21
  %1195 = lshr i32 %1194, 14
  %1196 = and i32 %1195, 511
  %1197 = and i32 %1196, -257
  %1198 = sext i32 %1197 to i64
  %1199 = getelementptr inbounds %struct.lua_TValue, ptr %1193, i64 %1198
  br label %1207

1200:                                             ; preds = %1185
  %1201 = load ptr, ptr %6, align 8, !tbaa !5
  %1202 = load i32, ptr %7, align 4, !tbaa !21
  %1203 = lshr i32 %1202, 14
  %1204 = and i32 %1203, 511
  %1205 = sext i32 %1204 to i64
  %1206 = getelementptr inbounds %struct.lua_TValue, ptr %1201, i64 %1205
  br label %1207

1207:                                             ; preds = %1200, %1192
  %1208 = phi ptr [ %1199, %1192 ], [ %1206, %1200 ]
  store ptr %1208, ptr %64, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #7
  %1209 = load ptr, ptr %63, align 8, !tbaa !5
  %1210 = getelementptr inbounds %struct.lua_TValue, ptr %1209, i32 0, i32 1
  %1211 = load i32, ptr %1210, align 8, !tbaa !25
  %1212 = icmp eq i32 %1211, 19
  br i1 %1212, label %1213, label %1217

1213:                                             ; preds = %1207
  %1214 = load ptr, ptr %63, align 8, !tbaa !5
  %1215 = getelementptr inbounds %struct.lua_TValue, ptr %1214, i32 0, i32 0
  %1216 = load i64, ptr %1215, align 8, !tbaa !16
  store i64 %1216, ptr %65, align 8, !tbaa !38
  br i1 true, label %1221, label %1243

1217:                                             ; preds = %1207
  %1218 = load ptr, ptr %63, align 8, !tbaa !5
  %1219 = call i32 @luaV_tointeger_(ptr noundef %1218, ptr noundef %65)
  %1220 = icmp ne i32 %1219, 0
  br i1 %1220, label %1221, label %1243

1221:                                             ; preds = %1217, %1213
  %1222 = load ptr, ptr %64, align 8, !tbaa !5
  %1223 = getelementptr inbounds %struct.lua_TValue, ptr %1222, i32 0, i32 1
  %1224 = load i32, ptr %1223, align 8, !tbaa !25
  %1225 = icmp eq i32 %1224, 19
  br i1 %1225, label %1226, label %1230

1226:                                             ; preds = %1221
  %1227 = load ptr, ptr %64, align 8, !tbaa !5
  %1228 = getelementptr inbounds %struct.lua_TValue, ptr %1227, i32 0, i32 0
  %1229 = load i64, ptr %1228, align 8, !tbaa !16
  store i64 %1229, ptr %66, align 8, !tbaa !38
  br i1 true, label %1234, label %1243

1230:                                             ; preds = %1221
  %1231 = load ptr, ptr %64, align 8, !tbaa !5
  %1232 = call i32 @luaV_tointeger_(ptr noundef %1231, ptr noundef %66)
  %1233 = icmp ne i32 %1232, 0
  br i1 %1233, label %1234, label %1243

1234:                                             ; preds = %1230, %1226
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #7
  %1235 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1235, ptr %67, align 8, !tbaa !5
  %1236 = load i64, ptr %65, align 8, !tbaa !38
  %1237 = load i64, ptr %66, align 8, !tbaa !38
  %1238 = or i64 %1236, %1237
  %1239 = load ptr, ptr %67, align 8, !tbaa !5
  %1240 = getelementptr inbounds %struct.lua_TValue, ptr %1239, i32 0, i32 0
  store i64 %1238, ptr %1240, align 8, !tbaa !16
  %1241 = load ptr, ptr %67, align 8, !tbaa !5
  %1242 = getelementptr inbounds %struct.lua_TValue, ptr %1241, i32 0, i32 1
  store i32 19, ptr %1242, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  br label %1252

1243:                                             ; preds = %1230, %1226, %1217, %1213
  %1244 = load ptr, ptr %2, align 8, !tbaa !5
  %1245 = load ptr, ptr %63, align 8, !tbaa !5
  %1246 = load ptr, ptr %64, align 8, !tbaa !5
  %1247 = load ptr, ptr %8, align 8, !tbaa !5
  call void @luaT_trybinTM(ptr noundef %1244, ptr noundef %1245, ptr noundef %1246, ptr noundef %1247, i32 noundef 14)
  %1248 = load ptr, ptr %3, align 8, !tbaa !5
  %1249 = getelementptr inbounds %struct.CallInfo, ptr %1248, i32 0, i32 4
  %1250 = getelementptr inbounds %struct.anon, ptr %1249, i32 0, i32 0
  %1251 = load ptr, ptr %1250, align 8, !tbaa !16
  store ptr %1251, ptr %6, align 8, !tbaa !5
  br label %1252

1252:                                             ; preds = %1243, %1234
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #7
  br label %3326

1253:                                             ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #7
  %1254 = load i32, ptr %7, align 4, !tbaa !21
  %1255 = lshr i32 %1254, 23
  %1256 = and i32 %1255, 511
  %1257 = and i32 %1256, 256
  %1258 = icmp ne i32 %1257, 0
  br i1 %1258, label %1259, label %1267

1259:                                             ; preds = %1253
  %1260 = load ptr, ptr %5, align 8, !tbaa !5
  %1261 = load i32, ptr %7, align 4, !tbaa !21
  %1262 = lshr i32 %1261, 23
  %1263 = and i32 %1262, 511
  %1264 = and i32 %1263, -257
  %1265 = sext i32 %1264 to i64
  %1266 = getelementptr inbounds %struct.lua_TValue, ptr %1260, i64 %1265
  br label %1274

1267:                                             ; preds = %1253
  %1268 = load ptr, ptr %6, align 8, !tbaa !5
  %1269 = load i32, ptr %7, align 4, !tbaa !21
  %1270 = lshr i32 %1269, 23
  %1271 = and i32 %1270, 511
  %1272 = sext i32 %1271 to i64
  %1273 = getelementptr inbounds %struct.lua_TValue, ptr %1268, i64 %1272
  br label %1274

1274:                                             ; preds = %1267, %1259
  %1275 = phi ptr [ %1266, %1259 ], [ %1273, %1267 ]
  store ptr %1275, ptr %68, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #7
  %1276 = load i32, ptr %7, align 4, !tbaa !21
  %1277 = lshr i32 %1276, 14
  %1278 = and i32 %1277, 511
  %1279 = and i32 %1278, 256
  %1280 = icmp ne i32 %1279, 0
  br i1 %1280, label %1281, label %1289

1281:                                             ; preds = %1274
  %1282 = load ptr, ptr %5, align 8, !tbaa !5
  %1283 = load i32, ptr %7, align 4, !tbaa !21
  %1284 = lshr i32 %1283, 14
  %1285 = and i32 %1284, 511
  %1286 = and i32 %1285, -257
  %1287 = sext i32 %1286 to i64
  %1288 = getelementptr inbounds %struct.lua_TValue, ptr %1282, i64 %1287
  br label %1296

1289:                                             ; preds = %1274
  %1290 = load ptr, ptr %6, align 8, !tbaa !5
  %1291 = load i32, ptr %7, align 4, !tbaa !21
  %1292 = lshr i32 %1291, 14
  %1293 = and i32 %1292, 511
  %1294 = sext i32 %1293 to i64
  %1295 = getelementptr inbounds %struct.lua_TValue, ptr %1290, i64 %1294
  br label %1296

1296:                                             ; preds = %1289, %1281
  %1297 = phi ptr [ %1288, %1281 ], [ %1295, %1289 ]
  store ptr %1297, ptr %69, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #7
  %1298 = load ptr, ptr %68, align 8, !tbaa !5
  %1299 = getelementptr inbounds %struct.lua_TValue, ptr %1298, i32 0, i32 1
  %1300 = load i32, ptr %1299, align 8, !tbaa !25
  %1301 = icmp eq i32 %1300, 19
  br i1 %1301, label %1302, label %1306

1302:                                             ; preds = %1296
  %1303 = load ptr, ptr %68, align 8, !tbaa !5
  %1304 = getelementptr inbounds %struct.lua_TValue, ptr %1303, i32 0, i32 0
  %1305 = load i64, ptr %1304, align 8, !tbaa !16
  store i64 %1305, ptr %70, align 8, !tbaa !38
  br i1 true, label %1310, label %1332

1306:                                             ; preds = %1296
  %1307 = load ptr, ptr %68, align 8, !tbaa !5
  %1308 = call i32 @luaV_tointeger_(ptr noundef %1307, ptr noundef %70)
  %1309 = icmp ne i32 %1308, 0
  br i1 %1309, label %1310, label %1332

1310:                                             ; preds = %1306, %1302
  %1311 = load ptr, ptr %69, align 8, !tbaa !5
  %1312 = getelementptr inbounds %struct.lua_TValue, ptr %1311, i32 0, i32 1
  %1313 = load i32, ptr %1312, align 8, !tbaa !25
  %1314 = icmp eq i32 %1313, 19
  br i1 %1314, label %1315, label %1319

1315:                                             ; preds = %1310
  %1316 = load ptr, ptr %69, align 8, !tbaa !5
  %1317 = getelementptr inbounds %struct.lua_TValue, ptr %1316, i32 0, i32 0
  %1318 = load i64, ptr %1317, align 8, !tbaa !16
  store i64 %1318, ptr %71, align 8, !tbaa !38
  br i1 true, label %1323, label %1332

1319:                                             ; preds = %1310
  %1320 = load ptr, ptr %69, align 8, !tbaa !5
  %1321 = call i32 @luaV_tointeger_(ptr noundef %1320, ptr noundef %71)
  %1322 = icmp ne i32 %1321, 0
  br i1 %1322, label %1323, label %1332

1323:                                             ; preds = %1319, %1315
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #7
  %1324 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1324, ptr %72, align 8, !tbaa !5
  %1325 = load i64, ptr %70, align 8, !tbaa !38
  %1326 = load i64, ptr %71, align 8, !tbaa !38
  %1327 = xor i64 %1325, %1326
  %1328 = load ptr, ptr %72, align 8, !tbaa !5
  %1329 = getelementptr inbounds %struct.lua_TValue, ptr %1328, i32 0, i32 0
  store i64 %1327, ptr %1329, align 8, !tbaa !16
  %1330 = load ptr, ptr %72, align 8, !tbaa !5
  %1331 = getelementptr inbounds %struct.lua_TValue, ptr %1330, i32 0, i32 1
  store i32 19, ptr %1331, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #7
  br label %1341

1332:                                             ; preds = %1319, %1315, %1306, %1302
  %1333 = load ptr, ptr %2, align 8, !tbaa !5
  %1334 = load ptr, ptr %68, align 8, !tbaa !5
  %1335 = load ptr, ptr %69, align 8, !tbaa !5
  %1336 = load ptr, ptr %8, align 8, !tbaa !5
  call void @luaT_trybinTM(ptr noundef %1333, ptr noundef %1334, ptr noundef %1335, ptr noundef %1336, i32 noundef 15)
  %1337 = load ptr, ptr %3, align 8, !tbaa !5
  %1338 = getelementptr inbounds %struct.CallInfo, ptr %1337, i32 0, i32 4
  %1339 = getelementptr inbounds %struct.anon, ptr %1338, i32 0, i32 0
  %1340 = load ptr, ptr %1339, align 8, !tbaa !16
  store ptr %1340, ptr %6, align 8, !tbaa !5
  br label %1341

1341:                                             ; preds = %1332, %1323
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #7
  br label %3326

1342:                                             ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #7
  %1343 = load i32, ptr %7, align 4, !tbaa !21
  %1344 = lshr i32 %1343, 23
  %1345 = and i32 %1344, 511
  %1346 = and i32 %1345, 256
  %1347 = icmp ne i32 %1346, 0
  br i1 %1347, label %1348, label %1356

1348:                                             ; preds = %1342
  %1349 = load ptr, ptr %5, align 8, !tbaa !5
  %1350 = load i32, ptr %7, align 4, !tbaa !21
  %1351 = lshr i32 %1350, 23
  %1352 = and i32 %1351, 511
  %1353 = and i32 %1352, -257
  %1354 = sext i32 %1353 to i64
  %1355 = getelementptr inbounds %struct.lua_TValue, ptr %1349, i64 %1354
  br label %1363

1356:                                             ; preds = %1342
  %1357 = load ptr, ptr %6, align 8, !tbaa !5
  %1358 = load i32, ptr %7, align 4, !tbaa !21
  %1359 = lshr i32 %1358, 23
  %1360 = and i32 %1359, 511
  %1361 = sext i32 %1360 to i64
  %1362 = getelementptr inbounds %struct.lua_TValue, ptr %1357, i64 %1361
  br label %1363

1363:                                             ; preds = %1356, %1348
  %1364 = phi ptr [ %1355, %1348 ], [ %1362, %1356 ]
  store ptr %1364, ptr %73, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #7
  %1365 = load i32, ptr %7, align 4, !tbaa !21
  %1366 = lshr i32 %1365, 14
  %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 = %1363
  %1371 = load ptr, ptr %5, align 8, !tbaa !5
  %1372 = load i32, ptr %7, align 4, !tbaa !21
  %1373 = lshr i32 %1372, 14
  %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 = %1363
  %1379 = load ptr, ptr %6, align 8, !tbaa !5
  %1380 = load i32, ptr %7, align 4, !tbaa !21
  %1381 = lshr i32 %1380, 14
  %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 ]
  store ptr %1386, ptr %74, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #7
  %1387 = load ptr, ptr %73, align 8, !tbaa !5
  %1388 = getelementptr inbounds %struct.lua_TValue, ptr %1387, i32 0, i32 1
  %1389 = load i32, ptr %1388, align 8, !tbaa !25
  %1390 = icmp eq i32 %1389, 19
  br i1 %1390, label %1391, label %1395

1391:                                             ; preds = %1385
  %1392 = load ptr, ptr %73, align 8, !tbaa !5
  %1393 = getelementptr inbounds %struct.lua_TValue, ptr %1392, i32 0, i32 0
  %1394 = load i64, ptr %1393, align 8, !tbaa !16
  store i64 %1394, ptr %75, align 8, !tbaa !38
  br i1 true, label %1399, label %1421

1395:                                             ; preds = %1385
  %1396 = load ptr, ptr %73, align 8, !tbaa !5
  %1397 = call i32 @luaV_tointeger_(ptr noundef %1396, ptr noundef %75)
  %1398 = icmp ne i32 %1397, 0
  br i1 %1398, label %1399, label %1421

1399:                                             ; preds = %1395, %1391
  %1400 = load ptr, ptr %74, align 8, !tbaa !5
  %1401 = getelementptr inbounds %struct.lua_TValue, ptr %1400, i32 0, i32 1
  %1402 = load i32, ptr %1401, align 8, !tbaa !25
  %1403 = icmp eq i32 %1402, 19
  br i1 %1403, label %1404, label %1408

1404:                                             ; preds = %1399
  %1405 = load ptr, ptr %74, align 8, !tbaa !5
  %1406 = getelementptr inbounds %struct.lua_TValue, ptr %1405, i32 0, i32 0
  %1407 = load i64, ptr %1406, align 8, !tbaa !16
  store i64 %1407, ptr %76, align 8, !tbaa !38
  br i1 true, label %1412, label %1421

1408:                                             ; preds = %1399
  %1409 = load ptr, ptr %74, align 8, !tbaa !5
  %1410 = call i32 @luaV_tointeger_(ptr noundef %1409, ptr noundef %76)
  %1411 = icmp ne i32 %1410, 0
  br i1 %1411, label %1412, label %1421

1412:                                             ; preds = %1408, %1404
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #7
  %1413 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1413, ptr %77, align 8, !tbaa !5
  %1414 = load i64, ptr %75, align 8, !tbaa !38
  %1415 = load i64, ptr %76, align 8, !tbaa !38
  %1416 = call i64 @luaV_shiftl(i64 noundef %1414, i64 noundef %1415)
  %1417 = load ptr, ptr %77, align 8, !tbaa !5
  %1418 = getelementptr inbounds %struct.lua_TValue, ptr %1417, i32 0, i32 0
  store i64 %1416, ptr %1418, align 8, !tbaa !16
  %1419 = load ptr, ptr %77, align 8, !tbaa !5
  %1420 = getelementptr inbounds %struct.lua_TValue, ptr %1419, i32 0, i32 1
  store i32 19, ptr %1420, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #7
  br label %1430

1421:                                             ; preds = %1408, %1404, %1395, %1391
  %1422 = load ptr, ptr %2, align 8, !tbaa !5
  %1423 = load ptr, ptr %73, align 8, !tbaa !5
  %1424 = load ptr, ptr %74, align 8, !tbaa !5
  %1425 = load ptr, ptr %8, align 8, !tbaa !5
  call void @luaT_trybinTM(ptr noundef %1422, ptr noundef %1423, ptr noundef %1424, ptr noundef %1425, i32 noundef 16)
  %1426 = load ptr, ptr %3, align 8, !tbaa !5
  %1427 = getelementptr inbounds %struct.CallInfo, ptr %1426, i32 0, i32 4
  %1428 = getelementptr inbounds %struct.anon, ptr %1427, i32 0, i32 0
  %1429 = load ptr, ptr %1428, align 8, !tbaa !16
  store ptr %1429, ptr %6, align 8, !tbaa !5
  br label %1430

1430:                                             ; preds = %1421, %1412
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #7
  br label %3326

1431:                                             ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #7
  %1432 = load i32, ptr %7, align 4, !tbaa !21
  %1433 = lshr i32 %1432, 23
  %1434 = and i32 %1433, 511
  %1435 = and i32 %1434, 256
  %1436 = icmp ne i32 %1435, 0
  br i1 %1436, label %1437, label %1445

1437:                                             ; preds = %1431
  %1438 = load ptr, ptr %5, align 8, !tbaa !5
  %1439 = load i32, ptr %7, align 4, !tbaa !21
  %1440 = lshr i32 %1439, 23
  %1441 = and i32 %1440, 511
  %1442 = and i32 %1441, -257
  %1443 = sext i32 %1442 to i64
  %1444 = getelementptr inbounds %struct.lua_TValue, ptr %1438, i64 %1443
  br label %1452

1445:                                             ; preds = %1431
  %1446 = load ptr, ptr %6, align 8, !tbaa !5
  %1447 = load i32, ptr %7, align 4, !tbaa !21
  %1448 = lshr i32 %1447, 23
  %1449 = and i32 %1448, 511
  %1450 = sext i32 %1449 to i64
  %1451 = getelementptr inbounds %struct.lua_TValue, ptr %1446, i64 %1450
  br label %1452

1452:                                             ; preds = %1445, %1437
  %1453 = phi ptr [ %1444, %1437 ], [ %1451, %1445 ]
  store ptr %1453, ptr %78, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #7
  %1454 = load i32, ptr %7, align 4, !tbaa !21
  %1455 = lshr i32 %1454, 14
  %1456 = and i32 %1455, 511
  %1457 = and i32 %1456, 256
  %1458 = icmp ne i32 %1457, 0
  br i1 %1458, label %1459, label %1467

1459:                                             ; preds = %1452
  %1460 = load ptr, ptr %5, align 8, !tbaa !5
  %1461 = load i32, ptr %7, align 4, !tbaa !21
  %1462 = lshr i32 %1461, 14
  %1463 = and i32 %1462, 511
  %1464 = and i32 %1463, -257
  %1465 = sext i32 %1464 to i64
  %1466 = getelementptr inbounds %struct.lua_TValue, ptr %1460, i64 %1465
  br label %1474

1467:                                             ; preds = %1452
  %1468 = load ptr, ptr %6, align 8, !tbaa !5
  %1469 = load i32, ptr %7, align 4, !tbaa !21
  %1470 = lshr i32 %1469, 14
  %1471 = and i32 %1470, 511
  %1472 = sext i32 %1471 to i64
  %1473 = getelementptr inbounds %struct.lua_TValue, ptr %1468, i64 %1472
  br label %1474

1474:                                             ; preds = %1467, %1459
  %1475 = phi ptr [ %1466, %1459 ], [ %1473, %1467 ]
  store ptr %1475, ptr %79, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #7
  %1476 = load ptr, ptr %78, align 8, !tbaa !5
  %1477 = getelementptr inbounds %struct.lua_TValue, ptr %1476, i32 0, i32 1
  %1478 = load i32, ptr %1477, align 8, !tbaa !25
  %1479 = icmp eq i32 %1478, 19
  br i1 %1479, label %1480, label %1484

1480:                                             ; preds = %1474
  %1481 = load ptr, ptr %78, align 8, !tbaa !5
  %1482 = getelementptr inbounds %struct.lua_TValue, ptr %1481, i32 0, i32 0
  %1483 = load i64, ptr %1482, align 8, !tbaa !16
  store i64 %1483, ptr %80, align 8, !tbaa !38
  br i1 true, label %1488, label %1511

1484:                                             ; preds = %1474
  %1485 = load ptr, ptr %78, align 8, !tbaa !5
  %1486 = call i32 @luaV_tointeger_(ptr noundef %1485, ptr noundef %80)
  %1487 = icmp ne i32 %1486, 0
  br i1 %1487, label %1488, label %1511

1488:                                             ; preds = %1484, %1480
  %1489 = load ptr, ptr %79, align 8, !tbaa !5
  %1490 = getelementptr inbounds %struct.lua_TValue, ptr %1489, i32 0, i32 1
  %1491 = load i32, ptr %1490, align 8, !tbaa !25
  %1492 = icmp eq i32 %1491, 19
  br i1 %1492, label %1493, label %1497

1493:                                             ; preds = %1488
  %1494 = load ptr, ptr %79, align 8, !tbaa !5
  %1495 = getelementptr inbounds %struct.lua_TValue, ptr %1494, i32 0, i32 0
  %1496 = load i64, ptr %1495, align 8, !tbaa !16
  store i64 %1496, ptr %81, align 8, !tbaa !38
  br i1 true, label %1501, label %1511

1497:                                             ; preds = %1488
  %1498 = load ptr, ptr %79, align 8, !tbaa !5
  %1499 = call i32 @luaV_tointeger_(ptr noundef %1498, ptr noundef %81)
  %1500 = icmp ne i32 %1499, 0
  br i1 %1500, label %1501, label %1511

1501:                                             ; preds = %1497, %1493
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #7
  %1502 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1502, ptr %82, align 8, !tbaa !5
  %1503 = load i64, ptr %80, align 8, !tbaa !38
  %1504 = load i64, ptr %81, align 8, !tbaa !38
  %1505 = sub nsw i64 0, %1504
  %1506 = call i64 @luaV_shiftl(i64 noundef %1503, i64 noundef %1505)
  %1507 = load ptr, ptr %82, align 8, !tbaa !5
  %1508 = getelementptr inbounds %struct.lua_TValue, ptr %1507, i32 0, i32 0
  store i64 %1506, ptr %1508, align 8, !tbaa !16
  %1509 = load ptr, ptr %82, align 8, !tbaa !5
  %1510 = getelementptr inbounds %struct.lua_TValue, ptr %1509, i32 0, i32 1
  store i32 19, ptr %1510, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #7
  br label %1520

1511:                                             ; preds = %1497, %1493, %1484, %1480
  %1512 = load ptr, ptr %2, align 8, !tbaa !5
  %1513 = load ptr, ptr %78, align 8, !tbaa !5
  %1514 = load ptr, ptr %79, align 8, !tbaa !5
  %1515 = load ptr, ptr %8, align 8, !tbaa !5
  call void @luaT_trybinTM(ptr noundef %1512, ptr noundef %1513, ptr noundef %1514, ptr noundef %1515, i32 noundef 17)
  %1516 = load ptr, ptr %3, align 8, !tbaa !5
  %1517 = getelementptr inbounds %struct.CallInfo, ptr %1516, i32 0, i32 4
  %1518 = getelementptr inbounds %struct.anon, ptr %1517, i32 0, i32 0
  %1519 = load ptr, ptr %1518, align 8, !tbaa !16
  store ptr %1519, ptr %6, align 8, !tbaa !5
  br label %1520

1520:                                             ; preds = %1511, %1501
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #7
  br label %3326

1521:                                             ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #7
  %1522 = load i32, ptr %7, align 4, !tbaa !21
  %1523 = lshr i32 %1522, 23
  %1524 = and i32 %1523, 511
  %1525 = and i32 %1524, 256
  %1526 = icmp ne i32 %1525, 0
  br i1 %1526, label %1527, label %1535

1527:                                             ; preds = %1521
  %1528 = load ptr, ptr %5, align 8, !tbaa !5
  %1529 = load i32, ptr %7, align 4, !tbaa !21
  %1530 = lshr i32 %1529, 23
  %1531 = and i32 %1530, 511
  %1532 = and i32 %1531, -257
  %1533 = sext i32 %1532 to i64
  %1534 = getelementptr inbounds %struct.lua_TValue, ptr %1528, i64 %1533
  br label %1542

1535:                                             ; preds = %1521
  %1536 = load ptr, ptr %6, align 8, !tbaa !5
  %1537 = load i32, ptr %7, align 4, !tbaa !21
  %1538 = lshr i32 %1537, 23
  %1539 = and i32 %1538, 511
  %1540 = sext i32 %1539 to i64
  %1541 = getelementptr inbounds %struct.lua_TValue, ptr %1536, i64 %1540
  br label %1542

1542:                                             ; preds = %1535, %1527
  %1543 = phi ptr [ %1534, %1527 ], [ %1541, %1535 ]
  store ptr %1543, ptr %83, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #7
  %1544 = load i32, ptr %7, align 4, !tbaa !21
  %1545 = lshr i32 %1544, 14
  %1546 = and i32 %1545, 511
  %1547 = and i32 %1546, 256
  %1548 = icmp ne i32 %1547, 0
  br i1 %1548, label %1549, label %1557

1549:                                             ; preds = %1542
  %1550 = load ptr, ptr %5, align 8, !tbaa !5
  %1551 = load i32, ptr %7, align 4, !tbaa !21
  %1552 = lshr i32 %1551, 14
  %1553 = and i32 %1552, 511
  %1554 = and i32 %1553, -257
  %1555 = sext i32 %1554 to i64
  %1556 = getelementptr inbounds %struct.lua_TValue, ptr %1550, i64 %1555
  br label %1564

1557:                                             ; preds = %1542
  %1558 = load ptr, ptr %6, align 8, !tbaa !5
  %1559 = load i32, ptr %7, align 4, !tbaa !21
  %1560 = lshr i32 %1559, 14
  %1561 = and i32 %1560, 511
  %1562 = sext i32 %1561 to i64
  %1563 = getelementptr inbounds %struct.lua_TValue, ptr %1558, i64 %1562
  br label %1564

1564:                                             ; preds = %1557, %1549
  %1565 = phi ptr [ %1556, %1549 ], [ %1563, %1557 ]
  store ptr %1565, ptr %84, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #7
  %1566 = load ptr, ptr %83, align 8, !tbaa !5
  %1567 = getelementptr inbounds %struct.lua_TValue, ptr %1566, i32 0, i32 1
  %1568 = load i32, ptr %1567, align 8, !tbaa !25
  %1569 = icmp eq i32 %1568, 19
  br i1 %1569, label %1570, label %1591

1570:                                             ; preds = %1564
  %1571 = load ptr, ptr %84, align 8, !tbaa !5
  %1572 = getelementptr inbounds %struct.lua_TValue, ptr %1571, i32 0, i32 1
  %1573 = load i32, ptr %1572, align 8, !tbaa !25
  %1574 = icmp eq i32 %1573, 19
  br i1 %1574, label %1575, label %1591

1575:                                             ; preds = %1570
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #7
  %1576 = load ptr, ptr %83, align 8, !tbaa !5
  %1577 = getelementptr inbounds %struct.lua_TValue, ptr %1576, i32 0, i32 0
  %1578 = load i64, ptr %1577, align 8, !tbaa !16
  store i64 %1578, ptr %87, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #7
  %1579 = load ptr, ptr %84, align 8, !tbaa !5
  %1580 = getelementptr inbounds %struct.lua_TValue, ptr %1579, i32 0, i32 0
  %1581 = load i64, ptr %1580, align 8, !tbaa !16
  store i64 %1581, ptr %88, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #7
  %1582 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1582, ptr %89, align 8, !tbaa !5
  %1583 = load ptr, ptr %2, align 8, !tbaa !5
  %1584 = load i64, ptr %87, align 8, !tbaa !38
  %1585 = load i64, ptr %88, align 8, !tbaa !38
  %1586 = call i64 @luaV_mod(ptr noundef %1583, i64 noundef %1584, i64 noundef %1585)
  %1587 = load ptr, ptr %89, align 8, !tbaa !5
  %1588 = getelementptr inbounds %struct.lua_TValue, ptr %1587, i32 0, i32 0
  store i64 %1586, ptr %1588, align 8, !tbaa !16
  %1589 = load ptr, ptr %89, align 8, !tbaa !5
  %1590 = getelementptr inbounds %struct.lua_TValue, ptr %1589, i32 0, i32 1
  store i32 19, ptr %1590, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #7
  br label %1646

1591:                                             ; preds = %1570, %1564
  %1592 = load ptr, ptr %83, align 8, !tbaa !5
  %1593 = getelementptr inbounds %struct.lua_TValue, ptr %1592, i32 0, i32 1
  %1594 = load i32, ptr %1593, align 8, !tbaa !25
  %1595 = icmp eq i32 %1594, 3
  br i1 %1595, label %1596, label %1600

1596:                                             ; preds = %1591
  %1597 = load ptr, ptr %83, align 8, !tbaa !5
  %1598 = getelementptr inbounds %struct.lua_TValue, ptr %1597, i32 0, i32 0
  %1599 = load double, ptr %1598, align 8, !tbaa !16
  store double %1599, ptr %85, align 8, !tbaa !40
  br i1 true, label %1604, label %1636

1600:                                             ; preds = %1591
  %1601 = load ptr, ptr %83, align 8, !tbaa !5
  %1602 = call i32 @luaV_tonumber_(ptr noundef %1601, ptr noundef %85)
  %1603 = icmp ne i32 %1602, 0
  br i1 %1603, label %1604, label %1636

1604:                                             ; preds = %1600, %1596
  %1605 = load ptr, ptr %84, align 8, !tbaa !5
  %1606 = getelementptr inbounds %struct.lua_TValue, ptr %1605, i32 0, i32 1
  %1607 = load i32, ptr %1606, align 8, !tbaa !25
  %1608 = icmp eq i32 %1607, 3
  br i1 %1608, label %1609, label %1613

1609:                                             ; preds = %1604
  %1610 = load ptr, ptr %84, align 8, !tbaa !5
  %1611 = getelementptr inbounds %struct.lua_TValue, ptr %1610, i32 0, i32 0
  %1612 = load double, ptr %1611, align 8, !tbaa !16
  store double %1612, ptr %86, align 8, !tbaa !40
  br i1 true, label %1617, label %1636

1613:                                             ; preds = %1604
  %1614 = load ptr, ptr %84, align 8, !tbaa !5
  %1615 = call i32 @luaV_tonumber_(ptr noundef %1614, ptr noundef %86)
  %1616 = icmp ne i32 %1615, 0
  br i1 %1616, label %1617, label %1636

1617:                                             ; preds = %1613, %1609
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #7
  %1618 = load double, ptr %85, align 8, !tbaa !40
  %1619 = load double, ptr %86, align 8, !tbaa !40
  %1620 = call double @fmod(double noundef %1618, double noundef %1619) #7
  store double %1620, ptr %90, align 8, !tbaa !40
  %1621 = load double, ptr %90, align 8, !tbaa !40
  %1622 = load double, ptr %86, align 8, !tbaa !40
  %1623 = fmul double %1621, %1622
  %1624 = fcmp olt double %1623, 0.000000e+00
  br i1 %1624, label %1625, label %1629

1625:                                             ; preds = %1617
  %1626 = load double, ptr %86, align 8, !tbaa !40
  %1627 = load double, ptr %90, align 8, !tbaa !40
  %1628 = fadd double %1627, %1626
  store double %1628, ptr %90, align 8, !tbaa !40
  br label %1629

1629:                                             ; preds = %1625, %1617
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #7
  %1630 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1630, ptr %91, align 8, !tbaa !5
  %1631 = load double, ptr %90, align 8, !tbaa !40
  %1632 = load ptr, ptr %91, align 8, !tbaa !5
  %1633 = getelementptr inbounds %struct.lua_TValue, ptr %1632, i32 0, i32 0
  store double %1631, ptr %1633, align 8, !tbaa !16
  %1634 = load ptr, ptr %91, align 8, !tbaa !5
  %1635 = getelementptr inbounds %struct.lua_TValue, ptr %1634, i32 0, i32 1
  store i32 3, ptr %1635, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #7
  br label %1645

1636:                                             ; preds = %1613, %1609, %1600, %1596
  %1637 = load ptr, ptr %2, align 8, !tbaa !5
  %1638 = load ptr, ptr %83, align 8, !tbaa !5
  %1639 = load ptr, ptr %84, align 8, !tbaa !5
  %1640 = load ptr, ptr %8, align 8, !tbaa !5
  call void @luaT_trybinTM(ptr noundef %1637, ptr noundef %1638, ptr noundef %1639, ptr noundef %1640, i32 noundef 9)
  %1641 = load ptr, ptr %3, align 8, !tbaa !5
  %1642 = getelementptr inbounds %struct.CallInfo, ptr %1641, i32 0, i32 4
  %1643 = getelementptr inbounds %struct.anon, ptr %1642, i32 0, i32 0
  %1644 = load ptr, ptr %1643, align 8, !tbaa !16
  store ptr %1644, ptr %6, align 8, !tbaa !5
  br label %1645

1645:                                             ; preds = %1636, %1629
  br label %1646

1646:                                             ; preds = %1645, %1575
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #7
  br label %3326

1647:                                             ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #7
  %1648 = load i32, ptr %7, align 4, !tbaa !21
  %1649 = lshr i32 %1648, 23
  %1650 = and i32 %1649, 511
  %1651 = and i32 %1650, 256
  %1652 = icmp ne i32 %1651, 0
  br i1 %1652, label %1653, label %1661

1653:                                             ; preds = %1647
  %1654 = load ptr, ptr %5, align 8, !tbaa !5
  %1655 = load i32, ptr %7, align 4, !tbaa !21
  %1656 = lshr i32 %1655, 23
  %1657 = and i32 %1656, 511
  %1658 = and i32 %1657, -257
  %1659 = sext i32 %1658 to i64
  %1660 = getelementptr inbounds %struct.lua_TValue, ptr %1654, i64 %1659
  br label %1668

1661:                                             ; preds = %1647
  %1662 = load ptr, ptr %6, align 8, !tbaa !5
  %1663 = load i32, ptr %7, align 4, !tbaa !21
  %1664 = lshr i32 %1663, 23
  %1665 = and i32 %1664, 511
  %1666 = sext i32 %1665 to i64
  %1667 = getelementptr inbounds %struct.lua_TValue, ptr %1662, i64 %1666
  br label %1668

1668:                                             ; preds = %1661, %1653
  %1669 = phi ptr [ %1660, %1653 ], [ %1667, %1661 ]
  store ptr %1669, ptr %92, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #7
  %1670 = load i32, ptr %7, align 4, !tbaa !21
  %1671 = lshr i32 %1670, 14
  %1672 = and i32 %1671, 511
  %1673 = and i32 %1672, 256
  %1674 = icmp ne i32 %1673, 0
  br i1 %1674, label %1675, label %1683

1675:                                             ; preds = %1668
  %1676 = load ptr, ptr %5, align 8, !tbaa !5
  %1677 = load i32, ptr %7, align 4, !tbaa !21
  %1678 = lshr i32 %1677, 14
  %1679 = and i32 %1678, 511
  %1680 = and i32 %1679, -257
  %1681 = sext i32 %1680 to i64
  %1682 = getelementptr inbounds %struct.lua_TValue, ptr %1676, i64 %1681
  br label %1690

1683:                                             ; preds = %1668
  %1684 = load ptr, ptr %6, align 8, !tbaa !5
  %1685 = load i32, ptr %7, align 4, !tbaa !21
  %1686 = lshr i32 %1685, 14
  %1687 = and i32 %1686, 511
  %1688 = sext i32 %1687 to i64
  %1689 = getelementptr inbounds %struct.lua_TValue, ptr %1684, i64 %1688
  br label %1690

1690:                                             ; preds = %1683, %1675
  %1691 = phi ptr [ %1682, %1675 ], [ %1689, %1683 ]
  store ptr %1691, ptr %93, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #7
  %1692 = load ptr, ptr %92, align 8, !tbaa !5
  %1693 = getelementptr inbounds %struct.lua_TValue, ptr %1692, i32 0, i32 1
  %1694 = load i32, ptr %1693, align 8, !tbaa !25
  %1695 = icmp eq i32 %1694, 19
  br i1 %1695, label %1696, label %1717

1696:                                             ; preds = %1690
  %1697 = load ptr, ptr %93, align 8, !tbaa !5
  %1698 = getelementptr inbounds %struct.lua_TValue, ptr %1697, i32 0, i32 1
  %1699 = load i32, ptr %1698, align 8, !tbaa !25
  %1700 = icmp eq i32 %1699, 19
  br i1 %1700, label %1701, label %1717

1701:                                             ; preds = %1696
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #7
  %1702 = load ptr, ptr %92, align 8, !tbaa !5
  %1703 = getelementptr inbounds %struct.lua_TValue, ptr %1702, i32 0, i32 0
  %1704 = load i64, ptr %1703, align 8, !tbaa !16
  store i64 %1704, ptr %96, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #7
  %1705 = load ptr, ptr %93, align 8, !tbaa !5
  %1706 = getelementptr inbounds %struct.lua_TValue, ptr %1705, i32 0, i32 0
  %1707 = load i64, ptr %1706, align 8, !tbaa !16
  store i64 %1707, ptr %97, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #7
  %1708 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1708, ptr %98, align 8, !tbaa !5
  %1709 = load ptr, ptr %2, align 8, !tbaa !5
  %1710 = load i64, ptr %96, align 8, !tbaa !38
  %1711 = load i64, ptr %97, align 8, !tbaa !38
  %1712 = call i64 @luaV_div(ptr noundef %1709, i64 noundef %1710, i64 noundef %1711)
  %1713 = load ptr, ptr %98, align 8, !tbaa !5
  %1714 = getelementptr inbounds %struct.lua_TValue, ptr %1713, i32 0, i32 0
  store i64 %1712, ptr %1714, align 8, !tbaa !16
  %1715 = load ptr, ptr %98, align 8, !tbaa !5
  %1716 = getelementptr inbounds %struct.lua_TValue, ptr %1715, i32 0, i32 1
  store i32 19, ptr %1716, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #7
  br label %1764

1717:                                             ; preds = %1696, %1690
  %1718 = load ptr, ptr %92, align 8, !tbaa !5
  %1719 = getelementptr inbounds %struct.lua_TValue, ptr %1718, i32 0, i32 1
  %1720 = load i32, ptr %1719, align 8, !tbaa !25
  %1721 = icmp eq i32 %1720, 3
  br i1 %1721, label %1722, label %1726

1722:                                             ; preds = %1717
  %1723 = load ptr, ptr %92, align 8, !tbaa !5
  %1724 = getelementptr inbounds %struct.lua_TValue, ptr %1723, i32 0, i32 0
  %1725 = load double, ptr %1724, align 8, !tbaa !16
  store double %1725, ptr %94, align 8, !tbaa !40
  br i1 true, label %1730, label %1754

1726:                                             ; preds = %1717
  %1727 = load ptr, ptr %92, align 8, !tbaa !5
  %1728 = call i32 @luaV_tonumber_(ptr noundef %1727, ptr noundef %94)
  %1729 = icmp ne i32 %1728, 0
  br i1 %1729, label %1730, label %1754

1730:                                             ; preds = %1726, %1722
  %1731 = load ptr, ptr %93, align 8, !tbaa !5
  %1732 = getelementptr inbounds %struct.lua_TValue, ptr %1731, i32 0, i32 1
  %1733 = load i32, ptr %1732, align 8, !tbaa !25
  %1734 = icmp eq i32 %1733, 3
  br i1 %1734, label %1735, label %1739

1735:                                             ; preds = %1730
  %1736 = load ptr, ptr %93, align 8, !tbaa !5
  %1737 = getelementptr inbounds %struct.lua_TValue, ptr %1736, i32 0, i32 0
  %1738 = load double, ptr %1737, align 8, !tbaa !16
  store double %1738, ptr %95, align 8, !tbaa !40
  br i1 true, label %1743, label %1754

1739:                                             ; preds = %1730
  %1740 = load ptr, ptr %93, align 8, !tbaa !5
  %1741 = call i32 @luaV_tonumber_(ptr noundef %1740, ptr noundef %95)
  %1742 = icmp ne i32 %1741, 0
  br i1 %1742, label %1743, label %1754

1743:                                             ; preds = %1739, %1735
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #7
  %1744 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1744, ptr %99, align 8, !tbaa !5
  %1745 = load ptr, ptr %2, align 8, !tbaa !5
  %1746 = load double, ptr %94, align 8, !tbaa !40
  %1747 = load double, ptr %95, align 8, !tbaa !40
  %1748 = fdiv double %1746, %1747
  %1749 = call double @llvm.floor.f64(double %1748)
  %1750 = load ptr, ptr %99, align 8, !tbaa !5
  %1751 = getelementptr inbounds %struct.lua_TValue, ptr %1750, i32 0, i32 0
  store double %1749, ptr %1751, align 8, !tbaa !16
  %1752 = load ptr, ptr %99, align 8, !tbaa !5
  %1753 = getelementptr inbounds %struct.lua_TValue, ptr %1752, i32 0, i32 1
  store i32 3, ptr %1753, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #7
  br label %1763

1754:                                             ; preds = %1739, %1735, %1726, %1722
  %1755 = load ptr, ptr %2, align 8, !tbaa !5
  %1756 = load ptr, ptr %92, align 8, !tbaa !5
  %1757 = load ptr, ptr %93, align 8, !tbaa !5
  %1758 = load ptr, ptr %8, align 8, !tbaa !5
  call void @luaT_trybinTM(ptr noundef %1755, ptr noundef %1756, ptr noundef %1757, ptr noundef %1758, i32 noundef 12)
  %1759 = load ptr, ptr %3, align 8, !tbaa !5
  %1760 = getelementptr inbounds %struct.CallInfo, ptr %1759, i32 0, i32 4
  %1761 = getelementptr inbounds %struct.anon, ptr %1760, i32 0, i32 0
  %1762 = load ptr, ptr %1761, align 8, !tbaa !16
  store ptr %1762, ptr %6, align 8, !tbaa !5
  br label %1763

1763:                                             ; preds = %1754, %1743
  br label %1764

1764:                                             ; preds = %1763, %1701
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #7
  br label %3326

1765:                                             ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #7
  %1766 = load i32, ptr %7, align 4, !tbaa !21
  %1767 = lshr i32 %1766, 23
  %1768 = and i32 %1767, 511
  %1769 = and i32 %1768, 256
  %1770 = icmp ne i32 %1769, 0
  br i1 %1770, label %1771, label %1779

1771:                                             ; preds = %1765
  %1772 = load ptr, ptr %5, align 8, !tbaa !5
  %1773 = load i32, ptr %7, align 4, !tbaa !21
  %1774 = lshr i32 %1773, 23
  %1775 = and i32 %1774, 511
  %1776 = and i32 %1775, -257
  %1777 = sext i32 %1776 to i64
  %1778 = getelementptr inbounds %struct.lua_TValue, ptr %1772, i64 %1777
  br label %1786

1779:                                             ; preds = %1765
  %1780 = load ptr, ptr %6, align 8, !tbaa !5
  %1781 = load i32, ptr %7, align 4, !tbaa !21
  %1782 = lshr i32 %1781, 23
  %1783 = and i32 %1782, 511
  %1784 = sext i32 %1783 to i64
  %1785 = getelementptr inbounds %struct.lua_TValue, ptr %1780, i64 %1784
  br label %1786

1786:                                             ; preds = %1779, %1771
  %1787 = phi ptr [ %1778, %1771 ], [ %1785, %1779 ]
  store ptr %1787, ptr %100, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #7
  %1788 = load i32, ptr %7, align 4, !tbaa !21
  %1789 = lshr i32 %1788, 14
  %1790 = and i32 %1789, 511
  %1791 = and i32 %1790, 256
  %1792 = icmp ne i32 %1791, 0
  br i1 %1792, label %1793, label %1801

1793:                                             ; preds = %1786
  %1794 = load ptr, ptr %5, align 8, !tbaa !5
  %1795 = load i32, ptr %7, align 4, !tbaa !21
  %1796 = lshr i32 %1795, 14
  %1797 = and i32 %1796, 511
  %1798 = and i32 %1797, -257
  %1799 = sext i32 %1798 to i64
  %1800 = getelementptr inbounds %struct.lua_TValue, ptr %1794, i64 %1799
  br label %1808

1801:                                             ; preds = %1786
  %1802 = load ptr, ptr %6, align 8, !tbaa !5
  %1803 = load i32, ptr %7, align 4, !tbaa !21
  %1804 = lshr i32 %1803, 14
  %1805 = and i32 %1804, 511
  %1806 = sext i32 %1805 to i64
  %1807 = getelementptr inbounds %struct.lua_TValue, ptr %1802, i64 %1806
  br label %1808

1808:                                             ; preds = %1801, %1793
  %1809 = phi ptr [ %1800, %1793 ], [ %1807, %1801 ]
  store ptr %1809, ptr %101, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #7
  %1810 = load ptr, ptr %100, align 8, !tbaa !5
  %1811 = getelementptr inbounds %struct.lua_TValue, ptr %1810, i32 0, i32 1
  %1812 = load i32, ptr %1811, align 8, !tbaa !25
  %1813 = icmp eq i32 %1812, 3
  br i1 %1813, label %1814, label %1818

1814:                                             ; preds = %1808
  %1815 = load ptr, ptr %100, align 8, !tbaa !5
  %1816 = getelementptr inbounds %struct.lua_TValue, ptr %1815, i32 0, i32 0
  %1817 = load double, ptr %1816, align 8, !tbaa !16
  store double %1817, ptr %102, align 8, !tbaa !40
  br i1 true, label %1822, label %1845

1818:                                             ; preds = %1808
  %1819 = load ptr, ptr %100, align 8, !tbaa !5
  %1820 = call i32 @luaV_tonumber_(ptr noundef %1819, ptr noundef %102)
  %1821 = icmp ne i32 %1820, 0
  br i1 %1821, label %1822, label %1845

1822:                                             ; preds = %1818, %1814
  %1823 = load ptr, ptr %101, align 8, !tbaa !5
  %1824 = getelementptr inbounds %struct.lua_TValue, ptr %1823, i32 0, i32 1
  %1825 = load i32, ptr %1824, align 8, !tbaa !25
  %1826 = icmp eq i32 %1825, 3
  br i1 %1826, label %1827, label %1831

1827:                                             ; preds = %1822
  %1828 = load ptr, ptr %101, align 8, !tbaa !5
  %1829 = getelementptr inbounds %struct.lua_TValue, ptr %1828, i32 0, i32 0
  %1830 = load double, ptr %1829, align 8, !tbaa !16
  store double %1830, ptr %103, align 8, !tbaa !40
  br i1 true, label %1835, label %1845

1831:                                             ; preds = %1822
  %1832 = load ptr, ptr %101, align 8, !tbaa !5
  %1833 = call i32 @luaV_tonumber_(ptr noundef %1832, ptr noundef %103)
  %1834 = icmp ne i32 %1833, 0
  br i1 %1834, label %1835, label %1845

1835:                                             ; preds = %1831, %1827
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #7
  %1836 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1836, ptr %104, align 8, !tbaa !5
  %1837 = load ptr, ptr %2, align 8, !tbaa !5
  %1838 = load double, ptr %102, align 8, !tbaa !40
  %1839 = load double, ptr %103, align 8, !tbaa !40
  %1840 = call double @pow(double noundef %1838, double noundef %1839) #7
  %1841 = load ptr, ptr %104, align 8, !tbaa !5
  %1842 = getelementptr inbounds %struct.lua_TValue, ptr %1841, i32 0, i32 0
  store double %1840, ptr %1842, align 8, !tbaa !16
  %1843 = load ptr, ptr %104, align 8, !tbaa !5
  %1844 = getelementptr inbounds %struct.lua_TValue, ptr %1843, i32 0, i32 1
  store i32 3, ptr %1844, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #7
  br label %1854

1845:                                             ; preds = %1831, %1827, %1818, %1814
  %1846 = load ptr, ptr %2, align 8, !tbaa !5
  %1847 = load ptr, ptr %100, align 8, !tbaa !5
  %1848 = load ptr, ptr %101, align 8, !tbaa !5
  %1849 = load ptr, ptr %8, align 8, !tbaa !5
  call void @luaT_trybinTM(ptr noundef %1846, ptr noundef %1847, ptr noundef %1848, ptr noundef %1849, i32 noundef 10)
  %1850 = load ptr, ptr %3, align 8, !tbaa !5
  %1851 = getelementptr inbounds %struct.CallInfo, ptr %1850, i32 0, i32 4
  %1852 = getelementptr inbounds %struct.anon, ptr %1851, i32 0, i32 0
  %1853 = load ptr, ptr %1852, align 8, !tbaa !16
  store ptr %1853, ptr %6, align 8, !tbaa !5
  br label %1854

1854:                                             ; preds = %1845, %1835
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #7
  br label %3326

1855:                                             ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #7
  %1856 = load ptr, ptr %6, align 8, !tbaa !5
  %1857 = load i32, ptr %7, align 4, !tbaa !21
  %1858 = lshr i32 %1857, 23
  %1859 = and i32 %1858, 511
  %1860 = sext i32 %1859 to i64
  %1861 = getelementptr inbounds %struct.lua_TValue, ptr %1856, i64 %1860
  store ptr %1861, ptr %105, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #7
  %1862 = load ptr, ptr %105, align 8, !tbaa !5
  %1863 = getelementptr inbounds %struct.lua_TValue, ptr %1862, i32 0, i32 1
  %1864 = load i32, ptr %1863, align 8, !tbaa !25
  %1865 = icmp eq i32 %1864, 19
  br i1 %1865, label %1866, label %1877

1866:                                             ; preds = %1855
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #7
  %1867 = load ptr, ptr %105, align 8, !tbaa !5
  %1868 = getelementptr inbounds %struct.lua_TValue, ptr %1867, i32 0, i32 0
  %1869 = load i64, ptr %1868, align 8, !tbaa !16
  store i64 %1869, ptr %107, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #7
  %1870 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1870, ptr %108, align 8, !tbaa !5
  %1871 = load i64, ptr %107, align 8, !tbaa !38
  %1872 = sub i64 0, %1871
  %1873 = load ptr, ptr %108, align 8, !tbaa !5
  %1874 = getelementptr inbounds %struct.lua_TValue, ptr %1873, i32 0, i32 0
  store i64 %1872, ptr %1874, align 8, !tbaa !16
  %1875 = load ptr, ptr %108, align 8, !tbaa !5
  %1876 = getelementptr inbounds %struct.lua_TValue, ptr %1875, i32 0, i32 1
  store i32 19, ptr %1876, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #7
  br label %1908

1877:                                             ; preds = %1855
  %1878 = load ptr, ptr %105, align 8, !tbaa !5
  %1879 = getelementptr inbounds %struct.lua_TValue, ptr %1878, i32 0, i32 1
  %1880 = load i32, ptr %1879, align 8, !tbaa !25
  %1881 = icmp eq i32 %1880, 3
  br i1 %1881, label %1882, label %1886

1882:                                             ; preds = %1877
  %1883 = load ptr, ptr %105, align 8, !tbaa !5
  %1884 = getelementptr inbounds %struct.lua_TValue, ptr %1883, i32 0, i32 0
  %1885 = load double, ptr %1884, align 8, !tbaa !16
  store double %1885, ptr %106, align 8, !tbaa !40
  br i1 true, label %1890, label %1898

1886:                                             ; preds = %1877
  %1887 = load ptr, ptr %105, align 8, !tbaa !5
  %1888 = call i32 @luaV_tonumber_(ptr noundef %1887, ptr noundef %106)
  %1889 = icmp ne i32 %1888, 0
  br i1 %1889, label %1890, label %1898

1890:                                             ; preds = %1886, %1882
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #7
  %1891 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1891, ptr %109, align 8, !tbaa !5
  %1892 = load double, ptr %106, align 8, !tbaa !40
  %1893 = fneg double %1892
  %1894 = load ptr, ptr %109, align 8, !tbaa !5
  %1895 = getelementptr inbounds %struct.lua_TValue, ptr %1894, i32 0, i32 0
  store double %1893, ptr %1895, align 8, !tbaa !16
  %1896 = load ptr, ptr %109, align 8, !tbaa !5
  %1897 = getelementptr inbounds %struct.lua_TValue, ptr %1896, i32 0, i32 1
  store i32 3, ptr %1897, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #7
  br label %1907

1898:                                             ; preds = %1886, %1882
  %1899 = load ptr, ptr %2, align 8, !tbaa !5
  %1900 = load ptr, ptr %105, align 8, !tbaa !5
  %1901 = load ptr, ptr %105, align 8, !tbaa !5
  %1902 = load ptr, ptr %8, align 8, !tbaa !5
  call void @luaT_trybinTM(ptr noundef %1899, ptr noundef %1900, ptr noundef %1901, ptr noundef %1902, i32 noundef 18)
  %1903 = load ptr, ptr %3, align 8, !tbaa !5
  %1904 = getelementptr inbounds %struct.CallInfo, ptr %1903, i32 0, i32 4
  %1905 = getelementptr inbounds %struct.anon, ptr %1904, i32 0, i32 0
  %1906 = load ptr, ptr %1905, align 8, !tbaa !16
  store ptr %1906, ptr %6, align 8, !tbaa !5
  br label %1907

1907:                                             ; preds = %1898, %1890
  br label %1908

1908:                                             ; preds = %1907, %1866
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #7
  br label %3326

1909:                                             ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #7
  %1910 = load ptr, ptr %6, align 8, !tbaa !5
  %1911 = load i32, ptr %7, align 4, !tbaa !21
  %1912 = lshr i32 %1911, 23
  %1913 = and i32 %1912, 511
  %1914 = sext i32 %1913 to i64
  %1915 = getelementptr inbounds %struct.lua_TValue, ptr %1910, i64 %1914
  store ptr %1915, ptr %110, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #7
  %1916 = load ptr, ptr %110, align 8, !tbaa !5
  %1917 = getelementptr inbounds %struct.lua_TValue, ptr %1916, i32 0, i32 1
  %1918 = load i32, ptr %1917, align 8, !tbaa !25
  %1919 = icmp eq i32 %1918, 19
  br i1 %1919, label %1920, label %1924

1920:                                             ; preds = %1909
  %1921 = load ptr, ptr %110, align 8, !tbaa !5
  %1922 = getelementptr inbounds %struct.lua_TValue, ptr %1921, i32 0, i32 0
  %1923 = load i64, ptr %1922, align 8, !tbaa !16
  store i64 %1923, ptr %111, align 8, !tbaa !38
  br i1 true, label %1928, label %1936

1924:                                             ; preds = %1909
  %1925 = load ptr, ptr %110, align 8, !tbaa !5
  %1926 = call i32 @luaV_tointeger_(ptr noundef %1925, ptr noundef %111)
  %1927 = icmp ne i32 %1926, 0
  br i1 %1927, label %1928, label %1936

1928:                                             ; preds = %1924, %1920
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #7
  %1929 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1929, ptr %112, align 8, !tbaa !5
  %1930 = load i64, ptr %111, align 8, !tbaa !38
  %1931 = xor i64 -1, %1930
  %1932 = load ptr, ptr %112, align 8, !tbaa !5
  %1933 = getelementptr inbounds %struct.lua_TValue, ptr %1932, i32 0, i32 0
  store i64 %1931, ptr %1933, align 8, !tbaa !16
  %1934 = load ptr, ptr %112, align 8, !tbaa !5
  %1935 = getelementptr inbounds %struct.lua_TValue, ptr %1934, i32 0, i32 1
  store i32 19, ptr %1935, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #7
  br label %1945

1936:                                             ; preds = %1924, %1920
  %1937 = load ptr, ptr %2, align 8, !tbaa !5
  %1938 = load ptr, ptr %110, align 8, !tbaa !5
  %1939 = load ptr, ptr %110, align 8, !tbaa !5
  %1940 = load ptr, ptr %8, align 8, !tbaa !5
  call void @luaT_trybinTM(ptr noundef %1937, ptr noundef %1938, ptr noundef %1939, ptr noundef %1940, i32 noundef 19)
  %1941 = load ptr, ptr %3, align 8, !tbaa !5
  %1942 = getelementptr inbounds %struct.CallInfo, ptr %1941, i32 0, i32 4
  %1943 = getelementptr inbounds %struct.anon, ptr %1942, i32 0, i32 0
  %1944 = load ptr, ptr %1943, align 8, !tbaa !16
  store ptr %1944, ptr %6, align 8, !tbaa !5
  br label %1945

1945:                                             ; preds = %1936, %1928
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #7
  br label %3326

1946:                                             ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #7
  %1947 = load ptr, ptr %6, align 8, !tbaa !5
  %1948 = load i32, ptr %7, align 4, !tbaa !21
  %1949 = lshr i32 %1948, 23
  %1950 = and i32 %1949, 511
  %1951 = sext i32 %1950 to i64
  %1952 = getelementptr inbounds %struct.lua_TValue, ptr %1947, i64 %1951
  store ptr %1952, ptr %113, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %114) #7
  %1953 = load ptr, ptr %113, align 8, !tbaa !5
  %1954 = getelementptr inbounds %struct.lua_TValue, ptr %1953, i32 0, i32 1
  %1955 = load i32, ptr %1954, align 8, !tbaa !25
  %1956 = icmp eq i32 %1955, 0
  br i1 %1956, label %1969, label %1957

1957:                                             ; preds = %1946
  %1958 = load ptr, ptr %113, align 8, !tbaa !5
  %1959 = getelementptr inbounds %struct.lua_TValue, ptr %1958, i32 0, i32 1
  %1960 = load i32, ptr %1959, align 8, !tbaa !25
  %1961 = icmp eq i32 %1960, 1
  br i1 %1961, label %1962, label %1967

1962:                                             ; preds = %1957
  %1963 = load ptr, ptr %113, align 8, !tbaa !5
  %1964 = getelementptr inbounds %struct.lua_TValue, ptr %1963, i32 0, i32 0
  %1965 = load i32, ptr %1964, align 8, !tbaa !16
  %1966 = icmp eq i32 %1965, 0
  br label %1967

1967:                                             ; preds = %1962, %1957
  %1968 = phi i1 [ false, %1957 ], [ %1966, %1962 ]
  br label %1969

1969:                                             ; preds = %1967, %1946
  %1970 = phi i1 [ true, %1946 ], [ %1968, %1967 ]
  %1971 = zext i1 %1970 to i32
  store i32 %1971, ptr %114, align 4, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #7
  %1972 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1972, ptr %115, align 8, !tbaa !5
  %1973 = load i32, ptr %114, align 4, !tbaa !21
  %1974 = load ptr, ptr %115, align 8, !tbaa !5
  %1975 = getelementptr inbounds %struct.lua_TValue, ptr %1974, i32 0, i32 0
  store i32 %1973, ptr %1975, align 8, !tbaa !16
  %1976 = load ptr, ptr %115, align 8, !tbaa !5
  %1977 = getelementptr inbounds %struct.lua_TValue, ptr %1976, i32 0, i32 1
  store i32 1, ptr %1977, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #7
  br label %3326

1978:                                             ; preds = %234
  %1979 = load ptr, ptr %2, align 8, !tbaa !5
  %1980 = load ptr, ptr %8, align 8, !tbaa !5
  %1981 = load ptr, ptr %6, align 8, !tbaa !5
  %1982 = load i32, ptr %7, align 4, !tbaa !21
  %1983 = lshr i32 %1982, 23
  %1984 = and i32 %1983, 511
  %1985 = sext i32 %1984 to i64
  %1986 = getelementptr inbounds %struct.lua_TValue, ptr %1981, i64 %1985
  call void @luaV_objlen(ptr noundef %1979, ptr noundef %1980, ptr noundef %1986)
  %1987 = load ptr, ptr %3, align 8, !tbaa !5
  %1988 = getelementptr inbounds %struct.CallInfo, ptr %1987, i32 0, i32 4
  %1989 = getelementptr inbounds %struct.anon, ptr %1988, i32 0, i32 0
  %1990 = load ptr, ptr %1989, align 8, !tbaa !16
  store ptr %1990, ptr %6, align 8, !tbaa !5
  br label %3326

1991:                                             ; preds = %234
  call void @llvm.lifetime.start.p0(i64 4, ptr %116) #7
  %1992 = load i32, ptr %7, align 4, !tbaa !21
  %1993 = lshr i32 %1992, 23
  %1994 = and i32 %1993, 511
  store i32 %1994, ptr %116, align 4, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #7
  %1995 = load i32, ptr %7, align 4, !tbaa !21
  %1996 = lshr i32 %1995, 14
  %1997 = and i32 %1996, 511
  store i32 %1997, ptr %117, align 4, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #7
  %1998 = load ptr, ptr %6, align 8, !tbaa !5
  %1999 = load i32, ptr %117, align 4, !tbaa !21
  %2000 = sext i32 %1999 to i64
  %2001 = getelementptr inbounds %struct.lua_TValue, ptr %1998, i64 %2000
  %2002 = getelementptr inbounds %struct.lua_TValue, ptr %2001, i64 1
  %2003 = load ptr, ptr %2, align 8, !tbaa !5
  %2004 = getelementptr inbounds %struct.lua_State, ptr %2003, i32 0, i32 4
  store ptr %2002, ptr %2004, align 8, !tbaa !36
  %2005 = load ptr, ptr %2, align 8, !tbaa !5
  %2006 = load i32, ptr %117, align 4, !tbaa !21
  %2007 = load i32, ptr %116, align 4, !tbaa !21
  %2008 = sub nsw i32 %2006, %2007
  %2009 = add nsw i32 %2008, 1
  call void @luaV_concat(ptr noundef %2005, i32 noundef %2009)
  %2010 = load ptr, ptr %3, align 8, !tbaa !5
  %2011 = getelementptr inbounds %struct.CallInfo, ptr %2010, i32 0, i32 4
  %2012 = getelementptr inbounds %struct.anon, ptr %2011, i32 0, i32 0
  %2013 = load ptr, ptr %2012, align 8, !tbaa !16
  store ptr %2013, ptr %6, align 8, !tbaa !5
  %2014 = load ptr, ptr %6, align 8, !tbaa !5
  %2015 = load i32, ptr %7, align 4, !tbaa !21
  %2016 = lshr i32 %2015, 6
  %2017 = and i32 %2016, 255
  %2018 = sext i32 %2017 to i64
  %2019 = getelementptr inbounds %struct.lua_TValue, ptr %2014, i64 %2018
  store ptr %2019, ptr %8, align 8, !tbaa !5
  %2020 = load i32, ptr %116, align 4, !tbaa !21
  %2021 = load ptr, ptr %6, align 8, !tbaa !5
  %2022 = sext i32 %2020 to i64
  %2023 = getelementptr inbounds %struct.lua_TValue, ptr %2021, i64 %2022
  store ptr %2023, ptr %118, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #7
  %2024 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %2024, ptr %119, align 8, !tbaa !5
  %2025 = load ptr, ptr %119, align 8, !tbaa !5
  %2026 = load ptr, ptr %118, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2025, ptr align 8 %2026, i64 16, i1 false), !tbaa.struct !24
  %2027 = load ptr, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #7
  %2028 = load ptr, ptr %2, align 8, !tbaa !5
  %2029 = getelementptr inbounds %struct.lua_State, ptr %2028, i32 0, i32 5
  %2030 = load ptr, ptr %2029, align 8, !tbaa !31
  %2031 = getelementptr inbounds %struct.global_State, ptr %2030, i32 0, i32 3
  %2032 = load i64, ptr %2031, align 8, !tbaa !32
  %2033 = icmp sgt i64 %2032, 0
  br i1 %2033, label %2034, label %2053

2034:                                             ; preds = %1991
  %2035 = load ptr, ptr %8, align 8, !tbaa !5
  %2036 = load ptr, ptr %118, align 8, !tbaa !5
  %2037 = icmp uge ptr %2035, %2036
  br i1 %2037, label %2038, label %2041

2038:                                             ; preds = %2034
  %2039 = load ptr, ptr %8, align 8, !tbaa !5
  %2040 = getelementptr inbounds %struct.lua_TValue, ptr %2039, i64 1
  br label %2043

2041:                                             ; preds = %2034
  %2042 = load ptr, ptr %118, align 8, !tbaa !5
  br label %2043

2043:                                             ; preds = %2041, %2038
  %2044 = phi ptr [ %2040, %2038 ], [ %2042, %2041 ]
  %2045 = load ptr, ptr %2, align 8, !tbaa !5
  %2046 = getelementptr inbounds %struct.lua_State, ptr %2045, i32 0, i32 4
  store ptr %2044, ptr %2046, align 8, !tbaa !36
  %2047 = load ptr, ptr %2, align 8, !tbaa !5
  call void @luaC_step(ptr noundef %2047)
  %2048 = load ptr, ptr %3, align 8, !tbaa !5
  %2049 = getelementptr inbounds %struct.CallInfo, ptr %2048, i32 0, i32 1
  %2050 = load ptr, ptr %2049, align 8, !tbaa !37
  %2051 = load ptr, ptr %2, align 8, !tbaa !5
  %2052 = getelementptr inbounds %struct.lua_State, ptr %2051, i32 0, i32 4
  store ptr %2050, ptr %2052, align 8, !tbaa !36
  br label %2053

2053:                                             ; preds = %2043, %1991
  %2054 = load ptr, ptr %3, align 8, !tbaa !5
  %2055 = getelementptr inbounds %struct.CallInfo, ptr %2054, i32 0, i32 4
  %2056 = getelementptr inbounds %struct.anon, ptr %2055, i32 0, i32 0
  %2057 = load ptr, ptr %2056, align 8, !tbaa !16
  store ptr %2057, ptr %6, align 8, !tbaa !5
  %2058 = load ptr, ptr %3, align 8, !tbaa !5
  %2059 = getelementptr inbounds %struct.CallInfo, ptr %2058, i32 0, i32 1
  %2060 = load ptr, ptr %2059, align 8, !tbaa !37
  %2061 = load ptr, ptr %2, align 8, !tbaa !5
  %2062 = getelementptr inbounds %struct.lua_State, ptr %2061, i32 0, i32 4
  store ptr %2060, ptr %2062, align 8, !tbaa !36
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %116) #7
  br label %3326

2063:                                             ; preds = %234
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #7
  %2064 = load i32, ptr %7, align 4, !tbaa !21
  %2065 = lshr i32 %2064, 6
  %2066 = and i32 %2065, 255
  store i32 %2066, ptr %120, align 4, !tbaa !21
  %2067 = load i32, ptr %120, align 4, !tbaa !21
  %2068 = icmp sgt i32 %2067, 0
  br i1 %2068, label %2069, label %2079

2069:                                             ; preds = %2063
  %2070 = load ptr, ptr %2, align 8, !tbaa !5
  %2071 = load ptr, ptr %3, align 8, !tbaa !5
  %2072 = getelementptr inbounds %struct.CallInfo, ptr %2071, i32 0, i32 4
  %2073 = getelementptr inbounds %struct.anon, ptr %2072, i32 0, i32 0
  %2074 = load ptr, ptr %2073, align 8, !tbaa !16
  %2075 = load i32, ptr %120, align 4, !tbaa !21
  %2076 = sext i32 %2075 to i64
  %2077 = getelementptr inbounds %struct.lua_TValue, ptr %2074, i64 %2076
  %2078 = getelementptr inbounds %struct.lua_TValue, ptr %2077, i64 -1
  call void @luaF_close(ptr noundef %2070, ptr noundef %2078)
  br label %2079

2079:                                             ; preds = %2069, %2063
  %2080 = load i32, ptr %7, align 4, !tbaa !21
  %2081 = lshr i32 %2080, 14
  %2082 = and i32 %2081, 262143
  %2083 = sub nsw i32 %2082, 131071
  %2084 = add nsw i32 %2083, 0
  %2085 = load ptr, ptr %3, align 8, !tbaa !5
  %2086 = getelementptr inbounds %struct.CallInfo, ptr %2085, i32 0, i32 4
  %2087 = getelementptr inbounds %struct.anon, ptr %2086, i32 0, i32 1
  %2088 = load ptr, ptr %2087, align 8, !tbaa !16
  %2089 = sext i32 %2084 to i64
  %2090 = getelementptr inbounds i32, ptr %2088, i64 %2089
  store ptr %2090, ptr %2087, align 8, !tbaa !16
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #7
  br label %3326

2091:                                             ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #7
  %2092 = load i32, ptr %7, align 4, !tbaa !21
  %2093 = lshr i32 %2092, 23
  %2094 = and i32 %2093, 511
  %2095 = and i32 %2094, 256
  %2096 = icmp ne i32 %2095, 0
  br i1 %2096, label %2097, label %2105

2097:                                             ; preds = %2091
  %2098 = load ptr, ptr %5, align 8, !tbaa !5
  %2099 = load i32, ptr %7, align 4, !tbaa !21
  %2100 = lshr i32 %2099, 23
  %2101 = and i32 %2100, 511
  %2102 = and i32 %2101, -257
  %2103 = sext i32 %2102 to i64
  %2104 = getelementptr inbounds %struct.lua_TValue, ptr %2098, i64 %2103
  br label %2112

2105:                                             ; preds = %2091
  %2106 = load ptr, ptr %6, align 8, !tbaa !5
  %2107 = load i32, ptr %7, align 4, !tbaa !21
  %2108 = lshr i32 %2107, 23
  %2109 = and i32 %2108, 511
  %2110 = sext i32 %2109 to i64
  %2111 = getelementptr inbounds %struct.lua_TValue, ptr %2106, i64 %2110
  br label %2112

2112:                                             ; preds = %2105, %2097
  %2113 = phi ptr [ %2104, %2097 ], [ %2111, %2105 ]
  store ptr %2113, ptr %121, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #7
  %2114 = load i32, ptr %7, align 4, !tbaa !21
  %2115 = lshr i32 %2114, 14
  %2116 = and i32 %2115, 511
  %2117 = and i32 %2116, 256
  %2118 = icmp ne i32 %2117, 0
  br i1 %2118, label %2119, label %2127

2119:                                             ; preds = %2112
  %2120 = load ptr, ptr %5, align 8, !tbaa !5
  %2121 = load i32, ptr %7, align 4, !tbaa !21
  %2122 = lshr i32 %2121, 14
  %2123 = and i32 %2122, 511
  %2124 = and i32 %2123, -257
  %2125 = sext i32 %2124 to i64
  %2126 = getelementptr inbounds %struct.lua_TValue, ptr %2120, i64 %2125
  br label %2134

2127:                                             ; preds = %2112
  %2128 = load ptr, ptr %6, align 8, !tbaa !5
  %2129 = load i32, ptr %7, align 4, !tbaa !21
  %2130 = lshr i32 %2129, 14
  %2131 = and i32 %2130, 511
  %2132 = sext i32 %2131 to i64
  %2133 = getelementptr inbounds %struct.lua_TValue, ptr %2128, i64 %2132
  br label %2134

2134:                                             ; preds = %2127, %2119
  %2135 = phi ptr [ %2126, %2119 ], [ %2133, %2127 ]
  store ptr %2135, ptr %122, align 8, !tbaa !5
  %2136 = load ptr, ptr %2, align 8, !tbaa !5
  %2137 = load ptr, ptr %121, align 8, !tbaa !5
  %2138 = load ptr, ptr %122, align 8, !tbaa !5
  %2139 = call i32 @luaV_equalobj(ptr noundef %2136, ptr noundef %2137, ptr noundef %2138)
  %2140 = load i32, ptr %7, align 4, !tbaa !21
  %2141 = lshr i32 %2140, 6
  %2142 = and i32 %2141, 255
  %2143 = icmp ne i32 %2139, %2142
  br i1 %2143, label %2144, label %2150

2144:                                             ; preds = %2134
  %2145 = load ptr, ptr %3, align 8, !tbaa !5
  %2146 = getelementptr inbounds %struct.CallInfo, ptr %2145, i32 0, i32 4
  %2147 = getelementptr inbounds %struct.anon, ptr %2146, i32 0, i32 1
  %2148 = load ptr, ptr %2147, align 8, !tbaa !16
  %2149 = getelementptr inbounds i32, ptr %2148, i32 1
  store ptr %2149, ptr %2147, align 8, !tbaa !16
  br label %2183

2150:                                             ; preds = %2134
  %2151 = load ptr, ptr %3, align 8, !tbaa !5
  %2152 = getelementptr inbounds %struct.CallInfo, ptr %2151, i32 0, i32 4
  %2153 = getelementptr inbounds %struct.anon, ptr %2152, i32 0, i32 1
  %2154 = load ptr, ptr %2153, align 8, !tbaa !16
  %2155 = load i32, ptr %2154, align 4, !tbaa !21
  store i32 %2155, ptr %7, align 4, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 4, ptr %123) #7
  %2156 = load i32, ptr %7, align 4, !tbaa !21
  %2157 = lshr i32 %2156, 6
  %2158 = and i32 %2157, 255
  store i32 %2158, ptr %123, align 4, !tbaa !21
  %2159 = load i32, ptr %123, align 4, !tbaa !21
  %2160 = icmp sgt i32 %2159, 0
  br i1 %2160, label %2161, label %2171

2161:                                             ; preds = %2150
  %2162 = load ptr, ptr %2, align 8, !tbaa !5
  %2163 = load ptr, ptr %3, align 8, !tbaa !5
  %2164 = getelementptr inbounds %struct.CallInfo, ptr %2163, i32 0, i32 4
  %2165 = getelementptr inbounds %struct.anon, ptr %2164, i32 0, i32 0
  %2166 = load ptr, ptr %2165, align 8, !tbaa !16
  %2167 = load i32, ptr %123, align 4, !tbaa !21
  %2168 = sext i32 %2167 to i64
  %2169 = getelementptr inbounds %struct.lua_TValue, ptr %2166, i64 %2168
  %2170 = getelementptr inbounds %struct.lua_TValue, ptr %2169, i64 -1
  call void @luaF_close(ptr noundef %2162, ptr noundef %2170)
  br label %2171

2171:                                             ; preds = %2161, %2150
  %2172 = load i32, ptr %7, align 4, !tbaa !21
  %2173 = lshr i32 %2172, 14
  %2174 = and i32 %2173, 262143
  %2175 = sub nsw i32 %2174, 131071
  %2176 = add nsw i32 %2175, 1
  %2177 = load ptr, ptr %3, align 8, !tbaa !5
  %2178 = getelementptr inbounds %struct.CallInfo, ptr %2177, i32 0, i32 4
  %2179 = getelementptr inbounds %struct.anon, ptr %2178, i32 0, i32 1
  %2180 = load ptr, ptr %2179, align 8, !tbaa !16
  %2181 = sext i32 %2176 to i64
  %2182 = getelementptr inbounds i32, ptr %2180, i64 %2181
  store ptr %2182, ptr %2179, align 8, !tbaa !16
  call void @llvm.lifetime.end.p0(i64 4, ptr %123) #7
  br label %2183

2183:                                             ; preds = %2171, %2144
  %2184 = load ptr, ptr %3, align 8, !tbaa !5
  %2185 = getelementptr inbounds %struct.CallInfo, ptr %2184, i32 0, i32 4
  %2186 = getelementptr inbounds %struct.anon, ptr %2185, i32 0, i32 0
  %2187 = load ptr, ptr %2186, align 8, !tbaa !16
  store ptr %2187, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #7
  br label %3326

2188:                                             ; preds = %234
  %2189 = load ptr, ptr %2, align 8, !tbaa !5
  %2190 = load i32, ptr %7, align 4, !tbaa !21
  %2191 = lshr i32 %2190, 23
  %2192 = and i32 %2191, 511
  %2193 = and i32 %2192, 256
  %2194 = icmp ne i32 %2193, 0
  br i1 %2194, label %2195, label %2203

2195:                                             ; preds = %2188
  %2196 = load ptr, ptr %5, align 8, !tbaa !5
  %2197 = load i32, ptr %7, align 4, !tbaa !21
  %2198 = lshr i32 %2197, 23
  %2199 = and i32 %2198, 511
  %2200 = and i32 %2199, -257
  %2201 = sext i32 %2200 to i64
  %2202 = getelementptr inbounds %struct.lua_TValue, ptr %2196, i64 %2201
  br label %2210

2203:                                             ; preds = %2188
  %2204 = load ptr, ptr %6, align 8, !tbaa !5
  %2205 = load i32, ptr %7, align 4, !tbaa !21
  %2206 = lshr i32 %2205, 23
  %2207 = and i32 %2206, 511
  %2208 = sext i32 %2207 to i64
  %2209 = getelementptr inbounds %struct.lua_TValue, ptr %2204, i64 %2208
  br label %2210

2210:                                             ; preds = %2203, %2195
  %2211 = phi ptr [ %2202, %2195 ], [ %2209, %2203 ]
  %2212 = load i32, ptr %7, align 4, !tbaa !21
  %2213 = lshr i32 %2212, 14
  %2214 = and i32 %2213, 511
  %2215 = and i32 %2214, 256
  %2216 = icmp ne i32 %2215, 0
  br i1 %2216, label %2217, label %2225

2217:                                             ; preds = %2210
  %2218 = load ptr, ptr %5, align 8, !tbaa !5
  %2219 = load i32, ptr %7, align 4, !tbaa !21
  %2220 = lshr i32 %2219, 14
  %2221 = and i32 %2220, 511
  %2222 = and i32 %2221, -257
  %2223 = sext i32 %2222 to i64
  %2224 = getelementptr inbounds %struct.lua_TValue, ptr %2218, i64 %2223
  br label %2232

2225:                                             ; preds = %2210
  %2226 = load ptr, ptr %6, align 8, !tbaa !5
  %2227 = load i32, ptr %7, align 4, !tbaa !21
  %2228 = lshr i32 %2227, 14
  %2229 = and i32 %2228, 511
  %2230 = sext i32 %2229 to i64
  %2231 = getelementptr inbounds %struct.lua_TValue, ptr %2226, i64 %2230
  br label %2232

2232:                                             ; preds = %2225, %2217
  %2233 = phi ptr [ %2224, %2217 ], [ %2231, %2225 ]
  %2234 = call i32 @luaV_lessthan(ptr noundef %2189, ptr noundef %2211, ptr noundef %2233)
  %2235 = load i32, ptr %7, align 4, !tbaa !21
  %2236 = lshr i32 %2235, 6
  %2237 = and i32 %2236, 255
  %2238 = icmp ne i32 %2234, %2237
  br i1 %2238, label %2239, label %2245

2239:                                             ; preds = %2232
  %2240 = load ptr, ptr %3, align 8, !tbaa !5
  %2241 = getelementptr inbounds %struct.CallInfo, ptr %2240, i32 0, i32 4
  %2242 = getelementptr inbounds %struct.anon, ptr %2241, i32 0, i32 1
  %2243 = load ptr, ptr %2242, align 8, !tbaa !16
  %2244 = getelementptr inbounds i32, ptr %2243, i32 1
  store ptr %2244, ptr %2242, align 8, !tbaa !16
  br label %2278

2245:                                             ; preds = %2232
  %2246 = load ptr, ptr %3, align 8, !tbaa !5
  %2247 = getelementptr inbounds %struct.CallInfo, ptr %2246, i32 0, i32 4
  %2248 = getelementptr inbounds %struct.anon, ptr %2247, i32 0, i32 1
  %2249 = load ptr, ptr %2248, align 8, !tbaa !16
  %2250 = load i32, ptr %2249, align 4, !tbaa !21
  store i32 %2250, ptr %7, align 4, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 4, ptr %124) #7
  %2251 = load i32, ptr %7, align 4, !tbaa !21
  %2252 = lshr i32 %2251, 6
  %2253 = and i32 %2252, 255
  store i32 %2253, ptr %124, align 4, !tbaa !21
  %2254 = load i32, ptr %124, align 4, !tbaa !21
  %2255 = icmp sgt i32 %2254, 0
  br i1 %2255, label %2256, label %2266

2256:                                             ; preds = %2245
  %2257 = load ptr, ptr %2, align 8, !tbaa !5
  %2258 = load ptr, ptr %3, align 8, !tbaa !5
  %2259 = getelementptr inbounds %struct.CallInfo, ptr %2258, i32 0, i32 4
  %2260 = getelementptr inbounds %struct.anon, ptr %2259, i32 0, i32 0
  %2261 = load ptr, ptr %2260, align 8, !tbaa !16
  %2262 = load i32, ptr %124, align 4, !tbaa !21
  %2263 = sext i32 %2262 to i64
  %2264 = getelementptr inbounds %struct.lua_TValue, ptr %2261, i64 %2263
  %2265 = getelementptr inbounds %struct.lua_TValue, ptr %2264, i64 -1
  call void @luaF_close(ptr noundef %2257, ptr noundef %2265)
  br label %2266

2266:                                             ; preds = %2256, %2245
  %2267 = load i32, ptr %7, align 4, !tbaa !21
  %2268 = lshr i32 %2267, 14
  %2269 = and i32 %2268, 262143
  %2270 = sub nsw i32 %2269, 131071
  %2271 = add nsw i32 %2270, 1
  %2272 = load ptr, ptr %3, align 8, !tbaa !5
  %2273 = getelementptr inbounds %struct.CallInfo, ptr %2272, i32 0, i32 4
  %2274 = getelementptr inbounds %struct.anon, ptr %2273, i32 0, i32 1
  %2275 = load ptr, ptr %2274, align 8, !tbaa !16
  %2276 = sext i32 %2271 to i64
  %2277 = getelementptr inbounds i32, ptr %2275, i64 %2276
  store ptr %2277, ptr %2274, align 8, !tbaa !16
  call void @llvm.lifetime.end.p0(i64 4, ptr %124) #7
  br label %2278

2278:                                             ; preds = %2266, %2239
  %2279 = load ptr, ptr %3, align 8, !tbaa !5
  %2280 = getelementptr inbounds %struct.CallInfo, ptr %2279, i32 0, i32 4
  %2281 = getelementptr inbounds %struct.anon, ptr %2280, i32 0, i32 0
  %2282 = load ptr, ptr %2281, align 8, !tbaa !16
  store ptr %2282, ptr %6, align 8, !tbaa !5
  br label %3326

2283:                                             ; preds = %234
  %2284 = load ptr, ptr %2, align 8, !tbaa !5
  %2285 = load i32, ptr %7, align 4, !tbaa !21
  %2286 = lshr i32 %2285, 23
  %2287 = and i32 %2286, 511
  %2288 = and i32 %2287, 256
  %2289 = icmp ne i32 %2288, 0
  br i1 %2289, label %2290, label %2298

2290:                                             ; preds = %2283
  %2291 = load ptr, ptr %5, align 8, !tbaa !5
  %2292 = load i32, ptr %7, align 4, !tbaa !21
  %2293 = lshr i32 %2292, 23
  %2294 = and i32 %2293, 511
  %2295 = and i32 %2294, -257
  %2296 = sext i32 %2295 to i64
  %2297 = getelementptr inbounds %struct.lua_TValue, ptr %2291, i64 %2296
  br label %2305

2298:                                             ; preds = %2283
  %2299 = load ptr, ptr %6, align 8, !tbaa !5
  %2300 = load i32, ptr %7, align 4, !tbaa !21
  %2301 = lshr i32 %2300, 23
  %2302 = and i32 %2301, 511
  %2303 = sext i32 %2302 to i64
  %2304 = getelementptr inbounds %struct.lua_TValue, ptr %2299, i64 %2303
  br label %2305

2305:                                             ; preds = %2298, %2290
  %2306 = phi ptr [ %2297, %2290 ], [ %2304, %2298 ]
  %2307 = load i32, ptr %7, align 4, !tbaa !21
  %2308 = lshr i32 %2307, 14
  %2309 = and i32 %2308, 511
  %2310 = and i32 %2309, 256
  %2311 = icmp ne i32 %2310, 0
  br i1 %2311, label %2312, label %2320

2312:                                             ; preds = %2305
  %2313 = load ptr, ptr %5, align 8, !tbaa !5
  %2314 = load i32, ptr %7, align 4, !tbaa !21
  %2315 = lshr i32 %2314, 14
  %2316 = and i32 %2315, 511
  %2317 = and i32 %2316, -257
  %2318 = sext i32 %2317 to i64
  %2319 = getelementptr inbounds %struct.lua_TValue, ptr %2313, i64 %2318
  br label %2327

2320:                                             ; preds = %2305
  %2321 = load ptr, ptr %6, align 8, !tbaa !5
  %2322 = load i32, ptr %7, align 4, !tbaa !21
  %2323 = lshr i32 %2322, 14
  %2324 = and i32 %2323, 511
  %2325 = sext i32 %2324 to i64
  %2326 = getelementptr inbounds %struct.lua_TValue, ptr %2321, i64 %2325
  br label %2327

2327:                                             ; preds = %2320, %2312
  %2328 = phi ptr [ %2319, %2312 ], [ %2326, %2320 ]
  %2329 = call i32 @luaV_lessequal(ptr noundef %2284, ptr noundef %2306, ptr noundef %2328)
  %2330 = load i32, ptr %7, align 4, !tbaa !21
  %2331 = lshr i32 %2330, 6
  %2332 = and i32 %2331, 255
  %2333 = icmp ne i32 %2329, %2332
  br i1 %2333, label %2334, label %2340

2334:                                             ; preds = %2327
  %2335 = load ptr, ptr %3, align 8, !tbaa !5
  %2336 = getelementptr inbounds %struct.CallInfo, ptr %2335, i32 0, i32 4
  %2337 = getelementptr inbounds %struct.anon, ptr %2336, i32 0, i32 1
  %2338 = load ptr, ptr %2337, align 8, !tbaa !16
  %2339 = getelementptr inbounds i32, ptr %2338, i32 1
  store ptr %2339, ptr %2337, align 8, !tbaa !16
  br label %2373

2340:                                             ; preds = %2327
  %2341 = load ptr, ptr %3, align 8, !tbaa !5
  %2342 = getelementptr inbounds %struct.CallInfo, ptr %2341, i32 0, i32 4
  %2343 = getelementptr inbounds %struct.anon, ptr %2342, i32 0, i32 1
  %2344 = load ptr, ptr %2343, align 8, !tbaa !16
  %2345 = load i32, ptr %2344, align 4, !tbaa !21
  store i32 %2345, ptr %7, align 4, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 4, ptr %125) #7
  %2346 = load i32, ptr %7, align 4, !tbaa !21
  %2347 = lshr i32 %2346, 6
  %2348 = and i32 %2347, 255
  store i32 %2348, ptr %125, align 4, !tbaa !21
  %2349 = load i32, ptr %125, align 4, !tbaa !21
  %2350 = icmp sgt i32 %2349, 0
  br i1 %2350, label %2351, label %2361

2351:                                             ; preds = %2340
  %2352 = load ptr, ptr %2, align 8, !tbaa !5
  %2353 = load ptr, ptr %3, align 8, !tbaa !5
  %2354 = getelementptr inbounds %struct.CallInfo, ptr %2353, i32 0, i32 4
  %2355 = getelementptr inbounds %struct.anon, ptr %2354, i32 0, i32 0
  %2356 = load ptr, ptr %2355, align 8, !tbaa !16
  %2357 = load i32, ptr %125, align 4, !tbaa !21
  %2358 = sext i32 %2357 to i64
  %2359 = getelementptr inbounds %struct.lua_TValue, ptr %2356, i64 %2358
  %2360 = getelementptr inbounds %struct.lua_TValue, ptr %2359, i64 -1
  call void @luaF_close(ptr noundef %2352, ptr noundef %2360)
  br label %2361

2361:                                             ; preds = %2351, %2340
  %2362 = load i32, ptr %7, align 4, !tbaa !21
  %2363 = lshr i32 %2362, 14
  %2364 = and i32 %2363, 262143
  %2365 = sub nsw i32 %2364, 131071
  %2366 = add nsw i32 %2365, 1
  %2367 = load ptr, ptr %3, align 8, !tbaa !5
  %2368 = getelementptr inbounds %struct.CallInfo, ptr %2367, i32 0, i32 4
  %2369 = getelementptr inbounds %struct.anon, ptr %2368, i32 0, i32 1
  %2370 = load ptr, ptr %2369, align 8, !tbaa !16
  %2371 = sext i32 %2366 to i64
  %2372 = getelementptr inbounds i32, ptr %2370, i64 %2371
  store ptr %2372, ptr %2369, align 8, !tbaa !16
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #7
  br label %2373

2373:                                             ; preds = %2361, %2334
  %2374 = load ptr, ptr %3, align 8, !tbaa !5
  %2375 = getelementptr inbounds %struct.CallInfo, ptr %2374, i32 0, i32 4
  %2376 = getelementptr inbounds %struct.anon, ptr %2375, i32 0, i32 0
  %2377 = load ptr, ptr %2376, align 8, !tbaa !16
  store ptr %2377, ptr %6, align 8, !tbaa !5
  br label %3326

2378:                                             ; preds = %234
  %2379 = load i32, ptr %7, align 4, !tbaa !21
  %2380 = lshr i32 %2379, 14
  %2381 = and i32 %2380, 511
  %2382 = icmp ne i32 %2381, 0
  br i1 %2382, label %2383, label %2398

2383:                                             ; preds = %2378
  %2384 = load ptr, ptr %8, align 8, !tbaa !5
  %2385 = getelementptr inbounds %struct.lua_TValue, ptr %2384, i32 0, i32 1
  %2386 = load i32, ptr %2385, align 8, !tbaa !25
  %2387 = icmp eq i32 %2386, 0
  br i1 %2387, label %2413, label %2388

2388:                                             ; preds = %2383
  %2389 = load ptr, ptr %8, align 8, !tbaa !5
  %2390 = getelementptr inbounds %struct.lua_TValue, ptr %2389, i32 0, i32 1
  %2391 = load i32, ptr %2390, align 8, !tbaa !25
  %2392 = icmp eq i32 %2391, 1
  br i1 %2392, label %2393, label %2419

2393:                                             ; preds = %2388
  %2394 = load ptr, ptr %8, align 8, !tbaa !5
  %2395 = getelementptr inbounds %struct.lua_TValue, ptr %2394, i32 0, i32 0
  %2396 = load i32, ptr %2395, align 8, !tbaa !16
  %2397 = icmp eq i32 %2396, 0
  br i1 %2397, label %2413, label %2419

2398:                                             ; preds = %2378
  %2399 = load ptr, ptr %8, align 8, !tbaa !5
  %2400 = getelementptr inbounds %struct.lua_TValue, ptr %2399, i32 0, i32 1
  %2401 = load i32, ptr %2400, align 8, !tbaa !25
  %2402 = icmp eq i32 %2401, 0
  br i1 %2402, label %2419, label %2403

2403:                                             ; preds = %2398
  %2404 = load ptr, ptr %8, align 8, !tbaa !5
  %2405 = getelementptr inbounds %struct.lua_TValue, ptr %2404, i32 0, i32 1
  %2406 = load i32, ptr %2405, align 8, !tbaa !25
  %2407 = icmp eq i32 %2406, 1
  br i1 %2407, label %2408, label %2413

2408:                                             ; preds = %2403
  %2409 = load ptr, ptr %8, align 8, !tbaa !5
  %2410 = getelementptr inbounds %struct.lua_TValue, ptr %2409, i32 0, i32 0
  %2411 = load i32, ptr %2410, align 8, !tbaa !16
  %2412 = icmp eq i32 %2411, 0
  br i1 %2412, label %2419, label %2413

2413:                                             ; preds = %2408, %2403, %2393, %2383
  %2414 = load ptr, ptr %3, align 8, !tbaa !5
  %2415 = getelementptr inbounds %struct.CallInfo, ptr %2414, i32 0, i32 4
  %2416 = getelementptr inbounds %struct.anon, ptr %2415, i32 0, i32 1
  %2417 = load ptr, ptr %2416, align 8, !tbaa !16
  %2418 = getelementptr inbounds i32, ptr %2417, i32 1
  store ptr %2418, ptr %2416, align 8, !tbaa !16
  br label %2452

2419:                                             ; preds = %2408, %2398, %2393, %2388
  %2420 = load ptr, ptr %3, align 8, !tbaa !5
  %2421 = getelementptr inbounds %struct.CallInfo, ptr %2420, i32 0, i32 4
  %2422 = getelementptr inbounds %struct.anon, ptr %2421, i32 0, i32 1
  %2423 = load ptr, ptr %2422, align 8, !tbaa !16
  %2424 = load i32, ptr %2423, align 4, !tbaa !21
  store i32 %2424, ptr %7, align 4, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 4, ptr %126) #7
  %2425 = load i32, ptr %7, align 4, !tbaa !21
  %2426 = lshr i32 %2425, 6
  %2427 = and i32 %2426, 255
  store i32 %2427, ptr %126, align 4, !tbaa !21
  %2428 = load i32, ptr %126, align 4, !tbaa !21
  %2429 = icmp sgt i32 %2428, 0
  br i1 %2429, label %2430, label %2440

2430:                                             ; preds = %2419
  %2431 = load ptr, ptr %2, align 8, !tbaa !5
  %2432 = load ptr, ptr %3, align 8, !tbaa !5
  %2433 = getelementptr inbounds %struct.CallInfo, ptr %2432, i32 0, i32 4
  %2434 = getelementptr inbounds %struct.anon, ptr %2433, i32 0, i32 0
  %2435 = load ptr, ptr %2434, align 8, !tbaa !16
  %2436 = load i32, ptr %126, align 4, !tbaa !21
  %2437 = sext i32 %2436 to i64
  %2438 = getelementptr inbounds %struct.lua_TValue, ptr %2435, i64 %2437
  %2439 = getelementptr inbounds %struct.lua_TValue, ptr %2438, i64 -1
  call void @luaF_close(ptr noundef %2431, ptr noundef %2439)
  br label %2440

2440:                                             ; preds = %2430, %2419
  %2441 = load i32, ptr %7, align 4, !tbaa !21
  %2442 = lshr i32 %2441, 14
  %2443 = and i32 %2442, 262143
  %2444 = sub nsw i32 %2443, 131071
  %2445 = add nsw i32 %2444, 1
  %2446 = load ptr, ptr %3, align 8, !tbaa !5
  %2447 = getelementptr inbounds %struct.CallInfo, ptr %2446, i32 0, i32 4
  %2448 = getelementptr inbounds %struct.anon, ptr %2447, i32 0, i32 1
  %2449 = load ptr, ptr %2448, align 8, !tbaa !16
  %2450 = sext i32 %2445 to i64
  %2451 = getelementptr inbounds i32, ptr %2449, i64 %2450
  store ptr %2451, ptr %2448, align 8, !tbaa !16
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #7
  br label %2452

2452:                                             ; preds = %2440, %2413
  br label %3326

2453:                                             ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #7
  %2454 = load ptr, ptr %6, align 8, !tbaa !5
  %2455 = load i32, ptr %7, align 4, !tbaa !21
  %2456 = lshr i32 %2455, 23
  %2457 = and i32 %2456, 511
  %2458 = sext i32 %2457 to i64
  %2459 = getelementptr inbounds %struct.lua_TValue, ptr %2454, i64 %2458
  store ptr %2459, ptr %127, align 8, !tbaa !5
  %2460 = load i32, ptr %7, align 4, !tbaa !21
  %2461 = lshr i32 %2460, 14
  %2462 = and i32 %2461, 511
  %2463 = icmp ne i32 %2462, 0
  br i1 %2463, label %2464, label %2479

2464:                                             ; preds = %2453
  %2465 = load ptr, ptr %127, align 8, !tbaa !5
  %2466 = getelementptr inbounds %struct.lua_TValue, ptr %2465, i32 0, i32 1
  %2467 = load i32, ptr %2466, align 8, !tbaa !25
  %2468 = icmp eq i32 %2467, 0
  br i1 %2468, label %2494, label %2469

2469:                                             ; preds = %2464
  %2470 = load ptr, ptr %127, align 8, !tbaa !5
  %2471 = getelementptr inbounds %struct.lua_TValue, ptr %2470, i32 0, i32 1
  %2472 = load i32, ptr %2471, align 8, !tbaa !25
  %2473 = icmp eq i32 %2472, 1
  br i1 %2473, label %2474, label %2500

2474:                                             ; preds = %2469
  %2475 = load ptr, ptr %127, align 8, !tbaa !5
  %2476 = getelementptr inbounds %struct.lua_TValue, ptr %2475, i32 0, i32 0
  %2477 = load i32, ptr %2476, align 8, !tbaa !16
  %2478 = icmp eq i32 %2477, 0
  br i1 %2478, label %2494, label %2500

2479:                                             ; preds = %2453
  %2480 = load ptr, ptr %127, align 8, !tbaa !5
  %2481 = getelementptr inbounds %struct.lua_TValue, ptr %2480, i32 0, i32 1
  %2482 = load i32, ptr %2481, align 8, !tbaa !25
  %2483 = icmp eq i32 %2482, 0
  br i1 %2483, label %2500, label %2484

2484:                                             ; preds = %2479
  %2485 = load ptr, ptr %127, align 8, !tbaa !5
  %2486 = getelementptr inbounds %struct.lua_TValue, ptr %2485, i32 0, i32 1
  %2487 = load i32, ptr %2486, align 8, !tbaa !25
  %2488 = icmp eq i32 %2487, 1
  br i1 %2488, label %2489, label %2494

2489:                                             ; preds = %2484
  %2490 = load ptr, ptr %127, align 8, !tbaa !5
  %2491 = getelementptr inbounds %struct.lua_TValue, ptr %2490, i32 0, i32 0
  %2492 = load i32, ptr %2491, align 8, !tbaa !16
  %2493 = icmp eq i32 %2492, 0
  br i1 %2493, label %2500, label %2494

2494:                                             ; preds = %2489, %2484, %2474, %2464
  %2495 = load ptr, ptr %3, align 8, !tbaa !5
  %2496 = getelementptr inbounds %struct.CallInfo, ptr %2495, i32 0, i32 4
  %2497 = getelementptr inbounds %struct.anon, ptr %2496, i32 0, i32 1
  %2498 = load ptr, ptr %2497, align 8, !tbaa !16
  %2499 = getelementptr inbounds i32, ptr %2498, i32 1
  store ptr %2499, ptr %2497, align 8, !tbaa !16
  br label %2537

2500:                                             ; preds = %2489, %2479, %2474, %2469
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #7
  %2501 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %2501, ptr %128, align 8, !tbaa !5
  %2502 = load ptr, ptr %128, align 8, !tbaa !5
  %2503 = load ptr, ptr %127, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2502, ptr align 8 %2503, i64 16, i1 false), !tbaa.struct !24
  %2504 = load ptr, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #7
  %2505 = load ptr, ptr %3, align 8, !tbaa !5
  %2506 = getelementptr inbounds %struct.CallInfo, ptr %2505, i32 0, i32 4
  %2507 = getelementptr inbounds %struct.anon, ptr %2506, i32 0, i32 1
  %2508 = load ptr, ptr %2507, align 8, !tbaa !16
  %2509 = load i32, ptr %2508, align 4, !tbaa !21
  store i32 %2509, ptr %7, align 4, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 4, ptr %129) #7
  %2510 = load i32, ptr %7, align 4, !tbaa !21
  %2511 = lshr i32 %2510, 6
  %2512 = and i32 %2511, 255
  store i32 %2512, ptr %129, align 4, !tbaa !21
  %2513 = load i32, ptr %129, align 4, !tbaa !21
  %2514 = icmp sgt i32 %2513, 0
  br i1 %2514, label %2515, label %2525

2515:                                             ; preds = %2500
  %2516 = load ptr, ptr %2, align 8, !tbaa !5
  %2517 = load ptr, ptr %3, align 8, !tbaa !5
  %2518 = getelementptr inbounds %struct.CallInfo, ptr %2517, i32 0, i32 4
  %2519 = getelementptr inbounds %struct.anon, ptr %2518, i32 0, i32 0
  %2520 = load ptr, ptr %2519, align 8, !tbaa !16
  %2521 = load i32, ptr %129, align 4, !tbaa !21
  %2522 = sext i32 %2521 to i64
  %2523 = getelementptr inbounds %struct.lua_TValue, ptr %2520, i64 %2522
  %2524 = getelementptr inbounds %struct.lua_TValue, ptr %2523, i64 -1
  call void @luaF_close(ptr noundef %2516, ptr noundef %2524)
  br label %2525

2525:                                             ; preds = %2515, %2500
  %2526 = load i32, ptr %7, align 4, !tbaa !21
  %2527 = lshr i32 %2526, 14
  %2528 = and i32 %2527, 262143
  %2529 = sub nsw i32 %2528, 131071
  %2530 = add nsw i32 %2529, 1
  %2531 = load ptr, ptr %3, align 8, !tbaa !5
  %2532 = getelementptr inbounds %struct.CallInfo, ptr %2531, i32 0, i32 4
  %2533 = getelementptr inbounds %struct.anon, ptr %2532, i32 0, i32 1
  %2534 = load ptr, ptr %2533, align 8, !tbaa !16
  %2535 = sext i32 %2530 to i64
  %2536 = getelementptr inbounds i32, ptr %2534, i64 %2535
  store ptr %2536, ptr %2533, align 8, !tbaa !16
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #7
  br label %2537

2537:                                             ; preds = %2525, %2494
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #7
  br label %3326

2538:                                             ; preds = %234
  call void @llvm.lifetime.start.p0(i64 4, ptr %130) #7
  %2539 = load i32, ptr %7, align 4, !tbaa !21
  %2540 = lshr i32 %2539, 23
  %2541 = and i32 %2540, 511
  store i32 %2541, ptr %130, align 4, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 4, ptr %131) #7
  %2542 = load i32, ptr %7, align 4, !tbaa !21
  %2543 = lshr i32 %2542, 14
  %2544 = and i32 %2543, 511
  %2545 = sub nsw i32 %2544, 1
  store i32 %2545, ptr %131, align 4, !tbaa !21
  %2546 = load i32, ptr %130, align 4, !tbaa !21
  %2547 = icmp ne i32 %2546, 0
  br i1 %2547, label %2548, label %2555

2548:                                             ; preds = %2538
  %2549 = load ptr, ptr %8, align 8, !tbaa !5
  %2550 = load i32, ptr %130, align 4, !tbaa !21
  %2551 = sext i32 %2550 to i64
  %2552 = getelementptr inbounds %struct.lua_TValue, ptr %2549, i64 %2551
  %2553 = load ptr, ptr %2, align 8, !tbaa !5
  %2554 = getelementptr inbounds %struct.lua_State, ptr %2553, i32 0, i32 4
  store ptr %2552, ptr %2554, align 8, !tbaa !36
  br label %2555

2555:                                             ; preds = %2548, %2538
  %2556 = load ptr, ptr %2, align 8, !tbaa !5
  %2557 = load ptr, ptr %8, align 8, !tbaa !5
  %2558 = load i32, ptr %131, align 4, !tbaa !21
  %2559 = call i32 @luaD_precall(ptr noundef %2556, ptr noundef %2557, i32 noundef %2558)
  %2560 = icmp ne i32 %2559, 0
  br i1 %2560, label %2561, label %2575

2561:                                             ; preds = %2555
  %2562 = load i32, ptr %131, align 4, !tbaa !21
  %2563 = icmp sge i32 %2562, 0
  br i1 %2563, label %2564, label %2570

2564:                                             ; preds = %2561
  %2565 = load ptr, ptr %3, align 8, !tbaa !5
  %2566 = getelementptr inbounds %struct.CallInfo, ptr %2565, i32 0, i32 1
  %2567 = load ptr, ptr %2566, align 8, !tbaa !37
  %2568 = load ptr, ptr %2, align 8, !tbaa !5
  %2569 = getelementptr inbounds %struct.lua_State, ptr %2568, i32 0, i32 4
  store ptr %2567, ptr %2569, align 8, !tbaa !36
  br label %2570

2570:                                             ; preds = %2564, %2561
  %2571 = load ptr, ptr %3, align 8, !tbaa !5
  %2572 = getelementptr inbounds %struct.CallInfo, ptr %2571, i32 0, i32 4
  %2573 = getelementptr inbounds %struct.anon, ptr %2572, i32 0, i32 0
  %2574 = load ptr, ptr %2573, align 8, !tbaa !16
  store ptr %2574, ptr %6, align 8, !tbaa !5
  br label %2585

2575:                                             ; preds = %2555
  %2576 = load ptr, ptr %2, align 8, !tbaa !5
  %2577 = getelementptr inbounds %struct.lua_State, ptr %2576, i32 0, i32 6
  %2578 = load ptr, ptr %2577, align 8, !tbaa !9
  store ptr %2578, ptr %3, align 8, !tbaa !5
  %2579 = load ptr, ptr %3, align 8, !tbaa !5
  %2580 = getelementptr inbounds %struct.CallInfo, ptr %2579, i32 0, i32 7
  %2581 = load i8, ptr %2580, align 2, !tbaa !42
  %2582 = zext i8 %2581 to i32
  %2583 = or i32 %2582, 8
  %2584 = trunc i32 %2583 to i8
  store i8 %2584, ptr %2580, align 2, !tbaa !42
  store i32 2, ptr %132, align 4
  br label %2586

2585:                                             ; preds = %2570
  store i32 5, ptr %132, align 4
  br label %2586

2586:                                             ; preds = %2585, %2575
  call void @llvm.lifetime.end.p0(i64 4, ptr %131) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #7
  %2587 = load i32, ptr %132, align 4
  switch i32 %2587, label %3327 [
    i32 5, label %3326
  ]

2588:                                             ; preds = %234
  call void @llvm.lifetime.start.p0(i64 4, ptr %133) #7
  %2589 = load i32, ptr %7, align 4, !tbaa !21
  %2590 = lshr i32 %2589, 23
  %2591 = and i32 %2590, 511
  store i32 %2591, ptr %133, align 4, !tbaa !21
  %2592 = load i32, ptr %133, align 4, !tbaa !21
  %2593 = icmp ne i32 %2592, 0
  br i1 %2593, label %2594, label %2601

2594:                                             ; preds = %2588
  %2595 = load ptr, ptr %8, align 8, !tbaa !5
  %2596 = load i32, ptr %133, align 4, !tbaa !21
  %2597 = sext i32 %2596 to i64
  %2598 = getelementptr inbounds %struct.lua_TValue, ptr %2595, i64 %2597
  %2599 = load ptr, ptr %2, align 8, !tbaa !5
  %2600 = getelementptr inbounds %struct.lua_State, ptr %2599, i32 0, i32 4
  store ptr %2598, ptr %2600, align 8, !tbaa !36
  br label %2601

2601:                                             ; preds = %2594, %2588
  %2602 = load ptr, ptr %2, align 8, !tbaa !5
  %2603 = load ptr, ptr %8, align 8, !tbaa !5
  %2604 = call i32 @luaD_precall(ptr noundef %2602, ptr noundef %2603, i32 noundef -1)
  %2605 = icmp ne i32 %2604, 0
  br i1 %2605, label %2606, label %2611

2606:                                             ; preds = %2601
  %2607 = load ptr, ptr %3, align 8, !tbaa !5
  %2608 = getelementptr inbounds %struct.CallInfo, ptr %2607, i32 0, i32 4
  %2609 = getelementptr inbounds %struct.anon, ptr %2608, i32 0, i32 0
  %2610 = load ptr, ptr %2609, align 8, !tbaa !16
  store ptr %2610, ptr %6, align 8, !tbaa !5
  br label %2717

2611:                                             ; preds = %2601
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #7
  %2612 = load ptr, ptr %2, align 8, !tbaa !5
  %2613 = getelementptr inbounds %struct.lua_State, ptr %2612, i32 0, i32 6
  %2614 = load ptr, ptr %2613, align 8, !tbaa !9
  store ptr %2614, ptr %134, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #7
  %2615 = load ptr, ptr %134, align 8, !tbaa !5
  %2616 = getelementptr inbounds %struct.CallInfo, ptr %2615, i32 0, i32 2
  %2617 = load ptr, ptr %2616, align 8, !tbaa !43
  store ptr %2617, ptr %135, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #7
  %2618 = load ptr, ptr %134, align 8, !tbaa !5
  %2619 = getelementptr inbounds %struct.CallInfo, ptr %2618, i32 0, i32 0
  %2620 = load ptr, ptr %2619, align 8, !tbaa !15
  store ptr %2620, ptr %136, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #7
  %2621 = load ptr, ptr %135, align 8, !tbaa !5
  %2622 = getelementptr inbounds %struct.CallInfo, ptr %2621, i32 0, i32 0
  %2623 = load ptr, ptr %2622, align 8, !tbaa !15
  store ptr %2623, ptr %137, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #7
  %2624 = load ptr, ptr %134, align 8, !tbaa !5
  %2625 = getelementptr inbounds %struct.CallInfo, ptr %2624, i32 0, i32 4
  %2626 = getelementptr inbounds %struct.anon, ptr %2625, i32 0, i32 0
  %2627 = load ptr, ptr %2626, align 8, !tbaa !16
  %2628 = load ptr, ptr %136, align 8, !tbaa !5
  %2629 = getelementptr inbounds %struct.lua_TValue, ptr %2628, i32 0, i32 0
  %2630 = load ptr, ptr %2629, align 8, !tbaa !16
  %2631 = getelementptr inbounds %struct.LClosure, ptr %2630, i32 0, i32 5
  %2632 = load ptr, ptr %2631, align 8, !tbaa !16
  %2633 = getelementptr inbounds %struct.Proto, ptr %2632, i32 0, i32 3
  %2634 = load i8, ptr %2633, align 2, !tbaa !44
  %2635 = zext i8 %2634 to i32
  %2636 = sext i32 %2635 to i64
  %2637 = getelementptr inbounds %struct.lua_TValue, ptr %2627, i64 %2636
  store ptr %2637, ptr %138, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %139) #7
  %2638 = load ptr, ptr %4, align 8, !tbaa !5
  %2639 = getelementptr inbounds %struct.LClosure, ptr %2638, i32 0, i32 5
  %2640 = load ptr, ptr %2639, align 8, !tbaa !17
  %2641 = getelementptr inbounds %struct.Proto, ptr %2640, i32 0, i32 10
  %2642 = load i32, ptr %2641, align 8, !tbaa !45
  %2643 = icmp sgt i32 %2642, 0
  br i1 %2643, label %2644, label %2650

2644:                                             ; preds = %2611
  %2645 = load ptr, ptr %2, align 8, !tbaa !5
  %2646 = load ptr, ptr %135, align 8, !tbaa !5
  %2647 = getelementptr inbounds %struct.CallInfo, ptr %2646, i32 0, i32 4
  %2648 = getelementptr inbounds %struct.anon, ptr %2647, i32 0, i32 0
  %2649 = load ptr, ptr %2648, align 8, !tbaa !16
  call void @luaF_close(ptr noundef %2645, ptr noundef %2649)
  br label %2650

2650:                                             ; preds = %2644, %2611
  store i32 0, ptr %139, align 4, !tbaa !21
  br label %2651

2651:                                             ; preds = %2669, %2650
  %2652 = load ptr, ptr %136, align 8, !tbaa !5
  %2653 = load i32, ptr %139, align 4, !tbaa !21
  %2654 = sext i32 %2653 to i64
  %2655 = getelementptr inbounds %struct.lua_TValue, ptr %2652, i64 %2654
  %2656 = load ptr, ptr %138, align 8, !tbaa !5
  %2657 = icmp ult ptr %2655, %2656
  br i1 %2657, label %2658, label %2672

2658:                                             ; preds = %2651
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #7
  %2659 = load ptr, ptr %137, align 8, !tbaa !5
  %2660 = load i32, ptr %139, align 4, !tbaa !21
  %2661 = sext i32 %2660 to i64
  %2662 = getelementptr inbounds %struct.lua_TValue, ptr %2659, i64 %2661
  store ptr %2662, ptr %140, align 8, !tbaa !5
  %2663 = load ptr, ptr %140, align 8, !tbaa !5
  %2664 = load ptr, ptr %136, align 8, !tbaa !5
  %2665 = load i32, ptr %139, align 4, !tbaa !21
  %2666 = sext i32 %2665 to i64
  %2667 = getelementptr inbounds %struct.lua_TValue, ptr %2664, i64 %2666
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2663, ptr align 8 %2667, i64 16, i1 false), !tbaa.struct !24
  %2668 = load ptr, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #7
  br label %2669

2669:                                             ; preds = %2658
  %2670 = load i32, ptr %139, align 4, !tbaa !21
  %2671 = add nsw i32 %2670, 1
  store i32 %2671, ptr %139, align 4, !tbaa !21
  br label %2651, !llvm.loop !46

2672:                                             ; preds = %2651
  %2673 = load ptr, ptr %137, align 8, !tbaa !5
  %2674 = load ptr, ptr %134, align 8, !tbaa !5
  %2675 = getelementptr inbounds %struct.CallInfo, ptr %2674, i32 0, i32 4
  %2676 = getelementptr inbounds %struct.anon, ptr %2675, i32 0, i32 0
  %2677 = load ptr, ptr %2676, align 8, !tbaa !16
  %2678 = load ptr, ptr %136, align 8, !tbaa !5
  %2679 = ptrtoint ptr %2677 to i64
  %2680 = ptrtoint ptr %2678 to i64
  %2681 = sub i64 %2679, %2680
  %2682 = sdiv exact i64 %2681, 16
  %2683 = getelementptr inbounds %struct.lua_TValue, ptr %2673, i64 %2682
  %2684 = load ptr, ptr %135, align 8, !tbaa !5
  %2685 = getelementptr inbounds %struct.CallInfo, ptr %2684, i32 0, i32 4
  %2686 = getelementptr inbounds %struct.anon, ptr %2685, i32 0, i32 0
  store ptr %2683, ptr %2686, align 8, !tbaa !16
  %2687 = load ptr, ptr %137, align 8, !tbaa !5
  %2688 = load ptr, ptr %2, align 8, !tbaa !5
  %2689 = getelementptr inbounds %struct.lua_State, ptr %2688, i32 0, i32 4
  %2690 = load ptr, ptr %2689, align 8, !tbaa !36
  %2691 = load ptr, ptr %136, align 8, !tbaa !5
  %2692 = ptrtoint ptr %2690 to i64
  %2693 = ptrtoint ptr %2691 to i64
  %2694 = sub i64 %2692, %2693
  %2695 = sdiv exact i64 %2694, 16
  %2696 = getelementptr inbounds %struct.lua_TValue, ptr %2687, i64 %2695
  %2697 = load ptr, ptr %2, align 8, !tbaa !5
  %2698 = getelementptr inbounds %struct.lua_State, ptr %2697, i32 0, i32 4
  store ptr %2696, ptr %2698, align 8, !tbaa !36
  %2699 = load ptr, ptr %135, align 8, !tbaa !5
  %2700 = getelementptr inbounds %struct.CallInfo, ptr %2699, i32 0, i32 1
  store ptr %2696, ptr %2700, align 8, !tbaa !37
  %2701 = load ptr, ptr %134, align 8, !tbaa !5
  %2702 = getelementptr inbounds %struct.CallInfo, ptr %2701, i32 0, i32 4
  %2703 = getelementptr inbounds %struct.anon, ptr %2702, i32 0, i32 1
  %2704 = load ptr, ptr %2703, align 8, !tbaa !16
  %2705 = load ptr, ptr %135, align 8, !tbaa !5
  %2706 = getelementptr inbounds %struct.CallInfo, ptr %2705, i32 0, i32 4
  %2707 = getelementptr inbounds %struct.anon, ptr %2706, i32 0, i32 1
  store ptr %2704, ptr %2707, align 8, !tbaa !16
  %2708 = load ptr, ptr %135, align 8, !tbaa !5
  %2709 = getelementptr inbounds %struct.CallInfo, ptr %2708, i32 0, i32 7
  %2710 = load i8, ptr %2709, align 2, !tbaa !42
  %2711 = zext i8 %2710 to i32
  %2712 = or i32 %2711, 32
  %2713 = trunc i32 %2712 to i8
  store i8 %2713, ptr %2709, align 2, !tbaa !42
  %2714 = load ptr, ptr %135, align 8, !tbaa !5
  %2715 = load ptr, ptr %2, align 8, !tbaa !5
  %2716 = getelementptr inbounds %struct.lua_State, ptr %2715, i32 0, i32 6
  store ptr %2714, ptr %2716, align 8, !tbaa !9
  store ptr %2714, ptr %3, align 8, !tbaa !5
  store i32 2, ptr %132, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #7
  br label %2718

2717:                                             ; preds = %2606
  store i32 5, ptr %132, align 4
  br label %2718

2718:                                             ; preds = %2717, %2672
  call void @llvm.lifetime.end.p0(i64 4, ptr %133) #7
  %2719 = load i32, ptr %132, align 4
  switch i32 %2719, label %3327 [
    i32 5, label %3326
  ]

2720:                                             ; preds = %234
  call void @llvm.lifetime.start.p0(i64 4, ptr %141) #7
  %2721 = load i32, ptr %7, align 4, !tbaa !21
  %2722 = lshr i32 %2721, 23
  %2723 = and i32 %2722, 511
  store i32 %2723, ptr %141, align 4, !tbaa !21
  %2724 = load i32, ptr %141, align 4, !tbaa !21
  %2725 = icmp ne i32 %2724, 0
  br i1 %2725, label %2726, label %2734

2726:                                             ; preds = %2720
  %2727 = load ptr, ptr %8, align 8, !tbaa !5
  %2728 = load i32, ptr %141, align 4, !tbaa !21
  %2729 = sext i32 %2728 to i64
  %2730 = getelementptr inbounds %struct.lua_TValue, ptr %2727, i64 %2729
  %2731 = getelementptr inbounds %struct.lua_TValue, ptr %2730, i64 -1
  %2732 = load ptr, ptr %2, align 8, !tbaa !5
  %2733 = getelementptr inbounds %struct.lua_State, ptr %2732, i32 0, i32 4
  store ptr %2731, ptr %2733, align 8, !tbaa !36
  br label %2734

2734:                                             ; preds = %2726, %2720
  %2735 = load ptr, ptr %4, align 8, !tbaa !5
  %2736 = getelementptr inbounds %struct.LClosure, ptr %2735, i32 0, i32 5
  %2737 = load ptr, ptr %2736, align 8, !tbaa !17
  %2738 = getelementptr inbounds %struct.Proto, ptr %2737, i32 0, i32 10
  %2739 = load i32, ptr %2738, align 8, !tbaa !45
  %2740 = icmp sgt i32 %2739, 0
  br i1 %2740, label %2741, label %2744

2741:                                             ; preds = %2734
  %2742 = load ptr, ptr %2, align 8, !tbaa !5
  %2743 = load ptr, ptr %6, align 8, !tbaa !5
  call void @luaF_close(ptr noundef %2742, ptr noundef %2743)
  br label %2744

2744:                                             ; preds = %2741, %2734
  %2745 = load ptr, ptr %2, align 8, !tbaa !5
  %2746 = load ptr, ptr %8, align 8, !tbaa !5
  %2747 = call i32 @luaD_poscall(ptr noundef %2745, ptr noundef %2746)
  store i32 %2747, ptr %141, align 4, !tbaa !21
  %2748 = load ptr, ptr %3, align 8, !tbaa !5
  %2749 = getelementptr inbounds %struct.CallInfo, ptr %2748, i32 0, i32 7
  %2750 = load i8, ptr %2749, align 2, !tbaa !42
  %2751 = zext i8 %2750 to i32
  %2752 = and i32 %2751, 8
  %2753 = icmp ne i32 %2752, 0
  br i1 %2753, label %2755, label %2754

2754:                                             ; preds = %2744
  store i32 1, ptr %132, align 4
  br label %2768

2755:                                             ; preds = %2744
  %2756 = load ptr, ptr %2, align 8, !tbaa !5
  %2757 = getelementptr inbounds %struct.lua_State, ptr %2756, i32 0, i32 6
  %2758 = load ptr, ptr %2757, align 8, !tbaa !9
  store ptr %2758, ptr %3, align 8, !tbaa !5
  %2759 = load i32, ptr %141, align 4, !tbaa !21
  %2760 = icmp ne i32 %2759, 0
  br i1 %2760, label %2761, label %2767

2761:                                             ; preds = %2755
  %2762 = load ptr, ptr %3, align 8, !tbaa !5
  %2763 = getelementptr inbounds %struct.CallInfo, ptr %2762, i32 0, i32 1
  %2764 = load ptr, ptr %2763, align 8, !tbaa !37
  %2765 = load ptr, ptr %2, align 8, !tbaa !5
  %2766 = getelementptr inbounds %struct.lua_State, ptr %2765, i32 0, i32 4
  store ptr %2764, ptr %2766, align 8, !tbaa !36
  br label %2767

2767:                                             ; preds = %2761, %2755
  store i32 2, ptr %132, align 4
  br label %2768

2768:                                             ; preds = %2767, %2754
  call void @llvm.lifetime.end.p0(i64 4, ptr %141) #7
  br label %3327

2769:                                             ; preds = %234
  %2770 = load ptr, ptr %8, align 8, !tbaa !5
  %2771 = getelementptr inbounds %struct.lua_TValue, ptr %2770, i32 0, i32 1
  %2772 = load i32, ptr %2771, align 8, !tbaa !25
  %2773 = icmp eq i32 %2772, 19
  br i1 %2773, label %2774, label %2823

2774:                                             ; preds = %2769
  call void @llvm.lifetime.start.p0(i64 8, ptr %142) #7
  %2775 = load ptr, ptr %8, align 8, !tbaa !5
  %2776 = getelementptr inbounds %struct.lua_TValue, ptr %2775, i64 2
  %2777 = getelementptr inbounds %struct.lua_TValue, ptr %2776, i32 0, i32 0
  %2778 = load i64, ptr %2777, align 8, !tbaa !16
  store i64 %2778, ptr %142, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #7
  %2779 = load ptr, ptr %8, align 8, !tbaa !5
  %2780 = getelementptr inbounds %struct.lua_TValue, ptr %2779, i32 0, i32 0
  %2781 = load i64, ptr %2780, align 8, !tbaa !16
  %2782 = load i64, ptr %142, align 8, !tbaa !38
  %2783 = add nsw i64 %2781, %2782
  store i64 %2783, ptr %143, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #7
  %2784 = load ptr, ptr %8, align 8, !tbaa !5
  %2785 = getelementptr inbounds %struct.lua_TValue, ptr %2784, i64 1
  %2786 = getelementptr inbounds %struct.lua_TValue, ptr %2785, i32 0, i32 0
  %2787 = load i64, ptr %2786, align 8, !tbaa !16
  store i64 %2787, ptr %144, align 8, !tbaa !38
  %2788 = load i64, ptr %142, align 8, !tbaa !38
  %2789 = icmp slt i64 0, %2788
  br i1 %2789, label %2790, label %2794

2790:                                             ; preds = %2774
  %2791 = load i64, ptr %143, align 8, !tbaa !38
  %2792 = load i64, ptr %144, align 8, !tbaa !38
  %2793 = icmp sle i64 %2791, %2792
  br i1 %2793, label %2798, label %2822

2794:                                             ; preds = %2774
  %2795 = load i64, ptr %144, align 8, !tbaa !38
  %2796 = load i64, ptr %143, align 8, !tbaa !38
  %2797 = icmp sle i64 %2795, %2796
  br i1 %2797, label %2798, label %2822

2798:                                             ; preds = %2794, %2790
  %2799 = load i32, ptr %7, align 4, !tbaa !21
  %2800 = lshr i32 %2799, 14
  %2801 = and i32 %2800, 262143
  %2802 = sub nsw i32 %2801, 131071
  %2803 = load ptr, ptr %3, align 8, !tbaa !5
  %2804 = getelementptr inbounds %struct.CallInfo, ptr %2803, i32 0, i32 4
  %2805 = getelementptr inbounds %struct.anon, ptr %2804, i32 0, i32 1
  %2806 = load ptr, ptr %2805, align 8, !tbaa !16
  %2807 = sext i32 %2802 to i64
  %2808 = getelementptr inbounds i32, ptr %2806, i64 %2807
  store ptr %2808, ptr %2805, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #7
  %2809 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %2809, ptr %145, align 8, !tbaa !5
  %2810 = load i64, ptr %143, align 8, !tbaa !38
  %2811 = load ptr, ptr %145, align 8, !tbaa !5
  %2812 = getelementptr inbounds %struct.lua_TValue, ptr %2811, i32 0, i32 0
  store i64 %2810, ptr %2812, align 8, !tbaa !16
  %2813 = load ptr, ptr %145, align 8, !tbaa !5
  %2814 = getelementptr inbounds %struct.lua_TValue, ptr %2813, i32 0, i32 1
  store i32 19, ptr %2814, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #7
  %2815 = load ptr, ptr %8, align 8, !tbaa !5
  %2816 = getelementptr inbounds %struct.lua_TValue, ptr %2815, i64 3
  store ptr %2816, ptr %146, align 8, !tbaa !5
  %2817 = load i64, ptr %143, align 8, !tbaa !38
  %2818 = load ptr, ptr %146, align 8, !tbaa !5
  %2819 = getelementptr inbounds %struct.lua_TValue, ptr %2818, i32 0, i32 0
  store i64 %2817, ptr %2819, align 8, !tbaa !16
  %2820 = load ptr, ptr %146, align 8, !tbaa !5
  %2821 = getelementptr inbounds %struct.lua_TValue, ptr %2820, i32 0, i32 1
  store i32 19, ptr %2821, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #7
  br label %2822

2822:                                             ; preds = %2798, %2794, %2790
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #7
  br label %2872

2823:                                             ; preds = %2769
  call void @llvm.lifetime.start.p0(i64 8, ptr %147) #7
  %2824 = load ptr, ptr %8, align 8, !tbaa !5
  %2825 = getelementptr inbounds %struct.lua_TValue, ptr %2824, i64 2
  %2826 = getelementptr inbounds %struct.lua_TValue, ptr %2825, i32 0, i32 0
  %2827 = load double, ptr %2826, align 8, !tbaa !16
  store double %2827, ptr %147, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 8, ptr %148) #7
  %2828 = load ptr, ptr %8, align 8, !tbaa !5
  %2829 = getelementptr inbounds %struct.lua_TValue, ptr %2828, i32 0, i32 0
  %2830 = load double, ptr %2829, align 8, !tbaa !16
  %2831 = load double, ptr %147, align 8, !tbaa !40
  %2832 = fadd double %2830, %2831
  store double %2832, ptr %148, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #7
  %2833 = load ptr, ptr %8, align 8, !tbaa !5
  %2834 = getelementptr inbounds %struct.lua_TValue, ptr %2833, i64 1
  %2835 = getelementptr inbounds %struct.lua_TValue, ptr %2834, i32 0, i32 0
  %2836 = load double, ptr %2835, align 8, !tbaa !16
  store double %2836, ptr %149, align 8, !tbaa !40
  %2837 = load double, ptr %147, align 8, !tbaa !40
  %2838 = fcmp olt double 0.000000e+00, %2837
  br i1 %2838, label %2839, label %2843

2839:                                             ; preds = %2823
  %2840 = load double, ptr %148, align 8, !tbaa !40
  %2841 = load double, ptr %149, align 8, !tbaa !40
  %2842 = fcmp ole double %2840, %2841
  br i1 %2842, label %2847, label %2871

2843:                                             ; preds = %2823
  %2844 = load double, ptr %149, align 8, !tbaa !40
  %2845 = load double, ptr %148, align 8, !tbaa !40
  %2846 = fcmp ole double %2844, %2845
  br i1 %2846, label %2847, label %2871

2847:                                             ; preds = %2843, %2839
  %2848 = load i32, ptr %7, align 4, !tbaa !21
  %2849 = lshr i32 %2848, 14
  %2850 = and i32 %2849, 262143
  %2851 = sub nsw i32 %2850, 131071
  %2852 = load ptr, ptr %3, align 8, !tbaa !5
  %2853 = getelementptr inbounds %struct.CallInfo, ptr %2852, i32 0, i32 4
  %2854 = getelementptr inbounds %struct.anon, ptr %2853, i32 0, i32 1
  %2855 = load ptr, ptr %2854, align 8, !tbaa !16
  %2856 = sext i32 %2851 to i64
  %2857 = getelementptr inbounds i32, ptr %2855, i64 %2856
  store ptr %2857, ptr %2854, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #7
  %2858 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %2858, ptr %150, align 8, !tbaa !5
  %2859 = load double, ptr %148, align 8, !tbaa !40
  %2860 = load ptr, ptr %150, align 8, !tbaa !5
  %2861 = getelementptr inbounds %struct.lua_TValue, ptr %2860, i32 0, i32 0
  store double %2859, ptr %2861, align 8, !tbaa !16
  %2862 = load ptr, ptr %150, align 8, !tbaa !5
  %2863 = getelementptr inbounds %struct.lua_TValue, ptr %2862, i32 0, i32 1
  store i32 3, ptr %2863, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #7
  %2864 = load ptr, ptr %8, align 8, !tbaa !5
  %2865 = getelementptr inbounds %struct.lua_TValue, ptr %2864, i64 3
  store ptr %2865, ptr %151, align 8, !tbaa !5
  %2866 = load double, ptr %148, align 8, !tbaa !40
  %2867 = load ptr, ptr %151, align 8, !tbaa !5
  %2868 = getelementptr inbounds %struct.lua_TValue, ptr %2867, i32 0, i32 0
  store double %2866, ptr %2868, align 8, !tbaa !16
  %2869 = load ptr, ptr %151, align 8, !tbaa !5
  %2870 = getelementptr inbounds %struct.lua_TValue, ptr %2869, i32 0, i32 1
  store i32 3, ptr %2870, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #7
  br label %2871

2871:                                             ; preds = %2847, %2843, %2839
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #7
  br label %2872

2872:                                             ; preds = %2871, %2822
  br label %3326

2873:                                             ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %152) #7
  %2874 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %2874, ptr %152, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %153) #7
  %2875 = load ptr, ptr %8, align 8, !tbaa !5
  %2876 = getelementptr inbounds %struct.lua_TValue, ptr %2875, i64 1
  store ptr %2876, ptr %153, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %154) #7
  %2877 = load ptr, ptr %8, align 8, !tbaa !5
  %2878 = getelementptr inbounds %struct.lua_TValue, ptr %2877, i64 2
  store ptr %2878, ptr %154, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %155) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %156) #7
  %2879 = load ptr, ptr %152, align 8, !tbaa !5
  %2880 = getelementptr inbounds %struct.lua_TValue, ptr %2879, i32 0, i32 1
  %2881 = load i32, ptr %2880, align 8, !tbaa !25
  %2882 = icmp eq i32 %2881, 19
  br i1 %2882, label %2883, label %2921

2883:                                             ; preds = %2873
  %2884 = load ptr, ptr %154, align 8, !tbaa !5
  %2885 = getelementptr inbounds %struct.lua_TValue, ptr %2884, i32 0, i32 1
  %2886 = load i32, ptr %2885, align 8, !tbaa !25
  %2887 = icmp eq i32 %2886, 19
  br i1 %2887, label %2888, label %2921

2888:                                             ; preds = %2883
  %2889 = load ptr, ptr %153, align 8, !tbaa !5
  %2890 = load ptr, ptr %154, align 8, !tbaa !5
  %2891 = getelementptr inbounds %struct.lua_TValue, ptr %2890, i32 0, i32 0
  %2892 = load i64, ptr %2891, align 8, !tbaa !16
  %2893 = call i32 @forlimit(ptr noundef %2889, ptr noundef %155, i64 noundef %2892, ptr noundef %156)
  %2894 = icmp ne i32 %2893, 0
  br i1 %2894, label %2895, label %2921

2895:                                             ; preds = %2888
  call void @llvm.lifetime.start.p0(i64 8, ptr %157) #7
  %2896 = load i32, ptr %156, align 4, !tbaa !21
  %2897 = icmp ne i32 %2896, 0
  br i1 %2897, label %2898, label %2899

2898:                                             ; preds = %2895
  br label %2903

2899:                                             ; preds = %2895
  %2900 = load ptr, ptr %152, align 8, !tbaa !5
  %2901 = getelementptr inbounds %struct.lua_TValue, ptr %2900, i32 0, i32 0
  %2902 = load i64, ptr %2901, align 8, !tbaa !16
  br label %2903

2903:                                             ; preds = %2899, %2898
  %2904 = phi i64 [ 0, %2898 ], [ %2902, %2899 ]
  store i64 %2904, ptr %157, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr %158) #7
  %2905 = load ptr, ptr %153, align 8, !tbaa !5
  store ptr %2905, ptr %158, align 8, !tbaa !5
  %2906 = load i64, ptr %155, align 8, !tbaa !38
  %2907 = load ptr, ptr %158, align 8, !tbaa !5
  %2908 = getelementptr inbounds %struct.lua_TValue, ptr %2907, i32 0, i32 0
  store i64 %2906, ptr %2908, align 8, !tbaa !16
  %2909 = load ptr, ptr %158, align 8, !tbaa !5
  %2910 = getelementptr inbounds %struct.lua_TValue, ptr %2909, i32 0, i32 1
  store i32 19, ptr %2910, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %159) #7
  %2911 = load ptr, ptr %152, align 8, !tbaa !5
  store ptr %2911, ptr %159, align 8, !tbaa !5
  %2912 = load i64, ptr %157, align 8, !tbaa !38
  %2913 = load ptr, ptr %154, align 8, !tbaa !5
  %2914 = getelementptr inbounds %struct.lua_TValue, ptr %2913, i32 0, i32 0
  %2915 = load i64, ptr %2914, align 8, !tbaa !16
  %2916 = sub nsw i64 %2912, %2915
  %2917 = load ptr, ptr %159, align 8, !tbaa !5
  %2918 = getelementptr inbounds %struct.lua_TValue, ptr %2917, i32 0, i32 0
  store i64 %2916, ptr %2918, align 8, !tbaa !16
  %2919 = load ptr, ptr %159, align 8, !tbaa !5
  %2920 = getelementptr inbounds %struct.lua_TValue, ptr %2919, i32 0, i32 1
  store i32 19, ptr %2920, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #7
  br label %2987

2921:                                             ; preds = %2888, %2883, %2873
  call void @llvm.lifetime.start.p0(i64 8, ptr %160) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #7
  %2922 = load ptr, ptr %153, align 8, !tbaa !5
  %2923 = getelementptr inbounds %struct.lua_TValue, ptr %2922, i32 0, i32 1
  %2924 = load i32, ptr %2923, align 8, !tbaa !25
  %2925 = icmp eq i32 %2924, 3
  br i1 %2925, label %2926, label %2930

2926:                                             ; preds = %2921
  %2927 = load ptr, ptr %153, align 8, !tbaa !5
  %2928 = getelementptr inbounds %struct.lua_TValue, ptr %2927, i32 0, i32 0
  %2929 = load double, ptr %2928, align 8, !tbaa !16
  store double %2929, ptr %161, align 8, !tbaa !40
  br i1 true, label %2936, label %2934

2930:                                             ; preds = %2921
  %2931 = load ptr, ptr %153, align 8, !tbaa !5
  %2932 = call i32 @luaV_tonumber_(ptr noundef %2931, ptr noundef %161)
  %2933 = icmp ne i32 %2932, 0
  br i1 %2933, label %2936, label %2934

2934:                                             ; preds = %2930, %2926
  %2935 = load ptr, ptr %2, align 8, !tbaa !5
  call void (ptr, ptr, ...) @luaG_runerror(ptr noundef %2935, ptr noundef @.str.7) #8
  unreachable

2936:                                             ; preds = %2930, %2926
  call void @llvm.lifetime.start.p0(i64 8, ptr %163) #7
  %2937 = load ptr, ptr %153, align 8, !tbaa !5
  store ptr %2937, ptr %163, align 8, !tbaa !5
  %2938 = load double, ptr %161, align 8, !tbaa !40
  %2939 = load ptr, ptr %163, align 8, !tbaa !5
  %2940 = getelementptr inbounds %struct.lua_TValue, ptr %2939, i32 0, i32 0
  store double %2938, ptr %2940, align 8, !tbaa !16
  %2941 = load ptr, ptr %163, align 8, !tbaa !5
  %2942 = getelementptr inbounds %struct.lua_TValue, ptr %2941, i32 0, i32 1
  store i32 3, ptr %2942, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #7
  %2943 = load ptr, ptr %154, align 8, !tbaa !5
  %2944 = getelementptr inbounds %struct.lua_TValue, ptr %2943, i32 0, i32 1
  %2945 = load i32, ptr %2944, align 8, !tbaa !25
  %2946 = icmp eq i32 %2945, 3
  br i1 %2946, label %2947, label %2951

2947:                                             ; preds = %2936
  %2948 = load ptr, ptr %154, align 8, !tbaa !5
  %2949 = getelementptr inbounds %struct.lua_TValue, ptr %2948, i32 0, i32 0
  %2950 = load double, ptr %2949, align 8, !tbaa !16
  store double %2950, ptr %162, align 8, !tbaa !40
  br i1 true, label %2957, label %2955

2951:                                             ; preds = %2936
  %2952 = load ptr, ptr %154, align 8, !tbaa !5
  %2953 = call i32 @luaV_tonumber_(ptr noundef %2952, ptr noundef %162)
  %2954 = icmp ne i32 %2953, 0
  br i1 %2954, label %2957, label %2955

2955:                                             ; preds = %2951, %2947
  %2956 = load ptr, ptr %2, align 8, !tbaa !5
  call void (ptr, ptr, ...) @luaG_runerror(ptr noundef %2956, ptr noundef @.str.8) #8
  unreachable

2957:                                             ; preds = %2951, %2947
  call void @llvm.lifetime.start.p0(i64 8, ptr %164) #7
  %2958 = load ptr, ptr %154, align 8, !tbaa !5
  store ptr %2958, ptr %164, align 8, !tbaa !5
  %2959 = load double, ptr %162, align 8, !tbaa !40
  %2960 = load ptr, ptr %164, align 8, !tbaa !5
  %2961 = getelementptr inbounds %struct.lua_TValue, ptr %2960, i32 0, i32 0
  store double %2959, ptr %2961, align 8, !tbaa !16
  %2962 = load ptr, ptr %164, align 8, !tbaa !5
  %2963 = getelementptr inbounds %struct.lua_TValue, ptr %2962, i32 0, i32 1
  store i32 3, ptr %2963, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %164) #7
  %2964 = load ptr, ptr %152, align 8, !tbaa !5
  %2965 = getelementptr inbounds %struct.lua_TValue, ptr %2964, i32 0, i32 1
  %2966 = load i32, ptr %2965, align 8, !tbaa !25
  %2967 = icmp eq i32 %2966, 3
  br i1 %2967, label %2968, label %2972

2968:                                             ; preds = %2957
  %2969 = load ptr, ptr %152, align 8, !tbaa !5
  %2970 = getelementptr inbounds %struct.lua_TValue, ptr %2969, i32 0, i32 0
  %2971 = load double, ptr %2970, align 8, !tbaa !16
  store double %2971, ptr %160, align 8, !tbaa !40
  br i1 true, label %2978, label %2976

2972:                                             ; preds = %2957
  %2973 = load ptr, ptr %152, align 8, !tbaa !5
  %2974 = call i32 @luaV_tonumber_(ptr noundef %2973, ptr noundef %160)
  %2975 = icmp ne i32 %2974, 0
  br i1 %2975, label %2978, label %2976

2976:                                             ; preds = %2972, %2968
  %2977 = load ptr, ptr %2, align 8, !tbaa !5
  call void (ptr, ptr, ...) @luaG_runerror(ptr noundef %2977, ptr noundef @.str.9) #8
  unreachable

2978:                                             ; preds = %2972, %2968
  call void @llvm.lifetime.start.p0(i64 8, ptr %165) #7
  %2979 = load ptr, ptr %152, align 8, !tbaa !5
  store ptr %2979, ptr %165, align 8, !tbaa !5
  %2980 = load double, ptr %160, align 8, !tbaa !40
  %2981 = load double, ptr %162, align 8, !tbaa !40
  %2982 = fsub double %2980, %2981
  %2983 = load ptr, ptr %165, align 8, !tbaa !5
  %2984 = getelementptr inbounds %struct.lua_TValue, ptr %2983, i32 0, i32 0
  store double %2982, ptr %2984, align 8, !tbaa !16
  %2985 = load ptr, ptr %165, align 8, !tbaa !5
  %2986 = getelementptr inbounds %struct.lua_TValue, ptr %2985, i32 0, i32 1
  store i32 3, ptr %2986, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #7
  br label %2987

2987:                                             ; preds = %2978, %2903
  %2988 = load i32, ptr %7, align 4, !tbaa !21
  %2989 = lshr i32 %2988, 14
  %2990 = and i32 %2989, 262143
  %2991 = sub nsw i32 %2990, 131071
  %2992 = load ptr, ptr %3, align 8, !tbaa !5
  %2993 = getelementptr inbounds %struct.CallInfo, ptr %2992, i32 0, i32 4
  %2994 = getelementptr inbounds %struct.anon, ptr %2993, i32 0, i32 1
  %2995 = load ptr, ptr %2994, align 8, !tbaa !16
  %2996 = sext i32 %2991 to i64
  %2997 = getelementptr inbounds i32, ptr %2995, i64 %2996
  store ptr %2997, ptr %2994, align 8, !tbaa !16
  store i32 5, ptr %132, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %156) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #7
  br label %3326

2998:                                             ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %166) #7
  %2999 = load ptr, ptr %8, align 8, !tbaa !5
  %3000 = getelementptr inbounds %struct.lua_TValue, ptr %2999, i64 3
  store ptr %3000, ptr %166, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %167) #7
  %3001 = load ptr, ptr %166, align 8, !tbaa !5
  %3002 = getelementptr inbounds %struct.lua_TValue, ptr %3001, i64 2
  store ptr %3002, ptr %167, align 8, !tbaa !5
  %3003 = load ptr, ptr %167, align 8, !tbaa !5
  %3004 = load ptr, ptr %8, align 8, !tbaa !5
  %3005 = getelementptr inbounds %struct.lua_TValue, ptr %3004, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3003, ptr align 8 %3005, i64 16, i1 false), !tbaa.struct !24
  %3006 = load ptr, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %168) #7
  %3007 = load ptr, ptr %166, align 8, !tbaa !5
  %3008 = getelementptr inbounds %struct.lua_TValue, ptr %3007, i64 1
  store ptr %3008, ptr %168, align 8, !tbaa !5
  %3009 = load ptr, ptr %168, align 8, !tbaa !5
  %3010 = load ptr, ptr %8, align 8, !tbaa !5
  %3011 = getelementptr inbounds %struct.lua_TValue, ptr %3010, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3009, ptr align 8 %3011, i64 16, i1 false), !tbaa.struct !24
  %3012 = load ptr, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %169) #7
  %3013 = load ptr, ptr %166, align 8, !tbaa !5
  store ptr %3013, ptr %169, align 8, !tbaa !5
  %3014 = load ptr, ptr %169, align 8, !tbaa !5
  %3015 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3014, ptr align 8 %3015, i64 16, i1 false), !tbaa.struct !24
  %3016 = load ptr, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %169) #7
  %3017 = load ptr, ptr %166, align 8, !tbaa !5
  %3018 = getelementptr inbounds %struct.lua_TValue, ptr %3017, i64 3
  %3019 = load ptr, ptr %2, align 8, !tbaa !5
  %3020 = getelementptr inbounds %struct.lua_State, ptr %3019, i32 0, i32 4
  store ptr %3018, ptr %3020, align 8, !tbaa !36
  %3021 = load ptr, ptr %2, align 8, !tbaa !5
  %3022 = load ptr, ptr %166, align 8, !tbaa !5
  %3023 = load i32, ptr %7, align 4, !tbaa !21
  %3024 = lshr i32 %3023, 14
  %3025 = and i32 %3024, 511
  call void @luaD_call(ptr noundef %3021, ptr noundef %3022, i32 noundef %3025, i32 noundef 1)
  %3026 = load ptr, ptr %3, align 8, !tbaa !5
  %3027 = getelementptr inbounds %struct.CallInfo, ptr %3026, i32 0, i32 4
  %3028 = getelementptr inbounds %struct.anon, ptr %3027, i32 0, i32 0
  %3029 = load ptr, ptr %3028, align 8, !tbaa !16
  store ptr %3029, ptr %6, align 8, !tbaa !5
  %3030 = load ptr, ptr %3, align 8, !tbaa !5
  %3031 = getelementptr inbounds %struct.CallInfo, ptr %3030, i32 0, i32 1
  %3032 = load ptr, ptr %3031, align 8, !tbaa !37
  %3033 = load ptr, ptr %2, align 8, !tbaa !5
  %3034 = getelementptr inbounds %struct.lua_State, ptr %3033, i32 0, i32 4
  store ptr %3032, ptr %3034, align 8, !tbaa !36
  %3035 = load ptr, ptr %3, align 8, !tbaa !5
  %3036 = getelementptr inbounds %struct.CallInfo, ptr %3035, i32 0, i32 4
  %3037 = getelementptr inbounds %struct.anon, ptr %3036, i32 0, i32 1
  %3038 = load ptr, ptr %3037, align 8, !tbaa !16
  %3039 = getelementptr inbounds i32, ptr %3038, i32 1
  store ptr %3039, ptr %3037, align 8, !tbaa !16
  %3040 = load i32, ptr %3038, align 4, !tbaa !21
  store i32 %3040, ptr %7, align 4, !tbaa !21
  %3041 = load ptr, ptr %6, align 8, !tbaa !5
  %3042 = load i32, ptr %7, align 4, !tbaa !21
  %3043 = lshr i32 %3042, 6
  %3044 = and i32 %3043, 255
  %3045 = sext i32 %3044 to i64
  %3046 = getelementptr inbounds %struct.lua_TValue, ptr %3041, i64 %3045
  store ptr %3046, ptr %8, align 8, !tbaa !5
  store i32 11, ptr %132, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #7
  %3047 = load i32, ptr %132, align 4
  switch i32 %3047, label %3327 [
    i32 11, label %3049
  ]

3048:                                             ; preds = %234
  br label %3049

3049:                                             ; preds = %3048, %2998
  %3050 = load ptr, ptr %8, align 8, !tbaa !5
  %3051 = getelementptr inbounds %struct.lua_TValue, ptr %3050, i64 1
  %3052 = getelementptr inbounds %struct.lua_TValue, ptr %3051, i32 0, i32 1
  %3053 = load i32, ptr %3052, align 8, !tbaa !25
  %3054 = icmp eq i32 %3053, 0
  br i1 %3054, label %3071, label %3055

3055:                                             ; preds = %3049
  call void @llvm.lifetime.start.p0(i64 8, ptr %170) #7
  %3056 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %3056, ptr %170, align 8, !tbaa !5
  %3057 = load ptr, ptr %170, align 8, !tbaa !5
  %3058 = load ptr, ptr %8, align 8, !tbaa !5
  %3059 = getelementptr inbounds %struct.lua_TValue, ptr %3058, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3057, ptr align 8 %3059, i64 16, i1 false), !tbaa.struct !24
  %3060 = load ptr, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #7
  %3061 = load i32, ptr %7, align 4, !tbaa !21
  %3062 = lshr i32 %3061, 14
  %3063 = and i32 %3062, 262143
  %3064 = sub nsw i32 %3063, 131071
  %3065 = load ptr, ptr %3, align 8, !tbaa !5
  %3066 = getelementptr inbounds %struct.CallInfo, ptr %3065, i32 0, i32 4
  %3067 = getelementptr inbounds %struct.anon, ptr %3066, i32 0, i32 1
  %3068 = load ptr, ptr %3067, align 8, !tbaa !16
  %3069 = sext i32 %3064 to i64
  %3070 = getelementptr inbounds i32, ptr %3068, i64 %3069
  store ptr %3070, ptr %3067, align 8, !tbaa !16
  br label %3071

3071:                                             ; preds = %3055, %3049
  br label %3326

3072:                                             ; preds = %234
  call void @llvm.lifetime.start.p0(i64 4, ptr %171) #7
  %3073 = load i32, ptr %7, align 4, !tbaa !21
  %3074 = lshr i32 %3073, 23
  %3075 = and i32 %3074, 511
  store i32 %3075, ptr %171, align 4, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 4, ptr %172) #7
  %3076 = load i32, ptr %7, align 4, !tbaa !21
  %3077 = lshr i32 %3076, 14
  %3078 = and i32 %3077, 511
  store i32 %3078, ptr %172, align 4, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 4, ptr %173) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %174) #7
  %3079 = load i32, ptr %171, align 4, !tbaa !21
  %3080 = icmp eq i32 %3079, 0
  br i1 %3080, label %3081, label %3092

3081:                                             ; preds = %3072
  %3082 = load ptr, ptr %2, align 8, !tbaa !5
  %3083 = getelementptr inbounds %struct.lua_State, ptr %3082, i32 0, i32 4
  %3084 = load ptr, ptr %3083, align 8, !tbaa !36
  %3085 = load ptr, ptr %8, align 8, !tbaa !5
  %3086 = ptrtoint ptr %3084 to i64
  %3087 = ptrtoint ptr %3085 to i64
  %3088 = sub i64 %3086, %3087
  %3089 = sdiv exact i64 %3088, 16
  %3090 = trunc i64 %3089 to i32
  %3091 = sub nsw i32 %3090, 1
  store i32 %3091, ptr %171, align 4, !tbaa !21
  br label %3092

3092:                                             ; preds = %3081, %3072
  %3093 = load i32, ptr %172, align 4, !tbaa !21
  %3094 = icmp eq i32 %3093, 0
  br i1 %3094, label %3095, label %3104

3095:                                             ; preds = %3092
  %3096 = load ptr, ptr %3, align 8, !tbaa !5
  %3097 = getelementptr inbounds %struct.CallInfo, ptr %3096, i32 0, i32 4
  %3098 = getelementptr inbounds %struct.anon, ptr %3097, i32 0, i32 1
  %3099 = load ptr, ptr %3098, align 8, !tbaa !16
  %3100 = getelementptr inbounds i32, ptr %3099, i32 1
  store ptr %3100, ptr %3098, align 8, !tbaa !16
  %3101 = load i32, ptr %3099, align 4, !tbaa !21
  %3102 = lshr i32 %3101, 6
  %3103 = and i32 %3102, 67108863
  store i32 %3103, ptr %172, align 4, !tbaa !21
  br label %3104

3104:                                             ; preds = %3095, %3092
  %3105 = load ptr, ptr %8, align 8, !tbaa !5
  %3106 = getelementptr inbounds %struct.lua_TValue, ptr %3105, i32 0, i32 0
  %3107 = load ptr, ptr %3106, align 8, !tbaa !16
  store ptr %3107, ptr %174, align 8, !tbaa !5
  %3108 = load i32, ptr %172, align 4, !tbaa !21
  %3109 = sub nsw i32 %3108, 1
  %3110 = mul nsw i32 %3109, 50
  %3111 = load i32, ptr %171, align 4, !tbaa !21
  %3112 = add nsw i32 %3110, %3111
  store i32 %3112, ptr %173, align 4, !tbaa !21
  %3113 = load i32, ptr %173, align 4, !tbaa !21
  %3114 = load ptr, ptr %174, align 8, !tbaa !5
  %3115 = getelementptr inbounds %struct.Table, ptr %3114, i32 0, i32 5
  %3116 = load i32, ptr %3115, align 4, !tbaa !47
  %3117 = icmp ugt i32 %3113, %3116
  br i1 %3117, label %3118, label %3122

3118:                                             ; preds = %3104
  %3119 = load ptr, ptr %2, align 8, !tbaa !5
  %3120 = load ptr, ptr %174, align 8, !tbaa !5
  %3121 = load i32, ptr %173, align 4, !tbaa !21
  call void @luaH_resizearray(ptr noundef %3119, ptr noundef %3120, i32 noundef %3121)
  br label %3122

3122:                                             ; preds = %3118, %3104
  br label %3123

3123:                                             ; preds = %3162, %3122
  %3124 = load i32, ptr %171, align 4, !tbaa !21
  %3125 = icmp sgt i32 %3124, 0
  br i1 %3125, label %3126, label %3165

3126:                                             ; preds = %3123
  call void @llvm.lifetime.start.p0(i64 8, ptr %175) #7
  %3127 = load ptr, ptr %8, align 8, !tbaa !5
  %3128 = load i32, ptr %171, align 4, !tbaa !21
  %3129 = sext i32 %3128 to i64
  %3130 = getelementptr inbounds %struct.lua_TValue, ptr %3127, i64 %3129
  store ptr %3130, ptr %175, align 8, !tbaa !5
  %3131 = load ptr, ptr %2, align 8, !tbaa !5
  %3132 = load ptr, ptr %174, align 8, !tbaa !5
  %3133 = load i32, ptr %173, align 4, !tbaa !21
  %3134 = add i32 %3133, -1
  store i32 %3134, ptr %173, align 4, !tbaa !21
  %3135 = zext i32 %3133 to i64
  %3136 = load ptr, ptr %175, align 8, !tbaa !5
  call void @luaH_setint(ptr noundef %3131, ptr noundef %3132, i64 noundef %3135, ptr noundef %3136)
  %3137 = load ptr, ptr %175, align 8, !tbaa !5
  %3138 = getelementptr inbounds %struct.lua_TValue, ptr %3137, i32 0, i32 1
  %3139 = load i32, ptr %3138, align 8, !tbaa !25
  %3140 = and i32 %3139, 64
  %3141 = icmp ne i32 %3140, 0
  br i1 %3141, label %3142, label %3161

3142:                                             ; preds = %3126
  %3143 = load ptr, ptr %174, align 8, !tbaa !5
  %3144 = getelementptr inbounds %struct.Table, ptr %3143, i32 0, i32 2
  %3145 = load i8, ptr %3144, align 1, !tbaa !49
  %3146 = zext i8 %3145 to i32
  %3147 = and i32 %3146, 4
  %3148 = icmp ne i32 %3147, 0
  br i1 %3148, label %3149, label %3161

3149:                                             ; preds = %3142
  %3150 = load ptr, ptr %175, align 8, !tbaa !5
  %3151 = getelementptr inbounds %struct.lua_TValue, ptr %3150, i32 0, i32 0
  %3152 = load ptr, ptr %3151, align 8, !tbaa !16
  %3153 = getelementptr inbounds %struct.GCObject, ptr %3152, i32 0, i32 2
  %3154 = load i8, ptr %3153, align 1, !tbaa !50
  %3155 = zext i8 %3154 to i32
  %3156 = and i32 %3155, 3
  %3157 = icmp ne i32 %3156, 0
  br i1 %3157, label %3158, label %3161

3158:                                             ; preds = %3149
  %3159 = load ptr, ptr %2, align 8, !tbaa !5
  %3160 = load ptr, ptr %174, align 8, !tbaa !5
  call void @luaC_barrierback_(ptr noundef %3159, ptr noundef %3160)
  br label %3161

3161:                                             ; preds = %3158, %3149, %3142, %3126
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #7
  br label %3162

3162:                                             ; preds = %3161
  %3163 = load i32, ptr %171, align 4, !tbaa !21
  %3164 = add nsw i32 %3163, -1
  store i32 %3164, ptr %171, align 4, !tbaa !21
  br label %3123, !llvm.loop !52

3165:                                             ; preds = %3123
  %3166 = load ptr, ptr %3, align 8, !tbaa !5
  %3167 = getelementptr inbounds %struct.CallInfo, ptr %3166, i32 0, i32 1
  %3168 = load ptr, ptr %3167, align 8, !tbaa !37
  %3169 = load ptr, ptr %2, align 8, !tbaa !5
  %3170 = getelementptr inbounds %struct.lua_State, ptr %3169, i32 0, i32 4
  store ptr %3168, ptr %3170, align 8, !tbaa !36
  store i32 5, ptr %132, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %174) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %173) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %172) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %171) #7
  br label %3326

3171:                                             ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %176) #7
  %3172 = load ptr, ptr %4, align 8, !tbaa !5
  %3173 = getelementptr inbounds %struct.LClosure, ptr %3172, i32 0, i32 5
  %3174 = load ptr, ptr %3173, align 8, !tbaa !17
  %3175 = getelementptr inbounds %struct.Proto, ptr %3174, i32 0, i32 16
  %3176 = load ptr, ptr %3175, align 8, !tbaa !53
  %3177 = load i32, ptr %7, align 4, !tbaa !21
  %3178 = lshr i32 %3177, 14
  %3179 = and i32 %3178, 262143
  %3180 = sext i32 %3179 to i64
  %3181 = getelementptr inbounds ptr, ptr %3176, i64 %3180
  %3182 = load ptr, ptr %3181, align 8, !tbaa !5
  store ptr %3182, ptr %176, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %177) #7
  %3183 = load ptr, ptr %176, align 8, !tbaa !5
  %3184 = load ptr, ptr %4, align 8, !tbaa !5
  %3185 = getelementptr inbounds %struct.LClosure, ptr %3184, i32 0, i32 6
  %3186 = getelementptr inbounds [1 x ptr], ptr %3185, i64 0, i64 0
  %3187 = load ptr, ptr %6, align 8, !tbaa !5
  %3188 = call ptr @getcached(ptr noundef %3183, ptr noundef %3186, ptr noundef %3187)
  store ptr %3188, ptr %177, align 8, !tbaa !5
  %3189 = load ptr, ptr %177, align 8, !tbaa !5
  %3190 = icmp eq ptr %3189, null
  br i1 %3190, label %3191, label %3199

3191:                                             ; preds = %3171
  %3192 = load ptr, ptr %2, align 8, !tbaa !5
  %3193 = load ptr, ptr %176, align 8, !tbaa !5
  %3194 = load ptr, ptr %4, align 8, !tbaa !5
  %3195 = getelementptr inbounds %struct.LClosure, ptr %3194, i32 0, i32 6
  %3196 = getelementptr inbounds [1 x ptr], ptr %3195, i64 0, i64 0
  %3197 = load ptr, ptr %6, align 8, !tbaa !5
  %3198 = load ptr, ptr %8, align 8, !tbaa !5
  call void @pushclosure(ptr noundef %3192, ptr noundef %3193, ptr noundef %3196, ptr noundef %3197, ptr noundef %3198)
  br label %3207

3199:                                             ; preds = %3171
  call void @llvm.lifetime.start.p0(i64 8, ptr %178) #7
  %3200 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %3200, ptr %178, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %179) #7
  %3201 = load ptr, ptr %177, align 8, !tbaa !5
  store ptr %3201, ptr %179, align 8, !tbaa !5
  %3202 = load ptr, ptr %179, align 8, !tbaa !5
  %3203 = load ptr, ptr %178, align 8, !tbaa !5
  %3204 = getelementptr inbounds %struct.lua_TValue, ptr %3203, i32 0, i32 0
  store ptr %3202, ptr %3204, align 8, !tbaa !16
  %3205 = load ptr, ptr %178, align 8, !tbaa !5
  %3206 = getelementptr inbounds %struct.lua_TValue, ptr %3205, i32 0, i32 1
  store i32 70, ptr %3206, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr %179) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %178) #7
  br label %3207

3207:                                             ; preds = %3199, %3191
  %3208 = load ptr, ptr %2, align 8, !tbaa !5
  %3209 = getelementptr inbounds %struct.lua_State, ptr %3208, i32 0, i32 5
  %3210 = load ptr, ptr %3209, align 8, !tbaa !31
  %3211 = getelementptr inbounds %struct.global_State, ptr %3210, i32 0, i32 3
  %3212 = load i64, ptr %3211, align 8, !tbaa !32
  %3213 = icmp sgt i64 %3212, 0
  br i1 %3213, label %3214, label %3225

3214:                                             ; preds = %3207
  %3215 = load ptr, ptr %8, align 8, !tbaa !5
  %3216 = getelementptr inbounds %struct.lua_TValue, ptr %3215, i64 1
  %3217 = load ptr, ptr %2, align 8, !tbaa !5
  %3218 = getelementptr inbounds %struct.lua_State, ptr %3217, i32 0, i32 4
  store ptr %3216, ptr %3218, align 8, !tbaa !36
  %3219 = load ptr, ptr %2, align 8, !tbaa !5
  call void @luaC_step(ptr noundef %3219)
  %3220 = load ptr, ptr %3, align 8, !tbaa !5
  %3221 = getelementptr inbounds %struct.CallInfo, ptr %3220, i32 0, i32 1
  %3222 = load ptr, ptr %3221, align 8, !tbaa !37
  %3223 = load ptr, ptr %2, align 8, !tbaa !5
  %3224 = getelementptr inbounds %struct.lua_State, ptr %3223, i32 0, i32 4
  store ptr %3222, ptr %3224, align 8, !tbaa !36
  br label %3225

3225:                                             ; preds = %3214, %3207
  %3226 = load ptr, ptr %3, align 8, !tbaa !5
  %3227 = getelementptr inbounds %struct.CallInfo, ptr %3226, i32 0, i32 4
  %3228 = getelementptr inbounds %struct.anon, ptr %3227, i32 0, i32 0
  %3229 = load ptr, ptr %3228, align 8, !tbaa !16
  store ptr %3229, ptr %6, align 8, !tbaa !5
  store i32 5, ptr %132, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %177) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #7
  br label %3326

3230:                                             ; preds = %234
  call void @llvm.lifetime.start.p0(i64 4, ptr %180) #7
  %3231 = load i32, ptr %7, align 4, !tbaa !21
  %3232 = lshr i32 %3231, 23
  %3233 = and i32 %3232, 511
  %3234 = sub nsw i32 %3233, 1
  store i32 %3234, ptr %180, align 4, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 4, ptr %181) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %182) #7
  %3235 = load ptr, ptr %6, align 8, !tbaa !5
  %3236 = load ptr, ptr %3, align 8, !tbaa !5
  %3237 = getelementptr inbounds %struct.CallInfo, ptr %3236, i32 0, i32 0
  %3238 = load ptr, ptr %3237, align 8, !tbaa !15
  %3239 = ptrtoint ptr %3235 to i64
  %3240 = ptrtoint ptr %3238 to i64
  %3241 = sub i64 %3239, %3240
  %3242 = sdiv exact i64 %3241, 16
  %3243 = trunc i64 %3242 to i32
  %3244 = load ptr, ptr %4, align 8, !tbaa !5
  %3245 = getelementptr inbounds %struct.LClosure, ptr %3244, i32 0, i32 5
  %3246 = load ptr, ptr %3245, align 8, !tbaa !17
  %3247 = getelementptr inbounds %struct.Proto, ptr %3246, i32 0, i32 3
  %3248 = load i8, ptr %3247, align 2, !tbaa !44
  %3249 = zext i8 %3248 to i32
  %3250 = sub nsw i32 %3243, %3249
  %3251 = sub nsw i32 %3250, 1
  store i32 %3251, ptr %182, align 4, !tbaa !21
  %3252 = load i32, ptr %180, align 4, !tbaa !21
  %3253 = icmp slt i32 %3252, 0
  br i1 %3253, label %3254, label %3290

3254:                                             ; preds = %3230
  %3255 = load i32, ptr %182, align 4, !tbaa !21
  store i32 %3255, ptr %180, align 4, !tbaa !21
  %3256 = load ptr, ptr %2, align 8, !tbaa !5
  %3257 = getelementptr inbounds %struct.lua_State, ptr %3256, i32 0, i32 8
  %3258 = load ptr, ptr %3257, align 8, !tbaa !54
  %3259 = load ptr, ptr %2, align 8, !tbaa !5
  %3260 = getelementptr inbounds %struct.lua_State, ptr %3259, i32 0, i32 4
  %3261 = load ptr, ptr %3260, align 8, !tbaa !36
  %3262 = ptrtoint ptr %3258 to i64
  %3263 = ptrtoint ptr %3261 to i64
  %3264 = sub i64 %3262, %3263
  %3265 = sdiv exact i64 %3264, 16
  %3266 = load i32, ptr %182, align 4, !tbaa !21
  %3267 = sext i32 %3266 to i64
  %3268 = icmp sle i64 %3265, %3267
  br i1 %3268, label %3269, label %3272

3269:                                             ; preds = %3254
  %3270 = load ptr, ptr %2, align 8, !tbaa !5
  %3271 = load i32, ptr %182, align 4, !tbaa !21
  call void @luaD_growstack(ptr noundef %3270, i32 noundef %3271)
  br label %3273

3272:                                             ; preds = %3254
  br label %3273

3273:                                             ; preds = %3272, %3269
  %3274 = load ptr, ptr %3, align 8, !tbaa !5
  %3275 = getelementptr inbounds %struct.CallInfo, ptr %3274, i32 0, i32 4
  %3276 = getelementptr inbounds %struct.anon, ptr %3275, i32 0, i32 0
  %3277 = load ptr, ptr %3276, align 8, !tbaa !16
  store ptr %3277, ptr %6, align 8, !tbaa !5
  %3278 = load ptr, ptr %6, align 8, !tbaa !5
  %3279 = load i32, ptr %7, align 4, !tbaa !21
  %3280 = lshr i32 %3279, 6
  %3281 = and i32 %3280, 255
  %3282 = sext i32 %3281 to i64
  %3283 = getelementptr inbounds %struct.lua_TValue, ptr %3278, i64 %3282
  store ptr %3283, ptr %8, align 8, !tbaa !5
  %3284 = load ptr, ptr %8, align 8, !tbaa !5
  %3285 = load i32, ptr %182, align 4, !tbaa !21
  %3286 = sext i32 %3285 to i64
  %3287 = getelementptr inbounds %struct.lua_TValue, ptr %3284, i64 %3286
  %3288 = load ptr, ptr %2, align 8, !tbaa !5
  %3289 = getelementptr inbounds %struct.lua_State, ptr %3288, i32 0, i32 4
  store ptr %3287, ptr %3289, align 8, !tbaa !36
  br label %3290

3290:                                             ; preds = %3273, %3230
  store i32 0, ptr %181, align 4, !tbaa !21
  br label %3291

3291:                                             ; preds = %3321, %3290
  %3292 = load i32, ptr %181, align 4, !tbaa !21
  %3293 = load i32, ptr %180, align 4, !tbaa !21
  %3294 = icmp slt i32 %3292, %3293
  br i1 %3294, label %3295, label %3324

3295:                                             ; preds = %3291
  %3296 = load i32, ptr %181, align 4, !tbaa !21
  %3297 = load i32, ptr %182, align 4, !tbaa !21
  %3298 = icmp slt i32 %3296, %3297
  br i1 %3298, label %3299, label %3314

3299:                                             ; preds = %3295
  call void @llvm.lifetime.start.p0(i64 8, ptr %183) #7
  %3300 = load ptr, ptr %8, align 8, !tbaa !5
  %3301 = load i32, ptr %181, align 4, !tbaa !21
  %3302 = sext i32 %3301 to i64
  %3303 = getelementptr inbounds %struct.lua_TValue, ptr %3300, i64 %3302
  store ptr %3303, ptr %183, align 8, !tbaa !5
  %3304 = load ptr, ptr %183, align 8, !tbaa !5
  %3305 = load ptr, ptr %6, align 8, !tbaa !5
  %3306 = load i32, ptr %182, align 4, !tbaa !21
  %3307 = sext i32 %3306 to i64
  %3308 = sub i64 0, %3307
  %3309 = getelementptr inbounds %struct.lua_TValue, ptr %3305, i64 %3308
  %3310 = load i32, ptr %181, align 4, !tbaa !21
  %3311 = sext i32 %3310 to i64
  %3312 = getelementptr inbounds %struct.lua_TValue, ptr %3309, i64 %3311
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3304, ptr align 8 %3312, i64 16, i1 false), !tbaa.struct !24
  %3313 = load ptr, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %183) #7
  br label %3320

3314:                                             ; preds = %3295
  %3315 = load ptr, ptr %8, align 8, !tbaa !5
  %3316 = load i32, ptr %181, align 4, !tbaa !21
  %3317 = sext i32 %3316 to i64
  %3318 = getelementptr inbounds %struct.lua_TValue, ptr %3315, i64 %3317
  %3319 = getelementptr inbounds %struct.lua_TValue, ptr %3318, i32 0, i32 1
  store i32 0, ptr %3319, align 8, !tbaa !25
  br label %3320

3320:                                             ; preds = %3314, %3299
  br label %3321

3321:                                             ; preds = %3320
  %3322 = load i32, ptr %181, align 4, !tbaa !21
  %3323 = add nsw i32 %3322, 1
  store i32 %3323, ptr %181, align 4, !tbaa !21
  br label %3291, !llvm.loop !55

3324:                                             ; preds = %3291
  store i32 5, ptr %132, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %182) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %181) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %180) #7
  br label %3326

3325:                                             ; preds = %234
  br label %3326

3326:                                             ; preds = %3325, %3324, %3225, %3165, %3071, %2987, %2872, %2718, %2586, %2537, %2452, %2373, %2278, %2183, %2079, %2053, %1978, %1969, %1945, %1908, %1854, %1764, %1646, %1520, %1430, %1341, %1252, %1163, %1074, %985, %870, %755, %634, %595, %543, %497, %459, %397, %362, %314, %313, %300, %265, %254, %244, %234
  store i32 0, ptr %132, align 4
  br label %3327

3327:                                             ; preds = %3326, %2998, %2768, %2718, %2586
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  %3328 = load i32, ptr %132, align 4
  switch i32 %3328, label %3330 [
    i32 0, label %3329
    i32 2, label %187
  ]

3329:                                             ; preds = %3327
  br label %202

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

declare hidden void @luaG_traceexec(ptr noundef) #4

declare hidden void @luaC_upvalbarrier_(ptr noundef, ptr noundef) #4

declare hidden ptr @luaH_new(ptr noundef) #4

declare hidden void @luaH_resize(ptr noundef, ptr noundef, i32 noundef, i32 noundef) #4

declare hidden i32 @luaO_fb2int(i32 noundef) #4

declare hidden void @luaC_step(ptr noundef) #4

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

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

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

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

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

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

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

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

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

declare hidden void @luaH_setint(ptr noundef, ptr noundef, i64 noundef, ptr noundef) #4

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

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

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

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

!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, !6, i64 32}
!10 = !{!"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, !6, i64 88, !11, i64 96, !6, i64 168, !12, i64 176, !14, i64 184, !14, i64 188, !14, i64 192, !13, i64 196, !13, i64 198, !7, i64 200, !7, i64 201}
!11 = !{!"CallInfo", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !7, i64 32, !12, i64 56, !13, i64 64, !7, i64 66}
!12 = !{!"long", !7, i64 0}
!13 = !{!"short", !7, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{!11, !6, i64 0}
!16 = !{!7, !7, i64 0}
!17 = !{!18, !6, i64 24}
!18 = !{!"LClosure", !6, i64 0, !7, i64 8, !7, i64 9, !7, i64 10, !6, i64 16, !6, i64 24, !7, i64 32}
!19 = !{!20, !6, i64 48}
!20 = !{!"Proto", !6, i64 0, !7, i64 8, !7, i64 9, !7, i64 10, !7, i64 11, !7, i64 12, !14, i64 16, !14, i64 20, !14, i64 24, !14, i64 28, !14, i64 32, !14, i64 36, !14, i64 40, !14, i64 44, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112}
!21 = !{!14, !14, i64 0}
!22 = !{!10, !7, i64 200}
!23 = !{!10, !14, i64 192}
!24 = !{i64 0, i64 8, !16, i64 8, i64 4, !21}
!25 = !{!26, !14, i64 8}
!26 = !{!"lua_TValue", !7, i64 0, !14, i64 8}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = !{!30, !6, i64 0}
!30 = !{!"UpVal", !6, i64 0, !12, i64 8, !7, i64 16}
!31 = !{!10, !6, i64 24}
!32 = !{!33, !12, i64 24}
!33 = !{!"global_State", !6, i64 0, !6, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !34, i64 48, !26, i64 64, !14, i64 80, !7, i64 84, !7, i64 85, !7, i64 86, !7, i64 87, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !35, i64 176, !14, i64 200, !14, i64 204, !14, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !7, i64 248, !7, i64 440}
!34 = !{!"stringtable", !6, i64 0, !14, i64 8, !14, i64 12}
!35 = !{!"Mbuffer", !6, i64 0, !12, i64 8, !12, i64 16}
!36 = !{!10, !6, i64 16}
!37 = !{!11, !6, i64 8}
!38 = !{!39, !39, i64 0}
!39 = !{!"long long", !7, i64 0}
!40 = !{!41, !41, i64 0}
!41 = !{!"double", !7, i64 0}
!42 = !{!11, !7, i64 66}
!43 = !{!11, !6, i64 16}
!44 = !{!20, !7, i64 10}
!45 = !{!20, !14, i64 32}
!46 = distinct !{!46, !28}
!47 = !{!48, !14, i64 12}
!48 = !{!"Table", !6, i64 0, !7, i64 8, !7, i64 9, !7, i64 10, !7, i64 11, !14, i64 12, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!49 = !{!48, !7, i64 9}
!50 = !{!51, !7, i64 9}
!51 = !{!"GCObject", !6, i64 0, !7, i64 8, !7, i64 9}
!52 = distinct !{!52, !28}
!53 = !{!20, !6, i64 64}
!54 = !{!10, !6, i64 48}
!55 = distinct !{!55, !28}


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

@.str.7 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [37 x i8], align 1

; Function Attrs: nounwind uwtable
declare hidden i32 @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 i32 @luaV_tointeger_(ptr noundef, ptr noundef) local_unnamed_addr #0

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

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

; Function Attrs: noreturn
declare hidden void @luaG_runerror(ptr noundef, ptr noundef, ...) local_unnamed_addr #3

; 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 #4

; 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_lessequal(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

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

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

declare hidden void @luaT_trybinTM(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #4

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

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

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

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

; Function Attrs: nounwind uwtable
define hidden void @luaV_execute(ptr noundef %0) local_unnamed_addr #0 {
  %2 = alloca double, align 8
  %3 = alloca double, align 8
  %4 = alloca double, align 8
  %5 = alloca double, align 8
  %6 = alloca double, align 8
  %7 = alloca double, align 8
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i32, align 4
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = getelementptr inbounds i8, ptr %0, i64 32
  %34 = load ptr, ptr %33, align 8, !tbaa !5
  %35 = getelementptr inbounds i8, ptr %0, i64 200
  %36 = getelementptr inbounds i8, ptr %0, i64 192
  %37 = getelementptr inbounds i8, ptr %0, i64 48
  %38 = getelementptr inbounds i8, ptr %0, i64 16
  %39 = getelementptr inbounds i8, ptr %0, i64 24
  br label %.loopexit1142

.loopexit1142:                                    ; preds = %.loopexit1142.backedge, %1
  %.0 = phi ptr [ %34, %1 ], [ %.0.be, %.loopexit1142.backedge ]
  %40 = load ptr, ptr %.0, align 8, !tbaa !14
  %41 = load ptr, ptr %40, align 8, !tbaa !15
  %42 = getelementptr inbounds i8, ptr %41, i64 24
  %43 = load ptr, ptr %42, align 8, !tbaa !16
  %44 = getelementptr inbounds i8, ptr %43, i64 48
  %45 = load ptr, ptr %44, align 8, !tbaa !18
  %46 = getelementptr inbounds i8, ptr %.0, i64 32
  %47 = load ptr, ptr %46, align 8, !tbaa !15
  %48 = getelementptr inbounds i8, ptr %41, i64 32
  %49 = getelementptr inbounds i8, ptr %.0, i64 32
  %50 = getelementptr inbounds i8, ptr %.0, i64 40
  %51 = getelementptr inbounds i8, ptr %.0, i64 8
  %52 = getelementptr inbounds i8, ptr %.0, i64 8
  %53 = getelementptr inbounds i8, ptr %.0, i64 8
  %54 = getelementptr inbounds i8, ptr %.0, i64 8
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.0, i64 8
  %55 = getelementptr inbounds i8, ptr %.0, i64 8
  %56 = getelementptr inbounds i8, ptr %.0, i64 8
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.backedge, %.loopexit1142
  %.0939 = phi ptr [ %47, %.loopexit1142 ], [ %.0939.be, %.loopexit.backedge ]
  %57 = load ptr, ptr %50, align 8, !tbaa !15
  %58 = getelementptr inbounds i8, ptr %57, i64 4
  store ptr %58, ptr %50, align 8, !tbaa !15
  %59 = load i32, ptr %57, align 4, !tbaa !20
  %60 = load i8, ptr %35, align 8, !tbaa !21
  %61 = and i8 %60, 12
  %.not = icmp eq i8 %61, 0
  br i1 %.not, label %69, label %62

62:                                               ; preds = %.loopexit
  %63 = load i32, ptr %36, align 8, !tbaa !22
  %64 = add nsw i32 %63, -1
  store i32 %64, ptr %36, align 8, !tbaa !22
  %65 = icmp ne i32 %64, 0
  %66 = and i8 %60, 4
  %.not984 = icmp eq i8 %66, 0
  %or.cond1103 = and i1 %.not984, %65
  br i1 %or.cond1103, label %69, label %67

67:                                               ; preds = %62
  call void @luaG_traceexec(ptr noundef nonnull %0) #7
  %68 = load ptr, ptr %49, align 8, !tbaa !15
  br label %69

69:                                               ; preds = %62, %67, %.loopexit
  %.1940 = phi ptr [ %68, %67 ], [ %.0939, %.loopexit ], [ %.0939, %62 ]
  %70 = lshr i32 %59, 6
  %71 = and i32 %70, 255
  %72 = zext nneg i32 %71 to i64
  %73 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %72
  %74 = and i32 %59, 63
  switch i32 %74, label %.loopexit.backedge [
    i32 0, label %75
    i32 1, label %79
    i32 2, label %83
    i32 3, label %90
    i32 4, label %97
    i32 5, label %114
    i32 6, label %120
    i32 7, label %132
    i32 8, label %142
    i32 9, label %159
    i32 10, label %171
    i32 11, label %185
    i32 12, label %206
    i32 13, label %217
    i32 14, label %257
    i32 15, label %297
    i32 18, label %337
    i32 20, label %370
    i32 21, label %403
    i32 22, label %436
    i32 23, label %469
    i32 24, label %505
    i32 16, label %542
    i32 19, label %589
    i32 17, label %630
    i32 25, label %663
    i32 26, label %681
    i32 27, label %696
    i32 28, label %709
    i32 29, label %714
    i32 30, label %737
    i32 31, label %748
    i32 32, label %782
    i32 33, label %816
    i32 34, label %850
    i32 35, label %881
    i32 36, label %916
    i32 37, label %935
    i32 38, label %988
    i32 39, label %1010
    i32 40, label %1050
    i32 41, label %1108
    i32 42, label %1126
    i32 43, label %1137
    i32 44, label %1189
    i32 45, label %1212
  ]

75:                                               ; preds = %69
  %76 = lshr i32 %59, 23
  %77 = zext nneg i32 %76 to i64
  %78 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %77
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %73, ptr noundef nonnull align 8 dereferenceable(16) %78, i64 16, i1 false), !tbaa.struct !23
  br label %.loopexit.backedge

79:                                               ; preds = %69
  %80 = lshr i32 %59, 14
  %81 = zext nneg i32 %80 to i64
  %82 = getelementptr inbounds %struct.lua_TValue, ptr %45, i64 %81
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %73, ptr noundef nonnull align 8 dereferenceable(16) %82, i64 16, i1 false), !tbaa.struct !23
  br label %.loopexit.backedge

83:                                               ; preds = %69
  %84 = load ptr, ptr %50, align 8, !tbaa !15
  %85 = getelementptr inbounds i8, ptr %84, i64 4
  store ptr %85, ptr %50, align 8, !tbaa !15
  %86 = load i32, ptr %84, align 4, !tbaa !20
  %87 = lshr i32 %86, 6
  %88 = zext nneg i32 %87 to i64
  %89 = getelementptr inbounds %struct.lua_TValue, ptr %45, i64 %88
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %73, ptr noundef nonnull align 8 dereferenceable(16) %89, i64 16, i1 false), !tbaa.struct !23
  br label %.loopexit.backedge

90:                                               ; preds = %69
  %91 = lshr i32 %59, 23
  store i32 %91, ptr %73, align 8, !tbaa !15
  %92 = getelementptr inbounds i8, ptr %73, i64 8
  store i32 1, ptr %92, align 8, !tbaa !24
  %93 = and i32 %59, 8372224
  %.not1085 = icmp eq i32 %93, 0
  br i1 %.not1085, label %.loopexit.backedge, label %94

94:                                               ; preds = %90
  %95 = load ptr, ptr %50, align 8, !tbaa !15
  %96 = getelementptr inbounds i8, ptr %95, i64 4
  store ptr %96, ptr %50, align 8, !tbaa !15
  br label %.loopexit.backedge

97:                                               ; preds = %69
  %98 = lshr i32 %59, 23
  %99 = add nuw nsw i32 %98, 1
  %xtraiter = and i32 %99, 7
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.prol.loopexit, label %.prol.preheader

.prol.preheader:                                  ; preds = %97, %.prol.preheader
  %.0952.prol = phi i32 [ %102, %.prol.preheader ], [ %98, %97 ]
  %.0949.prol = phi ptr [ %100, %.prol.preheader ], [ %73, %97 ]
  %prol.iter = phi i32 [ %prol.iter.next, %.prol.preheader ], [ 0, %97 ]
  %100 = getelementptr inbounds i8, ptr %.0949.prol, i64 16
  %101 = getelementptr inbounds i8, ptr %.0949.prol, i64 8
  store i32 0, ptr %101, align 8, !tbaa !24
  %102 = add nsw i32 %.0952.prol, -1
  %prol.iter.next = add i32 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i32 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.prol.loopexit, label %.prol.preheader, !llvm.loop !26

.prol.loopexit:                                   ; preds = %.prol.preheader, %97
  %.0952.unr = phi i32 [ %98, %97 ], [ %102, %.prol.preheader ]
  %.0949.unr = phi ptr [ %73, %97 ], [ %100, %.prol.preheader ]
  %103 = icmp ult i32 %59, 58720256
  br i1 %103, label %.loopexit.backedge, label %.new

.new:                                             ; preds = %.prol.loopexit, %.new
  %.0952 = phi i32 [ %113, %.new ], [ %.0952.unr, %.prol.loopexit ]
  %.0949 = phi ptr [ %111, %.new ], [ %.0949.unr, %.prol.loopexit ]
  %104 = getelementptr inbounds i8, ptr %.0949, i64 8
  store i32 0, ptr %104, align 8, !tbaa !24
  %105 = getelementptr inbounds i8, ptr %.0949, i64 24
  store i32 0, ptr %105, align 8, !tbaa !24
  %106 = getelementptr inbounds i8, ptr %.0949, i64 40
  store i32 0, ptr %106, align 8, !tbaa !24
  %107 = getelementptr inbounds i8, ptr %.0949, i64 56
  store i32 0, ptr %107, align 8, !tbaa !24
  %108 = getelementptr inbounds i8, ptr %.0949, i64 72
  store i32 0, ptr %108, align 8, !tbaa !24
  %109 = getelementptr inbounds i8, ptr %.0949, i64 88
  store i32 0, ptr %109, align 8, !tbaa !24
  %110 = getelementptr inbounds i8, ptr %.0949, i64 104
  store i32 0, ptr %110, align 8, !tbaa !24
  %111 = getelementptr inbounds i8, ptr %.0949, i64 128
  %112 = getelementptr inbounds i8, ptr %.0949, i64 120
  store i32 0, ptr %112, align 8, !tbaa !24
  %113 = add nsw i32 %.0952, -8
  %.not1084.7 = icmp eq i32 %.0952, 7
  br i1 %.not1084.7, label %.loopexit.backedge, label %.new, !llvm.loop !28

114:                                              ; preds = %69
  %115 = lshr i32 %59, 23
  %116 = zext nneg i32 %115 to i64
  %117 = getelementptr inbounds [1 x ptr], ptr %48, i64 0, i64 %116
  %118 = load ptr, ptr %117, align 8, !tbaa !30
  %119 = load ptr, ptr %118, align 8, !tbaa !31
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %73, ptr noundef nonnull align 8 dereferenceable(16) %119, i64 16, i1 false), !tbaa.struct !23
  br label %.loopexit.backedge

120:                                              ; preds = %69
  %121 = lshr i32 %59, 23
  %122 = zext nneg i32 %121 to i64
  %123 = getelementptr inbounds [1 x ptr], ptr %48, i64 0, i64 %122
  %124 = load ptr, ptr %123, align 8, !tbaa !30
  %125 = load ptr, ptr %124, align 8, !tbaa !31
  %126 = lshr i32 %59, 14
  %127 = and i32 %59, 4194304
  %.not1083 = icmp eq i32 %127, 0
  %128 = and i32 %126, 255
  %129 = zext nneg i32 %128 to i64
  %.v1140 = select i1 %.not1083, ptr %.1940, ptr %45
  %130 = getelementptr inbounds %struct.lua_TValue, ptr %.v1140, i64 %129
  call void @luaV_gettable(ptr noundef nonnull %0, ptr noundef %125, ptr noundef %130, ptr noundef %73)
  %131 = load ptr, ptr %49, align 8, !tbaa !15
  br label %.loopexit.backedge

132:                                              ; preds = %69
  %133 = lshr i32 %59, 23
  %134 = zext nneg i32 %133 to i64
  %135 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %134
  %136 = lshr i32 %59, 14
  %137 = and i32 %59, 4194304
  %.not1082 = icmp eq i32 %137, 0
  %138 = and i32 %136, 255
  %139 = zext nneg i32 %138 to i64
  %.v1139 = select i1 %.not1082, ptr %.1940, ptr %45
  %140 = getelementptr inbounds %struct.lua_TValue, ptr %.v1139, i64 %139
  call void @luaV_gettable(ptr noundef nonnull %0, ptr noundef %135, ptr noundef %140, ptr noundef %73)
  %141 = load ptr, ptr %49, align 8, !tbaa !15
  br label %.loopexit.backedge

142:                                              ; preds = %69
  %143 = getelementptr inbounds [1 x ptr], ptr %48, i64 0, i64 %72
  %144 = load ptr, ptr %143, align 8, !tbaa !30
  %145 = load ptr, ptr %144, align 8, !tbaa !31
  %146 = lshr i32 %59, 23
  %147 = and i32 %146, 255
  %148 = zext nneg i32 %147 to i64
  %149 = getelementptr inbounds %struct.lua_TValue, ptr %45, i64 %148
  %150 = zext nneg i32 %146 to i64
  %151 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %150
  %.not10801137 = icmp slt i32 %59, 0
  %152 = select i1 %.not10801137, ptr %149, ptr %151
  %153 = lshr i32 %59, 14
  %154 = and i32 %59, 4194304
  %.not1081 = icmp eq i32 %154, 0
  %155 = and i32 %153, 255
  %156 = zext nneg i32 %155 to i64
  %.v1138 = select i1 %.not1081, ptr %.1940, ptr %45
  %157 = getelementptr inbounds %struct.lua_TValue, ptr %.v1138, i64 %156
  call void @luaV_settable(ptr noundef nonnull %0, ptr noundef %145, ptr noundef %152, ptr noundef %157)
  %158 = load ptr, ptr %49, align 8, !tbaa !15
  br label %.loopexit.backedge

159:                                              ; preds = %69
  %160 = lshr i32 %59, 23
  %161 = zext nneg i32 %160 to i64
  %162 = getelementptr inbounds [1 x ptr], ptr %48, i64 0, i64 %161
  %163 = load ptr, ptr %162, align 8, !tbaa !30
  %164 = load ptr, ptr %163, align 8, !tbaa !31
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %164, ptr noundef nonnull align 8 dereferenceable(16) %73, i64 16, i1 false), !tbaa.struct !23
  %165 = load ptr, ptr %163, align 8, !tbaa !31
  %166 = getelementptr inbounds i8, ptr %165, i64 8
  %167 = load i32, ptr %166, align 8, !tbaa !24
  %168 = and i32 %167, 64
  %.not1078 = icmp ne i32 %168, 0
  %169 = getelementptr inbounds i8, ptr %163, i64 16
  %.not1079 = icmp eq ptr %165, %169
  %or.cond1086 = select i1 %.not1078, i1 %.not1079, i1 false
  br i1 %or.cond1086, label %170, label %.loopexit.backedge

170:                                              ; preds = %159
  call void @luaC_upvalbarrier_(ptr noundef nonnull %0, ptr noundef nonnull %163) #7
  br label %.loopexit.backedge

171:                                              ; preds = %69
  %172 = lshr i32 %59, 23
  %173 = and i32 %172, 255
  %174 = zext nneg i32 %173 to i64
  %175 = getelementptr inbounds %struct.lua_TValue, ptr %45, i64 %174
  %176 = zext nneg i32 %172 to i64
  %177 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %176
  %.not10761135 = icmp slt i32 %59, 0
  %178 = select i1 %.not10761135, ptr %175, ptr %177
  %179 = lshr i32 %59, 14
  %180 = and i32 %59, 4194304
  %.not1077 = icmp eq i32 %180, 0
  %181 = and i32 %179, 255
  %182 = zext nneg i32 %181 to i64
  %.v1136 = select i1 %.not1077, ptr %.1940, ptr %45
  %183 = getelementptr inbounds %struct.lua_TValue, ptr %.v1136, i64 %182
  call void @luaV_settable(ptr noundef nonnull %0, ptr noundef %73, ptr noundef %178, ptr noundef %183)
  %184 = load ptr, ptr %49, align 8, !tbaa !15
  br label %.loopexit.backedge

185:                                              ; preds = %69
  %186 = lshr i32 %59, 14
  %187 = and i32 %186, 511
  %188 = call ptr @luaH_new(ptr noundef nonnull %0) #7
  store ptr %188, ptr %73, align 8, !tbaa !15
  %189 = getelementptr inbounds i8, ptr %73, i64 8
  store i32 69, ptr %189, align 8, !tbaa !24
  %190 = icmp ugt i32 %59, 8388607
  %191 = icmp ne i32 %187, 0
  %or.cond = select i1 %190, i1 true, i1 %191
  br i1 %or.cond, label %192, label %196

192:                                              ; preds = %185
  %193 = lshr i32 %59, 23
  %194 = call i32 @luaO_fb2int(i32 noundef %193) #7
  %195 = call i32 @luaO_fb2int(i32 noundef %187) #7
  call void @luaH_resize(ptr noundef nonnull %0, ptr noundef %188, i32 noundef %194, i32 noundef %195) #7
  br label %196

196:                                              ; preds = %185, %192
  %197 = load ptr, ptr %39, align 8, !tbaa !33
  %198 = getelementptr inbounds i8, ptr %197, i64 24
  %199 = load i64, ptr %198, align 8, !tbaa !34
  %200 = icmp sgt i64 %199, 0
  br i1 %200, label %201, label %204

201:                                              ; preds = %196
  %202 = getelementptr inbounds i8, ptr %73, i64 16
  store ptr %202, ptr %38, align 8, !tbaa !38
  call void @luaC_step(ptr noundef nonnull %0) #7
  %203 = load ptr, ptr %56, align 8, !tbaa !39
  store ptr %203, ptr %38, align 8, !tbaa !38
  br label %204

204:                                              ; preds = %201, %196
  %205 = load ptr, ptr %49, align 8, !tbaa !15
  br label %.loopexit.backedge

206:                                              ; preds = %69
  %207 = lshr i32 %59, 23
  %208 = zext nneg i32 %207 to i64
  %209 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %208
  %210 = getelementptr inbounds i8, ptr %73, i64 16
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %210, ptr noundef nonnull align 8 dereferenceable(16) %209, i64 16, i1 false), !tbaa.struct !23
  %211 = lshr i32 %59, 14
  %212 = and i32 %59, 4194304
  %.not1075 = icmp eq i32 %212, 0
  %213 = and i32 %211, 255
  %214 = zext nneg i32 %213 to i64
  %.v1134 = select i1 %.not1075, ptr %.1940, ptr %45
  %215 = getelementptr inbounds %struct.lua_TValue, ptr %.v1134, i64 %214
  call void @luaV_gettable(ptr noundef nonnull %0, ptr noundef %209, ptr noundef %215, ptr noundef %73)
  %216 = load ptr, ptr %49, align 8, !tbaa !15
  br label %.loopexit.backedge

217:                                              ; preds = %69
  %218 = lshr i32 %59, 23
  %219 = and i32 %218, 255
  %220 = zext nneg i32 %219 to i64
  %221 = getelementptr inbounds %struct.lua_TValue, ptr %45, i64 %220
  %222 = zext nneg i32 %218 to i64
  %223 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %222
  %.not10711132 = icmp slt i32 %59, 0
  %224 = select i1 %.not10711132, ptr %221, ptr %223
  %225 = lshr i32 %59, 14
  %226 = and i32 %59, 4194304
  %.not1072 = icmp eq i32 %226, 0
  %227 = and i32 %225, 255
  %228 = zext nneg i32 %227 to i64
  %.v1133 = select i1 %.not1072, ptr %.1940, ptr %45
  %229 = getelementptr inbounds %struct.lua_TValue, ptr %.v1133, i64 %228
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #7
  %230 = getelementptr inbounds i8, ptr %224, i64 8
  %231 = load i32, ptr %230, align 8, !tbaa !24
  switch i32 %231, label %.thread [
    i32 19, label %232
    i32 3, label %241
  ]

232:                                              ; preds = %217
  %233 = getelementptr inbounds i8, ptr %229, i64 8
  %234 = load i32, ptr %233, align 8, !tbaa !24
  %235 = icmp eq i32 %234, 19
  br i1 %235, label %236, label %.thread

236:                                              ; preds = %232
  %237 = load i64, ptr %224, align 8, !tbaa !15
  %238 = load i64, ptr %229, align 8, !tbaa !15
  %239 = add i64 %238, %237
  store i64 %239, ptr %73, align 8, !tbaa !15
  %240 = getelementptr inbounds i8, ptr %73, i64 8
  store i32 19, ptr %240, align 8, !tbaa !24
  br label %256

241:                                              ; preds = %217
  %242 = load double, ptr %224, align 8, !tbaa !15
  store double %242, ptr %2, align 8, !tbaa !40
  br label %244

.thread:                                          ; preds = %217, %232
  %243 = call i32 @luaV_tonumber_(ptr noundef nonnull %224, ptr noundef nonnull %2)
  %.not1073 = icmp eq i32 %243, 0
  br i1 %.not1073, label %254, label %244

244:                                              ; preds = %241, %.thread
  %245 = getelementptr inbounds i8, ptr %229, i64 8
  %246 = load i32, ptr %245, align 8, !tbaa !24
  %247 = icmp eq i32 %246, 3
  br i1 %247, label %._crit_edge1197, label %248

248:                                              ; preds = %244
  %249 = call i32 @luaV_tonumber_(ptr noundef nonnull %229, ptr noundef nonnull %3)
  %.not1074 = icmp eq i32 %249, 0
  br i1 %.not1074, label %254, label %._crit_edge1197

._crit_edge1197:                                  ; preds = %248, %244
  %.in1230 = phi ptr [ %229, %244 ], [ %3, %248 ]
  %250 = load double, ptr %.in1230, align 8, !tbaa !15
  %251 = load double, ptr %2, align 8, !tbaa !40
  %252 = fadd double %251, %250
  store double %252, ptr %73, align 8, !tbaa !15
  %253 = getelementptr inbounds i8, ptr %73, i64 8
  store i32 3, ptr %253, align 8, !tbaa !24
  br label %256

254:                                              ; preds = %248, %.thread
  call void @luaT_trybinTM(ptr noundef nonnull %0, ptr noundef nonnull %224, ptr noundef %229, ptr noundef %73, i32 noundef 6) #7
  %255 = load ptr, ptr %49, align 8, !tbaa !15
  br label %256

256:                                              ; preds = %._crit_edge1197, %254, %236
  %.2941 = phi ptr [ %.1940, %236 ], [ %.1940, %._crit_edge1197 ], [ %255, %254 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #7
  br label %.loopexit.backedge

257:                                              ; preds = %69
  %258 = lshr i32 %59, 23
  %259 = and i32 %258, 255
  %260 = zext nneg i32 %259 to i64
  %261 = getelementptr inbounds %struct.lua_TValue, ptr %45, i64 %260
  %262 = zext nneg i32 %258 to i64
  %263 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %262
  %.not10671130 = icmp slt i32 %59, 0
  %264 = select i1 %.not10671130, ptr %261, ptr %263
  %265 = lshr i32 %59, 14
  %266 = and i32 %59, 4194304
  %.not1068 = icmp eq i32 %266, 0
  %267 = and i32 %265, 255
  %268 = zext nneg i32 %267 to i64
  %.v1131 = select i1 %.not1068, ptr %.1940, ptr %45
  %269 = getelementptr inbounds %struct.lua_TValue, ptr %.v1131, i64 %268
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #7
  %270 = getelementptr inbounds i8, ptr %264, i64 8
  %271 = load i32, ptr %270, align 8, !tbaa !24
  switch i32 %271, label %.thread1087 [
    i32 19, label %272
    i32 3, label %281
  ]

272:                                              ; preds = %257
  %273 = getelementptr inbounds i8, ptr %269, i64 8
  %274 = load i32, ptr %273, align 8, !tbaa !24
  %275 = icmp eq i32 %274, 19
  br i1 %275, label %276, label %.thread1087

276:                                              ; preds = %272
  %277 = load i64, ptr %264, align 8, !tbaa !15
  %278 = load i64, ptr %269, align 8, !tbaa !15
  %279 = sub i64 %277, %278
  store i64 %279, ptr %73, align 8, !tbaa !15
  %280 = getelementptr inbounds i8, ptr %73, i64 8
  store i32 19, ptr %280, align 8, !tbaa !24
  br label %296

281:                                              ; preds = %257
  %282 = load double, ptr %264, align 8, !tbaa !15
  store double %282, ptr %4, align 8, !tbaa !40
  br label %284

.thread1087:                                      ; preds = %257, %272
  %283 = call i32 @luaV_tonumber_(ptr noundef nonnull %264, ptr noundef nonnull %4)
  %.not1069 = icmp eq i32 %283, 0
  br i1 %.not1069, label %294, label %284

284:                                              ; preds = %281, %.thread1087
  %285 = getelementptr inbounds i8, ptr %269, i64 8
  %286 = load i32, ptr %285, align 8, !tbaa !24
  %287 = icmp eq i32 %286, 3
  br i1 %287, label %._crit_edge1195, label %288

288:                                              ; preds = %284
  %289 = call i32 @luaV_tonumber_(ptr noundef nonnull %269, ptr noundef nonnull %5)
  %.not1070 = icmp eq i32 %289, 0
  br i1 %.not1070, label %294, label %._crit_edge1195

._crit_edge1195:                                  ; preds = %288, %284
  %.in1229 = phi ptr [ %269, %284 ], [ %5, %288 ]
  %290 = load double, ptr %.in1229, align 8, !tbaa !15
  %291 = load double, ptr %4, align 8, !tbaa !40
  %292 = fsub double %291, %290
  store double %292, ptr %73, align 8, !tbaa !15
  %293 = getelementptr inbounds i8, ptr %73, i64 8
  store i32 3, ptr %293, align 8, !tbaa !24
  br label %296

294:                                              ; preds = %288, %.thread1087
  call void @luaT_trybinTM(ptr noundef nonnull %0, ptr noundef nonnull %264, ptr noundef %269, ptr noundef %73, i32 noundef 7) #7
  %295 = load ptr, ptr %49, align 8, !tbaa !15
  br label %296

296:                                              ; preds = %._crit_edge1195, %294, %276
  %.3942 = phi ptr [ %.1940, %276 ], [ %.1940, %._crit_edge1195 ], [ %295, %294 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #7
  br label %.loopexit.backedge

297:                                              ; preds = %69
  %298 = lshr i32 %59, 23
  %299 = and i32 %298, 255
  %300 = zext nneg i32 %299 to i64
  %301 = getelementptr inbounds %struct.lua_TValue, ptr %45, i64 %300
  %302 = zext nneg i32 %298 to i64
  %303 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %302
  %.not10631128 = icmp slt i32 %59, 0
  %304 = select i1 %.not10631128, ptr %301, ptr %303
  %305 = lshr i32 %59, 14
  %306 = and i32 %59, 4194304
  %.not1064 = icmp eq i32 %306, 0
  %307 = and i32 %305, 255
  %308 = zext nneg i32 %307 to i64
  %.v1129 = select i1 %.not1064, ptr %.1940, ptr %45
  %309 = getelementptr inbounds %struct.lua_TValue, ptr %.v1129, i64 %308
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #7
  %310 = getelementptr inbounds i8, ptr %304, i64 8
  %311 = load i32, ptr %310, align 8, !tbaa !24
  switch i32 %311, label %.thread1088 [
    i32 19, label %312
    i32 3, label %321
  ]

312:                                              ; preds = %297
  %313 = getelementptr inbounds i8, ptr %309, i64 8
  %314 = load i32, ptr %313, align 8, !tbaa !24
  %315 = icmp eq i32 %314, 19
  br i1 %315, label %316, label %.thread1088

316:                                              ; preds = %312
  %317 = load i64, ptr %304, align 8, !tbaa !15
  %318 = load i64, ptr %309, align 8, !tbaa !15
  %319 = mul i64 %318, %317
  store i64 %319, ptr %73, align 8, !tbaa !15
  %320 = getelementptr inbounds i8, ptr %73, i64 8
  store i32 19, ptr %320, align 8, !tbaa !24
  br label %336

321:                                              ; preds = %297
  %322 = load double, ptr %304, align 8, !tbaa !15
  store double %322, ptr %6, align 8, !tbaa !40
  br label %324

.thread1088:                                      ; preds = %297, %312
  %323 = call i32 @luaV_tonumber_(ptr noundef nonnull %304, ptr noundef nonnull %6)
  %.not1065 = icmp eq i32 %323, 0
  br i1 %.not1065, label %334, label %324

324:                                              ; preds = %321, %.thread1088
  %325 = getelementptr inbounds i8, ptr %309, i64 8
  %326 = load i32, ptr %325, align 8, !tbaa !24
  %327 = icmp eq i32 %326, 3
  br i1 %327, label %._crit_edge1193, label %328

328:                                              ; preds = %324
  %329 = call i32 @luaV_tonumber_(ptr noundef nonnull %309, ptr noundef nonnull %7)
  %.not1066 = icmp eq i32 %329, 0
  br i1 %.not1066, label %334, label %._crit_edge1193

._crit_edge1193:                                  ; preds = %328, %324
  %.in1228 = phi ptr [ %309, %324 ], [ %7, %328 ]
  %330 = load double, ptr %.in1228, align 8, !tbaa !15
  %331 = load double, ptr %6, align 8, !tbaa !40
  %332 = fmul double %331, %330
  store double %332, ptr %73, align 8, !tbaa !15
  %333 = getelementptr inbounds i8, ptr %73, i64 8
  store i32 3, ptr %333, align 8, !tbaa !24
  br label %336

334:                                              ; preds = %328, %.thread1088
  call void @luaT_trybinTM(ptr noundef nonnull %0, ptr noundef nonnull %304, ptr noundef %309, ptr noundef %73, i32 noundef 8) #7
  %335 = load ptr, ptr %49, align 8, !tbaa !15
  br label %336

336:                                              ; preds = %._crit_edge1193, %334, %316
  %.4943 = phi ptr [ %.1940, %316 ], [ %.1940, %._crit_edge1193 ], [ %335, %334 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #7
  br label %.loopexit.backedge

337:                                              ; preds = %69
  %338 = lshr i32 %59, 23
  %339 = and i32 %338, 255
  %340 = zext nneg i32 %339 to i64
  %341 = getelementptr inbounds %struct.lua_TValue, ptr %45, i64 %340
  %342 = zext nneg i32 %338 to i64
  %343 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %342
  %.not10591126 = icmp slt i32 %59, 0
  %344 = select i1 %.not10591126, ptr %341, ptr %343
  %345 = lshr i32 %59, 14
  %346 = and i32 %59, 4194304
  %.not1060 = icmp eq i32 %346, 0
  %347 = and i32 %345, 255
  %348 = zext nneg i32 %347 to i64
  %.v1127 = select i1 %.not1060, ptr %.1940, ptr %45
  %349 = getelementptr inbounds %struct.lua_TValue, ptr %.v1127, i64 %348
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #7
  %350 = getelementptr inbounds i8, ptr %344, i64 8
  %351 = load i32, ptr %350, align 8, !tbaa !24
  %352 = icmp eq i32 %351, 3
  br i1 %352, label %353, label %355

353:                                              ; preds = %337
  %354 = load double, ptr %344, align 8, !tbaa !15
  store double %354, ptr %8, align 8, !tbaa !40
  br label %357

355:                                              ; preds = %337
  %356 = call i32 @luaV_tonumber_(ptr noundef nonnull %344, ptr noundef nonnull %8)
  %.not1061 = icmp eq i32 %356, 0
  br i1 %.not1061, label %367, label %357

357:                                              ; preds = %353, %355
  %358 = getelementptr inbounds i8, ptr %349, i64 8
  %359 = load i32, ptr %358, align 8, !tbaa !24
  %360 = icmp eq i32 %359, 3
  br i1 %360, label %._crit_edge1191, label %361

361:                                              ; preds = %357
  %362 = call i32 @luaV_tonumber_(ptr noundef nonnull %349, ptr noundef nonnull %9)
  %.not1062 = icmp eq i32 %362, 0
  br i1 %.not1062, label %367, label %._crit_edge1191

._crit_edge1191:                                  ; preds = %361, %357
  %.in1227 = phi ptr [ %349, %357 ], [ %9, %361 ]
  %363 = load double, ptr %.in1227, align 8, !tbaa !15
  %364 = load double, ptr %8, align 8, !tbaa !40
  %365 = fdiv double %364, %363
  store double %365, ptr %73, align 8, !tbaa !15
  %366 = getelementptr inbounds i8, ptr %73, i64 8
  store i32 3, ptr %366, align 8, !tbaa !24
  br label %369

367:                                              ; preds = %361, %355
  call void @luaT_trybinTM(ptr noundef nonnull %0, ptr noundef nonnull %344, ptr noundef %349, ptr noundef %73, i32 noundef 11) #7
  %368 = load ptr, ptr %49, align 8, !tbaa !15
  br label %369

369:                                              ; preds = %367, %._crit_edge1191
  %.5944 = phi ptr [ %.1940, %._crit_edge1191 ], [ %368, %367 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  br label %.loopexit.backedge

370:                                              ; preds = %69
  %371 = lshr i32 %59, 23
  %372 = and i32 %371, 255
  %373 = zext nneg i32 %372 to i64
  %374 = getelementptr inbounds %struct.lua_TValue, ptr %45, i64 %373
  %375 = zext nneg i32 %371 to i64
  %376 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %375
  %.not10551124 = icmp slt i32 %59, 0
  %377 = select i1 %.not10551124, ptr %374, ptr %376
  %378 = lshr i32 %59, 14
  %379 = and i32 %59, 4194304
  %.not1056 = icmp eq i32 %379, 0
  %380 = and i32 %378, 255
  %381 = zext nneg i32 %380 to i64
  %.v1125 = select i1 %.not1056, ptr %.1940, ptr %45
  %382 = getelementptr inbounds %struct.lua_TValue, ptr %.v1125, i64 %381
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #7
  %383 = getelementptr inbounds i8, ptr %377, i64 8
  %384 = load i32, ptr %383, align 8, !tbaa !24
  %385 = icmp eq i32 %384, 19
  br i1 %385, label %386, label %388

386:                                              ; preds = %370
  %387 = load i64, ptr %377, align 8, !tbaa !15
  store i64 %387, ptr %10, align 8, !tbaa !42
  br label %390

388:                                              ; preds = %370
  %389 = call i32 @luaV_tointeger_(ptr noundef nonnull %377, ptr noundef nonnull %10)
  %.not1057 = icmp eq i32 %389, 0
  br i1 %.not1057, label %400, label %390

390:                                              ; preds = %386, %388
  %391 = getelementptr inbounds i8, ptr %382, i64 8
  %392 = load i32, ptr %391, align 8, !tbaa !24
  %393 = icmp eq i32 %392, 19
  br i1 %393, label %._crit_edge1189, label %394

394:                                              ; preds = %390
  %395 = call i32 @luaV_tointeger_(ptr noundef nonnull %382, ptr noundef nonnull %11)
  %.not1058 = icmp eq i32 %395, 0
  br i1 %.not1058, label %400, label %._crit_edge1189

._crit_edge1189:                                  ; preds = %394, %390
  %.in1226 = phi ptr [ %382, %390 ], [ %11, %394 ]
  %396 = load i64, ptr %.in1226, align 8, !tbaa !15
  %397 = load i64, ptr %10, align 8, !tbaa !42
  %398 = and i64 %396, %397
  store i64 %398, ptr %73, align 8, !tbaa !15
  %399 = getelementptr inbounds i8, ptr %73, i64 8
  store i32 19, ptr %399, align 8, !tbaa !24
  br label %402

400:                                              ; preds = %394, %388
  call void @luaT_trybinTM(ptr noundef nonnull %0, ptr noundef nonnull %377, ptr noundef %382, ptr noundef %73, i32 noundef 13) #7
  %401 = load ptr, ptr %49, align 8, !tbaa !15
  br label %402

402:                                              ; preds = %400, %._crit_edge1189
  %.6945 = phi ptr [ %.1940, %._crit_edge1189 ], [ %401, %400 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  br label %.loopexit.backedge

403:                                              ; preds = %69
  %404 = lshr i32 %59, 23
  %405 = and i32 %404, 255
  %406 = zext nneg i32 %405 to i64
  %407 = getelementptr inbounds %struct.lua_TValue, ptr %45, i64 %406
  %408 = zext nneg i32 %404 to i64
  %409 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %408
  %.not10511122 = icmp slt i32 %59, 0
  %410 = select i1 %.not10511122, ptr %407, ptr %409
  %411 = lshr i32 %59, 14
  %412 = and i32 %59, 4194304
  %.not1052 = icmp eq i32 %412, 0
  %413 = and i32 %411, 255
  %414 = zext nneg i32 %413 to i64
  %.v1123 = select i1 %.not1052, ptr %.1940, ptr %45
  %415 = getelementptr inbounds %struct.lua_TValue, ptr %.v1123, i64 %414
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #7
  %416 = getelementptr inbounds i8, ptr %410, i64 8
  %417 = load i32, ptr %416, align 8, !tbaa !24
  %418 = icmp eq i32 %417, 19
  br i1 %418, label %419, label %421

419:                                              ; preds = %403
  %420 = load i64, ptr %410, align 8, !tbaa !15
  store i64 %420, ptr %12, align 8, !tbaa !42
  br label %423

421:                                              ; preds = %403
  %422 = call i32 @luaV_tointeger_(ptr noundef nonnull %410, ptr noundef nonnull %12)
  %.not1053 = icmp eq i32 %422, 0
  br i1 %.not1053, label %433, label %423

423:                                              ; preds = %419, %421
  %424 = getelementptr inbounds i8, ptr %415, i64 8
  %425 = load i32, ptr %424, align 8, !tbaa !24
  %426 = icmp eq i32 %425, 19
  br i1 %426, label %._crit_edge1187, label %427

427:                                              ; preds = %423
  %428 = call i32 @luaV_tointeger_(ptr noundef nonnull %415, ptr noundef nonnull %13)
  %.not1054 = icmp eq i32 %428, 0
  br i1 %.not1054, label %433, label %._crit_edge1187

._crit_edge1187:                                  ; preds = %427, %423
  %.in1225 = phi ptr [ %415, %423 ], [ %13, %427 ]
  %429 = load i64, ptr %.in1225, align 8, !tbaa !15
  %430 = load i64, ptr %12, align 8, !tbaa !42
  %431 = or i64 %429, %430
  store i64 %431, ptr %73, align 8, !tbaa !15
  %432 = getelementptr inbounds i8, ptr %73, i64 8
  store i32 19, ptr %432, align 8, !tbaa !24
  br label %435

433:                                              ; preds = %427, %421
  call void @luaT_trybinTM(ptr noundef nonnull %0, ptr noundef nonnull %410, ptr noundef %415, ptr noundef %73, i32 noundef 14) #7
  %434 = load ptr, ptr %49, align 8, !tbaa !15
  br label %435

435:                                              ; preds = %433, %._crit_edge1187
  %.7 = phi ptr [ %.1940, %._crit_edge1187 ], [ %434, %433 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  br label %.loopexit.backedge

436:                                              ; preds = %69
  %437 = lshr i32 %59, 23
  %438 = and i32 %437, 255
  %439 = zext nneg i32 %438 to i64
  %440 = getelementptr inbounds %struct.lua_TValue, ptr %45, i64 %439
  %441 = zext nneg i32 %437 to i64
  %442 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %441
  %.not10471120 = icmp slt i32 %59, 0
  %443 = select i1 %.not10471120, ptr %440, ptr %442
  %444 = lshr i32 %59, 14
  %445 = and i32 %59, 4194304
  %.not1048 = icmp eq i32 %445, 0
  %446 = and i32 %444, 255
  %447 = zext nneg i32 %446 to i64
  %.v1121 = select i1 %.not1048, ptr %.1940, ptr %45
  %448 = getelementptr inbounds %struct.lua_TValue, ptr %.v1121, i64 %447
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #7
  %449 = getelementptr inbounds i8, ptr %443, i64 8
  %450 = load i32, ptr %449, align 8, !tbaa !24
  %451 = icmp eq i32 %450, 19
  br i1 %451, label %452, label %454

452:                                              ; preds = %436
  %453 = load i64, ptr %443, align 8, !tbaa !15
  store i64 %453, ptr %14, align 8, !tbaa !42
  br label %456

454:                                              ; preds = %436
  %455 = call i32 @luaV_tointeger_(ptr noundef nonnull %443, ptr noundef nonnull %14)
  %.not1049 = icmp eq i32 %455, 0
  br i1 %.not1049, label %466, label %456

456:                                              ; preds = %452, %454
  %457 = getelementptr inbounds i8, ptr %448, i64 8
  %458 = load i32, ptr %457, align 8, !tbaa !24
  %459 = icmp eq i32 %458, 19
  br i1 %459, label %._crit_edge1185, label %460

460:                                              ; preds = %456
  %461 = call i32 @luaV_tointeger_(ptr noundef nonnull %448, ptr noundef nonnull %15)
  %.not1050 = icmp eq i32 %461, 0
  br i1 %.not1050, label %466, label %._crit_edge1185

._crit_edge1185:                                  ; preds = %460, %456
  %.in1224 = phi ptr [ %448, %456 ], [ %15, %460 ]
  %462 = load i64, ptr %.in1224, align 8, !tbaa !15
  %463 = load i64, ptr %14, align 8, !tbaa !42
  %464 = xor i64 %462, %463
  store i64 %464, ptr %73, align 8, !tbaa !15
  %465 = getelementptr inbounds i8, ptr %73, i64 8
  store i32 19, ptr %465, align 8, !tbaa !24
  br label %468

466:                                              ; preds = %460, %454
  call void @luaT_trybinTM(ptr noundef nonnull %0, ptr noundef nonnull %443, ptr noundef %448, ptr noundef %73, i32 noundef 15) #7
  %467 = load ptr, ptr %49, align 8, !tbaa !15
  br label %468

468:                                              ; preds = %466, %._crit_edge1185
  %.8 = phi ptr [ %.1940, %._crit_edge1185 ], [ %467, %466 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  br label %.loopexit.backedge

469:                                              ; preds = %69
  %470 = lshr i32 %59, 23
  %471 = and i32 %470, 255
  %472 = zext nneg i32 %471 to i64
  %473 = getelementptr inbounds %struct.lua_TValue, ptr %45, i64 %472
  %474 = zext nneg i32 %470 to i64
  %475 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %474
  %.not10431118 = icmp slt i32 %59, 0
  %476 = select i1 %.not10431118, ptr %473, ptr %475
  %477 = lshr i32 %59, 14
  %478 = and i32 %59, 4194304
  %.not1044 = icmp eq i32 %478, 0
  %479 = and i32 %477, 255
  %480 = zext nneg i32 %479 to i64
  %.v1119 = select i1 %.not1044, ptr %.1940, ptr %45
  %481 = getelementptr inbounds %struct.lua_TValue, ptr %.v1119, i64 %480
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #7
  %482 = getelementptr inbounds i8, ptr %476, i64 8
  %483 = load i32, ptr %482, align 8, !tbaa !24
  %484 = icmp eq i32 %483, 19
  br i1 %484, label %485, label %487

485:                                              ; preds = %469
  %486 = load i64, ptr %476, align 8, !tbaa !15
  store i64 %486, ptr %16, align 8, !tbaa !42
  br label %489

487:                                              ; preds = %469
  %488 = call i32 @luaV_tointeger_(ptr noundef nonnull %476, ptr noundef nonnull %16)
  %.not1045 = icmp eq i32 %488, 0
  br i1 %.not1045, label %502, label %489

489:                                              ; preds = %485, %487
  %490 = getelementptr inbounds i8, ptr %481, i64 8
  %491 = load i32, ptr %490, align 8, !tbaa !24
  %492 = icmp eq i32 %491, 19
  br i1 %492, label %493, label %495

493:                                              ; preds = %489
  %494 = load i64, ptr %481, align 8, !tbaa !15
  store i64 %494, ptr %17, align 8, !tbaa !42
  br label %497

495:                                              ; preds = %489
  %496 = call i32 @luaV_tointeger_(ptr noundef nonnull %481, ptr noundef nonnull %17)
  %.not1046 = icmp eq i32 %496, 0
  br i1 %.not1046, label %502, label %._crit_edge1183

._crit_edge1183:                                  ; preds = %495
  %.pre1184 = load i64, ptr %17, align 8, !tbaa !42
  br label %497

497:                                              ; preds = %._crit_edge1183, %493
  %498 = phi i64 [ %.pre1184, %._crit_edge1183 ], [ %494, %493 ]
  %499 = load i64, ptr %16, align 8, !tbaa !42
  %500 = call i64 @luaV_shiftl(i64 noundef %499, i64 noundef %498)
  store i64 %500, ptr %73, align 8, !tbaa !15
  %501 = getelementptr inbounds i8, ptr %73, i64 8
  store i32 19, ptr %501, align 8, !tbaa !24
  br label %504

502:                                              ; preds = %495, %487
  call void @luaT_trybinTM(ptr noundef nonnull %0, ptr noundef nonnull %476, ptr noundef %481, ptr noundef %73, i32 noundef 16) #7
  %503 = load ptr, ptr %49, align 8, !tbaa !15
  br label %504

504:                                              ; preds = %502, %497
  %.9 = phi ptr [ %.1940, %497 ], [ %503, %502 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  br label %.loopexit.backedge

505:                                              ; preds = %69
  %506 = lshr i32 %59, 23
  %507 = and i32 %506, 255
  %508 = zext nneg i32 %507 to i64
  %509 = getelementptr inbounds %struct.lua_TValue, ptr %45, i64 %508
  %510 = zext nneg i32 %506 to i64
  %511 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %510
  %.not10391116 = icmp slt i32 %59, 0
  %512 = select i1 %.not10391116, ptr %509, ptr %511
  %513 = lshr i32 %59, 14
  %514 = and i32 %59, 4194304
  %.not1040 = icmp eq i32 %514, 0
  %515 = and i32 %513, 255
  %516 = zext nneg i32 %515 to i64
  %.v1117 = select i1 %.not1040, ptr %.1940, ptr %45
  %517 = getelementptr inbounds %struct.lua_TValue, ptr %.v1117, i64 %516
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #7
  %518 = getelementptr inbounds i8, ptr %512, i64 8
  %519 = load i32, ptr %518, align 8, !tbaa !24
  %520 = icmp eq i32 %519, 19
  br i1 %520, label %521, label %523

521:                                              ; preds = %505
  %522 = load i64, ptr %512, align 8, !tbaa !15
  store i64 %522, ptr %18, align 8, !tbaa !42
  br label %525

523:                                              ; preds = %505
  %524 = call i32 @luaV_tointeger_(ptr noundef nonnull %512, ptr noundef nonnull %18)
  %.not1041 = icmp eq i32 %524, 0
  br i1 %.not1041, label %539, label %525

525:                                              ; preds = %521, %523
  %526 = getelementptr inbounds i8, ptr %517, i64 8
  %527 = load i32, ptr %526, align 8, !tbaa !24
  %528 = icmp eq i32 %527, 19
  br i1 %528, label %529, label %531

529:                                              ; preds = %525
  %530 = load i64, ptr %517, align 8, !tbaa !15
  store i64 %530, ptr %19, align 8, !tbaa !42
  br label %533

531:                                              ; preds = %525
  %532 = call i32 @luaV_tointeger_(ptr noundef nonnull %517, ptr noundef nonnull %19)
  %.not1042 = icmp eq i32 %532, 0
  br i1 %.not1042, label %539, label %._crit_edge1181

._crit_edge1181:                                  ; preds = %531
  %.pre1182 = load i64, ptr %19, align 8, !tbaa !42
  br label %533

533:                                              ; preds = %._crit_edge1181, %529
  %534 = phi i64 [ %.pre1182, %._crit_edge1181 ], [ %530, %529 ]
  %535 = load i64, ptr %18, align 8, !tbaa !42
  %536 = sub nsw i64 0, %534
  %537 = call i64 @luaV_shiftl(i64 noundef %535, i64 noundef %536)
  store i64 %537, ptr %73, align 8, !tbaa !15
  %538 = getelementptr inbounds i8, ptr %73, i64 8
  store i32 19, ptr %538, align 8, !tbaa !24
  br label %541

539:                                              ; preds = %531, %523
  call void @luaT_trybinTM(ptr noundef nonnull %0, ptr noundef nonnull %512, ptr noundef %517, ptr noundef %73, i32 noundef 17) #7
  %540 = load ptr, ptr %49, align 8, !tbaa !15
  br label %541

541:                                              ; preds = %539, %533
  %.10 = phi ptr [ %.1940, %533 ], [ %540, %539 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  br label %.loopexit.backedge

542:                                              ; preds = %69
  %543 = lshr i32 %59, 23
  %544 = and i32 %543, 255
  %545 = zext nneg i32 %544 to i64
  %546 = getelementptr inbounds %struct.lua_TValue, ptr %45, i64 %545
  %547 = zext nneg i32 %543 to i64
  %548 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %547
  %.not10351114 = icmp slt i32 %59, 0
  %549 = select i1 %.not10351114, ptr %546, ptr %548
  %550 = lshr i32 %59, 14
  %551 = and i32 %59, 4194304
  %.not1036 = icmp eq i32 %551, 0
  %552 = and i32 %550, 255
  %553 = zext nneg i32 %552 to i64
  %.v1115 = select i1 %.not1036, ptr %.1940, ptr %45
  %554 = getelementptr inbounds %struct.lua_TValue, ptr %.v1115, i64 %553
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #7
  %555 = getelementptr inbounds i8, ptr %549, i64 8
  %556 = load i32, ptr %555, align 8, !tbaa !24
  switch i32 %556, label %.thread1089 [
    i32 19, label %557
    i32 3, label %566
  ]

557:                                              ; preds = %542
  %558 = getelementptr inbounds i8, ptr %554, i64 8
  %559 = load i32, ptr %558, align 8, !tbaa !24
  %560 = icmp eq i32 %559, 19
  br i1 %560, label %561, label %.thread1089

561:                                              ; preds = %557
  %562 = load i64, ptr %549, align 8, !tbaa !15
  %563 = load i64, ptr %554, align 8, !tbaa !15
  %564 = call i64 @luaV_mod(ptr noundef nonnull %0, i64 noundef %562, i64 noundef %563)
  store i64 %564, ptr %73, align 8, !tbaa !15
  %565 = getelementptr inbounds i8, ptr %73, i64 8
  store i32 19, ptr %565, align 8, !tbaa !24
  br label %588

566:                                              ; preds = %542
  %567 = load double, ptr %549, align 8, !tbaa !15
  store double %567, ptr %20, align 8, !tbaa !40
  br label %569

.thread1089:                                      ; preds = %542, %557
  %568 = call i32 @luaV_tonumber_(ptr noundef nonnull %549, ptr noundef nonnull %20)
  %.not1037 = icmp eq i32 %568, 0
  br i1 %.not1037, label %586, label %569

569:                                              ; preds = %566, %.thread1089
  %570 = getelementptr inbounds i8, ptr %554, i64 8
  %571 = load i32, ptr %570, align 8, !tbaa !24
  %572 = icmp eq i32 %571, 3
  br i1 %572, label %573, label %575

573:                                              ; preds = %569
  %574 = load double, ptr %554, align 8, !tbaa !15
  store double %574, ptr %21, align 8, !tbaa !40
  br label %577

575:                                              ; preds = %569
  %576 = call i32 @luaV_tonumber_(ptr noundef nonnull %554, ptr noundef nonnull %21)
  %.not1038 = icmp eq i32 %576, 0
  br i1 %.not1038, label %586, label %._crit_edge1179

._crit_edge1179:                                  ; preds = %575
  %.pre1180 = load double, ptr %21, align 8, !tbaa !40
  br label %577

577:                                              ; preds = %._crit_edge1179, %573
  %578 = phi double [ %.pre1180, %._crit_edge1179 ], [ %574, %573 ]
  %579 = load double, ptr %20, align 8, !tbaa !40
  %580 = call double @fmod(double noundef %579, double noundef %578) #7
  %581 = load double, ptr %21, align 8, !tbaa !40
  %582 = fmul double %580, %581
  %583 = fcmp olt double %582, 0.000000e+00
  %584 = fadd double %580, %581
  %.0953 = select i1 %583, double %584, double %580
  store double %.0953, ptr %73, align 8, !tbaa !15
  %585 = getelementptr inbounds i8, ptr %73, i64 8
  store i32 3, ptr %585, align 8, !tbaa !24
  br label %588

586:                                              ; preds = %575, %.thread1089
  call void @luaT_trybinTM(ptr noundef nonnull %0, ptr noundef nonnull %549, ptr noundef %554, ptr noundef %73, i32 noundef 9) #7
  %587 = load ptr, ptr %49, align 8, !tbaa !15
  br label %588

588:                                              ; preds = %577, %586, %561
  %.11 = phi ptr [ %.1940, %561 ], [ %.1940, %577 ], [ %587, %586 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  br label %.loopexit.backedge

589:                                              ; preds = %69
  %590 = lshr i32 %59, 23
  %591 = and i32 %590, 255
  %592 = zext nneg i32 %591 to i64
  %593 = getelementptr inbounds %struct.lua_TValue, ptr %45, i64 %592
  %594 = zext nneg i32 %590 to i64
  %595 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %594
  %.not10311112 = icmp slt i32 %59, 0
  %596 = select i1 %.not10311112, ptr %593, ptr %595
  %597 = lshr i32 %59, 14
  %598 = and i32 %59, 4194304
  %.not1032 = icmp eq i32 %598, 0
  %599 = and i32 %597, 255
  %600 = zext nneg i32 %599 to i64
  %.v1113 = select i1 %.not1032, ptr %.1940, ptr %45
  %601 = getelementptr inbounds %struct.lua_TValue, ptr %.v1113, i64 %600
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #7
  %602 = getelementptr inbounds i8, ptr %596, i64 8
  %603 = load i32, ptr %602, align 8, !tbaa !24
  switch i32 %603, label %.thread1090 [
    i32 19, label %604
    i32 3, label %613
  ]

604:                                              ; preds = %589
  %605 = getelementptr inbounds i8, ptr %601, i64 8
  %606 = load i32, ptr %605, align 8, !tbaa !24
  %607 = icmp eq i32 %606, 19
  br i1 %607, label %608, label %.thread1090

608:                                              ; preds = %604
  %609 = load i64, ptr %596, align 8, !tbaa !15
  %610 = load i64, ptr %601, align 8, !tbaa !15
  %611 = call i64 @luaV_div(ptr noundef nonnull %0, i64 noundef %609, i64 noundef %610)
  store i64 %611, ptr %73, align 8, !tbaa !15
  %612 = getelementptr inbounds i8, ptr %73, i64 8
  store i32 19, ptr %612, align 8, !tbaa !24
  br label %629

613:                                              ; preds = %589
  %614 = load double, ptr %596, align 8, !tbaa !15
  store double %614, ptr %22, align 8, !tbaa !40
  br label %616

.thread1090:                                      ; preds = %589, %604
  %615 = call i32 @luaV_tonumber_(ptr noundef nonnull %596, ptr noundef nonnull %22)
  %.not1033 = icmp eq i32 %615, 0
  br i1 %.not1033, label %627, label %616

616:                                              ; preds = %613, %.thread1090
  %617 = getelementptr inbounds i8, ptr %601, i64 8
  %618 = load i32, ptr %617, align 8, !tbaa !24
  %619 = icmp eq i32 %618, 3
  br i1 %619, label %._crit_edge1177, label %620

620:                                              ; preds = %616
  %621 = call i32 @luaV_tonumber_(ptr noundef nonnull %601, ptr noundef nonnull %23)
  %.not1034 = icmp eq i32 %621, 0
  br i1 %.not1034, label %627, label %._crit_edge1177

._crit_edge1177:                                  ; preds = %620, %616
  %.in1223 = phi ptr [ %601, %616 ], [ %23, %620 ]
  %622 = load double, ptr %.in1223, align 8, !tbaa !15
  %623 = load double, ptr %22, align 8, !tbaa !40
  %624 = fdiv double %623, %622
  %625 = call double @llvm.floor.f64(double %624)
  store double %625, ptr %73, align 8, !tbaa !15
  %626 = getelementptr inbounds i8, ptr %73, i64 8
  store i32 3, ptr %626, align 8, !tbaa !24
  br label %629

627:                                              ; preds = %620, %.thread1090
  call void @luaT_trybinTM(ptr noundef nonnull %0, ptr noundef nonnull %596, ptr noundef %601, ptr noundef %73, i32 noundef 12) #7
  %628 = load ptr, ptr %49, align 8, !tbaa !15
  br label %629

629:                                              ; preds = %._crit_edge1177, %627, %608
  %.12 = phi ptr [ %.1940, %608 ], [ %.1940, %._crit_edge1177 ], [ %628, %627 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  br label %.loopexit.backedge

630:                                              ; preds = %69
  %631 = lshr i32 %59, 23
  %632 = and i32 %631, 255
  %633 = zext nneg i32 %632 to i64
  %634 = getelementptr inbounds %struct.lua_TValue, ptr %45, i64 %633
  %635 = zext nneg i32 %631 to i64
  %636 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %635
  %.not10271110 = icmp slt i32 %59, 0
  %637 = select i1 %.not10271110, ptr %634, ptr %636
  %638 = lshr i32 %59, 14
  %639 = and i32 %59, 4194304
  %.not1028 = icmp eq i32 %639, 0
  %640 = and i32 %638, 255
  %641 = zext nneg i32 %640 to i64
  %.v1111 = select i1 %.not1028, ptr %.1940, ptr %45
  %642 = getelementptr inbounds %struct.lua_TValue, ptr %.v1111, i64 %641
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #7
  %643 = getelementptr inbounds i8, ptr %637, i64 8
  %644 = load i32, ptr %643, align 8, !tbaa !24
  %645 = icmp eq i32 %644, 3
  br i1 %645, label %646, label %648

646:                                              ; preds = %630
  %647 = load double, ptr %637, align 8, !tbaa !15
  store double %647, ptr %24, align 8, !tbaa !40
  br label %650

648:                                              ; preds = %630
  %649 = call i32 @luaV_tonumber_(ptr noundef nonnull %637, ptr noundef nonnull %24)
  %.not1029 = icmp eq i32 %649, 0
  br i1 %.not1029, label %660, label %650

650:                                              ; preds = %646, %648
  %651 = getelementptr inbounds i8, ptr %642, i64 8
  %652 = load i32, ptr %651, align 8, !tbaa !24
  %653 = icmp eq i32 %652, 3
  br i1 %653, label %._crit_edge1175, label %654

654:                                              ; preds = %650
  %655 = call i32 @luaV_tonumber_(ptr noundef nonnull %642, ptr noundef nonnull %25)
  %.not1030 = icmp eq i32 %655, 0
  br i1 %.not1030, label %660, label %._crit_edge1175

._crit_edge1175:                                  ; preds = %654, %650
  %.in1222 = phi ptr [ %642, %650 ], [ %25, %654 ]
  %656 = load double, ptr %.in1222, align 8, !tbaa !15
  %657 = load double, ptr %24, align 8, !tbaa !40
  %658 = call double @pow(double noundef %657, double noundef %656) #7
  store double %658, ptr %73, align 8, !tbaa !15
  %659 = getelementptr inbounds i8, ptr %73, i64 8
  store i32 3, ptr %659, align 8, !tbaa !24
  br label %662

660:                                              ; preds = %654, %648
  call void @luaT_trybinTM(ptr noundef nonnull %0, ptr noundef nonnull %637, ptr noundef %642, ptr noundef %73, i32 noundef 10) #7
  %661 = load ptr, ptr %49, align 8, !tbaa !15
  br label %662

662:                                              ; preds = %660, %._crit_edge1175
  %.13 = phi ptr [ %.1940, %._crit_edge1175 ], [ %661, %660 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  br label %.loopexit.backedge

663:                                              ; preds = %69
  %664 = lshr i32 %59, 23
  %665 = zext nneg i32 %664 to i64
  %666 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %665
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #7
  %667 = getelementptr inbounds i8, ptr %666, i64 8
  %668 = load i32, ptr %667, align 8, !tbaa !24
  switch i32 %668, label %673 [
    i32 19, label %669
    i32 3, label %._crit_edge1173
  ]

669:                                              ; preds = %663
  %670 = load i64, ptr %666, align 8, !tbaa !15
  %671 = sub i64 0, %670
  store i64 %671, ptr %73, align 8, !tbaa !15
  %672 = getelementptr inbounds i8, ptr %73, i64 8
  store i32 19, ptr %672, align 8, !tbaa !24
  br label %680

673:                                              ; preds = %663
  %674 = call i32 @luaV_tonumber_(ptr noundef nonnull %666, ptr noundef nonnull %26)
  %.not1026 = icmp eq i32 %674, 0
  br i1 %.not1026, label %678, label %._crit_edge1173

._crit_edge1173:                                  ; preds = %673, %663
  %.in1221 = phi ptr [ %666, %663 ], [ %26, %673 ]
  %675 = load double, ptr %.in1221, align 8, !tbaa !15
  %676 = fneg double %675
  store double %676, ptr %73, align 8, !tbaa !15
  %677 = getelementptr inbounds i8, ptr %73, i64 8
  store i32 3, ptr %677, align 8, !tbaa !24
  br label %680

678:                                              ; preds = %673
  call void @luaT_trybinTM(ptr noundef nonnull %0, ptr noundef nonnull %666, ptr noundef nonnull %666, ptr noundef nonnull %73, i32 noundef 18) #7
  %679 = load ptr, ptr %49, align 8, !tbaa !15
  br label %680

680:                                              ; preds = %._crit_edge1173, %678, %669
  %.14 = phi ptr [ %.1940, %669 ], [ %.1940, %._crit_edge1173 ], [ %679, %678 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  br label %.loopexit.backedge

681:                                              ; preds = %69
  %682 = lshr i32 %59, 23
  %683 = zext nneg i32 %682 to i64
  %684 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %683
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #7
  %685 = getelementptr inbounds i8, ptr %684, i64 8
  %686 = load i32, ptr %685, align 8, !tbaa !24
  %687 = icmp eq i32 %686, 19
  br i1 %687, label %._crit_edge1171, label %688

688:                                              ; preds = %681
  %689 = call i32 @luaV_tointeger_(ptr noundef nonnull %684, ptr noundef nonnull %27)
  %.not1025 = icmp eq i32 %689, 0
  br i1 %.not1025, label %693, label %._crit_edge1171

._crit_edge1171:                                  ; preds = %688, %681
  %.in1220 = phi ptr [ %684, %681 ], [ %27, %688 ]
  %690 = load i64, ptr %.in1220, align 8, !tbaa !15
  %691 = xor i64 %690, -1
  store i64 %691, ptr %73, align 8, !tbaa !15
  %692 = getelementptr inbounds i8, ptr %73, i64 8
  store i32 19, ptr %692, align 8, !tbaa !24
  br label %695

693:                                              ; preds = %688
  call void @luaT_trybinTM(ptr noundef nonnull %0, ptr noundef nonnull %684, ptr noundef nonnull %684, ptr noundef nonnull %73, i32 noundef 19) #7
  %694 = load ptr, ptr %49, align 8, !tbaa !15
  br label %695

695:                                              ; preds = %693, %._crit_edge1171
  %.15 = phi ptr [ %.1940, %._crit_edge1171 ], [ %694, %693 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  br label %.loopexit.backedge

696:                                              ; preds = %69
  %697 = lshr i32 %59, 23
  %698 = zext nneg i32 %697 to i64
  %699 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %698
  %700 = getelementptr inbounds i8, ptr %699, i64 8
  %701 = load i32, ptr %700, align 8, !tbaa !24
  switch i32 %701, label %.fold.split [
    i32 0, label %705
    i32 1, label %702
  ]

702:                                              ; preds = %696
  %703 = load i32, ptr %699, align 8, !tbaa !15
  %704 = icmp eq i32 %703, 0
  br label %705

.fold.split:                                      ; preds = %696
  br label %705

705:                                              ; preds = %696, %.fold.split, %702
  %706 = phi i1 [ true, %696 ], [ %704, %702 ], [ false, %.fold.split ]
  %707 = zext i1 %706 to i32
  store i32 %707, ptr %73, align 8, !tbaa !15
  %708 = getelementptr inbounds i8, ptr %73, i64 8
  store i32 1, ptr %708, align 8, !tbaa !24
  br label %.loopexit.backedge

709:                                              ; preds = %69
  %710 = lshr i32 %59, 23
  %711 = zext nneg i32 %710 to i64
  %712 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %711
  call void @luaV_objlen(ptr noundef nonnull %0, ptr noundef %73, ptr noundef %712)
  %713 = load ptr, ptr %49, align 8, !tbaa !15
  br label %.loopexit.backedge

714:                                              ; preds = %69
  %715 = lshr i32 %59, 23
  %716 = lshr i32 %59, 14
  %717 = and i32 %716, 511
  %718 = zext nneg i32 %717 to i64
  %719 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %718
  %720 = getelementptr inbounds i8, ptr %719, i64 16
  store ptr %720, ptr %38, align 8, !tbaa !38
  %reass.sub = sub nsw i32 %717, %715
  %721 = add nsw i32 %reass.sub, 1
  call void @luaV_concat(ptr noundef nonnull %0, i32 noundef %721)
  %722 = load ptr, ptr %49, align 8, !tbaa !15
  %723 = getelementptr inbounds %struct.lua_TValue, ptr %722, i64 %72
  %724 = zext nneg i32 %715 to i64
  %725 = getelementptr inbounds %struct.lua_TValue, ptr %722, i64 %724
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %723, ptr noundef nonnull align 8 dereferenceable(16) %725, i64 16, i1 false), !tbaa.struct !23
  %726 = load ptr, ptr %39, align 8, !tbaa !33
  %727 = getelementptr inbounds i8, ptr %726, i64 24
  %728 = load i64, ptr %727, align 8, !tbaa !34
  %729 = icmp sgt i64 %728, 0
  br i1 %729, label %730, label %._crit_edge1169

._crit_edge1169:                                  ; preds = %714
  %.pre1170 = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !39
  br label %734

730:                                              ; preds = %714
  %.not1024 = icmp ult i32 %71, %715
  %731 = getelementptr inbounds i8, ptr %723, i64 16
  %732 = select i1 %.not1024, ptr %725, ptr %731
  store ptr %732, ptr %38, align 8, !tbaa !38
  call void @luaC_step(ptr noundef nonnull %0) #7
  %733 = load ptr, ptr %55, align 8, !tbaa !39
  store ptr %733, ptr %38, align 8, !tbaa !38
  br label %734

734:                                              ; preds = %._crit_edge1169, %730
  %735 = phi ptr [ %.pre1170, %._crit_edge1169 ], [ %733, %730 ]
  %736 = load ptr, ptr %49, align 8, !tbaa !15
  store ptr %735, ptr %38, align 8, !tbaa !38
  br label %.loopexit.backedge

737:                                              ; preds = %69
  %.not1023 = icmp eq i32 %71, 0
  br i1 %.not1023, label %742, label %738

738:                                              ; preds = %737
  %739 = load ptr, ptr %49, align 8, !tbaa !15
  %740 = getelementptr inbounds %struct.lua_TValue, ptr %739, i64 %72
  %741 = getelementptr inbounds i8, ptr %740, i64 -16
  call void @luaF_close(ptr noundef nonnull %0, ptr noundef nonnull %741) #7
  br label %742

742:                                              ; preds = %738, %737
  %743 = lshr i32 %59, 14
  %744 = load ptr, ptr %50, align 8, !tbaa !15
  %745 = zext nneg i32 %743 to i64
  %746 = getelementptr i32, ptr %744, i64 %745
  %747 = getelementptr i8, ptr %746, i64 -524284
  store ptr %747, ptr %50, align 8, !tbaa !15
  br label %.loopexit.backedge

748:                                              ; preds = %69
  %749 = lshr i32 %59, 23
  %750 = and i32 %749, 255
  %751 = zext nneg i32 %750 to i64
  %752 = getelementptr inbounds %struct.lua_TValue, ptr %45, i64 %751
  %753 = zext nneg i32 %749 to i64
  %754 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %753
  %.not10181108 = icmp slt i32 %59, 0
  %755 = select i1 %.not10181108, ptr %752, ptr %754
  %756 = lshr i32 %59, 14
  %757 = and i32 %59, 4194304
  %.not1019 = icmp eq i32 %757, 0
  %758 = and i32 %756, 255
  %759 = zext nneg i32 %758 to i64
  %.v1109 = select i1 %.not1019, ptr %.1940, ptr %45
  %760 = getelementptr inbounds %struct.lua_TValue, ptr %.v1109, i64 %759
  %761 = call i32 @luaV_equalobj(ptr noundef nonnull %0, ptr noundef %755, ptr noundef %760)
  %.not1020 = icmp eq i32 %761, %71
  %762 = load ptr, ptr %50, align 8, !tbaa !15
  br i1 %.not1020, label %765, label %763

763:                                              ; preds = %748
  %764 = getelementptr inbounds i8, ptr %762, i64 4
  br label %780

765:                                              ; preds = %748
  %766 = load i32, ptr %762, align 4, !tbaa !20
  %767 = lshr i32 %766, 6
  %768 = and i32 %767, 255
  %.not1021 = icmp eq i32 %768, 0
  br i1 %.not1021, label %774, label %769

769:                                              ; preds = %765
  %770 = load ptr, ptr %49, align 8, !tbaa !15
  %771 = zext nneg i32 %768 to i64
  %772 = getelementptr inbounds %struct.lua_TValue, ptr %770, i64 %771
  %773 = getelementptr inbounds i8, ptr %772, i64 -16
  call void @luaF_close(ptr noundef nonnull %0, ptr noundef nonnull %773) #7
  %.pre1168 = load ptr, ptr %50, align 8, !tbaa !15
  br label %774

774:                                              ; preds = %769, %765
  %775 = phi ptr [ %.pre1168, %769 ], [ %762, %765 ]
  %776 = lshr i32 %766, 14
  %777 = zext nneg i32 %776 to i64
  %778 = getelementptr i32, ptr %775, i64 %777
  %779 = getelementptr i8, ptr %778, i64 -524280
  br label %780

780:                                              ; preds = %774, %763
  %storemerge1022 = phi ptr [ %779, %774 ], [ %764, %763 ]
  store ptr %storemerge1022, ptr %50, align 8, !tbaa !15
  %781 = load ptr, ptr %49, align 8, !tbaa !15
  br label %.loopexit.backedge

782:                                              ; preds = %69
  %783 = lshr i32 %59, 23
  %784 = and i32 %783, 255
  %785 = zext nneg i32 %784 to i64
  %786 = getelementptr inbounds %struct.lua_TValue, ptr %45, i64 %785
  %787 = zext nneg i32 %783 to i64
  %788 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %787
  %.not10131106 = icmp slt i32 %59, 0
  %789 = select i1 %.not10131106, ptr %786, ptr %788
  %790 = lshr i32 %59, 14
  %791 = and i32 %59, 4194304
  %.not1014 = icmp eq i32 %791, 0
  %792 = and i32 %790, 255
  %793 = zext nneg i32 %792 to i64
  %.v1107 = select i1 %.not1014, ptr %.1940, ptr %45
  %794 = getelementptr inbounds %struct.lua_TValue, ptr %.v1107, i64 %793
  %795 = call i32 @luaV_lessthan(ptr noundef nonnull %0, ptr noundef %789, ptr noundef %794)
  %.not1015 = icmp eq i32 %795, %71
  %796 = load ptr, ptr %50, align 8, !tbaa !15
  br i1 %.not1015, label %799, label %797

797:                                              ; preds = %782
  %798 = getelementptr inbounds i8, ptr %796, i64 4
  br label %814

799:                                              ; preds = %782
  %800 = load i32, ptr %796, align 4, !tbaa !20
  %801 = lshr i32 %800, 6
  %802 = and i32 %801, 255
  %.not1016 = icmp eq i32 %802, 0
  br i1 %.not1016, label %808, label %803

803:                                              ; preds = %799
  %804 = load ptr, ptr %49, align 8, !tbaa !15
  %805 = zext nneg i32 %802 to i64
  %806 = getelementptr inbounds %struct.lua_TValue, ptr %804, i64 %805
  %807 = getelementptr inbounds i8, ptr %806, i64 -16
  call void @luaF_close(ptr noundef nonnull %0, ptr noundef nonnull %807) #7
  %.pre1167 = load ptr, ptr %50, align 8, !tbaa !15
  br label %808

808:                                              ; preds = %803, %799
  %809 = phi ptr [ %.pre1167, %803 ], [ %796, %799 ]
  %810 = lshr i32 %800, 14
  %811 = zext nneg i32 %810 to i64
  %812 = getelementptr i32, ptr %809, i64 %811
  %813 = getelementptr i8, ptr %812, i64 -524280
  br label %814

814:                                              ; preds = %808, %797
  %storemerge1017 = phi ptr [ %813, %808 ], [ %798, %797 ]
  store ptr %storemerge1017, ptr %50, align 8, !tbaa !15
  %815 = load ptr, ptr %49, align 8, !tbaa !15
  br label %.loopexit.backedge

816:                                              ; preds = %69
  %817 = lshr i32 %59, 23
  %818 = and i32 %817, 255
  %819 = zext nneg i32 %818 to i64
  %820 = getelementptr inbounds %struct.lua_TValue, ptr %45, i64 %819
  %821 = zext nneg i32 %817 to i64
  %822 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %821
  %.not10081105 = icmp slt i32 %59, 0
  %823 = select i1 %.not10081105, ptr %820, ptr %822
  %824 = lshr i32 %59, 14
  %825 = and i32 %59, 4194304
  %.not1009 = icmp eq i32 %825, 0
  %826 = and i32 %824, 255
  %827 = zext nneg i32 %826 to i64
  %.v = select i1 %.not1009, ptr %.1940, ptr %45
  %828 = getelementptr inbounds %struct.lua_TValue, ptr %.v, i64 %827
  %829 = call i32 @luaV_lessequal(ptr noundef nonnull %0, ptr noundef %823, ptr noundef %828)
  %.not1010 = icmp eq i32 %829, %71
  %830 = load ptr, ptr %50, align 8, !tbaa !15
  br i1 %.not1010, label %833, label %831

831:                                              ; preds = %816
  %832 = getelementptr inbounds i8, ptr %830, i64 4
  br label %848

833:                                              ; preds = %816
  %834 = load i32, ptr %830, align 4, !tbaa !20
  %835 = lshr i32 %834, 6
  %836 = and i32 %835, 255
  %.not1011 = icmp eq i32 %836, 0
  br i1 %.not1011, label %842, label %837

837:                                              ; preds = %833
  %838 = load ptr, ptr %49, align 8, !tbaa !15
  %839 = zext nneg i32 %836 to i64
  %840 = getelementptr inbounds %struct.lua_TValue, ptr %838, i64 %839
  %841 = getelementptr inbounds i8, ptr %840, i64 -16
  call void @luaF_close(ptr noundef nonnull %0, ptr noundef nonnull %841) #7
  %.pre1166 = load ptr, ptr %50, align 8, !tbaa !15
  br label %842

842:                                              ; preds = %837, %833
  %843 = phi ptr [ %.pre1166, %837 ], [ %830, %833 ]
  %844 = lshr i32 %834, 14
  %845 = zext nneg i32 %844 to i64
  %846 = getelementptr i32, ptr %843, i64 %845
  %847 = getelementptr i8, ptr %846, i64 -524280
  br label %848

848:                                              ; preds = %842, %831
  %storemerge1012 = phi ptr [ %847, %842 ], [ %832, %831 ]
  store ptr %storemerge1012, ptr %50, align 8, !tbaa !15
  %849 = load ptr, ptr %49, align 8, !tbaa !15
  br label %.loopexit.backedge

850:                                              ; preds = %69
  %851 = and i32 %59, 8372224
  %.not1006 = icmp eq i32 %851, 0
  %852 = getelementptr inbounds i8, ptr %73, i64 8
  %853 = load i32, ptr %852, align 8, !tbaa !24
  br i1 %.not1006, label %858, label %854

854:                                              ; preds = %850
  switch i32 %853, label %865 [
    i32 0, label %862
    i32 1, label %855
  ]

855:                                              ; preds = %854
  %856 = load i32, ptr %73, align 8, !tbaa !15
  %857 = icmp eq i32 %856, 0
  br i1 %857, label %862, label %865

858:                                              ; preds = %850
  switch i32 %853, label %862 [
    i32 0, label %865
    i32 1, label %859
  ]

859:                                              ; preds = %858
  %860 = load i32, ptr %73, align 8, !tbaa !15
  %861 = icmp eq i32 %860, 0
  br i1 %861, label %865, label %862

862:                                              ; preds = %858, %854, %859, %855
  %863 = load ptr, ptr %50, align 8, !tbaa !15
  %864 = getelementptr inbounds i8, ptr %863, i64 4
  store ptr %864, ptr %50, align 8, !tbaa !15
  br label %.loopexit.backedge

865:                                              ; preds = %858, %854, %859, %855
  %866 = load ptr, ptr %50, align 8, !tbaa !15
  %867 = load i32, ptr %866, align 4, !tbaa !20
  %868 = lshr i32 %867, 6
  %869 = and i32 %868, 255
  %.not1007 = icmp eq i32 %869, 0
  br i1 %.not1007, label %875, label %870

870:                                              ; preds = %865
  %871 = load ptr, ptr %49, align 8, !tbaa !15
  %872 = zext nneg i32 %869 to i64
  %873 = getelementptr inbounds %struct.lua_TValue, ptr %871, i64 %872
  %874 = getelementptr inbounds i8, ptr %873, i64 -16
  call void @luaF_close(ptr noundef nonnull %0, ptr noundef nonnull %874) #7
  %.pre1165 = load ptr, ptr %50, align 8, !tbaa !15
  br label %875

875:                                              ; preds = %870, %865
  %876 = phi ptr [ %.pre1165, %870 ], [ %866, %865 ]
  %877 = lshr i32 %867, 14
  %878 = zext nneg i32 %877 to i64
  %879 = getelementptr i32, ptr %876, i64 %878
  %880 = getelementptr i8, ptr %879, i64 -524280
  store ptr %880, ptr %50, align 8, !tbaa !15
  br label %.loopexit.backedge

881:                                              ; preds = %69
  %882 = lshr i32 %59, 23
  %883 = zext nneg i32 %882 to i64
  %884 = getelementptr inbounds %struct.lua_TValue, ptr %.1940, i64 %883
  %885 = and i32 %59, 8372224
  %.not1004 = icmp eq i32 %885, 0
  %886 = getelementptr inbounds i8, ptr %884, i64 8
  %887 = load i32, ptr %886, align 8, !tbaa !24
  br i1 %.not1004, label %892, label %888

888:                                              ; preds = %881
  switch i32 %887, label %899 [
    i32 0, label %896
    i32 1, label %889
  ]

889:                                              ; preds = %888
  %890 = load i32, ptr %884, align 8, !tbaa !15
  %891 = icmp eq i32 %890, 0
  br i1 %891, label %896, label %899

892:                                              ; preds = %881
  switch i32 %887, label %896 [
    i32 0, label %899
    i32 1, label %893
  ]

893:                                              ; preds = %892
  %894 = load i32, ptr %884, align 8, !tbaa !15
  %895 = icmp eq i32 %894, 0
  br i1 %895, label %899, label %896

896:                                              ; preds = %892, %888, %893, %889
  %897 = load ptr, ptr %50, align 8, !tbaa !15
  %898 = getelementptr inbounds i8, ptr %897, i64 4
  br label %915

899:                                              ; preds = %892, %888, %893, %889
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %73, ptr noundef nonnull align 8 dereferenceable(16) %884, i64 16, i1 false), !tbaa.struct !23
  %900 = load ptr, ptr %50, align 8, !tbaa !15
  %901 = load i32, ptr %900, align 4, !tbaa !20
  %902 = lshr i32 %901, 6
  %903 = and i32 %902, 255
  %.not1005 = icmp eq i32 %903, 0
  br i1 %.not1005, label %909, label %904

904:                                              ; preds = %899
  %905 = load ptr, ptr %49, align 8, !tbaa !15
  %906 = zext nneg i32 %903 to i64
  %907 = getelementptr inbounds %struct.lua_TValue, ptr %905, i64 %906
  %908 = getelementptr inbounds i8, ptr %907, i64 -16
  call void @luaF_close(ptr noundef nonnull %0, ptr noundef nonnull %908) #7
  %.pre1164 = load ptr, ptr %50, align 8, !tbaa !15
  br label %909

909:                                              ; preds = %904, %899
  %910 = phi ptr [ %.pre1164, %904 ], [ %900, %899 ]
  %911 = lshr i32 %901, 14
  %912 = zext nneg i32 %911 to i64
  %913 = getelementptr i32, ptr %910, i64 %912
  %914 = getelementptr i8, ptr %913, i64 -524280
  br label %915

915:                                              ; preds = %909, %896
  %storemerge = phi ptr [ %914, %909 ], [ %898, %896 ]
  store ptr %storemerge, ptr %50, align 8, !tbaa !15
  br label %.loopexit.backedge

916:                                              ; preds = %69
  %917 = lshr i32 %59, 14
  %918 = and i32 %917, 511
  %919 = add nsw i32 %918, -1
  %.not1001 = icmp ult i32 %59, 8388608
  br i1 %.not1001, label %924, label %920

920:                                              ; preds = %916
  %921 = lshr i32 %59, 23
  %922 = zext nneg i32 %921 to i64
  %923 = getelementptr inbounds %struct.lua_TValue, ptr %73, i64 %922
  store ptr %923, ptr %38, align 8, !tbaa !38
  br label %924

924:                                              ; preds = %920, %916
  %925 = call i32 @luaD_precall(ptr noundef nonnull %0, ptr noundef %73, i32 noundef %919) #7
  %.not1002.not = icmp eq i32 %925, 0
  br i1 %.not1002.not, label %.thread1091, label %926

926:                                              ; preds = %924
  %.not1003 = icmp eq i32 %918, 0
  br i1 %.not1003, label %933, label %927

927:                                              ; preds = %926
  %928 = load ptr, ptr %54, align 8, !tbaa !39
  store ptr %928, ptr %38, align 8, !tbaa !38
  br label %933

.thread1091:                                      ; preds = %924
  %929 = load ptr, ptr %33, align 8, !tbaa !5
  %930 = getelementptr inbounds i8, ptr %929, i64 66
  %931 = load i8, ptr %930, align 2, !tbaa !44
  %932 = or i8 %931, 8
  store i8 %932, ptr %930, align 2, !tbaa !44
  br label %.loopexit1142.backedge

933:                                              ; preds = %926, %927
  %934 = load ptr, ptr %49, align 8, !tbaa !15
  br label %.loopexit.backedge

935:                                              ; preds = %69
  %.not999 = icmp ult i32 %59, 8388608
  br i1 %.not999, label %940, label %936

936:                                              ; preds = %935
  %937 = lshr i32 %59, 23
  %938 = zext nneg i32 %937 to i64
  %939 = getelementptr inbounds %struct.lua_TValue, ptr %73, i64 %938
  store ptr %939, ptr %38, align 8, !tbaa !38
  br label %940

940:                                              ; preds = %936, %935
  %941 = call i32 @luaD_precall(ptr noundef nonnull %0, ptr noundef %73, i32 noundef -1) #7
  %.not1000.not = icmp eq i32 %941, 0
  br i1 %.not1000.not, label %943, label %.thread1095

.thread1095:                                      ; preds = %940
  %942 = load ptr, ptr %49, align 8, !tbaa !15
  br label %.loopexit.backedge

943:                                              ; preds = %940
  %944 = load ptr, ptr %33, align 8, !tbaa !5
  %945 = getelementptr inbounds i8, ptr %944, i64 16
  %946 = load ptr, ptr %945, align 8, !tbaa !45
  %947 = load ptr, ptr %944, align 8, !tbaa !14
  %948 = load ptr, ptr %946, align 8, !tbaa !14
  %949 = getelementptr inbounds i8, ptr %944, i64 32
  %950 = load ptr, ptr %949, align 8, !tbaa !15
  %951 = load ptr, ptr %947, align 8, !tbaa !15
  %952 = getelementptr inbounds i8, ptr %951, i64 24
  %953 = load ptr, ptr %952, align 8, !tbaa !15
  %954 = getelementptr inbounds i8, ptr %953, i64 10
  %955 = load i8, ptr %954, align 2, !tbaa !46
  %956 = zext i8 %955 to i64
  %957 = getelementptr inbounds %struct.lua_TValue, ptr %950, i64 %956
  %958 = load ptr, ptr %42, align 8, !tbaa !16
  %959 = getelementptr inbounds i8, ptr %958, i64 32
  %960 = load i32, ptr %959, align 8, !tbaa !47
  %961 = icmp sgt i32 %960, 0
  br i1 %961, label %962, label %965

962:                                              ; preds = %943
  %963 = getelementptr inbounds i8, ptr %946, i64 32
  %964 = load ptr, ptr %963, align 8, !tbaa !15
  call void @luaF_close(ptr noundef nonnull %0, ptr noundef %964) #7
  br label %965

965:                                              ; preds = %962, %943
  %966 = icmp ult ptr %947, %957
  br i1 %966, label %.lr.ph1149, label %._crit_edge1150

.lr.ph1149:                                       ; preds = %965, %.lr.ph1149
  %indvars.iv1156 = phi i64 [ %indvars.iv.next1157, %.lr.ph1149 ], [ 0, %965 ]
  %967 = getelementptr inbounds %struct.lua_TValue, ptr %947, i64 %indvars.iv1156
  %968 = getelementptr inbounds %struct.lua_TValue, ptr %948, i64 %indvars.iv1156
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %968, ptr noundef nonnull align 8 dereferenceable(16) %967, i64 16, i1 false), !tbaa.struct !23
  %indvars.iv.next1157 = add nuw nsw i64 %indvars.iv1156, 1
  %969 = getelementptr inbounds %struct.lua_TValue, ptr %947, i64 %indvars.iv.next1157
  %970 = icmp ult ptr %969, %957
  br i1 %970, label %.lr.ph1149, label %._crit_edge1150, !llvm.loop !48

._crit_edge1150:                                  ; preds = %.lr.ph1149, %965
  %971 = load ptr, ptr %949, align 8, !tbaa !15
  %972 = ptrtoint ptr %971 to i64
  %973 = ptrtoint ptr %947 to i64
  %974 = sub i64 %972, %973
  %975 = getelementptr inbounds i8, ptr %948, i64 %974
  %976 = getelementptr inbounds i8, ptr %946, i64 32
  store ptr %975, ptr %976, align 8, !tbaa !15
  %977 = load ptr, ptr %38, align 8, !tbaa !38
  %978 = ptrtoint ptr %977 to i64
  %979 = sub i64 %978, %973
  %980 = getelementptr inbounds i8, ptr %948, i64 %979
  store ptr %980, ptr %38, align 8, !tbaa !38
  %981 = getelementptr inbounds i8, ptr %946, i64 8
  store ptr %980, ptr %981, align 8, !tbaa !39
  %982 = getelementptr inbounds i8, ptr %944, i64 40
  %983 = load ptr, ptr %982, align 8, !tbaa !15
  %984 = getelementptr inbounds i8, ptr %946, i64 40
  store ptr %983, ptr %984, align 8, !tbaa !15
  %985 = getelementptr inbounds i8, ptr %946, i64 66
  %986 = load i8, ptr %985, align 2, !tbaa !44
  %987 = or i8 %986, 32
  store i8 %987, ptr %985, align 2, !tbaa !44
  store ptr %946, ptr %33, align 8, !tbaa !5
  br label %.loopexit1142.backedge

988:                                              ; preds = %69
  %.not996 = icmp ult i32 %59, 8388608
  br i1 %.not996, label %994, label %989

989:                                              ; preds = %988
  %990 = lshr i32 %59, 23
  %991 = zext nneg i32 %990 to i64
  %992 = getelementptr inbounds %struct.lua_TValue, ptr %73, i64 %991
  %993 = getelementptr inbounds i8, ptr %992, i64 -16
  store ptr %993, ptr %38, align 8, !tbaa !38
  br label %994

994:                                              ; preds = %989, %988
  %995 = load ptr, ptr %42, align 8, !tbaa !16
  %996 = getelementptr inbounds i8, ptr %995, i64 32
  %997 = load i32, ptr %996, align 8, !tbaa !47
  %998 = icmp sgt i32 %997, 0
  br i1 %998, label %999, label %1000

999:                                              ; preds = %994
  call void @luaF_close(ptr noundef nonnull %0, ptr noundef %.1940) #7
  br label %1000

1000:                                             ; preds = %999, %994
  %1001 = call i32 @luaD_poscall(ptr noundef nonnull %0, ptr noundef %73) #7
  %1002 = getelementptr inbounds i8, ptr %.0, i64 66
  %1003 = load i8, ptr %1002, align 2, !tbaa !44
  %1004 = and i8 %1003, 8
  %.not997 = icmp eq i8 %1004, 0
  br i1 %.not997, label %.thread1099, label %1005

1005:                                             ; preds = %1000
  %1006 = load ptr, ptr %33, align 8, !tbaa !5
  %.not998 = icmp eq i32 %1001, 0
  br i1 %.not998, label %.loopexit1142.backedge, label %1007

1007:                                             ; preds = %1005
  %1008 = getelementptr inbounds i8, ptr %1006, i64 8
  %1009 = load ptr, ptr %1008, align 8, !tbaa !39
  store ptr %1009, ptr %38, align 8, !tbaa !38
  br label %.loopexit1142.backedge

.loopexit1142.backedge:                           ; preds = %1007, %1005, %.thread1091, %._crit_edge1150
  %.0.be = phi ptr [ %946, %._crit_edge1150 ], [ %929, %.thread1091 ], [ %1006, %1005 ], [ %1006, %1007 ]
  br label %.loopexit1142

1010:                                             ; preds = %69
  %1011 = getelementptr inbounds i8, ptr %73, i64 8
  %1012 = load i32, ptr %1011, align 8, !tbaa !24
  %1013 = icmp eq i32 %1012, 19
  %1014 = getelementptr inbounds i8, ptr %73, i64 32
  %1015 = getelementptr inbounds i8, ptr %73, i64 16
  br i1 %1013, label %1016, label %1032

1016:                                             ; preds = %1010
  %1017 = load i64, ptr %1014, align 8, !tbaa !15
  %1018 = load i64, ptr %73, align 8, !tbaa !15
  %1019 = add nsw i64 %1018, %1017
  %1020 = load i64, ptr %1015, align 8, !tbaa !15
  %1021 = icmp sgt i64 %1017, 0
  br i1 %1021, label %1022, label %1023

1022:                                             ; preds = %1016
  %.not995 = icmp sgt i64 %1019, %1020
  br i1 %.not995, label %.loopexit.backedge, label %1024

1023:                                             ; preds = %1016
  %.not994 = icmp sgt i64 %1020, %1019
  br i1 %.not994, label %.loopexit.backedge, label %1024

1024:                                             ; preds = %1023, %1022
  %1025 = lshr i32 %59, 14
  %1026 = load ptr, ptr %50, align 8, !tbaa !15
  %1027 = zext nneg i32 %1025 to i64
  %1028 = getelementptr i32, ptr %1026, i64 %1027
  %1029 = getelementptr i8, ptr %1028, i64 -524284
  store ptr %1029, ptr %50, align 8, !tbaa !15
  store i64 %1019, ptr %73, align 8, !tbaa !15
  store i32 19, ptr %1011, align 8, !tbaa !24
  %1030 = getelementptr inbounds i8, ptr %73, i64 48
  store i64 %1019, ptr %1030, align 8, !tbaa !15
  %1031 = getelementptr inbounds i8, ptr %73, i64 56
  store i32 19, ptr %1031, align 8, !tbaa !24
  br label %.loopexit.backedge

1032:                                             ; preds = %1010
  %1033 = load double, ptr %1014, align 8, !tbaa !15
  %1034 = load double, ptr %73, align 8, !tbaa !15
  %1035 = fadd double %1033, %1034
  %1036 = load double, ptr %1015, align 8, !tbaa !15
  %1037 = fcmp ogt double %1033, 0.000000e+00
  br i1 %1037, label %1038, label %1040

1038:                                             ; preds = %1032
  %1039 = fcmp ugt double %1035, %1036
  br i1 %1039, label %.loopexit.backedge, label %1042

1040:                                             ; preds = %1032
  %1041 = fcmp ugt double %1036, %1035
  br i1 %1041, label %.loopexit.backedge, label %1042

1042:                                             ; preds = %1040, %1038
  %1043 = lshr i32 %59, 14
  %1044 = load ptr, ptr %50, align 8, !tbaa !15
  %1045 = zext nneg i32 %1043 to i64
  %1046 = getelementptr i32, ptr %1044, i64 %1045
  %1047 = getelementptr i8, ptr %1046, i64 -524284
  store ptr %1047, ptr %50, align 8, !tbaa !15
  store double %1035, ptr %73, align 8, !tbaa !15
  store i32 3, ptr %1011, align 8, !tbaa !24
  %1048 = getelementptr inbounds i8, ptr %73, i64 48
  store double %1035, ptr %1048, align 8, !tbaa !15
  %1049 = getelementptr inbounds i8, ptr %73, i64 56
  store i32 3, ptr %1049, align 8, !tbaa !24
  br label %.loopexit.backedge

1050:                                             ; preds = %69
  %1051 = getelementptr inbounds i8, ptr %73, i64 16
  %1052 = getelementptr inbounds i8, ptr %73, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #7
  %1053 = getelementptr inbounds i8, ptr %73, i64 8
  %1054 = load i32, ptr %1053, align 8, !tbaa !24
  %1055 = icmp eq i32 %1054, 19
  br i1 %1055, label %1056, label %1073

1056:                                             ; preds = %1050
  %1057 = getelementptr inbounds i8, ptr %73, i64 40
  %1058 = load i32, ptr %1057, align 8, !tbaa !24
  %1059 = icmp eq i32 %1058, 19
  br i1 %1059, label %1060, label %1073

1060:                                             ; preds = %1056
  %1061 = load i64, ptr %1052, align 8, !tbaa !15
  %1062 = call i32 @forlimit(ptr noundef nonnull %1051, ptr noundef nonnull %28, i64 noundef %1061, ptr noundef nonnull %29)
  %.not989 = icmp eq i32 %1062, 0
  br i1 %.not989, label %1073, label %1063

1063:                                             ; preds = %1060
  %1064 = load i32, ptr %29, align 4, !tbaa !20
  %.not993 = icmp eq i32 %1064, 0
  br i1 %.not993, label %1065, label %1067

1065:                                             ; preds = %1063
  %1066 = load i64, ptr %73, align 8, !tbaa !15
  br label %1067

1067:                                             ; preds = %1063, %1065
  %1068 = phi i64 [ %1066, %1065 ], [ 0, %1063 ]
  %1069 = load i64, ptr %28, align 8, !tbaa !42
  store i64 %1069, ptr %1051, align 8, !tbaa !15
  %1070 = getelementptr inbounds i8, ptr %73, i64 24
  store i32 19, ptr %1070, align 8, !tbaa !24
  %1071 = load i64, ptr %1052, align 8, !tbaa !15
  %1072 = sub nsw i64 %1068, %1071
  store i64 %1072, ptr %73, align 8, !tbaa !15
  store i32 19, ptr %1053, align 8, !tbaa !24
  br label %1102

1073:                                             ; preds = %1060, %1056, %1050
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #7
  %1074 = getelementptr inbounds i8, ptr %73, i64 24
  %1075 = load i32, ptr %1074, align 8, !tbaa !24
  %1076 = icmp eq i32 %1075, 3
  br i1 %1076, label %1077, label %1079

1077:                                             ; preds = %1073
  %1078 = load double, ptr %1051, align 8, !tbaa !15
  store double %1078, ptr %31, align 8, !tbaa !40
  br label %1082

1079:                                             ; preds = %1073
  %1080 = call i32 @luaV_tonumber_(ptr noundef nonnull %1051, ptr noundef nonnull %31)
  %.not990 = icmp eq i32 %1080, 0
  br i1 %.not990, label %1081, label %._crit_edge1159

._crit_edge1159:                                  ; preds = %1079
  %.pre = load double, ptr %31, align 8, !tbaa !40
  br label %1082

1081:                                             ; preds = %1079
  call void (ptr, ptr, ...) @luaG_runerror(ptr noundef nonnull %0, ptr noundef nonnull @.str.7) #8
  unreachable

1082:                                             ; preds = %._crit_edge1159, %1077
  %1083 = phi double [ %.pre, %._crit_edge1159 ], [ %1078, %1077 ]
  store double %1083, ptr %1051, align 8, !tbaa !15
  store i32 3, ptr %1074, align 8, !tbaa !24
  %1084 = getelementptr inbounds i8, ptr %73, i64 40
  %1085 = load i32, ptr %1084, align 8, !tbaa !24
  %1086 = icmp eq i32 %1085, 3
  br i1 %1086, label %1087, label %1089

1087:                                             ; preds = %1082
  %1088 = load double, ptr %1052, align 8, !tbaa !15
  store double %1088, ptr %32, align 8, !tbaa !40
  br label %1092

1089:                                             ; preds = %1082
  %1090 = call i32 @luaV_tonumber_(ptr noundef nonnull %1052, ptr noundef nonnull %32)
  %.not991 = icmp eq i32 %1090, 0
  br i1 %.not991, label %1091, label %._crit_edge1160

._crit_edge1160:                                  ; preds = %1089
  %.pre1161 = load double, ptr %32, align 8, !tbaa !40
  br label %1092

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

1092:                                             ; preds = %._crit_edge1160, %1087
  %1093 = phi double [ %.pre1161, %._crit_edge1160 ], [ %1088, %1087 ]
  store double %1093, ptr %1052, align 8, !tbaa !15
  store i32 3, ptr %1084, align 8, !tbaa !24
  %1094 = load i32, ptr %1053, align 8, !tbaa !24
  %1095 = icmp eq i32 %1094, 3
  br i1 %1095, label %._crit_edge1162, label %1096

1096:                                             ; preds = %1092
  %1097 = call i32 @luaV_tonumber_(ptr noundef nonnull %73, ptr noundef nonnull %30)
  %.not992 = icmp eq i32 %1097, 0
  br i1 %.not992, label %1098, label %._crit_edge1162

1098:                                             ; preds = %1096
  call void (ptr, ptr, ...) @luaG_runerror(ptr noundef nonnull %0, ptr noundef nonnull @.str.9) #8
  unreachable

._crit_edge1162:                                  ; preds = %1096, %1092
  %.in = phi ptr [ %73, %1092 ], [ %30, %1096 ]
  %1099 = load double, ptr %.in, align 8, !tbaa !15
  %1100 = load double, ptr %32, align 8, !tbaa !40
  %1101 = fsub double %1099, %1100
  store double %1101, ptr %73, align 8, !tbaa !15
  store i32 3, ptr %1053, align 8, !tbaa !24
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  br label %1102

1102:                                             ; preds = %._crit_edge1162, %1067
  %1103 = lshr i32 %59, 14
  %1104 = load ptr, ptr %50, align 8, !tbaa !15
  %1105 = zext nneg i32 %1103 to i64
  %1106 = getelementptr i32, ptr %1104, i64 %1105
  %1107 = getelementptr i8, ptr %1106, i64 -524284
  store ptr %1107, ptr %50, align 8, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #7
  br label %.loopexit.backedge

1108:                                             ; preds = %69
  %1109 = getelementptr inbounds i8, ptr %73, i64 48
  %1110 = getelementptr inbounds i8, ptr %73, i64 80
  %1111 = getelementptr inbounds i8, ptr %73, i64 32
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %1110, ptr noundef nonnull align 8 dereferenceable(16) %1111, i64 16, i1 false), !tbaa.struct !23
  %1112 = getelementptr inbounds i8, ptr %73, i64 64
  %1113 = getelementptr inbounds i8, ptr %73, i64 16
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %1112, ptr noundef nonnull align 8 dereferenceable(16) %1113, i64 16, i1 false), !tbaa.struct !23
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %1109, ptr noundef nonnull align 8 dereferenceable(16) %73, i64 16, i1 false), !tbaa.struct !23
  %1114 = getelementptr inbounds i8, ptr %73, i64 96
  store ptr %1114, ptr %38, align 8, !tbaa !38
  %1115 = lshr i32 %59, 14
  %1116 = and i32 %1115, 511
  call void @luaD_call(ptr noundef nonnull %0, ptr noundef nonnull %1109, i32 noundef %1116, i32 noundef 1) #7
  %1117 = load ptr, ptr %49, align 8, !tbaa !15
  %1118 = load ptr, ptr %53, align 8, !tbaa !39
  store ptr %1118, ptr %38, align 8, !tbaa !38
  %1119 = load ptr, ptr %50, align 8, !tbaa !15
  %1120 = getelementptr inbounds i8, ptr %1119, i64 4
  store ptr %1120, ptr %50, align 8, !tbaa !15
  %1121 = load i32, ptr %1119, align 4, !tbaa !20
  %1122 = lshr i32 %1121, 6
  %1123 = and i32 %1122, 255
  %1124 = zext nneg i32 %1123 to i64
  %1125 = getelementptr inbounds %struct.lua_TValue, ptr %1117, i64 %1124
  br label %1126

1126:                                             ; preds = %1108, %69
  %.1950 = phi ptr [ %73, %69 ], [ %1125, %1108 ]
  %.0948 = phi i32 [ %59, %69 ], [ %1121, %1108 ]
  %.18 = phi ptr [ %.1940, %69 ], [ %1117, %1108 ]
  %1127 = getelementptr inbounds i8, ptr %.1950, i64 24
  %1128 = load i32, ptr %1127, align 8, !tbaa !24
  %1129 = icmp eq i32 %1128, 0
  br i1 %1129, label %.loopexit.backedge, label %1130

1130:                                             ; preds = %1126
  %1131 = getelementptr inbounds i8, ptr %.1950, i64 16
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.1950, ptr noundef nonnull align 8 dereferenceable(16) %1131, i64 16, i1 false), !tbaa.struct !23
  %1132 = lshr i32 %.0948, 14
  %1133 = load ptr, ptr %50, align 8, !tbaa !15
  %1134 = zext nneg i32 %1132 to i64
  %1135 = getelementptr i32, ptr %1133, i64 %1134
  %1136 = getelementptr i8, ptr %1135, i64 -524284
  store ptr %1136, ptr %50, align 8, !tbaa !15
  br label %.loopexit.backedge

1137:                                             ; preds = %69
  %1138 = lshr i32 %59, 23
  %1139 = lshr i32 %59, 14
  %1140 = and i32 %1139, 511
  %1141 = icmp ult i32 %59, 8388608
  br i1 %1141, label %1142, label %1150

1142:                                             ; preds = %1137
  %1143 = load ptr, ptr %38, align 8, !tbaa !38
  %1144 = ptrtoint ptr %1143 to i64
  %1145 = ptrtoint ptr %73 to i64
  %1146 = sub i64 %1144, %1145
  %1147 = lshr exact i64 %1146, 4
  %1148 = trunc i64 %1147 to i32
  %1149 = add nsw i32 %1148, -1
  br label %1150

1150:                                             ; preds = %1142, %1137
  %.0961 = phi i32 [ %1149, %1142 ], [ %1138, %1137 ]
  %1151 = icmp eq i32 %1140, 0
  br i1 %1151, label %1152, label %1157

1152:                                             ; preds = %1150
  %1153 = load ptr, ptr %50, align 8, !tbaa !15
  %1154 = getelementptr inbounds i8, ptr %1153, i64 4
  store ptr %1154, ptr %50, align 8, !tbaa !15
  %1155 = load i32, ptr %1153, align 4, !tbaa !20
  %1156 = lshr i32 %1155, 6
  br label %1157

1157:                                             ; preds = %1152, %1150
  %.0960 = phi i32 [ %1156, %1152 ], [ %1140, %1150 ]
  %1158 = load ptr, ptr %73, align 8, !tbaa !15
  %1159 = mul nuw i32 %.0960, 50
  %1160 = add i32 %.0961, -50
  %1161 = add i32 %1160, %1159
  %1162 = getelementptr inbounds i8, ptr %1158, i64 12
  %1163 = load i32, ptr %1162, align 4, !tbaa !49
  %1164 = icmp ugt i32 %1161, %1163
  br i1 %1164, label %1165, label %1166

1165:                                             ; preds = %1157
  call void @luaH_resizearray(ptr noundef nonnull %0, ptr noundef nonnull %1158, i32 noundef %1161) #7
  br label %1166

1166:                                             ; preds = %1165, %1157
  %1167 = icmp sgt i32 %.0961, 0
  br i1 %1167, label %.lr.ph1146, label %._crit_edge

.lr.ph1146:                                       ; preds = %1166
  %1168 = getelementptr inbounds i8, ptr %1158, i64 9
  %1169 = zext nneg i32 %.0961 to i64
  br label %1170

1170:                                             ; preds = %.lr.ph1146, %1186
  %indvars.iv1153 = phi i64 [ %1169, %.lr.ph1146 ], [ %indvars.iv.next1154, %1186 ]
  %.09591145 = phi i32 [ %1161, %.lr.ph1146 ], [ %1172, %1186 ]
  %1171 = getelementptr inbounds %struct.lua_TValue, ptr %73, i64 %indvars.iv1153
  %1172 = add i32 %.09591145, -1
  %1173 = zext i32 %.09591145 to i64
  call void @luaH_setint(ptr noundef %0, ptr noundef %1158, i64 noundef %1173, ptr noundef nonnull %1171) #7
  %1174 = getelementptr inbounds i8, ptr %1171, i64 8
  %1175 = load i32, ptr %1174, align 8, !tbaa !24
  %1176 = and i32 %1175, 64
  %.not986 = icmp eq i32 %1176, 0
  br i1 %.not986, label %1186, label %1177

1177:                                             ; preds = %1170
  %1178 = load i8, ptr %1168, align 1, !tbaa !51
  %1179 = and i8 %1178, 4
  %.not987 = icmp eq i8 %1179, 0
  br i1 %.not987, label %1186, label %1180

1180:                                             ; preds = %1177
  %1181 = load ptr, ptr %1171, align 8, !tbaa !15
  %1182 = getelementptr inbounds i8, ptr %1181, i64 9
  %1183 = load i8, ptr %1182, align 1, !tbaa !52
  %1184 = and i8 %1183, 3
  %.not988 = icmp eq i8 %1184, 0
  br i1 %.not988, label %1186, label %1185

1185:                                             ; preds = %1180
  call void @luaC_barrierback_(ptr noundef %0, ptr noundef nonnull %1158) #7
  br label %1186

1186:                                             ; preds = %1185, %1180, %1177, %1170
  %indvars.iv.next1154 = add nsw i64 %indvars.iv1153, -1
  %1187 = icmp sgt i64 %indvars.iv1153, 1
  br i1 %1187, label %1170, label %._crit_edge, !llvm.loop !54

._crit_edge:                                      ; preds = %1186, %1166
  %1188 = load ptr, ptr %52, align 8, !tbaa !39
  store ptr %1188, ptr %38, align 8, !tbaa !38
  br label %.loopexit.backedge

1189:                                             ; preds = %69
  %1190 = load ptr, ptr %42, align 8, !tbaa !16
  %1191 = getelementptr inbounds i8, ptr %1190, i64 64
  %1192 = load ptr, ptr %1191, align 8, !tbaa !55
  %1193 = lshr i32 %59, 14
  %1194 = zext nneg i32 %1193 to i64
  %1195 = getelementptr inbounds ptr, ptr %1192, i64 %1194
  %1196 = load ptr, ptr %1195, align 8, !tbaa !30
  %1197 = call ptr @getcached(ptr noundef %1196, ptr noundef nonnull %48, ptr noundef %.1940)
  %1198 = icmp eq ptr %1197, null
  br i1 %1198, label %1199, label %1200

1199:                                             ; preds = %1189
  call void @pushclosure(ptr noundef nonnull %0, ptr noundef %1196, ptr noundef nonnull %48, ptr noundef %.1940, ptr noundef %73)
  br label %1202

1200:                                             ; preds = %1189
  store ptr %1197, ptr %73, align 8, !tbaa !15
  %1201 = getelementptr inbounds i8, ptr %73, i64 8
  store i32 70, ptr %1201, align 8, !tbaa !24
  br label %1202

1202:                                             ; preds = %1200, %1199
  %1203 = load ptr, ptr %39, align 8, !tbaa !33
  %1204 = getelementptr inbounds i8, ptr %1203, i64 24
  %1205 = load i64, ptr %1204, align 8, !tbaa !34
  %1206 = icmp sgt i64 %1205, 0
  br i1 %1206, label %1207, label %1210

1207:                                             ; preds = %1202
  %1208 = getelementptr inbounds i8, ptr %73, i64 16
  store ptr %1208, ptr %38, align 8, !tbaa !38
  call void @luaC_step(ptr noundef nonnull %0) #7
  %1209 = load ptr, ptr %51, align 8, !tbaa !39
  store ptr %1209, ptr %38, align 8, !tbaa !38
  br label %1210

1210:                                             ; preds = %1207, %1202
  %1211 = load ptr, ptr %49, align 8, !tbaa !15
  br label %.loopexit.backedge

1212:                                             ; preds = %69
  %1213 = lshr i32 %59, 23
  %1214 = add nsw i32 %1213, -1
  %1215 = load ptr, ptr %.0, align 8, !tbaa !14
  %1216 = ptrtoint ptr %.1940 to i64
  %1217 = ptrtoint ptr %1215 to i64
  %1218 = sub i64 %1216, %1217
  %1219 = lshr exact i64 %1218, 4
  %1220 = trunc i64 %1219 to i32
  %1221 = load ptr, ptr %42, align 8, !tbaa !16
  %1222 = getelementptr inbounds i8, ptr %1221, i64 10
  %1223 = load i8, ptr %1222, align 2, !tbaa !46
  %1224 = zext i8 %1223 to i32
  %1225 = xor i32 %1224, -1
  %1226 = add i32 %1220, %1225
  %1227 = icmp ult i32 %59, 8388608
  br i1 %1227, label %1228, label %1241

1228:                                             ; preds = %1212
  %1229 = load ptr, ptr %37, align 8, !tbaa !56
  %1230 = load ptr, ptr %38, align 8, !tbaa !38
  %1231 = ptrtoint ptr %1229 to i64
  %1232 = ptrtoint ptr %1230 to i64
  %1233 = sub i64 %1231, %1232
  %1234 = ashr exact i64 %1233, 4
  %1235 = sext i32 %1226 to i64
  %.not985 = icmp sgt i64 %1234, %1235
  br i1 %.not985, label %1237, label %1236

1236:                                             ; preds = %1228
  call void @luaD_growstack(ptr noundef nonnull %0, i32 noundef %1226) #7
  br label %1237

1237:                                             ; preds = %1228, %1236
  %1238 = load ptr, ptr %49, align 8, !tbaa !15
  %1239 = getelementptr inbounds %struct.lua_TValue, ptr %1238, i64 %72
  %1240 = getelementptr inbounds %struct.lua_TValue, ptr %1239, i64 %1235
  store ptr %1240, ptr %38, align 8, !tbaa !38
  br label %1241

1241:                                             ; preds = %1237, %1212
  %.2951 = phi ptr [ %1239, %1237 ], [ %73, %1212 ]
  %.0947 = phi i32 [ %1226, %1237 ], [ %1214, %1212 ]
  %.19 = phi ptr [ %1238, %1237 ], [ %.1940, %1212 ]
  %1242 = icmp sgt i32 %.0947, 0
  br i1 %1242, label %.lr.ph, label %.loopexit.backedge

.loopexit.backedge:                               ; preds = %1253, %.prol.loopexit, %.new, %1241, %69, %75, %79, %83, %114, %120, %132, %142, %171, %204, %206, %256, %296, %336, %369, %402, %435, %468, %504, %541, %588, %629, %662, %680, %695, %705, %709, %734, %742, %780, %814, %848, %915, %1102, %._crit_edge, %1210, %94, %90, %875, %862, %1130, %1126, %170, %159, %1024, %1023, %1022, %1042, %1040, %1038, %933, %.thread1095
  %.0939.be = phi ptr [ %942, %.thread1095 ], [ %934, %933 ], [ %.1940, %1038 ], [ %.1940, %1040 ], [ %.1940, %1042 ], [ %.1940, %1022 ], [ %.1940, %1023 ], [ %.1940, %1024 ], [ %.1940, %159 ], [ %.1940, %170 ], [ %.18, %1126 ], [ %.18, %1130 ], [ %.1940, %862 ], [ %.1940, %875 ], [ %.1940, %90 ], [ %.1940, %94 ], [ %1211, %1210 ], [ %.1940, %._crit_edge ], [ %.1940, %1102 ], [ %.1940, %915 ], [ %849, %848 ], [ %815, %814 ], [ %781, %780 ], [ %.1940, %742 ], [ %736, %734 ], [ %713, %709 ], [ %.1940, %705 ], [ %.15, %695 ], [ %.14, %680 ], [ %.13, %662 ], [ %.12, %629 ], [ %.11, %588 ], [ %.10, %541 ], [ %.9, %504 ], [ %.8, %468 ], [ %.7, %435 ], [ %.6945, %402 ], [ %.5944, %369 ], [ %.4943, %336 ], [ %.3942, %296 ], [ %.2941, %256 ], [ %216, %206 ], [ %205, %204 ], [ %184, %171 ], [ %158, %142 ], [ %141, %132 ], [ %131, %120 ], [ %.1940, %114 ], [ %.1940, %83 ], [ %.1940, %79 ], [ %.1940, %75 ], [ %.1940, %69 ], [ %.19, %1241 ], [ %.1940, %.new ], [ %.1940, %.prol.loopexit ], [ %.19, %1253 ]
  br label %.loopexit

.lr.ph:                                           ; preds = %1241
  %1243 = sext i32 %1226 to i64
  %1244 = sub nsw i64 0, %1243
  %1245 = getelementptr inbounds %struct.lua_TValue, ptr %.19, i64 %1244
  %wide.trip.count = zext nneg i32 %.0947 to i64
  br label %1246

1246:                                             ; preds = %.lr.ph, %1253
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %1253 ]
  %1247 = icmp slt i64 %indvars.iv, %1243
  br i1 %1247, label %1248, label %1251

1248:                                             ; preds = %1246
  %1249 = getelementptr inbounds %struct.lua_TValue, ptr %.2951, i64 %indvars.iv
  %1250 = getelementptr inbounds %struct.lua_TValue, ptr %1245, i64 %indvars.iv
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %1249, ptr noundef nonnull align 8 dereferenceable(16) %1250, i64 16, i1 false), !tbaa.struct !23
  br label %1253

1251:                                             ; preds = %1246
  %1252 = getelementptr inbounds %struct.lua_TValue, ptr %.2951, i64 %indvars.iv, i32 1
  store i32 0, ptr %1252, align 8, !tbaa !24
  br label %1253

1253:                                             ; preds = %1248, %1251
  %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 %.loopexit.backedge, label %1246, !llvm.loop !57

.thread1099:                                      ; preds = %1000
  ret void
}

declare hidden void @luaG_traceexec(ptr noundef) local_unnamed_addr #4

declare hidden void @luaC_upvalbarrier_(ptr noundef, ptr noundef) local_unnamed_addr #4

declare hidden ptr @luaH_new(ptr noundef) local_unnamed_addr #4

declare hidden void @luaH_resize(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

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

declare hidden void @luaC_step(ptr noundef) local_unnamed_addr #4

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

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

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

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

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

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

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

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

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

declare hidden void @luaH_setint(ptr noundef, ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #4

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

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

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

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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { noreturn "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { nounwind }
attributes #8 = { noreturn 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 32}
!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, !7, i64 88, !10, i64 96, !7, i64 168, !11, i64 176, !13, i64 184, !13, i64 188, !13, i64 192, !12, i64 196, !12, i64 198, !8, i64 200, !8, i64 201}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"CallInfo", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !8, i64 32, !11, i64 56, !12, i64 64, !8, i64 66}
!11 = !{!"long", !8, i64 0}
!12 = !{!"short", !8, i64 0}
!13 = !{!"int", !8, i64 0}
!14 = !{!10, !7, i64 0}
!15 = !{!8, !8, i64 0}
!16 = !{!17, !7, i64 24}
!17 = !{!"LClosure", !7, i64 0, !8, i64 8, !8, i64 9, !8, i64 10, !7, i64 16, !7, i64 24, !8, i64 32}
!18 = !{!19, !7, i64 48}
!19 = !{!"Proto", !7, i64 0, !8, i64 8, !8, i64 9, !8, i64 10, !8, i64 11, !8, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32, !13, i64 36, !13, i64 40, !13, i64 44, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112}
!20 = !{!13, !13, i64 0}
!21 = !{!6, !8, i64 200}
!22 = !{!6, !13, i64 192}
!23 = !{i64 0, i64 8, !15, i64 8, i64 4, !20}
!24 = !{!25, !13, i64 8}
!25 = !{!"lua_TValue", !8, i64 0, !13, i64 8}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.unroll.disable"}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = !{!7, !7, i64 0}
!31 = !{!32, !7, i64 0}
!32 = !{!"UpVal", !7, i64 0, !11, i64 8, !8, i64 16}
!33 = !{!6, !7, i64 24}
!34 = !{!35, !11, i64 24}
!35 = !{!"global_State", !7, i64 0, !7, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !36, i64 48, !25, i64 64, !13, i64 80, !8, i64 84, !8, i64 85, !8, i64 86, !8, i64 87, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112, !7, i64 120, !7, i64 128, !7, i64 136, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !37, i64 176, !13, i64 200, !13, i64 204, !13, i64 208, !7, i64 216, !7, i64 224, !7, i64 232, !7, i64 240, !8, i64 248, !8, i64 440}
!36 = !{!"stringtable", !7, i64 0, !13, i64 8, !13, i64 12}
!37 = !{!"Mbuffer", !7, i64 0, !11, i64 8, !11, i64 16}
!38 = !{!6, !7, i64 16}
!39 = !{!10, !7, i64 8}
!40 = !{!41, !41, i64 0}
!41 = !{!"double", !8, i64 0}
!42 = !{!43, !43, i64 0}
!43 = !{!"long long", !8, i64 0}
!44 = !{!10, !8, i64 66}
!45 = !{!10, !7, i64 16}
!46 = !{!19, !8, i64 10}
!47 = !{!19, !13, i64 32}
!48 = distinct !{!48, !29}
!49 = !{!50, !13, i64 12}
!50 = !{!"Table", !7, i64 0, !8, i64 8, !8, i64 9, !8, i64 10, !8, i64 11, !13, i64 12, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48}
!51 = !{!50, !8, i64 9}
!52 = !{!53, !8, i64 9}
!53 = !{!"GCObject", !7, i64 0, !8, i64 8, !8, i64 9}
!54 = distinct !{!54, !29}
!55 = !{!19, !7, i64 64}
!56 = !{!6, !7, i64 48}
!57 = distinct !{!57, !29}


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