; LLVM IR from ramsdell/lineqpp :: 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_TValue = type { %union.Value, i32 }
%union.Value = type { ptr }
%struct.lua_State = type { ptr, i8, i8, i8, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i16, i16, i8, i8, i32, i32, ptr, %struct.lua_TValue, %struct.lua_TValue, ptr, ptr, ptr, i64 }
%struct.CallInfo = type { ptr, ptr, ptr, ptr, i32, i32 }
%struct.LClosure = type { ptr, i8, i8, i8, i8, ptr, ptr, ptr, [1 x ptr] }
%struct.Proto = type { ptr, i8, i8, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, ptr, i8, i8, i8, i8 }
%struct.UpVal = type { ptr, i8, i8, ptr, %union.anon }
%union.anon = type { %struct.lua_TValue }
%struct.GCheader = type { ptr, i8, i8 }
%struct.global_State = type { %struct.stringtable, ptr, ptr, i8, i8, i32, ptr, ptr, ptr, ptr, ptr, ptr, %struct.Mbuffer, i64, i64, i64, i64, i32, i32, ptr, %struct.lua_TValue, ptr, %struct.UpVal, [9 x ptr], [17 x ptr] }
%struct.stringtable = type { ptr, i32, i32 }
%struct.Mbuffer = type { ptr, i64, i64 }
%struct.anon = type { ptr, i8, i8, i8, i32, i64 }
%struct.Table = type { ptr, i8, i8, i8, i8, ptr, ptr, ptr, ptr, ptr, i32 }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

187:                                              ; preds = %183, %163, %147
  %188 = load ptr, ptr %6, align 8, !tbaa !5
  %189 = load i32, ptr %9, align 4, !tbaa !9
  %190 = lshr i32 %189, 6
  %191 = and i32 %190, 255
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds %struct.lua_TValue, ptr %188, i64 %192
  store ptr %193, ptr %10, align 8, !tbaa !5
  %194 = load i32, ptr %9, align 4, !tbaa !9
  %195 = lshr i32 %194, 0
  %196 = and i32 %195, 63
  switch i32 %196, label %2287 [
    i32 0, label %197
    i32 1, label %214
    i32 2, label %231
    i32 3, label %248
    i32 4, label %264
    i32 5, label %286
    i32 6, label %309
    i32 7, label %346
    i32 8, label %368
    i32 9, label %417
    i32 10, label %470
    i32 11, label %508
    i32 12, label %558
    i32 13, label %639
    i32 14, label %720
    i32 15, label %801
    i32 16, label %882
    i32 17, label %968
    i32 18, label %1049
    i32 19, label %1083
    i32 20, label %1124
    i32 21, label %1174
    i32 22, label %1226
    i32 23, label %1234
    i32 24, label %1317
    i32 25, label %1386
    i32 26, label %1455
    i32 27, label %1491
    i32 28, label %1544
    i32 29, label %1589
    i32 30, label %1706
    i32 31, label %1752
    i32 32, label %1798
    i32 33, label %1866
    i32 34, label %1963
    i32 35, label %2075
    i32 36, label %2078
    i32 37, label %2176
  ]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

502:                                              ; preds = %470
  %503 = load ptr, ptr %3, align 8, !tbaa !5
  call void @luaC_step(ptr noundef %503)
  br label %504

504:                                              ; preds = %502, %470
  %505 = load ptr, ptr %3, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.lua_State, ptr %505, i32 0, i32 5
  %507 = load ptr, ptr %506, align 8, !tbaa !20
  store ptr %507, ptr %6, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  br label %2288

508:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #6
  %509 = load ptr, ptr %6, align 8, !tbaa !5
  %510 = load i32, ptr %9, align 4, !tbaa !9
  %511 = lshr i32 %510, 23
  %512 = and i32 %511, 511
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds %struct.lua_TValue, ptr %509, i64 %513
  store ptr %514, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #6
  %515 = load ptr, ptr %32, align 8, !tbaa !5
  store ptr %515, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #6
  %516 = load ptr, ptr %10, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.lua_TValue, ptr %516, i64 1
  store ptr %517, ptr %34, align 8, !tbaa !5
  %518 = load ptr, ptr %34, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.lua_TValue, ptr %518, i32 0, i32 0
  %520 = load ptr, ptr %33, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.lua_TValue, ptr %520, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %519, ptr align 8 %521, i64 8, i1 false), !tbaa.struct !28
  %522 = load ptr, ptr %33, align 8, !tbaa !5
  %523 = getelementptr inbounds %struct.lua_TValue, ptr %522, i32 0, i32 1
  %524 = load i32, ptr %523, align 8, !tbaa !29
  %525 = load ptr, ptr %34, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.lua_TValue, ptr %525, i32 0, i32 1
  store i32 %524, ptr %526, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #6
  %527 = load ptr, ptr %8, align 8, !tbaa !5
  %528 = load ptr, ptr %3, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.lua_State, ptr %528, i32 0, i32 8
  store ptr %527, ptr %529, align 8, !tbaa !11
  %530 = load ptr, ptr %3, align 8, !tbaa !5
  %531 = load ptr, ptr %32, align 8, !tbaa !5
  %532 = load i32, ptr %9, align 4, !tbaa !9
  %533 = lshr i32 %532, 14
  %534 = and i32 %533, 511
  %535 = and i32 %534, 256
  %536 = icmp ne i32 %535, 0
  br i1 %536, label %537, label %545

537:                                              ; preds = %508
  %538 = load ptr, ptr %7, align 8, !tbaa !5
  %539 = load i32, ptr %9, align 4, !tbaa !9
  %540 = lshr i32 %539, 14
  %541 = and i32 %540, 511
  %542 = and i32 %541, -257
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds %struct.lua_TValue, ptr %538, i64 %543
  br label %552

545:                                              ; preds = %508
  %546 = load ptr, ptr %6, align 8, !tbaa !5
  %547 = load i32, ptr %9, align 4, !tbaa !9
  %548 = lshr i32 %547, 14
  %549 = and i32 %548, 511
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds %struct.lua_TValue, ptr %546, i64 %550
  br label %552

552:                                              ; preds = %545, %537
  %553 = phi ptr [ %544, %537 ], [ %551, %545 ]
  %554 = load ptr, ptr %10, align 8, !tbaa !5
  call void @luaV_gettable(ptr noundef %530, ptr noundef %531, ptr noundef %553, ptr noundef %554)
  %555 = load ptr, ptr %3, align 8, !tbaa !5
  %556 = getelementptr inbounds %struct.lua_State, ptr %555, i32 0, i32 5
  %557 = load ptr, ptr %556, align 8, !tbaa !20
  store ptr %557, ptr %6, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  br label %2288

558:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #6
  %559 = load i32, ptr %9, align 4, !tbaa !9
  %560 = lshr i32 %559, 23
  %561 = and i32 %560, 511
  %562 = and i32 %561, 256
  %563 = icmp ne i32 %562, 0
  br i1 %563, label %564, label %572

564:                                              ; preds = %558
  %565 = load ptr, ptr %7, align 8, !tbaa !5
  %566 = load i32, ptr %9, align 4, !tbaa !9
  %567 = lshr i32 %566, 23
  %568 = and i32 %567, 511
  %569 = and i32 %568, -257
  %570 = sext i32 %569 to i64
  %571 = getelementptr inbounds %struct.lua_TValue, ptr %565, i64 %570
  br label %579

572:                                              ; preds = %558
  %573 = load ptr, ptr %6, align 8, !tbaa !5
  %574 = load i32, ptr %9, align 4, !tbaa !9
  %575 = lshr i32 %574, 23
  %576 = and i32 %575, 511
  %577 = sext i32 %576 to i64
  %578 = getelementptr inbounds %struct.lua_TValue, ptr %573, i64 %577
  br label %579

579:                                              ; preds = %572, %564
  %580 = phi ptr [ %571, %564 ], [ %578, %572 ]
  store ptr %580, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #6
  %581 = load i32, ptr %9, align 4, !tbaa !9
  %582 = lshr i32 %581, 14
  %583 = and i32 %582, 511
  %584 = and i32 %583, 256
  %585 = icmp ne i32 %584, 0
  br i1 %585, label %586, label %594

586:                                              ; preds = %579
  %587 = load ptr, ptr %7, align 8, !tbaa !5
  %588 = load i32, ptr %9, align 4, !tbaa !9
  %589 = lshr i32 %588, 14
  %590 = and i32 %589, 511
  %591 = and i32 %590, -257
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds %struct.lua_TValue, ptr %587, i64 %592
  br label %601

594:                                              ; preds = %579
  %595 = load ptr, ptr %6, align 8, !tbaa !5
  %596 = load i32, ptr %9, align 4, !tbaa !9
  %597 = lshr i32 %596, 14
  %598 = and i32 %597, 511
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds %struct.lua_TValue, ptr %595, i64 %599
  br label %601

601:                                              ; preds = %594, %586
  %602 = phi ptr [ %593, %586 ], [ %600, %594 ]
  store ptr %602, ptr %36, align 8, !tbaa !5
  %603 = load ptr, ptr %35, align 8, !tbaa !5
  %604 = getelementptr inbounds %struct.lua_TValue, ptr %603, i32 0, i32 1
  %605 = load i32, ptr %604, align 8, !tbaa !29
  %606 = icmp eq i32 %605, 3
  br i1 %606, label %607, label %627

607:                                              ; preds = %601
  %608 = load ptr, ptr %36, align 8, !tbaa !5
  %609 = getelementptr inbounds %struct.lua_TValue, ptr %608, i32 0, i32 1
  %610 = load i32, ptr %609, align 8, !tbaa !29
  %611 = icmp eq i32 %610, 3
  br i1 %611, label %612, label %627

612:                                              ; preds = %607
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #6
  %613 = load ptr, ptr %35, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.lua_TValue, ptr %613, i32 0, i32 0
  %615 = load double, ptr %614, align 8, !tbaa !19
  store double %615, ptr %37, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #6
  %616 = load ptr, ptr %36, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.lua_TValue, ptr %616, i32 0, i32 0
  %618 = load double, ptr %617, align 8, !tbaa !19
  store double %618, ptr %38, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #6
  %619 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %619, ptr %39, align 8, !tbaa !5
  %620 = load double, ptr %37, align 8, !tbaa !41
  %621 = load double, ptr %38, align 8, !tbaa !41
  %622 = fadd double %620, %621
  %623 = load ptr, ptr %39, align 8, !tbaa !5
  %624 = getelementptr inbounds %struct.lua_TValue, ptr %623, i32 0, i32 0
  store double %622, ptr %624, align 8, !tbaa !19
  %625 = load ptr, ptr %39, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.lua_TValue, ptr %625, i32 0, i32 1
  store i32 3, ptr %626, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #6
  br label %638

627:                                              ; preds = %607, %601
  %628 = load ptr, ptr %8, align 8, !tbaa !5
  %629 = load ptr, ptr %3, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.lua_State, ptr %629, i32 0, i32 8
  store ptr %628, ptr %630, align 8, !tbaa !11
  %631 = load ptr, ptr %3, align 8, !tbaa !5
  %632 = load ptr, ptr %10, align 8, !tbaa !5
  %633 = load ptr, ptr %35, align 8, !tbaa !5
  %634 = load ptr, ptr %36, align 8, !tbaa !5
  call void @Arith(ptr noundef %631, ptr noundef %632, ptr noundef %633, ptr noundef %634, i32 noundef 5)
  %635 = load ptr, ptr %3, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.lua_State, ptr %635, i32 0, i32 5
  %637 = load ptr, ptr %636, align 8, !tbaa !20
  store ptr %637, ptr %6, align 8, !tbaa !5
  br label %638

638:                                              ; preds = %627, %612
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #6
  store i32 4, ptr %11, align 4
  br label %2288

639:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #6
  %640 = load i32, ptr %9, align 4, !tbaa !9
  %641 = lshr i32 %640, 23
  %642 = and i32 %641, 511
  %643 = and i32 %642, 256
  %644 = icmp ne i32 %643, 0
  br i1 %644, label %645, label %653

645:                                              ; preds = %639
  %646 = load ptr, ptr %7, align 8, !tbaa !5
  %647 = load i32, ptr %9, align 4, !tbaa !9
  %648 = lshr i32 %647, 23
  %649 = and i32 %648, 511
  %650 = and i32 %649, -257
  %651 = sext i32 %650 to i64
  %652 = getelementptr inbounds %struct.lua_TValue, ptr %646, i64 %651
  br label %660

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

660:                                              ; preds = %653, %645
  %661 = phi ptr [ %652, %645 ], [ %659, %653 ]
  store ptr %661, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #6
  %662 = load i32, ptr %9, align 4, !tbaa !9
  %663 = lshr i32 %662, 14
  %664 = and i32 %663, 511
  %665 = and i32 %664, 256
  %666 = icmp ne i32 %665, 0
  br i1 %666, label %667, label %675

667:                                              ; preds = %660
  %668 = load ptr, ptr %7, align 8, !tbaa !5
  %669 = load i32, ptr %9, align 4, !tbaa !9
  %670 = lshr i32 %669, 14
  %671 = and i32 %670, 511
  %672 = and i32 %671, -257
  %673 = sext i32 %672 to i64
  %674 = getelementptr inbounds %struct.lua_TValue, ptr %668, i64 %673
  br label %682

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

682:                                              ; preds = %675, %667
  %683 = phi ptr [ %674, %667 ], [ %681, %675 ]
  store ptr %683, ptr %41, align 8, !tbaa !5
  %684 = load ptr, ptr %40, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.lua_TValue, ptr %684, i32 0, i32 1
  %686 = load i32, ptr %685, align 8, !tbaa !29
  %687 = icmp eq i32 %686, 3
  br i1 %687, label %688, label %708

688:                                              ; preds = %682
  %689 = load ptr, ptr %41, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.lua_TValue, ptr %689, i32 0, i32 1
  %691 = load i32, ptr %690, align 8, !tbaa !29
  %692 = icmp eq i32 %691, 3
  br i1 %692, label %693, label %708

693:                                              ; preds = %688
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #6
  %694 = load ptr, ptr %40, align 8, !tbaa !5
  %695 = getelementptr inbounds %struct.lua_TValue, ptr %694, i32 0, i32 0
  %696 = load double, ptr %695, align 8, !tbaa !19
  store double %696, ptr %42, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #6
  %697 = load ptr, ptr %41, align 8, !tbaa !5
  %698 = getelementptr inbounds %struct.lua_TValue, ptr %697, i32 0, i32 0
  %699 = load double, ptr %698, align 8, !tbaa !19
  store double %699, ptr %43, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #6
  %700 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %700, ptr %44, align 8, !tbaa !5
  %701 = load double, ptr %42, align 8, !tbaa !41
  %702 = load double, ptr %43, align 8, !tbaa !41
  %703 = fsub double %701, %702
  %704 = load ptr, ptr %44, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.lua_TValue, ptr %704, i32 0, i32 0
  store double %703, ptr %705, align 8, !tbaa !19
  %706 = load ptr, ptr %44, align 8, !tbaa !5
  %707 = getelementptr inbounds %struct.lua_TValue, ptr %706, i32 0, i32 1
  store i32 3, ptr %707, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #6
  br label %719

708:                                              ; preds = %688, %682
  %709 = load ptr, ptr %8, align 8, !tbaa !5
  %710 = load ptr, ptr %3, align 8, !tbaa !5
  %711 = getelementptr inbounds %struct.lua_State, ptr %710, i32 0, i32 8
  store ptr %709, ptr %711, align 8, !tbaa !11
  %712 = load ptr, ptr %3, align 8, !tbaa !5
  %713 = load ptr, ptr %10, align 8, !tbaa !5
  %714 = load ptr, ptr %40, align 8, !tbaa !5
  %715 = load ptr, ptr %41, align 8, !tbaa !5
  call void @Arith(ptr noundef %712, ptr noundef %713, ptr noundef %714, ptr noundef %715, i32 noundef 6)
  %716 = load ptr, ptr %3, align 8, !tbaa !5
  %717 = getelementptr inbounds %struct.lua_State, ptr %716, i32 0, i32 5
  %718 = load ptr, ptr %717, align 8, !tbaa !20
  store ptr %718, ptr %6, align 8, !tbaa !5
  br label %719

719:                                              ; preds = %708, %693
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #6
  store i32 4, ptr %11, align 4
  br label %2288

720:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #6
  %721 = load i32, ptr %9, align 4, !tbaa !9
  %722 = lshr i32 %721, 23
  %723 = and i32 %722, 511
  %724 = and i32 %723, 256
  %725 = icmp ne i32 %724, 0
  br i1 %725, label %726, label %734

726:                                              ; preds = %720
  %727 = load ptr, ptr %7, align 8, !tbaa !5
  %728 = load i32, ptr %9, align 4, !tbaa !9
  %729 = lshr i32 %728, 23
  %730 = and i32 %729, 511
  %731 = and i32 %730, -257
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds %struct.lua_TValue, ptr %727, i64 %732
  br label %741

734:                                              ; preds = %720
  %735 = load ptr, ptr %6, align 8, !tbaa !5
  %736 = load i32, ptr %9, align 4, !tbaa !9
  %737 = lshr i32 %736, 23
  %738 = and i32 %737, 511
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds %struct.lua_TValue, ptr %735, i64 %739
  br label %741

741:                                              ; preds = %734, %726
  %742 = phi ptr [ %733, %726 ], [ %740, %734 ]
  store ptr %742, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #6
  %743 = load i32, ptr %9, align 4, !tbaa !9
  %744 = lshr i32 %743, 14
  %745 = and i32 %744, 511
  %746 = and i32 %745, 256
  %747 = icmp ne i32 %746, 0
  br i1 %747, label %748, label %756

748:                                              ; preds = %741
  %749 = load ptr, ptr %7, align 8, !tbaa !5
  %750 = load i32, ptr %9, align 4, !tbaa !9
  %751 = lshr i32 %750, 14
  %752 = and i32 %751, 511
  %753 = and i32 %752, -257
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds %struct.lua_TValue, ptr %749, i64 %754
  br label %763

756:                                              ; preds = %741
  %757 = load ptr, ptr %6, align 8, !tbaa !5
  %758 = load i32, ptr %9, align 4, !tbaa !9
  %759 = lshr i32 %758, 14
  %760 = and i32 %759, 511
  %761 = sext i32 %760 to i64
  %762 = getelementptr inbounds %struct.lua_TValue, ptr %757, i64 %761
  br label %763

763:                                              ; preds = %756, %748
  %764 = phi ptr [ %755, %748 ], [ %762, %756 ]
  store ptr %764, ptr %46, align 8, !tbaa !5
  %765 = load ptr, ptr %45, align 8, !tbaa !5
  %766 = getelementptr inbounds %struct.lua_TValue, ptr %765, i32 0, i32 1
  %767 = load i32, ptr %766, align 8, !tbaa !29
  %768 = icmp eq i32 %767, 3
  br i1 %768, label %769, label %789

769:                                              ; preds = %763
  %770 = load ptr, ptr %46, align 8, !tbaa !5
  %771 = getelementptr inbounds %struct.lua_TValue, ptr %770, i32 0, i32 1
  %772 = load i32, ptr %771, align 8, !tbaa !29
  %773 = icmp eq i32 %772, 3
  br i1 %773, label %774, label %789

774:                                              ; preds = %769
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #6
  %775 = load ptr, ptr %45, align 8, !tbaa !5
  %776 = getelementptr inbounds %struct.lua_TValue, ptr %775, i32 0, i32 0
  %777 = load double, ptr %776, align 8, !tbaa !19
  store double %777, ptr %47, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #6
  %778 = load ptr, ptr %46, align 8, !tbaa !5
  %779 = getelementptr inbounds %struct.lua_TValue, ptr %778, i32 0, i32 0
  %780 = load double, ptr %779, align 8, !tbaa !19
  store double %780, ptr %48, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #6
  %781 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %781, ptr %49, align 8, !tbaa !5
  %782 = load double, ptr %47, align 8, !tbaa !41
  %783 = load double, ptr %48, align 8, !tbaa !41
  %784 = fmul double %782, %783
  %785 = load ptr, ptr %49, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.lua_TValue, ptr %785, i32 0, i32 0
  store double %784, ptr %786, align 8, !tbaa !19
  %787 = load ptr, ptr %49, align 8, !tbaa !5
  %788 = getelementptr inbounds %struct.lua_TValue, ptr %787, i32 0, i32 1
  store i32 3, ptr %788, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #6
  br label %800

789:                                              ; preds = %769, %763
  %790 = load ptr, ptr %8, align 8, !tbaa !5
  %791 = load ptr, ptr %3, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.lua_State, ptr %791, i32 0, i32 8
  store ptr %790, ptr %792, align 8, !tbaa !11
  %793 = load ptr, ptr %3, align 8, !tbaa !5
  %794 = load ptr, ptr %10, align 8, !tbaa !5
  %795 = load ptr, ptr %45, align 8, !tbaa !5
  %796 = load ptr, ptr %46, align 8, !tbaa !5
  call void @Arith(ptr noundef %793, ptr noundef %794, ptr noundef %795, ptr noundef %796, i32 noundef 7)
  %797 = load ptr, ptr %3, align 8, !tbaa !5
  %798 = getelementptr inbounds %struct.lua_State, ptr %797, i32 0, i32 5
  %799 = load ptr, ptr %798, align 8, !tbaa !20
  store ptr %799, ptr %6, align 8, !tbaa !5
  br label %800

800:                                              ; preds = %789, %774
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #6
  store i32 4, ptr %11, align 4
  br label %2288

801:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #6
  %802 = load i32, ptr %9, align 4, !tbaa !9
  %803 = lshr i32 %802, 23
  %804 = and i32 %803, 511
  %805 = and i32 %804, 256
  %806 = icmp ne i32 %805, 0
  br i1 %806, label %807, label %815

807:                                              ; preds = %801
  %808 = load ptr, ptr %7, align 8, !tbaa !5
  %809 = load i32, ptr %9, align 4, !tbaa !9
  %810 = lshr i32 %809, 23
  %811 = and i32 %810, 511
  %812 = and i32 %811, -257
  %813 = sext i32 %812 to i64
  %814 = getelementptr inbounds %struct.lua_TValue, ptr %808, i64 %813
  br label %822

815:                                              ; preds = %801
  %816 = load ptr, ptr %6, align 8, !tbaa !5
  %817 = load i32, ptr %9, align 4, !tbaa !9
  %818 = lshr i32 %817, 23
  %819 = and i32 %818, 511
  %820 = sext i32 %819 to i64
  %821 = getelementptr inbounds %struct.lua_TValue, ptr %816, i64 %820
  br label %822

822:                                              ; preds = %815, %807
  %823 = phi ptr [ %814, %807 ], [ %821, %815 ]
  store ptr %823, ptr %50, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #6
  %824 = load i32, ptr %9, align 4, !tbaa !9
  %825 = lshr i32 %824, 14
  %826 = and i32 %825, 511
  %827 = and i32 %826, 256
  %828 = icmp ne i32 %827, 0
  br i1 %828, label %829, label %837

829:                                              ; preds = %822
  %830 = load ptr, ptr %7, align 8, !tbaa !5
  %831 = load i32, ptr %9, align 4, !tbaa !9
  %832 = lshr i32 %831, 14
  %833 = and i32 %832, 511
  %834 = and i32 %833, -257
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds %struct.lua_TValue, ptr %830, i64 %835
  br label %844

837:                                              ; preds = %822
  %838 = load ptr, ptr %6, align 8, !tbaa !5
  %839 = load i32, ptr %9, align 4, !tbaa !9
  %840 = lshr i32 %839, 14
  %841 = and i32 %840, 511
  %842 = sext i32 %841 to i64
  %843 = getelementptr inbounds %struct.lua_TValue, ptr %838, i64 %842
  br label %844

844:                                              ; preds = %837, %829
  %845 = phi ptr [ %836, %829 ], [ %843, %837 ]
  store ptr %845, ptr %51, align 8, !tbaa !5
  %846 = load ptr, ptr %50, align 8, !tbaa !5
  %847 = getelementptr inbounds %struct.lua_TValue, ptr %846, i32 0, i32 1
  %848 = load i32, ptr %847, align 8, !tbaa !29
  %849 = icmp eq i32 %848, 3
  br i1 %849, label %850, label %870

850:                                              ; preds = %844
  %851 = load ptr, ptr %51, align 8, !tbaa !5
  %852 = getelementptr inbounds %struct.lua_TValue, ptr %851, i32 0, i32 1
  %853 = load i32, ptr %852, align 8, !tbaa !29
  %854 = icmp eq i32 %853, 3
  br i1 %854, label %855, label %870

855:                                              ; preds = %850
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #6
  %856 = load ptr, ptr %50, align 8, !tbaa !5
  %857 = getelementptr inbounds %struct.lua_TValue, ptr %856, i32 0, i32 0
  %858 = load double, ptr %857, align 8, !tbaa !19
  store double %858, ptr %52, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #6
  %859 = load ptr, ptr %51, align 8, !tbaa !5
  %860 = getelementptr inbounds %struct.lua_TValue, ptr %859, i32 0, i32 0
  %861 = load double, ptr %860, align 8, !tbaa !19
  store double %861, ptr %53, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #6
  %862 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %862, ptr %54, align 8, !tbaa !5
  %863 = load double, ptr %52, align 8, !tbaa !41
  %864 = load double, ptr %53, align 8, !tbaa !41
  %865 = fdiv double %863, %864
  %866 = load ptr, ptr %54, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.lua_TValue, ptr %866, i32 0, i32 0
  store double %865, ptr %867, align 8, !tbaa !19
  %868 = load ptr, ptr %54, align 8, !tbaa !5
  %869 = getelementptr inbounds %struct.lua_TValue, ptr %868, i32 0, i32 1
  store i32 3, ptr %869, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #6
  br label %881

870:                                              ; preds = %850, %844
  %871 = load ptr, ptr %8, align 8, !tbaa !5
  %872 = load ptr, ptr %3, align 8, !tbaa !5
  %873 = getelementptr inbounds %struct.lua_State, ptr %872, i32 0, i32 8
  store ptr %871, ptr %873, align 8, !tbaa !11
  %874 = load ptr, ptr %3, align 8, !tbaa !5
  %875 = load ptr, ptr %10, align 8, !tbaa !5
  %876 = load ptr, ptr %50, align 8, !tbaa !5
  %877 = load ptr, ptr %51, align 8, !tbaa !5
  call void @Arith(ptr noundef %874, ptr noundef %875, ptr noundef %876, ptr noundef %877, i32 noundef 8)
  %878 = load ptr, ptr %3, align 8, !tbaa !5
  %879 = getelementptr inbounds %struct.lua_State, ptr %878, i32 0, i32 5
  %880 = load ptr, ptr %879, align 8, !tbaa !20
  store ptr %880, ptr %6, align 8, !tbaa !5
  br label %881

881:                                              ; preds = %870, %855
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #6
  store i32 4, ptr %11, align 4
  br label %2288

882:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #6
  %883 = load i32, ptr %9, align 4, !tbaa !9
  %884 = lshr i32 %883, 23
  %885 = and i32 %884, 511
  %886 = and i32 %885, 256
  %887 = icmp ne i32 %886, 0
  br i1 %887, label %888, label %896

888:                                              ; preds = %882
  %889 = load ptr, ptr %7, align 8, !tbaa !5
  %890 = load i32, ptr %9, align 4, !tbaa !9
  %891 = lshr i32 %890, 23
  %892 = and i32 %891, 511
  %893 = and i32 %892, -257
  %894 = sext i32 %893 to i64
  %895 = getelementptr inbounds %struct.lua_TValue, ptr %889, i64 %894
  br label %903

896:                                              ; preds = %882
  %897 = load ptr, ptr %6, align 8, !tbaa !5
  %898 = load i32, ptr %9, align 4, !tbaa !9
  %899 = lshr i32 %898, 23
  %900 = and i32 %899, 511
  %901 = sext i32 %900 to i64
  %902 = getelementptr inbounds %struct.lua_TValue, ptr %897, i64 %901
  br label %903

903:                                              ; preds = %896, %888
  %904 = phi ptr [ %895, %888 ], [ %902, %896 ]
  store ptr %904, ptr %55, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #6
  %905 = load i32, ptr %9, align 4, !tbaa !9
  %906 = lshr i32 %905, 14
  %907 = and i32 %906, 511
  %908 = and i32 %907, 256
  %909 = icmp ne i32 %908, 0
  br i1 %909, label %910, label %918

910:                                              ; preds = %903
  %911 = load ptr, ptr %7, align 8, !tbaa !5
  %912 = load i32, ptr %9, align 4, !tbaa !9
  %913 = lshr i32 %912, 14
  %914 = and i32 %913, 511
  %915 = and i32 %914, -257
  %916 = sext i32 %915 to i64
  %917 = getelementptr inbounds %struct.lua_TValue, ptr %911, i64 %916
  br label %925

918:                                              ; preds = %903
  %919 = load ptr, ptr %6, align 8, !tbaa !5
  %920 = load i32, ptr %9, align 4, !tbaa !9
  %921 = lshr i32 %920, 14
  %922 = and i32 %921, 511
  %923 = sext i32 %922 to i64
  %924 = getelementptr inbounds %struct.lua_TValue, ptr %919, i64 %923
  br label %925

925:                                              ; preds = %918, %910
  %926 = phi ptr [ %917, %910 ], [ %924, %918 ]
  store ptr %926, ptr %56, align 8, !tbaa !5
  %927 = load ptr, ptr %55, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.lua_TValue, ptr %927, i32 0, i32 1
  %929 = load i32, ptr %928, align 8, !tbaa !29
  %930 = icmp eq i32 %929, 3
  br i1 %930, label %931, label %956

931:                                              ; preds = %925
  %932 = load ptr, ptr %56, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct.lua_TValue, ptr %932, i32 0, i32 1
  %934 = load i32, ptr %933, align 8, !tbaa !29
  %935 = icmp eq i32 %934, 3
  br i1 %935, label %936, label %956

936:                                              ; preds = %931
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #6
  %937 = load ptr, ptr %55, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.lua_TValue, ptr %937, i32 0, i32 0
  %939 = load double, ptr %938, align 8, !tbaa !19
  store double %939, ptr %57, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #6
  %940 = load ptr, ptr %56, align 8, !tbaa !5
  %941 = getelementptr inbounds %struct.lua_TValue, ptr %940, i32 0, i32 0
  %942 = load double, ptr %941, align 8, !tbaa !19
  store double %942, ptr %58, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #6
  %943 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %943, ptr %59, align 8, !tbaa !5
  %944 = load double, ptr %57, align 8, !tbaa !41
  %945 = load double, ptr %57, align 8, !tbaa !41
  %946 = load double, ptr %58, align 8, !tbaa !41
  %947 = fdiv double %945, %946
  %948 = call double @llvm.floor.f64(double %947)
  %949 = load double, ptr %58, align 8, !tbaa !41
  %950 = fneg double %948
  %951 = call double @llvm.fmuladd.f64(double %950, double %949, double %944)
  %952 = load ptr, ptr %59, align 8, !tbaa !5
  %953 = getelementptr inbounds %struct.lua_TValue, ptr %952, i32 0, i32 0
  store double %951, ptr %953, align 8, !tbaa !19
  %954 = load ptr, ptr %59, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.lua_TValue, ptr %954, i32 0, i32 1
  store i32 3, ptr %955, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #6
  br label %967

956:                                              ; preds = %931, %925
  %957 = load ptr, ptr %8, align 8, !tbaa !5
  %958 = load ptr, ptr %3, align 8, !tbaa !5
  %959 = getelementptr inbounds %struct.lua_State, ptr %958, i32 0, i32 8
  store ptr %957, ptr %959, align 8, !tbaa !11
  %960 = load ptr, ptr %3, align 8, !tbaa !5
  %961 = load ptr, ptr %10, align 8, !tbaa !5
  %962 = load ptr, ptr %55, align 8, !tbaa !5
  %963 = load ptr, ptr %56, align 8, !tbaa !5
  call void @Arith(ptr noundef %960, ptr noundef %961, ptr noundef %962, ptr noundef %963, i32 noundef 9)
  %964 = load ptr, ptr %3, align 8, !tbaa !5
  %965 = getelementptr inbounds %struct.lua_State, ptr %964, i32 0, i32 5
  %966 = load ptr, ptr %965, align 8, !tbaa !20
  store ptr %966, ptr %6, align 8, !tbaa !5
  br label %967

967:                                              ; preds = %956, %936
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #6
  store i32 4, ptr %11, align 4
  br label %2288

968:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #6
  %969 = load i32, ptr %9, align 4, !tbaa !9
  %970 = lshr i32 %969, 23
  %971 = and i32 %970, 511
  %972 = and i32 %971, 256
  %973 = icmp ne i32 %972, 0
  br i1 %973, label %974, label %982

974:                                              ; preds = %968
  %975 = load ptr, ptr %7, align 8, !tbaa !5
  %976 = load i32, ptr %9, align 4, !tbaa !9
  %977 = lshr i32 %976, 23
  %978 = and i32 %977, 511
  %979 = and i32 %978, -257
  %980 = sext i32 %979 to i64
  %981 = getelementptr inbounds %struct.lua_TValue, ptr %975, i64 %980
  br label %989

982:                                              ; preds = %968
  %983 = load ptr, ptr %6, align 8, !tbaa !5
  %984 = load i32, ptr %9, align 4, !tbaa !9
  %985 = lshr i32 %984, 23
  %986 = and i32 %985, 511
  %987 = sext i32 %986 to i64
  %988 = getelementptr inbounds %struct.lua_TValue, ptr %983, i64 %987
  br label %989

989:                                              ; preds = %982, %974
  %990 = phi ptr [ %981, %974 ], [ %988, %982 ]
  store ptr %990, ptr %60, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #6
  %991 = load i32, ptr %9, align 4, !tbaa !9
  %992 = lshr i32 %991, 14
  %993 = and i32 %992, 511
  %994 = and i32 %993, 256
  %995 = icmp ne i32 %994, 0
  br i1 %995, label %996, label %1004

996:                                              ; preds = %989
  %997 = load ptr, ptr %7, align 8, !tbaa !5
  %998 = load i32, ptr %9, align 4, !tbaa !9
  %999 = lshr i32 %998, 14
  %1000 = and i32 %999, 511
  %1001 = and i32 %1000, -257
  %1002 = sext i32 %1001 to i64
  %1003 = getelementptr inbounds %struct.lua_TValue, ptr %997, i64 %1002
  br label %1011

1004:                                             ; preds = %989
  %1005 = load ptr, ptr %6, align 8, !tbaa !5
  %1006 = load i32, ptr %9, align 4, !tbaa !9
  %1007 = lshr i32 %1006, 14
  %1008 = and i32 %1007, 511
  %1009 = sext i32 %1008 to i64
  %1010 = getelementptr inbounds %struct.lua_TValue, ptr %1005, i64 %1009
  br label %1011

1011:                                             ; preds = %1004, %996
  %1012 = phi ptr [ %1003, %996 ], [ %1010, %1004 ]
  store ptr %1012, ptr %61, align 8, !tbaa !5
  %1013 = load ptr, ptr %60, align 8, !tbaa !5
  %1014 = getelementptr inbounds %struct.lua_TValue, ptr %1013, i32 0, i32 1
  %1015 = load i32, ptr %1014, align 8, !tbaa !29
  %1016 = icmp eq i32 %1015, 3
  br i1 %1016, label %1017, label %1037

1017:                                             ; preds = %1011
  %1018 = load ptr, ptr %61, align 8, !tbaa !5
  %1019 = getelementptr inbounds %struct.lua_TValue, ptr %1018, i32 0, i32 1
  %1020 = load i32, ptr %1019, align 8, !tbaa !29
  %1021 = icmp eq i32 %1020, 3
  br i1 %1021, label %1022, label %1037

1022:                                             ; preds = %1017
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #6
  %1023 = load ptr, ptr %60, align 8, !tbaa !5
  %1024 = getelementptr inbounds %struct.lua_TValue, ptr %1023, i32 0, i32 0
  %1025 = load double, ptr %1024, align 8, !tbaa !19
  store double %1025, ptr %62, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #6
  %1026 = load ptr, ptr %61, align 8, !tbaa !5
  %1027 = getelementptr inbounds %struct.lua_TValue, ptr %1026, i32 0, i32 0
  %1028 = load double, ptr %1027, align 8, !tbaa !19
  store double %1028, ptr %63, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #6
  %1029 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1029, ptr %64, align 8, !tbaa !5
  %1030 = load double, ptr %62, align 8, !tbaa !41
  %1031 = load double, ptr %63, align 8, !tbaa !41
  %1032 = call double @pow(double noundef %1030, double noundef %1031) #6
  %1033 = load ptr, ptr %64, align 8, !tbaa !5
  %1034 = getelementptr inbounds %struct.lua_TValue, ptr %1033, i32 0, i32 0
  store double %1032, ptr %1034, align 8, !tbaa !19
  %1035 = load ptr, ptr %64, align 8, !tbaa !5
  %1036 = getelementptr inbounds %struct.lua_TValue, ptr %1035, i32 0, i32 1
  store i32 3, ptr %1036, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #6
  br label %1048

1037:                                             ; preds = %1017, %1011
  %1038 = load ptr, ptr %8, align 8, !tbaa !5
  %1039 = load ptr, ptr %3, align 8, !tbaa !5
  %1040 = getelementptr inbounds %struct.lua_State, ptr %1039, i32 0, i32 8
  store ptr %1038, ptr %1040, align 8, !tbaa !11
  %1041 = load ptr, ptr %3, align 8, !tbaa !5
  %1042 = load ptr, ptr %10, align 8, !tbaa !5
  %1043 = load ptr, ptr %60, align 8, !tbaa !5
  %1044 = load ptr, ptr %61, align 8, !tbaa !5
  call void @Arith(ptr noundef %1041, ptr noundef %1042, ptr noundef %1043, ptr noundef %1044, i32 noundef 10)
  %1045 = load ptr, ptr %3, align 8, !tbaa !5
  %1046 = getelementptr inbounds %struct.lua_State, ptr %1045, i32 0, i32 5
  %1047 = load ptr, ptr %1046, align 8, !tbaa !20
  store ptr %1047, ptr %6, align 8, !tbaa !5
  br label %1048

1048:                                             ; preds = %1037, %1022
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #6
  store i32 4, ptr %11, align 4
  br label %2288

1049:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #6
  %1050 = load ptr, ptr %6, align 8, !tbaa !5
  %1051 = load i32, ptr %9, align 4, !tbaa !9
  %1052 = lshr i32 %1051, 23
  %1053 = and i32 %1052, 511
  %1054 = sext i32 %1053 to i64
  %1055 = getelementptr inbounds %struct.lua_TValue, ptr %1050, i64 %1054
  store ptr %1055, ptr %65, align 8, !tbaa !5
  %1056 = load ptr, ptr %65, align 8, !tbaa !5
  %1057 = getelementptr inbounds %struct.lua_TValue, ptr %1056, i32 0, i32 1
  %1058 = load i32, ptr %1057, align 8, !tbaa !29
  %1059 = icmp eq i32 %1058, 3
  br i1 %1059, label %1060, label %1071

1060:                                             ; preds = %1049
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #6
  %1061 = load ptr, ptr %65, align 8, !tbaa !5
  %1062 = getelementptr inbounds %struct.lua_TValue, ptr %1061, i32 0, i32 0
  %1063 = load double, ptr %1062, align 8, !tbaa !19
  store double %1063, ptr %66, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #6
  %1064 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1064, ptr %67, align 8, !tbaa !5
  %1065 = load double, ptr %66, align 8, !tbaa !41
  %1066 = fneg double %1065
  %1067 = load ptr, ptr %67, align 8, !tbaa !5
  %1068 = getelementptr inbounds %struct.lua_TValue, ptr %1067, i32 0, i32 0
  store double %1066, ptr %1068, align 8, !tbaa !19
  %1069 = load ptr, ptr %67, align 8, !tbaa !5
  %1070 = getelementptr inbounds %struct.lua_TValue, ptr %1069, i32 0, i32 1
  store i32 3, ptr %1070, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #6
  br label %1082

1071:                                             ; preds = %1049
  %1072 = load ptr, ptr %8, align 8, !tbaa !5
  %1073 = load ptr, ptr %3, align 8, !tbaa !5
  %1074 = getelementptr inbounds %struct.lua_State, ptr %1073, i32 0, i32 8
  store ptr %1072, ptr %1074, align 8, !tbaa !11
  %1075 = load ptr, ptr %3, align 8, !tbaa !5
  %1076 = load ptr, ptr %10, align 8, !tbaa !5
  %1077 = load ptr, ptr %65, align 8, !tbaa !5
  %1078 = load ptr, ptr %65, align 8, !tbaa !5
  call void @Arith(ptr noundef %1075, ptr noundef %1076, ptr noundef %1077, ptr noundef %1078, i32 noundef 11)
  %1079 = load ptr, ptr %3, align 8, !tbaa !5
  %1080 = getelementptr inbounds %struct.lua_State, ptr %1079, i32 0, i32 5
  %1081 = load ptr, ptr %1080, align 8, !tbaa !20
  store ptr %1081, ptr %6, align 8, !tbaa !5
  br label %1082

1082:                                             ; preds = %1071, %1060
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #6
  br label %2288

1083:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #6
  %1084 = load ptr, ptr %6, align 8, !tbaa !5
  %1085 = load i32, ptr %9, align 4, !tbaa !9
  %1086 = lshr i32 %1085, 23
  %1087 = and i32 %1086, 511
  %1088 = sext i32 %1087 to i64
  %1089 = getelementptr inbounds %struct.lua_TValue, ptr %1084, i64 %1088
  %1090 = getelementptr inbounds %struct.lua_TValue, ptr %1089, i32 0, i32 1
  %1091 = load i32, ptr %1090, align 8, !tbaa !29
  %1092 = icmp eq i32 %1091, 0
  br i1 %1092, label %1115, label %1093

1093:                                             ; preds = %1083
  %1094 = load ptr, ptr %6, align 8, !tbaa !5
  %1095 = load i32, ptr %9, align 4, !tbaa !9
  %1096 = lshr i32 %1095, 23
  %1097 = and i32 %1096, 511
  %1098 = sext i32 %1097 to i64
  %1099 = getelementptr inbounds %struct.lua_TValue, ptr %1094, i64 %1098
  %1100 = getelementptr inbounds %struct.lua_TValue, ptr %1099, i32 0, i32 1
  %1101 = load i32, ptr %1100, align 8, !tbaa !29
  %1102 = icmp eq i32 %1101, 1
  br i1 %1102, label %1103, label %1113

1103:                                             ; preds = %1093
  %1104 = load ptr, ptr %6, align 8, !tbaa !5
  %1105 = load i32, ptr %9, align 4, !tbaa !9
  %1106 = lshr i32 %1105, 23
  %1107 = and i32 %1106, 511
  %1108 = sext i32 %1107 to i64
  %1109 = getelementptr inbounds %struct.lua_TValue, ptr %1104, i64 %1108
  %1110 = getelementptr inbounds %struct.lua_TValue, ptr %1109, i32 0, i32 0
  %1111 = load i32, ptr %1110, align 8, !tbaa !19
  %1112 = icmp eq i32 %1111, 0
  br label %1113

1113:                                             ; preds = %1103, %1093
  %1114 = phi i1 [ false, %1093 ], [ %1112, %1103 ]
  br label %1115

1115:                                             ; preds = %1113, %1083
  %1116 = phi i1 [ true, %1083 ], [ %1114, %1113 ]
  %1117 = zext i1 %1116 to i32
  store i32 %1117, ptr %68, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #6
  %1118 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1118, ptr %69, align 8, !tbaa !5
  %1119 = load i32, ptr %68, align 4, !tbaa !9
  %1120 = load ptr, ptr %69, align 8, !tbaa !5
  %1121 = getelementptr inbounds %struct.lua_TValue, ptr %1120, i32 0, i32 0
  store i32 %1119, ptr %1121, align 8, !tbaa !19
  %1122 = load ptr, ptr %69, align 8, !tbaa !5
  %1123 = getelementptr inbounds %struct.lua_TValue, ptr %1122, i32 0, i32 1
  store i32 1, ptr %1123, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #6
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #6
  br label %2288

1124:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #6
  %1125 = load ptr, ptr %6, align 8, !tbaa !5
  %1126 = load i32, ptr %9, align 4, !tbaa !9
  %1127 = lshr i32 %1126, 23
  %1128 = and i32 %1127, 511
  %1129 = sext i32 %1128 to i64
  %1130 = getelementptr inbounds %struct.lua_TValue, ptr %1125, i64 %1129
  store ptr %1130, ptr %70, align 8, !tbaa !5
  %1131 = load ptr, ptr %70, align 8, !tbaa !5
  %1132 = getelementptr inbounds %struct.lua_TValue, ptr %1131, i32 0, i32 1
  %1133 = load i32, ptr %1132, align 8, !tbaa !29
  switch i32 %1133, label %1157 [
    i32 5, label %1134
    i32 4, label %1145
  ]

1134:                                             ; preds = %1124
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #6
  %1135 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1135, ptr %71, align 8, !tbaa !5
  %1136 = load ptr, ptr %70, align 8, !tbaa !5
  %1137 = getelementptr inbounds %struct.lua_TValue, ptr %1136, i32 0, i32 0
  %1138 = load ptr, ptr %1137, align 8, !tbaa !19
  %1139 = call i32 @luaH_getn(ptr noundef %1138)
  %1140 = sitofp i32 %1139 to double
  %1141 = load ptr, ptr %71, align 8, !tbaa !5
  %1142 = getelementptr inbounds %struct.lua_TValue, ptr %1141, i32 0, i32 0
  store double %1140, ptr %1142, align 8, !tbaa !19
  %1143 = load ptr, ptr %71, align 8, !tbaa !5
  %1144 = getelementptr inbounds %struct.lua_TValue, ptr %1143, i32 0, i32 1
  store i32 3, ptr %1144, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #6
  br label %1173

1145:                                             ; preds = %1124
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #6
  %1146 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1146, ptr %72, align 8, !tbaa !5
  %1147 = load ptr, ptr %70, align 8, !tbaa !5
  %1148 = getelementptr inbounds %struct.lua_TValue, ptr %1147, i32 0, i32 0
  %1149 = load ptr, ptr %1148, align 8, !tbaa !19
  %1150 = getelementptr inbounds %struct.anon, ptr %1149, i32 0, i32 5
  %1151 = load i64, ptr %1150, align 8, !tbaa !19
  %1152 = uitofp i64 %1151 to double
  %1153 = load ptr, ptr %72, align 8, !tbaa !5
  %1154 = getelementptr inbounds %struct.lua_TValue, ptr %1153, i32 0, i32 0
  store double %1152, ptr %1154, align 8, !tbaa !19
  %1155 = load ptr, ptr %72, align 8, !tbaa !5
  %1156 = getelementptr inbounds %struct.lua_TValue, ptr %1155, i32 0, i32 1
  store i32 3, ptr %1156, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #6
  br label %1173

1157:                                             ; preds = %1124
  %1158 = load ptr, ptr %8, align 8, !tbaa !5
  %1159 = load ptr, ptr %3, align 8, !tbaa !5
  %1160 = getelementptr inbounds %struct.lua_State, ptr %1159, i32 0, i32 8
  store ptr %1158, ptr %1160, align 8, !tbaa !11
  %1161 = load ptr, ptr %3, align 8, !tbaa !5
  %1162 = load ptr, ptr %70, align 8, !tbaa !5
  %1163 = load ptr, ptr %10, align 8, !tbaa !5
  %1164 = call i32 @call_binTM(ptr noundef %1161, ptr noundef %1162, ptr noundef @luaO_nilobject_, ptr noundef %1163, i32 noundef 12)
  %1165 = icmp ne i32 %1164, 0
  br i1 %1165, label %1169, label %1166

1166:                                             ; preds = %1157
  %1167 = load ptr, ptr %3, align 8, !tbaa !5
  %1168 = load ptr, ptr %70, align 8, !tbaa !5
  call void @luaG_typeerror(ptr noundef %1167, ptr noundef %1168, ptr noundef @.str.5)
  br label %1169

1169:                                             ; preds = %1166, %1157
  %1170 = load ptr, ptr %3, align 8, !tbaa !5
  %1171 = getelementptr inbounds %struct.lua_State, ptr %1170, i32 0, i32 5
  %1172 = load ptr, ptr %1171, align 8, !tbaa !20
  store ptr %1172, ptr %6, align 8, !tbaa !5
  br label %1173

1173:                                             ; preds = %1169, %1145, %1134
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #6
  br label %2288

1174:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #6
  %1175 = load i32, ptr %9, align 4, !tbaa !9
  %1176 = lshr i32 %1175, 23
  %1177 = and i32 %1176, 511
  store i32 %1177, ptr %73, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #6
  %1178 = load i32, ptr %9, align 4, !tbaa !9
  %1179 = lshr i32 %1178, 14
  %1180 = and i32 %1179, 511
  store i32 %1180, ptr %74, align 4, !tbaa !9
  %1181 = load ptr, ptr %8, align 8, !tbaa !5
  %1182 = load ptr, ptr %3, align 8, !tbaa !5
  %1183 = getelementptr inbounds %struct.lua_State, ptr %1182, i32 0, i32 8
  store ptr %1181, ptr %1183, align 8, !tbaa !11
  %1184 = load ptr, ptr %3, align 8, !tbaa !5
  %1185 = load i32, ptr %74, align 4, !tbaa !9
  %1186 = load i32, ptr %73, align 4, !tbaa !9
  %1187 = sub nsw i32 %1185, %1186
  %1188 = add nsw i32 %1187, 1
  %1189 = load i32, ptr %74, align 4, !tbaa !9
  call void @luaV_concat(ptr noundef %1184, i32 noundef %1188, i32 noundef %1189)
  %1190 = load ptr, ptr %3, align 8, !tbaa !5
  %1191 = getelementptr inbounds %struct.lua_State, ptr %1190, i32 0, i32 6
  %1192 = load ptr, ptr %1191, align 8, !tbaa !35
  %1193 = getelementptr inbounds %struct.global_State, ptr %1192, i32 0, i32 14
  %1194 = load i64, ptr %1193, align 8, !tbaa !36
  %1195 = load ptr, ptr %3, align 8, !tbaa !5
  %1196 = getelementptr inbounds %struct.lua_State, ptr %1195, i32 0, i32 6
  %1197 = load ptr, ptr %1196, align 8, !tbaa !35
  %1198 = getelementptr inbounds %struct.global_State, ptr %1197, i32 0, i32 13
  %1199 = load i64, ptr %1198, align 8, !tbaa !40
  %1200 = icmp uge i64 %1194, %1199
  br i1 %1200, label %1201, label %1203

1201:                                             ; preds = %1174
  %1202 = load ptr, ptr %3, align 8, !tbaa !5
  call void @luaC_step(ptr noundef %1202)
  br label %1203

1203:                                             ; preds = %1201, %1174
  %1204 = load ptr, ptr %3, align 8, !tbaa !5
  %1205 = getelementptr inbounds %struct.lua_State, ptr %1204, i32 0, i32 5
  %1206 = load ptr, ptr %1205, align 8, !tbaa !20
  store ptr %1206, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #6
  %1207 = load ptr, ptr %6, align 8, !tbaa !5
  %1208 = load i32, ptr %73, align 4, !tbaa !9
  %1209 = sext i32 %1208 to i64
  %1210 = getelementptr inbounds %struct.lua_TValue, ptr %1207, i64 %1209
  store ptr %1210, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #6
  %1211 = load ptr, ptr %6, align 8, !tbaa !5
  %1212 = load i32, ptr %9, align 4, !tbaa !9
  %1213 = lshr i32 %1212, 6
  %1214 = and i32 %1213, 255
  %1215 = sext i32 %1214 to i64
  %1216 = getelementptr inbounds %struct.lua_TValue, ptr %1211, i64 %1215
  store ptr %1216, ptr %76, align 8, !tbaa !5
  %1217 = load ptr, ptr %76, align 8, !tbaa !5
  %1218 = getelementptr inbounds %struct.lua_TValue, ptr %1217, i32 0, i32 0
  %1219 = load ptr, ptr %75, align 8, !tbaa !5
  %1220 = getelementptr inbounds %struct.lua_TValue, ptr %1219, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1218, ptr align 8 %1220, i64 8, i1 false), !tbaa.struct !28
  %1221 = load ptr, ptr %75, align 8, !tbaa !5
  %1222 = getelementptr inbounds %struct.lua_TValue, ptr %1221, i32 0, i32 1
  %1223 = load i32, ptr %1222, align 8, !tbaa !29
  %1224 = load ptr, ptr %76, align 8, !tbaa !5
  %1225 = getelementptr inbounds %struct.lua_TValue, ptr %1224, i32 0, i32 1
  store i32 %1223, ptr %1225, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #6
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #6
  br label %2288

1226:                                             ; preds = %187
  %1227 = load i32, ptr %9, align 4, !tbaa !9
  %1228 = lshr i32 %1227, 14
  %1229 = and i32 %1228, 262143
  %1230 = sub nsw i32 %1229, 131071
  %1231 = load ptr, ptr %8, align 8, !tbaa !5
  %1232 = sext i32 %1230 to i64
  %1233 = getelementptr inbounds i32, ptr %1231, i64 %1232
  store ptr %1233, ptr %8, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  br label %2288

1234:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #6
  %1235 = load i32, ptr %9, align 4, !tbaa !9
  %1236 = lshr i32 %1235, 23
  %1237 = and i32 %1236, 511
  %1238 = and i32 %1237, 256
  %1239 = icmp ne i32 %1238, 0
  br i1 %1239, label %1240, label %1248

1240:                                             ; preds = %1234
  %1241 = load ptr, ptr %7, align 8, !tbaa !5
  %1242 = load i32, ptr %9, align 4, !tbaa !9
  %1243 = lshr i32 %1242, 23
  %1244 = and i32 %1243, 511
  %1245 = and i32 %1244, -257
  %1246 = sext i32 %1245 to i64
  %1247 = getelementptr inbounds %struct.lua_TValue, ptr %1241, i64 %1246
  br label %1255

1248:                                             ; preds = %1234
  %1249 = load ptr, ptr %6, align 8, !tbaa !5
  %1250 = load i32, ptr %9, align 4, !tbaa !9
  %1251 = lshr i32 %1250, 23
  %1252 = and i32 %1251, 511
  %1253 = sext i32 %1252 to i64
  %1254 = getelementptr inbounds %struct.lua_TValue, ptr %1249, i64 %1253
  br label %1255

1255:                                             ; preds = %1248, %1240
  %1256 = phi ptr [ %1247, %1240 ], [ %1254, %1248 ]
  store ptr %1256, ptr %77, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #6
  %1257 = load i32, ptr %9, align 4, !tbaa !9
  %1258 = lshr i32 %1257, 14
  %1259 = and i32 %1258, 511
  %1260 = and i32 %1259, 256
  %1261 = icmp ne i32 %1260, 0
  br i1 %1261, label %1262, label %1270

1262:                                             ; preds = %1255
  %1263 = load ptr, ptr %7, align 8, !tbaa !5
  %1264 = load i32, ptr %9, align 4, !tbaa !9
  %1265 = lshr i32 %1264, 14
  %1266 = and i32 %1265, 511
  %1267 = and i32 %1266, -257
  %1268 = sext i32 %1267 to i64
  %1269 = getelementptr inbounds %struct.lua_TValue, ptr %1263, i64 %1268
  br label %1277

1270:                                             ; preds = %1255
  %1271 = load ptr, ptr %6, align 8, !tbaa !5
  %1272 = load i32, ptr %9, align 4, !tbaa !9
  %1273 = lshr i32 %1272, 14
  %1274 = and i32 %1273, 511
  %1275 = sext i32 %1274 to i64
  %1276 = getelementptr inbounds %struct.lua_TValue, ptr %1271, i64 %1275
  br label %1277

1277:                                             ; preds = %1270, %1262
  %1278 = phi ptr [ %1269, %1262 ], [ %1276, %1270 ]
  store ptr %1278, ptr %78, align 8, !tbaa !5
  %1279 = load ptr, ptr %8, align 8, !tbaa !5
  %1280 = load ptr, ptr %3, align 8, !tbaa !5
  %1281 = getelementptr inbounds %struct.lua_State, ptr %1280, i32 0, i32 8
  store ptr %1279, ptr %1281, align 8, !tbaa !11
  %1282 = load ptr, ptr %77, align 8, !tbaa !5
  %1283 = getelementptr inbounds %struct.lua_TValue, ptr %1282, i32 0, i32 1
  %1284 = load i32, ptr %1283, align 8, !tbaa !29
  %1285 = load ptr, ptr %78, align 8, !tbaa !5
  %1286 = getelementptr inbounds %struct.lua_TValue, ptr %1285, i32 0, i32 1
  %1287 = load i32, ptr %1286, align 8, !tbaa !29
  %1288 = icmp eq i32 %1284, %1287
  br i1 %1288, label %1289, label %1295

1289:                                             ; preds = %1277
  %1290 = load ptr, ptr %3, align 8, !tbaa !5
  %1291 = load ptr, ptr %77, align 8, !tbaa !5
  %1292 = load ptr, ptr %78, align 8, !tbaa !5
  %1293 = call i32 @luaV_equalval(ptr noundef %1290, ptr noundef %1291, ptr noundef %1292)
  %1294 = icmp ne i32 %1293, 0
  br label %1295

1295:                                             ; preds = %1289, %1277
  %1296 = phi i1 [ false, %1277 ], [ %1294, %1289 ]
  %1297 = zext i1 %1296 to i32
  %1298 = load i32, ptr %9, align 4, !tbaa !9
  %1299 = lshr i32 %1298, 6
  %1300 = and i32 %1299, 255
  %1301 = icmp eq i32 %1297, %1300
  br i1 %1301, label %1302, label %1311

1302:                                             ; preds = %1295
  %1303 = load ptr, ptr %8, align 8, !tbaa !5
  %1304 = load i32, ptr %1303, align 4, !tbaa !9
  %1305 = lshr i32 %1304, 14
  %1306 = and i32 %1305, 262143
  %1307 = sub nsw i32 %1306, 131071
  %1308 = load ptr, ptr %8, align 8, !tbaa !5
  %1309 = sext i32 %1307 to i64
  %1310 = getelementptr inbounds i32, ptr %1308, i64 %1309
  store ptr %1310, ptr %8, align 8, !tbaa !5
  br label %1311

1311:                                             ; preds = %1302, %1295
  %1312 = load ptr, ptr %3, align 8, !tbaa !5
  %1313 = getelementptr inbounds %struct.lua_State, ptr %1312, i32 0, i32 5
  %1314 = load ptr, ptr %1313, align 8, !tbaa !20
  store ptr %1314, ptr %6, align 8, !tbaa !5
  %1315 = load ptr, ptr %8, align 8, !tbaa !5
  %1316 = getelementptr inbounds i32, ptr %1315, i32 1
  store ptr %1316, ptr %8, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #6
  br label %2288

1317:                                             ; preds = %187
  %1318 = load ptr, ptr %8, align 8, !tbaa !5
  %1319 = load ptr, ptr %3, align 8, !tbaa !5
  %1320 = getelementptr inbounds %struct.lua_State, ptr %1319, i32 0, i32 8
  store ptr %1318, ptr %1320, align 8, !tbaa !11
  %1321 = load ptr, ptr %3, align 8, !tbaa !5
  %1322 = load i32, ptr %9, align 4, !tbaa !9
  %1323 = lshr i32 %1322, 23
  %1324 = and i32 %1323, 511
  %1325 = and i32 %1324, 256
  %1326 = icmp ne i32 %1325, 0
  br i1 %1326, label %1327, label %1335

1327:                                             ; preds = %1317
  %1328 = load ptr, ptr %7, align 8, !tbaa !5
  %1329 = load i32, ptr %9, align 4, !tbaa !9
  %1330 = lshr i32 %1329, 23
  %1331 = and i32 %1330, 511
  %1332 = and i32 %1331, -257
  %1333 = sext i32 %1332 to i64
  %1334 = getelementptr inbounds %struct.lua_TValue, ptr %1328, i64 %1333
  br label %1342

1335:                                             ; preds = %1317
  %1336 = load ptr, ptr %6, align 8, !tbaa !5
  %1337 = load i32, ptr %9, align 4, !tbaa !9
  %1338 = lshr i32 %1337, 23
  %1339 = and i32 %1338, 511
  %1340 = sext i32 %1339 to i64
  %1341 = getelementptr inbounds %struct.lua_TValue, ptr %1336, i64 %1340
  br label %1342

1342:                                             ; preds = %1335, %1327
  %1343 = phi ptr [ %1334, %1327 ], [ %1341, %1335 ]
  %1344 = load i32, ptr %9, align 4, !tbaa !9
  %1345 = lshr i32 %1344, 14
  %1346 = and i32 %1345, 511
  %1347 = and i32 %1346, 256
  %1348 = icmp ne i32 %1347, 0
  br i1 %1348, label %1349, label %1357

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

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

1364:                                             ; preds = %1357, %1349
  %1365 = phi ptr [ %1356, %1349 ], [ %1363, %1357 ]
  %1366 = call i32 @luaV_lessthan(ptr noundef %1321, ptr noundef %1343, ptr noundef %1365)
  %1367 = load i32, ptr %9, align 4, !tbaa !9
  %1368 = lshr i32 %1367, 6
  %1369 = and i32 %1368, 255
  %1370 = icmp eq i32 %1366, %1369
  br i1 %1370, label %1371, label %1380

1371:                                             ; preds = %1364
  %1372 = load ptr, ptr %8, align 8, !tbaa !5
  %1373 = load i32, ptr %1372, align 4, !tbaa !9
  %1374 = lshr i32 %1373, 14
  %1375 = and i32 %1374, 262143
  %1376 = sub nsw i32 %1375, 131071
  %1377 = load ptr, ptr %8, align 8, !tbaa !5
  %1378 = sext i32 %1376 to i64
  %1379 = getelementptr inbounds i32, ptr %1377, i64 %1378
  store ptr %1379, ptr %8, align 8, !tbaa !5
  br label %1380

1380:                                             ; preds = %1371, %1364
  %1381 = load ptr, ptr %3, align 8, !tbaa !5
  %1382 = getelementptr inbounds %struct.lua_State, ptr %1381, i32 0, i32 5
  %1383 = load ptr, ptr %1382, align 8, !tbaa !20
  store ptr %1383, ptr %6, align 8, !tbaa !5
  %1384 = load ptr, ptr %8, align 8, !tbaa !5
  %1385 = getelementptr inbounds i32, ptr %1384, i32 1
  store ptr %1385, ptr %8, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  br label %2288

1386:                                             ; preds = %187
  %1387 = load ptr, ptr %8, align 8, !tbaa !5
  %1388 = load ptr, ptr %3, align 8, !tbaa !5
  %1389 = getelementptr inbounds %struct.lua_State, ptr %1388, i32 0, i32 8
  store ptr %1387, ptr %1389, align 8, !tbaa !11
  %1390 = load ptr, ptr %3, align 8, !tbaa !5
  %1391 = load i32, ptr %9, align 4, !tbaa !9
  %1392 = lshr i32 %1391, 23
  %1393 = and i32 %1392, 511
  %1394 = and i32 %1393, 256
  %1395 = icmp ne i32 %1394, 0
  br i1 %1395, label %1396, label %1404

1396:                                             ; preds = %1386
  %1397 = load ptr, ptr %7, align 8, !tbaa !5
  %1398 = load i32, ptr %9, align 4, !tbaa !9
  %1399 = lshr i32 %1398, 23
  %1400 = and i32 %1399, 511
  %1401 = and i32 %1400, -257
  %1402 = sext i32 %1401 to i64
  %1403 = getelementptr inbounds %struct.lua_TValue, ptr %1397, i64 %1402
  br label %1411

1404:                                             ; preds = %1386
  %1405 = load ptr, ptr %6, align 8, !tbaa !5
  %1406 = load i32, ptr %9, align 4, !tbaa !9
  %1407 = lshr i32 %1406, 23
  %1408 = and i32 %1407, 511
  %1409 = sext i32 %1408 to i64
  %1410 = getelementptr inbounds %struct.lua_TValue, ptr %1405, i64 %1409
  br label %1411

1411:                                             ; preds = %1404, %1396
  %1412 = phi ptr [ %1403, %1396 ], [ %1410, %1404 ]
  %1413 = load i32, ptr %9, align 4, !tbaa !9
  %1414 = lshr i32 %1413, 14
  %1415 = and i32 %1414, 511
  %1416 = and i32 %1415, 256
  %1417 = icmp ne i32 %1416, 0
  br i1 %1417, label %1418, label %1426

1418:                                             ; preds = %1411
  %1419 = load ptr, ptr %7, align 8, !tbaa !5
  %1420 = load i32, ptr %9, align 4, !tbaa !9
  %1421 = lshr i32 %1420, 14
  %1422 = and i32 %1421, 511
  %1423 = and i32 %1422, -257
  %1424 = sext i32 %1423 to i64
  %1425 = getelementptr inbounds %struct.lua_TValue, ptr %1419, i64 %1424
  br label %1433

1426:                                             ; preds = %1411
  %1427 = load ptr, ptr %6, align 8, !tbaa !5
  %1428 = load i32, ptr %9, align 4, !tbaa !9
  %1429 = lshr i32 %1428, 14
  %1430 = and i32 %1429, 511
  %1431 = sext i32 %1430 to i64
  %1432 = getelementptr inbounds %struct.lua_TValue, ptr %1427, i64 %1431
  br label %1433

1433:                                             ; preds = %1426, %1418
  %1434 = phi ptr [ %1425, %1418 ], [ %1432, %1426 ]
  %1435 = call i32 @lessequal(ptr noundef %1390, ptr noundef %1412, ptr noundef %1434)
  %1436 = load i32, ptr %9, align 4, !tbaa !9
  %1437 = lshr i32 %1436, 6
  %1438 = and i32 %1437, 255
  %1439 = icmp eq i32 %1435, %1438
  br i1 %1439, label %1440, label %1449

1440:                                             ; preds = %1433
  %1441 = load ptr, ptr %8, align 8, !tbaa !5
  %1442 = load i32, ptr %1441, align 4, !tbaa !9
  %1443 = lshr i32 %1442, 14
  %1444 = and i32 %1443, 262143
  %1445 = sub nsw i32 %1444, 131071
  %1446 = load ptr, ptr %8, align 8, !tbaa !5
  %1447 = sext i32 %1445 to i64
  %1448 = getelementptr inbounds i32, ptr %1446, i64 %1447
  store ptr %1448, ptr %8, align 8, !tbaa !5
  br label %1449

1449:                                             ; preds = %1440, %1433
  %1450 = load ptr, ptr %3, align 8, !tbaa !5
  %1451 = getelementptr inbounds %struct.lua_State, ptr %1450, i32 0, i32 5
  %1452 = load ptr, ptr %1451, align 8, !tbaa !20
  store ptr %1452, ptr %6, align 8, !tbaa !5
  %1453 = load ptr, ptr %8, align 8, !tbaa !5
  %1454 = getelementptr inbounds i32, ptr %1453, i32 1
  store ptr %1454, ptr %8, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  br label %2288

1455:                                             ; preds = %187
  %1456 = load ptr, ptr %10, align 8, !tbaa !5
  %1457 = getelementptr inbounds %struct.lua_TValue, ptr %1456, i32 0, i32 1
  %1458 = load i32, ptr %1457, align 8, !tbaa !29
  %1459 = icmp eq i32 %1458, 0
  br i1 %1459, label %1472, label %1460

1460:                                             ; preds = %1455
  %1461 = load ptr, ptr %10, align 8, !tbaa !5
  %1462 = getelementptr inbounds %struct.lua_TValue, ptr %1461, i32 0, i32 1
  %1463 = load i32, ptr %1462, align 8, !tbaa !29
  %1464 = icmp eq i32 %1463, 1
  br i1 %1464, label %1465, label %1470

1465:                                             ; preds = %1460
  %1466 = load ptr, ptr %10, align 8, !tbaa !5
  %1467 = getelementptr inbounds %struct.lua_TValue, ptr %1466, i32 0, i32 0
  %1468 = load i32, ptr %1467, align 8, !tbaa !19
  %1469 = icmp eq i32 %1468, 0
  br label %1470

1470:                                             ; preds = %1465, %1460
  %1471 = phi i1 [ false, %1460 ], [ %1469, %1465 ]
  br label %1472

1472:                                             ; preds = %1470, %1455
  %1473 = phi i1 [ true, %1455 ], [ %1471, %1470 ]
  %1474 = zext i1 %1473 to i32
  %1475 = load i32, ptr %9, align 4, !tbaa !9
  %1476 = lshr i32 %1475, 14
  %1477 = and i32 %1476, 511
  %1478 = icmp ne i32 %1474, %1477
  br i1 %1478, label %1479, label %1488

1479:                                             ; preds = %1472
  %1480 = load ptr, ptr %8, align 8, !tbaa !5
  %1481 = load i32, ptr %1480, align 4, !tbaa !9
  %1482 = lshr i32 %1481, 14
  %1483 = and i32 %1482, 262143
  %1484 = sub nsw i32 %1483, 131071
  %1485 = load ptr, ptr %8, align 8, !tbaa !5
  %1486 = sext i32 %1484 to i64
  %1487 = getelementptr inbounds i32, ptr %1485, i64 %1486
  store ptr %1487, ptr %8, align 8, !tbaa !5
  br label %1488

1488:                                             ; preds = %1479, %1472
  %1489 = load ptr, ptr %8, align 8, !tbaa !5
  %1490 = getelementptr inbounds i32, ptr %1489, i32 1
  store ptr %1490, ptr %8, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  br label %2288

1491:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #6
  %1492 = load ptr, ptr %6, align 8, !tbaa !5
  %1493 = load i32, ptr %9, align 4, !tbaa !9
  %1494 = lshr i32 %1493, 23
  %1495 = and i32 %1494, 511
  %1496 = sext i32 %1495 to i64
  %1497 = getelementptr inbounds %struct.lua_TValue, ptr %1492, i64 %1496
  store ptr %1497, ptr %79, align 8, !tbaa !5
  %1498 = load ptr, ptr %79, align 8, !tbaa !5
  %1499 = getelementptr inbounds %struct.lua_TValue, ptr %1498, i32 0, i32 1
  %1500 = load i32, ptr %1499, align 8, !tbaa !29
  %1501 = icmp eq i32 %1500, 0
  br i1 %1501, label %1514, label %1502

1502:                                             ; preds = %1491
  %1503 = load ptr, ptr %79, align 8, !tbaa !5
  %1504 = getelementptr inbounds %struct.lua_TValue, ptr %1503, i32 0, i32 1
  %1505 = load i32, ptr %1504, align 8, !tbaa !29
  %1506 = icmp eq i32 %1505, 1
  br i1 %1506, label %1507, label %1512

1507:                                             ; preds = %1502
  %1508 = load ptr, ptr %79, align 8, !tbaa !5
  %1509 = getelementptr inbounds %struct.lua_TValue, ptr %1508, i32 0, i32 0
  %1510 = load i32, ptr %1509, align 8, !tbaa !19
  %1511 = icmp eq i32 %1510, 0
  br label %1512

1512:                                             ; preds = %1507, %1502
  %1513 = phi i1 [ false, %1502 ], [ %1511, %1507 ]
  br label %1514

1514:                                             ; preds = %1512, %1491
  %1515 = phi i1 [ true, %1491 ], [ %1513, %1512 ]
  %1516 = zext i1 %1515 to i32
  %1517 = load i32, ptr %9, align 4, !tbaa !9
  %1518 = lshr i32 %1517, 14
  %1519 = and i32 %1518, 511
  %1520 = icmp ne i32 %1516, %1519
  br i1 %1520, label %1521, label %1541

1521:                                             ; preds = %1514
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #6
  %1522 = load ptr, ptr %79, align 8, !tbaa !5
  store ptr %1522, ptr %80, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #6
  %1523 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1523, ptr %81, align 8, !tbaa !5
  %1524 = load ptr, ptr %81, align 8, !tbaa !5
  %1525 = getelementptr inbounds %struct.lua_TValue, ptr %1524, i32 0, i32 0
  %1526 = load ptr, ptr %80, align 8, !tbaa !5
  %1527 = getelementptr inbounds %struct.lua_TValue, ptr %1526, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1525, ptr align 8 %1527, i64 8, i1 false), !tbaa.struct !28
  %1528 = load ptr, ptr %80, align 8, !tbaa !5
  %1529 = getelementptr inbounds %struct.lua_TValue, ptr %1528, i32 0, i32 1
  %1530 = load i32, ptr %1529, align 8, !tbaa !29
  %1531 = load ptr, ptr %81, align 8, !tbaa !5
  %1532 = getelementptr inbounds %struct.lua_TValue, ptr %1531, i32 0, i32 1
  store i32 %1530, ptr %1532, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #6
  %1533 = load ptr, ptr %8, align 8, !tbaa !5
  %1534 = load i32, ptr %1533, align 4, !tbaa !9
  %1535 = lshr i32 %1534, 14
  %1536 = and i32 %1535, 262143
  %1537 = sub nsw i32 %1536, 131071
  %1538 = load ptr, ptr %8, align 8, !tbaa !5
  %1539 = sext i32 %1537 to i64
  %1540 = getelementptr inbounds i32, ptr %1538, i64 %1539
  store ptr %1540, ptr %8, align 8, !tbaa !5
  br label %1541

1541:                                             ; preds = %1521, %1514
  %1542 = load ptr, ptr %8, align 8, !tbaa !5
  %1543 = getelementptr inbounds i32, ptr %1542, i32 1
  store ptr %1543, ptr %8, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #6
  br label %2288

1544:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #6
  %1545 = load i32, ptr %9, align 4, !tbaa !9
  %1546 = lshr i32 %1545, 23
  %1547 = and i32 %1546, 511
  store i32 %1547, ptr %82, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #6
  %1548 = load i32, ptr %9, align 4, !tbaa !9
  %1549 = lshr i32 %1548, 14
  %1550 = and i32 %1549, 511
  %1551 = sub nsw i32 %1550, 1
  store i32 %1551, ptr %83, align 4, !tbaa !9
  %1552 = load i32, ptr %82, align 4, !tbaa !9
  %1553 = icmp ne i32 %1552, 0
  br i1 %1553, label %1554, label %1561

1554:                                             ; preds = %1544
  %1555 = load ptr, ptr %10, align 8, !tbaa !5
  %1556 = load i32, ptr %82, align 4, !tbaa !9
  %1557 = sext i32 %1556 to i64
  %1558 = getelementptr inbounds %struct.lua_TValue, ptr %1555, i64 %1557
  %1559 = load ptr, ptr %3, align 8, !tbaa !5
  %1560 = getelementptr inbounds %struct.lua_State, ptr %1559, i32 0, i32 4
  store ptr %1558, ptr %1560, align 8, !tbaa !43
  br label %1561

1561:                                             ; preds = %1554, %1544
  %1562 = load ptr, ptr %8, align 8, !tbaa !5
  %1563 = load ptr, ptr %3, align 8, !tbaa !5
  %1564 = getelementptr inbounds %struct.lua_State, ptr %1563, i32 0, i32 8
  store ptr %1562, ptr %1564, align 8, !tbaa !11
  %1565 = load ptr, ptr %3, align 8, !tbaa !5
  %1566 = load ptr, ptr %10, align 8, !tbaa !5
  %1567 = load i32, ptr %83, align 4, !tbaa !9
  %1568 = call i32 @luaD_precall(ptr noundef %1565, ptr noundef %1566, i32 noundef %1567)
  switch i32 %1568, label %1587 [
    i32 0, label %1569
    i32 1, label %1572
  ]

1569:                                             ; preds = %1561
  %1570 = load i32, ptr %4, align 4, !tbaa !9
  %1571 = add nsw i32 %1570, 1
  store i32 %1571, ptr %4, align 4, !tbaa !9
  store i32 2, ptr %11, align 4
  br label %1588

1572:                                             ; preds = %1561
  %1573 = load i32, ptr %83, align 4, !tbaa !9
  %1574 = icmp sge i32 %1573, 0
  br i1 %1574, label %1575, label %1583

1575:                                             ; preds = %1572
  %1576 = load ptr, ptr %3, align 8, !tbaa !5
  %1577 = getelementptr inbounds %struct.lua_State, ptr %1576, i32 0, i32 7
  %1578 = load ptr, ptr %1577, align 8, !tbaa !16
  %1579 = getelementptr inbounds %struct.CallInfo, ptr %1578, i32 0, i32 2
  %1580 = load ptr, ptr %1579, align 8, !tbaa !44
  %1581 = load ptr, ptr %3, align 8, !tbaa !5
  %1582 = getelementptr inbounds %struct.lua_State, ptr %1581, i32 0, i32 4
  store ptr %1580, ptr %1582, align 8, !tbaa !43
  br label %1583

1583:                                             ; preds = %1575, %1572
  %1584 = load ptr, ptr %3, align 8, !tbaa !5
  %1585 = getelementptr inbounds %struct.lua_State, ptr %1584, i32 0, i32 5
  %1586 = load ptr, ptr %1585, align 8, !tbaa !20
  store ptr %1586, ptr %6, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  br label %1588

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

1588:                                             ; preds = %1587, %1583, %1569
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #6
  br label %2288

1589:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #6
  %1590 = load i32, ptr %9, align 4, !tbaa !9
  %1591 = lshr i32 %1590, 23
  %1592 = and i32 %1591, 511
  store i32 %1592, ptr %84, align 4, !tbaa !9
  %1593 = load i32, ptr %84, align 4, !tbaa !9
  %1594 = icmp ne i32 %1593, 0
  br i1 %1594, label %1595, label %1602

1595:                                             ; preds = %1589
  %1596 = load ptr, ptr %10, align 8, !tbaa !5
  %1597 = load i32, ptr %84, align 4, !tbaa !9
  %1598 = sext i32 %1597 to i64
  %1599 = getelementptr inbounds %struct.lua_TValue, ptr %1596, i64 %1598
  %1600 = load ptr, ptr %3, align 8, !tbaa !5
  %1601 = getelementptr inbounds %struct.lua_State, ptr %1600, i32 0, i32 4
  store ptr %1599, ptr %1601, align 8, !tbaa !43
  br label %1602

1602:                                             ; preds = %1595, %1589
  %1603 = load ptr, ptr %8, align 8, !tbaa !5
  %1604 = load ptr, ptr %3, align 8, !tbaa !5
  %1605 = getelementptr inbounds %struct.lua_State, ptr %1604, i32 0, i32 8
  store ptr %1603, ptr %1605, align 8, !tbaa !11
  %1606 = load ptr, ptr %3, align 8, !tbaa !5
  %1607 = load ptr, ptr %10, align 8, !tbaa !5
  %1608 = call i32 @luaD_precall(ptr noundef %1606, ptr noundef %1607, i32 noundef -1)
  switch i32 %1608, label %1704 [
    i32 0, label %1609
    i32 1, label %1700
  ]

1609:                                             ; preds = %1602
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #6
  %1610 = load ptr, ptr %3, align 8, !tbaa !5
  %1611 = getelementptr inbounds %struct.lua_State, ptr %1610, i32 0, i32 7
  %1612 = load ptr, ptr %1611, align 8, !tbaa !16
  %1613 = getelementptr inbounds %struct.CallInfo, ptr %1612, i64 -1
  store ptr %1613, ptr %85, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #6
  %1614 = load ptr, ptr %85, align 8, !tbaa !5
  %1615 = getelementptr inbounds %struct.CallInfo, ptr %1614, i32 0, i32 1
  %1616 = load ptr, ptr %1615, align 8, !tbaa !17
  store ptr %1616, ptr %87, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #6
  %1617 = load ptr, ptr %85, align 8, !tbaa !5
  %1618 = getelementptr inbounds %struct.CallInfo, ptr %1617, i64 1
  %1619 = getelementptr inbounds %struct.CallInfo, ptr %1618, i32 0, i32 1
  %1620 = load ptr, ptr %1619, align 8, !tbaa !17
  store ptr %1620, ptr %88, align 8, !tbaa !5
  %1621 = load ptr, ptr %3, align 8, !tbaa !5
  %1622 = getelementptr inbounds %struct.lua_State, ptr %1621, i32 0, i32 24
  %1623 = load ptr, ptr %1622, align 8, !tbaa !45
  %1624 = icmp ne ptr %1623, null
  br i1 %1624, label %1625, label %1630

1625:                                             ; preds = %1609
  %1626 = load ptr, ptr %3, align 8, !tbaa !5
  %1627 = load ptr, ptr %85, align 8, !tbaa !5
  %1628 = getelementptr inbounds %struct.CallInfo, ptr %1627, i32 0, i32 0
  %1629 = load ptr, ptr %1628, align 8, !tbaa !46
  call void @luaF_close(ptr noundef %1626, ptr noundef %1629)
  br label %1630

1630:                                             ; preds = %1625, %1609
  %1631 = load ptr, ptr %85, align 8, !tbaa !5
  %1632 = getelementptr inbounds %struct.CallInfo, ptr %1631, i32 0, i32 1
  %1633 = load ptr, ptr %1632, align 8, !tbaa !17
  %1634 = load ptr, ptr %85, align 8, !tbaa !5
  %1635 = getelementptr inbounds %struct.CallInfo, ptr %1634, i64 1
  %1636 = getelementptr inbounds %struct.CallInfo, ptr %1635, i32 0, i32 0
  %1637 = load ptr, ptr %1636, align 8, !tbaa !46
  %1638 = load ptr, ptr %88, align 8, !tbaa !5
  %1639 = ptrtoint ptr %1637 to i64
  %1640 = ptrtoint ptr %1638 to i64
  %1641 = sub i64 %1639, %1640
  %1642 = sdiv exact i64 %1641, 16
  %1643 = getelementptr inbounds %struct.lua_TValue, ptr %1633, i64 %1642
  %1644 = load ptr, ptr %85, align 8, !tbaa !5
  %1645 = getelementptr inbounds %struct.CallInfo, ptr %1644, i32 0, i32 0
  store ptr %1643, ptr %1645, align 8, !tbaa !46
  %1646 = load ptr, ptr %3, align 8, !tbaa !5
  %1647 = getelementptr inbounds %struct.lua_State, ptr %1646, i32 0, i32 5
  store ptr %1643, ptr %1647, align 8, !tbaa !20
  store i32 0, ptr %86, align 4, !tbaa !9
  br label %1648

1648:                                             ; preds = %1675, %1630
  %1649 = load ptr, ptr %88, align 8, !tbaa !5
  %1650 = load i32, ptr %86, align 4, !tbaa !9
  %1651 = sext i32 %1650 to i64
  %1652 = getelementptr inbounds %struct.lua_TValue, ptr %1649, i64 %1651
  %1653 = load ptr, ptr %3, align 8, !tbaa !5
  %1654 = getelementptr inbounds %struct.lua_State, ptr %1653, i32 0, i32 4
  %1655 = load ptr, ptr %1654, align 8, !tbaa !43
  %1656 = icmp ult ptr %1652, %1655
  br i1 %1656, label %1657, label %1678

1657:                                             ; preds = %1648
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #6
  %1658 = load ptr, ptr %88, align 8, !tbaa !5
  %1659 = load i32, ptr %86, align 4, !tbaa !9
  %1660 = sext i32 %1659 to i64
  %1661 = getelementptr inbounds %struct.lua_TValue, ptr %1658, i64 %1660
  store ptr %1661, ptr %89, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #6
  %1662 = load ptr, ptr %87, align 8, !tbaa !5
  %1663 = load i32, ptr %86, align 4, !tbaa !9
  %1664 = sext i32 %1663 to i64
  %1665 = getelementptr inbounds %struct.lua_TValue, ptr %1662, i64 %1664
  store ptr %1665, ptr %90, align 8, !tbaa !5
  %1666 = load ptr, ptr %90, align 8, !tbaa !5
  %1667 = getelementptr inbounds %struct.lua_TValue, ptr %1666, i32 0, i32 0
  %1668 = load ptr, ptr %89, align 8, !tbaa !5
  %1669 = getelementptr inbounds %struct.lua_TValue, ptr %1668, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1667, ptr align 8 %1669, i64 8, i1 false), !tbaa.struct !28
  %1670 = load ptr, ptr %89, align 8, !tbaa !5
  %1671 = getelementptr inbounds %struct.lua_TValue, ptr %1670, i32 0, i32 1
  %1672 = load i32, ptr %1671, align 8, !tbaa !29
  %1673 = load ptr, ptr %90, align 8, !tbaa !5
  %1674 = getelementptr inbounds %struct.lua_TValue, ptr %1673, i32 0, i32 1
  store i32 %1672, ptr %1674, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #6
  br label %1675

1675:                                             ; preds = %1657
  %1676 = load i32, ptr %86, align 4, !tbaa !9
  %1677 = add nsw i32 %1676, 1
  store i32 %1677, ptr %86, align 4, !tbaa !9
  br label %1648, !llvm.loop !47

1678:                                             ; preds = %1648
  %1679 = load ptr, ptr %87, align 8, !tbaa !5
  %1680 = load i32, ptr %86, align 4, !tbaa !9
  %1681 = sext i32 %1680 to i64
  %1682 = getelementptr inbounds %struct.lua_TValue, ptr %1679, i64 %1681
  %1683 = load ptr, ptr %3, align 8, !tbaa !5
  %1684 = getelementptr inbounds %struct.lua_State, ptr %1683, i32 0, i32 4
  store ptr %1682, ptr %1684, align 8, !tbaa !43
  %1685 = load ptr, ptr %85, align 8, !tbaa !5
  %1686 = getelementptr inbounds %struct.CallInfo, ptr %1685, i32 0, i32 2
  store ptr %1682, ptr %1686, align 8, !tbaa !44
  %1687 = load ptr, ptr %3, align 8, !tbaa !5
  %1688 = getelementptr inbounds %struct.lua_State, ptr %1687, i32 0, i32 8
  %1689 = load ptr, ptr %1688, align 8, !tbaa !11
  %1690 = load ptr, ptr %85, align 8, !tbaa !5
  %1691 = getelementptr inbounds %struct.CallInfo, ptr %1690, i32 0, i32 3
  store ptr %1689, ptr %1691, align 8, !tbaa !48
  %1692 = load ptr, ptr %85, align 8, !tbaa !5
  %1693 = getelementptr inbounds %struct.CallInfo, ptr %1692, i32 0, i32 5
  %1694 = load i32, ptr %1693, align 4, !tbaa !49
  %1695 = add nsw i32 %1694, 1
  store i32 %1695, ptr %1693, align 4, !tbaa !49
  %1696 = load ptr, ptr %3, align 8, !tbaa !5
  %1697 = getelementptr inbounds %struct.lua_State, ptr %1696, i32 0, i32 7
  %1698 = load ptr, ptr %1697, align 8, !tbaa !16
  %1699 = getelementptr inbounds %struct.CallInfo, ptr %1698, i32 -1
  store ptr %1699, ptr %1697, align 8, !tbaa !16
  store i32 2, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #6
  br label %1705

1700:                                             ; preds = %1602
  %1701 = load ptr, ptr %3, align 8, !tbaa !5
  %1702 = getelementptr inbounds %struct.lua_State, ptr %1701, i32 0, i32 5
  %1703 = load ptr, ptr %1702, align 8, !tbaa !20
  store ptr %1703, ptr %6, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  br label %1705

1704:                                             ; preds = %1602
  store i32 1, ptr %11, align 4
  br label %1705

1705:                                             ; preds = %1704, %1700, %1678
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #6
  br label %2288

1706:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #6
  %1707 = load i32, ptr %9, align 4, !tbaa !9
  %1708 = lshr i32 %1707, 23
  %1709 = and i32 %1708, 511
  store i32 %1709, ptr %91, align 4, !tbaa !9
  %1710 = load i32, ptr %91, align 4, !tbaa !9
  %1711 = icmp ne i32 %1710, 0
  br i1 %1711, label %1712, label %1720

1712:                                             ; preds = %1706
  %1713 = load ptr, ptr %10, align 8, !tbaa !5
  %1714 = load i32, ptr %91, align 4, !tbaa !9
  %1715 = sext i32 %1714 to i64
  %1716 = getelementptr inbounds %struct.lua_TValue, ptr %1713, i64 %1715
  %1717 = getelementptr inbounds %struct.lua_TValue, ptr %1716, i64 -1
  %1718 = load ptr, ptr %3, align 8, !tbaa !5
  %1719 = getelementptr inbounds %struct.lua_State, ptr %1718, i32 0, i32 4
  store ptr %1717, ptr %1719, align 8, !tbaa !43
  br label %1720

1720:                                             ; preds = %1712, %1706
  %1721 = load ptr, ptr %3, align 8, !tbaa !5
  %1722 = getelementptr inbounds %struct.lua_State, ptr %1721, i32 0, i32 24
  %1723 = load ptr, ptr %1722, align 8, !tbaa !45
  %1724 = icmp ne ptr %1723, null
  br i1 %1724, label %1725, label %1728

1725:                                             ; preds = %1720
  %1726 = load ptr, ptr %3, align 8, !tbaa !5
  %1727 = load ptr, ptr %6, align 8, !tbaa !5
  call void @luaF_close(ptr noundef %1726, ptr noundef %1727)
  br label %1728

1728:                                             ; preds = %1725, %1720
  %1729 = load ptr, ptr %8, align 8, !tbaa !5
  %1730 = load ptr, ptr %3, align 8, !tbaa !5
  %1731 = getelementptr inbounds %struct.lua_State, ptr %1730, i32 0, i32 8
  store ptr %1729, ptr %1731, align 8, !tbaa !11
  %1732 = load ptr, ptr %3, align 8, !tbaa !5
  %1733 = load ptr, ptr %10, align 8, !tbaa !5
  %1734 = call i32 @luaD_poscall(ptr noundef %1732, ptr noundef %1733)
  store i32 %1734, ptr %91, align 4, !tbaa !9
  %1735 = load i32, ptr %4, align 4, !tbaa !9
  %1736 = add nsw i32 %1735, -1
  store i32 %1736, ptr %4, align 4, !tbaa !9
  %1737 = icmp eq i32 %1736, 0
  br i1 %1737, label %1738, label %1739

1738:                                             ; preds = %1728
  store i32 1, ptr %11, align 4
  br label %1751

1739:                                             ; preds = %1728
  %1740 = load i32, ptr %91, align 4, !tbaa !9
  %1741 = icmp ne i32 %1740, 0
  br i1 %1741, label %1742, label %1750

1742:                                             ; preds = %1739
  %1743 = load ptr, ptr %3, align 8, !tbaa !5
  %1744 = getelementptr inbounds %struct.lua_State, ptr %1743, i32 0, i32 7
  %1745 = load ptr, ptr %1744, align 8, !tbaa !16
  %1746 = getelementptr inbounds %struct.CallInfo, ptr %1745, i32 0, i32 2
  %1747 = load ptr, ptr %1746, align 8, !tbaa !44
  %1748 = load ptr, ptr %3, align 8, !tbaa !5
  %1749 = getelementptr inbounds %struct.lua_State, ptr %1748, i32 0, i32 4
  store ptr %1747, ptr %1749, align 8, !tbaa !43
  br label %1750

1750:                                             ; preds = %1742, %1739
  store i32 2, ptr %11, align 4
  br label %1751

1751:                                             ; preds = %1750, %1738
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #6
  br label %2288

1752:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #6
  %1753 = load ptr, ptr %10, align 8, !tbaa !5
  %1754 = getelementptr inbounds %struct.lua_TValue, ptr %1753, i64 2
  %1755 = getelementptr inbounds %struct.lua_TValue, ptr %1754, i32 0, i32 0
  %1756 = load double, ptr %1755, align 8, !tbaa !19
  store double %1756, ptr %92, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #6
  %1757 = load ptr, ptr %10, align 8, !tbaa !5
  %1758 = getelementptr inbounds %struct.lua_TValue, ptr %1757, i32 0, i32 0
  %1759 = load double, ptr %1758, align 8, !tbaa !19
  %1760 = load double, ptr %92, align 8, !tbaa !41
  %1761 = fadd double %1759, %1760
  store double %1761, ptr %93, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #6
  %1762 = load ptr, ptr %10, align 8, !tbaa !5
  %1763 = getelementptr inbounds %struct.lua_TValue, ptr %1762, i64 1
  %1764 = getelementptr inbounds %struct.lua_TValue, ptr %1763, i32 0, i32 0
  %1765 = load double, ptr %1764, align 8, !tbaa !19
  store double %1765, ptr %94, align 8, !tbaa !41
  %1766 = load double, ptr %92, align 8, !tbaa !41
  %1767 = fcmp olt double 0.000000e+00, %1766
  br i1 %1767, label %1768, label %1772

1768:                                             ; preds = %1752
  %1769 = load double, ptr %93, align 8, !tbaa !41
  %1770 = load double, ptr %94, align 8, !tbaa !41
  %1771 = fcmp ole double %1769, %1770
  br i1 %1771, label %1776, label %1797

1772:                                             ; preds = %1752
  %1773 = load double, ptr %94, align 8, !tbaa !41
  %1774 = load double, ptr %93, align 8, !tbaa !41
  %1775 = fcmp ole double %1773, %1774
  br i1 %1775, label %1776, label %1797

1776:                                             ; preds = %1772, %1768
  %1777 = load i32, ptr %9, align 4, !tbaa !9
  %1778 = lshr i32 %1777, 14
  %1779 = and i32 %1778, 262143
  %1780 = sub nsw i32 %1779, 131071
  %1781 = load ptr, ptr %8, align 8, !tbaa !5
  %1782 = sext i32 %1780 to i64
  %1783 = getelementptr inbounds i32, ptr %1781, i64 %1782
  store ptr %1783, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #6
  %1784 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1784, ptr %95, align 8, !tbaa !5
  %1785 = load double, ptr %93, align 8, !tbaa !41
  %1786 = load ptr, ptr %95, align 8, !tbaa !5
  %1787 = getelementptr inbounds %struct.lua_TValue, ptr %1786, i32 0, i32 0
  store double %1785, ptr %1787, align 8, !tbaa !19
  %1788 = load ptr, ptr %95, align 8, !tbaa !5
  %1789 = getelementptr inbounds %struct.lua_TValue, ptr %1788, i32 0, i32 1
  store i32 3, ptr %1789, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #6
  %1790 = load ptr, ptr %10, align 8, !tbaa !5
  %1791 = getelementptr inbounds %struct.lua_TValue, ptr %1790, i64 3
  store ptr %1791, ptr %96, align 8, !tbaa !5
  %1792 = load double, ptr %93, align 8, !tbaa !41
  %1793 = load ptr, ptr %96, align 8, !tbaa !5
  %1794 = getelementptr inbounds %struct.lua_TValue, ptr %1793, i32 0, i32 0
  store double %1792, ptr %1794, align 8, !tbaa !19
  %1795 = load ptr, ptr %96, align 8, !tbaa !5
  %1796 = getelementptr inbounds %struct.lua_TValue, ptr %1795, i32 0, i32 1
  store i32 3, ptr %1796, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #6
  br label %1797

1797:                                             ; preds = %1776, %1772, %1768
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #6
  br label %2288

1798:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #6
  %1799 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1799, ptr %97, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #6
  %1800 = load ptr, ptr %10, align 8, !tbaa !5
  %1801 = getelementptr inbounds %struct.lua_TValue, ptr %1800, i64 1
  store ptr %1801, ptr %98, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #6
  %1802 = load ptr, ptr %10, align 8, !tbaa !5
  %1803 = getelementptr inbounds %struct.lua_TValue, ptr %1802, i64 2
  store ptr %1803, ptr %99, align 8, !tbaa !5
  %1804 = load ptr, ptr %8, align 8, !tbaa !5
  %1805 = load ptr, ptr %3, align 8, !tbaa !5
  %1806 = getelementptr inbounds %struct.lua_State, ptr %1805, i32 0, i32 8
  store ptr %1804, ptr %1806, align 8, !tbaa !11
  %1807 = load ptr, ptr %97, align 8, !tbaa !5
  %1808 = getelementptr inbounds %struct.lua_TValue, ptr %1807, i32 0, i32 1
  %1809 = load i32, ptr %1808, align 8, !tbaa !29
  %1810 = icmp eq i32 %1809, 3
  br i1 %1810, label %1818, label %1811

1811:                                             ; preds = %1798
  %1812 = load ptr, ptr %97, align 8, !tbaa !5
  %1813 = load ptr, ptr %10, align 8, !tbaa !5
  %1814 = call ptr @luaV_tonumber(ptr noundef %1812, ptr noundef %1813)
  store ptr %1814, ptr %97, align 8, !tbaa !5
  %1815 = icmp ne ptr %1814, null
  br i1 %1815, label %1818, label %1816

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

1818:                                             ; preds = %1811, %1798
  %1819 = load ptr, ptr %98, align 8, !tbaa !5
  %1820 = getelementptr inbounds %struct.lua_TValue, ptr %1819, i32 0, i32 1
  %1821 = load i32, ptr %1820, align 8, !tbaa !29
  %1822 = icmp eq i32 %1821, 3
  br i1 %1822, label %1831, label %1823

1823:                                             ; preds = %1818
  %1824 = load ptr, ptr %98, align 8, !tbaa !5
  %1825 = load ptr, ptr %10, align 8, !tbaa !5
  %1826 = getelementptr inbounds %struct.lua_TValue, ptr %1825, i64 1
  %1827 = call ptr @luaV_tonumber(ptr noundef %1824, ptr noundef %1826)
  store ptr %1827, ptr %98, align 8, !tbaa !5
  %1828 = icmp ne ptr %1827, null
  br i1 %1828, label %1831, label %1829

1829:                                             ; preds = %1823
  %1830 = load ptr, ptr %3, align 8, !tbaa !5
  call void (ptr, ptr, ...) @luaG_runerror(ptr noundef %1830, ptr noundef @.str.7)
  br label %1845

1831:                                             ; preds = %1823, %1818
  %1832 = load ptr, ptr %99, align 8, !tbaa !5
  %1833 = getelementptr inbounds %struct.lua_TValue, ptr %1832, i32 0, i32 1
  %1834 = load i32, ptr %1833, align 8, !tbaa !29
  %1835 = icmp eq i32 %1834, 3
  br i1 %1835, label %1844, label %1836

1836:                                             ; preds = %1831
  %1837 = load ptr, ptr %99, align 8, !tbaa !5
  %1838 = load ptr, ptr %10, align 8, !tbaa !5
  %1839 = getelementptr inbounds %struct.lua_TValue, ptr %1838, i64 2
  %1840 = call ptr @luaV_tonumber(ptr noundef %1837, ptr noundef %1839)
  store ptr %1840, ptr %99, align 8, !tbaa !5
  %1841 = icmp ne ptr %1840, null
  br i1 %1841, label %1844, label %1842

1842:                                             ; preds = %1836
  %1843 = load ptr, ptr %3, align 8, !tbaa !5
  call void (ptr, ptr, ...) @luaG_runerror(ptr noundef %1843, ptr noundef @.str.8)
  br label %1844

1844:                                             ; preds = %1842, %1836, %1831
  br label %1845

1845:                                             ; preds = %1844, %1829
  br label %1846

1846:                                             ; preds = %1845, %1816
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #6
  %1847 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1847, ptr %100, align 8, !tbaa !5
  %1848 = load ptr, ptr %10, align 8, !tbaa !5
  %1849 = getelementptr inbounds %struct.lua_TValue, ptr %1848, i32 0, i32 0
  %1850 = load double, ptr %1849, align 8, !tbaa !19
  %1851 = load ptr, ptr %99, align 8, !tbaa !5
  %1852 = getelementptr inbounds %struct.lua_TValue, ptr %1851, i32 0, i32 0
  %1853 = load double, ptr %1852, align 8, !tbaa !19
  %1854 = fsub double %1850, %1853
  %1855 = load ptr, ptr %100, align 8, !tbaa !5
  %1856 = getelementptr inbounds %struct.lua_TValue, ptr %1855, i32 0, i32 0
  store double %1854, ptr %1856, align 8, !tbaa !19
  %1857 = load ptr, ptr %100, align 8, !tbaa !5
  %1858 = getelementptr inbounds %struct.lua_TValue, ptr %1857, i32 0, i32 1
  store i32 3, ptr %1858, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #6
  %1859 = load i32, ptr %9, align 4, !tbaa !9
  %1860 = lshr i32 %1859, 14
  %1861 = and i32 %1860, 262143
  %1862 = sub nsw i32 %1861, 131071
  %1863 = load ptr, ptr %8, align 8, !tbaa !5
  %1864 = sext i32 %1862 to i64
  %1865 = getelementptr inbounds i32, ptr %1863, i64 %1864
  store ptr %1865, ptr %8, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #6
  br label %2288

1866:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #6
  %1867 = load ptr, ptr %10, align 8, !tbaa !5
  %1868 = getelementptr inbounds %struct.lua_TValue, ptr %1867, i64 3
  store ptr %1868, ptr %101, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #6
  %1869 = load ptr, ptr %10, align 8, !tbaa !5
  %1870 = getelementptr inbounds %struct.lua_TValue, ptr %1869, i64 2
  store ptr %1870, ptr %102, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #6
  %1871 = load ptr, ptr %101, align 8, !tbaa !5
  %1872 = getelementptr inbounds %struct.lua_TValue, ptr %1871, i64 2
  store ptr %1872, ptr %103, align 8, !tbaa !5
  %1873 = load ptr, ptr %103, align 8, !tbaa !5
  %1874 = getelementptr inbounds %struct.lua_TValue, ptr %1873, i32 0, i32 0
  %1875 = load ptr, ptr %102, align 8, !tbaa !5
  %1876 = getelementptr inbounds %struct.lua_TValue, ptr %1875, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1874, ptr align 8 %1876, i64 8, i1 false), !tbaa.struct !28
  %1877 = load ptr, ptr %102, align 8, !tbaa !5
  %1878 = getelementptr inbounds %struct.lua_TValue, ptr %1877, i32 0, i32 1
  %1879 = load i32, ptr %1878, align 8, !tbaa !29
  %1880 = load ptr, ptr %103, align 8, !tbaa !5
  %1881 = getelementptr inbounds %struct.lua_TValue, ptr %1880, i32 0, i32 1
  store i32 %1879, ptr %1881, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #6
  %1882 = load ptr, ptr %10, align 8, !tbaa !5
  %1883 = getelementptr inbounds %struct.lua_TValue, ptr %1882, i64 1
  store ptr %1883, ptr %104, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #6
  %1884 = load ptr, ptr %101, align 8, !tbaa !5
  %1885 = getelementptr inbounds %struct.lua_TValue, ptr %1884, i64 1
  store ptr %1885, ptr %105, align 8, !tbaa !5
  %1886 = load ptr, ptr %105, align 8, !tbaa !5
  %1887 = getelementptr inbounds %struct.lua_TValue, ptr %1886, i32 0, i32 0
  %1888 = load ptr, ptr %104, align 8, !tbaa !5
  %1889 = getelementptr inbounds %struct.lua_TValue, ptr %1888, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1887, ptr align 8 %1889, i64 8, i1 false), !tbaa.struct !28
  %1890 = load ptr, ptr %104, align 8, !tbaa !5
  %1891 = getelementptr inbounds %struct.lua_TValue, ptr %1890, i32 0, i32 1
  %1892 = load i32, ptr %1891, align 8, !tbaa !29
  %1893 = load ptr, ptr %105, align 8, !tbaa !5
  %1894 = getelementptr inbounds %struct.lua_TValue, ptr %1893, i32 0, i32 1
  store i32 %1892, ptr %1894, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #6
  %1895 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1895, ptr %106, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #6
  %1896 = load ptr, ptr %101, align 8, !tbaa !5
  store ptr %1896, ptr %107, align 8, !tbaa !5
  %1897 = load ptr, ptr %107, align 8, !tbaa !5
  %1898 = getelementptr inbounds %struct.lua_TValue, ptr %1897, i32 0, i32 0
  %1899 = load ptr, ptr %106, align 8, !tbaa !5
  %1900 = getelementptr inbounds %struct.lua_TValue, ptr %1899, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1898, ptr align 8 %1900, i64 8, i1 false), !tbaa.struct !28
  %1901 = load ptr, ptr %106, align 8, !tbaa !5
  %1902 = getelementptr inbounds %struct.lua_TValue, ptr %1901, i32 0, i32 1
  %1903 = load i32, ptr %1902, align 8, !tbaa !29
  %1904 = load ptr, ptr %107, align 8, !tbaa !5
  %1905 = getelementptr inbounds %struct.lua_TValue, ptr %1904, i32 0, i32 1
  store i32 %1903, ptr %1905, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #6
  %1906 = load ptr, ptr %101, align 8, !tbaa !5
  %1907 = getelementptr inbounds %struct.lua_TValue, ptr %1906, i64 3
  %1908 = load ptr, ptr %3, align 8, !tbaa !5
  %1909 = getelementptr inbounds %struct.lua_State, ptr %1908, i32 0, i32 4
  store ptr %1907, ptr %1909, align 8, !tbaa !43
  %1910 = load ptr, ptr %8, align 8, !tbaa !5
  %1911 = load ptr, ptr %3, align 8, !tbaa !5
  %1912 = getelementptr inbounds %struct.lua_State, ptr %1911, i32 0, i32 8
  store ptr %1910, ptr %1912, align 8, !tbaa !11
  %1913 = load ptr, ptr %3, align 8, !tbaa !5
  %1914 = load ptr, ptr %101, align 8, !tbaa !5
  %1915 = load i32, ptr %9, align 4, !tbaa !9
  %1916 = lshr i32 %1915, 14
  %1917 = and i32 %1916, 511
  call void @luaD_call(ptr noundef %1913, ptr noundef %1914, i32 noundef %1917)
  %1918 = load ptr, ptr %3, align 8, !tbaa !5
  %1919 = getelementptr inbounds %struct.lua_State, ptr %1918, i32 0, i32 5
  %1920 = load ptr, ptr %1919, align 8, !tbaa !20
  store ptr %1920, ptr %6, align 8, !tbaa !5
  %1921 = load ptr, ptr %3, align 8, !tbaa !5
  %1922 = getelementptr inbounds %struct.lua_State, ptr %1921, i32 0, i32 7
  %1923 = load ptr, ptr %1922, align 8, !tbaa !16
  %1924 = getelementptr inbounds %struct.CallInfo, ptr %1923, i32 0, i32 2
  %1925 = load ptr, ptr %1924, align 8, !tbaa !44
  %1926 = load ptr, ptr %3, align 8, !tbaa !5
  %1927 = getelementptr inbounds %struct.lua_State, ptr %1926, i32 0, i32 4
  store ptr %1925, ptr %1927, align 8, !tbaa !43
  %1928 = load ptr, ptr %6, align 8, !tbaa !5
  %1929 = load i32, ptr %9, align 4, !tbaa !9
  %1930 = lshr i32 %1929, 6
  %1931 = and i32 %1930, 255
  %1932 = sext i32 %1931 to i64
  %1933 = getelementptr inbounds %struct.lua_TValue, ptr %1928, i64 %1932
  %1934 = getelementptr inbounds %struct.lua_TValue, ptr %1933, i64 3
  store ptr %1934, ptr %101, align 8, !tbaa !5
  %1935 = load ptr, ptr %101, align 8, !tbaa !5
  %1936 = getelementptr inbounds %struct.lua_TValue, ptr %1935, i32 0, i32 1
  %1937 = load i32, ptr %1936, align 8, !tbaa !29
  %1938 = icmp eq i32 %1937, 0
  br i1 %1938, label %1960, label %1939

1939:                                             ; preds = %1866
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #6
  %1940 = load ptr, ptr %101, align 8, !tbaa !5
  store ptr %1940, ptr %108, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #6
  %1941 = load ptr, ptr %101, align 8, !tbaa !5
  %1942 = getelementptr inbounds %struct.lua_TValue, ptr %1941, i64 -1
  store ptr %1942, ptr %109, align 8, !tbaa !5
  %1943 = load ptr, ptr %109, align 8, !tbaa !5
  %1944 = getelementptr inbounds %struct.lua_TValue, ptr %1943, i32 0, i32 0
  %1945 = load ptr, ptr %108, align 8, !tbaa !5
  %1946 = getelementptr inbounds %struct.lua_TValue, ptr %1945, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1944, ptr align 8 %1946, i64 8, i1 false), !tbaa.struct !28
  %1947 = load ptr, ptr %108, align 8, !tbaa !5
  %1948 = getelementptr inbounds %struct.lua_TValue, ptr %1947, i32 0, i32 1
  %1949 = load i32, ptr %1948, align 8, !tbaa !29
  %1950 = load ptr, ptr %109, align 8, !tbaa !5
  %1951 = getelementptr inbounds %struct.lua_TValue, ptr %1950, i32 0, i32 1
  store i32 %1949, ptr %1951, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #6
  %1952 = load ptr, ptr %8, align 8, !tbaa !5
  %1953 = load i32, ptr %1952, align 4, !tbaa !9
  %1954 = lshr i32 %1953, 14
  %1955 = and i32 %1954, 262143
  %1956 = sub nsw i32 %1955, 131071
  %1957 = load ptr, ptr %8, align 8, !tbaa !5
  %1958 = sext i32 %1956 to i64
  %1959 = getelementptr inbounds i32, ptr %1957, i64 %1958
  store ptr %1959, ptr %8, align 8, !tbaa !5
  br label %1960

1960:                                             ; preds = %1939, %1866
  %1961 = load ptr, ptr %8, align 8, !tbaa !5
  %1962 = getelementptr inbounds i32, ptr %1961, i32 1
  store ptr %1962, ptr %8, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #6
  br label %2288

1963:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #6
  %1964 = load i32, ptr %9, align 4, !tbaa !9
  %1965 = lshr i32 %1964, 23
  %1966 = and i32 %1965, 511
  store i32 %1966, ptr %110, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #6
  %1967 = load i32, ptr %9, align 4, !tbaa !9
  %1968 = lshr i32 %1967, 14
  %1969 = and i32 %1968, 511
  store i32 %1969, ptr %111, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #6
  %1970 = load i32, ptr %110, align 4, !tbaa !9
  %1971 = icmp eq i32 %1970, 0
  br i1 %1971, label %1972, label %1990

1972:                                             ; preds = %1963
  %1973 = load ptr, ptr %3, align 8, !tbaa !5
  %1974 = getelementptr inbounds %struct.lua_State, ptr %1973, i32 0, i32 4
  %1975 = load ptr, ptr %1974, align 8, !tbaa !43
  %1976 = load ptr, ptr %10, align 8, !tbaa !5
  %1977 = ptrtoint ptr %1975 to i64
  %1978 = ptrtoint ptr %1976 to i64
  %1979 = sub i64 %1977, %1978
  %1980 = sdiv exact i64 %1979, 16
  %1981 = trunc i64 %1980 to i32
  %1982 = sub nsw i32 %1981, 1
  store i32 %1982, ptr %110, align 4, !tbaa !9
  %1983 = load ptr, ptr %3, align 8, !tbaa !5
  %1984 = getelementptr inbounds %struct.lua_State, ptr %1983, i32 0, i32 7
  %1985 = load ptr, ptr %1984, align 8, !tbaa !16
  %1986 = getelementptr inbounds %struct.CallInfo, ptr %1985, i32 0, i32 2
  %1987 = load ptr, ptr %1986, align 8, !tbaa !44
  %1988 = load ptr, ptr %3, align 8, !tbaa !5
  %1989 = getelementptr inbounds %struct.lua_State, ptr %1988, i32 0, i32 4
  store ptr %1987, ptr %1989, align 8, !tbaa !43
  br label %1990

1990:                                             ; preds = %1972, %1963
  %1991 = load i32, ptr %111, align 4, !tbaa !9
  %1992 = icmp eq i32 %1991, 0
  br i1 %1992, label %1993, label %1997

1993:                                             ; preds = %1990
  %1994 = load ptr, ptr %8, align 8, !tbaa !5
  %1995 = getelementptr inbounds i32, ptr %1994, i32 1
  store ptr %1995, ptr %8, align 8, !tbaa !5
  %1996 = load i32, ptr %1994, align 4, !tbaa !9
  store i32 %1996, ptr %111, align 4, !tbaa !9
  br label %1997

1997:                                             ; preds = %1993, %1990
  %1998 = load ptr, ptr %10, align 8, !tbaa !5
  %1999 = getelementptr inbounds %struct.lua_TValue, ptr %1998, i32 0, i32 1
  %2000 = load i32, ptr %1999, align 8, !tbaa !29
  %2001 = icmp eq i32 %2000, 5
  br i1 %2001, label %2003, label %2002

2002:                                             ; preds = %1997
  store i32 5, ptr %11, align 4
  br label %2073

2003:                                             ; preds = %1997
  %2004 = load ptr, ptr %10, align 8, !tbaa !5
  %2005 = getelementptr inbounds %struct.lua_TValue, ptr %2004, i32 0, i32 0
  %2006 = load ptr, ptr %2005, align 8, !tbaa !19
  store ptr %2006, ptr %113, align 8, !tbaa !5
  %2007 = load i32, ptr %111, align 4, !tbaa !9
  %2008 = sub nsw i32 %2007, 1
  %2009 = mul nsw i32 %2008, 50
  %2010 = load i32, ptr %110, align 4, !tbaa !9
  %2011 = add nsw i32 %2009, %2010
  store i32 %2011, ptr %112, align 4, !tbaa !9
  %2012 = load i32, ptr %112, align 4, !tbaa !9
  %2013 = load ptr, ptr %113, align 8, !tbaa !5
  %2014 = getelementptr inbounds %struct.Table, ptr %2013, i32 0, i32 10
  %2015 = load i32, ptr %2014, align 8, !tbaa !50
  %2016 = icmp sgt i32 %2012, %2015
  br i1 %2016, label %2017, label %2021

2017:                                             ; preds = %2003
  %2018 = load ptr, ptr %3, align 8, !tbaa !5
  %2019 = load ptr, ptr %113, align 8, !tbaa !5
  %2020 = load i32, ptr %112, align 4, !tbaa !9
  call void @luaH_resizearray(ptr noundef %2018, ptr noundef %2019, i32 noundef %2020)
  br label %2021

2021:                                             ; preds = %2017, %2003
  br label %2022

2022:                                             ; preds = %2069, %2021
  %2023 = load i32, ptr %110, align 4, !tbaa !9
  %2024 = icmp sgt i32 %2023, 0
  br i1 %2024, label %2025, label %2072

2025:                                             ; preds = %2022
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #6
  %2026 = load ptr, ptr %10, align 8, !tbaa !5
  %2027 = load i32, ptr %110, align 4, !tbaa !9
  %2028 = sext i32 %2027 to i64
  %2029 = getelementptr inbounds %struct.lua_TValue, ptr %2026, i64 %2028
  store ptr %2029, ptr %114, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #6
  %2030 = load ptr, ptr %114, align 8, !tbaa !5
  store ptr %2030, ptr %115, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #6
  %2031 = load ptr, ptr %3, align 8, !tbaa !5
  %2032 = load ptr, ptr %113, align 8, !tbaa !5
  %2033 = load i32, ptr %112, align 4, !tbaa !9
  %2034 = add nsw i32 %2033, -1
  store i32 %2034, ptr %112, align 4, !tbaa !9
  %2035 = call ptr @luaH_setnum(ptr noundef %2031, ptr noundef %2032, i32 noundef %2033)
  store ptr %2035, ptr %116, align 8, !tbaa !5
  %2036 = load ptr, ptr %116, align 8, !tbaa !5
  %2037 = getelementptr inbounds %struct.lua_TValue, ptr %2036, i32 0, i32 0
  %2038 = load ptr, ptr %115, align 8, !tbaa !5
  %2039 = getelementptr inbounds %struct.lua_TValue, ptr %2038, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2037, ptr align 8 %2039, i64 8, i1 false), !tbaa.struct !28
  %2040 = load ptr, ptr %115, align 8, !tbaa !5
  %2041 = getelementptr inbounds %struct.lua_TValue, ptr %2040, i32 0, i32 1
  %2042 = load i32, ptr %2041, align 8, !tbaa !29
  %2043 = load ptr, ptr %116, align 8, !tbaa !5
  %2044 = getelementptr inbounds %struct.lua_TValue, ptr %2043, i32 0, i32 1
  store i32 %2042, ptr %2044, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #6
  %2045 = load ptr, ptr %114, align 8, !tbaa !5
  %2046 = getelementptr inbounds %struct.lua_TValue, ptr %2045, i32 0, i32 1
  %2047 = load i32, ptr %2046, align 8, !tbaa !29
  %2048 = icmp sge i32 %2047, 4
  br i1 %2048, label %2049, label %2068

2049:                                             ; preds = %2025
  %2050 = load ptr, ptr %114, align 8, !tbaa !5
  %2051 = getelementptr inbounds %struct.lua_TValue, ptr %2050, i32 0, i32 0
  %2052 = load ptr, ptr %2051, align 8, !tbaa !19
  %2053 = getelementptr inbounds %struct.GCheader, ptr %2052, i32 0, i32 2
  %2054 = load i8, ptr %2053, align 1, !tbaa !19
  %2055 = zext i8 %2054 to i32
  %2056 = and i32 %2055, 3
  %2057 = icmp ne i32 %2056, 0
  br i1 %2057, label %2058, label %2068

2058:                                             ; preds = %2049
  %2059 = load ptr, ptr %113, align 8, !tbaa !5
  %2060 = getelementptr inbounds %struct.GCheader, ptr %2059, i32 0, i32 2
  %2061 = load i8, ptr %2060, align 1, !tbaa !19
  %2062 = zext i8 %2061 to i32
  %2063 = and i32 %2062, 4
  %2064 = icmp ne i32 %2063, 0
  br i1 %2064, label %2065, label %2068

2065:                                             ; preds = %2058
  %2066 = load ptr, ptr %3, align 8, !tbaa !5
  %2067 = load ptr, ptr %113, align 8, !tbaa !5
  call void @luaC_barrierback(ptr noundef %2066, ptr noundef %2067)
  br label %2068

2068:                                             ; preds = %2065, %2058, %2049, %2025
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #6
  br label %2069

2069:                                             ; preds = %2068
  %2070 = load i32, ptr %110, align 4, !tbaa !9
  %2071 = add nsw i32 %2070, -1
  store i32 %2071, ptr %110, align 4, !tbaa !9
  br label %2022, !llvm.loop !52

2072:                                             ; preds = %2022
  store i32 4, ptr %11, align 4
  br label %2073

2073:                                             ; preds = %2072, %2002
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #6
  %2074 = load i32, ptr %11, align 4
  switch i32 %2074, label %2288 [
    i32 5, label %2287
  ]

2075:                                             ; preds = %187
  %2076 = load ptr, ptr %3, align 8, !tbaa !5
  %2077 = load ptr, ptr %10, align 8, !tbaa !5
  call void @luaF_close(ptr noundef %2076, ptr noundef %2077)
  store i32 4, ptr %11, align 4
  br label %2288

2078:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %119) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #6
  %2079 = load ptr, ptr %5, align 8, !tbaa !5
  %2080 = getelementptr inbounds %struct.LClosure, ptr %2079, i32 0, i32 7
  %2081 = load ptr, ptr %2080, align 8, !tbaa !21
  %2082 = getelementptr inbounds %struct.Proto, ptr %2081, i32 0, i32 5
  %2083 = load ptr, ptr %2082, align 8, !tbaa !53
  %2084 = load i32, ptr %9, align 4, !tbaa !9
  %2085 = lshr i32 %2084, 14
  %2086 = and i32 %2085, 262143
  %2087 = sext i32 %2086 to i64
  %2088 = getelementptr inbounds ptr, ptr %2083, i64 %2087
  %2089 = load ptr, ptr %2088, align 8, !tbaa !5
  store ptr %2089, ptr %117, align 8, !tbaa !5
  %2090 = load ptr, ptr %117, align 8, !tbaa !5
  %2091 = getelementptr inbounds %struct.Proto, ptr %2090, i32 0, i32 19
  %2092 = load i8, ptr %2091, align 8, !tbaa !54
  %2093 = zext i8 %2092 to i32
  store i32 %2093, ptr %119, align 4, !tbaa !9
  %2094 = load ptr, ptr %3, align 8, !tbaa !5
  %2095 = load i32, ptr %119, align 4, !tbaa !9
  %2096 = load ptr, ptr %5, align 8, !tbaa !5
  %2097 = getelementptr inbounds %struct.LClosure, ptr %2096, i32 0, i32 6
  %2098 = load ptr, ptr %2097, align 8, !tbaa !34
  %2099 = call ptr @luaF_newLclosure(ptr noundef %2094, i32 noundef %2095, ptr noundef %2098)
  store ptr %2099, ptr %118, align 8, !tbaa !5
  %2100 = load ptr, ptr %117, align 8, !tbaa !5
  %2101 = load ptr, ptr %118, align 8, !tbaa !5
  %2102 = getelementptr inbounds %struct.LClosure, ptr %2101, i32 0, i32 7
  store ptr %2100, ptr %2102, align 8, !tbaa !19
  store i32 0, ptr %120, align 4, !tbaa !9
  br label %2103

2103:                                             ; preds = %2144, %2078
  %2104 = load i32, ptr %120, align 4, !tbaa !9
  %2105 = load i32, ptr %119, align 4, !tbaa !9
  %2106 = icmp slt i32 %2104, %2105
  br i1 %2106, label %2107, label %2149

2107:                                             ; preds = %2103
  %2108 = load ptr, ptr %8, align 8, !tbaa !5
  %2109 = load i32, ptr %2108, align 4, !tbaa !9
  %2110 = lshr i32 %2109, 0
  %2111 = and i32 %2110, 63
  %2112 = icmp eq i32 %2111, 4
  br i1 %2112, label %2113, label %2128

2113:                                             ; preds = %2107
  %2114 = load ptr, ptr %5, align 8, !tbaa !5
  %2115 = getelementptr inbounds %struct.LClosure, ptr %2114, i32 0, i32 8
  %2116 = load ptr, ptr %8, align 8, !tbaa !5
  %2117 = load i32, ptr %2116, align 4, !tbaa !9
  %2118 = lshr i32 %2117, 23
  %2119 = and i32 %2118, 511
  %2120 = sext i32 %2119 to i64
  %2121 = getelementptr inbounds [1 x ptr], ptr %2115, i64 0, i64 %2120
  %2122 = load ptr, ptr %2121, align 8, !tbaa !5
  %2123 = load ptr, ptr %118, align 8, !tbaa !5
  %2124 = getelementptr inbounds %struct.LClosure, ptr %2123, i32 0, i32 8
  %2125 = load i32, ptr %120, align 4, !tbaa !9
  %2126 = sext i32 %2125 to i64
  %2127 = getelementptr inbounds [1 x ptr], ptr %2124, i64 0, i64 %2126
  store ptr %2122, ptr %2127, align 8, !tbaa !19
  br label %2143

2128:                                             ; preds = %2107
  %2129 = load ptr, ptr %3, align 8, !tbaa !5
  %2130 = load ptr, ptr %6, align 8, !tbaa !5
  %2131 = load ptr, ptr %8, align 8, !tbaa !5
  %2132 = load i32, ptr %2131, align 4, !tbaa !9
  %2133 = lshr i32 %2132, 23
  %2134 = and i32 %2133, 511
  %2135 = sext i32 %2134 to i64
  %2136 = getelementptr inbounds %struct.lua_TValue, ptr %2130, i64 %2135
  %2137 = call ptr @luaF_findupval(ptr noundef %2129, ptr noundef %2136)
  %2138 = load ptr, ptr %118, align 8, !tbaa !5
  %2139 = getelementptr inbounds %struct.LClosure, ptr %2138, i32 0, i32 8
  %2140 = load i32, ptr %120, align 4, !tbaa !9
  %2141 = sext i32 %2140 to i64
  %2142 = getelementptr inbounds [1 x ptr], ptr %2139, i64 0, i64 %2141
  store ptr %2137, ptr %2142, align 8, !tbaa !19
  br label %2143

2143:                                             ; preds = %2128, %2113
  br label %2144

2144:                                             ; preds = %2143
  %2145 = load i32, ptr %120, align 4, !tbaa !9
  %2146 = add nsw i32 %2145, 1
  store i32 %2146, ptr %120, align 4, !tbaa !9
  %2147 = load ptr, ptr %8, align 8, !tbaa !5
  %2148 = getelementptr inbounds i32, ptr %2147, i32 1
  store ptr %2148, ptr %8, align 8, !tbaa !5
  br label %2103, !llvm.loop !55

2149:                                             ; preds = %2103
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #6
  %2150 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %2150, ptr %121, align 8, !tbaa !5
  %2151 = load ptr, ptr %118, align 8, !tbaa !5
  %2152 = load ptr, ptr %121, align 8, !tbaa !5
  %2153 = getelementptr inbounds %struct.lua_TValue, ptr %2152, i32 0, i32 0
  store ptr %2151, ptr %2153, align 8, !tbaa !19
  %2154 = load ptr, ptr %121, align 8, !tbaa !5
  %2155 = getelementptr inbounds %struct.lua_TValue, ptr %2154, i32 0, i32 1
  store i32 6, ptr %2155, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #6
  %2156 = load ptr, ptr %8, align 8, !tbaa !5
  %2157 = load ptr, ptr %3, align 8, !tbaa !5
  %2158 = getelementptr inbounds %struct.lua_State, ptr %2157, i32 0, i32 8
  store ptr %2156, ptr %2158, align 8, !tbaa !11
  %2159 = load ptr, ptr %3, align 8, !tbaa !5
  %2160 = getelementptr inbounds %struct.lua_State, ptr %2159, i32 0, i32 6
  %2161 = load ptr, ptr %2160, align 8, !tbaa !35
  %2162 = getelementptr inbounds %struct.global_State, ptr %2161, i32 0, i32 14
  %2163 = load i64, ptr %2162, align 8, !tbaa !36
  %2164 = load ptr, ptr %3, align 8, !tbaa !5
  %2165 = getelementptr inbounds %struct.lua_State, ptr %2164, i32 0, i32 6
  %2166 = load ptr, ptr %2165, align 8, !tbaa !35
  %2167 = getelementptr inbounds %struct.global_State, ptr %2166, i32 0, i32 13
  %2168 = load i64, ptr %2167, align 8, !tbaa !40
  %2169 = icmp uge i64 %2163, %2168
  br i1 %2169, label %2170, label %2172

2170:                                             ; preds = %2149
  %2171 = load ptr, ptr %3, align 8, !tbaa !5
  call void @luaC_step(ptr noundef %2171)
  br label %2172

2172:                                             ; preds = %2170, %2149
  %2173 = load ptr, ptr %3, align 8, !tbaa !5
  %2174 = getelementptr inbounds %struct.lua_State, ptr %2173, i32 0, i32 5
  %2175 = load ptr, ptr %2174, align 8, !tbaa !20
  store ptr %2175, ptr %6, align 8, !tbaa !5
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #6
  br label %2288

2176:                                             ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %122) #6
  %2177 = load i32, ptr %9, align 4, !tbaa !9
  %2178 = lshr i32 %2177, 23
  %2179 = and i32 %2178, 511
  %2180 = sub nsw i32 %2179, 1
  store i32 %2180, ptr %122, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %123) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #6
  %2181 = load ptr, ptr %3, align 8, !tbaa !5
  %2182 = getelementptr inbounds %struct.lua_State, ptr %2181, i32 0, i32 7
  %2183 = load ptr, ptr %2182, align 8, !tbaa !16
  store ptr %2183, ptr %124, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %125) #6
  %2184 = load ptr, ptr %124, align 8, !tbaa !5
  %2185 = getelementptr inbounds %struct.CallInfo, ptr %2184, i32 0, i32 0
  %2186 = load ptr, ptr %2185, align 8, !tbaa !46
  %2187 = load ptr, ptr %124, align 8, !tbaa !5
  %2188 = getelementptr inbounds %struct.CallInfo, ptr %2187, i32 0, i32 1
  %2189 = load ptr, ptr %2188, align 8, !tbaa !17
  %2190 = ptrtoint ptr %2186 to i64
  %2191 = ptrtoint ptr %2189 to i64
  %2192 = sub i64 %2190, %2191
  %2193 = sdiv exact i64 %2192, 16
  %2194 = trunc i64 %2193 to i32
  %2195 = load ptr, ptr %5, align 8, !tbaa !5
  %2196 = getelementptr inbounds %struct.LClosure, ptr %2195, i32 0, i32 7
  %2197 = load ptr, ptr %2196, align 8, !tbaa !21
  %2198 = getelementptr inbounds %struct.Proto, ptr %2197, i32 0, i32 20
  %2199 = load i8, ptr %2198, align 1, !tbaa !56
  %2200 = zext i8 %2199 to i32
  %2201 = sub nsw i32 %2194, %2200
  %2202 = sub nsw i32 %2201, 1
  store i32 %2202, ptr %125, align 4, !tbaa !9
  %2203 = load i32, ptr %122, align 4, !tbaa !9
  %2204 = icmp eq i32 %2203, -1
  br i1 %2204, label %2205, label %2243

2205:                                             ; preds = %2176
  %2206 = load ptr, ptr %8, align 8, !tbaa !5
  %2207 = load ptr, ptr %3, align 8, !tbaa !5
  %2208 = getelementptr inbounds %struct.lua_State, ptr %2207, i32 0, i32 8
  store ptr %2206, ptr %2208, align 8, !tbaa !11
  %2209 = load ptr, ptr %3, align 8, !tbaa !5
  %2210 = getelementptr inbounds %struct.lua_State, ptr %2209, i32 0, i32 9
  %2211 = load ptr, ptr %2210, align 8, !tbaa !57
  %2212 = load ptr, ptr %3, align 8, !tbaa !5
  %2213 = getelementptr inbounds %struct.lua_State, ptr %2212, i32 0, i32 4
  %2214 = load ptr, ptr %2213, align 8, !tbaa !43
  %2215 = ptrtoint ptr %2211 to i64
  %2216 = ptrtoint ptr %2214 to i64
  %2217 = sub i64 %2215, %2216
  %2218 = load i32, ptr %125, align 4, !tbaa !9
  %2219 = mul nsw i32 %2218, 16
  %2220 = sext i32 %2219 to i64
  %2221 = icmp sle i64 %2217, %2220
  br i1 %2221, label %2222, label %2225

2222:                                             ; preds = %2205
  %2223 = load ptr, ptr %3, align 8, !tbaa !5
  %2224 = load i32, ptr %125, align 4, !tbaa !9
  call void @luaD_growstack(ptr noundef %2223, i32 noundef %2224)
  br label %2226

2225:                                             ; preds = %2205
  br label %2226

2226:                                             ; preds = %2225, %2222
  %2227 = load ptr, ptr %3, align 8, !tbaa !5
  %2228 = getelementptr inbounds %struct.lua_State, ptr %2227, i32 0, i32 5
  %2229 = load ptr, ptr %2228, align 8, !tbaa !20
  store ptr %2229, ptr %6, align 8, !tbaa !5
  %2230 = load ptr, ptr %6, align 8, !tbaa !5
  %2231 = load i32, ptr %9, align 4, !tbaa !9
  %2232 = lshr i32 %2231, 6
  %2233 = and i32 %2232, 255
  %2234 = sext i32 %2233 to i64
  %2235 = getelementptr inbounds %struct.lua_TValue, ptr %2230, i64 %2234
  store ptr %2235, ptr %10, align 8, !tbaa !5
  %2236 = load i32, ptr %125, align 4, !tbaa !9
  store i32 %2236, ptr %122, align 4, !tbaa !9
  %2237 = load ptr, ptr %10, align 8, !tbaa !5
  %2238 = load i32, ptr %125, align 4, !tbaa !9
  %2239 = sext i32 %2238 to i64
  %2240 = getelementptr inbounds %struct.lua_TValue, ptr %2237, i64 %2239
  %2241 = load ptr, ptr %3, align 8, !tbaa !5
  %2242 = getelementptr inbounds %struct.lua_State, ptr %2241, i32 0, i32 4
  store ptr %2240, ptr %2242, align 8, !tbaa !43
  br label %2243

2243:                                             ; preds = %2226, %2176
  store i32 0, ptr %123, align 4, !tbaa !9
  br label %2244

2244:                                             ; preds = %2283, %2243
  %2245 = load i32, ptr %123, align 4, !tbaa !9
  %2246 = load i32, ptr %122, align 4, !tbaa !9
  %2247 = icmp slt i32 %2245, %2246
  br i1 %2247, label %2248, label %2286

2248:                                             ; preds = %2244
  %2249 = load i32, ptr %123, align 4, !tbaa !9
  %2250 = load i32, ptr %125, align 4, !tbaa !9
  %2251 = icmp slt i32 %2249, %2250
  br i1 %2251, label %2252, label %2276

2252:                                             ; preds = %2248
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #6
  %2253 = load ptr, ptr %124, align 8, !tbaa !5
  %2254 = getelementptr inbounds %struct.CallInfo, ptr %2253, i32 0, i32 0
  %2255 = load ptr, ptr %2254, align 8, !tbaa !46
  %2256 = load i32, ptr %125, align 4, !tbaa !9
  %2257 = sext i32 %2256 to i64
  %2258 = sub i64 0, %2257
  %2259 = getelementptr inbounds %struct.lua_TValue, ptr %2255, i64 %2258
  %2260 = load i32, ptr %123, align 4, !tbaa !9
  %2261 = sext i32 %2260 to i64
  %2262 = getelementptr inbounds %struct.lua_TValue, ptr %2259, i64 %2261
  store ptr %2262, ptr %126, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #6
  %2263 = load ptr, ptr %10, align 8, !tbaa !5
  %2264 = load i32, ptr %123, align 4, !tbaa !9
  %2265 = sext i32 %2264 to i64
  %2266 = getelementptr inbounds %struct.lua_TValue, ptr %2263, i64 %2265
  store ptr %2266, ptr %127, align 8, !tbaa !5
  %2267 = load ptr, ptr %127, align 8, !tbaa !5
  %2268 = getelementptr inbounds %struct.lua_TValue, ptr %2267, i32 0, i32 0
  %2269 = load ptr, ptr %126, align 8, !tbaa !5
  %2270 = getelementptr inbounds %struct.lua_TValue, ptr %2269, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2268, ptr align 8 %2270, i64 8, i1 false), !tbaa.struct !28
  %2271 = load ptr, ptr %126, align 8, !tbaa !5
  %2272 = getelementptr inbounds %struct.lua_TValue, ptr %2271, i32 0, i32 1
  %2273 = load i32, ptr %2272, align 8, !tbaa !29
  %2274 = load ptr, ptr %127, align 8, !tbaa !5
  %2275 = getelementptr inbounds %struct.lua_TValue, ptr %2274, i32 0, i32 1
  store i32 %2273, ptr %2275, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #6
  br label %2282

2276:                                             ; preds = %2248
  %2277 = load ptr, ptr %10, align 8, !tbaa !5
  %2278 = load i32, ptr %123, align 4, !tbaa !9
  %2279 = sext i32 %2278 to i64
  %2280 = getelementptr inbounds %struct.lua_TValue, ptr %2277, i64 %2279
  %2281 = getelementptr inbounds %struct.lua_TValue, ptr %2280, i32 0, i32 1
  store i32 0, ptr %2281, align 8, !tbaa !29
  br label %2282

2282:                                             ; preds = %2276, %2252
  br label %2283

2283:                                             ; preds = %2282
  %2284 = load i32, ptr %123, align 4, !tbaa !9
  %2285 = add nsw i32 %2284, 1
  store i32 %2285, ptr %123, align 4, !tbaa !9
  br label %2244, !llvm.loop !58

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

2287:                                             ; preds = %2073, %187
  store i32 0, ptr %11, align 4
  br label %2288

2288:                                             ; preds = %2287, %2286, %2172, %2075, %2073, %1960, %1846, %1797, %1751, %1705, %1588, %1541, %1488, %1449, %1380, %1311, %1226, %1203, %1173, %1115, %1082, %1048, %967, %881, %800, %719, %638, %552, %504, %465, %416, %346, %340, %286, %264, %263, %247, %214, %197, %178
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  %2289 = load i32, ptr %11, align 4
  switch i32 %2289, label %2291 [
    i32 0, label %2290
    i32 4, label %147
    i32 2, label %128
  ]

2290:                                             ; preds = %2288
  br label %147

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

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

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

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

declare hidden i32 @luaO_fb2int(i32 noundef) #3

declare hidden void @luaC_step(ptr noundef) #3

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

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

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

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

declare hidden i32 @luaH_getn(ptr noundef) #3

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.backedge:                                        ; preds = %.backedge.backedge, %.loopexit
  %.0716 = phi ptr [ %17, %.loopexit ], [ %.0716.be, %.backedge.backedge ]
  %.0712 = phi ptr [ %22, %.loopexit ], [ %.0712.be, %.backedge.backedge ]
  %29 = getelementptr inbounds i8, ptr %.0716, i64 4
  %30 = load i32, ptr %.0716, align 4, !tbaa !23
  %31 = load i8, ptr %8, align 4, !tbaa !24
  %32 = and i8 %31, 12
  %.not = icmp eq i8 %32, 0
  br i1 %.not, label %44, label %33

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

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

41:                                               ; preds = %38
  store ptr %.0716, ptr %5, align 8, !tbaa !5
  br label %.critedge.thread

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

44:                                               ; preds = %33, %42, %.backedge
  %.1713 = phi ptr [ %43, %42 ], [ %.0712, %.backedge ], [ %.0712, %33 ]
  %45 = lshr i32 %30, 6
  %46 = and i32 %45, 255
  %47 = zext nneg i32 %46 to i64
  %48 = getelementptr inbounds %struct.lua_TValue, ptr %.1713, i64 %47
  %49 = and i32 %30, 63
  switch i32 %49, label %.backedge.backedge [
    i32 0, label %50
    i32 1, label %58
    i32 2, label %66
    i32 3, label %71
    i32 4, label %78
    i32 5, label %89
    i32 6, label %95
    i32 7, label %105
    i32 8, label %111
    i32 9, label %133
    i32 10, label %147
    i32 11, label %163
    i32 12, label %178
    i32 13, label %205
    i32 14, label %232
    i32 15, label %259
    i32 16, label %286
    i32 17, label %316
    i32 18, label %343
    i32 19, label %356
    i32 20, label %369
    i32 21, label %391
    i32 22, label %411
    i32 23, label %416
    i32 24, label %450
    i32 25, label %474
    i32 26, label %498
    i32 27, label %517
    i32 28, label %541
    i32 29, label %560
    i32 30, label %606
    i32 31, label %624
    i32 32, label %644
    i32 33, label %673
    i32 34, label %714
    i32 35, label %771
    i32 36, label %772
    i32 37, label %811
  ]

50:                                               ; preds = %44
  %51 = lshr i32 %30, 23
  %52 = zext nneg i32 %51 to i64
  %53 = getelementptr inbounds %struct.lua_TValue, ptr %.1713, i64 %52
  %54 = load i64, ptr %53, align 8, !tbaa !17
  store i64 %54, ptr %48, align 8, !tbaa !17
  %55 = getelementptr inbounds i8, ptr %53, i64 8
  %56 = load i32, ptr %55, align 8, !tbaa !27
  %57 = getelementptr inbounds i8, ptr %48, i64 8
  store i32 %56, ptr %57, align 8, !tbaa !27
  br label %.backedge.backedge

58:                                               ; preds = %44
  %59 = lshr i32 %30, 14
  %60 = zext nneg i32 %59 to i64
  %61 = getelementptr inbounds %struct.lua_TValue, ptr %26, i64 %60
  %62 = load i64, ptr %61, align 8, !tbaa !17
  store i64 %62, ptr %48, align 8, !tbaa !17
  %63 = getelementptr inbounds i8, ptr %61, i64 8
  %64 = load i32, ptr %63, align 8, !tbaa !27
  %65 = getelementptr inbounds i8, ptr %48, i64 8
  store i32 %64, ptr %65, align 8, !tbaa !27
  br label %.backedge.backedge

66:                                               ; preds = %44
  %67 = lshr i32 %30, 23
  store i32 %67, ptr %48, align 8, !tbaa !17
  %68 = getelementptr inbounds i8, ptr %48, i64 8
  store i32 1, ptr %68, align 8, !tbaa !27
  %69 = and i32 %30, 8372224
  %.not805 = icmp eq i32 %69, 0
  %70 = getelementptr inbounds i8, ptr %.0716, i64 8
  %spec.select = select i1 %.not805, ptr %29, ptr %70
  br label %.backedge.backedge

71:                                               ; preds = %44
  %72 = lshr i32 %30, 23
  %73 = zext nneg i32 %72 to i64
  %74 = getelementptr inbounds %struct.lua_TValue, ptr %.1713, i64 %73
  br label %75

75:                                               ; preds = %75, %71
  %.0738 = phi ptr [ %74, %71 ], [ %76, %75 ]
  %76 = getelementptr inbounds i8, ptr %.0738, i64 -16
  %77 = getelementptr inbounds i8, ptr %.0738, i64 8
  store i32 0, ptr %77, align 8, !tbaa !27
  %.not804 = icmp ult ptr %76, %48
  br i1 %.not804, label %.backedge.backedge, label %75, !llvm.loop !28

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

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

95:                                               ; preds = %44
  store ptr %29, ptr %5, align 8, !tbaa !5
  %96 = lshr i32 %30, 23
  %97 = zext nneg i32 %96 to i64
  %98 = getelementptr inbounds %struct.lua_TValue, ptr %.1713, i64 %97
  %99 = lshr i32 %30, 14
  %100 = and i32 %30, 4194304
  %.not803 = icmp eq i32 %100, 0
  %101 = and i32 %99, 255
  %102 = zext nneg i32 %101 to i64
  %.v833 = select i1 %.not803, ptr %.1713, ptr %26
  %103 = getelementptr inbounds %struct.lua_TValue, ptr %.v833, i64 %102
  call void @luaV_gettable(ptr noundef nonnull %0, ptr noundef %98, ptr noundef %103, ptr noundef %48)
  %104 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

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

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

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

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

132:                                              ; preds = %128
  call void @luaC_barrierf(ptr noundef nonnull %0, ptr noundef nonnull %115, ptr noundef nonnull %124) #5
  br label %.backedge.backedge

133:                                              ; preds = %44
  store ptr %29, ptr %5, align 8, !tbaa !5
  %134 = lshr i32 %30, 23
  %135 = and i32 %134, 255
  %136 = zext nneg i32 %135 to i64
  %137 = getelementptr inbounds %struct.lua_TValue, ptr %26, i64 %136
  %138 = zext nneg i32 %134 to i64
  %139 = getelementptr inbounds %struct.lua_TValue, ptr %.1713, i64 %138
  %.not799831 = icmp slt i32 %30, 0
  %140 = select i1 %.not799831, ptr %137, ptr %139
  %141 = lshr i32 %30, 14
  %142 = and i32 %30, 4194304
  %.not800 = icmp eq i32 %142, 0
  %143 = and i32 %141, 255
  %144 = zext nneg i32 %143 to i64
  %.v832 = select i1 %.not800, ptr %.1713, ptr %26
  %145 = getelementptr inbounds %struct.lua_TValue, ptr %.v832, i64 %144
  call void @luaV_settable(ptr noundef nonnull %0, ptr noundef %48, ptr noundef %140, ptr noundef %145)
  %146 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

147:                                              ; preds = %44
  %148 = lshr i32 %30, 23
  %149 = lshr i32 %30, 14
  %150 = and i32 %149, 511
  %151 = call i32 @luaO_fb2int(i32 noundef %148) #5
  %152 = call i32 @luaO_fb2int(i32 noundef %150) #5
  %153 = call ptr @luaH_new(ptr noundef nonnull %0, i32 noundef %151, i32 noundef %152) #5
  store ptr %153, ptr %48, align 8, !tbaa !17
  %154 = getelementptr inbounds i8, ptr %48, i64 8
  store i32 5, ptr %154, align 8, !tbaa !27
  store ptr %29, ptr %5, align 8, !tbaa !5
  %155 = load ptr, ptr %13, align 8, !tbaa !34
  %156 = getelementptr inbounds i8, ptr %155, i64 120
  %157 = load i64, ptr %156, align 8, !tbaa !35
  %158 = getelementptr inbounds i8, ptr %155, i64 112
  %159 = load i64, ptr %158, align 8, !tbaa !39
  %.not798 = icmp ult i64 %157, %159
  br i1 %.not798, label %161, label %160

160:                                              ; preds = %147
  call void @luaC_step(ptr noundef nonnull %0) #5
  br label %161

161:                                              ; preds = %160, %147
  %162 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

163:                                              ; preds = %44
  %164 = lshr i32 %30, 23
  %165 = zext nneg i32 %164 to i64
  %166 = getelementptr inbounds %struct.lua_TValue, ptr %.1713, i64 %165
  %167 = getelementptr inbounds i8, ptr %48, i64 16
  %168 = load i64, ptr %166, align 8, !tbaa !17
  store i64 %168, ptr %167, align 8, !tbaa !17
  %169 = getelementptr inbounds i8, ptr %166, i64 8
  %170 = load i32, ptr %169, align 8, !tbaa !27
  %171 = getelementptr inbounds i8, ptr %48, i64 24
  store i32 %170, ptr %171, align 8, !tbaa !27
  store ptr %29, ptr %5, align 8, !tbaa !5
  %172 = lshr i32 %30, 14
  %173 = and i32 %30, 4194304
  %.not797 = icmp eq i32 %173, 0
  %174 = and i32 %172, 255
  %175 = zext nneg i32 %174 to i64
  %.v830 = select i1 %.not797, ptr %.1713, ptr %26
  %176 = getelementptr inbounds %struct.lua_TValue, ptr %.v830, i64 %175
  call void @luaV_gettable(ptr noundef nonnull %0, ptr noundef nonnull %166, ptr noundef %176, ptr noundef %48)
  %177 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

178:                                              ; preds = %44
  %179 = lshr i32 %30, 23
  %180 = and i32 %179, 255
  %181 = zext nneg i32 %180 to i64
  %182 = getelementptr inbounds %struct.lua_TValue, ptr %26, i64 %181
  %183 = zext nneg i32 %179 to i64
  %184 = getelementptr inbounds %struct.lua_TValue, ptr %.1713, i64 %183
  %.not795828 = icmp slt i32 %30, 0
  %185 = select i1 %.not795828, ptr %182, ptr %184
  %186 = lshr i32 %30, 14
  %187 = and i32 %30, 4194304
  %.not796 = icmp eq i32 %187, 0
  %188 = and i32 %186, 255
  %189 = zext nneg i32 %188 to i64
  %.v829 = select i1 %.not796, ptr %.1713, ptr %26
  %190 = getelementptr inbounds %struct.lua_TValue, ptr %.v829, i64 %189
  %191 = getelementptr inbounds i8, ptr %185, i64 8
  %192 = load i32, ptr %191, align 8, !tbaa !27
  %193 = icmp eq i32 %192, 3
  br i1 %193, label %194, label %203

194:                                              ; preds = %178
  %195 = getelementptr inbounds i8, ptr %190, i64 8
  %196 = load i32, ptr %195, align 8, !tbaa !27
  %197 = icmp eq i32 %196, 3
  br i1 %197, label %198, label %203

198:                                              ; preds = %194
  %199 = load double, ptr %185, align 8, !tbaa !17
  %200 = load double, ptr %190, align 8, !tbaa !17
  %201 = fadd double %199, %200
  store double %201, ptr %48, align 8, !tbaa !17
  %202 = getelementptr inbounds i8, ptr %48, i64 8
  store i32 3, ptr %202, align 8, !tbaa !27
  br label %.backedge.backedge

203:                                              ; preds = %194, %178
  store ptr %29, ptr %5, align 8, !tbaa !5
  call void @Arith(ptr noundef nonnull %0, ptr noundef %48, ptr noundef nonnull %185, ptr noundef %190, i32 noundef 5)
  %204 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

205:                                              ; preds = %44
  %206 = lshr i32 %30, 23
  %207 = and i32 %206, 255
  %208 = zext nneg i32 %207 to i64
  %209 = getelementptr inbounds %struct.lua_TValue, ptr %26, i64 %208
  %210 = zext nneg i32 %206 to i64
  %211 = getelementptr inbounds %struct.lua_TValue, ptr %.1713, i64 %210
  %.not793826 = icmp slt i32 %30, 0
  %212 = select i1 %.not793826, ptr %209, ptr %211
  %213 = lshr i32 %30, 14
  %214 = and i32 %30, 4194304
  %.not794 = icmp eq i32 %214, 0
  %215 = and i32 %213, 255
  %216 = zext nneg i32 %215 to i64
  %.v827 = select i1 %.not794, ptr %.1713, ptr %26
  %217 = getelementptr inbounds %struct.lua_TValue, ptr %.v827, i64 %216
  %218 = getelementptr inbounds i8, ptr %212, i64 8
  %219 = load i32, ptr %218, align 8, !tbaa !27
  %220 = icmp eq i32 %219, 3
  br i1 %220, label %221, label %230

221:                                              ; preds = %205
  %222 = getelementptr inbounds i8, ptr %217, i64 8
  %223 = load i32, ptr %222, align 8, !tbaa !27
  %224 = icmp eq i32 %223, 3
  br i1 %224, label %225, label %230

225:                                              ; preds = %221
  %226 = load double, ptr %212, align 8, !tbaa !17
  %227 = load double, ptr %217, align 8, !tbaa !17
  %228 = fsub double %226, %227
  store double %228, ptr %48, align 8, !tbaa !17
  %229 = getelementptr inbounds i8, ptr %48, i64 8
  store i32 3, ptr %229, align 8, !tbaa !27
  br label %.backedge.backedge

230:                                              ; preds = %221, %205
  store ptr %29, ptr %5, align 8, !tbaa !5
  call void @Arith(ptr noundef nonnull %0, ptr noundef %48, ptr noundef nonnull %212, ptr noundef %217, i32 noundef 6)
  %231 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

232:                                              ; preds = %44
  %233 = lshr i32 %30, 23
  %234 = and i32 %233, 255
  %235 = zext nneg i32 %234 to i64
  %236 = getelementptr inbounds %struct.lua_TValue, ptr %26, i64 %235
  %237 = zext nneg i32 %233 to i64
  %238 = getelementptr inbounds %struct.lua_TValue, ptr %.1713, i64 %237
  %.not791824 = icmp slt i32 %30, 0
  %239 = select i1 %.not791824, ptr %236, ptr %238
  %240 = lshr i32 %30, 14
  %241 = and i32 %30, 4194304
  %.not792 = icmp eq i32 %241, 0
  %242 = and i32 %240, 255
  %243 = zext nneg i32 %242 to i64
  %.v825 = select i1 %.not792, ptr %.1713, ptr %26
  %244 = getelementptr inbounds %struct.lua_TValue, ptr %.v825, i64 %243
  %245 = getelementptr inbounds i8, ptr %239, i64 8
  %246 = load i32, ptr %245, align 8, !tbaa !27
  %247 = icmp eq i32 %246, 3
  br i1 %247, label %248, label %257

248:                                              ; preds = %232
  %249 = getelementptr inbounds i8, ptr %244, i64 8
  %250 = load i32, ptr %249, align 8, !tbaa !27
  %251 = icmp eq i32 %250, 3
  br i1 %251, label %252, label %257

252:                                              ; preds = %248
  %253 = load double, ptr %239, align 8, !tbaa !17
  %254 = load double, ptr %244, align 8, !tbaa !17
  %255 = fmul double %253, %254
  store double %255, ptr %48, align 8, !tbaa !17
  %256 = getelementptr inbounds i8, ptr %48, i64 8
  store i32 3, ptr %256, align 8, !tbaa !27
  br label %.backedge.backedge

257:                                              ; preds = %248, %232
  store ptr %29, ptr %5, align 8, !tbaa !5
  call void @Arith(ptr noundef nonnull %0, ptr noundef %48, ptr noundef nonnull %239, ptr noundef %244, i32 noundef 7)
  %258 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

259:                                              ; preds = %44
  %260 = lshr i32 %30, 23
  %261 = and i32 %260, 255
  %262 = zext nneg i32 %261 to i64
  %263 = getelementptr inbounds %struct.lua_TValue, ptr %26, i64 %262
  %264 = zext nneg i32 %260 to i64
  %265 = getelementptr inbounds %struct.lua_TValue, ptr %.1713, i64 %264
  %.not789822 = icmp slt i32 %30, 0
  %266 = select i1 %.not789822, ptr %263, ptr %265
  %267 = lshr i32 %30, 14
  %268 = and i32 %30, 4194304
  %.not790 = icmp eq i32 %268, 0
  %269 = and i32 %267, 255
  %270 = zext nneg i32 %269 to i64
  %.v823 = select i1 %.not790, ptr %.1713, ptr %26
  %271 = getelementptr inbounds %struct.lua_TValue, ptr %.v823, i64 %270
  %272 = getelementptr inbounds i8, ptr %266, i64 8
  %273 = load i32, ptr %272, align 8, !tbaa !27
  %274 = icmp eq i32 %273, 3
  br i1 %274, label %275, label %284

275:                                              ; preds = %259
  %276 = getelementptr inbounds i8, ptr %271, i64 8
  %277 = load i32, ptr %276, align 8, !tbaa !27
  %278 = icmp eq i32 %277, 3
  br i1 %278, label %279, label %284

279:                                              ; preds = %275
  %280 = load double, ptr %266, align 8, !tbaa !17
  %281 = load double, ptr %271, align 8, !tbaa !17
  %282 = fdiv double %280, %281
  store double %282, ptr %48, align 8, !tbaa !17
  %283 = getelementptr inbounds i8, ptr %48, i64 8
  store i32 3, ptr %283, align 8, !tbaa !27
  br label %.backedge.backedge

284:                                              ; preds = %275, %259
  store ptr %29, ptr %5, align 8, !tbaa !5
  call void @Arith(ptr noundef nonnull %0, ptr noundef %48, ptr noundef nonnull %266, ptr noundef %271, i32 noundef 8)
  %285 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

286:                                              ; preds = %44
  %287 = lshr i32 %30, 23
  %288 = and i32 %287, 255
  %289 = zext nneg i32 %288 to i64
  %290 = getelementptr inbounds %struct.lua_TValue, ptr %26, i64 %289
  %291 = zext nneg i32 %287 to i64
  %292 = getelementptr inbounds %struct.lua_TValue, ptr %.1713, i64 %291
  %.not787820 = icmp slt i32 %30, 0
  %293 = select i1 %.not787820, ptr %290, ptr %292
  %294 = lshr i32 %30, 14
  %295 = and i32 %30, 4194304
  %.not788 = icmp eq i32 %295, 0
  %296 = and i32 %294, 255
  %297 = zext nneg i32 %296 to i64
  %.v821 = select i1 %.not788, ptr %.1713, ptr %26
  %298 = getelementptr inbounds %struct.lua_TValue, ptr %.v821, i64 %297
  %299 = getelementptr inbounds i8, ptr %293, i64 8
  %300 = load i32, ptr %299, align 8, !tbaa !27
  %301 = icmp eq i32 %300, 3
  br i1 %301, label %302, label %314

302:                                              ; preds = %286
  %303 = getelementptr inbounds i8, ptr %298, i64 8
  %304 = load i32, ptr %303, align 8, !tbaa !27
  %305 = icmp eq i32 %304, 3
  br i1 %305, label %306, label %314

306:                                              ; preds = %302
  %307 = load double, ptr %293, align 8, !tbaa !17
  %308 = load double, ptr %298, align 8, !tbaa !17
  %309 = fdiv double %307, %308
  %310 = call double @llvm.floor.f64(double %309)
  %311 = fneg double %310
  %312 = call double @llvm.fmuladd.f64(double %311, double %308, double %307)
  store double %312, ptr %48, align 8, !tbaa !17
  %313 = getelementptr inbounds i8, ptr %48, i64 8
  store i32 3, ptr %313, align 8, !tbaa !27
  br label %.backedge.backedge

314:                                              ; preds = %302, %286
  store ptr %29, ptr %5, align 8, !tbaa !5
  call void @Arith(ptr noundef nonnull %0, ptr noundef %48, ptr noundef nonnull %293, ptr noundef %298, i32 noundef 9)
  %315 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

316:                                              ; preds = %44
  %317 = lshr i32 %30, 23
  %318 = and i32 %317, 255
  %319 = zext nneg i32 %318 to i64
  %320 = getelementptr inbounds %struct.lua_TValue, ptr %26, i64 %319
  %321 = zext nneg i32 %317 to i64
  %322 = getelementptr inbounds %struct.lua_TValue, ptr %.1713, i64 %321
  %.not785818 = icmp slt i32 %30, 0
  %323 = select i1 %.not785818, ptr %320, ptr %322
  %324 = lshr i32 %30, 14
  %325 = and i32 %30, 4194304
  %.not786 = icmp eq i32 %325, 0
  %326 = and i32 %324, 255
  %327 = zext nneg i32 %326 to i64
  %.v819 = select i1 %.not786, ptr %.1713, ptr %26
  %328 = getelementptr inbounds %struct.lua_TValue, ptr %.v819, i64 %327
  %329 = getelementptr inbounds i8, ptr %323, i64 8
  %330 = load i32, ptr %329, align 8, !tbaa !27
  %331 = icmp eq i32 %330, 3
  br i1 %331, label %332, label %341

332:                                              ; preds = %316
  %333 = getelementptr inbounds i8, ptr %328, i64 8
  %334 = load i32, ptr %333, align 8, !tbaa !27
  %335 = icmp eq i32 %334, 3
  br i1 %335, label %336, label %341

336:                                              ; preds = %332
  %337 = load double, ptr %323, align 8, !tbaa !17
  %338 = load double, ptr %328, align 8, !tbaa !17
  %339 = call double @pow(double noundef %337, double noundef %338) #5
  store double %339, ptr %48, align 8, !tbaa !17
  %340 = getelementptr inbounds i8, ptr %48, i64 8
  store i32 3, ptr %340, align 8, !tbaa !27
  br label %.backedge.backedge

341:                                              ; preds = %332, %316
  store ptr %29, ptr %5, align 8, !tbaa !5
  call void @Arith(ptr noundef nonnull %0, ptr noundef %48, ptr noundef nonnull %323, ptr noundef %328, i32 noundef 10)
  %342 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

343:                                              ; preds = %44
  %344 = lshr i32 %30, 23
  %345 = zext nneg i32 %344 to i64
  %346 = getelementptr inbounds %struct.lua_TValue, ptr %.1713, i64 %345
  %347 = getelementptr inbounds i8, ptr %346, i64 8
  %348 = load i32, ptr %347, align 8, !tbaa !27
  %349 = icmp eq i32 %348, 3
  br i1 %349, label %350, label %354

350:                                              ; preds = %343
  %351 = load double, ptr %346, align 8, !tbaa !17
  %352 = fneg double %351
  store double %352, ptr %48, align 8, !tbaa !17
  %353 = getelementptr inbounds i8, ptr %48, i64 8
  store i32 3, ptr %353, align 8, !tbaa !27
  br label %.backedge.backedge

354:                                              ; preds = %343
  store ptr %29, ptr %5, align 8, !tbaa !5
  call void @Arith(ptr noundef nonnull %0, ptr noundef nonnull %48, ptr noundef nonnull %346, ptr noundef nonnull %346, i32 noundef 11)
  %355 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

356:                                              ; preds = %44
  %357 = lshr i32 %30, 23
  %358 = zext nneg i32 %357 to i64
  %359 = getelementptr inbounds %struct.lua_TValue, ptr %.1713, i64 %358
  %360 = getelementptr inbounds i8, ptr %359, i64 8
  %361 = load i32, ptr %360, align 8, !tbaa !27
  switch i32 %361, label %.fold.split [
    i32 0, label %365
    i32 1, label %362
  ]

362:                                              ; preds = %356
  %363 = load i32, ptr %359, align 8, !tbaa !17
  %364 = icmp eq i32 %363, 0
  br label %365

.fold.split:                                      ; preds = %356
  br label %365

365:                                              ; preds = %356, %.fold.split, %362
  %366 = phi i1 [ true, %356 ], [ %364, %362 ], [ false, %.fold.split ]
  %367 = zext i1 %366 to i32
  store i32 %367, ptr %48, align 8, !tbaa !17
  %368 = getelementptr inbounds i8, ptr %48, i64 8
  store i32 1, ptr %368, align 8, !tbaa !27
  br label %.backedge.backedge

369:                                              ; preds = %44
  %370 = lshr i32 %30, 23
  %371 = zext nneg i32 %370 to i64
  %372 = getelementptr inbounds %struct.lua_TValue, ptr %.1713, i64 %371
  %373 = getelementptr inbounds i8, ptr %372, i64 8
  %374 = load i32, ptr %373, align 8, !tbaa !27
  switch i32 %374, label %386 [
    i32 5, label %375
    i32 4, label %380
  ]

375:                                              ; preds = %369
  %376 = load ptr, ptr %372, align 8, !tbaa !17
  %377 = call i32 @luaH_getn(ptr noundef %376) #5
  %378 = sitofp i32 %377 to double
  store double %378, ptr %48, align 8, !tbaa !17
  %379 = getelementptr inbounds i8, ptr %48, i64 8
  store i32 3, ptr %379, align 8, !tbaa !27
  br label %.backedge.backedge

380:                                              ; preds = %369
  %381 = load ptr, ptr %372, align 8, !tbaa !17
  %382 = getelementptr inbounds i8, ptr %381, i64 16
  %383 = load i64, ptr %382, align 8, !tbaa !17
  %384 = uitofp i64 %383 to double
  store double %384, ptr %48, align 8, !tbaa !17
  %385 = getelementptr inbounds i8, ptr %48, i64 8
  store i32 3, ptr %385, align 8, !tbaa !27
  br label %.backedge.backedge

386:                                              ; preds = %369
  store ptr %29, ptr %5, align 8, !tbaa !5
  %387 = call i32 @call_binTM(ptr noundef nonnull %0, ptr noundef nonnull %372, ptr noundef nonnull @luaO_nilobject_, ptr noundef nonnull %48, i32 noundef 12)
  %.not784 = icmp eq i32 %387, 0
  br i1 %.not784, label %388, label %389

388:                                              ; preds = %386
  call void @luaG_typeerror(ptr noundef nonnull %0, ptr noundef nonnull %372, ptr noundef nonnull @.str.5) #5
  br label %389

389:                                              ; preds = %388, %386
  %390 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

391:                                              ; preds = %44
  %392 = lshr i32 %30, 23
  %393 = lshr i32 %30, 14
  %394 = and i32 %393, 511
  store ptr %29, ptr %5, align 8, !tbaa !5
  %reass.sub = sub nsw i32 %394, %392
  %395 = add nsw i32 %reass.sub, 1
  call void @luaV_concat(ptr noundef nonnull %0, i32 noundef %395, i32 noundef %394)
  %396 = load ptr, ptr %13, align 8, !tbaa !34
  %397 = getelementptr inbounds i8, ptr %396, i64 120
  %398 = load i64, ptr %397, align 8, !tbaa !35
  %399 = getelementptr inbounds i8, ptr %396, i64 112
  %400 = load i64, ptr %399, align 8, !tbaa !39
  %.not783 = icmp ult i64 %398, %400
  br i1 %.not783, label %402, label %401

401:                                              ; preds = %391
  call void @luaC_step(ptr noundef nonnull %0) #5
  br label %402

402:                                              ; preds = %401, %391
  %403 = load ptr, ptr %7, align 8, !tbaa !18
  %404 = zext nneg i32 %392 to i64
  %405 = getelementptr inbounds %struct.lua_TValue, ptr %403, i64 %404
  %406 = getelementptr inbounds %struct.lua_TValue, ptr %403, i64 %47
  %407 = load i64, ptr %405, align 8, !tbaa !17
  store i64 %407, ptr %406, align 8, !tbaa !17
  %408 = getelementptr inbounds i8, ptr %405, i64 8
  %409 = load i32, ptr %408, align 8, !tbaa !27
  %410 = getelementptr inbounds i8, ptr %406, i64 8
  store i32 %409, ptr %410, align 8, !tbaa !27
  br label %.backedge.backedge

411:                                              ; preds = %44
  %412 = lshr i32 %30, 14
  %413 = zext nneg i32 %412 to i64
  %414 = getelementptr i32, ptr %29, i64 %413
  %415 = getelementptr i8, ptr %414, i64 -524284
  br label %.backedge.backedge

416:                                              ; preds = %44
  %417 = lshr i32 %30, 23
  %418 = and i32 %417, 255
  %419 = zext nneg i32 %418 to i64
  %420 = getelementptr inbounds %struct.lua_TValue, ptr %26, i64 %419
  %421 = zext nneg i32 %417 to i64
  %422 = getelementptr inbounds %struct.lua_TValue, ptr %.1713, i64 %421
  %.not781816 = icmp slt i32 %30, 0
  %423 = select i1 %.not781816, ptr %420, ptr %422
  %424 = lshr i32 %30, 14
  %425 = and i32 %30, 4194304
  %.not782 = icmp eq i32 %425, 0
  %426 = and i32 %424, 255
  %427 = zext nneg i32 %426 to i64
  %.v817 = select i1 %.not782, ptr %.1713, ptr %26
  %428 = getelementptr inbounds %struct.lua_TValue, ptr %.v817, i64 %427
  store ptr %29, ptr %5, align 8, !tbaa !5
  %429 = getelementptr inbounds i8, ptr %423, i64 8
  %430 = load i32, ptr %429, align 8, !tbaa !27
  %431 = getelementptr inbounds i8, ptr %428, i64 8
  %432 = load i32, ptr %431, align 8, !tbaa !27
  %433 = icmp eq i32 %430, %432
  br i1 %433, label %434, label %437

434:                                              ; preds = %416
  %435 = call i32 @luaV_equalval(ptr noundef nonnull %0, ptr noundef nonnull %423, ptr noundef nonnull %428)
  %436 = icmp ne i32 %435, 0
  br label %437

437:                                              ; preds = %434, %416
  %438 = phi i1 [ false, %416 ], [ %436, %434 ]
  %439 = zext i1 %438 to i32
  %440 = icmp eq i32 %46, %439
  br i1 %440, label %441, label %447

441:                                              ; preds = %437
  %442 = load i32, ptr %29, align 4, !tbaa !23
  %443 = lshr i32 %442, 14
  %444 = zext nneg i32 %443 to i64
  %445 = getelementptr i32, ptr %29, i64 %444
  %446 = getelementptr i8, ptr %445, i64 -524284
  br label %447

447:                                              ; preds = %441, %437
  %.2718 = phi ptr [ %446, %441 ], [ %29, %437 ]
  %448 = load ptr, ptr %7, align 8, !tbaa !18
  %449 = getelementptr inbounds i8, ptr %.2718, i64 4
  br label %.backedge.backedge

450:                                              ; preds = %44
  store ptr %29, ptr %5, align 8, !tbaa !5
  %451 = lshr i32 %30, 23
  %452 = and i32 %451, 255
  %453 = zext nneg i32 %452 to i64
  %454 = getelementptr inbounds %struct.lua_TValue, ptr %26, i64 %453
  %455 = zext nneg i32 %451 to i64
  %456 = getelementptr inbounds %struct.lua_TValue, ptr %.1713, i64 %455
  %.not779814 = icmp slt i32 %30, 0
  %457 = select i1 %.not779814, ptr %454, ptr %456
  %458 = lshr i32 %30, 14
  %459 = and i32 %30, 4194304
  %.not780 = icmp eq i32 %459, 0
  %460 = and i32 %458, 255
  %461 = zext nneg i32 %460 to i64
  %.v815 = select i1 %.not780, ptr %.1713, ptr %26
  %462 = getelementptr inbounds %struct.lua_TValue, ptr %.v815, i64 %461
  %463 = call i32 @luaV_lessthan(ptr noundef nonnull %0, ptr noundef %457, ptr noundef %462)
  %464 = icmp eq i32 %463, %46
  br i1 %464, label %465, label %471

465:                                              ; preds = %450
  %466 = load i32, ptr %29, align 4, !tbaa !23
  %467 = lshr i32 %466, 14
  %468 = zext nneg i32 %467 to i64
  %469 = getelementptr i32, ptr %29, i64 %468
  %470 = getelementptr i8, ptr %469, i64 -524284
  br label %471

471:                                              ; preds = %465, %450
  %.3719 = phi ptr [ %470, %465 ], [ %29, %450 ]
  %472 = load ptr, ptr %7, align 8, !tbaa !18
  %473 = getelementptr inbounds i8, ptr %.3719, i64 4
  br label %.backedge.backedge

474:                                              ; preds = %44
  store ptr %29, ptr %5, align 8, !tbaa !5
  %475 = lshr i32 %30, 23
  %476 = and i32 %475, 255
  %477 = zext nneg i32 %476 to i64
  %478 = getelementptr inbounds %struct.lua_TValue, ptr %26, i64 %477
  %479 = zext nneg i32 %475 to i64
  %480 = getelementptr inbounds %struct.lua_TValue, ptr %.1713, i64 %479
  %.not777813 = icmp slt i32 %30, 0
  %481 = select i1 %.not777813, ptr %478, ptr %480
  %482 = lshr i32 %30, 14
  %483 = and i32 %30, 4194304
  %.not778 = icmp eq i32 %483, 0
  %484 = and i32 %482, 255
  %485 = zext nneg i32 %484 to i64
  %.v = select i1 %.not778, ptr %.1713, ptr %26
  %486 = getelementptr inbounds %struct.lua_TValue, ptr %.v, i64 %485
  %487 = call i32 @lessequal(ptr noundef nonnull %0, ptr noundef %481, ptr noundef %486)
  %488 = icmp eq i32 %487, %46
  br i1 %488, label %489, label %495

489:                                              ; preds = %474
  %490 = load i32, ptr %29, align 4, !tbaa !23
  %491 = lshr i32 %490, 14
  %492 = zext nneg i32 %491 to i64
  %493 = getelementptr i32, ptr %29, i64 %492
  %494 = getelementptr i8, ptr %493, i64 -524284
  br label %495

495:                                              ; preds = %489, %474
  %.4720 = phi ptr [ %494, %489 ], [ %29, %474 ]
  %496 = load ptr, ptr %7, align 8, !tbaa !18
  %497 = getelementptr inbounds i8, ptr %.4720, i64 4
  br label %.backedge.backedge

498:                                              ; preds = %44
  %499 = getelementptr inbounds i8, ptr %48, i64 8
  %500 = load i32, ptr %499, align 8, !tbaa !27
  switch i32 %500, label %.fold.split806 [
    i32 0, label %504
    i32 1, label %501
  ]

501:                                              ; preds = %498
  %502 = load i32, ptr %48, align 8, !tbaa !17
  %503 = icmp eq i32 %502, 0
  br label %504

.fold.split806:                                   ; preds = %498
  br label %504

504:                                              ; preds = %498, %.fold.split806, %501
  %505 = phi i1 [ true, %498 ], [ %503, %501 ], [ false, %.fold.split806 ]
  %506 = zext i1 %505 to i32
  %507 = lshr i32 %30, 14
  %508 = and i32 %507, 511
  %.not776 = icmp eq i32 %508, %506
  br i1 %.not776, label %515, label %509

509:                                              ; preds = %504
  %510 = load i32, ptr %29, align 4, !tbaa !23
  %511 = lshr i32 %510, 14
  %512 = zext nneg i32 %511 to i64
  %513 = getelementptr i32, ptr %29, i64 %512
  %514 = getelementptr i8, ptr %513, i64 -524284
  br label %515

515:                                              ; preds = %509, %504
  %.5721 = phi ptr [ %514, %509 ], [ %29, %504 ]
  %516 = getelementptr inbounds i8, ptr %.5721, i64 4
  br label %.backedge.backedge

517:                                              ; preds = %44
  %518 = lshr i32 %30, 23
  %519 = zext nneg i32 %518 to i64
  %520 = getelementptr inbounds %struct.lua_TValue, ptr %.1713, i64 %519
  %521 = getelementptr inbounds i8, ptr %520, i64 8
  %522 = load i32, ptr %521, align 8, !tbaa !27
  switch i32 %522, label %.fold.split807 [
    i32 0, label %526
    i32 1, label %523
  ]

523:                                              ; preds = %517
  %524 = load i32, ptr %520, align 8, !tbaa !17
  %525 = icmp eq i32 %524, 0
  br label %526

.fold.split807:                                   ; preds = %517
  br label %526

526:                                              ; preds = %517, %.fold.split807, %523
  %527 = phi i1 [ true, %517 ], [ %525, %523 ], [ false, %.fold.split807 ]
  %528 = zext i1 %527 to i32
  %529 = lshr i32 %30, 14
  %530 = and i32 %529, 511
  %.not775 = icmp eq i32 %530, %528
  br i1 %.not775, label %539, label %531

531:                                              ; preds = %526
  %532 = load i64, ptr %520, align 8, !tbaa !17
  store i64 %532, ptr %48, align 8, !tbaa !17
  %533 = getelementptr inbounds i8, ptr %48, i64 8
  store i32 %522, ptr %533, align 8, !tbaa !27
  %534 = load i32, ptr %29, align 4, !tbaa !23
  %535 = lshr i32 %534, 14
  %536 = zext nneg i32 %535 to i64
  %537 = getelementptr i32, ptr %29, i64 %536
  %538 = getelementptr i8, ptr %537, i64 -524284
  br label %539

539:                                              ; preds = %531, %526
  %.6722 = phi ptr [ %538, %531 ], [ %29, %526 ]
  %540 = getelementptr inbounds i8, ptr %.6722, i64 4
  br label %.backedge.backedge

541:                                              ; preds = %44
  %542 = lshr i32 %30, 14
  %543 = and i32 %542, 511
  %544 = add nsw i32 %543, -1
  %.not773 = icmp ult i32 %30, 8388608
  br i1 %.not773, label %549, label %545

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

549:                                              ; preds = %545, %541
  store ptr %29, ptr %5, align 8, !tbaa !5
  %550 = call i32 @luaD_precall(ptr noundef nonnull %0, ptr noundef %48, i32 noundef %544) #5
  switch i32 %550, label %.critedge.thread [
    i32 0, label %551
    i32 1, label %553
  ]

551:                                              ; preds = %549
  %552 = add nsw i32 %.0.ph, 1
  br label %.loopexit.outer.backedge

.loopexit.outer.backedge:                         ; preds = %551, %620, %619
  %.0.ph.be = phi i32 [ %617, %619 ], [ %617, %620 ], [ %552, %551 ]
  br label %.loopexit.outer

553:                                              ; preds = %549
  %.not774 = icmp eq i32 %543, 0
  br i1 %.not774, label %558, label %554

554:                                              ; preds = %553
  %555 = load ptr, ptr %6, align 8, !tbaa !14
  %556 = getelementptr inbounds i8, ptr %555, i64 16
  %557 = load ptr, ptr %556, align 8, !tbaa !41
  store ptr %557, ptr %12, align 8, !tbaa !40
  br label %558

558:                                              ; preds = %554, %553
  %559 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

560:                                              ; preds = %44
  %.not771 = icmp ult i32 %30, 8388608
  br i1 %.not771, label %565, label %561

561:                                              ; preds = %560
  %562 = lshr i32 %30, 23
  %563 = zext nneg i32 %562 to i64
  %564 = getelementptr inbounds %struct.lua_TValue, ptr %48, i64 %563
  store ptr %564, ptr %12, align 8, !tbaa !40
  br label %565

565:                                              ; preds = %561, %560
  store ptr %29, ptr %5, align 8, !tbaa !5
  %566 = call i32 @luaD_precall(ptr noundef nonnull %0, ptr noundef %48, i32 noundef -1) #5
  switch i32 %566, label %.critedge.thread [
    i32 0, label %567
    i32 1, label %604
  ]

567:                                              ; preds = %565
  %568 = load ptr, ptr %6, align 8, !tbaa !14
  %569 = getelementptr inbounds i8, ptr %568, i64 -40
  %570 = getelementptr inbounds i8, ptr %568, i64 -32
  %571 = load ptr, ptr %570, align 8, !tbaa !15
  %572 = getelementptr inbounds i8, ptr %568, i64 8
  %573 = load ptr, ptr %572, align 8, !tbaa !15
  %574 = load ptr, ptr %14, align 8, !tbaa !42
  %.not772 = icmp eq ptr %574, null
  br i1 %.not772, label %577, label %575

575:                                              ; preds = %567
  %576 = load ptr, ptr %569, align 8, !tbaa !43
  call void @luaF_close(ptr noundef nonnull %0, ptr noundef %576) #5
  %.pre = load ptr, ptr %570, align 8, !tbaa !15
  br label %577

577:                                              ; preds = %575, %567
  %578 = phi ptr [ %.pre, %575 ], [ %571, %567 ]
  %579 = load ptr, ptr %568, align 8, !tbaa !43
  %580 = ptrtoint ptr %579 to i64
  %581 = ptrtoint ptr %573 to i64
  %582 = sub i64 %580, %581
  %583 = getelementptr inbounds i8, ptr %578, i64 %582
  store ptr %583, ptr %569, align 8, !tbaa !43
  store ptr %583, ptr %7, align 8, !tbaa !18
  %584 = load ptr, ptr %12, align 8, !tbaa !40
  %585 = icmp ult ptr %573, %584
  br i1 %585, label %.lr.ph856, label %._crit_edge857

.lr.ph856:                                        ; preds = %577, %.lr.ph856
  %indvars.iv877 = phi i64 [ %indvars.iv.next878, %.lr.ph856 ], [ 0, %577 ]
  %586 = getelementptr inbounds %struct.lua_TValue, ptr %573, i64 %indvars.iv877
  %587 = getelementptr inbounds %struct.lua_TValue, ptr %571, i64 %indvars.iv877
  %588 = load i64, ptr %586, align 8, !tbaa !17
  store i64 %588, ptr %587, align 8, !tbaa !17
  %589 = getelementptr inbounds i8, ptr %586, i64 8
  %590 = load i32, ptr %589, align 8, !tbaa !27
  %591 = getelementptr inbounds i8, ptr %587, i64 8
  store i32 %590, ptr %591, align 8, !tbaa !27
  %indvars.iv.next878 = add nuw nsw i64 %indvars.iv877, 1
  %592 = getelementptr inbounds %struct.lua_TValue, ptr %573, i64 %indvars.iv.next878
  %593 = load ptr, ptr %12, align 8, !tbaa !40
  %594 = icmp ult ptr %592, %593
  br i1 %594, label %.lr.ph856, label %._crit_edge857, !llvm.loop !44

._crit_edge857:                                   ; preds = %.lr.ph856, %577
  %.lcssa836 = phi i64 [ 0, %577 ], [ %indvars.iv.next878, %.lr.ph856 ]
  %595 = getelementptr inbounds %struct.lua_TValue, ptr %571, i64 %.lcssa836
  store ptr %595, ptr %12, align 8, !tbaa !40
  %596 = getelementptr inbounds i8, ptr %568, i64 -24
  store ptr %595, ptr %596, align 8, !tbaa !41
  %597 = load ptr, ptr %5, align 8, !tbaa !5
  %598 = getelementptr inbounds i8, ptr %568, i64 -16
  store ptr %597, ptr %598, align 8, !tbaa !45
  %599 = getelementptr inbounds i8, ptr %568, i64 -4
  %600 = load i32, ptr %599, align 4, !tbaa !46
  %601 = add nsw i32 %600, 1
  store i32 %601, ptr %599, align 4, !tbaa !46
  %602 = load ptr, ptr %6, align 8, !tbaa !14
  %603 = getelementptr inbounds i8, ptr %602, i64 -40
  store ptr %603, ptr %6, align 8, !tbaa !14
  br label %.loopexit

604:                                              ; preds = %565
  %605 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

606:                                              ; preds = %44
  %.not768 = icmp ult i32 %30, 8388608
  br i1 %.not768, label %612, label %607

607:                                              ; preds = %606
  %608 = lshr i32 %30, 23
  %609 = zext nneg i32 %608 to i64
  %610 = getelementptr inbounds %struct.lua_TValue, ptr %48, i64 %609
  %611 = getelementptr inbounds i8, ptr %610, i64 -16
  store ptr %611, ptr %12, align 8, !tbaa !40
  br label %612

612:                                              ; preds = %607, %606
  %613 = load ptr, ptr %14, align 8, !tbaa !42
  %.not769 = icmp eq ptr %613, null
  br i1 %.not769, label %615, label %614

614:                                              ; preds = %612
  call void @luaF_close(ptr noundef nonnull %0, ptr noundef %.1713) #5
  br label %615

615:                                              ; preds = %614, %612
  store ptr %29, ptr %5, align 8, !tbaa !5
  %616 = call i32 @luaD_poscall(ptr noundef nonnull %0, ptr noundef %48) #5
  %617 = add nsw i32 %.0.ph, -1
  %618 = icmp eq i32 %617, 0
  br i1 %618, label %.critedge.thread, label %619

619:                                              ; preds = %615
  %.not770 = icmp eq i32 %616, 0
  br i1 %.not770, label %.loopexit.outer.backedge, label %620

620:                                              ; preds = %619
  %621 = load ptr, ptr %6, align 8, !tbaa !14
  %622 = getelementptr inbounds i8, ptr %621, i64 16
  %623 = load ptr, ptr %622, align 8, !tbaa !41
  store ptr %623, ptr %12, align 8, !tbaa !40
  br label %.loopexit.outer.backedge

624:                                              ; preds = %44
  %625 = getelementptr inbounds i8, ptr %48, i64 32
  %626 = load double, ptr %625, align 8, !tbaa !17
  %627 = load double, ptr %48, align 8, !tbaa !17
  %628 = fadd double %626, %627
  %629 = getelementptr inbounds i8, ptr %48, i64 16
  %630 = load double, ptr %629, align 8, !tbaa !17
  %631 = fcmp ogt double %626, 0.000000e+00
  br i1 %631, label %632, label %634

632:                                              ; preds = %624
  %633 = fcmp ugt double %628, %630
  br i1 %633, label %.backedge.backedge, label %636

634:                                              ; preds = %624
  %635 = fcmp ugt double %630, %628
  br i1 %635, label %.backedge.backedge, label %636

636:                                              ; preds = %634, %632
  %637 = lshr i32 %30, 14
  %638 = zext nneg i32 %637 to i64
  %639 = getelementptr i32, ptr %29, i64 %638
  %640 = getelementptr i8, ptr %639, i64 -524284
  store double %628, ptr %48, align 8, !tbaa !17
  %641 = getelementptr inbounds i8, ptr %48, i64 8
  store i32 3, ptr %641, align 8, !tbaa !27
  %642 = getelementptr inbounds i8, ptr %48, i64 48
  store double %628, ptr %642, align 8, !tbaa !17
  %643 = getelementptr inbounds i8, ptr %48, i64 56
  store i32 3, ptr %643, align 8, !tbaa !27
  br label %.backedge.backedge

644:                                              ; preds = %44
  %645 = getelementptr inbounds i8, ptr %48, i64 16
  %646 = getelementptr inbounds i8, ptr %48, i64 32
  store ptr %29, ptr %5, align 8, !tbaa !5
  %647 = getelementptr inbounds i8, ptr %48, i64 8
  %648 = load i32, ptr %647, align 8, !tbaa !27
  %649 = icmp eq i32 %648, 3
  br i1 %649, label %652, label %650

650:                                              ; preds = %644
  %651 = call ptr @luaV_tonumber(ptr noundef nonnull %48, ptr noundef nonnull %48)
  %.not765 = icmp eq ptr %651, null
  br i1 %.not765, label %.sink.split, label %652

652:                                              ; preds = %650, %644
  %653 = getelementptr inbounds i8, ptr %48, i64 24
  %654 = load i32, ptr %653, align 8, !tbaa !27
  %655 = icmp eq i32 %654, 3
  br i1 %655, label %658, label %656

656:                                              ; preds = %652
  %657 = call ptr @luaV_tonumber(ptr noundef nonnull %645, ptr noundef nonnull %645)
  %.not766 = icmp eq ptr %657, null
  br i1 %.not766, label %.sink.split, label %658

658:                                              ; preds = %656, %652
  %659 = getelementptr inbounds i8, ptr %48, i64 40
  %660 = load i32, ptr %659, align 8, !tbaa !27
  %661 = icmp eq i32 %660, 3
  br i1 %661, label %665, label %662

662:                                              ; preds = %658
  %663 = call ptr @luaV_tonumber(ptr noundef nonnull %646, ptr noundef nonnull %646)
  %.not767 = icmp eq ptr %663, null
  br i1 %.not767, label %664, label %665

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

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

665:                                              ; preds = %.sink.split, %662, %658
  %.0740 = phi ptr [ %646, %658 ], [ %663, %662 ], [ %646, %.sink.split ]
  %666 = load double, ptr %48, align 8, !tbaa !17
  %667 = load double, ptr %.0740, align 8, !tbaa !17
  %668 = fsub double %666, %667
  store double %668, ptr %48, align 8, !tbaa !17
  store i32 3, ptr %647, align 8, !tbaa !27
  %669 = lshr i32 %30, 14
  %670 = zext nneg i32 %669 to i64
  %671 = getelementptr i32, ptr %29, i64 %670
  %672 = getelementptr i8, ptr %671, i64 -524284
  br label %.backedge.backedge

673:                                              ; preds = %44
  %674 = getelementptr inbounds i8, ptr %48, i64 48
  %675 = getelementptr inbounds i8, ptr %48, i64 32
  %676 = getelementptr inbounds i8, ptr %48, i64 80
  %677 = load i64, ptr %675, align 8, !tbaa !17
  store i64 %677, ptr %676, align 8, !tbaa !17
  %678 = getelementptr inbounds i8, ptr %48, i64 40
  %679 = load i32, ptr %678, align 8, !tbaa !27
  %680 = getelementptr inbounds i8, ptr %48, i64 88
  store i32 %679, ptr %680, align 8, !tbaa !27
  %681 = getelementptr inbounds i8, ptr %48, i64 16
  %682 = getelementptr inbounds i8, ptr %48, i64 64
  %683 = load i64, ptr %681, align 8, !tbaa !17
  store i64 %683, ptr %682, align 8, !tbaa !17
  %684 = getelementptr inbounds i8, ptr %48, i64 24
  %685 = load i32, ptr %684, align 8, !tbaa !27
  %686 = getelementptr inbounds i8, ptr %48, i64 72
  store i32 %685, ptr %686, align 8, !tbaa !27
  %687 = load i64, ptr %48, align 8, !tbaa !17
  store i64 %687, ptr %674, align 8, !tbaa !17
  %688 = getelementptr inbounds i8, ptr %48, i64 8
  %689 = load i32, ptr %688, align 8, !tbaa !27
  %690 = getelementptr inbounds i8, ptr %48, i64 56
  store i32 %689, ptr %690, align 8, !tbaa !27
  %691 = getelementptr inbounds i8, ptr %48, i64 96
  store ptr %691, ptr %12, align 8, !tbaa !40
  store ptr %29, ptr %5, align 8, !tbaa !5
  %692 = lshr i32 %30, 14
  %693 = and i32 %692, 511
  call void @luaD_call(ptr noundef nonnull %0, ptr noundef nonnull %674, i32 noundef %693) #5
  %694 = load ptr, ptr %7, align 8, !tbaa !18
  %695 = load ptr, ptr %6, align 8, !tbaa !14
  %696 = getelementptr inbounds i8, ptr %695, i64 16
  %697 = load ptr, ptr %696, align 8, !tbaa !41
  store ptr %697, ptr %12, align 8, !tbaa !40
  %698 = getelementptr inbounds %struct.lua_TValue, ptr %694, i64 %47
  %699 = getelementptr inbounds i8, ptr %698, i64 56
  %700 = load i32, ptr %699, align 8, !tbaa !27
  %701 = icmp eq i32 %700, 0
  br i1 %701, label %712, label %702

702:                                              ; preds = %673
  %703 = getelementptr inbounds i8, ptr %698, i64 48
  %704 = getelementptr inbounds i8, ptr %698, i64 32
  %705 = load i64, ptr %703, align 8, !tbaa !17
  store i64 %705, ptr %704, align 8, !tbaa !17
  %706 = getelementptr inbounds i8, ptr %698, i64 40
  store i32 %700, ptr %706, align 8, !tbaa !27
  %707 = load i32, ptr %29, align 4, !tbaa !23
  %708 = lshr i32 %707, 14
  %709 = zext nneg i32 %708 to i64
  %710 = getelementptr i32, ptr %29, i64 %709
  %711 = getelementptr i8, ptr %710, i64 -524284
  br label %712

712:                                              ; preds = %702, %673
  %.8724 = phi ptr [ %29, %673 ], [ %711, %702 ]
  %713 = getelementptr inbounds i8, ptr %.8724, i64 4
  br label %.backedge.backedge

714:                                              ; preds = %44
  %715 = lshr i32 %30, 23
  %716 = lshr i32 %30, 14
  %717 = and i32 %716, 511
  %718 = icmp ult i32 %30, 8388608
  br i1 %718, label %719, label %730

719:                                              ; preds = %714
  %720 = load ptr, ptr %12, align 8, !tbaa !40
  %721 = ptrtoint ptr %720 to i64
  %722 = ptrtoint ptr %48 to i64
  %723 = sub i64 %721, %722
  %724 = lshr exact i64 %723, 4
  %725 = trunc i64 %724 to i32
  %726 = add nsw i32 %725, -1
  %727 = load ptr, ptr %6, align 8, !tbaa !14
  %728 = getelementptr inbounds i8, ptr %727, i64 16
  %729 = load ptr, ptr %728, align 8, !tbaa !41
  store ptr %729, ptr %12, align 8, !tbaa !40
  br label %730

730:                                              ; preds = %719, %714
  %.0743 = phi i32 [ %726, %719 ], [ %715, %714 ]
  %731 = icmp eq i32 %717, 0
  br i1 %731, label %732, label %735

732:                                              ; preds = %730
  %733 = getelementptr inbounds i8, ptr %.0716, i64 8
  %734 = load i32, ptr %29, align 4, !tbaa !23
  br label %735

735:                                              ; preds = %732, %730
  %.0742 = phi i32 [ %734, %732 ], [ %717, %730 ]
  %.9725 = phi ptr [ %733, %732 ], [ %29, %730 ]
  %736 = getelementptr inbounds i8, ptr %48, i64 8
  %737 = load i32, ptr %736, align 8, !tbaa !27
  %.not762 = icmp eq i32 %737, 5
  br i1 %.not762, label %738, label %.backedge.backedge

738:                                              ; preds = %735
  %739 = load ptr, ptr %48, align 8, !tbaa !17
  %740 = mul i32 %.0742, 50
  %741 = add i32 %.0743, -50
  %742 = add i32 %741, %740
  %743 = getelementptr inbounds i8, ptr %739, i64 56
  %744 = load i32, ptr %743, align 8, !tbaa !47
  %745 = icmp sgt i32 %742, %744
  br i1 %745, label %746, label %747

746:                                              ; preds = %738
  call void @luaH_resizearray(ptr noundef nonnull %0, ptr noundef nonnull %739, i32 noundef %742) #5
  br label %747

747:                                              ; preds = %746, %738
  %748 = icmp sgt i32 %.0743, 0
  br i1 %748, label %.lr.ph853, label %.backedge.backedge

.lr.ph853:                                        ; preds = %747
  %749 = getelementptr inbounds i8, ptr %739, i64 9
  %750 = zext nneg i32 %.0743 to i64
  br label %751

751:                                              ; preds = %.lr.ph853, %769
  %indvars.iv874 = phi i64 [ %750, %.lr.ph853 ], [ %indvars.iv.next875, %769 ]
  %.0741851 = phi i32 [ %742, %.lr.ph853 ], [ %753, %769 ]
  %752 = getelementptr inbounds %struct.lua_TValue, ptr %48, i64 %indvars.iv874
  %753 = add nsw i32 %.0741851, -1
  %754 = call ptr @luaH_setnum(ptr noundef %0, ptr noundef %739, i32 noundef %.0741851) #5
  %755 = load i64, ptr %752, align 8, !tbaa !17
  store i64 %755, ptr %754, align 8, !tbaa !17
  %756 = getelementptr inbounds i8, ptr %752, i64 8
  %757 = load i32, ptr %756, align 8, !tbaa !27
  %758 = getelementptr inbounds i8, ptr %754, i64 8
  store i32 %757, ptr %758, align 8, !tbaa !27
  %759 = icmp sgt i32 %757, 3
  br i1 %759, label %760, label %769

760:                                              ; preds = %751
  %761 = load ptr, ptr %752, align 8, !tbaa !17
  %762 = getelementptr inbounds i8, ptr %761, i64 9
  %763 = load i8, ptr %762, align 1, !tbaa !17
  %764 = and i8 %763, 3
  %.not763 = icmp eq i8 %764, 0
  br i1 %.not763, label %769, label %765

765:                                              ; preds = %760
  %766 = load i8, ptr %749, align 1, !tbaa !17
  %767 = and i8 %766, 4
  %.not764 = icmp eq i8 %767, 0
  br i1 %.not764, label %769, label %768

768:                                              ; preds = %765
  call void @luaC_barrierback(ptr noundef %0, ptr noundef nonnull %739) #5
  br label %769

769:                                              ; preds = %768, %765, %760, %751
  %indvars.iv.next875 = add nsw i64 %indvars.iv874, -1
  %770 = icmp sgt i64 %indvars.iv874, 1
  br i1 %770, label %751, label %.backedge.backedge, !llvm.loop !49

771:                                              ; preds = %44
  call void @luaF_close(ptr noundef nonnull %0, ptr noundef %48) #5
  br label %.backedge.backedge

772:                                              ; preds = %44
  %773 = load ptr, ptr %23, align 8, !tbaa !19
  %774 = getelementptr inbounds i8, ptr %773, i64 32
  %775 = load ptr, ptr %774, align 8, !tbaa !50
  %776 = lshr i32 %30, 14
  %777 = zext nneg i32 %776 to i64
  %778 = getelementptr inbounds ptr, ptr %775, i64 %777
  %779 = load ptr, ptr %778, align 8, !tbaa !30
  %780 = getelementptr inbounds i8, ptr %779, i64 112
  %781 = load i8, ptr %780, align 8, !tbaa !51
  %782 = zext i8 %781 to i32
  %783 = load ptr, ptr %27, align 8, !tbaa !33
  %784 = call ptr @luaF_newLclosure(ptr noundef nonnull %0, i32 noundef %782, ptr noundef %783) #5
  %785 = getelementptr inbounds i8, ptr %784, i64 32
  store ptr %779, ptr %785, align 8, !tbaa !17
  %.not859 = icmp eq i8 %781, 0
  br i1 %.not859, label %._crit_edge, label %.lr.ph849

.lr.ph849:                                        ; preds = %772
  %786 = getelementptr inbounds i8, ptr %784, i64 40
  %wide.trip.count872 = zext i8 %781 to i64
  br label %787

787:                                              ; preds = %.lr.ph849, %800
  %indvars.iv869 = phi i64 [ 0, %.lr.ph849 ], [ %indvars.iv.next870, %800 ]
  %.10726848 = phi ptr [ %29, %.lr.ph849 ], [ %801, %800 ]
  %788 = load i32, ptr %.10726848, align 4, !tbaa !23
  %789 = and i32 %788, 63
  %790 = icmp eq i32 %789, 4
  %791 = lshr i32 %788, 23
  %792 = zext nneg i32 %791 to i64
  %793 = getelementptr inbounds [1 x ptr], ptr %786, i64 0, i64 %indvars.iv869
  br i1 %790, label %794, label %797

794:                                              ; preds = %787
  %795 = getelementptr inbounds [1 x ptr], ptr %28, i64 0, i64 %792
  %796 = load ptr, ptr %795, align 8, !tbaa !30
  br label %800

797:                                              ; preds = %787
  %798 = getelementptr inbounds %struct.lua_TValue, ptr %.1713, i64 %792
  %799 = call ptr @luaF_findupval(ptr noundef %0, ptr noundef %798) #5
  br label %800

800:                                              ; preds = %794, %797
  %.sink = phi ptr [ %796, %794 ], [ %799, %797 ]
  store ptr %.sink, ptr %793, align 8, !tbaa !17
  %indvars.iv.next870 = add nuw nsw i64 %indvars.iv869, 1
  %801 = getelementptr inbounds i8, ptr %.10726848, i64 4
  %exitcond873.not = icmp eq i64 %indvars.iv.next870, %wide.trip.count872
  br i1 %exitcond873.not, label %._crit_edge, label %787, !llvm.loop !52

._crit_edge:                                      ; preds = %800, %772
  %.10726.lcssa = phi ptr [ %29, %772 ], [ %801, %800 ]
  store ptr %784, ptr %48, align 8, !tbaa !17
  %802 = getelementptr inbounds i8, ptr %48, i64 8
  store i32 6, ptr %802, align 8, !tbaa !27
  store ptr %.10726.lcssa, ptr %5, align 8, !tbaa !5
  %803 = load ptr, ptr %13, align 8, !tbaa !34
  %804 = getelementptr inbounds i8, ptr %803, i64 120
  %805 = load i64, ptr %804, align 8, !tbaa !35
  %806 = getelementptr inbounds i8, ptr %803, i64 112
  %807 = load i64, ptr %806, align 8, !tbaa !39
  %.not761 = icmp ult i64 %805, %807
  br i1 %.not761, label %809, label %808

808:                                              ; preds = %._crit_edge
  call void @luaC_step(ptr noundef nonnull %0) #5
  br label %809

809:                                              ; preds = %808, %._crit_edge
  %810 = load ptr, ptr %7, align 8, !tbaa !18
  br label %.backedge.backedge

.backedge.backedge:                               ; preds = %861, %769, %75, %809, %771, %712, %665, %539, %515, %495, %471, %447, %411, %402, %365, %163, %161, %133, %105, %95, %89, %78, %66, %58, %50, %132, %128, %123, %111, %203, %198, %230, %225, %257, %252, %284, %279, %314, %306, %341, %336, %354, %350, %389, %380, %375, %558, %604, %636, %634, %632, %735, %44, %747, %844
  %.0716.be = phi ptr [ %29, %844 ], [ %.9725, %747 ], [ %29, %44 ], [ %.9725, %735 ], [ %29, %632 ], [ %29, %634 ], [ %640, %636 ], [ %29, %604 ], [ %29, %558 ], [ %29, %375 ], [ %29, %380 ], [ %29, %389 ], [ %29, %350 ], [ %29, %354 ], [ %29, %336 ], [ %29, %341 ], [ %29, %306 ], [ %29, %314 ], [ %29, %279 ], [ %29, %284 ], [ %29, %252 ], [ %29, %257 ], [ %29, %225 ], [ %29, %230 ], [ %29, %198 ], [ %29, %203 ], [ %29, %111 ], [ %29, %123 ], [ %29, %128 ], [ %29, %132 ], [ %29, %50 ], [ %29, %58 ], [ %spec.select, %66 ], [ %29, %78 ], [ %29, %89 ], [ %29, %95 ], [ %29, %105 ], [ %29, %133 ], [ %29, %161 ], [ %29, %163 ], [ %29, %365 ], [ %29, %402 ], [ %415, %411 ], [ %449, %447 ], [ %473, %471 ], [ %497, %495 ], [ %516, %515 ], [ %540, %539 ], [ %672, %665 ], [ %713, %712 ], [ %29, %771 ], [ %.10726.lcssa, %809 ], [ %29, %75 ], [ %.9725, %769 ], [ %29, %861 ]
  %.0712.be = phi ptr [ %.12, %844 ], [ %.1713, %747 ], [ %.1713, %44 ], [ %.1713, %735 ], [ %.1713, %632 ], [ %.1713, %634 ], [ %.1713, %636 ], [ %605, %604 ], [ %559, %558 ], [ %.1713, %375 ], [ %.1713, %380 ], [ %390, %389 ], [ %.1713, %350 ], [ %355, %354 ], [ %.1713, %336 ], [ %342, %341 ], [ %.1713, %306 ], [ %315, %314 ], [ %.1713, %279 ], [ %285, %284 ], [ %.1713, %252 ], [ %258, %257 ], [ %.1713, %225 ], [ %231, %230 ], [ %.1713, %198 ], [ %204, %203 ], [ %.1713, %111 ], [ %.1713, %123 ], [ %.1713, %128 ], [ %.1713, %132 ], [ %.1713, %50 ], [ %.1713, %58 ], [ %.1713, %66 ], [ %.1713, %78 ], [ %94, %89 ], [ %104, %95 ], [ %110, %105 ], [ %146, %133 ], [ %162, %161 ], [ %177, %163 ], [ %.1713, %365 ], [ %403, %402 ], [ %.1713, %411 ], [ %448, %447 ], [ %472, %471 ], [ %496, %495 ], [ %.1713, %515 ], [ %.1713, %539 ], [ %.1713, %665 ], [ %694, %712 ], [ %.1713, %771 ], [ %810, %809 ], [ %.1713, %75 ], [ %.1713, %769 ], [ %.12, %861 ]
  br label %.backedge

811:                                              ; preds = %44
  %812 = lshr i32 %30, 23
  %813 = add nsw i32 %812, -1
  %814 = load ptr, ptr %6, align 8, !tbaa !14
  %815 = load ptr, ptr %814, align 8, !tbaa !43
  %816 = getelementptr inbounds i8, ptr %814, i64 8
  %817 = load ptr, ptr %816, align 8, !tbaa !15
  %818 = ptrtoint ptr %815 to i64
  %819 = ptrtoint ptr %817 to i64
  %820 = sub i64 %818, %819
  %821 = lshr exact i64 %820, 4
  %822 = trunc i64 %821 to i32
  %823 = load ptr, ptr %23, align 8, !tbaa !19
  %824 = getelementptr inbounds i8, ptr %823, i64 113
  %825 = load i8, ptr %824, align 1, !tbaa !53
  %826 = zext i8 %825 to i32
  %827 = xor i32 %826, -1
  %828 = add i32 %822, %827
  %829 = icmp ult i32 %30, 8388608
  br i1 %829, label %830, label %844

830:                                              ; preds = %811
  store ptr %29, ptr %5, align 8, !tbaa !5
  %831 = load ptr, ptr %11, align 8, !tbaa !54
  %832 = load ptr, ptr %12, align 8, !tbaa !40
  %833 = ptrtoint ptr %831 to i64
  %834 = ptrtoint ptr %832 to i64
  %835 = sub i64 %833, %834
  %836 = shl nsw i32 %828, 4
  %837 = sext i32 %836 to i64
  %.not760 = icmp sgt i64 %835, %837
  br i1 %.not760, label %839, label %838

838:                                              ; preds = %830
  call void @luaD_growstack(ptr noundef nonnull %0, i32 noundef %828) #5
  br label %839

839:                                              ; preds = %830, %838
  %840 = load ptr, ptr %7, align 8, !tbaa !18
  %841 = getelementptr inbounds %struct.lua_TValue, ptr %840, i64 %47
  %842 = sext i32 %828 to i64
  %843 = getelementptr inbounds %struct.lua_TValue, ptr %841, i64 %842
  store ptr %843, ptr %12, align 8, !tbaa !40
  br label %844

844:                                              ; preds = %839, %811
  %.0731 = phi i32 [ %828, %839 ], [ %813, %811 ]
  %.0729 = phi ptr [ %841, %839 ], [ %48, %811 ]
  %.12 = phi ptr [ %840, %839 ], [ %.1713, %811 ]
  %845 = icmp sgt i32 %.0731, 0
  br i1 %845, label %.lr.ph, label %.backedge.backedge

.lr.ph:                                           ; preds = %844
  %846 = sext i32 %828 to i64
  %847 = sub nsw i64 0, %846
  %wide.trip.count = zext nneg i32 %.0731 to i64
  br label %848

848:                                              ; preds = %.lr.ph, %861
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %861 ]
  %849 = icmp slt i64 %indvars.iv, %846
  br i1 %849, label %850, label %859

850:                                              ; preds = %848
  %851 = load ptr, ptr %814, align 8, !tbaa !43
  %852 = getelementptr inbounds %struct.lua_TValue, ptr %851, i64 %847
  %853 = getelementptr inbounds %struct.lua_TValue, ptr %852, i64 %indvars.iv
  %854 = getelementptr inbounds %struct.lua_TValue, ptr %.0729, i64 %indvars.iv
  %855 = load i64, ptr %853, align 8, !tbaa !17
  store i64 %855, ptr %854, align 8, !tbaa !17
  %856 = getelementptr inbounds i8, ptr %853, i64 8
  %857 = load i32, ptr %856, align 8, !tbaa !27
  %858 = getelementptr inbounds i8, ptr %854, i64 8
  store i32 %857, ptr %858, align 8, !tbaa !27
  br label %861

859:                                              ; preds = %848
  %860 = getelementptr inbounds %struct.lua_TValue, ptr %.0729, i64 %indvars.iv, i32 1
  store i32 0, ptr %860, align 8, !tbaa !27
  br label %861

861:                                              ; preds = %850, %859
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.backedge.backedge, label %848, !llvm.loop !55

.critedge.thread:                                 ; preds = %615, %565, %549, %41
  ret void
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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